summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile4
-rw-r--r--Makefile.fpc4
-rw-r--r--compiler/aarch64/symcpu.pas178
-rw-r--r--compiler/aggas.pas16
-rw-r--r--compiler/agjasmin.pas10
-rw-r--r--compiler/alpha/cpunode.pas6
-rw-r--r--compiler/alpha/symcpu.pas211
-rw-r--r--compiler/aopt.pas26
-rw-r--r--compiler/aoptobj.pas2
-rw-r--r--compiler/arm/aasmcpu.pas74
-rw-r--r--compiler/arm/agarmgas.pas2
-rw-r--r--compiler/arm/aoptcpu.pas2
-rw-r--r--compiler/arm/cgcpu.pas204
-rw-r--r--compiler/arm/cpuinfo.pas2
-rw-r--r--compiler/arm/cpunode.pas4
-rw-r--r--compiler/arm/cpupara.pas20
-rw-r--r--compiler/arm/cpupi.pas18
-rw-r--r--compiler/arm/narmadd.pas44
-rw-r--r--compiler/arm/narmcon.pas12
-rw-r--r--compiler/arm/narminl.pas22
-rw-r--r--compiler/arm/narmmat.pas24
-rw-r--r--compiler/arm/rgcpu.pas11
-rw-r--r--compiler/arm/symcpu.pas215
-rw-r--r--compiler/assemble.pas16
-rw-r--r--compiler/avr/cpuinfo.pas3
-rw-r--r--compiler/avr/cpunode.pas4
-rw-r--r--compiler/avr/cpupara.pas2
-rw-r--r--compiler/avr/cpupi.pas11
-rw-r--r--compiler/avr/symcpu.pas211
-rw-r--r--compiler/cclasses.pas64
-rw-r--r--compiler/cg64f32.pas13
-rw-r--r--compiler/cgbase.pas10
-rw-r--r--compiler/cgobj.pas12
-rw-r--r--compiler/cgutils.pas3
-rw-r--r--compiler/compinnr.inc4
-rw-r--r--compiler/dbgbase.pas6
-rw-r--r--compiler/dbgstabs.pas17
-rw-r--r--compiler/dbgstabx.pas19
-rw-r--r--compiler/defcmp.pas4
-rw-r--r--compiler/defutil.pas48
-rw-r--r--compiler/fpcdefs.inc3
-rw-r--r--compiler/fppu.pas12
-rw-r--r--compiler/generic/symcpu.pas211
-rw-r--r--compiler/globals.pas18
-rw-r--r--compiler/globtype.pas33
-rw-r--r--compiler/hlcg2ll.pas12
-rw-r--r--compiler/hlcgobj.pas319
-rw-r--r--compiler/htypechk.pas4
-rw-r--r--compiler/i386/cgcpu.pas18
-rw-r--r--compiler/i386/cpuinfo.pas8
-rw-r--r--compiler/i386/cpunode.pas5
-rw-r--r--compiler/i386/hlcgcpu.pas10
-rw-r--r--compiler/i386/i386att.inc83
-rw-r--r--compiler/i386/i386atts.inc81
-rw-r--r--compiler/i386/i386int.inc83
-rw-r--r--compiler/i386/i386nop.inc2
-rw-r--r--compiler/i386/i386op.inc83
-rw-r--r--compiler/i386/i386prop.inc83
-rw-r--r--compiler/i386/i386tab.inc1878
-rw-r--r--compiler/i386/n386ld.pas61
-rw-r--r--compiler/i386/n386mem.pas19
-rw-r--r--compiler/i386/popt386.pas33
-rw-r--r--compiler/i386/symcpu.pas211
-rw-r--r--compiler/i8086/cgcpu.pas312
-rw-r--r--compiler/i8086/cpuinfo.pas2
-rw-r--r--compiler/i8086/cpunode.pas7
-rw-r--r--compiler/i8086/cpupara.pas41
-rw-r--r--compiler/i8086/hlcgcpu.pas243
-rw-r--r--compiler/i8086/i8086att.inc83
-rw-r--r--compiler/i8086/i8086atts.inc81
-rw-r--r--compiler/i8086/i8086int.inc83
-rw-r--r--compiler/i8086/i8086nop.inc2
-rw-r--r--compiler/i8086/i8086op.inc83
-rw-r--r--compiler/i8086/i8086prop.inc83
-rw-r--r--compiler/i8086/i8086tab.inc1878
-rw-r--r--compiler/i8086/n8086add.pas190
-rw-r--r--compiler/i8086/n8086cal.pas10
-rw-r--r--compiler/i8086/n8086cnv.pas125
-rw-r--r--compiler/i8086/n8086con.pas21
-rw-r--r--compiler/i8086/n8086inl.pas51
-rw-r--r--compiler/i8086/n8086ld.pas91
-rw-r--r--compiler/i8086/n8086mem.pas75
-rw-r--r--compiler/i8086/n8086tcon.pas77
-rw-r--r--compiler/i8086/rgcpu.pas23
-rw-r--r--compiler/i8086/symcpu.pas371
-rw-r--r--compiler/i8086/tgcpu.pas58
-rw-r--r--compiler/ia64/symcpu.pas211
-rw-r--r--compiler/jvm/cpubase.pas9
-rw-r--r--compiler/jvm/cpunode.pas6
-rw-r--r--compiler/jvm/dbgjasm.pas8
-rw-r--r--compiler/jvm/hlcgcpu.pas31
-rw-r--r--compiler/jvm/jvmdef.pas10
-rw-r--r--compiler/jvm/njvmadd.pas10
-rw-r--r--compiler/jvm/njvmcal.pas8
-rw-r--r--compiler/jvm/njvmcnv.pas66
-rw-r--r--compiler/jvm/njvmcon.pas10
-rw-r--r--compiler/jvm/njvminl.pas4
-rw-r--r--compiler/jvm/njvmld.pas2
-rw-r--r--compiler/jvm/njvmmem.pas10
-rw-r--r--compiler/jvm/njvmutil.pas10
-rw-r--r--compiler/jvm/njvmvmt.pas (renamed from compiler/m68k/cpuasm.pas)34
-rw-r--r--compiler/jvm/pjvm.pas60
-rw-r--r--compiler/jvm/symcpu.pas549
-rw-r--r--compiler/jvm/tgcpu.pas6
-rw-r--r--compiler/link.pas4
-rw-r--r--compiler/llvm/hlcgllvm.pas26
-rw-r--r--compiler/m68k/aasmcpu.pas2
-rw-r--r--compiler/m68k/cgcpu.pas147
-rw-r--r--compiler/m68k/cpubase.pas2
-rw-r--r--compiler/m68k/cpuinfo.pas4
-rw-r--r--compiler/m68k/cpunode.pas8
-rw-r--r--compiler/m68k/cpupara.pas11
-rw-r--r--compiler/m68k/m68kreg.dat2
-rw-r--r--compiler/m68k/n68kadd.pas54
-rw-r--r--compiler/m68k/n68kcal.pas30
-rw-r--r--compiler/m68k/n68kcnv.pas2
-rw-r--r--compiler/m68k/n68kmat.pas55
-rw-r--r--compiler/m68k/n68kmem.pas117
-rw-r--r--compiler/m68k/r68kcon.inc2
-rw-r--r--compiler/m68k/r68kgas.inc2
-rw-r--r--compiler/m68k/r68kgri.inc2
-rw-r--r--compiler/m68k/r68ksri.inc2
-rw-r--r--compiler/m68k/r68kstd.inc2
-rw-r--r--compiler/m68k/r68ksup.inc2
-rw-r--r--compiler/m68k/ra68k.pas9
-rw-r--r--compiler/m68k/ra68kmot.pas41
-rw-r--r--compiler/m68k/symcpu.pas259
-rw-r--r--compiler/mips/cpugas.pas3
-rw-r--r--compiler/mips/cpuinfo.pas107
-rw-r--r--compiler/mips/cpunode.pas5
-rw-r--r--compiler/mips/cpupi.pas14
-rw-r--r--compiler/mips/cputarg.pas3
-rw-r--r--compiler/mips/hlcgcpu.pas4
-rw-r--r--compiler/mips/ncpuadd.pas10
-rw-r--r--compiler/mips/ncpuinln.pas4
-rw-r--r--compiler/mips/ncpumat.pas2
-rw-r--r--compiler/mips/ncpuset.pas9
-rw-r--r--compiler/mips/opcode.inc1
-rw-r--r--compiler/mips/strinst.inc1
-rw-r--r--compiler/mips/symcpu.pas213
-rw-r--r--compiler/msg/errore.msg27
-rw-r--r--compiler/msgidx.inc12
-rw-r--r--compiler/msgtxt.inc1300
-rw-r--r--compiler/nadd.pas28
-rw-r--r--compiler/ncal.pas56
-rw-r--r--compiler/ncgcal.pas24
-rw-r--r--compiler/ncgcnv.pas110
-rw-r--r--compiler/ncgcon.pas33
-rw-r--r--compiler/ncgflw.pas19
-rw-r--r--compiler/ncginl.pas47
-rw-r--r--compiler/ncgld.pas161
-rw-r--r--compiler/ncgmat.pas38
-rw-r--r--compiler/ncgmem.pas53
-rw-r--r--compiler/ncgset.pas141
-rw-r--r--compiler/ncgutil.pas336
-rw-r--r--compiler/ncgvmt.pas59
-rw-r--r--compiler/ncnv.pas11
-rw-r--r--compiler/ncon.pas7
-rw-r--r--compiler/nflw.pas34
-rw-r--r--compiler/ngenutil.pas2
-rw-r--r--compiler/ngtcon.pas2
-rw-r--r--compiler/ninl.pas57
-rw-r--r--compiler/nld.pas6
-rw-r--r--compiler/nmat.pas115
-rw-r--r--compiler/nmem.pas165
-rw-r--r--compiler/nobj.pas7
-rw-r--r--compiler/nset.pas4
-rw-r--r--compiler/nutils.pas33
-rw-r--r--compiler/ogcoff.pas10
-rw-r--r--compiler/ogelf.pas2
-rw-r--r--compiler/optcse.pas10
-rw-r--r--compiler/optdead.pas9
-rw-r--r--compiler/options.pas47
-rw-r--r--compiler/optloop.pas2
-rw-r--r--compiler/opttail.pas2
-rw-r--r--compiler/optvirt.pas38
-rw-r--r--compiler/paramgr.pas16
-rw-r--r--compiler/pdecl.pas62
-rw-r--r--compiler/pdecobj.pas12
-rw-r--r--compiler/pdecsub.pas48
-rw-r--r--compiler/pdecvar.pas63
-rw-r--r--compiler/pexpr.pas21
-rw-r--r--compiler/pgenutil.pas14
-rw-r--r--compiler/pmodules.pas24
-rw-r--r--compiler/powerpc/cgcpu.pas52
-rw-r--r--compiler/powerpc/cpubase.pas24
-rw-r--r--compiler/powerpc/cpupi.pas11
-rw-r--r--compiler/powerpc/nppccal.pas13
-rw-r--r--compiler/powerpc/nppccnv.pas2
-rw-r--r--compiler/powerpc/symcpu.pas259
-rw-r--r--compiler/powerpc64/cgcpu.pas54
-rw-r--r--compiler/powerpc64/cpubase.pas26
-rw-r--r--compiler/powerpc64/cpunode.pas2
-rw-r--r--compiler/powerpc64/cpupi.pas11
-rw-r--r--compiler/powerpc64/nppccnv.pas2
-rw-r--r--compiler/powerpc64/symcpu.pas211
-rw-r--r--compiler/pp.lpi12
-rw-r--r--compiler/pparautl.pas30
-rw-r--r--compiler/ppc8086.lpi833
-rw-r--r--compiler/ppcgen/agppcgas.pas29
-rw-r--r--compiler/ppcgen/cgppc.pas96
-rw-r--r--compiler/ppcgen/ngppcadd.pas95
-rw-r--r--compiler/ppcgen/ngppcinl.pas6
-rw-r--r--compiler/ppu.pas3
-rw-r--r--compiler/procinfo.pas7
-rw-r--r--compiler/pstatmnt.pas10
-rw-r--r--compiler/psub.pas118
-rw-r--r--compiler/psystem.pas302
-rw-r--r--compiler/ptype.pas72
-rw-r--r--compiler/raatt.pas7
-rw-r--r--compiler/rasm.pas69
-rw-r--r--compiler/rautils.pas93
-rw-r--r--compiler/rgobj.pas21
-rw-r--r--compiler/scandir.pas63
-rw-r--r--compiler/scanner.pas15
-rw-r--r--compiler/sparc/cgcpu.pas22
-rw-r--r--compiler/sparc/cpubase.pas44
-rw-r--r--compiler/sparc/cpunode.pas4
-rw-r--r--compiler/sparc/ncpuadd.pas10
-rw-r--r--compiler/sparc/ncpucall.pas2
-rw-r--r--compiler/sparc/ncpucnv.pas2
-rw-r--r--compiler/sparc/ncpuinln.pas4
-rw-r--r--compiler/sparc/ncpumat.pas4
-rw-r--r--compiler/sparc/ncpuset.pas11
-rw-r--r--compiler/sparc/symcpu.pas211
-rw-r--r--compiler/switches.pas8
-rw-r--r--compiler/symconst.pas11
-rw-r--r--compiler/symcreat.pas18
-rw-r--r--compiler/symdef.pas937
-rw-r--r--compiler/symsym.pas362
-rw-r--r--compiler/symtable.pas131
-rw-r--r--compiler/systems.inc5
-rw-r--r--compiler/systems.pas15
-rw-r--r--compiler/systems/i_embed.pas69
-rw-r--r--compiler/systems/i_go32v2.pas2
-rw-r--r--compiler/systems/i_sunos.pas2
-rw-r--r--compiler/systems/i_win.pas2
-rw-r--r--compiler/systems/t_embed.pas216
-rw-r--r--compiler/systems/t_go32v2.pas10
-rw-r--r--compiler/systems/t_msdos.pas2
-rw-r--r--compiler/systems/t_win.pas4
-rw-r--r--compiler/utils/Makefile321
-rw-r--r--compiler/utils/Makefile.fpc4
-rw-r--r--compiler/utils/ppuutils/ppudump.pp78
-rw-r--r--compiler/vis/cpunode.pas4
-rw-r--r--compiler/widestr.pas2
-rw-r--r--compiler/wpobase.pas8
-rw-r--r--compiler/wpoinfo.pas11
-rw-r--r--compiler/x86/aasmcpu.pas154
-rw-r--r--compiler/x86/agx86nsm.pas116
-rw-r--r--compiler/x86/cga.pas7
-rw-r--r--compiler/x86/cgx86.pas170
-rw-r--r--compiler/x86/cpubase.pas22
-rw-r--r--compiler/x86/ni86mem.pas69
-rw-r--r--compiler/x86/nx86add.pas282
-rw-r--r--compiler/x86/nx86inl.pas204
-rw-r--r--compiler/x86/nx86mat.pas6
-rw-r--r--compiler/x86/nx86mem.pas12
-rw-r--r--compiler/x86/rax86.pas47
-rw-r--r--compiler/x86/rax86int.pas10
-rw-r--r--compiler/x86/symi86.pas94
-rw-r--r--compiler/x86/symx86.pas140
-rw-r--r--compiler/x86/x86ins.dat526
-rw-r--r--compiler/x86_64/aoptcpu.pas210
-rw-r--r--compiler/x86_64/cpuinfo.pas6
-rw-r--r--compiler/x86_64/cpunode.pas2
-rw-r--r--compiler/x86_64/cpupara.pas11
-rw-r--r--compiler/x86_64/nx64flw.pas11
-rw-r--r--compiler/x86_64/symcpu.pas211
-rw-r--r--compiler/x86_64/x8664ats.inc81
-rw-r--r--compiler/x86_64/x8664att.inc83
-rw-r--r--compiler/x86_64/x8664int.inc83
-rw-r--r--compiler/x86_64/x8664nop.inc2
-rw-r--r--compiler/x86_64/x8664op.inc83
-rw-r--r--compiler/x86_64/x8664pro.inc83
-rw-r--r--compiler/x86_64/x8664tab.inc1878
-rw-r--r--ide/Makefile.fpc.fpcmake8
-rw-r--r--ide/fpmake.pp5
-rw-r--r--ide/fpmwnd.inc2
-rw-r--r--ide/fpsymbol.pas3
-rw-r--r--ide/fpviews.pas10
-rw-r--r--installer/install.dat15
-rw-r--r--packages/amunits/src/otherlibs/mui.pas2
-rw-r--r--packages/amunits/src/utilunits/linklist.pas4
-rw-r--r--packages/dblib/src/dblib.pp41
-rw-r--r--packages/fcl-base/src/fpmimetypes.pp3
-rw-r--r--packages/fcl-db/examples/dbftool.lpr43
-rw-r--r--packages/fcl-db/examples/sqlite3loadlib.lpr60
-rw-r--r--packages/fcl-db/fpmake.pp1
-rw-r--r--packages/fcl-db/src/base/bufdataset.pas212
-rw-r--r--packages/fcl-db/src/base/dataset.inc48
-rw-r--r--packages/fcl-db/src/base/datasource.inc18
-rw-r--r--packages/fcl-db/src/base/db.pas220
-rw-r--r--packages/fcl-db/src/base/dbcoll.pp2
-rw-r--r--packages/fcl-db/src/base/dsparams.inc6
-rw-r--r--packages/fcl-db/src/base/fields.inc142
-rw-r--r--packages/fcl-db/src/base/sqlscript.pp13
-rw-r--r--packages/fcl-db/src/export/fpdbexport.pp3
-rw-r--r--packages/fcl-db/src/export/fpfixedexport.pp60
-rw-r--r--packages/fcl-db/src/sdf/sdfdata.pp4
-rw-r--r--packages/fcl-db/src/sqldb/interbase/ibconnection.pp2
-rw-r--r--packages/fcl-db/src/sqldb/mssql/mssqlconn.pp21
-rw-r--r--packages/fcl-db/src/sqldb/mssql/readme.txt3
-rw-r--r--packages/fcl-db/src/sqldb/mysql/mysqlconn.inc76
-rw-r--r--packages/fcl-db/src/sqldb/postgres/pqconnection.pp23
-rw-r--r--packages/fcl-db/src/sqldb/sqldb.pp146
-rw-r--r--packages/fcl-db/src/sqldb/sqlite/sqlite3conn.pp21
-rw-r--r--packages/fcl-db/src/sqlite/customsqliteds.pas27
-rw-r--r--packages/fcl-db/tests/database.ini.txt159
-rw-r--r--packages/fcl-db/tests/sdfdstoolsunit.pas3
-rw-r--r--packages/fcl-db/tests/sqldbtoolsunit.pas235
-rw-r--r--packages/fcl-db/tests/testbufdatasetstreams.pas4
-rw-r--r--packages/fcl-db/tests/testdatasources.pas4
-rw-r--r--packages/fcl-db/tests/testdbbasics.pas562
-rw-r--r--packages/fcl-db/tests/testdbexport.pas4
-rw-r--r--packages/fcl-db/tests/testfieldtypes.pas181
-rw-r--r--packages/fcl-db/tests/testspecifictbufdataset.pas4
-rw-r--r--packages/fcl-db/tests/testspecifictdbf.pas4
-rw-r--r--packages/fcl-db/tests/testsqldb.pas4
-rw-r--r--packages/fcl-db/tests/toolsunit.pas106
-rw-r--r--packages/fcl-fpcunit/src/DUnitCompatibleInterface.inc12
-rw-r--r--packages/fcl-fpcunit/src/fpcunit.pp24
-rw-r--r--packages/fcl-js/fpmake.pp3
-rw-r--r--packages/fcl-js/src/jsparser.pp69
-rw-r--r--packages/fcl-js/src/jsscanner.pp135
-rw-r--r--packages/fcl-js/src/jstoken.pp79
-rw-r--r--packages/fcl-js/src/jstree.pp1093
-rw-r--r--packages/fcl-js/src/jswriter.pp1263
-rw-r--r--packages/fcl-js/tests/tcparser.pp307
-rw-r--r--packages/fcl-js/tests/tcscanner.pp2
-rw-r--r--packages/fcl-js/tests/tcwriter.pp2444
-rw-r--r--packages/fcl-js/tests/testjs.lpi331
-rw-r--r--packages/fcl-js/tests/testjs.lpr20
-rw-r--r--packages/fcl-json/examples/simpledemo.pp2
-rw-r--r--packages/fcl-net/fpmake.pp7
-rw-r--r--packages/fcl-net/src/sslsockets.pp461
-rw-r--r--packages/fcl-net/src/ssockets.pp285
-rw-r--r--packages/fcl-passrc/src/pparser.pp2
-rw-r--r--packages/fcl-passrc/tests/tcclasstype.pas76
-rw-r--r--packages/fcl-passrc/tests/tctypeparser.pas229
-rw-r--r--packages/fcl-process/src/unix/process.inc8
-rw-r--r--packages/fcl-sdo/src/base/sdo_consts.pas2
-rw-r--r--packages/fcl-sdo/src/base/sdo_fpc_xml.pas3
-rw-r--r--packages/fcl-sound/Makefile2368
-rw-r--r--packages/fcl-sound/Makefile.fpc91
-rw-r--r--packages/fcl-sound/fpmake.pp49
-rw-r--r--packages/fcl-sound/src/fpwavformat.pas52
-rw-r--r--packages/fcl-sound/src/fpwavreader.pas144
-rw-r--r--packages/fcl-sound/src/fpwavwriter.pas150
-rw-r--r--packages/fcl-web/examples/httpclient/httpget.pas4
-rw-r--r--packages/fcl-web/src/base/custcgi.pp27
-rw-r--r--packages/fcl-web/src/base/fphttpclient.pp58
-rw-r--r--packages/fcl-web/tests/testcgiapp.pp2
-rw-r--r--packages/fcl-xml/tests/domunit.pp18
-rw-r--r--packages/fcl-xml/tests/readertest.pp671
-rw-r--r--packages/fcl-xml/tests/readerunit.pp200
-rw-r--r--packages/fpgtk/src/editor/gtkdeftexts.pp2
-rw-r--r--packages/fpgtk/src/editor/gtkeditor.pp8
-rw-r--r--packages/fpgtk/src/editor/settingsrec.pp16
-rw-r--r--packages/fpmake_add.inc2
-rw-r--r--packages/fpmake_proc.inc8
-rw-r--r--packages/fpmkunit/src/fpmkunit.pp129
-rw-r--r--packages/graph/src/go32v2/graph.pp688
-rw-r--r--packages/graph/src/msdos/graph.pp18
-rw-r--r--packages/graph/src/msdos/vesa.inc12
-rw-r--r--packages/hash/Makefile13
-rw-r--r--packages/hash/Makefile.fpc.fpcmake3
-rw-r--r--packages/hash/examples/hmd5.pp15
-rw-r--r--packages/hash/examples/hsha1.pp15
-rw-r--r--packages/hash/fpmake.pp7
-rw-r--r--packages/hash/src/hmac.pp192
-rw-r--r--packages/hash/src/md5.pp2
-rw-r--r--packages/hash/tests/tests.pp16
-rw-r--r--packages/hash/tests/testshmac.pas269
-rw-r--r--packages/ibase/src/ibase60.inc7
-rw-r--r--packages/mysql/src/mysql.inc1
-rw-r--r--packages/openssl/fpmake.pp3
-rw-r--r--packages/openssl/src/fpopenssl.pp598
-rw-r--r--packages/openssl/src/openssl.pas1733
-rw-r--r--packages/pastojs/Makefile2577
-rw-r--r--packages/pastojs/Makefile.fpc89
-rw-r--r--packages/pastojs/fpmake.pp40
-rw-r--r--packages/pastojs/src/fppas2js.pp1381
-rw-r--r--packages/pastojs/tests/tcconverter.pp1320
-rw-r--r--packages/pastojs/tests/testpas2js.lpi81
-rw-r--r--packages/pastojs/tests/testpas2js.pp39
-rw-r--r--packages/pastojs/todo.txt81
-rw-r--r--packages/paszlib/src/zstream.pp32
-rw-r--r--packages/regexpr/fpmake.pp2
-rw-r--r--packages/regexpr/src/oldregexpr.pp4
-rw-r--r--packages/rtl-console/fpmake.pp5
-rw-r--r--packages/rtl-console/src/msdos/crt.pp2
-rw-r--r--packages/rtl-console/src/unix/keyboard.pp3
-rw-r--r--packages/rtl-console/src/unix/terminfo.pp (renamed from rtl/unix/terminfo.pp)0
-rw-r--r--packages/rtl-extra/fpmake.pp31
-rw-r--r--packages/rtl-extra/src/aix/clocale.inc (renamed from rtl/aix/clocale.inc)0
-rw-r--r--packages/rtl-extra/src/amiga/printer.pp (renamed from rtl/amiga/printer.pp)0
-rw-r--r--packages/rtl-extra/src/android/clocale.pp (renamed from rtl/android/clocale.pp)0
-rw-r--r--packages/rtl-extra/src/bsd/clocale.inc (renamed from rtl/bsd/clocale.inc)0
-rw-r--r--packages/rtl-extra/src/bsd/ipcbsd.inc (renamed from rtl/bsd/ipcbsd.inc)0
-rw-r--r--packages/rtl-extra/src/go32v2/printer.pp (renamed from rtl/go32v2/printer.pp)0
-rw-r--r--packages/rtl-extra/src/inc/printer.inc (renamed from rtl/inc/printer.inc)0
-rw-r--r--packages/rtl-extra/src/inc/printerh.inc (renamed from rtl/inc/printerh.inc)0
-rw-r--r--packages/rtl-extra/src/linux/ipccall.inc (renamed from rtl/linux/ipccall.inc)0
-rw-r--r--packages/rtl-extra/src/linux/ipcsys.inc (renamed from rtl/linux/ipcsys.inc)0
-rw-r--r--packages/rtl-extra/src/msdos/printer.pp (renamed from rtl/msdos/printer.pp)0
-rw-r--r--packages/rtl-extra/src/os2/printer.pp (renamed from rtl/win/printer.pp)0
-rw-r--r--packages/rtl-extra/src/solaris/clocale.inc (renamed from rtl/solaris/clocale.inc)0
-rw-r--r--packages/rtl-extra/src/unix/clocale.pp (renamed from rtl/unix/clocale.pp)0
-rw-r--r--packages/rtl-extra/src/unix/ipc.pp (renamed from rtl/unix/ipc.pp)0
-rw-r--r--packages/rtl-extra/src/unix/ipccdecl.inc (renamed from rtl/unix/ipccdecl.inc)0
-rw-r--r--packages/rtl-extra/src/unix/printer.pp (renamed from rtl/unix/printer.pp)0
-rw-r--r--packages/rtl-extra/src/unix/serial.pp (renamed from rtl/unix/serial.pp)0
-rw-r--r--packages/rtl-extra/src/win/printer.pp (renamed from rtl/os2/printer.pas)0
-rw-r--r--packages/rtl-extra/src/win/serial.pp (renamed from rtl/win32/serial.pp)0
-rw-r--r--packages/rtl-objpas/fpmake.pp6
-rw-r--r--packages/rtl-objpas/src/inc/dateutil.inc9
-rw-r--r--packages/rtl-objpas/src/inc/strutils.pp (renamed from rtl/objpas/strutils.pp)0
-rw-r--r--packages/rtl-objpas/src/inc/variants.pp12
-rw-r--r--packages/rtl-unicode/fpmake.pp134
-rw-r--r--packages/rtl-unicode/src/collations/buildcollations.pas (renamed from rtl/objpas/collations/buildcollations.pas)0
-rw-r--r--packages/rtl-unicode/src/collations/collation_de.pas (renamed from rtl/objpas/collations/collation_de.pas)0
-rw-r--r--packages/rtl-unicode/src/collations/collation_es.pas (renamed from rtl/objpas/collations/collation_es.pas)0
-rw-r--r--packages/rtl-unicode/src/collations/collation_es_be.inc (renamed from rtl/objpas/collations/collation_es_be.inc)0
-rw-r--r--packages/rtl-unicode/src/collations/collation_es_le.inc (renamed from rtl/objpas/collations/collation_es_le.inc)0
-rw-r--r--packages/rtl-unicode/src/collations/collation_fr_ca.pas (renamed from rtl/objpas/collations/collation_fr_ca.pas)0
-rw-r--r--packages/rtl-unicode/src/collations/collation_ja.pas (renamed from rtl/objpas/collations/collation_ja.pas)0
-rw-r--r--packages/rtl-unicode/src/collations/collation_ja_be.inc (renamed from rtl/objpas/collations/collation_ja_be.inc)0
-rw-r--r--packages/rtl-unicode/src/collations/collation_ja_le.inc (renamed from rtl/objpas/collations/collation_ja_le.inc)0
-rw-r--r--packages/rtl-unicode/src/collations/collation_ko.pas (renamed from rtl/objpas/collations/collation_ko.pas)0
-rw-r--r--packages/rtl-unicode/src/collations/collation_ko_be.inc (renamed from rtl/objpas/collations/collation_ko_be.inc)0
-rw-r--r--packages/rtl-unicode/src/collations/collation_ko_le.inc (renamed from rtl/objpas/collations/collation_ko_le.inc)0
-rw-r--r--packages/rtl-unicode/src/collations/collation_ru.pas (renamed from rtl/objpas/collations/collation_ru.pas)0
-rw-r--r--packages/rtl-unicode/src/collations/collation_ru_be.inc (renamed from rtl/objpas/collations/collation_ru_be.inc)0
-rw-r--r--packages/rtl-unicode/src/collations/collation_ru_le.inc (renamed from rtl/objpas/collations/collation_ru_le.inc)0
-rw-r--r--packages/rtl-unicode/src/collations/collation_sv.pas (renamed from rtl/objpas/collations/collation_sv.pas)0
-rw-r--r--packages/rtl-unicode/src/collations/collation_sv_be.inc (renamed from rtl/objpas/collations/collation_sv_be.inc)0
-rw-r--r--packages/rtl-unicode/src/collations/collation_sv_le.inc (renamed from rtl/objpas/collations/collation_sv_le.inc)0
-rw-r--r--packages/rtl-unicode/src/collations/collation_zh.pas (renamed from rtl/objpas/collations/collation_zh.pas)0
-rw-r--r--packages/rtl-unicode/src/collations/collation_zh_be.inc (renamed from rtl/objpas/collations/collation_zh_be.inc)0
-rw-r--r--packages/rtl-unicode/src/collations/collation_zh_le.inc (renamed from rtl/objpas/collations/collation_zh_le.inc)0
-rw-r--r--packages/rtl-unicode/src/inc/cp932.pas (renamed from rtl/charmaps/cp932.pas)0
-rw-r--r--packages/rtl-unicode/src/inc/cp936.pas (renamed from rtl/charmaps/cp936.pas)0
-rw-r--r--packages/rtl-unicode/src/inc/cp949.pas (renamed from rtl/charmaps/cp949.pas)0
-rw-r--r--packages/rtl-unicode/src/inc/cp950.pas (renamed from rtl/charmaps/cp950.pas)0
-rw-r--r--packages/rtl-unicode/src/inc/cpbuildu.pp8
-rw-r--r--packages/rtl-unicode/src/inc/freebidi.pp (renamed from rtl/objpas/freebidi.pp)0
-rw-r--r--packages/rtl-unicode/src/inc/ucadata.inc (renamed from rtl/objpas/ucadata.inc)0
-rw-r--r--packages/rtl-unicode/src/inc/ucadata_be.inc (renamed from rtl/objpas/ucadata_be.inc)0
-rw-r--r--packages/rtl-unicode/src/inc/ucadata_le.inc (renamed from rtl/objpas/ucadata_le.inc)0
-rw-r--r--packages/rtl-unicode/src/inc/unicodeducet.pas (renamed from rtl/objpas/unicodeducet.pas)0
-rw-r--r--packages/rtl-unicode/src/inc/utf8bidi.pp (renamed from rtl/objpas/utf8bidi.pp)0
-rw-r--r--packages/sndfile/src/sndfile.pp2
-rw-r--r--packages/sqlite/src/sqlite3.inc16
-rw-r--r--packages/univint/src/cssmapple.pas2
-rw-r--r--packages/winunits-base/src/activex.pp288
-rw-r--r--packages/winunits-base/src/comobj.pp32
-rw-r--r--packages/winunits-base/src/eventsink.pp30
-rw-r--r--packages/winunits-base/src/htmlhelp.pp9
-rw-r--r--packages/winunits-base/src/shlobj.pp20
-rw-r--r--rtl/Makefile28
-rw-r--r--rtl/aix/Makefile520
-rw-r--r--rtl/aix/Makefile.fpc86
-rw-r--r--rtl/aix/termios.inc2
-rw-r--r--rtl/amiga/Makefile339
-rw-r--r--rtl/amiga/Makefile.fpc9
-rw-r--r--rtl/amiga/dos.pp24
-rw-r--r--rtl/amiga/sysdir.inc7
-rw-r--r--rtl/amiga/sysheap.inc4
-rw-r--r--rtl/amiga/sysos.inc9
-rw-r--r--rtl/amiga/system.pp25
-rw-r--r--rtl/amiga/sysutils.pp240
-rw-r--r--rtl/android/Makefile537
-rw-r--r--rtl/android/Makefile.fpc78
-rw-r--r--rtl/android/jvm/Makefile31
-rw-r--r--rtl/arm/arm.inc6
-rw-r--r--rtl/arm/math.inc4
-rw-r--r--rtl/arm/mathu.inc199
-rw-r--r--rtl/arm/mathuh.inc27
-rw-r--r--rtl/arm/thumb.inc4
-rw-r--r--rtl/arm/thumb2.inc19
-rw-r--r--rtl/atari/Makefile472
-rw-r--r--rtl/atari/Makefile.fpc10
-rw-r--r--rtl/atari/system.pp8
-rw-r--r--rtl/beos/Makefile342
-rw-r--r--rtl/beos/Makefile.fpc12
-rw-r--r--rtl/beos/system.pp8
-rw-r--r--rtl/bsd/i386/syscall.inc45
-rw-r--r--rtl/bsd/system.pp4
-rw-r--r--rtl/charmaps/cpall.pas2
-rw-r--r--rtl/darwin/Makefile345
-rw-r--r--rtl/darwin/Makefile.fpc36
-rw-r--r--rtl/darwin/console.pp4
-rw-r--r--rtl/embedded/Makefile294
-rw-r--r--rtl/embedded/Makefile.fpc22
-rw-r--r--rtl/embedded/rtl.cfg15
-rw-r--r--rtl/embedded/system.pp4
-rw-r--r--rtl/emx/Makefile351
-rw-r--r--rtl/emx/Makefile.fpc31
-rw-r--r--rtl/emx/system.pas11
-rw-r--r--rtl/fpmake.inc3
-rw-r--r--rtl/fpmake.pp1
-rw-r--r--rtl/freebsd/Makefile365
-rw-r--r--rtl/freebsd/Makefile.fpc64
-rw-r--r--rtl/freebsd/console.pp4
-rw-r--r--rtl/gba/Makefile193
-rw-r--r--rtl/gba/Makefile.fpc22
-rw-r--r--rtl/gba/system.pp2
-rw-r--r--rtl/go32v2/Makefile394
-rw-r--r--rtl/go32v2/Makefile.fpc120
-rw-r--r--rtl/go32v2/initc.pp2
-rw-r--r--rtl/go32v2/system.pp1
-rw-r--r--rtl/haiku/Makefile221
-rw-r--r--rtl/haiku/Makefile.fpc56
-rw-r--r--rtl/haiku/system.pp8
-rw-r--r--rtl/i386/cpu.pp32
-rw-r--r--rtl/i386/i386.inc175
-rw-r--r--rtl/i386/math.inc144
-rw-r--r--rtl/i386/mathu.inc5
-rw-r--r--rtl/i386/mathuh.inc29
-rw-r--r--rtl/i8086/i8086.inc239
-rw-r--r--rtl/i8086/math.inc33
-rw-r--r--rtl/i8086/mathu.inc8
-rw-r--r--rtl/i8086/mathuh.inc29
-rw-r--r--rtl/i8086/setjump.inc51
-rw-r--r--rtl/inc/astrings.inc2
-rw-r--r--rtl/inc/cgenmath.inc18
-rw-r--r--rtl/inc/compproc.inc3
-rw-r--r--rtl/inc/dynlibs.pas4
-rw-r--r--rtl/inc/except.inc25
-rw-r--r--rtl/inc/file.inc54
-rw-r--r--rtl/inc/generic.inc10
-rw-r--r--rtl/inc/genmath.inc451
-rw-r--r--rtl/inc/heap.inc2
-rw-r--r--rtl/inc/heaptrc.pp93
-rw-r--r--rtl/inc/innr.inc4
-rw-r--r--rtl/inc/mathh.inc62
-rw-r--r--rtl/inc/objpash.inc8
-rw-r--r--rtl/inc/rtti.inc19
-rw-r--r--rtl/inc/softfpu.pp176
-rw-r--r--rtl/inc/sstrings.inc22
-rw-r--r--rtl/inc/system.inc82
-rw-r--r--rtl/inc/systemh.inc33
-rw-r--r--rtl/inc/text.inc54
-rw-r--r--rtl/inc/thread.inc20
-rw-r--r--rtl/inc/threadh.inc5
-rw-r--r--rtl/inc/ustrings.inc2
-rw-r--r--rtl/inc/wstrings.inc28
-rw-r--r--rtl/java/Makefile31
-rw-r--r--rtl/java/jcompproc.inc1
-rw-r--r--rtl/java/jsystem.inc10
-rw-r--r--rtl/jvm/jvm.inc4
-rw-r--r--rtl/linux/Makefile385
-rw-r--r--rtl/linux/Makefile.fpc52
-rw-r--r--rtl/linux/mips/sighnd.inc8
-rw-r--r--rtl/linux/sparc/dllprt0.as68
-rw-r--r--rtl/linux/system.pp14
-rw-r--r--rtl/linux/x86_64/si_c.inc35
-rw-r--r--rtl/linux/x86_64/si_dll.inc61
-rw-r--r--rtl/linux/x86_64/si_g.inc174
-rw-r--r--rtl/linux/x86_64/si_prc.inc24
-rw-r--r--rtl/linux/x86_64/sighnd.inc10
-rw-r--r--rtl/m68k/mathu.inc33
-rw-r--r--rtl/m68k/mathuh.inc24
-rw-r--r--rtl/macos/Makefile182
-rw-r--r--rtl/macos/Makefile.fpc4
-rw-r--r--rtl/mips/mathu.inc21
-rw-r--r--rtl/mips/mathuh.inc29
-rw-r--r--rtl/mips/mips.inc32
-rw-r--r--rtl/mipsel/mathuh.inc1
-rw-r--r--rtl/morphos/Makefile350
-rw-r--r--rtl/morphos/Makefile.fpc38
-rw-r--r--rtl/morphos/dos.pp4
-rw-r--r--rtl/morphos/sysheap.inc4
-rw-r--r--rtl/morphos/system.pp3
-rw-r--r--rtl/msdos/Makefile396
-rw-r--r--rtl/msdos/Makefile.fpc84
-rw-r--r--rtl/msdos/dos.pp88
-rw-r--r--rtl/msdos/msmouse.pp37
-rw-r--r--rtl/msdos/ports.pp2
-rw-r--r--rtl/msdos/prt0c.asm3
-rw-r--r--rtl/msdos/prt0comn.asm (renamed from rtl/msdos/prt0stm.asm)83
-rw-r--r--rtl/msdos/prt0h.asm3
-rw-r--r--rtl/msdos/prt0l.asm3
-rw-r--r--rtl/msdos/prt0m.asm2
-rw-r--r--rtl/msdos/prt0s.asm2
-rw-r--r--rtl/msdos/prt0t.asm2
-rw-r--r--rtl/msdos/sysdir.inc6
-rw-r--r--rtl/msdos/sysfile.inc6
-rw-r--r--rtl/msdos/system.pp37
-rw-r--r--rtl/nativent/Makefile333
-rw-r--r--rtl/nativent/Makefile.fpc10
-rw-r--r--rtl/nds/Makefile191
-rw-r--r--rtl/nds/Makefile.fpc18
-rw-r--r--rtl/nds/system.pp2
-rw-r--r--rtl/netbsd/Makefile368
-rw-r--r--rtl/netbsd/Makefile.fpc67
-rw-r--r--rtl/netware/Makefile363
-rw-r--r--rtl/netware/Makefile.fpc53
-rw-r--r--rtl/netwlibc/Makefile363
-rw-r--r--rtl/netwlibc/Makefile.fpc57
-rw-r--r--rtl/netwlibc/pre/libcpre.gcc.obin2900 -> 0 bytes
-rw-r--r--rtl/objpas/classes/classes.inc7
-rw-r--r--rtl/objpas/classes/classesh.inc6
-rw-r--r--rtl/objpas/classes/compon.inc4
-rw-r--r--rtl/objpas/classes/persist.inc4
-rw-r--r--rtl/objpas/classes/reader.inc6
-rw-r--r--rtl/objpas/classes/streams.inc8
-rw-r--r--rtl/objpas/classes/writer.inc2
-rw-r--r--rtl/objpas/math.pp97
-rw-r--r--rtl/objpas/objpas.pp26
-rw-r--r--rtl/objpas/sysutils/dati.inc7
-rw-r--r--rtl/objpas/sysutils/datih.inc4
-rw-r--r--rtl/objpas/sysutils/sysstr.inc10
-rw-r--r--rtl/objpas/sysutils/sysstrh.inc10
-rw-r--r--rtl/objpas/sysutils/sysuthrd.inc56
-rw-r--r--rtl/objpas/sysutils/sysutilh.inc10
-rw-r--r--rtl/objpas/sysutils/sysutils.inc15
-rw-r--r--rtl/objpas/typinfo.pp2
-rw-r--r--rtl/openbsd/Makefile373
-rw-r--r--rtl/openbsd/Makefile.fpc71
-rw-r--r--rtl/openbsd/classes.pp53
-rw-r--r--rtl/openbsd/i386/sighnd.inc2
-rw-r--r--rtl/os2/Makefile356
-rw-r--r--rtl/os2/Makefile.fpc37
-rw-r--r--rtl/os2/system.pas7
-rw-r--r--rtl/palmos/Makefile185
-rw-r--r--rtl/palmos/Makefile.fpc2
-rw-r--r--rtl/powerpc/math.inc8
-rw-r--r--rtl/powerpc/mathu.inc16
-rw-r--r--rtl/powerpc/mathuh.inc33
-rw-r--r--rtl/powerpc/powerpc.inc6
-rw-r--r--rtl/powerpc64/math.inc8
-rw-r--r--rtl/powerpc64/mathu.inc16
-rw-r--r--rtl/powerpc64/mathuh.inc33
-rw-r--r--rtl/qnx/Makefile32
-rw-r--r--rtl/qnx/Makefile.fpc10
-rw-r--r--rtl/solaris/Makefile370
-rw-r--r--rtl/solaris/Makefile.fpc80
-rw-r--r--rtl/solaris/system.pp8
-rw-r--r--rtl/sparc/mathu.inc47
-rw-r--r--rtl/sparc/mathuh.inc29
-rw-r--r--rtl/sparc/sparc.inc2
-rw-r--r--rtl/symbian/Makefile34
-rw-r--r--rtl/unix/cthreads.pp41
-rw-r--r--rtl/unix/sysutils.pp17
-rw-r--r--rtl/unix/tthread.inc45
-rw-r--r--rtl/watcom/Makefile187
-rw-r--r--rtl/watcom/Makefile.fpc16
-rw-r--r--rtl/wii/Makefile182
-rw-r--r--rtl/wii/Makefile.fpc2
-rw-r--r--rtl/wii/system.pp2
-rw-r--r--rtl/win/syswin.inc17
-rw-r--r--rtl/win32/Makefile340
-rw-r--r--rtl/win32/Makefile.fpc16
-rw-r--r--rtl/win32/buildrtl.pp5
-rw-r--r--rtl/win32/seh32.inc90
-rw-r--r--rtl/win32/system.pp15
-rw-r--r--rtl/win64/Makefile340
-rw-r--r--rtl/win64/Makefile.fpc15
-rw-r--r--rtl/win64/buildrtl.pp3
-rw-r--r--rtl/win64/seh64.inc47
-rw-r--r--rtl/win64/system.pp13
-rw-r--r--rtl/wince/Makefile345
-rw-r--r--rtl/wince/Makefile.fpc28
-rw-r--r--rtl/wince/system.pp13
-rw-r--r--rtl/wince/wininc/defines.inc2
-rw-r--r--rtl/x86_64/cpu.pp67
-rw-r--r--rtl/x86_64/math.inc50
-rw-r--r--rtl/x86_64/mathu.inc25
-rw-r--r--rtl/x86_64/mathuh.inc29
-rw-r--r--rtl/x86_64/x86_64.inc25
-rw-r--r--tests/Makefile18
-rw-r--r--tests/Makefile.fpc2
-rw-r--r--tests/tbf/tb0239.pp18
-rw-r--r--tests/tbs/tb0468a.pas27
-rw-r--r--tests/tbs/tb0606.pp32
-rw-r--r--tests/tbs/tb0607.pp17
-rw-r--r--tests/test/cg/obj/aix/powerpc64/cpptcl1.obin16699 -> 8421 bytes
-rw-r--r--tests/test/cg/obj/aix/powerpc64/cpptcl2.obin3354 -> 1014 bytes
-rw-r--r--tests/test/cg/obj/aix/powerpc64/ctest.obin32126 -> 20297 bytes
-rw-r--r--tests/test/cg/obj/aix/powerpc64/tcext3.obin21259 -> 11271 bytes
-rw-r--r--tests/test/cg/obj/aix/powerpc64/tcext4.obin9296 -> 5221 bytes
-rw-r--r--tests/test/cg/obj/aix/powerpc64/tcext5.obin25911 -> 13973 bytes
-rw-r--r--tests/test/cg/obj/aix/powerpc64/tcext6.obin24735 -> 13522 bytes
-rw-r--r--tests/test/cg/obj/readme.txt2
-rw-r--r--tests/test/cg/taddset4.pp2
-rw-r--r--tests/test/cg/tcalcla1.pp3
-rw-r--r--tests/test/cg/tcall1.pp2
-rw-r--r--tests/test/cg/tvec.pp8
-rw-r--r--tests/test/cpu16/i8086/tfarptr3.pp178
-rw-r--r--tests/test/cpu16/i8086/tfarptr4.pp183
-rw-r--r--tests/test/cpu16/i8086/tintr1.pp79
-rw-r--r--tests/test/cpu16/i8086/tintr2.pp122
-rw-r--r--tests/test/jvm/testall.bat14
-rwxr-xr-xtests/test/jvm/testall.sh16
-rw-r--r--tests/test/jvm/toverload.pp12
-rw-r--r--tests/test/jvm/toverload2.pp19
-rw-r--r--tests/test/jvm/tptrdynarr.pp11
-rw-r--r--tests/test/jvm/tsmallintarr.pp18
-rw-r--r--tests/test/tbsx1.pp2
-rw-r--r--tests/test/tfma1.pp514
-rw-r--r--tests/test/tforin26.pp21
-rw-r--r--tests/test/tforin27.pp32
-rw-r--r--tests/test/theapthread.pp8
-rw-r--r--tests/test/tover4.pas65
-rw-r--r--tests/test/tsetsize.pp35
-rw-r--r--tests/test/units/cpu/tcpu1.pp39
-rw-r--r--tests/test/units/math/tcmpnan.pp62
-rw-r--r--tests/test/units/math/tdivmod.pp34
-rw-r--r--tests/test/units/system/tmem.pp2
-rw-r--r--tests/test/units/system/tres5.pp61
-rw-r--r--tests/test/units/system/tres5.rc2
-rw-r--r--tests/utils/avx/avxopcodes.pas311
-rw-r--r--tests/utils/avx/avxtestfilecmp.pp20
-rw-r--r--tests/utils/avx/avxtestgenerator.pp3
-rw-r--r--tests/utils/avx/cmpoptions.pas50
-rw-r--r--tests/utils/avx/filecomparer.pas51
-rw-r--r--tests/utils/avx/options.pas1
-rw-r--r--tests/utils/avx/readme.txt42
-rw-r--r--tests/webtbf/tw25788.pp2
-rw-r--r--tests/webtbf/tw25861.pp8
-rw-r--r--tests/webtbf/tw25862.pp8
-rw-r--r--tests/webtbf/tw25915.pp21
-rw-r--r--tests/webtbf/tw25951.pp38
-rw-r--r--tests/webtbs/tw10320.pp2
-rw-r--r--tests/webtbs/tw10815.pp18
-rw-r--r--tests/webtbs/tw15415.pp2
-rw-r--r--tests/webtbs/tw16365.pp10
-rw-r--r--tests/webtbs/tw19697.pp16
-rw-r--r--tests/webtbs/tw20192.pp4
-rw-r--r--tests/webtbs/tw2177.pp12
-rw-r--r--tests/webtbs/tw23776.pp15
-rw-r--r--tests/webtbs/tw25600.pp19
-rw-r--r--tests/webtbs/tw25604.pp24
-rw-r--r--tests/webtbs/tw25605.pp18
-rw-r--r--tests/webtbs/tw25610.pp25
-rw-r--r--tests/webtbs/tw25781.pp11
-rw-r--r--tests/webtbs/tw25869.pp17
-rw-r--r--tests/webtbs/tw25895.pp14
-rw-r--r--tests/webtbs/tw25929.pp25
-rw-r--r--tests/webtbs/tw25930.pp19
-rw-r--r--tests/webtbs/tw25931.pp6
-rw-r--r--tests/webtbs/tw25932.pp105
-rw-r--r--tests/webtbs/tw25956.pp23
-rw-r--r--tests/webtbs/tw25959.pp13
-rw-r--r--tests/webtbs/tw3157.pp3
-rw-r--r--tests/webtbs/tw4778.pp2
-rw-r--r--tests/webtbs/tw8140h.pp2
-rw-r--r--tests/webtbs/uw19697.pp24
-rw-r--r--tests/webtbs/uw25610a.pp17
-rw-r--r--tests/webtbs/uw25610b.pp17
-rw-r--r--utils/fpcm/fpcmake.inc4678
-rw-r--r--utils/fpcm/fpcmake.ini21
-rw-r--r--utils/fpcm/fpcmmain.pp2
-rw-r--r--utils/fpcm/fpmake.pp5
-rw-r--r--utils/fpcm/revision.inc2
-rw-r--r--utils/fpcsubst.pp (renamed from compiler/utils/fpcsubst.pp)0
-rw-r--r--utils/fpmake.pp4
-rw-r--r--utils/pas2jni/writer.pas43
-rw-r--r--utils/pas2js/Makefile2691
-rw-r--r--utils/pas2js/Makefile.fpc93
-rw-r--r--utils/pas2js/fpmake.pp45
-rw-r--r--utils/pas2js/pas2js.lpi78
-rw-r--r--utils/pas2js/pas2js.pp121
-rw-r--r--utils/pas2js/samples/arraydemo.pp12
-rw-r--r--utils/pas2js/samples/fordemo.pp8
-rw-r--r--utils/pas2js/samples/fordowndemo.pp8
-rw-r--r--utils/pas2js/samples/hello.pas14
-rw-r--r--utils/pas2js/samples/ifdemo.pp13
-rw-r--r--utils/pas2js/samples/repeatdemo.pp11
-rw-r--r--utils/pas2js/samples/whiledemo.pp12
-rw-r--r--utils/usubst.pp (renamed from compiler/utils/usubst.pp)0
773 files changed, 55887 insertions, 17688 deletions
diff --git a/Makefile b/Makefile
index a035dbbe18..d1ce86c134 100644
--- a/Makefile
+++ b/Makefile
@@ -321,8 +321,8 @@ endif
endif
override PACKAGE_NAME=fpc
override PACKAGE_VERSION=2.7.1
-REQUIREDVERSION=2.6.2
-REQUIREDVERSION2=2.6.4
+REQUIREDVERSION=2.6.4
+REQUIREDVERSION2=2.6.2
ifndef inOS2
override FPCDIR:=$(BASEDIR)
export FPCDIR
diff --git a/Makefile.fpc b/Makefile.fpc
index 83e4abe6ba..37a3788964 100644
--- a/Makefile.fpc
+++ b/Makefile.fpc
@@ -20,8 +20,8 @@ fpcdir=.
rule=help
[prerules]
-REQUIREDVERSION=2.6.2
-REQUIREDVERSION2=2.6.4
+REQUIREDVERSION=2.6.4
+REQUIREDVERSION2=2.6.2
# make versions < 3.77 (OS2 version) are buggy
diff --git a/compiler/aarch64/symcpu.pas b/compiler/aarch64/symcpu.pas
new file mode 100644
index 0000000000..9151a90de5
--- /dev/null
+++ b/compiler/aarch64/symcpu.pas
@@ -0,0 +1,178 @@
+{
+ Copyright (c) 2014 by Florian Klaempfl
+
+ Symbol table overrides for AARCH64
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+ ****************************************************************************
+}
+unit symcpu;
+
+{$i fpcdefs.inc}
+
+interface
+
+uses
+ symtype,symdef,symsym;
+
+type
+ { defs }
+ tcpufiledef = class(tfiledef)
+ end;
+
+ tcpuvariantdef = class(tvariantdef)
+ end;
+
+ tcpuformaldef = class(tformaldef)
+ end;
+
+ tcpuforwarddef = class(tforwarddef)
+ end;
+
+ tcpuundefineddef = class(tundefineddef)
+ end;
+
+ tcpuerrordef = class(terrordef)
+ end;
+
+ tcpupointerdef = class(tpointerdef)
+ end;
+
+ tcpurecorddef = class(trecorddef)
+ end;
+
+ tcpuimplementedinterface = class(timplementedinterface)
+ end;
+
+ tcpuobjectdef = class(tobjectdef)
+ end;
+
+ tcpuclassrefdef = class(tclassrefdef)
+ end;
+
+ tcpuarraydef = class(tarraydef)
+ end;
+
+ tcpuorddef = class(torddef)
+ end;
+
+ tcpufloatdef = class(tfloatdef)
+ end;
+
+ tcpuprocvardef = class(tprocvardef)
+ end;
+
+ tcpuprocdef = class(tprocdef)
+ end;
+
+ tcpustringdef = class(tstringdef)
+ end;
+
+ tcpuenumdef = class(tenumdef)
+ end;
+
+ tcpusetdef = class(tsetdef)
+ end;
+
+ { syms }
+ tcpulabelsym = class(tlabelsym)
+ end;
+
+ tcpuunitsym = class(tunitsym)
+ end;
+
+ tcpunamespacesym = class(tnamespacesym)
+ end;
+
+ tcpuprocsym = class(tprocsym)
+ end;
+
+ tcputypesym = class(ttypesym)
+ end;
+
+ tcpufieldvarsym = class(tfieldvarsym)
+ end;
+
+ tcpulocalvarsym = class(tlocalvarsym)
+ end;
+
+ tcpuparavarsym = class(tparavarsym)
+ end;
+
+ tcpustaticvarsym = class(tstaticvarsym)
+ end;
+
+ tcpuabsolutevarsym = class(tabsolutevarsym)
+ end;
+
+ tcpupropertysym = class(tpropertysym)
+ end;
+
+ tcpuconstsym = class(tconstsym)
+ end;
+
+ tcpuenumsym = class(tenumsym)
+ end;
+
+ tcpusyssym = class(tsyssym)
+ end;
+
+
+const
+ pbestrealtype : ^tdef = @s64floattype;
+
+
+implementation
+
+begin
+ { used tdef classes }
+ cfiledef:=tcpufiledef;
+ cvariantdef:=tcpuvariantdef;
+ cformaldef:=tcpuformaldef;
+ cforwarddef:=tcpuforwarddef;
+ cundefineddef:=tcpuundefineddef;
+ cerrordef:=tcpuerrordef;
+ cpointerdef:=tcpupointerdef;
+ crecorddef:=tcpurecorddef;
+ cimplementedinterface:=tcpuimplementedinterface;
+ cobjectdef:=tcpuobjectdef;
+ cclassrefdef:=tcpuclassrefdef;
+ carraydef:=tcpuarraydef;
+ corddef:=tcpuorddef;
+ cfloatdef:=tcpufloatdef;
+ cprocvardef:=tcpuprocvardef;
+ cprocdef:=tcpuprocdef;
+ cstringdef:=tcpustringdef;
+ cenumdef:=tcpuenumdef;
+ csetdef:=tcpusetdef;
+
+ { used tsym classes }
+ clabelsym:=tcpulabelsym;
+ cunitsym:=tcpuunitsym;
+ cnamespacesym:=tcpunamespacesym;
+ cprocsym:=tcpuprocsym;
+ ctypesym:=tcputypesym;
+ cfieldvarsym:=tcpufieldvarsym;
+ clocalvarsym:=tcpulocalvarsym;
+ cparavarsym:=tcpuparavarsym;
+ cstaticvarsym:=tcpustaticvarsym;
+ cabsolutevarsym:=tcpuabsolutevarsym;
+ cpropertysym:=tcpupropertysym;
+ cconstsym:=tcpuconstsym;
+ cenumsym:=tcpuenumsym;
+ csyssym:=tcpusyssym;
+end.
+
diff --git a/compiler/aggas.pas b/compiler/aggas.pas
index b0d1add4f5..de41d75c24 100644
--- a/compiler/aggas.pas
+++ b/compiler/aggas.pas
@@ -227,7 +227,7 @@ implementation
);
{ Generic unaligned pseudo-instructions, seems ELF specific }
- use_ua_elf_systems = [system_mipsel_linux,system_mipseb_linux,system_mipsel_android];
+ use_ua_elf_systems = [system_mipsel_linux,system_mipseb_linux,system_mipsel_android,system_mipsel_embedded,system_mipseb_embedded];
ait_ua_elf_const2str : array[aitconst_16bit_unaligned..aitconst_64bit_unaligned]
of string[20]=(
#9'.2byte'#9,#9'.4byte'#9,#9'.8byte'#9
@@ -1029,14 +1029,13 @@ implementation
else if (constdef in ait_unaligned_consts) and
(target_info.system in use_ua_elf_systems) then
AsmWrite(ait_ua_elf_const2str[constdef])
- else if not(target_info.system in systems_aix) or
- (constdef<>aitconst_64bit) then
- AsmWrite(ait_const2str[constdef])
+ { we can also have unaligned pointers in packed record
+ constants, which don't get translated into
+ unaligned tai -> always use vbyte }
+ else if target_info.system in systems_aix then
+ AsmWrite(#9'.vbyte'#9+tostr(tai_const(hp).size)+',')
else
- { can't use .llong, because that forces 8 byte
- alignnment and we sometimes store addresses on
- 4-byte aligned addresses (e.g. in the RTTI) }
- AsmWrite('.vbyte'#9'8,');
+ AsmWrite(ait_const2str[constdef]);
l:=0;
t := '';
repeat
@@ -1716,6 +1715,7 @@ implementation
end;
AsmLn;
+ WriteExtraFooter;
{$ifdef EXTDEBUG}
if current_module.mainsource<>'' then
Comment(V_Debug,'Done writing gas-styled assembler output for '+current_module.mainsource);
diff --git a/compiler/agjasmin.pas b/compiler/agjasmin.pas
index 047d351430..c33747f422 100644
--- a/compiler/agjasmin.pas
+++ b/compiler/agjasmin.pas
@@ -100,7 +100,7 @@ implementation
SysUtils,
cutils,cfileutl,systems,script,
fmodule,finput,verbose,
- symtype,symtable,jvmdef,
+ symtype,symcpu,symtable,jvmdef,
itcpujas,cpubase,cpuinfo,cgutils,
widestr
;
@@ -748,7 +748,7 @@ implementation
not(po_classmethod in pd.procoptions) and
not(pd.proctypeoption in [potype_constructor,potype_class_constructor])) then
result:=result+'final ';
- result:=result+pd.jvmmangledbasename(false);
+ result:=result+tcpuprocdef(pd).jvmmangledbasename(false);
end;
@@ -913,7 +913,7 @@ implementation
procedure TJasminAssembler.WriteProcDef(pd: tprocdef);
begin
- if not assigned(pd.exprasmlist) and
+ if not assigned(tcpuprocdef(pd).exprasmlist) and
not(po_abstractmethod in pd.procoptions) and
(not is_javainterface(pd.struct) or
(pd.proctypeoption in [potype_unitinit,potype_unitfinalize])) then
@@ -923,10 +923,10 @@ implementation
if jvmtypeneedssignature(pd) then
begin
AsmWrite('.signature "');
- AsmWrite(pd.jvmmangledbasename(true));
+ AsmWrite(tcpuprocdef(pd).jvmmangledbasename(true));
AsmWriteln('"');
end;
- WriteTree(pd.exprasmlist);
+ WriteTree(tcpuprocdef(pd).exprasmlist);
AsmWriteln('.end method');
AsmLn;
end;
diff --git a/compiler/alpha/cpunode.pas b/compiler/alpha/cpunode.pas
index c62bc9c303..f399c94588 100644
--- a/compiler/alpha/cpunode.pas
+++ b/compiler/alpha/cpunode.pas
@@ -32,7 +32,7 @@ unit cpunode;
uses
{ generic nodes }
- ncgbas,ncgld,ncgflw,ncgcnv,ncgmem,ncgcon,ncgcal,ncgset,ncginl
+ ncgbas,ncgld,ncgflw,ncgcnv,ncgmem,ncgcon,ncgcal,ncgset,ncginl,
{ to be able to only parts of the generic code,
the processor specific nodes must be included
after the generic one (FK)
@@ -48,7 +48,9 @@ unit cpunode;
{ this not really a node }
// naxpobj,
// naxpmat,
-// naxpcnv
+// naxpcnv,
+ { symtable }
+ symcpu
;
end.
diff --git a/compiler/alpha/symcpu.pas b/compiler/alpha/symcpu.pas
new file mode 100644
index 0000000000..399fe6e82c
--- /dev/null
+++ b/compiler/alpha/symcpu.pas
@@ -0,0 +1,211 @@
+{
+ Copyright (c) 2014 by Florian Klaempfl
+
+ Symbol table overrides for Alpha
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+ ****************************************************************************
+}
+unit symcpu;
+
+{$i fpcdefs.inc}
+
+interface
+
+uses
+ symtype,symdef,symsym;
+
+type
+ { defs }
+ tcpufiledef = class(tfiledef)
+ end;
+ tcpufiledefclass = class of tcpufiledef;
+
+ tcpuvariantdef = class(tvariantdef)
+ end;
+ tcpuvariantdefclass = class of tcpuvariantdef;
+
+ tcpuformaldef = class(tformaldef)
+ end;
+ tcpuformaldefclass = class of tcpuformaldef;
+
+ tcpuforwarddef = class(tforwarddef)
+ end;
+ tcpuforwarddefclass = class of tcpuforwarddef;
+
+ tcpuundefineddef = class(tundefineddef)
+ end;
+ tcpuundefineddefclass = class of tcpuundefineddef;
+
+ tcpuerrordef = class(terrordef)
+ end;
+ tcpuerrordefclass = class of tcpuerrordef;
+
+ tcpupointerdef = class(tpointerdef)
+ end;
+ tcpupointerdefclass = class of tcpupointerdef;
+
+ tcpurecorddef = class(trecorddef)
+ end;
+ tcpurecorddefclass = class of tcpurecorddef;
+
+ tcpuimplementedinterface = class(timplementedinterface)
+ end;
+ tcpuimplementedinterfaceclass = class of tcpuimplementedinterface;
+
+ tcpuobjectdef = class(tobjectdef)
+ end;
+ tcpuobjectdefclass = class of tcpuobjectdef;
+
+ tcpuclassrefdef = class(tclassrefdef)
+ end;
+ tcpuclassrefdefclass = class of tcpuclassrefdef;
+
+ tcpuarraydef = class(tarraydef)
+ end;
+ tcpuarraydefclass = class of tcpuarraydef;
+
+ tcpuorddef = class(torddef)
+ end;
+ tcpuorddefclass = class of tcpuorddef;
+
+ tcpufloatdef = class(tfloatdef)
+ end;
+ tcpufloatdefclass = class of tcpufloatdef;
+
+ tcpuprocvardef = class(tprocvardef)
+ end;
+ tcpuprocvardefclass = class of tcpuprocvardef;
+
+ tcpuprocdef = class(tprocdef)
+ end;
+ tcpuprocdefclass = class of tcpuprocdef;
+
+ tcpustringdef = class(tstringdef)
+ end;
+ tcpustringdefclass = class of tcpustringdef;
+
+ tcpuenumdef = class(tenumdef)
+ end;
+ tcpuenumdefclass = class of tcpuenumdef;
+
+ tcpusetdef = class(tsetdef)
+ end;
+ tcpusetdefclass = class of tcpusetdef;
+
+ { syms }
+ tcpulabelsym = class(tlabelsym)
+ end;
+ tcpulabelsymclass = class of tcpulabelsym;
+
+ tcpuunitsym = class(tunitsym)
+ end;
+ tcpuunitsymclass = class of tcpuunitsym;
+
+ tcpunamespacesym = class(tnamespacesym)
+ end;
+ tcpunamespacesymclass = class of tcpunamespacesym;
+
+ tcpuprocsym = class(tprocsym)
+ end;
+ tcpuprocsymclass = class of tcpuprocsym;
+
+ tcputypesym = class(ttypesym)
+ end;
+ tcpuypesymclass = class of tcputypesym;
+
+ tcpufieldvarsym = class(tfieldvarsym)
+ end;
+ tcpufieldvarsymclass = class of tcpufieldvarsym;
+
+ tcpulocalvarsym = class(tlocalvarsym)
+ end;
+ tcpulocalvarsymclass = class of tcpulocalvarsym;
+
+ tcpuparavarsym = class(tparavarsym)
+ end;
+ tcpuparavarsymclass = class of tcpuparavarsym;
+
+ tcpustaticvarsym = class(tstaticvarsym)
+ end;
+ tcpustaticvarsymclass = class of tcpustaticvarsym;
+
+ tcpuabsolutevarsym = class(tabsolutevarsym)
+ end;
+ tcpuabsolutevarsymclass = class of tcpuabsolutevarsym;
+
+ tcpupropertysym = class(tpropertysym)
+ end;
+ tcpupropertysymclass = class of tcpupropertysym;
+
+ tcpuconstsym = class(tconstsym)
+ end;
+ tcpuconstsymclass = class of tcpuconstsym;
+
+ tcpuenumsym = class(tenumsym)
+ end;
+ tcpuenumsymclass = class of tcpuenumsym;
+
+ tcpusyssym = class(tsyssym)
+ end;
+ tcpusyssymclass = class of tcpusyssym;
+
+
+const
+ pbestrealtype : ^tdef = @s64floattype;
+
+
+implementation
+
+begin
+ { used tdef classes }
+ cfiledef:=tcpufiledef;
+ cvariantdef:=tcpuvariantdef;
+ cformaldef:=tcpuformaldef;
+ cforwarddef:=tcpuforwarddef;
+ cundefineddef:=tcpuundefineddef;
+ cerrordef:=tcpuerrordef;
+ cpointerdef:=tcpupointerdef;
+ crecorddef:=tcpurecorddef;
+ cimplementedinterface:=tcpuimplementedinterface;
+ cobjectdef:=tcpuobjectdef;
+ cclassrefdef:=tcpuclassrefdef;
+ carraydef:=tcpuarraydef;
+ corddef:=tcpuorddef;
+ cfloatdef:=tcpufloatdef;
+ cprocvardef:=tcpuprocvardef;
+ cprocdef:=tcpuprocdef;
+ cstringdef:=tcpustringdef;
+ cenumdef:=tcpuenumdef;
+ csetdef:=tcpusetdef;
+
+ { used tsym classes }
+ clabelsym:=tcpulabelsym;
+ cunitsym:=tcpuunitsym;
+ cnamespacesym:=tcpunamespacesym;
+ cprocsym:=tcpuprocsym;
+ ctypesym:=tcputypesym;
+ cfieldvarsym:=tcpufieldvarsym;
+ clocalvarsym:=tcpulocalvarsym;
+ cparavarsym:=tcpuparavarsym;
+ cstaticvarsym:=tcpustaticvarsym;
+ cabsolutevarsym:=tcpuabsolutevarsym;
+ cpropertysym:=tcpupropertysym;
+ cconstsym:=tcpuconstsym;
+ cenumsym:=tcpuenumsym;
+ csyssym:=tcpusyssym;
+end.
+
diff --git a/compiler/aopt.pas b/compiler/aopt.pas
index 56877ccb8f..7dcc281f32 100644
--- a/compiler/aopt.pas
+++ b/compiler/aopt.pas
@@ -267,13 +267,16 @@ Unit aopt;
pass_1;
While Assigned(BlockStart) Do
Begin
- if pass = 0 then
- PrePeepHoleOpts;
- { Peephole optimizations }
- PeepHoleOptPass1;
- { Only perform them twice in the first pass }
- if pass = 0 then
- PeepHoleOptPass1;
+ if (cs_opt_peephole in current_settings.optimizerswitches) then
+ begin
+ if pass = 0 then
+ PrePeepHoleOpts;
+ { Peephole optimizations }
+ PeepHoleOptPass1;
+ { Only perform them twice in the first pass }
+ if pass = 0 then
+ PeepHoleOptPass1;
+ end;
If (cs_opt_asmcse in current_settings.optimizerswitches) Then
Begin
// DFA:=TAOptDFACpu.Create(AsmL,BlockStart,BlockEnd,LabelInfo);
@@ -283,9 +286,12 @@ Unit aopt;
{ CSE;}
End;
{ more peephole optimizations }
- PeepHoleOptPass2;
- { if pass = last_pass then }
- PostPeepHoleOpts;
+ if (cs_opt_peephole in current_settings.optimizerswitches) then
+ begin
+ PeepHoleOptPass2;
+ { if pass = last_pass then }
+ PostPeepHoleOpts;
+ end;
{ free memory }
clear;
{ continue where we left off, BlockEnd is either the start of an }
diff --git a/compiler/aoptobj.pas b/compiler/aoptobj.pas
index 48c3c88460..818310a259 100644
--- a/compiler/aoptobj.pas
+++ b/compiler/aoptobj.pas
@@ -1119,7 +1119,7 @@ Unit AoptObj;
function TAOptObj.RegUsedAfterInstruction(reg: Tregister; p: tai;
var AllUsedRegs: TAllUsedRegs): Boolean;
begin
- AllUsedRegs[getregtype(reg)].Update(tai(p.Next));
+ AllUsedRegs[getregtype(reg)].Update(tai(p.Next),true);
RegUsedAfterInstruction :=
(AllUsedRegs[getregtype(reg)].IsUsed(reg)); { optimization and
(not(getNextInstruction(p,p)) or
diff --git a/compiler/arm/aasmcpu.pas b/compiler/arm/aasmcpu.pas
index 83d66b0984..58b8010226 100644
--- a/compiler/arm/aasmcpu.pas
+++ b/compiler/arm/aasmcpu.pas
@@ -869,6 +869,26 @@ implementation
*)
procedure insertpcrelativedata(list,listtoinsert : TAsmList);
+
+ var
+ limit: longint;
+
+ { FLD/FST VFP instructions have a limit of +/- 1024, not 4096, this
+ function checks the next count instructions if the limit must be
+ decreased }
+ procedure CheckLimit(hp : tai;count : integer);
+ var
+ i : Integer;
+ begin
+ for i:=1 to count do
+ if SimpleGetNextInstruction(hp,hp) and
+ (tai(hp).typ=ait_instruction) and
+ ((taicpu(hp).opcode=A_FLDS) or
+ (taicpu(hp).opcode=A_FLDD) or
+ (taicpu(hp).opcode=A_VLDR)) then
+ limit:=254;
+ end;
+
var
curinspos,
penalty,
@@ -876,7 +896,6 @@ implementation
{ increased for every data element > 4 bytes inserted }
currentsize,
extradataoffset,
- limit: longint;
curop : longint;
curtai : tai;
ai_label : tai_label;
@@ -1037,9 +1056,10 @@ implementation
begin
case taicpu(hp).opcode of
A_BX,
- A_LDR:
+ A_LDR,
+ A_ADD:
{ approximation if we hit a case jump table }
- if ((taicpu(hp).opcode=A_LDR) and not(GenerateThumbCode or GenerateThumb2Code) and
+ if ((taicpu(hp).opcode in [A_ADD,A_LDR]) and not(GenerateThumbCode or GenerateThumb2Code) and
(taicpu(hp).oper[0]^.typ=top_reg) and
(taicpu(hp).oper[0]^.reg=NR_PC)) or
((taicpu(hp).opcode=A_BX) and (GenerateThumbCode) and
@@ -1059,18 +1079,33 @@ implementation
end;
end;
A_IT:
- if GenerateThumb2Code then
- penalty:=multiplier;
+ begin
+ if GenerateThumb2Code then
+ penalty:=multiplier;
+ { check if the next instruction fits as well
+ or if we splitted after the it so split before }
+ CheckLimit(hp,1);
+ end;
A_ITE,
A_ITT:
- if GenerateThumb2Code then
- penalty:=2*multiplier;
+ begin
+ if GenerateThumb2Code then
+ penalty:=2*multiplier;
+ { check if the next two instructions fit as well
+ or if we splitted them so split before }
+ CheckLimit(hp,2);
+ end;
A_ITEE,
A_ITTE,
A_ITET,
A_ITTT:
- if GenerateThumb2Code then
- penalty:=3*multiplier;
+ begin
+ if GenerateThumb2Code then
+ penalty:=3*multiplier;
+ { check if the next three instructions fit as well
+ or if we splitted them so split before }
+ CheckLimit(hp,3);
+ end;
A_ITEEE,
A_ITTEE,
A_ITETE,
@@ -1079,18 +1114,17 @@ implementation
A_ITTET,
A_ITETT,
A_ITTTT:
- if GenerateThumb2Code then
- penalty:=4*multiplier;
+ begin
+ if GenerateThumb2Code then
+ penalty:=4*multiplier;
+ { check if the next three instructions fit as well
+ or if we splitted them so split before }
+ CheckLimit(hp,4);
+ end;
end;
end;
- { FLD/FST VFP instructions have a limit of +/- 1024, not 4096 }
- if SimpleGetNextInstruction(curtai,hp) and
- (tai(hp).typ=ait_instruction) and
- ((taicpu(hp).opcode=A_FLDS) or
- (taicpu(hp).opcode=A_FLDD) or
- (taicpu(hp).opcode=A_VLDR)) then
- limit:=254;
+ CheckLimit(curtai,1);
{ don't miss an insert }
doinsert:=doinsert or
@@ -1134,7 +1168,7 @@ implementation
doinsert:=false;
current_asmdata.getjumplabel(l);
- { align thumb in thumb .text section to 4 bytes }
+ { align jump in thumb .text section to 4 bytes }
if not(curdata.empty) and (GenerateThumbCode) then
curdata.Insert(tai_align.Create(4));
curdata.insert(taicpu.op_sym(A_B,l));
@@ -1162,7 +1196,7 @@ implementation
else
curtai:=tai(curtai.next);
end;
- { align thumb in thumb .text section to 4 bytes }
+ { align jump in thumb .text section to 4 bytes }
if not(curdata.empty) and (GenerateThumbCode or GenerateThumb2Code) then
curdata.Insert(tai_align.Create(4));
list.concatlist(curdata);
diff --git a/compiler/arm/agarmgas.pas b/compiler/arm/agarmgas.pas
index 9a995f8ca7..0ac95122c9 100644
--- a/compiler/arm/agarmgas.pas
+++ b/compiler/arm/agarmgas.pas
@@ -296,7 +296,7 @@ unit agarmgas;
postfix:='.w';
if taicpu(hp).ops = 0 then
- s:=#9+gas_op2str[op]+' '+cond2str[taicpu(hp).condition]+oppostfix2str[taicpu(hp).oppostfix]
+ s:=#9+gas_op2str[op]+cond2str[taicpu(hp).condition]+oppostfix2str[taicpu(hp).oppostfix]
else if (taicpu(hp).opcode>=A_VABS) and (taicpu(hp).opcode<=A_VSUB) then
s:=#9+gas_op2str[op]+cond2str[taicpu(hp).condition]+oppostfix2str[taicpu(hp).oppostfix]
else
diff --git a/compiler/arm/aoptcpu.pas b/compiler/arm/aoptcpu.pas
index 7e1f045e7f..ef060dec80 100644
--- a/compiler/arm/aoptcpu.pas
+++ b/compiler/arm/aoptcpu.pas
@@ -2897,7 +2897,7 @@ Implementation
taicpu(p).loadconst(1,taicpu(p).oper[2]^.val);
result:=true;
end
- else if MatchInstruction(p, [A_ADD,A_AND,A_ORR,A_EOR], [C_None], [PF_None,PF_S]) and
+ else if MatchInstruction(p, [A_AND,A_ORR,A_EOR], [C_None], [PF_None,PF_S]) and
(taicpu(p).ops = 3) and
MatchOperand(taicpu(p).oper[0]^, taicpu(p).oper[2]^) and
(not RegInUsedRegs(NR_DEFAULTFLAGS,UsedRegs)) then
diff --git a/compiler/arm/cgcpu.pas b/compiler/arm/cgcpu.pas
index 96156d581d..aadd2fe069 100644
--- a/compiler/arm/cgcpu.pas
+++ b/compiler/arm/cgcpu.pas
@@ -1164,11 +1164,11 @@ unit cgcpu;
function tbasecgarm.handle_load_store(list:TAsmList;op: tasmop;oppostfix : toppostfix;reg:tregister;ref: treference):treference;
var
- tmpreg : tregister;
+ tmpreg1,tmpreg2 : tregister;
tmpref : treference;
l : tasmlabel;
begin
- tmpreg:=NR_NO;
+ tmpreg1:=NR_NO;
{ Be sure to have a base register }
if (ref.base=NR_NO) then
@@ -1203,7 +1203,7 @@ unit cgcpu;
(ref.offset>255)
)
) or
- ((op in [A_LDF,A_STF,A_FLDS,A_FLDD,A_FSTS,A_FSTD]) and
+ (((op in [A_LDF,A_STF,A_FLDS,A_FLDD,A_FSTS,A_FSTD]) or (op=A_VSTR) or (op=A_VLDR)) and
((ref.offset<-1020) or
(ref.offset>1020) or
((abs(ref.offset) mod 4)<>0)
@@ -1227,76 +1227,80 @@ unit cgcpu;
if (oppostfix in [PF_SB,PF_SH]) and
(ref.base<>NR_NO) and (ref.index=NR_NO) then
begin
- tmpreg:=getintregister(list,OS_ADDR);
- a_load_const_reg(list,OS_ADDR,0,tmpreg);
- ref.index:=tmpreg;
+ tmpreg1:=getintregister(list,OS_ADDR);
+ a_load_const_reg(list,OS_ADDR,0,tmpreg1);
+ ref.index:=tmpreg1;
end;
{ "hi" registers cannot be used as base or index }
if (getsupreg(ref.base) in [RS_R8..RS_R12,RS_R14]) or
((ref.base=NR_R13) and (ref.index<>NR_NO)) then
begin
- tmpreg:=getintregister(list,OS_ADDR);
- a_load_reg_reg(list,OS_ADDR,OS_ADDR,ref.base,tmpreg);
- ref.base:=tmpreg;
+ tmpreg1:=getintregister(list,OS_ADDR);
+ a_load_reg_reg(list,OS_ADDR,OS_ADDR,ref.base,tmpreg1);
+ ref.base:=tmpreg1;
end;
if getsupreg(ref.index) in [RS_R8..RS_R14] then
begin
- tmpreg:=getintregister(list,OS_ADDR);
- a_load_reg_reg(list,OS_ADDR,OS_ADDR,ref.index,tmpreg);
- ref.index:=tmpreg;
+ tmpreg1:=getintregister(list,OS_ADDR);
+ a_load_reg_reg(list,OS_ADDR,OS_ADDR,ref.index,tmpreg1);
+ ref.index:=tmpreg1;
end;
end;
{ fold if there is base, index and offset, however, don't fold
for vfp memory instructions because we later fold the index }
- if not(op in [A_FLDS,A_FLDD,A_FSTS,A_FSTD]) and
+ if not((op in [A_FLDS,A_FLDD,A_FSTS,A_FSTD]) or (op=A_VSTR) or (op=A_VLDR)) and
(ref.base<>NR_NO) and (ref.index<>NR_NO) and (ref.offset<>0) then
begin
- if tmpreg<>NR_NO then
- a_op_const_reg_reg(list,OP_ADD,OS_ADDR,ref.offset,tmpreg,tmpreg)
+ if tmpreg1<>NR_NO then
+ begin
+ tmpreg2:=getintregister(list,OS_ADDR);
+ a_op_const_reg_reg(list,OP_ADD,OS_ADDR,ref.offset,tmpreg1,tmpreg2);
+ tmpreg1:=tmpreg2;
+ end
else
begin
- tmpreg:=getintregister(list,OS_ADDR);
- a_op_const_reg_reg(list,OP_ADD,OS_ADDR,ref.offset,ref.base,tmpreg);
- ref.base:=tmpreg;
+ tmpreg1:=getintregister(list,OS_ADDR);
+ a_op_const_reg_reg(list,OP_ADD,OS_ADDR,ref.offset,ref.base,tmpreg1);
+ ref.base:=tmpreg1;
end;
ref.offset:=0;
end;
{ floating point operations have only limited references
we expect here, that a base is already set }
- if (op in [A_LDF,A_STF,A_FLDS,A_FLDD,A_FSTS,A_FSTD]) and (ref.index<>NR_NO) then
+ if ((op in [A_LDF,A_STF,A_FLDS,A_FLDD,A_FSTS,A_FSTD]) or (op=A_VSTR) or (op=A_VLDR)) and (ref.index<>NR_NO) then
begin
if ref.shiftmode<>SM_none then
internalerror(200309121);
- if tmpreg<>NR_NO then
+ if tmpreg1<>NR_NO then
begin
- if ref.base=tmpreg then
+ if ref.base=tmpreg1 then
begin
if ref.signindex<0 then
- list.concat(taicpu.op_reg_reg_reg(A_SUB,tmpreg,tmpreg,ref.index))
+ list.concat(taicpu.op_reg_reg_reg(A_SUB,tmpreg1,tmpreg1,ref.index))
else
- list.concat(taicpu.op_reg_reg_reg(A_ADD,tmpreg,tmpreg,ref.index));
+ list.concat(taicpu.op_reg_reg_reg(A_ADD,tmpreg1,tmpreg1,ref.index));
ref.index:=NR_NO;
end
else
begin
- if ref.index<>tmpreg then
+ if ref.index<>tmpreg1 then
internalerror(200403161);
if ref.signindex<0 then
- list.concat(taicpu.op_reg_reg_reg(A_SUB,tmpreg,ref.base,tmpreg))
+ list.concat(taicpu.op_reg_reg_reg(A_SUB,tmpreg1,ref.base,tmpreg1))
else
- list.concat(taicpu.op_reg_reg_reg(A_ADD,tmpreg,ref.base,tmpreg));
- ref.base:=tmpreg;
+ list.concat(taicpu.op_reg_reg_reg(A_ADD,tmpreg1,ref.base,tmpreg1));
+ ref.base:=tmpreg1;
ref.index:=NR_NO;
end;
end
else
begin
- tmpreg:=getintregister(list,OS_ADDR);
- list.concat(taicpu.op_reg_reg_reg(A_ADD,tmpreg,ref.base,ref.index));
- ref.base:=tmpreg;
+ tmpreg1:=getintregister(list,OS_ADDR);
+ list.concat(taicpu.op_reg_reg_reg(A_ADD,tmpreg1,ref.base,ref.index));
+ ref.base:=tmpreg1;
ref.index:=NR_NO;
end;
end;
@@ -1762,14 +1766,18 @@ unit cgcpu;
r : byte;
mmregs,
regs, saveregs : tcpuregisterset;
+ registerarea,
r7offset,
stackmisalignment : pint;
postfix: toppostfix;
imm1, imm2: DWord;
+ stack_parameters : Boolean;
begin
LocalSize:=align(LocalSize,4);
+ stack_parameters:=current_procinfo.procdef.stack_tainting_parameter(calleeside);
+
{ call instruction does not put anything on the stack }
- stackmisalignment:=0;
+ registerarea:=0;
tarmprocinfo(current_procinfo).stackpaddingreg:=High(TSuperRegister);
lastfloatreg:=RS_NO;
if not(nostackframe) then
@@ -1789,7 +1797,7 @@ unit cgcpu;
if firstfloatreg=RS_NO then
firstfloatreg:=r;
lastfloatreg:=r;
- inc(stackmisalignment,12);
+ inc(registerarea,12);
end;
end;
fpu_vfpv2,
@@ -1829,16 +1837,16 @@ unit cgcpu;
begin
for r:=RS_R0 to RS_R15 do
if r in regs then
- inc(stackmisalignment,4);
+ inc(registerarea,4);
{ if the stack is not 8 byte aligned, try to add an extra register,
so we can avoid the extra sub/add ...,#4 later (KB) }
- if ((stackmisalignment mod current_settings.alignment.localalignmax) <> 0) then
+ if ((registerarea mod current_settings.alignment.localalignmax) <> 0) then
for r:=RS_R3 downto RS_R0 do
if not(r in regs) then
begin
regs:=regs+[r];
- inc(stackmisalignment,4);
+ inc(registerarea,4);
tarmprocinfo(current_procinfo).stackpaddingreg:=r;
break;
end;
@@ -1876,7 +1884,7 @@ unit cgcpu;
for r:=RS_R0 to RS_R15 do
if r in saveregs then
begin
- inc(stackmisalignment,4);
+ inc(registerarea,4);
if r<RS_FRAME_POINTER_REG then
inc(r7offset,4);
end;
@@ -1894,19 +1902,26 @@ unit cgcpu;
begin
for r:=RS_R8 to RS_R11 do
if r in saveregs then
- inc(stackmisalignment,4);
+ inc(registerarea,4);
list.concat(setoppostfix(taicpu.op_ref_regset(A_STM,ref,R_INTREGISTER,R_SUBWHOLE,saveregs),PF_FD));
end;
end;
end;
- stackmisalignment:=stackmisalignment mod current_settings.alignment.localalignmax;
+ stackmisalignment:=registerarea mod current_settings.alignment.localalignmax;
if (LocalSize<>0) or
((stackmisalignment<>0) and
((pi_do_call in current_procinfo.flags) or
(po_assembler in current_procinfo.procdef.procoptions))) then
begin
localsize:=align(localsize+stackmisalignment,current_settings.alignment.localalignmax)-stackmisalignment;
+ if stack_parameters and (pi_estimatestacksize in current_procinfo.flags) then
+ begin
+ if localsize>tarmprocinfo(current_procinfo).stackframesize then
+ internalerror(2014030901)
+ else
+ localsize:=tarmprocinfo(current_procinfo).stackframesize-registerarea;
+ end;
if is_shifter_const(localsize,shift) then
begin
a_reg_dealloc(list,NR_R12);
@@ -1989,6 +2004,7 @@ unit cgcpu;
mmregs,
saveregs,
regs : tcpuregisterset;
+ registerarea,
stackmisalignment: pint;
paddingreg: TSuperRegister;
mmpostfix: toppostfix;
@@ -1996,7 +2012,7 @@ unit cgcpu;
begin
if not(nostackframe) then
begin
- stackmisalignment:=0;
+ registerarea:=0;
firstfloatreg:=RS_NO;
lastfloatreg:=RS_NO;
mmregs:=[];
@@ -2016,7 +2032,7 @@ unit cgcpu;
lastfloatreg:=r;
{ floating point register space is already included in
localsize below by calc_stackframe_size
- inc(stackmisalignment,12);
+ inc(registerarea,12);
}
end;
end;
@@ -2108,13 +2124,13 @@ unit cgcpu;
ref.addressmode:=AM_PREINDEXED;
for r:=RS_R8 to RS_R11 do
if r in saveregs then
- inc(stackmisalignment,4);
+ inc(registerarea,4);
regs:=regs-saveregs;
end;
end;
for r:=RS_R0 to RS_R15 do
if r in regs then
- inc(stackmisalignment,4);
+ inc(registerarea,4);
{ reapply the stack padding reg, in case there was one, see the complimentary
comment in g_proc_entry() (KB) }
@@ -2125,9 +2141,9 @@ unit cgcpu;
else
begin
regs:=regs+[paddingreg];
- inc(stackmisalignment,4);
+ inc(registerarea,4);
end;
- stackmisalignment:=stackmisalignment mod current_settings.alignment.localalignmax;
+ stackmisalignment:=registerarea mod current_settings.alignment.localalignmax;
if (current_procinfo.framepointer=NR_STACK_POINTER_REG) or
(target_info.system in systems_darwin) then
begin
@@ -2137,7 +2153,11 @@ unit cgcpu;
((pi_do_call in current_procinfo.flags) or
(po_assembler in current_procinfo.procdef.procoptions))) then
begin
- localsize:=align(localsize+stackmisalignment,current_settings.alignment.localalignmax)-stackmisalignment;
+ if pi_estimatestacksize in current_procinfo.flags then
+ LocalSize:=tarmprocinfo(current_procinfo).stackframesize-registerarea
+ else
+ localsize:=align(localsize+stackmisalignment,current_settings.alignment.localalignmax)-stackmisalignment;
+
if is_shifter_const(LocalSize,shift) then
list.concat(taicpu.op_reg_reg_const(A_ADD,NR_STACK_POINTER_REG,NR_STACK_POINTER_REG,LocalSize))
else if split_into_shifter_const(localsize, imm1, imm2) then
@@ -4191,7 +4211,7 @@ unit cgcpu;
rg[R_FPUREGISTER]:=trgcpu.create(R_FPUREGISTER,R_SUBNONE,
[RS_F0,RS_F1,RS_F2,RS_F3,RS_F4,RS_F5,RS_F6,RS_F7],first_fpu_imreg,[]);
- if current_settings.fputype=fpu_fpv4_s16 then
+ if current_settings.fputype in [fpu_fpv4_s16,fpu_vfpv3_d16] then
rg[R_MMREGISTER]:=trgcpu.create(R_MMREGISTER,R_SUBFD,
[RS_D0,RS_D1,RS_D2,RS_D3,RS_D4,RS_D5,RS_D6,RS_D7,
RS_D8,RS_D9,RS_D10,RS_D11,RS_D12,RS_D13,RS_D14,RS_D15
@@ -4922,7 +4942,8 @@ unit cgcpu;
list.concat(taicpu.op_reg_reg(A_MOV,NR_PC,NR_R14));
end;
- function tthumb2cgarm.handle_load_store(list:TAsmList;op: tasmop;oppostfix : toppostfix;reg:tregister;ref: treference):treference;
+
+ function tthumb2cgarm.handle_load_store(list:TAsmList;op: tasmop;oppostfix : toppostfix;reg:tregister;ref: treference):treference;
var
tmpreg : tregister;
tmpref : treference;
@@ -4965,9 +4986,10 @@ unit cgcpu;
(ref.offset>255)
)
) or
- ((op in [A_LDF,A_STF,A_FLDS,A_FLDD,A_FSTS,A_FSTD]) and
+ (((op in [A_LDF,A_STF,A_FLDS,A_FLDD,A_FSTS,A_FSTD]) or (op=A_VSTR) or (op=A_VLDR)) and
((ref.offset<-1020) or
(ref.offset>1020) or
+ ((abs(ref.offset) mod 4)<>0) or
{ the usual pc relative symbol handling assumes possible offsets of +/- 4095 }
assigned(ref.symbol)
)
@@ -5045,7 +5067,7 @@ unit cgcpu;
{ floating point operations have only limited references
we expect here, that a base is already set }
- if (op in [A_LDF,A_STF,A_FLDS,A_FLDD,A_FSTS,A_FSTD]) and (ref.index<>NR_NO) then
+ if ((op in [A_LDF,A_STF,A_FLDS,A_FLDD,A_FSTS,A_FSTD]) or (op=A_VSTR) or (op=A_VLDR)) and (ref.index<>NR_NO) then
begin
if ref.shiftmode<>SM_none then
internalerror(200309121);
@@ -5084,7 +5106,7 @@ unit cgcpu;
end;
- procedure tthumb2cgarm.a_loadmm_reg_reg(list: TAsmList; fromsize, tosize: tcgsize; reg1, reg2: tregister; shuffle: pmmshuffle);
+ procedure tthumb2cgarm.a_loadmm_reg_reg(list: TAsmList; fromsize, tosize: tcgsize; reg1, reg2: tregister; shuffle: pmmshuffle);
var
instr: taicpu;
begin
@@ -5109,85 +5131,26 @@ unit cgcpu;
end;
end;
- procedure tthumb2cgarm.a_loadmm_ref_reg(list: TAsmList; fromsize, tosize: tcgsize; const ref: treference; reg: tregister; shuffle: pmmshuffle);
- var
- href: treference;
- tmpreg: TRegister;
- so: tshifterop;
- begin
- href:=ref;
-
- if (href.base<>NR_NO) and
- (href.index<>NR_NO) then
- begin
- tmpreg:=getintregister(list,OS_INT);
- if href.shiftmode<>SM_None then
- begin
- so.rs:=href.index;
- so.shiftimm:=href.shiftimm;
- so.shiftmode:=href.shiftmode;
- list.concat(taicpu.op_reg_reg_shifterop(A_ADD,tmpreg,href.base,so));
- end
- else
- a_op_reg_reg_reg(list,OP_ADD,OS_INT,href.index,href.base,tmpreg);
-
- reference_reset_base(href,tmpreg,href.offset,0);
- end;
-
- if assigned(href.symbol) then
- begin
- tmpreg:=getintregister(list,OS_INT);
- a_loadaddr_ref_reg(list,href,tmpreg);
-
- reference_reset_base(href,tmpreg,0,0);
- end;
+ procedure tthumb2cgarm.a_loadmm_ref_reg(list: TAsmList; fromsize, tosize: tcgsize; const ref: treference; reg: tregister; shuffle: pmmshuffle);
+ begin
if fromsize=OS_F32 then
- list.Concat(setoppostfix(taicpu.op_reg_ref(A_VLDR,reg,href), PF_F32))
+ handle_load_store(list,A_VLDR,PF_F32,reg,ref)
else
- list.Concat(setoppostfix(taicpu.op_reg_ref(A_VLDR,reg,href), PF_F64));
+ handle_load_store(list,A_VLDR,PF_F64,reg,ref);
end;
- procedure tthumb2cgarm.a_loadmm_reg_ref(list: TAsmList; fromsize, tosize: tcgsize; reg: tregister; const ref: treference; shuffle: pmmshuffle);
- var
- href: treference;
- so: tshifterop;
- tmpreg: TRegister;
- begin
- href:=ref;
-
- if (href.base<>NR_NO) and
- (href.index<>NR_NO) then
- begin
- tmpreg:=getintregister(list,OS_INT);
- if href.shiftmode<>SM_None then
- begin
- so.rs:=href.index;
- so.shiftimm:=href.shiftimm;
- so.shiftmode:=href.shiftmode;
- list.concat(taicpu.op_reg_reg_shifterop(A_ADD,tmpreg,href.base,so));
- end
- else
- a_op_reg_reg_reg(list,OP_ADD,OS_INT,href.index,href.base,tmpreg);
-
- reference_reset_base(href,tmpreg,href.offset,0);
- end;
-
- if assigned(href.symbol) then
- begin
- tmpreg:=getintregister(list,OS_INT);
- a_loadaddr_ref_reg(list,href,tmpreg);
-
- reference_reset_base(href,tmpreg,0,0);
- end;
+ procedure tthumb2cgarm.a_loadmm_reg_ref(list: TAsmList; fromsize, tosize: tcgsize; reg: tregister; const ref: treference; shuffle: pmmshuffle);
+ begin
if fromsize=OS_F32 then
- list.Concat(setoppostfix(taicpu.op_reg_ref(A_VSTR,reg,href), PF_32))
+ handle_load_store(list,A_VSTR,PF_F32,reg,ref)
else
- list.Concat(setoppostfix(taicpu.op_reg_ref(A_VSTR,reg,href), PF_64));
+ handle_load_store(list,A_VSTR,PF_F64,reg,ref);
end;
- procedure tthumb2cgarm.a_loadmm_intreg_reg(list: TAsmList; fromsize, tosize: tcgsize; intreg, mmreg: tregister; shuffle: pmmshuffle);
+
+ procedure tthumb2cgarm.a_loadmm_intreg_reg(list: TAsmList; fromsize, tosize: tcgsize; intreg, mmreg: tregister; shuffle: pmmshuffle);
begin
if //(shuffle=nil) and
(tosize=OS_F32) then
@@ -5196,7 +5159,8 @@ unit cgcpu;
internalerror(2012100813);
end;
- procedure tthumb2cgarm.a_loadmm_reg_intreg(list: TAsmList; fromsize, tosize: tcgsize; mmreg, intreg: tregister; shuffle: pmmshuffle);
+
+ procedure tthumb2cgarm.a_loadmm_reg_intreg(list: TAsmList; fromsize, tosize: tcgsize; mmreg, intreg: tregister; shuffle: pmmshuffle);
begin
if //(shuffle=nil) and
(fromsize=OS_F32) then
diff --git a/compiler/arm/cpuinfo.pas b/compiler/arm/cpuinfo.pas
index 664e6ad870..6b80597a6e 100644
--- a/compiler/arm/cpuinfo.pas
+++ b/compiler/arm/cpuinfo.pas
@@ -643,7 +643,7 @@ Const
{ no need to write info about those }
[cs_opt_level1,cs_opt_level2,cs_opt_level3]+
[cs_opt_regvar,cs_opt_loopunroll,cs_opt_tailrecursion,
- cs_opt_stackframe,cs_opt_nodecse,cs_opt_reorder_fields,cs_opt_fastmath];
+ cs_opt_stackframe,cs_opt_nodecse,cs_opt_reorder_fields,cs_opt_fastmath,cs_opt_forcenostackframe];
level1optimizerswitches = genericlevel1optimizerswitches;
level2optimizerswitches = genericlevel2optimizerswitches + level1optimizerswitches +
diff --git a/compiler/arm/cpunode.pas b/compiler/arm/cpunode.pas
index dd26776627..b5438e5183 100644
--- a/compiler/arm/cpunode.pas
+++ b/compiler/arm/cpunode.pas
@@ -41,7 +41,9 @@ unit cpunode;
narmcnv,
narmcon,
narmset,
- narmmem
+ narmmem,
+ { symtable }
+ symcpu
;
diff --git a/compiler/arm/cpupara.pas b/compiler/arm/cpupara.pas
index a523c9c90b..3fce91dcf1 100644
--- a/compiler/arm/cpupara.pas
+++ b/compiler/arm/cpupara.pas
@@ -44,8 +44,8 @@ unit cpupara;
function get_funcretloc(p : tabstractprocdef; side: tcallercallee; forcetempdef: tdef): tcgpara;override;
private
procedure init_values(p: tabstractprocdef; side: tcallercallee; var curintreg,
- curfloatreg, curmmreg: tsuperregister; var cur_stack_offset: aword;
- var sparesinglereg: tregister);
+ curfloatreg, curmmreg: tsuperregister; var cur_stack_offset: aword;
+ var sparesinglereg: tregister);
function create_paraloc_info_intern(p : tabstractprocdef; side: tcallercallee; paras: tparalist;
var curintreg, curfloatreg, curmmreg: tsuperregister; var cur_stack_offset: aword; var sparesinglereg: tregister; isvariadic: boolean):longint;
end;
@@ -54,7 +54,9 @@ unit cpupara;
uses
verbose,systems,cutils,
- defutil,symsym,symtable;
+ defutil,symsym,symcpu,symtable,
+ { PowerPC uses procinfo as well in cpupara, so this should not hurt }
+ procinfo;
function tcpuparamanager.get_volatile_registers_int(calloption : tproccalloption):tcpuregisterset;
@@ -298,8 +300,8 @@ unit cpupara;
curfloatreg:=RS_F0;
curmmreg:=RS_D0;
- if GenerateThumbCode and (side=calleeside) then
- cur_stack_offset:=(p as tprocdef).total_stackframe_size
+ if (side=calleeside) and (GenerateThumbCode or (pi_estimatestacksize in current_procinfo.flags)) then
+ cur_stack_offset:=(p as tcpuprocdef).total_stackframe_size
else
cur_stack_offset:=0;
sparesinglereg := NR_NO;
@@ -581,13 +583,9 @@ unit cpupara;
begin
if paraloc^.loc=LOC_REFERENCE then
begin
- if GenerateThumbCode then
+ paraloc^.reference.index:=current_procinfo.framepointer;
+ if current_procinfo.framepointer=NR_FRAME_POINTER_REG then
begin
- paraloc^.reference.index:=NR_STACK_POINTER_REG;
- end
- else
- begin
- paraloc^.reference.index:=NR_FRAME_POINTER_REG;
{ on non-Darwin, the framepointer contains the value
of the stack pointer on entry. On Darwin, the
framepointer points to the previously saved
diff --git a/compiler/arm/cpupi.pas b/compiler/arm/cpupi.pas
index f80a074ec5..30cd892d11 100644
--- a/compiler/arm/cpupi.pas
+++ b/compiler/arm/cpupi.pas
@@ -48,6 +48,7 @@ unit cpupi;
procedure init_framepointer; override;
procedure generate_parameter_info;override;
procedure allocate_got_register(list : TAsmList);override;
+ procedure postprocess_code;override;
end;
@@ -57,10 +58,11 @@ unit cpupi;
globals,systems,
cpubase,
tgobj,
- symconst,symtype,symsym,paramgr,
+ symconst,symtype,symsym,symcpu,paramgr,
cgutils,
cgobj,
- defutil;
+ defutil,
+ aasmcpu;
procedure tarmprocinfo.set_first_temp_offset;
var
@@ -99,7 +101,7 @@ unit cpupi;
tg.setfirsttemp(maxpushedparasize);
{ estimate stack frame size }
- if GenerateThumbCode then
+ if GenerateThumbCode or (pi_estimatestacksize in flags) then
begin
stackframesize:=maxpushedparasize+32;
localsize:=0;
@@ -145,7 +147,7 @@ unit cpupi;
floatsavesize : aword;
regs: tcpuregisterset;
begin
- if GenerateThumbCode then
+ if GenerateThumbCode or (pi_estimatestacksize in flags) then
result:=stackframesize
else
begin
@@ -254,7 +256,7 @@ unit cpupi;
procedure tarmprocinfo.generate_parameter_info;
begin
- procdef.total_stackframe_size:=stackframesize;
+ tcpuprocdef(procdef).total_stackframe_size:=stackframesize;
inherited generate_parameter_info;
end;
@@ -267,6 +269,12 @@ unit cpupi;
end;
+ procedure tarmprocinfo.postprocess_code;
+ begin
+ { because of the limited constant size of the arm, all data access is done pc relative }
+ finalizearmcode(aktproccode,aktlocaldata);
+ end;
+
begin
cprocinfo:=tarmprocinfo;
end.
diff --git a/compiler/arm/narmadd.pas b/compiler/arm/narmadd.pas
index 3ed09096da..7083067a42 100644
--- a/compiler/arm/narmadd.pas
+++ b/compiler/arm/narmadd.pas
@@ -32,6 +32,7 @@ interface
tarmaddnode = class(tcgaddnode)
private
function GetResFlags(unsigned:Boolean):TResFlags;
+ function GetFpuResFlags:TResFlags;
public
function pass_1 : tnode;override;
function use_generic_mul32to64: boolean; override;
@@ -126,6 +127,27 @@ interface
end;
+ function tarmaddnode.GetFpuResFlags:TResFlags;
+ begin
+ if nf_swapped in Flags then
+ internalerror(2014042001);
+ case NodeType of
+ equaln:
+ result:=F_EQ;
+ unequaln:
+ result:=F_NE;
+ ltn:
+ result:=F_MI;
+ lten:
+ result:=F_LS;
+ gtn:
+ result:=F_GT;
+ gten:
+ result:=F_GE;
+ end;
+ end;
+
+
procedure tarmaddnode.second_addfloat;
var
op : TAsmOp;
@@ -142,8 +164,8 @@ interface
begin
{ force fpureg as location, left right doesn't matter
as both will be in a fpureg }
- location_force_fpureg(current_asmdata.CurrAsmList,left.location,true);
- location_force_fpureg(current_asmdata.CurrAsmList,right.location,true);
+ hlcg.location_force_fpureg(current_asmdata.CurrAsmList,left.location,left.resultdef,true);
+ hlcg.location_force_fpureg(current_asmdata.CurrAsmList,right.location,right.resultdef,true);
location_reset(location,LOC_FPUREGISTER,def_cgsize(resultdef));
location.register:=cg.getfpuregister(current_asmdata.CurrAsmList,location.size);
@@ -249,7 +271,7 @@ interface
swapleftright;
location_reset(location,LOC_FLAGS,OS_NO);
- location.resflags:=getresflags(true);
+ location.resflags:=getresflags(false);
case current_settings.fputype of
fpu_fpa,
@@ -258,8 +280,8 @@ interface
begin
{ force fpureg as location, left right doesn't matter
as both will be in a fpureg }
- location_force_fpureg(current_asmdata.CurrAsmList,left.location,true);
- location_force_fpureg(current_asmdata.CurrAsmList,right.location,true);
+ hlcg.location_force_fpureg(current_asmdata.CurrAsmList,left.location,left.resultdef,true);
+ hlcg.location_force_fpureg(current_asmdata.CurrAsmList,right.location,right.resultdef,true);
cg.a_reg_alloc(current_asmdata.CurrAsmList,NR_DEFAULTFLAGS);
if nodetype in [equaln,unequaln] then
@@ -291,6 +313,7 @@ interface
left.location.register,right.location.register));
cg.a_reg_alloc(current_asmdata.CurrAsmList,NR_DEFAULTFLAGS);
current_asmdata.CurrAsmList.concat(taicpu.op_none(A_FMSTAT));
+ location.resflags:=GetFpuResFlags;
end;
fpu_fpv4_s16:
begin
@@ -311,9 +334,6 @@ interface
{ this case should be handled already by pass1 }
internalerror(2009112404);
end;
-
- location_reset(location,LOC_FLAGS,OS_NO);
- location.resflags:=getresflags(false);
end;
@@ -559,13 +579,13 @@ interface
procname:=procname+'_le';
gtn:
begin
- procname:=procname+'_le';
- notnode:=true;
+ procname:=procname+'_lt';
+ swapleftright;
end;
gten:
begin
- procname:=procname+'_lt';
- notnode:=true;
+ procname:=procname+'_le';
+ swapleftright;
end;
equaln:
procname:=procname+'_eq';
diff --git a/compiler/arm/narmcon.pas b/compiler/arm/narmcon.pas
index ba5db2c3a6..a9dc04cef7 100644
--- a/compiler/arm/narmcon.pas
+++ b/compiler/arm/narmcon.pas
@@ -77,8 +77,7 @@ interface
begin
current_procinfo.aktlocaldata.concat(Tai_real_32bit.Create(ts32real(value_real)));
{ range checking? }
- if ((cs_check_range in current_settings.localswitches) or
- (cs_check_overflow in current_settings.localswitches)) and
+ if floating_point_range_check_error and
(tai_real_32bit(current_procinfo.aktlocaldata.last).value=MathInf.Value) then
Message(parser_e_range_check_error);
end;
@@ -91,8 +90,7 @@ interface
current_procinfo.aktlocaldata.concat(Tai_real_64bit.Create(ts64real(value_real)));
{ range checking? }
- if ((cs_check_range in current_settings.localswitches) or
- (cs_check_overflow in current_settings.localswitches)) and
+ if floating_point_range_check_error and
(tai_real_64bit(current_procinfo.aktlocaldata.last).value=MathInf.Value) then
Message(parser_e_range_check_error);
end;
@@ -102,8 +100,7 @@ interface
current_procinfo.aktlocaldata.concat(Tai_real_80bit.Create(value_real,tfloatdef(resultdef).size));
{ range checking? }
- if ((cs_check_range in current_settings.localswitches) or
- (cs_check_overflow in current_settings.localswitches)) and
+ if floating_point_range_check_error and
(tai_real_80bit(current_procinfo.aktlocaldata.last).value=MathInf.Value) then
Message(parser_e_range_check_error);
end;
@@ -113,8 +110,7 @@ interface
current_procinfo.aktlocaldata.concat(Tai_real_128bit.Create(value_real));
{ range checking? }
- if ((cs_check_range in current_settings.localswitches) or
- (cs_check_overflow in current_settings.localswitches)) and
+ if floating_point_range_check_error and
(tai_real_128bit(current_procinfo.aktlocaldata.last).value=MathInf.Value) then
Message(parser_e_range_check_error);
end;
diff --git a/compiler/arm/narminl.pas b/compiler/arm/narminl.pas
index a540cd63f5..4971e3b3b7 100644
--- a/compiler/arm/narminl.pas
+++ b/compiler/arm/narminl.pas
@@ -60,7 +60,7 @@ implementation
uses
globtype,verbose,globals,
cpuinfo, defutil,symdef,aasmdata,aasmcpu,
- cgbase,cgutils,pass_2,
+ cgbase,cgutils,pass_1,pass_2,
cpubase,ncgutil,cgobj,cgcpu, hlcgobj;
{*****************************************************************************
@@ -75,7 +75,7 @@ implementation
fpu_fpa10,
fpu_fpa11:
begin
- location_force_fpureg(current_asmdata.CurrAsmList,left.location,true);
+ hlcg.location_force_fpureg(current_asmdata.CurrAsmList,left.location,left.resultdef,true);
location_copy(location,left.location);
if left.location.loc=LOC_CFPUREGISTER then
begin
@@ -96,6 +96,11 @@ implementation
location.loc := LOC_MMREGISTER;
end;
end;
+ fpu_soft:
+ begin
+ hlcg.location_force_reg(current_asmdata.CurrAsmList,left.location,left.resultdef,left.resultdef,false);
+ location_copy(location,left.location);
+ end
else
internalerror(2009111801);
end;
@@ -106,7 +111,11 @@ implementation
function tarminlinenode.first_abs_real : tnode;
begin
if (cs_fp_emulation in current_settings.moduleswitches) then
- result:=inherited first_abs_real
+ begin
+ firstpass(left);
+ expectloc:=LOC_REGISTER;
+ first_abs_real:=nil;
+ end
else
begin
case current_settings.fputype of
@@ -245,6 +254,13 @@ implementation
end;
fpu_fpv4_s16:
current_asmdata.CurrAsmList.Concat(setoppostfix(taicpu.op_reg_reg(A_VABS,location.register,left.location.register), PF_F32));
+ fpu_soft:
+ begin
+ if singleprec then
+ cg.a_op_const_reg(current_asmdata.CurrAsmList,OP_AND,OS_32,tcgint($7fffffff),location.register)
+ else
+ cg.a_op_const_reg(current_asmdata.CurrAsmList,OP_AND,OS_32,tcgint($7fffffff),location.registerhi);
+ end
else
internalerror(2009111402);
end;
diff --git a/compiler/arm/narmmat.pas b/compiler/arm/narmmat.pas
index 251989786a..a1f6991aab 100644
--- a/compiler/arm/narmmat.pas
+++ b/compiler/arm/narmmat.pas
@@ -356,6 +356,15 @@ implementation
procname: string[31];
fdef : tdef;
begin
+ if (current_settings.fputype=fpu_soft) and
+ (left.resultdef.typ=floatdef) then
+ begin
+ result:=nil;
+ firstpass(left);
+ expectloc:=LOC_REGISTER;
+ exit;
+ end;
+
if (current_settings.fputype<>fpu_fpv4_s16) or
(tfloatdef(resultdef).floattype=s32real) then
exit(inherited pass_1);
@@ -401,7 +410,7 @@ implementation
fpu_fpa10,
fpu_fpa11:
begin
- location_force_fpureg(current_asmdata.CurrAsmList,left.location,false);
+ hlcg.location_force_fpureg(current_asmdata.CurrAsmList,left.location,left.resultdef,false);
location:=left.location;
current_asmdata.CurrAsmList.concat(setoppostfix(taicpu.op_reg_reg_const(A_RSF,
location.register,left.location.register,0),
@@ -430,6 +439,19 @@ implementation
location.register:=cg.getmmregister(current_asmdata.CurrAsmList,location.size);
current_asmdata.CurrAsmList.concat(setoppostfix(taicpu.op_reg_reg(A_VNEG,
location.register,left.location.register), PF_F32));
+ end;
+ fpu_soft:
+ begin
+ hlcg.location_force_reg(current_asmdata.CurrAsmList,left.location,left.resultdef,left.resultdef,false);
+ location:=left.location;
+ case location.size of
+ OS_32:
+ cg.a_op_const_reg(current_asmdata.CurrAsmList,OP_XOR,OS_32,tcgint($80000000),location.register);
+ OS_64:
+ cg.a_op_const_reg(current_asmdata.CurrAsmList,OP_XOR,OS_32,tcgint($80000000),location.registerhi);
+ else
+ internalerror(2014033101);
+ end;
end
else
internalerror(2009112602);
diff --git a/compiler/arm/rgcpu.pas b/compiler/arm/rgcpu.pas
index bef409b654..08f17a409f 100644
--- a/compiler/arm/rgcpu.pas
+++ b/compiler/arm/rgcpu.pas
@@ -301,11 +301,8 @@ unit rgcpu;
(get_alias(getsupreg(oper[1]^.reg))<>orgreg) then
begin
{ str expects the register in oper[0] }
- oper[0]^.typ:=top_reg;
- oper[0]^.reg:=oper[1]^.reg;
- oper[1]^.typ:=top_ref;
- new(oper[1]^.ref);
- oper[1]^.ref^:=spilltemp;
+ instr.loadreg(0,oper[1]^.reg);
+ instr.loadref(1,spilltemp);
opcode:=A_STR;
result:=true;
end
@@ -313,9 +310,7 @@ unit rgcpu;
(get_alias(getsupreg(oper[1]^.reg))=orgreg) and
(get_alias(getsupreg(oper[0]^.reg))<>orgreg) then
begin
- oper[1]^.typ:=top_ref;
- new(oper[1]^.ref);
- oper[1]^.ref^:=spilltemp;
+ instr.loadref(1,spilltemp);
opcode:=A_LDR;
result:=true;
end;
diff --git a/compiler/arm/symcpu.pas b/compiler/arm/symcpu.pas
new file mode 100644
index 0000000000..97fc48ebaa
--- /dev/null
+++ b/compiler/arm/symcpu.pas
@@ -0,0 +1,215 @@
+{
+ Copyright (c) 2014 by Florian Klaempfl
+
+ Symbol table overrides for ARM
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+ ****************************************************************************
+}
+unit symcpu;
+
+{$i fpcdefs.inc}
+
+interface
+
+uses
+ symtype,symdef,symsym,globtype;
+
+type
+ { defs }
+ tcpufiledef = class(tfiledef)
+ end;
+ tcpufiledefclass = class of tcpufiledef;
+
+ tcpuvariantdef = class(tvariantdef)
+ end;
+ tcpuvariantdefclass = class of tcpuvariantdef;
+
+ tcpuformaldef = class(tformaldef)
+ end;
+ tcpuformaldefclass = class of tcpuformaldef;
+
+ tcpuforwarddef = class(tforwarddef)
+ end;
+ tcpuforwarddefclass = class of tcpuforwarddef;
+
+ tcpuundefineddef = class(tundefineddef)
+ end;
+ tcpuundefineddefclass = class of tcpuundefineddef;
+
+ tcpuerrordef = class(terrordef)
+ end;
+ tcpuerrordefclass = class of tcpuerrordef;
+
+ tcpupointerdef = class(tpointerdef)
+ end;
+ tcpupointerdefclass = class of tcpupointerdef;
+
+ tcpurecorddef = class(trecorddef)
+ end;
+ tcpurecorddefclass = class of tcpurecorddef;
+
+ tcpuimplementedinterface = class(timplementedinterface)
+ end;
+ tcpuimplementedinterfaceclass = class of tcpuimplementedinterface;
+
+ tcpuobjectdef = class(tobjectdef)
+ end;
+ tcpuobjectdefclass = class of tcpuobjectdef;
+
+ tcpuclassrefdef = class(tclassrefdef)
+ end;
+ tcpuclassrefdefclass = class of tcpuclassrefdef;
+
+ tcpuarraydef = class(tarraydef)
+ end;
+ tcpuarraydefclass = class of tcpuarraydef;
+
+ tcpuorddef = class(torddef)
+ end;
+ tcpuorddefclass = class of tcpuorddef;
+
+ tcpufloatdef = class(tfloatdef)
+ end;
+ tcpufloatdefclass = class of tcpufloatdef;
+
+ tcpuprocvardef = class(tprocvardef)
+ end;
+ tcpuprocvardefclass = class of tcpuprocvardef;
+
+ tcpuprocdef = class(tprocdef)
+ { the arm paramanager might need to know the total size of the stackframe
+ to avoid cyclic unit dependencies or global variables, this infomatation is
+ stored in total_stackframe_size }
+ total_stackframe_size : aint;
+ end;
+ tcpuprocdefclass = class of tcpuprocdef;
+
+ tcpustringdef = class(tstringdef)
+ end;
+ tcpustringdefclass = class of tcpustringdef;
+
+ tcpuenumdef = class(tenumdef)
+ end;
+ tcpuenumdefclass = class of tcpuenumdef;
+
+ tcpusetdef = class(tsetdef)
+ end;
+ tcpusetdefclass = class of tcpusetdef;
+
+ { syms }
+ tcpulabelsym = class(tlabelsym)
+ end;
+ tcpulabelsymclass = class of tcpulabelsym;
+
+ tcpuunitsym = class(tunitsym)
+ end;
+ tcpuunitsymclass = class of tcpuunitsym;
+
+ tcpunamespacesym = class(tnamespacesym)
+ end;
+ tcpunamespacesymclass = class of tcpunamespacesym;
+
+ tcpuprocsym = class(tprocsym)
+ end;
+ tcpuprocsymclass = class of tcpuprocsym;
+
+ tcputypesym = class(ttypesym)
+ end;
+ tcpuypesymclass = class of tcputypesym;
+
+ tcpufieldvarsym = class(tfieldvarsym)
+ end;
+ tcpufieldvarsymclass = class of tcpufieldvarsym;
+
+ tcpulocalvarsym = class(tlocalvarsym)
+ end;
+ tcpulocalvarsymclass = class of tcpulocalvarsym;
+
+ tcpuparavarsym = class(tparavarsym)
+ end;
+ tcpuparavarsymclass = class of tcpuparavarsym;
+
+ tcpustaticvarsym = class(tstaticvarsym)
+ end;
+ tcpustaticvarsymclass = class of tcpustaticvarsym;
+
+ tcpuabsolutevarsym = class(tabsolutevarsym)
+ end;
+ tcpuabsolutevarsymclass = class of tcpuabsolutevarsym;
+
+ tcpupropertysym = class(tpropertysym)
+ end;
+ tcpupropertysymclass = class of tcpupropertysym;
+
+ tcpuconstsym = class(tconstsym)
+ end;
+ tcpuconstsymclass = class of tcpuconstsym;
+
+ tcpuenumsym = class(tenumsym)
+ end;
+ tcpuenumsymclass = class of tcpuenumsym;
+
+ tcpusyssym = class(tsyssym)
+ end;
+ tcpusyssymclass = class of tcpusyssym;
+
+
+const
+ pbestrealtype : ^tdef = @s64floattype;
+
+
+implementation
+
+begin
+ { used tdef classes }
+ cfiledef:=tcpufiledef;
+ cvariantdef:=tcpuvariantdef;
+ cformaldef:=tcpuformaldef;
+ cforwarddef:=tcpuforwarddef;
+ cundefineddef:=tcpuundefineddef;
+ cerrordef:=tcpuerrordef;
+ cpointerdef:=tcpupointerdef;
+ crecorddef:=tcpurecorddef;
+ cimplementedinterface:=tcpuimplementedinterface;
+ cobjectdef:=tcpuobjectdef;
+ cclassrefdef:=tcpuclassrefdef;
+ carraydef:=tcpuarraydef;
+ corddef:=tcpuorddef;
+ cfloatdef:=tcpufloatdef;
+ cprocvardef:=tcpuprocvardef;
+ cprocdef:=tcpuprocdef;
+ cstringdef:=tcpustringdef;
+ cenumdef:=tcpuenumdef;
+ csetdef:=tcpusetdef;
+
+ { used tsym classes }
+ clabelsym:=tcpulabelsym;
+ cunitsym:=tcpuunitsym;
+ cnamespacesym:=tcpunamespacesym;
+ cprocsym:=tcpuprocsym;
+ ctypesym:=tcputypesym;
+ cfieldvarsym:=tcpufieldvarsym;
+ clocalvarsym:=tcpulocalvarsym;
+ cparavarsym:=tcpuparavarsym;
+ cstaticvarsym:=tcpustaticvarsym;
+ cabsolutevarsym:=tcpuabsolutevarsym;
+ cpropertysym:=tcpupropertysym;
+ cconstsym:=tcpuconstsym;
+ cenumsym:=tcpuenumsym;
+ csyssym:=tcpusyssym;
+end.
+
diff --git a/compiler/assemble.pas b/compiler/assemble.pas
index 76f854d94d..609877e342 100644
--- a/compiler/assemble.pas
+++ b/compiler/assemble.pas
@@ -32,9 +32,6 @@ interface
uses
-{$ifdef hasamiga}
- exec,
-{$endif}
SysUtils,
systems,globtype,globals,aasmbase,aasmtai,aasmdata,ogbase,finput;
@@ -376,7 +373,10 @@ Implementation
result:=true;
if (cs_asm_extern in current_settings.globalswitches) then
begin
- AsmRes.AddAsmCommand(command,para,name);
+ if SmartAsm then
+ AsmRes.AddAsmCommand(command,para,Name+'('+TosTr(SmartFilesCount)+')')
+ else
+ AsmRes.AddAsmCommand(command,para,name);
exit;
end;
try
@@ -623,15 +623,15 @@ Implementation
NextSmartName(Aplace);
{$ifdef hasamiga}
{ on Amiga/MorphOS try to redirect .s files to the T: assign, which is
- for temp files, and usually (default setting) located in the RAM: drive.
- This highly improves assembling speed for complex projects like the
+ for temp files, and usually (default setting) located in the RAM: drive.
+ This highly improves assembling speed for complex projects like the
compiler itself, especially on hardware with slow disk I/O.
- Consider this as a poor man's pipe on Amiga, because real pipe handling
+ Consider this as a poor man's pipe on Amiga, because real pipe handling
would be much more complex and error prone to implement. (KB) }
if (([cs_asm_extern,cs_asm_leave,cs_link_on_target] * current_settings.globalswitches) = []) then
begin
{ try to have an unique name for the .s file }
- tempFileName:=HexStr(FindTask(nil))+ExtractFileName(AsmFileName);
+ tempFileName:=HexStr(GetProcessID shr 4,7)+ExtractFileName(AsmFileName);
{$ifndef morphos}
{ old Amiga RAM: handler only allows filenames up to 30 char }
if Length(tempFileName) < 30 then
diff --git a/compiler/avr/cpuinfo.pas b/compiler/avr/cpuinfo.pas
index acb5fe92de..e15fadfc0f 100644
--- a/compiler/avr/cpuinfo.pas
+++ b/compiler/avr/cpuinfo.pas
@@ -100,6 +100,9 @@ Const
'LIBGCC'
);
+ { We know that there are fields after sramsize
+ but we don't care about this warning }
+ {$WARN 3177 OFF}
embedded_controllers : array [tcontrollertype] of tcontrollerdatatype =
((
controllertypestr:'';
diff --git a/compiler/avr/cpunode.pas b/compiler/avr/cpunode.pas
index 64090a192b..9a1af52634 100644
--- a/compiler/avr/cpunode.pas
+++ b/compiler/avr/cpunode.pas
@@ -36,7 +36,9 @@ unit cpunode;
}
,navradd
,navrmat
- ,navrcnv
+ ,navrcnv,
+ { symtable }
+ symcpu
;
diff --git a/compiler/avr/cpupara.pas b/compiler/avr/cpupara.pas
index c09fa7f405..3a92c9fe5f 100644
--- a/compiler/avr/cpupara.pas
+++ b/compiler/avr/cpupara.pas
@@ -394,7 +394,7 @@ unit cpupara;
end;
- { TODO : fix tcpuparamanager.get_funcretloc }
+ { TODO : fix tavrparamanager.get_funcretloc }
function tcpuparamanager.get_funcretloc(p : tabstractprocdef; side: tcallercallee; forcetempdef: tdef): tcgpara;
var
retcgsize : tcgsize;
diff --git a/compiler/avr/cpupi.pas b/compiler/avr/cpupi.pas
index e12c20b9ca..aeb648dc52 100644
--- a/compiler/avr/cpupi.pas
+++ b/compiler/avr/cpupi.pas
@@ -37,6 +37,7 @@ unit cpupi;
// procedure after_pass1;override;
procedure set_first_temp_offset;override;
function calc_stackframe_size:longint;override;
+ procedure postprocess_code;override;
end;
@@ -49,7 +50,8 @@ unit cpupi;
tgobj,
symconst,symsym,paramgr,
cgbase,
- cgobj;
+ cgobj,
+ aasmcpu;
procedure tavrprocinfo.set_first_temp_offset;
begin
@@ -67,6 +69,13 @@ unit cpupi;
end;
+ procedure tavrprocinfo.postprocess_code;
+ begin
+ { because of the limited branch distance of cond. branches, they must be replaced
+ sometimes by normal jmps and an inverse branch }
+ finalizeavrcode(aktproccode);
+ end;
+
begin
cprocinfo:=tavrprocinfo;
end.
diff --git a/compiler/avr/symcpu.pas b/compiler/avr/symcpu.pas
new file mode 100644
index 0000000000..0aa2548a99
--- /dev/null
+++ b/compiler/avr/symcpu.pas
@@ -0,0 +1,211 @@
+{
+ Copyright (c) 2014 by Florian Klaempfl
+
+ Symbol table overrides for AVR
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+ ****************************************************************************
+}
+unit symcpu;
+
+{$i fpcdefs.inc}
+
+interface
+
+uses
+ symtype,symdef,symsym;
+
+type
+ { defs }
+ tcpufiledef = class(tfiledef)
+ end;
+ tcpufiledefclass = class of tcpufiledef;
+
+ tcpuvariantdef = class(tvariantdef)
+ end;
+ tcpuvariantdefclass = class of tcpuvariantdef;
+
+ tcpuformaldef = class(tformaldef)
+ end;
+ tcpuformaldefclass = class of tcpuformaldef;
+
+ tcpuforwarddef = class(tforwarddef)
+ end;
+ tcpuforwarddefclass = class of tcpuforwarddef;
+
+ tcpuundefineddef = class(tundefineddef)
+ end;
+ tcpuundefineddefclass = class of tcpuundefineddef;
+
+ tcpuerrordef = class(terrordef)
+ end;
+ tcpuerrordefclass = class of tcpuerrordef;
+
+ tcpupointerdef = class(tpointerdef)
+ end;
+ tcpupointerdefclass = class of tcpupointerdef;
+
+ tcpurecorddef = class(trecorddef)
+ end;
+ tcpurecorddefclass = class of tcpurecorddef;
+
+ tcpuimplementedinterface = class(timplementedinterface)
+ end;
+ tcpuimplementedinterfaceclass = class of tcpuimplementedinterface;
+
+ tcpuobjectdef = class(tobjectdef)
+ end;
+ tcpuobjectdefclass = class of tcpuobjectdef;
+
+ tcpuclassrefdef = class(tclassrefdef)
+ end;
+ tcpuclassrefdefclass = class of tcpuclassrefdef;
+
+ tcpuarraydef = class(tarraydef)
+ end;
+ tcpuarraydefclass = class of tcpuarraydef;
+
+ tcpuorddef = class(torddef)
+ end;
+ tcpuorddefclass = class of tcpuorddef;
+
+ tcpufloatdef = class(tfloatdef)
+ end;
+ tcpufloatdefclass = class of tcpufloatdef;
+
+ tcpuprocvardef = class(tprocvardef)
+ end;
+ tcpuprocvardefclass = class of tcpuprocvardef;
+
+ tcpuprocdef = class(tprocdef)
+ end;
+ tcpuprocdefclass = class of tcpuprocdef;
+
+ tcpustringdef = class(tstringdef)
+ end;
+ tcpustringdefclass = class of tcpustringdef;
+
+ tcpuenumdef = class(tenumdef)
+ end;
+ tcpuenumdefclass = class of tcpuenumdef;
+
+ tcpusetdef = class(tsetdef)
+ end;
+ tcpusetdefclass = class of tcpusetdef;
+
+ { syms }
+ tcpulabelsym = class(tlabelsym)
+ end;
+ tcpulabelsymclass = class of tcpulabelsym;
+
+ tcpuunitsym = class(tunitsym)
+ end;
+ tcpuunitsymclass = class of tcpuunitsym;
+
+ tcpunamespacesym = class(tnamespacesym)
+ end;
+ tcpunamespacesymclass = class of tcpunamespacesym;
+
+ tcpuprocsym = class(tprocsym)
+ end;
+ tcpuprocsymclass = class of tcpuprocsym;
+
+ tcputypesym = class(ttypesym)
+ end;
+ tcpuypesymclass = class of tcputypesym;
+
+ tcpufieldvarsym = class(tfieldvarsym)
+ end;
+ tcpufieldvarsymclass = class of tcpufieldvarsym;
+
+ tcpulocalvarsym = class(tlocalvarsym)
+ end;
+ tcpulocalvarsymclass = class of tcpulocalvarsym;
+
+ tcpuparavarsym = class(tparavarsym)
+ end;
+ tcpuparavarsymclass = class of tcpuparavarsym;
+
+ tcpustaticvarsym = class(tstaticvarsym)
+ end;
+ tcpustaticvarsymclass = class of tcpustaticvarsym;
+
+ tcpuabsolutevarsym = class(tabsolutevarsym)
+ end;
+ tcpuabsolutevarsymclass = class of tcpuabsolutevarsym;
+
+ tcpupropertysym = class(tpropertysym)
+ end;
+ tcpupropertysymclass = class of tcpupropertysym;
+
+ tcpuconstsym = class(tconstsym)
+ end;
+ tcpuconstsymclass = class of tcpuconstsym;
+
+ tcpuenumsym = class(tenumsym)
+ end;
+ tcpuenumsymclass = class of tcpuenumsym;
+
+ tcpusyssym = class(tsyssym)
+ end;
+ tcpusyssymclass = class of tcpusyssym;
+
+
+const
+ pbestrealtype : ^tdef = @s64floattype;
+
+
+implementation
+
+begin
+ { used tdef classes }
+ cfiledef:=tcpufiledef;
+ cvariantdef:=tcpuvariantdef;
+ cformaldef:=tcpuformaldef;
+ cforwarddef:=tcpuforwarddef;
+ cundefineddef:=tcpuundefineddef;
+ cerrordef:=tcpuerrordef;
+ cpointerdef:=tcpupointerdef;
+ crecorddef:=tcpurecorddef;
+ cimplementedinterface:=tcpuimplementedinterface;
+ cobjectdef:=tcpuobjectdef;
+ cclassrefdef:=tcpuclassrefdef;
+ carraydef:=tcpuarraydef;
+ corddef:=tcpuorddef;
+ cfloatdef:=tcpufloatdef;
+ cprocvardef:=tcpuprocvardef;
+ cprocdef:=tcpuprocdef;
+ cstringdef:=tcpustringdef;
+ cenumdef:=tcpuenumdef;
+ csetdef:=tcpusetdef;
+
+ { used tsym classes }
+ clabelsym:=tcpulabelsym;
+ cunitsym:=tcpuunitsym;
+ cnamespacesym:=tcpunamespacesym;
+ cprocsym:=tcpuprocsym;
+ ctypesym:=tcputypesym;
+ cfieldvarsym:=tcpufieldvarsym;
+ clocalvarsym:=tcpulocalvarsym;
+ cparavarsym:=tcpuparavarsym;
+ cstaticvarsym:=tcpustaticvarsym;
+ cabsolutevarsym:=tcpuabsolutevarsym;
+ cpropertysym:=tcpupropertysym;
+ cconstsym:=tcpuconstsym;
+ cenumsym:=tcpuenumsym;
+ csyssym:=tcpusyssym;
+end.
+
diff --git a/compiler/cclasses.pas b/compiler/cclasses.pas
index a5b611ed53..0930634cb4 100644
--- a/compiler/cclasses.pas
+++ b/compiler/cclasses.pas
@@ -76,7 +76,7 @@ type
TListSortCompare = function (Item1, Item2: Pointer): Integer;
TListCallback = procedure(data,arg:pointer) of object;
TListStaticCallback = procedure(data,arg:pointer);
-
+ TDynStringArray = Array Of String;
TFPList = class(TObject)
private
FList: PPointerList;
@@ -589,12 +589,74 @@ type
function FPHash(const s:shortstring):LongWord; inline;
function FPHash(const a:ansistring):LongWord; inline;
+ function ExtractStrings(Separators, WhiteSpace: TSysCharSet; Content: PChar; var Strings: TDynStringArray; AddEmptyStrings : Boolean = False): Integer;
implementation
{*****************************************************************************
Memory debug
*****************************************************************************}
+ function ExtractStrings(Separators, WhiteSpace: TSysCharSet; Content: PChar; var Strings: TDynStringArray; AddEmptyStrings : Boolean = False): Integer;
+ var
+ b, c : pchar;
+
+ procedure SkipWhitespace;
+ begin
+ while (c^ in Whitespace) do
+ inc (c);
+ end;
+
+ procedure AddString;
+ var
+ l : integer;
+ s : string;
+ begin
+ l := c-b;
+ if (l > 0) or AddEmptyStrings then
+ begin
+ setlength(s, l);
+ if l>0 then
+ move (b^, s[1],l*SizeOf(char));
+ l:=length(Strings);
+ setlength(Strings,l+1);
+ Strings[l]:=S;
+ inc (result);
+ end;
+ end;
+
+ var
+ quoted : char;
+ begin
+ result := 0;
+ c := Content;
+ Quoted := #0;
+ Separators := Separators + [#13, #10] - ['''','"'];
+ SkipWhitespace;
+ b := c;
+ while (c^ <> #0) do
+ begin
+ if (c^ = Quoted) then
+ begin
+ if ((c+1)^ = Quoted) then
+ inc (c)
+ else
+ Quoted := #0
+ end
+ else if (Quoted = #0) and (c^ in ['''','"']) then
+ Quoted := c^;
+ if (Quoted = #0) and (c^ in Separators) then
+ begin
+ AddString;
+ inc (c);
+ SkipWhitespace;
+ b := c;
+ end
+ else
+ inc (c);
+ end;
+ if (c <> b) then
+ AddString;
+ end;
constructor tmemdebug.create(const s:string);
begin
diff --git a/compiler/cg64f32.pas b/compiler/cg64f32.pas
index 0de10a87a3..fde37bc256 100644
--- a/compiler/cg64f32.pas
+++ b/compiler/cg64f32.pas
@@ -92,8 +92,6 @@ unit cg64f32;
procedure g_rangecheck64(list: TAsmList; const l:tlocation;fromdef,todef: tdef); override;
end;
- {# Creates a tregister64 record from 2 32 Bit registers. }
- function joinreg64(reglo,reghi : tregister) : tregister64;
implementation
@@ -107,13 +105,6 @@ unit cg64f32;
Helpers
****************************************************************************}
- function joinreg64(reglo,reghi : tregister) : tregister64;
- begin
- result.reglo:=reglo;
- result.reghi:=reghi;
- end;
-
-
procedure swap64(var q : int64);
begin
q:=(int64(lo(q)) shl 32) or hi(q);
@@ -872,7 +863,7 @@ unit cg64f32;
{ if the high dword = 0, the low dword can be considered a }
{ simple cardinal }
cg.a_label(list,poslabel);
- hdef:=torddef.create(u32bit,0,$ffffffff);
+ hdef:=corddef.create(u32bit,0,$ffffffff);
location_copy(temploc,l);
temploc.size:=OS_32;
@@ -912,7 +903,7 @@ unit cg64f32;
{ if we get here, the 64bit value lies between }
{ longint($80000000) and -1 (JM) }
cg.a_label(list,neglabel);
- hdef:=torddef.create(s32bit,int64(longint($80000000)),int64(-1));
+ hdef:=corddef.create(s32bit,int64(longint($80000000)),int64(-1));
location_copy(temploc,l);
temploc.size:=OS_32;
hlcg.g_rangecheck(list,temploc,hdef,todef);
diff --git a/compiler/cgbase.pas b/compiler/cgbase.pas
index 5095d631d1..5d20f4e65f 100644
--- a/compiler/cgbase.pas
+++ b/compiler/cgbase.pas
@@ -99,8 +99,6 @@ interface
{$ENDIF}
{$IFDEF i8086}
,addr_dgroup // the data segment group
- ,addr_far // used for emitting 'call/jmp far label' instructions
- ,addr_far_ref // used for emitting 'call far [reference]' instructions
,addr_seg // used for getting the segment of an object, e.g. 'mov ax, SEG symbol'
{$ENDIF}
);
@@ -378,6 +376,8 @@ interface
function int_cgsize(const a: tcgint): tcgsize;{$ifdef USEINLINE}inline;{$endif}
function int_float_cgsize(const a: tcgint): tcgsize;
+ function tcgsize2str(cgsize: tcgsize):string;
+
{ return the inverse condition of opcmp }
function inverse_opcmp(opcmp: topcmp): topcmp;{$ifdef USEINLINE}inline;{$endif}
@@ -672,6 +672,12 @@ implementation
end;
+ function tcgsize2str(cgsize: tcgsize):string;
+ begin
+ Str(cgsize, Result);
+ end;
+
+
function inverse_opcmp(opcmp: topcmp): topcmp;{$ifdef USEINLINE}inline;{$endif}
const
list: array[TOpCmp] of TOpCmp =
diff --git a/compiler/cgobj.pas b/compiler/cgobj.pas
index f2d394cef4..5158203c0b 100644
--- a/compiler/cgobj.pas
+++ b/compiler/cgobj.pas
@@ -559,6 +559,9 @@ unit cgobj;
{ override to catch 64bit rangechecks }
procedure g_rangecheck64(list: TAsmList; const l:tlocation; fromdef,todef: tdef);virtual;abstract;
end;
+
+ { Creates a tregister64 record from 2 32 Bit registers. }
+ function joinreg64(reglo,reghi : tregister) : tregister64;
{$endif cpu64bitalu}
var
@@ -951,7 +954,7 @@ implementation
{ we're at the end of the data, and it can be loaded into
the current location's register with a single regular
load }
- else if (sizeleft in [1,2{$ifndef cpu16bitalu},4{$endif}{$ifdef cpu64bitalu},8{$endif}]) then
+ else if sizeleft in [1,2,4,8] then
begin
a_load_ref_reg(list,int_cgsize(sizeleft),location^.size,tmpref,location^.register);
if location^.shiftval<0 then
@@ -2510,6 +2513,13 @@ implementation
*****************************************************************************}
{$ifndef cpu64bitalu}
+ function joinreg64(reglo,reghi : tregister) : tregister64;
+ begin
+ result.reglo:=reglo;
+ result.reghi:=reghi;
+ end;
+
+
procedure tcg64.a_op64_const_reg_reg(list: TAsmList;op:TOpCG;size : tcgsize;value : int64; regsrc,regdst : tregister64);
begin
a_load64_reg_reg(list,regsrc,regdst);
diff --git a/compiler/cgutils.pas b/compiler/cgutils.pas
index 8ab53ab78f..ac913fafa0 100644
--- a/compiler/cgutils.pas
+++ b/compiler/cgutils.pas
@@ -43,9 +43,6 @@ unit cgutils;
{ Set type definition for cpuregisters }
tcpuregisterset = set of 0..maxcpuregister;
-{$ifdef jvm}
- tarrayreftype = (art_none,art_indexreg,art_indexref,art_indexconst);
-{$endif jvm}
{ reference record, reordered for best alignment }
preference = ^treference;
treference = record
diff --git a/compiler/compinnr.inc b/compiler/compinnr.inc
index 0d70d45676..e6059fb540 100644
--- a/compiler/compinnr.inc
+++ b/compiler/compinnr.inc
@@ -115,6 +115,10 @@ const
in_arctan_real = 130;
in_ln_real = 131;
in_sin_real = 132;
+ in_fma_single = 133;
+ in_fma_double = 134;
+ in_fma_extended = 135;
+ in_fma_float128 = 136;
{ MMX functions }
{ these contants are used by the mmx unit }
diff --git a/compiler/dbgbase.pas b/compiler/dbgbase.pas
index 86d43adcae..aee90d1f88 100644
--- a/compiler/dbgbase.pas
+++ b/compiler/dbgbase.pas
@@ -527,7 +527,11 @@ implementation
begin
sym:=tsym(st.SymList[i]);
if (sym.visibility<>vis_hidden) and
- (not sym.isdbgwritten) then
+ (not sym.isdbgwritten) and
+ { avoid all generic symbols }
+ not (sp_generic_dummy in sym.symoptions) and
+ not ((sym.typ=typesym) and assigned(ttypesym(sym).typedef) and
+ (df_generic in ttypesym(sym).typedef.defoptions)) then
appendsym(list,sym);
end;
case st.symtabletype of
diff --git a/compiler/dbgstabs.pas b/compiler/dbgstabs.pas
index 71de94255d..d2c5c48b74 100644
--- a/compiler/dbgstabs.pas
+++ b/compiler/dbgstabs.pas
@@ -76,6 +76,7 @@ interface
global_stab_number : word;
vardatadef: trecorddef;
tagtypeprefix: ansistring;
+ function use_tag_prefix(def : tdef) : boolean;
{ tsym writing }
function sym_var_value(const s:string;arg:pointer):string;
function sym_stabstr_evaluate(sym:tsym;const s:string;const vars:array of string):ansistring;
@@ -187,6 +188,8 @@ implementation
result := Sym.Name
else
result := Sym.RealName;
+ if (Sym.typ=typesym) and (ttypesym(Sym).Fprettyname<>'') then
+ result:=ttypesym(Sym).FPrettyName;
if target_asm.dollarsign<>'$' then
result:=ReplaceForbiddenAsmSymbolChars(result);
end;
@@ -549,6 +552,16 @@ implementation
appenddef(TAsmList(arg),tfieldvarsym(p).vardef);
end;
+ function TDebugInfoStabs.use_tag_prefix(def : tdef) : boolean;
+ begin
+ { stringdefs are not all considered as 'taggable',
+ because ansi, unicode and wide strings are
+ just associated to pointer types }
+ use_tag_prefix:=(def.typ in tagtypes) and
+ ((def.typ<>stringdef) or
+ (tstringdef(tdef).stringtype in [st_shortstring,st_longstring]));
+ end;
+
procedure TDebugInfoStabs.write_def_stabstr(list:TAsmList;def:tdef;const ss:ansistring);
var
@@ -557,7 +570,7 @@ implementation
st : ansistring;
begin
{ type prefix }
- if def.typ in tagtypes then
+ if use_tag_prefix(def) then
stabchar := tagtypeprefix
else
stabchar := 't';
@@ -1583,7 +1596,7 @@ implementation
if target_dbg.id=dbg_stabs then
st:='s'''+backspace_quote(octal_quote(strpas(pchar(sym.value.valueptr)),[#0..#9,#11,#12,#14..#31,'''']),['"','\',#10,#13])+''''
else
- st:='s'''+stabx_quote_const(octal_quote(strpas(pchar(sym.value.valueptr)),[#0..#9,#11,#12,#14..#31,'''']))
+ st:='s'''+stabx_quote_const(octal_quote(strpas(pchar(sym.value.valueptr)),[#0..#9,#11,#12,#14..#31,'''']))+''''
else
st:='<constant string too long>';
end;
diff --git a/compiler/dbgstabx.pas b/compiler/dbgstabx.pas
index 67a93c8bbd..17b41b6e86 100644
--- a/compiler/dbgstabx.pas
+++ b/compiler/dbgstabx.pas
@@ -132,7 +132,7 @@ implementation
st : ansistring;
begin
{ type prefix }
- if def.typ in tagtypes then
+ if use_tag_prefix(def) then
stabchar := tagtypeprefix
else
stabchar := 't';
@@ -300,7 +300,7 @@ implementation
hp, inclinsertpos, last : tai;
infile : tinputfile;
i,
- linenr,
+ linenr, stabx_func_level,
nolineinfolevel: longint;
nextlineisfunstart: boolean;
begin
@@ -312,6 +312,7 @@ implementation
hp:=Tai(list.first);
nextlineisfunstart:=false;
nolineinfolevel:=0;
+ stabx_func_level:=0;
last:=nil;
while assigned(hp) do
begin
@@ -327,7 +328,11 @@ implementation
if tai_symbol_end(hp).sym.typ = AT_FUNCTION then
begin
{ end of function }
- list.insertbefore(Tai_stab.Create_str(stabx_ef,tostr(currfileinfo.line)),hp);
+ if stabx_func_level > 0 then
+ begin
+ list.insertbefore(Tai_stab.Create_str(stabx_ef,tostr(currfileinfo.line)),hp);
+ dec(stabx_func_level);
+ end;
end;
ait_marker :
begin
@@ -381,6 +386,7 @@ implementation
may have been created in another file in case the body
is completely declared in an include file }
list.insertbefore(Tai_stab.Create_str(stabx_bf,tostr(currfileinfo.line)),hp);
+ inc(stabx_func_level);
{ -1 to avoid outputting a relative line 0 in the
function, because that means something different }
dec(curfunstartfileinfo.line);
@@ -389,6 +395,13 @@ implementation
end;
+ { implicit functions have no file information }
+ if nextlineisfunstart then
+ begin
+ list.insertbefore(Tai_stab.Create_str(stabx_bf,tostr(currfileinfo.line)),hp);
+ inc(stabx_func_level);
+ nextlineisfunstart:=false;
+ end;
if nolineinfolevel=0 then
begin
{ line changed ? }
diff --git a/compiler/defcmp.pas b/compiler/defcmp.pas
index 20206d281d..b776a70449 100644
--- a/compiler/defcmp.pas
+++ b/compiler/defcmp.pas
@@ -169,7 +169,7 @@ implementation
uses
verbose,systems,constexp,
- symtable,symsym,
+ symtable,symsym,symcpu,
defutil,symutil;
@@ -1302,7 +1302,7 @@ implementation
begin
{$ifdef x86}
{ check for far pointers }
- if (tpointerdef(def_from).x86pointertyp<>tpointerdef(def_to).x86pointertyp) then
+ if (tcpupointerdef(def_from).x86pointertyp<>tcpupointerdef(def_to).x86pointertyp) then
begin
if fromtreetype=niln then
eq:=te_equal
diff --git a/compiler/defutil.pas b/compiler/defutil.pas
index 714ecc4809..11fbfc6e32 100644
--- a/compiler/defutil.pas
+++ b/compiler/defutil.pas
@@ -228,6 +228,9 @@ interface
{# Returns true, if definition is a "real" real (i.e. single/double/extended) }
function is_real(def : tdef) : boolean;
+ {# Returns true for single,double,extended and cextended }
+ function is_real_or_cextended(def : tdef) : boolean;
+
{ true, if def is a 8 bit int type }
function is_8bitint(def : tdef) : boolean;
@@ -339,7 +342,7 @@ interface
implementation
uses
- verbose,cutils;
+ verbose,cutils,symcpu;
{ returns true, if def uses FPU }
function is_fpu(def : tdef) : boolean;
@@ -395,6 +398,13 @@ implementation
end;
+ function is_real_or_cextended(def: tdef): boolean;
+ begin
+ result:=(def.typ=floatdef) and
+ (tfloatdef(def).floattype in [s32real,s64real,s80real,sc80real]);
+ end;
+
+
function range_to_basetype(l,h:TConstExprInt):tordtype;
begin
{ prefer signed over unsigned }
@@ -1201,12 +1211,11 @@ implementation
result:=tcgsize(ord(result)+(ord(OS_S8)-ord(OS_8)));
end;
classrefdef,
- pointerdef,
- formaldef:
+ pointerdef:
begin
{$ifdef x86}
if (def.typ=pointerdef) and
- (tpointerdef(def).x86pointertyp in [x86pt_far,x86pt_huge]) then
+ (tcpupointerdef(def).x86pointertyp in [x86pt_far,x86pt_huge]) then
begin
{$if defined(i8086)}
result := OS_32;
@@ -1218,24 +1227,16 @@ implementation
end
else
{$endif x86}
- result := OS_ADDR;
+ result := int_cgsize(def.size);
end;
+ formaldef:
+ result := int_cgsize(voidpointertype.size);
procvardef:
result:=int_cgsize(def.size);
stringdef :
- begin
- if is_ansistring(def) or is_wide_or_unicode_string(def) then
- result := OS_ADDR
- else
- result:=int_cgsize(def.size);
- end;
+ result:=int_cgsize(def.size);
objectdef :
- begin
- if is_implicit_pointer_object_type(def) then
- result := OS_ADDR
- else
- result:=int_cgsize(def.size);
- end;
+ result:=int_cgsize(def.size);
floatdef:
if cs_fp_emulation in current_settings.moduleswitches then
result:=int_cgsize(def.size)
@@ -1245,15 +1246,10 @@ implementation
result:=int_cgsize(def.size);
arraydef :
begin
- if not is_special_array(def) then
+ if is_dynamic_array(def) or not is_special_array(def) then
result := int_cgsize(def.size)
else
- begin
- if is_dynamic_array(def) then
- result := OS_ADDR
- else
- result := OS_NO;
- end;
+ result := OS_NO;
end;
else
begin
@@ -1441,13 +1437,13 @@ implementation
{ true if p is a far pointer def }
function is_farpointer(p : tdef) : boolean;
begin
- result:=(p.typ=pointerdef) and (tpointerdef(p).x86pointertyp=x86pt_far);
+ result:=(p.typ=pointerdef) and (tcpupointerdef(p).x86pointertyp=x86pt_far);
end;
{ true if p is a huge pointer def }
function is_hugepointer(p : tdef) : boolean;
begin
- result:=(p.typ=pointerdef) and (tpointerdef(p).x86pointertyp=x86pt_huge);
+ result:=(p.typ=pointerdef) and (tcpupointerdef(p).x86pointertyp=x86pt_huge);
end;
{$endif i8086}
diff --git a/compiler/fpcdefs.inc b/compiler/fpcdefs.inc
index 6a64d280ad..9bb6c0afb3 100644
--- a/compiler/fpcdefs.inc
+++ b/compiler/fpcdefs.inc
@@ -126,7 +126,6 @@
{$define cpumm}
{$define cpurox}
{$define cpurefshaveindexreg}
- {$define fpc_compiler_has_fixup_jmps}
{$endif powerpc}
{$ifdef powerpc64}
@@ -137,7 +136,6 @@
{$define cpumm}
{$define cpurox}
{$define cpurefshaveindexreg}
- {$define fpc_compiler_has_fixup_jmps}
{$define cpuno32bitops}
{$endif powerpc64}
@@ -222,7 +220,6 @@
{$define cpurequiresproperalignment}
{ define cpumm}
{$define cpurefshaveindexreg}
- {$define fpc_compiler_has_fixup_jmps}
{$define SUPPORT_GET_FRAME}
{$define SUPPORT_SAFECALL}
{$endif mips}
diff --git a/compiler/fppu.pas b/compiler/fppu.pas
index ffe0c3ccc6..82638fdb01 100644
--- a/compiler/fppu.pas
+++ b/compiler/fppu.pas
@@ -108,7 +108,7 @@ interface
implementation
uses
- SysUtils,strutils,
+ SysUtils,
cfileutl,
systems,version,
symtable, symsym,
@@ -256,6 +256,14 @@ var
Message(unit_u_ppu_invalid_memory_model,@queuecomment);
exit;
end;
+ if ((ppufile.header.flags and uf_i8086_cs_equals_ds)<>0) xor
+ (current_settings.x86memorymodel=mm_tiny) then
+ begin
+ ppufile.free;
+ ppufile:=nil;
+ Message(unit_u_ppu_invalid_memory_model,@queuecomment);
+ exit;
+ end;
{$endif i8086}
{$ifdef cpufpemu}
{ check if floating point emulation is on?
@@ -1095,6 +1103,8 @@ var
flags:=flags or uf_i8086_far_data;
if current_settings.x86memorymodel=mm_huge then
flags:=flags or uf_i8086_huge_data;
+ if current_settings.x86memorymodel=mm_tiny then
+ flags:=flags or uf_i8086_cs_equals_ds;
{$endif i8086}
{$ifdef cpufpemu}
if (cs_fp_emulation in current_settings.moduleswitches) then
diff --git a/compiler/generic/symcpu.pas b/compiler/generic/symcpu.pas
new file mode 100644
index 0000000000..11624c96db
--- /dev/null
+++ b/compiler/generic/symcpu.pas
@@ -0,0 +1,211 @@
+{
+ Copyright (c) 2014 by Florian Klaempfl
+
+ Symbol table overrides for <generic>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+ ****************************************************************************
+}
+unit symcpu;
+
+{$i fpcdefs.inc}
+
+interface
+
+uses
+ symtype,symdef,symsym;
+
+type
+ { defs }
+ tcpufiledef = class(tfiledef)
+ end;
+ tcpufiledefclass = class of tcpufiledef;
+
+ tcpuvariantdef = class(tvariantdef)
+ end;
+ tcpuvariantdefclass = class of tcpuvariantdef;
+
+ tcpuformaldef = class(tformaldef)
+ end;
+ tcpuformaldefclass = class of tcpuformaldef;
+
+ tcpuforwarddef = class(tforwarddef)
+ end;
+ tcpuforwarddefclass = class of tcpuforwarddef;
+
+ tcpuundefineddef = class(tundefineddef)
+ end;
+ tcpuundefineddefclass = class of tcpuundefineddef;
+
+ tcpuerrordef = class(terrordef)
+ end;
+ tcpuerrordefclass = class of tcpuerrordef;
+
+ tcpupointerdef = class(tpointerdef)
+ end;
+ tcpupointerdefclass = class of tcpupointerdef;
+
+ tcpurecorddef = class(trecorddef)
+ end;
+ tcpurecorddefclass = class of tcpurecorddef;
+
+ tcpuimplementedinterface = class(timplementedinterface)
+ end;
+ tcpuimplementedinterfaceclass = class of tcpuimplementedinterface;
+
+ tcpuobjectdef = class(tobjectdef)
+ end;
+ tcpuobjectdefclass = class of tcpuobjectdef;
+
+ tcpuclassrefdef = class(tclassrefdef)
+ end;
+ tcpuclassrefdefclass = class of tcpuclassrefdef;
+
+ tcpuarraydef = class(tarraydef)
+ end;
+ tcpuarraydefclass = class of tcpuarraydef;
+
+ tcpuorddef = class(torddef)
+ end;
+ tcpuorddefclass = class of tcpuorddef;
+
+ tcpufloatdef = class(tfloatdef)
+ end;
+ tcpufloatdefclass = class of tcpufloatdef;
+
+ tcpuprocvardef = class(tprocvardef)
+ end;
+ tcpuprocvardefclass = class of tcpuprocvardef;
+
+ tcpuprocdef = class(tprocdef)
+ end;
+ tcpuprocdefclass = class of tcpuprocdef;
+
+ tcpustringdef = class(tstringdef)
+ end;
+ tcpustringdefclass = class of tcpustringdef;
+
+ tcpuenumdef = class(tenumdef)
+ end;
+ tcpuenumdefclass = class of tcpuenumdef;
+
+ tcpusetdef = class(tsetdef)
+ end;
+ tcpusetdefclass = class of tcpusetdef;
+
+ { syms }
+ tcpulabelsym = class(tlabelsym)
+ end;
+ tcpulabelsymclass = class of tcpulabelsym;
+
+ tcpuunitsym = class(tunitsym)
+ end;
+ tcpuunitsymclass = class of tcpuunitsym;
+
+ tcpunamespacesym = class(tnamespacesym)
+ end;
+ tcpunamespacesymclass = class of tcpunamespacesym;
+
+ tcpuprocsym = class(tprocsym)
+ end;
+ tcpuprocsymclass = class of tcpuprocsym;
+
+ tcputypesym = class(ttypesym)
+ end;
+ tcpuypesymclass = class of tcputypesym;
+
+ tcpufieldvarsym = class(tfieldvarsym)
+ end;
+ tcpufieldvarsymclass = class of tcpufieldvarsym;
+
+ tcpulocalvarsym = class(tlocalvarsym)
+ end;
+ tcpulocalvarsymclass = class of tcpulocalvarsym;
+
+ tcpuparavarsym = class(tparavarsym)
+ end;
+ tcpuparavarsymclass = class of tcpuparavarsym;
+
+ tcpustaticvarsym = class(tstaticvarsym)
+ end;
+ tcpustaticvarsymclass = class of tcpustaticvarsym;
+
+ tcpuabsolutevarsym = class(tabsolutevarsym)
+ end;
+ tcpuabsolutevarsymclass = class of tcpuabsolutevarsym;
+
+ tcpupropertysym = class(tpropertysym)
+ end;
+ tcpupropertysymclass = class of tcpupropertysym;
+
+ tcpuconstsym = class(tconstsym)
+ end;
+ tcpuconstsymclass = class of tcpuconstsym;
+
+ tcpuenumsym = class(tenumsym)
+ end;
+ tcpuenumsymclass = class of tcpuenumsym;
+
+ tcpusyssym = class(tsyssym)
+ end;
+ tcpusyssymclass = class of tcpusyssym;
+
+
+const
+ pbestrealtype : ^tdef = @<somestandardfloattype>;
+
+
+implementation
+
+begin
+ { used tdef classes }
+ cfiledef:=tcpufiledef;
+ cvariantdef:=tcpuvariantdef;
+ cformaldef:=tcpuformaldef;
+ cforwarddef:=tcpuforwarddef;
+ cundefineddef:=tcpuundefineddef;
+ cerrordef:=tcpuerrordef;
+ cpointerdef:=tcpupointerdef;
+ crecorddef:=tcpurecorddef;
+ cimplementedinterface:=tcpuimplementedinterface;
+ cobjectdef:=tcpuobjectdef;
+ cclassrefdef:=tcpuclassrefdef;
+ carraydef:=tcpuarraydef;
+ corddef:=tcpuorddef;
+ cfloatdef:=tcpufloatdef;
+ cprocvardef:=tcpuprocvardef;
+ cprocdef:=tcpuprocdef;
+ cstringdef:=tcpustringdef;
+ cenumdef:=tcpuenumdef;
+ csetdef:=tcpusetdef;
+
+ { used tsym classes }
+ clabelsym:=tcpulabelsym;
+ cunitsym:=tcpuunitsym;
+ cnamespacesym:=tcpunamespacesym;
+ cprocsym:=tcpuprocsym;
+ ctypesym:=tcputypesym;
+ cfieldvarsym:=tcpufieldvarsym;
+ clocalvarsym:=tcpulocalvarsym;
+ cparavarsym:=tcpuparavarsym;
+ cstaticvarsym:=tcpustaticvarsym;
+ cabsolutevarsym:=tcpuabsolutevarsym;
+ cpropertysym:=tcpupropertysym;
+ cconstsym:=tcpuconstsym;
+ cenumsym:=tcpuenumsym;
+ csyssym:=tcpusyssym;
+end.
+
diff --git a/compiler/globals.pas b/compiler/globals.pas
index 9977440d32..fef114e2ac 100644
--- a/compiler/globals.pas
+++ b/compiler/globals.pas
@@ -163,9 +163,9 @@ interface
{$endif defined(ARM)}
{ CPU targets with microcontroller support can add a controller specific unit }
-{$if defined(ARM) or defined(AVR)}
+{$if defined(ARM) or defined(AVR) or defined(MIPSEL)}
controllertype : tcontrollertype;
-{$endif defined(ARM) or defined(AVR)}
+{$endif defined(ARM) or defined(AVR) or defined(MIPSEL)}
{ WARNING: this pointer cannot be written as such in record token }
pmessage : pmessagestaterecord;
end;
@@ -402,7 +402,7 @@ interface
globalswitches : [cs_check_unit_name,cs_link_static];
targetswitches : [];
moduleswitches : [cs_extsyntax,cs_implicit_exceptions];
- localswitches : [cs_check_io,cs_typed_const_writable,cs_pointermath];
+ localswitches : [cs_check_io,cs_typed_const_writable,cs_pointermath{$ifdef i8086},cs_force_far_calls{$endif}];
modeswitches : fpcmodeswitches;
optimizerswitches : [];
genwpoptimizerswitches : [];
@@ -510,9 +510,9 @@ interface
{$if defined(ARM)}
instructionset : is_arm;
{$endif defined(ARM)}
-{$if defined(ARM) or defined(AVR)}
+{$if defined(ARM) or defined(AVR) or defined(MIPSEL)}
controllertype : ct_none;
-{$endif defined(ARM) or defined(AVR)}
+{$endif defined(ARM) or defined(AVR) or defined(MIPSEL)}
pmessage : nil;
);
@@ -544,9 +544,9 @@ interface
function Setoptimizecputype(const s:string;var a:tcputype):boolean;
function Setcputype(const s:string;var a:tsettings):boolean;
function SetFpuType(const s:string;var a:tfputype):boolean;
-{$if defined(arm) or defined(avr)}
+{$if defined(arm) or defined(avr) or defined(mipsel)}
function SetControllerType(const s:string;var a:tcontrollertype):boolean;
-{$endif defined(arm) or defined(avr)}
+{$endif defined(arm) or defined(avr) or defined(mipsel)}
function IncludeFeature(const s : string) : boolean;
function SetMinFPConstPrec(const s: string; var a: tfloattype) : boolean;
@@ -1185,7 +1185,7 @@ implementation
end;
-{$if defined(arm) or defined(avr)}
+{$if defined(arm) or defined(avr) or defined(mipsel)}
function SetControllerType(const s:string;var a:tcontrollertype):boolean;
var
t : tcontrollertype;
@@ -1201,7 +1201,7 @@ implementation
break;
end;
end;
-{$endif defined(arm) or defined(avr)}
+{$endif defined(arm) or defined(avr) or defined(mipsel)}
function IncludeFeature(const s : string) : boolean;
diff --git a/compiler/globtype.pas b/compiler/globtype.pas
index 7daa06cc7b..58b52b36a5 100644
--- a/compiler/globtype.pas
+++ b/compiler/globtype.pas
@@ -143,7 +143,9 @@ interface
cs_external_var, cs_externally_visible,
{ jvm specific }
cs_check_var_copyout,
- cs_zerobasedstrings
+ cs_zerobasedstrings,
+ { i8086 specific }
+ cs_force_far_calls
);
tlocalswitches = set of tlocalswitch;
@@ -162,7 +164,9 @@ interface
{ browser switches are back }
cs_browser,cs_local_browser,
{ target specific }
- cs_executable_stack
+ cs_executable_stack,
+ { i8086 specific }
+ cs_huge_code
);
tmoduleswitches = set of tmoduleswitch;
@@ -253,7 +257,8 @@ interface
f_heap,f_init_final,f_rtti,f_classes,f_exceptions,f_exitcode,
f_ansistrings,f_widestrings,f_textio,f_consoleio,f_fileio,
f_random,f_variants,f_objects,f_dynarrays,f_threading,f_commandargs,
- f_processes,f_stackcheck,f_dynlibs,f_softfpu,f_objectivec1,f_resources
+ f_processes,f_stackcheck,f_dynlibs,f_softfpu,f_objectivec1,f_resources,
+ f_unicodestring
);
tfeatures = set of tfeature;
@@ -276,7 +281,8 @@ interface
{ compiler checks for empty procedures/methods and removes calls to them if possible }
cs_opt_remove_emtpy_proc,
cs_opt_constant_propagate,
- cs_opt_dead_store_eliminate
+ cs_opt_dead_store_eliminate,
+ cs_opt_forcenostackframe
);
toptimizerswitches = set of toptimizerswitch;
@@ -288,10 +294,10 @@ interface
twpoptimizerswitches = set of twpoptimizerswitch;
type
- { Used by ARM / AVR to differentiate between specific microcontrollers }
+ { Used by ARM / AVR / MIPSEL to differentiate between specific microcontrollers }
tcontrollerdatatype = record
controllertypestr, controllerunitstr: string[20];
- flashbase, flashsize, srambase, sramsize, eeprombase, eepromsize: dword;
+ flashbase, flashsize, srambase, sramsize, eeprombase, eepromsize, bootbase, bootsize: dword;
end;
ttargetswitchinfo = record
@@ -304,14 +310,14 @@ interface
end;
const
- OptimizerSwitchStr : array[toptimizerswitch] of string[16] = ('',
+ OptimizerSwitchStr : array[toptimizerswitch] of string[17] = ('',
'LEVEL1','LEVEL2','LEVEL3',
'REGVAR','UNCERTAIN','SIZE','STACKFRAME',
'PEEPHOLE','ASMCSE','LOOPUNROLL','TAILREC','CSE',
'DFA','STRENGTH','SCHEDULE','AUTOINLINE','USEEBP','USERBP',
'ORDERFIELDS','FASTMATH','DEADVALUES','REMOVEEMPTYPROCS',
'CONSTPROP',
- 'DEADSTORE'
+ 'DEADSTORE','FORCENOSTACKFRAME'
);
WPOptimizerSwitchStr : array [twpoptimizerswitch] of string[14] = (
'DEVIRTCALLS','OPTVMTS','SYMBOLLIVENESS'
@@ -334,7 +340,7 @@ interface
);
{ switches being applied to all CPUs at the given level }
- genericlevel1optimizerswitches = [cs_opt_level1];
+ genericlevel1optimizerswitches = [cs_opt_level1,cs_opt_peephole];
genericlevel2optimizerswitches = [cs_opt_level2,cs_opt_remove_emtpy_proc];
genericlevel3optimizerswitches = [cs_opt_level3,cs_opt_constant_propagate,cs_opt_nodedfa];
genericlevel4optimizerswitches = [cs_opt_reorder_fields,cs_opt_dead_values,cs_opt_fastmath];
@@ -344,11 +350,12 @@ interface
}
WPOptimizationsNeedingAllUnitInfo = [cs_wpo_devirtualize_calls,cs_wpo_optimize_vmts];
- featurestr : array[tfeature] of string[12] = (
+ featurestr : array[tfeature] of string[14] = (
'HEAP','INITFINAL','RTTI','CLASSES','EXCEPTIONS','EXITCODE',
'ANSISTRINGS','WIDESTRINGS','TEXTIO','CONSOLEIO','FILEIO',
'RANDOM','VARIANTS','OBJECTS','DYNARRAYS','THREADING','COMMANDARGS',
- 'PROCESSES','STACKCHECK','DYNLIBS','SOFTFPU','OBJECTIVEC1','RESOURCES'
+ 'PROCESSES','STACKCHECK','DYNLIBS','SOFTFPU','OBJECTIVEC1','RESOURCES',
+ 'UNICODESTRINGS'
);
type
@@ -604,7 +611,9 @@ interface
{ subroutine has nested exit }
pi_has_nested_exit,
{ allocates memory on stack, so stack is unbalanced on exit }
- pi_has_stack_allocs
+ pi_has_stack_allocs,
+ { set if the stack frame of the procedure is estimated }
+ pi_estimatestacksize
);
tprocinfoflags=set of tprocinfoflag;
diff --git a/compiler/hlcg2ll.pas b/compiler/hlcg2ll.pas
index 5bf670f586..7951940185 100644
--- a/compiler/hlcg2ll.pas
+++ b/compiler/hlcg2ll.pas
@@ -310,7 +310,6 @@ unit hlcg2ll;
procedure g_local_unwind(list: TAsmList; l: TAsmLabel);override;
procedure location_force_reg(list:TAsmList;var l:tlocation;src_size,dst_size:tdef;maybeconst:boolean);override;
- procedure location_force_fpureg(list:TAsmList;var l: tlocation;size: tdef;maybeconst:boolean);override;
procedure location_force_mem(list:TAsmList;var l:tlocation;size:tdef);override;
procedure location_force_mmregscalar(list:TAsmList;var l: tlocation;size:tdef;maybeconst:boolean);override;
// procedure location_force_mmreg(list:TAsmList;var l: tlocation;size:tdef;maybeconst:boolean);override;
@@ -1073,7 +1072,7 @@ implementation
if l.loc=LOC_CONSTANT then
begin
if (longint(l.value)<0) then
- cg.a_load_const_reg(list,OS_32,aint($ffffffff),hregisterhi)
+ cg.a_load_const_reg(list,OS_32,longint($ffffffff),hregisterhi)
else
cg.a_load_const_reg(list,OS_32,0,hregisterhi);
end
@@ -1215,11 +1214,6 @@ implementation
location_freetemp(list,oldloc);
end;
- procedure thlcg2ll.location_force_fpureg(list: TAsmList; var l: tlocation; size: tdef; maybeconst: boolean);
- begin
- ncgutil.location_force_fpureg(list,l,maybeconst);
- end;
-
procedure thlcg2ll.location_force_mem(list: TAsmList; var l: tlocation; size: tdef);
var
r: treference;
@@ -1435,6 +1429,10 @@ implementation
var
tmploc: tlocation;
begin
+ { skip e.g. empty records }
+ if (cgpara.location^.loc = LOC_VOID) then
+ exit;
+
{ Handle Floating point types differently
This doesn't depend on emulator settings, emulator settings should
diff --git a/compiler/hlcgobj.pas b/compiler/hlcgobj.pas
index c9c5beb2b9..af35fb8fa3 100644
--- a/compiler/hlcgobj.pas
+++ b/compiler/hlcgobj.pas
@@ -38,11 +38,21 @@ unit hlcgobj;
cpubase,cgbase,cgutils,parabase,
aasmbase,aasmtai,aasmdata,aasmcpu,
symconst,symbase,symtype,symsym,symdef,
- node
+ node,nutils
;
type
tsubsetloadopt = (SL_REG,SL_REGNOSRCMASK,SL_SETZERO,SL_SETMAX);
+
+ preplaceregrec = ^treplaceregrec;
+ treplaceregrec = record
+ old, new: tregister;
+ oldhi, newhi: tregister;
+ ressym: tsym;
+ { moved sym }
+ sym : tabstractnormalvarsym;
+ end;
+
{# @abstract(Abstract high level code generator)
This class implements an abstract instruction generator. All
methods of this class are generic and are mapped to low level code
@@ -98,6 +108,21 @@ unit hlcgobj;
result loading, this is the register type used }
function def2regtyp(def: tdef): tregistertype; virtual;
+ {# Returns a reference with its base address set from a pointer that
+ has been loaded in a register.
+
+ A generic version is provided. This routine should be overridden
+ on platforms which support pointers with different sizes (for
+ example i8086 near and far pointers) or require some other sort of
+ special consideration when converting a pointer in a register to a
+ reference.
+
+ @param(ref where the result is returned)
+ @param(regsize the type of the pointer, contained in the reg parameter)
+ @param(reg register containing the value of a pointer)
+ }
+ procedure reference_reset_base(var ref: treference; regsize: tdef; reg: tregister; offset, alignment: longint); virtual;
+
{# Emit a label to the instruction stream. }
procedure a_label(list : TAsmList;l : tasmlabel); inline;
@@ -478,6 +503,13 @@ unit hlcgobj;
procedure location_get_data_ref(list:TAsmList;def: tdef; const l:tlocation;var ref:treference;loadref:boolean; alignment: longint);virtual;
procedure maketojumpbool(list:TAsmList; p : tnode);virtual;
+ { if the result of n is a LOC_C(..)REGISTER, try to find the corresponding
+ loadn and change its location to a new register (= SSA). In case reload
+ is true, transfer the old to the new register }
+ procedure maybe_change_load_node_reg(list: TAsmList; var n: tnode; reload: boolean); virtual;
+ private
+ function do_replace_node_regs(var n: tnode; para: pointer): foreachnoderesult; virtual;
+ public
procedure gen_proc_symbol(list:TAsmList);virtual;
procedure gen_proc_symbol_end(list:TAsmList);virtual;
@@ -562,8 +594,11 @@ implementation
fmodule,export,
verbose,defutil,paramgr,
symtable,
- ncon,nld,ncgrtti,pass_1,pass_2,
+ nbas,ncon,nld,ncgrtti,pass_1,pass_2,
cpuinfo,cgobj,tgobj,cutils,procinfo,
+{$ifdef x86}
+ cgx86,
+{$endif x86}
ncgutil,ngenutil;
@@ -720,6 +755,14 @@ implementation
end;
end;
+ procedure thlcgobj.reference_reset_base(var ref: treference; regsize: tdef;
+ reg: tregister; offset, alignment: longint);
+ begin
+ reference_reset(ref,alignment);
+ ref.base:=reg;
+ ref.offset:=offset;
+ end;
+
procedure thlcgobj.a_label(list: TAsmList; l: tasmlabel); inline;
begin
cg.a_label(list,l);
@@ -758,7 +801,7 @@ implementation
a_load_reg_reg(list,size,cgpara.location^.def,r,cgpara.location^.register);
LOC_REFERENCE,LOC_CREFERENCE:
begin
- reference_reset_base(ref,cgpara.location^.reference.index,cgpara.location^.reference.offset,cgpara.alignment);
+ reference_reset_base(ref,voidstackpointertype,cgpara.location^.reference.index,cgpara.location^.reference.offset,cgpara.alignment);
a_load_reg_ref(list,size,cgpara.location^.def,r,ref);
end;
LOC_MMREGISTER,LOC_CMMREGISTER:
@@ -788,7 +831,7 @@ implementation
a_load_const_reg(list,cgpara.location^.def,a,cgpara.location^.register);
LOC_REFERENCE,LOC_CREFERENCE:
begin
- reference_reset_base(ref,cgpara.location^.reference.index,cgpara.location^.reference.offset,cgpara.alignment);
+ reference_reset_base(ref,voidstackpointertype,cgpara.location^.reference.index,cgpara.location^.reference.offset,cgpara.alignment);
a_load_const_ref(list,cgpara.location^.def,a,ref);
end
else
@@ -840,7 +883,7 @@ implementation
{ we're at the end of the data, and it can be loaded into
the current location's register with a single regular
load }
- else if (sizeleft in [1,2{$ifndef cpu16bitalu},4{$endif}{$ifdef cpu64bitalu},8{$endif}]) then
+ else if sizeleft in [1,2,4,8] then
begin
{ don't use cgsize_orddef(int_cgsize(sizeleft)) as fromdef,
because that may be larger than location^.register in
@@ -919,7 +962,7 @@ implementation
begin
if assigned(location^.next) then
internalerror(2010052906);
- reference_reset_base(ref,location^.reference.index,location^.reference.offset,newalignment(cgpara.alignment,cgpara.intsize-sizeleft));
+ reference_reset_base(ref,voidstackpointertype,location^.reference.index,location^.reference.offset,newalignment(cgpara.alignment,cgpara.intsize-sizeleft));
if (def_cgsize(size)<>OS_NO) and
(size.size=sizeleft) and
(sizeleft<=sizeof(aint)) then
@@ -944,7 +987,7 @@ implementation
end;
end
else
- internalerror(2010053111);
+ internalerror(2014032101);
end;
inc(tmpref.offset,tcgsize2size[location^.size]);
dec(sizeleft,tcgsize2size[location^.size]);
@@ -2358,7 +2401,7 @@ implementation
LOC_REFERENCE,LOC_CREFERENCE:
begin
cgpara.check_simple_location;
- reference_reset_base(ref,cgpara.location^.reference.index,cgpara.location^.reference.offset,cgpara.alignment);
+ reference_reset_base(ref,voidstackpointertype,cgpara.location^.reference.index,cgpara.location^.reference.offset,cgpara.alignment);
a_loadfpu_reg_ref(list,fromsize,cgpara.def,r,ref);
end;
LOC_REGISTER,LOC_CREGISTER:
@@ -2389,7 +2432,7 @@ implementation
LOC_REFERENCE,LOC_CREFERENCE:
begin
cgpara.check_simple_location;
- reference_reset_base(href,cgpara.location^.reference.index,cgpara.location^.reference.offset,cgpara.alignment);
+ reference_reset_base(href,voidstackpointertype,cgpara.location^.reference.index,cgpara.location^.reference.offset,cgpara.alignment);
{ concatcopy should choose the best way to copy the data }
g_concatcopy(list,fromsize,ref,href);
end;
@@ -2469,7 +2512,7 @@ implementation
a_loadmm_reg_reg(list,fromsize,cgpara.def,reg,cgpara.location^.register,shuffle);
LOC_REFERENCE,LOC_CREFERENCE:
begin
- reference_reset_base(href,cgpara.location^.reference.index,cgpara.location^.reference.offset,cgpara.alignment);
+ reference_reset_base(href,voidstackpointertype,cgpara.location^.reference.index,cgpara.location^.reference.offset,cgpara.alignment);
a_loadmm_reg_ref(list,fromsize,cgpara.def,reg,href,shuffle);
end;
LOC_REGISTER,LOC_CREGISTER:
@@ -2963,7 +3006,7 @@ implementation
cgpara1,cgpara2,cgpara3 : TCGPara;
pd : tprocdef;
begin
- pd:=search_system_proc('fpc_shortstr_assign');
+ pd:=search_system_proc('fpc_shortstr_to_shortstr');
cgpara1.init;
cgpara2.init;
cgpara3.init;
@@ -2972,15 +3015,15 @@ implementation
paramanager.getintparaloc(pd,3,cgpara3);
if pd.is_pushleftright then
begin
- a_load_const_cgpara(list,s32inttype,strdef.len,cgpara1);
- a_loadaddr_ref_cgpara(list,strdef,source,cgpara2);
- a_loadaddr_ref_cgpara(list,strdef,dest,cgpara3);
+ a_loadaddr_ref_cgpara(list,strdef,dest,cgpara1);
+ a_load_const_cgpara(list,s32inttype,strdef.len,cgpara2);
+ a_loadaddr_ref_cgpara(list,strdef,source,cgpara3);
end
else
begin
- a_loadaddr_ref_cgpara(list,strdef,dest,cgpara3);
- a_loadaddr_ref_cgpara(list,strdef,source,cgpara2);
- a_load_const_cgpara(list,s32inttype,strdef.len,cgpara1);
+ a_loadaddr_ref_cgpara(list,strdef,source,cgpara3);
+ a_load_const_cgpara(list,s32inttype,strdef.len,cgpara2);
+ a_loadaddr_ref_cgpara(list,strdef,dest,cgpara1);
end;
paramanager.freecgpara(list,cgpara3);
paramanager.freecgpara(list,cgpara2);
@@ -3798,14 +3841,14 @@ implementation
begin
if not loadref then
internalerror(200410231);
- reference_reset_base(ref,l.register,0,alignment);
+ reference_reset_base(ref,voidpointertype,l.register,0,alignment);
end;
LOC_REFERENCE,
LOC_CREFERENCE :
begin
if loadref then
begin
- reference_reset_base(ref,getaddressregister(list,voidpointertype),0,alignment);
+ reference_reset_base(ref,voidpointertype,getaddressregister(list,voidpointertype),0,alignment);
{ it's a pointer to def }
a_load_ref_reg(list,voidpointertype,voidpointertype,l.reference,ref.base);
end
@@ -3876,6 +3919,225 @@ implementation
end;
+ procedure thlcgobj.maybe_change_load_node_reg(list: TAsmList; var n: tnode; reload: boolean);
+ var
+ rr: treplaceregrec;
+ varloc : tai_varloc;
+ begin
+ if not (n.location.loc in [LOC_CREGISTER,LOC_CFPUREGISTER,LOC_CMMXREGISTER,LOC_CMMREGISTER]) or
+ ([fc_inflowcontrol,fc_gotolabel,fc_lefthandled] * flowcontrol <> []) then
+ exit;
+ rr.old := n.location.register;
+ rr.ressym := nil;
+ rr.sym := nil;
+ rr.oldhi := NR_NO;
+ case n.location.loc of
+ LOC_CREGISTER:
+ begin
+{$ifdef cpu64bitalu}
+ if (n.location.size in [OS_128,OS_S128]) then
+ begin
+ rr.oldhi := n.location.register128.reghi;
+ rr.new := cg.getintregister(current_asmdata.CurrAsmList,OS_INT);
+ rr.newhi := cg.getintregister(current_asmdata.CurrAsmList,OS_INT);
+ end
+ else
+{$else cpu64bitalu}
+ if (n.location.size in [OS_64,OS_S64]) then
+ begin
+ rr.oldhi := n.location.register64.reghi;
+ rr.new := cg.getintregister(current_asmdata.CurrAsmList,OS_32);
+ rr.newhi := cg.getintregister(current_asmdata.CurrAsmList,OS_32);
+ end
+ else
+{$endif cpu64bitalu}
+ rr.new := cg.getintregister(current_asmdata.CurrAsmList,n.location.size);
+ end;
+ LOC_CFPUREGISTER:
+ rr.new := cg.getfpuregister(current_asmdata.CurrAsmList,n.location.size);
+{$ifdef SUPPORT_MMX}
+ LOC_CMMXREGISTER:
+ rr.new := tcgx86(cg).getmmxregister(current_asmdata.CurrAsmList);
+{$endif SUPPORT_MMX}
+ LOC_CMMREGISTER:
+ rr.new := cg.getmmregister(current_asmdata.CurrAsmList,n.location.size);
+ else
+ exit;
+ end;
+
+ { self is implicitly returned from constructors, even if there are no
+ references to it; additionally, funcretsym is not set for constructor
+ procdefs }
+ if (current_procinfo.procdef.proctypeoption=potype_constructor) then
+ rr.ressym:=tsym(current_procinfo.procdef.parast.Find('self'))
+ else if not is_void(current_procinfo.procdef.returndef) and
+ assigned(current_procinfo.procdef.funcretsym) and
+ (tabstractvarsym(current_procinfo.procdef.funcretsym).refs <> 0) then
+ rr.ressym:=current_procinfo.procdef.funcretsym;
+
+ if not foreachnode(n,@do_replace_node_regs,@rr) then
+ exit;
+
+ if reload then
+ case n.location.loc of
+ LOC_CREGISTER:
+ begin
+{$ifdef cpu64bitalu}
+ if (n.location.size in [OS_128,OS_S128]) then
+ cg128.a_load128_reg_reg(list,n.location.register128,joinreg128(rr.new,rr.newhi))
+ else
+{$else cpu64bitalu}
+ if (n.location.size in [OS_64,OS_S64]) then
+ cg64.a_load64_reg_reg(list,n.location.register64,joinreg64(rr.new,rr.newhi))
+ else
+{$endif cpu64bitalu}
+ cg.a_load_reg_reg(list,n.location.size,n.location.size,n.location.register,rr.new);
+ end;
+ LOC_CFPUREGISTER:
+ cg.a_loadfpu_reg_reg(list,n.location.size,n.location.size,n.location.register,rr.new);
+{$ifdef SUPPORT_MMX}
+ LOC_CMMXREGISTER:
+ cg.a_loadmm_reg_reg(list,OS_M64,OS_M64,n.location.register,rr.new,nil);
+{$endif SUPPORT_MMX}
+ LOC_CMMREGISTER:
+ cg.a_loadmm_reg_reg(list,n.location.size,n.location.size,n.location.register,rr.new,nil);
+ else
+ internalerror(2006090920);
+ end;
+
+ { now that we've change the loadn/temp, also change the node result location }
+{$ifdef cpu64bitalu}
+ if (n.location.size in [OS_128,OS_S128]) then
+ begin
+ n.location.register128.reglo := rr.new;
+ n.location.register128.reghi := rr.newhi;
+ if assigned(rr.sym) and
+ ((rr.sym.currentregloc.register<>rr.new) or
+ (rr.sym.currentregloc.registerhi<>rr.newhi)) then
+ begin
+ varloc:=tai_varloc.create128(rr.sym,rr.new,rr.newhi);
+ varloc.oldlocation:=rr.sym.currentregloc.register;
+ varloc.oldlocationhi:=rr.sym.currentregloc.registerhi;
+ rr.sym.currentregloc.register:=rr.new;
+ rr.sym.currentregloc.registerHI:=rr.newhi;
+ list.concat(varloc);
+ end;
+ end
+ else
+{$else cpu64bitalu}
+ if (n.location.size in [OS_64,OS_S64]) then
+ begin
+ n.location.register64.reglo := rr.new;
+ n.location.register64.reghi := rr.newhi;
+ if assigned(rr.sym) and
+ ((rr.sym.currentregloc.register<>rr.new) or
+ (rr.sym.currentregloc.registerhi<>rr.newhi)) then
+ begin
+ varloc:=tai_varloc.create64(rr.sym,rr.new,rr.newhi);
+ varloc.oldlocation:=rr.sym.currentregloc.register;
+ varloc.oldlocationhi:=rr.sym.currentregloc.registerhi;
+ rr.sym.currentregloc.register:=rr.new;
+ rr.sym.currentregloc.registerHI:=rr.newhi;
+ list.concat(varloc);
+ end;
+ end
+ else
+{$endif cpu64bitalu}
+ begin
+ n.location.register := rr.new;
+ if assigned(rr.sym) and (rr.sym.currentregloc.register<>rr.new) then
+ begin
+ varloc:=tai_varloc.create(rr.sym,rr.new);
+ varloc.oldlocation:=rr.sym.currentregloc.register;
+ rr.sym.currentregloc.register:=rr.new;
+ list.concat(varloc);
+ end;
+ end;
+ end;
+
+
+ function thlcgobj.do_replace_node_regs(var n: tnode; para: pointer): foreachnoderesult;
+ var
+ rr: preplaceregrec absolute para;
+ begin
+ result := fen_false;
+ if (nf_is_funcret in n.flags) and (fc_exit in flowcontrol) then
+ exit;
+ case n.nodetype of
+ loadn:
+ begin
+ if (tloadnode(n).symtableentry.typ in [localvarsym,paravarsym,staticvarsym]) and
+ (tabstractvarsym(tloadnode(n).symtableentry).varoptions * [vo_is_dll_var, vo_is_thread_var] = []) and
+ not assigned(tloadnode(n).left) and
+ ((tloadnode(n).symtableentry <> rr^.ressym) or
+ not(fc_exit in flowcontrol)
+ ) and
+ (tabstractnormalvarsym(tloadnode(n).symtableentry).localloc.loc in [LOC_CREGISTER,LOC_CFPUREGISTER,LOC_CMMXREGISTER,LOC_CMMREGISTER]) and
+ (tabstractnormalvarsym(tloadnode(n).symtableentry).localloc.register = rr^.old) then
+ begin
+{$ifdef cpu64bitalu}
+ { it's possible a 128 bit location was shifted and/xor typecasted }
+ { in a 64 bit value, so only 1 register was left in the location }
+ if (tabstractnormalvarsym(tloadnode(n).symtableentry).localloc.size in [OS_128,OS_S128]) then
+ if (tabstractnormalvarsym(tloadnode(n).symtableentry).localloc.register128.reghi = rr^.oldhi) then
+ tabstractnormalvarsym(tloadnode(n).symtableentry).localloc.register128.reghi := rr^.newhi
+ else
+ exit;
+{$else cpu64bitalu}
+ { it's possible a 64 bit location was shifted and/xor typecasted }
+ { in a 32 bit value, so only 1 register was left in the location }
+ if (tabstractnormalvarsym(tloadnode(n).symtableentry).localloc.size in [OS_64,OS_S64]) then
+ if (tabstractnormalvarsym(tloadnode(n).symtableentry).localloc.register64.reghi = rr^.oldhi) then
+ tabstractnormalvarsym(tloadnode(n).symtableentry).localloc.register64.reghi := rr^.newhi
+ else
+ exit;
+{$endif cpu64bitalu}
+ tabstractnormalvarsym(tloadnode(n).symtableentry).localloc.register := rr^.new;
+ rr^.sym := tabstractnormalvarsym(tloadnode(n).symtableentry);
+ result := fen_norecurse_true;
+ end;
+ end;
+ temprefn:
+ begin
+ if (ti_valid in ttemprefnode(n).tempinfo^.flags) and
+ (ttemprefnode(n).tempinfo^.location.loc in [LOC_CREGISTER,LOC_CFPUREGISTER,LOC_CMMXREGISTER,LOC_CMMREGISTER]) and
+ (ttemprefnode(n).tempinfo^.location.register = rr^.old) then
+ begin
+{$ifdef cpu64bitalu}
+ { it's possible a 128 bit location was shifted and/xor typecasted }
+ { in a 64 bit value, so only 1 register was left in the location }
+ if (ttemprefnode(n).tempinfo^.location.size in [OS_128,OS_S128]) then
+ if (ttemprefnode(n).tempinfo^.location.register128.reghi = rr^.oldhi) then
+ ttemprefnode(n).tempinfo^.location.register128.reghi := rr^.newhi
+ else
+ exit;
+{$else cpu64bitalu}
+ { it's possible a 64 bit location was shifted and/xor typecasted }
+ { in a 32 bit value, so only 1 register was left in the location }
+ if (ttemprefnode(n).tempinfo^.location.size in [OS_64,OS_S64]) then
+ if (ttemprefnode(n).tempinfo^.location.register64.reghi = rr^.oldhi) then
+ ttemprefnode(n).tempinfo^.location.register64.reghi := rr^.newhi
+ else
+ exit;
+{$endif cpu64bitalu}
+ ttemprefnode(n).tempinfo^.location.register := rr^.new;
+ result := fen_norecurse_true;
+ end;
+ end;
+ { optimize the searching a bit }
+ derefn,addrn,
+ calln,inlinen,casen,
+ addn,subn,muln,
+ andn,orn,xorn,
+ ltn,lten,gtn,gten,equaln,unequaln,
+ slashn,divn,shrn,shln,notn,
+ inn,
+ asn,isn:
+ result := fen_norecurse_false;
+ end;
+ end;
+
+
procedure thlcgobj.gen_proc_symbol(list: TAsmList);
var
item,
@@ -4027,7 +4289,8 @@ implementation
begin
if not assigned(vs.initialloc.reference.symbol) then
list.concat(Tai_comment.Create(strpnew('Var '+vs.realname+' located at '+
- std_regname(vs.initialloc.reference.base)+tostr_with_plus(vs.initialloc.reference.offset))));
+ std_regname(vs.initialloc.reference.base)+tostr_with_plus(vs.initialloc.reference.offset)+
+ ', size='+tcgsize2str(vs.initialloc.size))));
end;
end;
end;
@@ -4037,7 +4300,7 @@ implementation
procedure thlcgobj.paravarsym_set_initialloc_to_paraloc(vs: tparavarsym);
begin
- reference_reset_base(vs.initialloc.reference,tparavarsym(vs).paraloc[calleeside].location^.reference.index,
+ reference_reset_base(vs.initialloc.reference,vs.vardef,tparavarsym(vs).paraloc[calleeside].location^.reference.index,
tparavarsym(vs).paraloc[calleeside].location^.reference.offset,tparavarsym(vs).paraloc[calleeside].alignment);
end;
@@ -4097,7 +4360,7 @@ implementation
if assigned(hp^.def) and
is_managed_type(hp^.def) then
begin
- reference_reset_base(href,current_procinfo.framepointer,hp^.pos,sizeof(pint));
+ reference_reset_base(href,voidstackpointertype,current_procinfo.framepointer,hp^.pos,voidstackpointertype.size);
g_initialize(list,hp^.def,href);
end;
hp:=hp^.next;
@@ -4145,7 +4408,7 @@ implementation
is_managed_type(hp^.def) then
begin
include(current_procinfo.flags,pi_needs_implicit_finally);
- reference_reset_base(href,current_procinfo.framepointer,hp^.pos,sizeof(pint));
+ reference_reset_base(href,voidstackpointertype,current_procinfo.framepointer,hp^.pos,voidstackpointertype.size);
g_finalize(list,hp^.def,href);
end;
hp:=hp^.next;
@@ -4249,7 +4512,13 @@ implementation
) and
not(vo_is_funcret in tstaticvarsym(p).varoptions) and
not(vo_is_external in tstaticvarsym(p).varoptions) and
- is_managed_type(tstaticvarsym(p).vardef) then
+ is_managed_type(tstaticvarsym(p).vardef) and
+ not (
+ assigned(tstaticvarsym(p).fieldvarsym) and
+ assigned(tstaticvarsym(p).fieldvarsym.owner.defowner) and
+ (df_generic in tdef(tstaticvarsym(p).fieldvarsym.owner.defowner).defoptions)
+ )
+ then
finalize_sym(TAsmList(arg),tsym(p));
end;
procsym :
@@ -4650,7 +4919,7 @@ implementation
case para.location^.loc of
LOC_REFERENCE,LOC_CREFERENCE:
begin
- reference_reset_base(href,para.location^.reference.index,para.location^.reference.offset,para.alignment);
+ reference_reset_base(href,voidstackpointertype,para.location^.reference.index,para.location^.reference.offset,para.alignment);
a_load_ref_ref(list,para.def,para.def,href,destloc.reference);
end;
else
diff --git a/compiler/htypechk.pas b/compiler/htypechk.pas
index 3524c9101b..8296712769 100644
--- a/compiler/htypechk.pas
+++ b/compiler/htypechk.pas
@@ -2708,8 +2708,8 @@ implementation
{ for value and const parameters check precision of real, give
penalty for loosing of precision. var and out parameters must match exactly }
if not(currpara.varspez in [vs_var,vs_out]) and
- is_real(def_from) and
- is_real(def_to) then
+ is_real_or_cextended(def_from) and
+ is_real_or_cextended(def_to) then
begin
eq:=te_equal;
if is_extended(def_to) then
diff --git a/compiler/i386/cgcpu.pas b/compiler/i386/cgcpu.pas
index 36fe4e08f5..21e715860c 100644
--- a/compiler/i386/cgcpu.pas
+++ b/compiler/i386/cgcpu.pas
@@ -200,7 +200,7 @@ unit cgcpu;
if use_push(cgpara) then
begin
{ Record copy? }
- if (cgpara.size in [OS_NO,OS_F64]) or (size=OS_NO) then
+ if (cgpara.size=OS_NO) or (size=OS_NO) then
begin
cgpara.check_simple_location;
len:=align(cgpara.intsize,cgpara.alignment);
@@ -212,9 +212,19 @@ unit cgcpu;
begin
if tcgsize2size[cgpara.size]<>tcgsize2size[size] then
internalerror(200501161);
- { We need to push the data in reverse order,
- therefor we use a recursive algorithm }
- pushdata(cgpara.location,0);
+ if (cgpara.size=OS_F64) then
+ begin
+ href:=r;
+ make_simple_ref(list,href);
+ inc(href.offset,4);
+ list.concat(taicpu.op_ref(A_PUSH,S_L,href));
+ dec(href.offset,4);
+ list.concat(taicpu.op_ref(A_PUSH,S_L,href));
+ end
+ else
+ { We need to push the data in reverse order,
+ therefor we use a recursive algorithm }
+ pushdata(cgpara.location,0);
end
end
else
diff --git a/compiler/i386/cpuinfo.pas b/compiler/i386/cpuinfo.pas
index ce31760908..97894c14ac 100644
--- a/compiler/i386/cpuinfo.pas
+++ b/compiler/i386/cpuinfo.pas
@@ -123,7 +123,7 @@ Const
cs_opt_tailrecursion,cs_opt_nodecse,cs_useebp,
cs_opt_reorder_fields,cs_opt_fastmath];
- level1optimizerswitches = genericlevel1optimizerswitches + [cs_opt_peephole];
+ level1optimizerswitches = genericlevel1optimizerswitches;
level2optimizerswitches = genericlevel2optimizerswitches + level1optimizerswitches +
[cs_opt_regvar,cs_opt_stackframe,cs_opt_tailrecursion,cs_opt_nodecse];
level3optimizerswitches = genericlevel3optimizerswitches + level2optimizerswitches + [{,cs_opt_loopunroll}];
@@ -137,7 +137,9 @@ type
CPUX86_HAS_POPCNT,
CPUX86_HAS_AVXUNIT,
CPUX86_HAS_LZCNT,
- CPUX86_HAS_MOVBE
+ CPUX86_HAS_MOVBE,
+ CPUX86_HAS_FMA,
+ CPUX86_HAS_FMA4
);
const
@@ -151,7 +153,7 @@ type
{ cpu_PentiumM } [CPUX86_HAS_SSEUNIT],
{ cpu_core_i } [CPUX86_HAS_SSEUNIT,CPUX86_HAS_POPCNT],
{ cpu_core_avx } [CPUX86_HAS_SSEUNIT,CPUX86_HAS_POPCNT,CPUX86_HAS_AVXUNIT],
- { cpu_core_avx2 } [CPUX86_HAS_SSEUNIT,CPUX86_HAS_POPCNT,CPUX86_HAS_AVXUNIT,CPUX86_HAS_BMI1,CPUX86_HAS_BMI2,CPUX86_HAS_LZCNT,CPUX86_HAS_MOVBE]
+ { cpu_core_avx2 } [CPUX86_HAS_SSEUNIT,CPUX86_HAS_POPCNT,CPUX86_HAS_AVXUNIT,CPUX86_HAS_BMI1,CPUX86_HAS_BMI2,CPUX86_HAS_LZCNT,CPUX86_HAS_MOVBE,CPUX86_HAS_FMA]
);
diff --git a/compiler/i386/cpunode.pas b/compiler/i386/cpunode.pas
index 543d66f7fd..4c4d89ed7e 100644
--- a/compiler/i386/cpunode.pas
+++ b/compiler/i386/cpunode.pas
@@ -51,13 +51,16 @@ unit cpunode;
n386add,
n386cal,
+ n386ld,
n386mem,
n386set,
n386inl,
{$ifdef TEST_WIN32_SEH}
n386flw,
{$endif TEST_WIN32_SEH}
- n386mat
+ n386mat,
+ { symtable }
+ symcpu
;
end.
diff --git a/compiler/i386/hlcgcpu.pas b/compiler/i386/hlcgcpu.pas
index e6eaeadae3..e4372549c3 100644
--- a/compiler/i386/hlcgcpu.pas
+++ b/compiler/i386/hlcgcpu.pas
@@ -78,10 +78,10 @@ implementation
(cgpara.location^.reference.index=NR_STACK_POINTER_REG) then
begin
cg.g_stackpointer_alloc(list,stacksize);
- reference_reset_base(href,NR_STACK_POINTER_REG,0,sizeof(pint));
+ reference_reset_base(href,voidstackpointertype,NR_STACK_POINTER_REG,0,voidstackpointertype.size);
end
else
- reference_reset_base(href,cgpara.location^.reference.index,cgpara.location^.reference.offset,cgpara.alignment);
+ reference_reset_base(href,voidstackpointertype,cgpara.location^.reference.index,cgpara.location^.reference.offset,cgpara.alignment);
cg.a_loadfpu_reg_ref(list,locsize,locsize,l.register,href);
end;
LOC_FPUREGISTER:
@@ -123,10 +123,10 @@ implementation
(cgpara.location^.reference.index=NR_STACK_POINTER_REG) then
begin
cg.g_stackpointer_alloc(list,stacksize);
- reference_reset_base(href,NR_STACK_POINTER_REG,0,sizeof(pint));
+ reference_reset_base(href,voidstackpointertype,NR_STACK_POINTER_REG,0,voidstackpointertype.size);
end
else
- reference_reset_base(href,cgpara.location^.reference.index,cgpara.location^.reference.offset,cgpara.alignment);
+ reference_reset_base(href,voidstackpointertype,cgpara.location^.reference.index,cgpara.location^.reference.offset,cgpara.alignment);
cg.a_loadmm_reg_ref(list,locsize,locsize,l.register,href,mms_movescalar);
end;
LOC_FPUREGISTER:
@@ -152,7 +152,7 @@ implementation
cg.a_load_ref_cgpara(list,locsize,l.reference,cgpara)
else
begin
- reference_reset_base(href,cgpara.location^.reference.index,cgpara.location^.reference.offset,cgpara.alignment);
+ reference_reset_base(href,voidstackpointertype,cgpara.location^.reference.index,cgpara.location^.reference.offset,cgpara.alignment);
cg.g_concatcopy(list,l.reference,href,stacksize);
end;
end;
diff --git a/compiler/i386/i386att.inc b/compiler/i386/i386att.inc
index ed2f7848a1..3611f09fd0 100644
--- a/compiler/i386/i386att.inc
+++ b/compiler/i386/i386att.inc
@@ -951,6 +951,26 @@
'sarx',
'shlx',
'shrx',
+'vbroadcasti128',
+'vextracti128',
+'vinserti128',
+'vpblendd',
+'vpbroadcastb',
+'vpbroadcastd',
+'vpbroadcastq',
+'vpbroadcastw',
+'vperm2i128',
+'vpermd',
+'vpermpd',
+'vpermps',
+'vpermq',
+'vpmaskmovd',
+'vpmaskmovq',
+'vpsllvd',
+'vpsllvq',
+'vpsravd',
+'vpsrlvd',
+'vpsrlvq',
'add4s',
'brkem',
'clr1',
@@ -964,5 +984,66 @@
'ror4',
'set1',
'sub4s',
-'test1'
+'test1',
+'vfmadd132pd',
+'vfmadd213pd',
+'vfmadd231pd',
+'vfmaddpd',
+'vfmadd132ps',
+'vfmadd213ps',
+'vfmadd231ps',
+'vfmadd132sd',
+'vfmadd213sd',
+'vfmadd231sd',
+'vfmadd132ss',
+'vfmadd213ss',
+'vfmadd231ss',
+'vfmaddsub132pd',
+'vfmaddsub213pd',
+'vfmaddsub231pd',
+'vfmaddsub132ps',
+'vfmaddsub213ps',
+'vfmaddsub231ps',
+'vfmsubadd132pd',
+'vfmsubadd213pd',
+'vfmsubadd231pd',
+'vfmsubadd132ps',
+'vfmsubadd213ps',
+'vfmsubadd231ps',
+'vfmsub132pd',
+'vfmsub213pd',
+'vfmsub231pd',
+'vfmsub132ps',
+'vfmsub213ps',
+'vfmsub231ps',
+'vfmsub132sd',
+'vfmsub213sd',
+'vfmsub231sd',
+'vfmsub132ss',
+'vfmsub213ss',
+'vfmsub231ss',
+'vfnmadd132pd',
+'vfnmadd213pd',
+'vfnmadd231pd',
+'vfnmadd132ps',
+'vfnmadd213ps',
+'vfnmadd231ps',
+'vfnmadd132sd',
+'vfnmadd213sd',
+'vfnmadd231sd',
+'vfnmadd132ss',
+'vfnmadd213ss',
+'vfnmadd231ss',
+'vfnmsub132pd',
+'vfnmsub213pd',
+'vfnmsub231pd',
+'vfnmsub132ps',
+'vfnmsub213ps',
+'vfnmsub231ps',
+'vfnmsub132sd',
+'vfnmsub213sd',
+'vfnmsub231sd',
+'vfnmsub132ss',
+'vfnmsub213ss',
+'vfnmsub231ss'
);
diff --git a/compiler/i386/i386atts.inc b/compiler/i386/i386atts.inc
index 5a53788dd6..c0c039b318 100644
--- a/compiler/i386/i386atts.inc
+++ b/compiler/i386/i386atts.inc
@@ -964,5 +964,86 @@ attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
attsufNONE
);
diff --git a/compiler/i386/i386int.inc b/compiler/i386/i386int.inc
index dc4ebb3dd2..5070c54d44 100644
--- a/compiler/i386/i386int.inc
+++ b/compiler/i386/i386int.inc
@@ -951,6 +951,26 @@
'sarx',
'shlx',
'shrx',
+'vbroadcasti128',
+'vextracti128',
+'vinserti128',
+'vpblendd',
+'vpbroadcastb',
+'vpbroadcastd',
+'vpbroadcastq',
+'vpbroadcastw',
+'vperm2i128',
+'vpermd',
+'vpermpd',
+'vpermps',
+'vpermq',
+'vpmaskmovd',
+'vpmaskmovq',
+'vpsllvd',
+'vpsllvq',
+'vpsravd',
+'vpsrlvd',
+'vpsrlvq',
'add4s',
'brkem',
'clr1',
@@ -964,5 +984,66 @@
'ror4',
'set1',
'sub4s',
-'test1'
+'test1',
+'vfmadd132pd',
+'vfmadd213pd',
+'vfmadd231pd',
+'vfmaddpd',
+'vfmadd132ps',
+'vfmadd213ps',
+'vfmadd231ps',
+'vfmadd132sd',
+'vfmadd213sd',
+'vfmadd231sd',
+'vfmadd132ss',
+'vfmadd213ss',
+'vfmadd231ss',
+'vfmaddsub132pd',
+'vfmaddsub213pd',
+'vfmaddsub231pd',
+'vfmaddsub132ps',
+'vfmaddsub213ps',
+'vfmaddsub231ps',
+'vfmsubadd132pd',
+'vfmsubadd213pd',
+'vfmsubadd231pd',
+'vfmsubadd132ps',
+'vfmsubadd213ps',
+'vfmsubadd231ps',
+'vfmsub132pd',
+'vfmsub213pd',
+'vfmsub231pd',
+'vfmsub132ps',
+'vfmsub213ps',
+'vfmsub231ps',
+'vfmsub132sd',
+'vfmsub213sd',
+'vfmsub231sd',
+'vfmsub132ss',
+'vfmsub213ss',
+'vfmsub231ss',
+'vfnmadd132pd',
+'vfnmadd213pd',
+'vfnmadd231pd',
+'vfnmadd132ps',
+'vfnmadd213ps',
+'vfnmadd231ps',
+'vfnmadd132sd',
+'vfnmadd213sd',
+'vfnmadd231sd',
+'vfnmadd132ss',
+'vfnmadd213ss',
+'vfnmadd231ss',
+'vfnmsub132pd',
+'vfnmsub213pd',
+'vfnmsub231pd',
+'vfnmsub132ps',
+'vfnmsub213ps',
+'vfnmsub231ps',
+'vfnmsub132sd',
+'vfnmsub213sd',
+'vfnmsub231sd',
+'vfnmsub132ss',
+'vfnmsub213ss',
+'vfnmsub231ss'
);
diff --git a/compiler/i386/i386nop.inc b/compiler/i386/i386nop.inc
index e670d6a963..ef8e61691b 100644
--- a/compiler/i386/i386nop.inc
+++ b/compiler/i386/i386nop.inc
@@ -1,2 +1,2 @@
{ don't edit, this file is generated from x86ins.dat }
-1658;
+1926;
diff --git a/compiler/i386/i386op.inc b/compiler/i386/i386op.inc
index 48dbdd334d..4bdf54716e 100644
--- a/compiler/i386/i386op.inc
+++ b/compiler/i386/i386op.inc
@@ -951,6 +951,26 @@ A_RORX,
A_SARX,
A_SHLX,
A_SHRX,
+A_VBROADCASTI128,
+A_VEXTRACTI128,
+A_VINSERTI128,
+A_VPBLENDD,
+A_VPBROADCASTB,
+A_VPBROADCASTD,
+A_VPBROADCASTQ,
+A_VPBROADCASTW,
+A_VPERM2I128,
+A_VPERMD,
+A_VPERMPD,
+A_VPERMPS,
+A_VPERMQ,
+A_VPMASKMOVD,
+A_VPMASKMOVQ,
+A_VPSLLVD,
+A_VPSLLVQ,
+A_VPSRAVD,
+A_VPSRLVD,
+A_VPSRLVQ,
A_ADD4S,
A_BRKEM,
A_CLR1,
@@ -964,5 +984,66 @@ A_ROL4,
A_ROR4,
A_SET1,
A_SUB4S,
-A_TEST1
+A_TEST1,
+A_VFMADD132PD,
+A_VFMADD213PD,
+A_VFMADD231PD,
+A_VFMADDPD,
+A_VFMADD132PS,
+A_VFMADD213PS,
+A_VFMADD231PS,
+A_VFMADD132SD,
+A_VFMADD213SD,
+A_VFMADD231SD,
+A_VFMADD132SS,
+A_VFMADD213SS,
+A_VFMADD231SS,
+A_VFMADDSUB132PD,
+A_VFMADDSUB213PD,
+A_VFMADDSUB231PD,
+A_VFMADDSUB132PS,
+A_VFMADDSUB213PS,
+A_VFMADDSUB231PS,
+A_VFMSUBADD132PD,
+A_VFMSUBADD213PD,
+A_VFMSUBADD231PD,
+A_VFMSUBADD132PS,
+A_VFMSUBADD213PS,
+A_VFMSUBADD231PS,
+A_VFMSUB132PD,
+A_VFMSUB213PD,
+A_VFMSUB231PD,
+A_VFMSUB132PS,
+A_VFMSUB213PS,
+A_VFMSUB231PS,
+A_VFMSUB132SD,
+A_VFMSUB213SD,
+A_VFMSUB231SD,
+A_VFMSUB132SS,
+A_VFMSUB213SS,
+A_VFMSUB231SS,
+A_VFNMADD132PD,
+A_VFNMADD213PD,
+A_VFNMADD231PD,
+A_VFNMADD132PS,
+A_VFNMADD213PS,
+A_VFNMADD231PS,
+A_VFNMADD132SD,
+A_VFNMADD213SD,
+A_VFNMADD231SD,
+A_VFNMADD132SS,
+A_VFNMADD213SS,
+A_VFNMADD231SS,
+A_VFNMSUB132PD,
+A_VFNMSUB213PD,
+A_VFNMSUB231PD,
+A_VFNMSUB132PS,
+A_VFNMSUB213PS,
+A_VFNMSUB231PS,
+A_VFNMSUB132SD,
+A_VFNMSUB213SD,
+A_VFNMSUB231SD,
+A_VFNMSUB132SS,
+A_VFNMSUB213SS,
+A_VFNMSUB231SS
);
diff --git a/compiler/i386/i386prop.inc b/compiler/i386/i386prop.inc
index 47e1495c0d..ce6c618d3c 100644
--- a/compiler/i386/i386prop.inc
+++ b/compiler/i386/i386prop.inc
@@ -953,6 +953,26 @@
(Ch: (Ch_Rop1, Ch_Rop2, Ch_Wop3)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
@@ -964,5 +984,66 @@
(Ch: (Ch_Mop1, Ch_RWEAX, Ch_None)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
-(Ch: (Ch_WFlags, Ch_Rop1, Ch_Rop2))
+(Ch: (Ch_WFlags, Ch_Rop1, Ch_Rop2)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1))
);
diff --git a/compiler/i386/i386tab.inc b/compiler/i386/i386tab.inc
index d9dde010f8..4732d1f80a 100644
--- a/compiler/i386/i386tab.inc
+++ b/compiler/i386/i386tab.inc
@@ -8702,6 +8702,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VBROADCASTSD;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none);
+ code : #241#242#244#249#1#25#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VBROADCASTSS;
ops : 2;
optypes : (ot_ymmreg,ot_memory or ot_bits32,ot_none,ot_none);
@@ -8716,6 +8723,20 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VBROADCASTSS;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none);
+ code : #241#242#244#249#1#24#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VBROADCASTSS;
+ ops : 2;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_none,ot_none);
+ code : #241#242#249#1#24#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VCMPPD;
ops : 4;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8);
@@ -8816,7 +8837,7 @@
(
opcode : A_VCVTDQ2PD;
ops : 2;
- optypes : (ot_ymmreg,ot_ymmreg,ot_none,ot_none);
+ optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none);
code : #219#242#244#248#1#230#72;
flags : if_avx or if_sandybridge
),
@@ -9759,6 +9780,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VMOVNTDQA;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_memory or ot_bits256,ot_none,ot_none);
+ code : #241#242#244#249#1#42#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VMOVNTPD;
ops : 2;
optypes : (ot_memory or ot_bits256,ot_ymmreg,ot_none,ot_none);
@@ -9948,6 +9976,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VMPSADBW;
+ ops : 4;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8);
+ code : #241#242#244#250#1#66#61#80#23;
+ flags : if_avx2
+ ),
+ (
opcode : A_VMULPD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10032,6 +10067,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPABSB;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_ymmrm,ot_none,ot_none);
+ code : #241#242#244#249#1#28#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPABSD;
ops : 2;
optypes : (ot_xmmreg,ot_xmmrm,ot_none,ot_none);
@@ -10039,6 +10081,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPABSD;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_ymmrm,ot_none,ot_none);
+ code : #241#242#244#249#1#30#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPABSW;
ops : 2;
optypes : (ot_xmmreg,ot_xmmrm,ot_none,ot_none);
@@ -10046,6 +10095,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPABSW;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_ymmrm,ot_none,ot_none);
+ code : #241#242#244#249#1#29#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPACKSSDW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10053,6 +10109,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPACKSSDW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#107#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPACKSSWB;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10060,6 +10123,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPACKSSWB;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#99#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPACKUSDW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10067,6 +10137,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPACKUSDW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#43#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPACKUSWB;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10074,6 +10151,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPACKUSWB;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#103#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPADDB;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10081,6 +10165,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPADDB;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#252#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPADDD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10088,6 +10179,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPADDD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#254#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPADDQ;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10095,6 +10193,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPADDQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#212#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPADDSB;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10102,6 +10207,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPADDSB;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#236#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPADDSW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10109,6 +10221,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPADDSW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#237#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPADDUSB;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10116,6 +10235,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPADDUSB;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#220#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPADDUSW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10123,6 +10249,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPADDUSW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#221#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPADDW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10130,6 +10263,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPADDW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#253#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPALIGNR;
ops : 4;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8);
@@ -10137,6 +10277,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPALIGNR;
+ ops : 4;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8);
+ code : #241#242#244#250#1#15#61#80#23;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPAND;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10144,6 +10291,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPAND;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#219#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPANDN;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10151,6 +10305,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPANDN;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#223#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPAVGB;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10158,6 +10319,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPAVGB;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#224#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPAVGW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10165,6 +10333,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPAVGW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#227#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPBLENDVB;
ops : 4;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_xmmreg);
@@ -10172,6 +10347,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPBLENDVB;
+ ops : 4;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_ymmreg);
+ code : #241#242#244#250#1#76#61#80#247;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPBLENDW;
ops : 4;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8);
@@ -10179,6 +10361,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPBLENDW;
+ ops : 4;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8);
+ code : #241#242#244#250#1#14#61#80#23;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPCLMULQDQ;
ops : 4;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8);
@@ -10193,6 +10382,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPCMPEQB;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#116#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPCMPEQD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10200,6 +10396,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPCMPEQD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#118#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPCMPEQQ;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10207,6 +10410,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPCMPEQQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#41#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPCMPEQW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10214,6 +10424,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPCMPEQW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#117#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPCMPESTRI;
ops : 3;
optypes : (ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8,ot_none);
@@ -10235,6 +10452,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPCMPGTB;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#100#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPCMPGTD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10242,6 +10466,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPCMPGTD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#102#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPCMPGTQ;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10249,6 +10480,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPCMPGTQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#55#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPCMPGTW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10256,6 +10494,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPCMPGTW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#101#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPCMPISTRI;
ops : 3;
optypes : (ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8,ot_none);
@@ -10410,6 +10655,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPHADDD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#2#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPHADDSW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10417,6 +10669,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPHADDSW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#3#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPHADDW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10424,6 +10683,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPHADDW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#1#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPHMINPOSUW;
ops : 2;
optypes : (ot_xmmreg,ot_xmmrm,ot_none,ot_none);
@@ -10438,6 +10704,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPHSUBD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#6#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPHSUBSW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10445,6 +10718,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPHSUBSW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#7#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPHSUBW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10452,6 +10732,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPHSUBW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#5#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPINSRB;
ops : 4;
optypes : (ot_xmmreg,ot_xmmreg,ot_reg32,ot_immediate or ot_bits8);
@@ -10501,6 +10788,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMADDUBSW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#4#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMADDWD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10508,6 +10802,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMADDWD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#245#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMAXSB;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10515,6 +10816,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMAXSB;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#60#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMAXSD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10522,6 +10830,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMAXSD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#61#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMAXSW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10529,6 +10844,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMAXSW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#238#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMAXUB;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10536,6 +10858,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMAXUB;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#222#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMAXUD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10543,6 +10872,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMAXUD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#63#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMAXUW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10550,6 +10886,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMAXUW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#62#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMINSB;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10557,6 +10900,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMINSB;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#56#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMINSD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10564,6 +10914,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMINSD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#57#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMINSW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10571,6 +10928,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMINSW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#234#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMINUB;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10578,6 +10942,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMINUB;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#218#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMINUD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10585,6 +10956,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMINUD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#59#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMINUW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10592,6 +10970,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMINUW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#58#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMOVMSKB;
ops : 2;
optypes : (ot_reg64,ot_xmmreg,ot_none,ot_none);
@@ -10606,6 +10991,20 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMOVMSKB;
+ ops : 2;
+ optypes : (ot_reg32,ot_ymmreg,ot_none,ot_none);
+ code : #241#242#244#248#1#215#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPMOVMSKB;
+ ops : 2;
+ optypes : (ot_reg64,ot_ymmreg,ot_none,ot_none);
+ code : #241#242#244#248#1#215#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMOVSXBD;
ops : 2;
optypes : (ot_xmmreg,ot_memory or ot_bits32,ot_none,ot_none);
@@ -10620,6 +11019,20 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMOVSXBD;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none);
+ code : #241#242#244#249#1#33#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPMOVSXBD;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_memory or ot_bits64,ot_none,ot_none);
+ code : #241#242#244#249#1#33#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMOVSXBQ;
ops : 2;
optypes : (ot_xmmreg,ot_memory or ot_bits16,ot_none,ot_none);
@@ -10634,6 +11047,20 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMOVSXBQ;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_memory or ot_bits32,ot_none,ot_none);
+ code : #241#242#244#249#1#34#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPMOVSXBQ;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none);
+ code : #241#242#244#249#1#34#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMOVSXBW;
ops : 2;
optypes : (ot_xmmreg,ot_memory or ot_bits64,ot_none,ot_none);
@@ -10648,6 +11075,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMOVSXBW;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_xmmrm,ot_none,ot_none);
+ code : #241#242#244#249#1#32#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMOVSXDQ;
ops : 2;
optypes : (ot_xmmreg,ot_memory or ot_bits64,ot_none,ot_none);
@@ -10662,6 +11096,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMOVSXDQ;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_xmmrm,ot_none,ot_none);
+ code : #241#242#244#249#1#37#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMOVSXWD;
ops : 2;
optypes : (ot_xmmreg,ot_memory or ot_bits64,ot_none,ot_none);
@@ -10676,6 +11117,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMOVSXWD;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_xmmrm,ot_none,ot_none);
+ code : #241#242#244#249#1#35#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMOVSXWQ;
ops : 2;
optypes : (ot_xmmreg,ot_memory or ot_bits32,ot_none,ot_none);
@@ -10690,6 +11138,20 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMOVSXWQ;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_memory or ot_bits64,ot_none,ot_none);
+ code : #241#242#244#249#1#36#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPMOVSXWQ;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none);
+ code : #241#242#244#249#1#36#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMOVZXBD;
ops : 2;
optypes : (ot_xmmreg,ot_memory or ot_bits32,ot_none,ot_none);
@@ -10704,6 +11166,20 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMOVZXBD;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_memory or ot_bits64,ot_none,ot_none);
+ code : #241#242#244#249#1#49#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPMOVZXBD;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none);
+ code : #241#242#244#249#1#49#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMOVZXBQ;
ops : 2;
optypes : (ot_xmmreg,ot_memory or ot_bits16,ot_none,ot_none);
@@ -10718,6 +11194,20 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMOVZXBQ;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_memory or ot_bits32,ot_none,ot_none);
+ code : #241#242#244#249#1#50#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPMOVZXBQ;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none);
+ code : #241#242#244#249#1#50#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMOVZXBW;
ops : 2;
optypes : (ot_xmmreg,ot_memory or ot_bits64,ot_none,ot_none);
@@ -10732,6 +11222,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMOVZXBW;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_xmmrm,ot_none,ot_none);
+ code : #241#242#244#249#1#48#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMOVZXDQ;
ops : 2;
optypes : (ot_xmmreg,ot_memory or ot_bits64,ot_none,ot_none);
@@ -10746,6 +11243,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMOVZXDQ;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_xmmrm,ot_none,ot_none);
+ code : #241#242#244#249#1#53#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMOVZXWD;
ops : 2;
optypes : (ot_xmmreg,ot_memory or ot_bits64,ot_none,ot_none);
@@ -10760,6 +11264,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMOVZXWD;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_xmmrm,ot_none,ot_none);
+ code : #241#242#244#249#1#51#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMOVZXWQ;
ops : 2;
optypes : (ot_xmmreg,ot_memory or ot_bits32,ot_none,ot_none);
@@ -10774,6 +11285,20 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMOVZXWQ;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_memory or ot_bits64,ot_none,ot_none);
+ code : #241#242#244#249#1#52#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPMOVZXWQ;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none);
+ code : #241#242#244#249#1#52#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMULDQ;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10781,6 +11306,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMULDQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#40#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMULHRSW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10788,6 +11320,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMULHRSW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#11#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMULHUW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10795,6 +11334,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMULHUW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#228#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMULHW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10802,6 +11348,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMULHW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#229#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMULLD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10809,6 +11362,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMULLD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#64#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMULLW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10816,6 +11376,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMULLW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#213#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMULUDQ;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10823,6 +11390,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMULUDQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#244#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPOR;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10830,6 +11404,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPOR;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#235#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSADBW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10837,6 +11418,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSADBW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#246#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSHUFB;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10844,6 +11432,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSHUFB;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#0#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSHUFD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8,ot_none);
@@ -10851,6 +11446,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSHUFD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8,ot_none);
+ code : #241#242#244#248#1#112#72#22;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSHUFHW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8,ot_none);
@@ -10858,6 +11460,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSHUFHW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8,ot_none);
+ code : #219#242#244#248#1#112#72#22;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSHUFLW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8,ot_none);
@@ -10865,6 +11474,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSHUFLW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8,ot_none);
+ code : #220#242#244#248#1#112#72#22;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSIGNB;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10872,6 +11488,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSIGNB;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#8#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSIGND;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10879,6 +11502,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSIGND;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#10#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSIGNW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10886,6 +11516,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSIGNW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#9#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSLLD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_bits8,ot_none);
@@ -10900,6 +11537,20 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSLLD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+ code : #241#242#244#248#1#114#60#142#22;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPSLLD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_xmmrm,ot_none);
+ code : #241#242#244#248#1#242#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSLLDQ;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_bits8,ot_none);
@@ -10907,6 +11558,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSLLDQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+ code : #241#242#244#248#1#115#60#143#22;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSLLQ;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10921,6 +11579,20 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSLLQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_xmmrm,ot_none);
+ code : #241#242#244#248#1#243#61#80;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPSLLQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+ code : #241#242#244#248#1#115#60#142#22;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSLLW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_bits8,ot_none);
@@ -10935,6 +11607,20 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSLLW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+ code : #241#242#244#248#1#113#60#142#22;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPSLLW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_xmmrm,ot_none);
+ code : #241#242#244#248#1#241#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSRAD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_bits8,ot_none);
@@ -10949,6 +11635,20 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSRAD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+ code : #241#242#244#248#1#114#60#140#22;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPSRAD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_xmmrm,ot_none);
+ code : #241#242#244#248#1#226#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSRAW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_bits8,ot_none);
@@ -10963,6 +11663,20 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSRAW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+ code : #241#242#244#248#1#113#60#140#22;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPSRAW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_xmmrm,ot_none);
+ code : #241#242#244#248#1#225#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSRLD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_bits8,ot_none);
@@ -10977,6 +11691,20 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSRLD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+ code : #241#242#244#248#1#114#60#138#22;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPSRLD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_xmmrm,ot_none);
+ code : #241#242#244#248#1#210#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSRLDQ;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_bits8,ot_none);
@@ -10984,6 +11712,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSRLDQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+ code : #241#242#244#248#1#115#60#139#22;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSRLQ;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_bits8,ot_none);
@@ -10998,6 +11733,20 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSRLQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+ code : #241#242#244#248#1#115#60#138#22;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPSRLQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_xmmrm,ot_none);
+ code : #241#242#244#248#1#211#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSRLW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_bits8,ot_none);
@@ -11012,6 +11761,20 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSRLW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+ code : #241#242#244#248#1#113#60#138#22;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPSRLW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_xmmrm,ot_none);
+ code : #241#242#244#248#1#209#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSUBB;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -11019,6 +11782,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSUBB;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#248#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSUBD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -11026,6 +11796,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSUBD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#250#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSUBQ;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -11033,6 +11810,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSUBQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#251#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSUBSB;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -11040,6 +11824,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSUBSB;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#232#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSUBSW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -11047,6 +11838,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSUBSW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#233#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSUBUSB;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -11054,6 +11852,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSUBUSB;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#216#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSUBUSW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -11061,6 +11866,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSUBUSW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#217#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSUBW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -11068,6 +11880,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSUBW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#249#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPTEST;
ops : 2;
optypes : (ot_ymmreg,ot_ymmrm,ot_none,ot_none);
@@ -11089,6 +11908,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPUNPCKHBW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#104#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPUNPCKHDQ;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -11096,6 +11922,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPUNPCKHDQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#106#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPUNPCKHQDQ;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -11103,6 +11936,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPUNPCKHQDQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#109#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPUNPCKHWD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -11110,6 +11950,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPUNPCKHWD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#105#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPUNPCKLBW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -11117,6 +11964,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPUNPCKLBW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#96#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPUNPCKLDQ;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -11124,6 +11978,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPUNPCKLDQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#98#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPUNPCKLQDQ;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -11131,6 +11992,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPUNPCKLQDQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#108#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPUNPCKLWD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -11138,6 +12006,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPUNPCKLWD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#97#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPXOR;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -11145,6 +12020,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPXOR;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#239#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VRCPPS;
ops : 2;
optypes : (ot_xmmreg,ot_xmmrm,ot_none,ot_none);
@@ -11605,5 +12487,999 @@
optypes : (ot_reg32,ot_rm_gpr or ot_bits32,ot_reg32,ot_none);
code : #220#242#249#1#247#62#72;
flags : if_bmi2
+ ),
+ (
+ opcode : A_VBROADCASTI128;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_memory or ot_bits128,ot_none,ot_none);
+ code : #241#242#244#249#1#90#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VEXTRACTI128;
+ ops : 3;
+ optypes : (ot_xmmrm,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+ code : #241#242#244#250#1#57#65#22;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VINSERTI128;
+ ops : 4;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_xmmrm,ot_immediate or ot_bits8);
+ code : #241#242#244#250#1#56#61#80#23;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPBLENDD;
+ ops : 4;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8);
+ code : #241#242#244#250#1#2#61#80#23;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPBLENDD;
+ ops : 4;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8);
+ code : #241#242#250#1#2#61#80#23;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPBROADCASTB;
+ ops : 2;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_none,ot_none);
+ code : #241#242#249#1#120#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPBROADCASTB;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none);
+ code : #241#242#244#249#1#120#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPBROADCASTB;
+ ops : 2;
+ optypes : (ot_xmmreg,ot_memory or ot_bits8,ot_none,ot_none);
+ code : #241#242#249#1#120#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPBROADCASTB;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_memory or ot_bits8,ot_none,ot_none);
+ code : #241#242#244#249#1#120#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPBROADCASTD;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none);
+ code : #241#242#244#249#1#88#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPBROADCASTD;
+ ops : 2;
+ optypes : (ot_xmmreg,ot_memory or ot_bits32,ot_none,ot_none);
+ code : #241#242#249#1#88#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPBROADCASTD;
+ ops : 2;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_none,ot_none);
+ code : #241#242#249#1#88#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPBROADCASTD;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_memory or ot_bits32,ot_none,ot_none);
+ code : #241#242#244#249#1#88#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPBROADCASTQ;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_memory or ot_bits64,ot_none,ot_none);
+ code : #241#242#244#249#1#89#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPBROADCASTQ;
+ ops : 2;
+ optypes : (ot_xmmreg,ot_memory or ot_bits64,ot_none,ot_none);
+ code : #241#242#249#1#89#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPBROADCASTQ;
+ ops : 2;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_none,ot_none);
+ code : #241#242#249#1#89#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPBROADCASTQ;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none);
+ code : #241#242#244#249#1#89#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPBROADCASTW;
+ ops : 2;
+ optypes : (ot_xmmreg,ot_memory or ot_bits16,ot_none,ot_none);
+ code : #241#242#249#1#121#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPBROADCASTW;
+ ops : 2;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_none,ot_none);
+ code : #241#242#249#1#121#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPBROADCASTW;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_memory or ot_bits16,ot_none,ot_none);
+ code : #241#242#244#249#1#121#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPBROADCASTW;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none);
+ code : #241#242#244#249#1#121#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPERM2I128;
+ ops : 4;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8);
+ code : #241#242#244#250#1#70#61#80#23;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPERMD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#54#61#80;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPERMPD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8,ot_none);
+ code : #241#242#243#244#250#1#1#72#22;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPERMPS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#22#61#80;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPERMQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8,ot_none);
+ code : #241#242#243#244#250#1#0#72#22;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPMASKMOVD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_memory or ot_bits128,ot_none);
+ code : #241#242#249#1#140#61#80;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPMASKMOVD;
+ ops : 3;
+ optypes : (ot_memory or ot_bits128,ot_xmmreg,ot_xmmreg,ot_none);
+ code : #241#242#249#1#142#61#66;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPMASKMOVD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_memory or ot_bits256,ot_none);
+ code : #241#242#244#249#1#140#61#80;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPMASKMOVD;
+ ops : 3;
+ optypes : (ot_memory or ot_bits256,ot_ymmreg,ot_ymmreg,ot_none);
+ code : #241#242#244#249#1#142#61#66;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPMASKMOVQ;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_memory or ot_bits128,ot_none);
+ code : #241#242#243#249#1#140#61#80;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPMASKMOVQ;
+ ops : 3;
+ optypes : (ot_memory or ot_bits128,ot_xmmreg,ot_xmmreg,ot_none);
+ code : #241#242#243#249#1#142#61#66;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPMASKMOVQ;
+ ops : 3;
+ optypes : (ot_memory or ot_bits256,ot_ymmreg,ot_ymmreg,ot_none);
+ code : #241#242#243#244#249#1#142#61#66;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPMASKMOVQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_memory or ot_bits256,ot_none);
+ code : #241#242#243#244#249#1#140#61#80;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPSLLVD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#71#61#80;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPSLLVD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#71#61#80;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPSLLVQ;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#243#249#1#71#61#80;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPSLLVQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#243#244#249#1#71#61#80;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPSRAVD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#70#61#80;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPSRAVD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#70#61#80;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPSRLVD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#69#61#80;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPSRLVD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#69#61#80;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPSRLVQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#243#244#249#1#69#61#80;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPSRLVQ;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#243#249#1#69#61#80;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VFMADD132PD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#152#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADD132PD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#243#1#152#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADD213PD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#168#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADD213PD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#243#1#168#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADD231PD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#184#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADD231PD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#243#1#184#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADDPD;
+ ops : 4;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_xmmreg);
+ code : #241#242#250#1#105#61#80#247;
+ flags : if_fma4
+ ),
+ (
+ opcode : A_VFMADDPD;
+ ops : 4;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmreg,ot_xmmrm);
+ code : #241#242#250#243#1#105#61#88#246;
+ flags : if_fma4
+ ),
+ (
+ opcode : A_VFMADD132PS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#152#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADD132PS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#152#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADD213PS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#168#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADD213PS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#168#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADD231PS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#184#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADD231PS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#184#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADD132SD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#153#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADD213SD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#169#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADD231SD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#185#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADD132SS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#153#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADD213SS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#169#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADD231SS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#185#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADDSUB132PD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#150#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADDSUB132PD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#243#1#150#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADDSUB213PD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#166#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADDSUB213PD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#243#1#166#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADDSUB231PD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#182#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADDSUB231PD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#243#1#182#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADDSUB132PS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#150#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADDSUB132PS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#150#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADDSUB213PS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#166#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADDSUB213PS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#166#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADDSUB231PS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#182#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADDSUB231PS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#182#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUBADD132PD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#151#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUBADD132PD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#243#1#151#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUBADD213PD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#167#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUBADD213PD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#243#1#167#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUBADD231PD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#183#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUBADD231PD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#243#1#183#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUBADD132PS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#151#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUBADD132PS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#151#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUBADD213PS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#167#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUBADD213PS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#167#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUBADD231PS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#183#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUBADD231PS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#183#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUB132PD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#154#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUB132PD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#243#1#154#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUB213PD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#170#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUB213PD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#243#1#170#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUB231PD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#186#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUB231PD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#243#1#186#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUB132PS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#154#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUB132PS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#154#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUB213PS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#170#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUB213PS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#170#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUB231PS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#186#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUB231PS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#186#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUB132SD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#155#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUB213SD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#171#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUB231SD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#187#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUB132SS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#155#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUB213SS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#171#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUB231SS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#187#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMADD132PD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#156#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMADD132PD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#243#1#156#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMADD213PD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#172#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMADD213PD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#243#1#172#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMADD231PD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#188#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMADD231PD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#243#1#188#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMADD132PS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#156#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMADD132PS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#156#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMADD213PS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#172#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMADD213PS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#172#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMADD231PS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#188#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMADD231PS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#188#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMADD132SD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#157#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMADD213SD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#173#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMADD231SD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#189#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMADD132SS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#157#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMADD213SS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#173#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMADD231SS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#189#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMSUB132PD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#158#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMSUB132PD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#243#1#158#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMSUB213PD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#174#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMSUB213PD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#243#1#174#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMSUB231PD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#190#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMSUB231PD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#243#1#190#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMSUB132PS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#158#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMSUB132PS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#158#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMSUB213PS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#174#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMSUB213PS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#174#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMSUB231PS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#190#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMSUB231PS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#190#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMSUB132SD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#159#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMSUB213SD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#175#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMSUB231SD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#191#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMSUB132SS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#159#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMSUB213SS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#175#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMSUB231SS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#191#61#80;
+ flags : if_fma
)
);
diff --git a/compiler/i386/n386ld.pas b/compiler/i386/n386ld.pas
new file mode 100644
index 0000000000..a078081fdc
--- /dev/null
+++ b/compiler/i386/n386ld.pas
@@ -0,0 +1,61 @@
+{
+ Copyright (c) 1998-2014 by Florian Klaempfl
+
+ Generate i386 assembler for load nodes
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+ ****************************************************************************
+}
+unit n386ld;
+
+{$i fpcdefs.inc}
+
+interface
+
+ uses
+ globtype,
+ symsym,
+ node,ncgld,pass_1;
+
+ type
+ ti386loadnode = class(tcgloadnode)
+ procedure generate_absaddr_access(vs: tabsolutevarsym); override;
+ end;
+
+
+implementation
+
+ uses
+ globals,
+ symcpu,
+ nld,
+ cpubase;
+
+{*****************************************************************************
+ TI386LOADNODE
+*****************************************************************************}
+
+ procedure ti386loadnode.generate_absaddr_access(vs: tabsolutevarsym);
+ begin
+ if tcpuabsolutevarsym(symtableentry).absseg then
+ location.reference.segment:=NR_FS;
+ inherited;
+ end;
+
+
+begin
+ cloadnode:=ti386loadnode;
+end.
diff --git a/compiler/i386/n386mem.pas b/compiler/i386/n386mem.pas
index 01ff4d70dd..04e6e99063 100644
--- a/compiler/i386/n386mem.pas
+++ b/compiler/i386/n386mem.pas
@@ -28,10 +28,13 @@ interface
uses
globtype,
cgbase,cpuinfo,cpubase,
- node,nmem,ncgmem,nx86mem;
+ node,nmem,ncgmem,nx86mem,ni86mem;
type
- ti386addrnode = class(tcgaddrnode)
+ ti386addrnode = class(ti86addrnode)
+ protected
+ procedure set_absvarsym_resultdef; override;
+ public
procedure pass_generate_code;override;
end;
@@ -44,7 +47,7 @@ implementation
uses
systems,
cutils,verbose,
- symdef,paramgr,
+ symconst,symdef,symcpu,paramgr,
aasmtai,aasmdata,
nld,ncon,nadd,
cgutils,cgobj;
@@ -53,8 +56,16 @@ implementation
TI386ADDRNODE
*****************************************************************************}
- procedure ti386addrnode.pass_generate_code;
+ procedure ti386addrnode.set_absvarsym_resultdef;
+ begin
+ if not(nf_typedaddr in flags) then
+ resultdef:=voidnearfspointertype
+ else
+ resultdef:=tcpupointerdefclass(cpointerdef).createx86(left.resultdef,x86pt_near_fs);
+ end;
+
+ procedure ti386addrnode.pass_generate_code;
begin
inherited pass_generate_code;
{ for use of other segments, not used }
diff --git a/compiler/i386/popt386.pas b/compiler/i386/popt386.pas
index c1f21d6fae..23849b41ff 100644
--- a/compiler/i386/popt386.pas
+++ b/compiler/i386/popt386.pas
@@ -2292,6 +2292,7 @@ end;
procedure PostPeepHoleOpts(asml: TAsmList; BlockStart, BlockEnd: tai);
var
p,hp1,hp2: tai;
+ IsTestConstX: boolean;
begin
p := BlockStart;
while (p <> BlockEnd) Do
@@ -2397,22 +2398,22 @@ See test/tgadint64 in the test suite.
A_TEST, A_OR:
{removes the line marked with (x) from the sequence
and/or/xor/add/sub/... $x, %y
- test/or %y, %y (x)
+ test/or %y, %y | test $-1, %y (x)
j(n)z _Label
- as the first instruction already adjusts the ZF}
+ as the first instruction already adjusts the ZF
+ %y operand may also be a reference }
begin
- if OpsEqual(taicpu(p).oper[0]^,taicpu(p).oper[1]^) then
- if GetLastInstruction(p, hp1) and
+ IsTestConstX:=(taicpu(p).opcode=A_TEST) and
+ MatchOperand(taicpu(p).oper[0]^,-1);
+ if (OpsEqual(taicpu(p).oper[0]^,taicpu(p).oper[1]^) or IsTestConstX) and
+ GetLastInstruction(p, hp1) and
(tai(hp1).typ = ait_instruction) and
GetNextInstruction(p,hp2) and
- (hp2.typ = ait_instruction) and
- ((taicpu(hp2).opcode = A_SETcc) or
- (taicpu(hp2).opcode = A_Jcc) or
- (taicpu(hp2).opcode = A_CMOVcc)) then
+ MatchInstruction(hp2,A_SETcc,A_Jcc,A_CMOVcc,[]) then
case taicpu(hp1).opcode Of
A_ADD, A_SUB, A_OR, A_XOR, A_AND:
begin
- if OpsEqual(taicpu(hp1).oper[1]^,taicpu(p).oper[0]^) and
+ if OpsEqual(taicpu(hp1).oper[1]^,taicpu(p).oper[1]^) and
{ does not work in case of overflow for G(E)/L(E)/C_O/C_NO }
{ and in case of carry for A(E)/B(E)/C/NC }
((taicpu(hp2).condition in [C_Z,C_NZ,C_E,C_NE]) or
@@ -2428,7 +2429,7 @@ See test/tgadint64 in the test suite.
end;
A_SHL, A_SAL, A_SHR, A_SAR:
begin
- if OpsEqual(taicpu(hp1).oper[1]^,taicpu(p).oper[0]^) and
+ if OpsEqual(taicpu(hp1).oper[1]^,taicpu(p).oper[1]^) and
{ SHL/SAL/SHR/SAR with a value of 0 do not change the flags }
{ therefore, it's only safe to do this optimization for }
{ shifts by a (nonzero) constant }
@@ -2447,7 +2448,7 @@ See test/tgadint64 in the test suite.
end;
A_DEC, A_INC, A_NEG:
begin
- if OpsEqual(taicpu(hp1).oper[0]^,taicpu(p).oper[0]^) and
+ if OpsEqual(taicpu(hp1).oper[0]^,taicpu(p).oper[1]^) and
{ does not work in case of overflow for G(E)/L(E)/C_O/C_NO }
{ and in case of carry for A(E)/B(E)/C/NC }
(taicpu(hp2).condition in [C_Z,C_NZ,C_E,C_NE]) then
@@ -2472,7 +2473,15 @@ See test/tgadint64 in the test suite.
continue
end;
end
- end
+ else
+ { change "test $-1,%reg" into "test %reg,%reg" }
+ if IsTestConstX and (taicpu(p).oper[1]^.typ=top_reg) then
+ taicpu(p).loadoper(0,taicpu(p).oper[1]^);
+ end { case }
+ else
+ { change "test $-1,%reg" into "test %reg,%reg" }
+ if IsTestConstX and (taicpu(p).oper[1]^.typ=top_reg) then
+ taicpu(p).loadoper(0,taicpu(p).oper[1]^);
end;
end;
end;
diff --git a/compiler/i386/symcpu.pas b/compiler/i386/symcpu.pas
new file mode 100644
index 0000000000..9fbc65bab5
--- /dev/null
+++ b/compiler/i386/symcpu.pas
@@ -0,0 +1,211 @@
+{
+ Copyright (c) 2014 by Florian Klaempfl
+
+ Symbol table overrides for i386
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+ ****************************************************************************
+}
+unit symcpu;
+
+{$i fpcdefs.inc}
+
+interface
+
+uses
+ symtype,symdef,symsym,symx86,symi86;
+
+type
+ { defs }
+ tcpufiledef = class(tfiledef)
+ end;
+ tcpufiledefclass = class of tcpufiledef;
+
+ tcpuvariantdef = class(tvariantdef)
+ end;
+ tcpuvariantdefclass = class of tcpuvariantdef;
+
+ tcpuformaldef = class(tformaldef)
+ end;
+ tcpuformaldefclass = class of tcpuformaldef;
+
+ tcpuforwarddef = class(tforwarddef)
+ end;
+ tcpuforwarddefclass = class of tcpuforwarddef;
+
+ tcpuundefineddef = class(tundefineddef)
+ end;
+ tcpuundefineddefclass = class of tcpuundefineddef;
+
+ tcpuerrordef = class(terrordef)
+ end;
+ tcpuerrordefclass = class of tcpuerrordef;
+
+ tcpupointerdef = class(tx86pointerdef)
+ end;
+ tcpupointerdefclass = class of tcpupointerdef;
+
+ tcpurecorddef = class(trecorddef)
+ end;
+ tcpurecorddefclass = class of tcpurecorddef;
+
+ tcpuimplementedinterface = class(timplementedinterface)
+ end;
+ tcpuimplementedinterfaceclass = class of tcpuimplementedinterface;
+
+ tcpuobjectdef = class(tobjectdef)
+ end;
+ tcpuobjectdefclass = class of tcpuobjectdef;
+
+ tcpuclassrefdef = class(tclassrefdef)
+ end;
+ tcpuclassrefdefclass = class of tcpuclassrefdef;
+
+ tcpuarraydef = class(tarraydef)
+ end;
+ tcpuarraydefclass = class of tcpuarraydef;
+
+ tcpuorddef = class(torddef)
+ end;
+ tcpuorddefclass = class of tcpuorddef;
+
+ tcpufloatdef = class(tfloatdef)
+ end;
+ tcpufloatdefclass = class of tcpufloatdef;
+
+ tcpuprocvardef = class(ti86procvardef)
+ end;
+ tcpuprocvardefclass = class of tcpuprocvardef;
+
+ tcpuprocdef = class(ti86procdef)
+ end;
+ tcpuprocdefclass = class of tcpuprocdef;
+
+ tcpustringdef = class(tstringdef)
+ end;
+ tcpustringdefclass = class of tcpustringdef;
+
+ tcpuenumdef = class(tenumdef)
+ end;
+ tcpuenumdefclass = class of tcpuenumdef;
+
+ tcpusetdef = class(tsetdef)
+ end;
+ tcpusetdefclass = class of tcpusetdef;
+
+ { syms }
+ tcpulabelsym = class(tlabelsym)
+ end;
+ tcpulabelsymclass = class of tcpulabelsym;
+
+ tcpuunitsym = class(tunitsym)
+ end;
+ tcpuunitsymclass = class of tcpuunitsym;
+
+ tcpunamespacesym = class(tnamespacesym)
+ end;
+ tcpunamespacesymclass = class of tcpunamespacesym;
+
+ tcpuprocsym = class(tprocsym)
+ end;
+ tcpuprocsymclass = class of tcpuprocsym;
+
+ tcputypesym = class(ttypesym)
+ end;
+ tcpuypesymclass = class of tcputypesym;
+
+ tcpufieldvarsym = class(tfieldvarsym)
+ end;
+ tcpufieldvarsymclass = class of tcpufieldvarsym;
+
+ tcpulocalvarsym = class(tlocalvarsym)
+ end;
+ tcpulocalvarsymclass = class of tcpulocalvarsym;
+
+ tcpuparavarsym = class(tparavarsym)
+ end;
+ tcpuparavarsymclass = class of tcpuparavarsym;
+
+ tcpustaticvarsym = class(tstaticvarsym)
+ end;
+ tcpustaticvarsymclass = class of tcpustaticvarsym;
+
+ tcpuabsolutevarsym = class(ti86absolutevarsym)
+ end;
+ tcpuabsolutevarsymclass = class of tcpuabsolutevarsym;
+
+ tcpupropertysym = class(tpropertysym)
+ end;
+ tcpupropertysymclass = class of tcpupropertysym;
+
+ tcpuconstsym = class(tconstsym)
+ end;
+ tcpuconstsymclass = class of tcpuconstsym;
+
+ tcpuenumsym = class(tenumsym)
+ end;
+ tcpuenumsymclass = class of tcpuenumsym;
+
+ tcpusyssym = class(tsyssym)
+ end;
+ tcpusyssymclass = class of tcpusyssym;
+
+
+const
+ pbestrealtype : ^tdef = @s80floattype;
+
+
+implementation
+
+begin
+ { used tdef classes }
+ cfiledef:=tcpufiledef;
+ cvariantdef:=tcpuvariantdef;
+ cformaldef:=tcpuformaldef;
+ cforwarddef:=tcpuforwarddef;
+ cundefineddef:=tcpuundefineddef;
+ cerrordef:=tcpuerrordef;
+ cpointerdef:=tcpupointerdef;
+ crecorddef:=tcpurecorddef;
+ cimplementedinterface:=tcpuimplementedinterface;
+ cobjectdef:=tcpuobjectdef;
+ cclassrefdef:=tcpuclassrefdef;
+ carraydef:=tcpuarraydef;
+ corddef:=tcpuorddef;
+ cfloatdef:=tcpufloatdef;
+ cprocvardef:=tcpuprocvardef;
+ cprocdef:=tcpuprocdef;
+ cstringdef:=tcpustringdef;
+ cenumdef:=tcpuenumdef;
+ csetdef:=tcpusetdef;
+
+ { used tsym classes }
+ clabelsym:=tcpulabelsym;
+ cunitsym:=tcpuunitsym;
+ cnamespacesym:=tcpunamespacesym;
+ cprocsym:=tcpuprocsym;
+ ctypesym:=tcputypesym;
+ cfieldvarsym:=tcpufieldvarsym;
+ clocalvarsym:=tcpulocalvarsym;
+ cparavarsym:=tcpuparavarsym;
+ cstaticvarsym:=tcpustaticvarsym;
+ cabsolutevarsym:=tcpuabsolutevarsym;
+ cpropertysym:=tcpupropertysym;
+ cconstsym:=tcpuconstsym;
+ cenumsym:=tcpuenumsym;
+ csyssym:=tcpusyssym;
+end.
+
diff --git a/compiler/i8086/cgcpu.pas b/compiler/i8086/cgcpu.pas
index e291f61304..8b56d671e2 100644
--- a/compiler/i8086/cgcpu.pas
+++ b/compiler/i8086/cgcpu.pas
@@ -120,8 +120,9 @@ unit cgcpu;
globals,verbose,systems,cutils,
paramgr,procinfo,fmodule,
rgcpu,rgx86,cpuinfo,
- symtype,symsym,
- tgobj;
+ symtype,symsym,symcpu,
+ tgobj,
+ hlcgobj;
function use_push(const cgpara:tcgpara):boolean;
begin
@@ -192,15 +193,12 @@ unit cgcpu;
weak: boolean);
var
sym : tasmsymbol;
- r : treference;
begin
if not(weak) then
sym:=current_asmdata.RefAsmSymbol(s)
else
sym:=current_asmdata.WeakRefAsmSymbol(s);
- reference_reset_symbol(r,sym,0,sizeof(pint));
- r.refaddr:=addr_far;
- list.concat(taicpu.op_ref(A_CALL,S_NO,r));
+ list.concat(taicpu.op_sym(A_CALL,S_FAR,sym));
end;
@@ -216,12 +214,9 @@ unit cgcpu;
procedure tcg8086.a_call_name_static_far(list: TAsmList; const s: string);
var
sym : tasmsymbol;
- r : treference;
begin
sym:=current_asmdata.RefAsmSymbol(s);
- reference_reset_symbol(r,sym,0,sizeof(pint));
- r.refaddr:=addr_far;
- list.concat(taicpu.op_ref(A_CALL,S_NO,r));
+ list.concat(taicpu.op_sym(A_CALL,S_FAR,sym));
end;
@@ -251,8 +246,8 @@ unit cgcpu;
a_load_reg_ref(list,OS_32,OS_32,reg,href);
cg.getcpuregister(list,NR_BX);
cg.getcpuregister(list,NR_SI);
- href.refaddr:=addr_far_ref;
- list.concat(taicpu.op_ref(A_CALL,S_NO,href));
+ href.segment:=NR_NO;
+ list.concat(taicpu.op_ref(A_CALL,S_FAR,href));
tg.ungettemp(list,href);
end;
@@ -1032,43 +1027,135 @@ unit cgcpu;
procedure tcg8086.a_loadaddr_ref_cgpara(list : TAsmList;const r : treference;const cgpara : tcgpara);
var
tmpreg : tregister;
- opsize : topsize;
tmpref : treference;
begin
with r do
begin
if use_push(cgpara) then
begin
- cgpara.check_simple_location;
- opsize:=tcgsize2opsize[OS_ADDR];
- if (segment=NR_NO) and (base=NR_NO) and (index=NR_NO) then
+ if tcgsize2size[cgpara.Size] > 2 then
begin
- if assigned(symbol) then
+ if tcgsize2size[cgpara.Size] <> 4 then
+ internalerror(2014032401);
+ if cgpara.location^.Next = nil then
+ begin
+ if tcgsize2size[cgpara.location^.size] <> 4 then
+ internalerror(2014032401);
+ end
+ else
+ begin
+ if tcgsize2size[cgpara.location^.size] <> 2 then
+ internalerror(2014032401);
+ if tcgsize2size[cgpara.location^.Next^.size] <> 2 then
+ internalerror(2014032401);
+ if cgpara.location^.Next^.Next <> nil then
+ internalerror(2014032401);
+ end;
+ if cgpara.alignment > 4 then
+ internalerror(2014032401);
+
+ if segment<>NR_NO then
+ begin
+ list.concat(Taicpu.op_reg(A_PUSH,S_W,segment));
+ tmpref:=r;
+ tmpref.segment:=NR_NO;
+ tmpreg:=getaddressregister(list);
+ a_loadaddr_ref_reg(list,tmpref,tmpreg);
+ list.concat(taicpu.op_reg(A_PUSH,S_W,tmpreg));
+ end
+ else
begin
- if current_settings.cputype < cpu_186 then
+ if (base=NR_NO) and (index=NR_NO) then
begin
+ if assigned(symbol) then
+ begin
+ tmpref:=r;
+ tmpref.refaddr:=addr_seg;
+ tmpref.offset:=0;
+ if current_settings.cputype < cpu_186 then
+ begin
+ tmpreg:=getaddressregister(list);
+ a_load_ref_reg(list,OS_16,OS_16,tmpref,tmpreg);
+ list.concat(taicpu.op_reg(A_PUSH,S_W,tmpreg));
+ end
+ else
+ list.concat(Taicpu.Op_ref(A_PUSH,S_W,tmpref));
+ if current_settings.cputype < cpu_186 then
+ begin
+ tmpreg:=getaddressregister(list);
+ a_loadaddr_ref_reg(list,r,tmpreg);
+ list.concat(taicpu.op_reg(A_PUSH,S_W,tmpreg));
+ end
+ else
+ list.concat(Taicpu.Op_sym_ofs(A_PUSH,S_W,symbol,offset));
+ end
+ else
+ internalerror(2014032402);
+ end
+ else if assigned(symbol) then
+ begin
+ reference_reset_symbol(tmpref,r.symbol,0,0);
+ tmpref.refaddr:=addr_seg;
+ if current_settings.cputype < cpu_186 then
+ begin
+ tmpreg:=getaddressregister(list);
+ a_load_ref_reg(list,OS_16,OS_16,tmpref,tmpreg);
+ list.concat(taicpu.op_reg(A_PUSH,S_W,tmpreg));
+ end
+ else
+ list.concat(Taicpu.Op_ref(A_PUSH,S_W,tmpref));
tmpreg:=getaddressregister(list);
a_loadaddr_ref_reg(list,r,tmpreg);
- list.concat(taicpu.op_reg(A_PUSH,opsize,tmpreg));
+ list.concat(taicpu.op_reg(A_PUSH,S_W,tmpreg));
+ end
+ else if base=NR_BP then
+ begin
+ list.concat(Taicpu.op_reg(A_PUSH,S_W,NR_SS));
+ tmpreg:=getaddressregister(list);
+ a_loadaddr_ref_reg(list,r,tmpreg);
+ list.concat(taicpu.op_reg(A_PUSH,S_W,tmpreg));
end
else
- list.concat(Taicpu.Op_sym_ofs(A_PUSH,opsize,symbol,offset));
- end
- else
- push_const(list,OS_ADDR,offset);
+ internalerror(2014032403);
+ end;
end
- else if (segment=NR_NO) and (base=NR_NO) and (index<>NR_NO) and
- (offset=0) and (scalefactor=0) and (symbol=nil) then
- list.concat(Taicpu.Op_reg(A_PUSH,opsize,index))
- else if (segment=NR_NO) and (base<>NR_NO) and (index=NR_NO) and
- (offset=0) and (symbol=nil) then
- list.concat(Taicpu.Op_reg(A_PUSH,opsize,base))
else
begin
- tmpreg:=getaddressregister(list);
- a_loadaddr_ref_reg(list,r,tmpreg);
- list.concat(taicpu.op_reg(A_PUSH,opsize,tmpreg));
- end;
+ cgpara.check_simple_location;
+ tmpref:=r;
+ tmpref.segment:=NR_NO;
+ with tmpref do
+ begin
+ if (base=NR_NO) and (index=NR_NO) then
+ begin
+ if assigned(symbol) then
+ begin
+ if current_settings.cputype < cpu_186 then
+ begin
+ tmpreg:=getaddressregister(list);
+ a_loadaddr_ref_reg(list,tmpref,tmpreg);
+ list.concat(taicpu.op_reg(A_PUSH,S_W,tmpreg));
+ end
+ else
+ list.concat(Taicpu.Op_sym_ofs(A_PUSH,S_W,symbol,offset));
+ end
+ else
+ push_const(list,OS_16,offset);
+ end
+ else if (base=NR_NO) and (index<>NR_NO) and
+ (offset=0) and (scalefactor=0) and (symbol=nil) then
+ list.concat(Taicpu.Op_reg(A_PUSH,S_W,index))
+ else if (base<>NR_NO) and (index=NR_NO) and
+ (offset=0) and (symbol=nil) then
+ list.concat(Taicpu.Op_reg(A_PUSH,S_W,base))
+ else
+ begin
+ tmpreg:=getaddressregister(list);
+ a_loadaddr_ref_reg(list,tmpref,tmpreg);
+ list.concat(taicpu.op_reg(A_PUSH,S_W,tmpreg));
+ end;
+ end;
+ end;
end
else
inherited a_loadaddr_ref_cgpara(list,r,cgpara);
@@ -1598,10 +1685,26 @@ unit cgcpu;
end;
current_asmdata.getjumplabel(hl_skip);
- ai:=Taicpu.Op_Sym(A_Jcc,S_NO,hl_skip);
- ai.SetCondition(flags_to_cond(invf));
- ai.is_jmp:=true;
- list.concat(ai);
+ { we can't just forward invf to a_jmp_flags for FA,FAE,FB and FBE, because
+ in the case of NaNs:
+ not(F_FA )<>F_FBE
+ not(F_FAE)<>F_FB
+ not(F_FB )<>F_FAE
+ not(F_FBE)<>F_FA
+ }
+ case f of
+ F_FA,F_FAE:
+ invf:=FPUFlags2Flags[invf];
+ F_FB,F_FBE:
+ begin
+ ai:=Taicpu.op_sym(A_Jcc,S_NO,hl_skip);
+ ai.SetCondition(C_P);
+ ai.is_jmp:=true;
+ list.concat(ai);
+ invf:=FPUFlags2Flags[invf];
+ end;
+ end;
+ a_jmp_flags(list,invf,hl_skip);
{ 16-bit INC is shorter than 8-bit }
hreg16:=makeregsize(list,reg,OS_16);
@@ -1652,7 +1755,7 @@ unit cgcpu;
stacksize : longint;
ret_instr: TAsmOp;
begin
- if po_far in current_procinfo.procdef.procoptions then
+ if is_proc_far(current_procinfo.procdef) then
ret_instr:=A_RETF
else
ret_instr:=A_RET;
@@ -1737,6 +1840,7 @@ unit cgcpu;
var
power : longint;
opsize : topsize;
+ saved_ds: Boolean;
begin
{ get stack space }
getcpuregister(list,NR_DI);
@@ -1779,13 +1883,31 @@ unit cgcpu;
list.concat(Taicpu.Op_reg_reg(A_MOV,S_W,NR_SP,NR_DI));
{$ifdef volatile_es}
- list.concat(taicpu.op_reg(A_PUSH,S_W,NR_DS));
+ list.concat(taicpu.op_reg(A_PUSH,S_W,NR_SS));
list.concat(taicpu.op_reg(A_POP,S_W,NR_ES));
{$endif volatile_es}
{ Allocate SI and load it with source }
getcpuregister(list,NR_SI);
- a_loadaddr_ref_reg(list,ref,NR_SI);
+ if ((ref.segment=NR_NO) and (segment_regs_equal(NR_SS,NR_DS) or (ref.base<>NR_BP))) or
+ (is_segment_reg(ref.segment) and segment_regs_equal(ref.segment,NR_DS)) then
+ begin
+ hlcg.a_loadaddr_ref_reg(list,voidnearpointertype,voidnearpointertype,ref,NR_SI);
+ saved_ds:=false;
+ end
+ else
+ begin
+ hlcg.a_loadaddr_ref_reg(list,voidnearpointertype,voidnearpointertype,ref,NR_SI);
+ list.concat(taicpu.op_reg(A_PUSH,S_W,NR_DS));
+ saved_ds:=true;
+ if ref.segment<>NR_NO then
+ list.concat(taicpu.op_reg(A_PUSH,S_W,ref.segment))
+ else if ref.base=NR_BP then
+ list.concat(taicpu.op_reg(A_PUSH,S_W,NR_SS))
+ else
+ internalerror(2014040403);
+ list.concat(taicpu.op_reg(A_POP,S_W,NR_DS));
+ end;
{ calculate size }
opsize:=S_B;
@@ -1825,10 +1947,14 @@ unit cgcpu;
ungetcpuregister(list,NR_DI);
ungetcpuregister(list,NR_CX);
ungetcpuregister(list,NR_SI);
+ if saved_ds then
+ list.concat(taicpu.op_reg(A_POP,S_W,NR_DS));
{ patch the new address, but don't use a_load_reg_reg, that will add a move instruction
that can confuse the reg allocator }
list.concat(Taicpu.Op_reg_reg(A_MOV,S_W,NR_SP,destreg));
+ if current_settings.x86memorymodel in x86_far_data_models then
+ list.concat(Taicpu.Op_reg_reg(A_MOV,S_W,NR_SS,GetNextReg(destreg)));
end;
@@ -1986,40 +2112,41 @@ unit cgcpu;
(hsym.typ=paravarsym)) then
internalerror(200305251);
paraloc:=tparavarsym(hsym).paraloc[callerside].location;
- while paraloc<>nil do
- with paraloc^ do
- begin
- case loc of
- LOC_REGISTER:
- a_op_const_reg(list,OP_SUB,size,ioffset,register);
- LOC_REFERENCE:
- begin
- { offset in the wrapper needs to be adjusted for the stored
- return address }
- if (reference.index<>NR_BP) and (reference.index<>NR_BX) and (reference.index<>NR_DI)
- and (reference.index<>NR_SI) then
- begin
- list.concat(taicpu.op_reg(A_PUSH,S_W,NR_DI));
- list.concat(taicpu.op_reg_reg(A_MOV,S_W,reference.index,NR_DI));
+ with paraloc^ do
+ begin
+ case loc of
+ LOC_REGISTER:
+ a_op_const_reg(list,OP_SUB,size,ioffset,register);
+ LOC_REFERENCE:
+ begin
+ { offset in the wrapper needs to be adjusted for the stored
+ return address }
+ if (reference.index<>NR_BP) and (reference.index<>NR_BX) and (reference.index<>NR_DI)
+ and (reference.index<>NR_SI) then
+ begin
+ list.concat(taicpu.op_reg(A_PUSH,S_W,NR_DI));
+ list.concat(taicpu.op_reg_reg(A_MOV,S_W,reference.index,NR_DI));
- if reference.index=NR_SP then
- reference_reset_base(href,NR_DI,reference.offset+return_address_size+2,sizeof(pint))
- else
- reference_reset_base(href,NR_DI,reference.offset+return_address_size,sizeof(pint));
- a_op_const_ref(list,OP_SUB,size,ioffset,href);
- list.concat(taicpu.op_reg(A_POP,S_W,NR_DI));
- end
- else
- begin
- reference_reset_base(href,reference.index,reference.offset+return_address_size,sizeof(pint));
- a_op_const_ref(list,OP_SUB,size,ioffset,href);
- end;
- end
- else
- internalerror(200309189);
- end;
- paraloc:=next;
+ if reference.index=NR_SP then
+ reference_reset_base(href,NR_DI,reference.offset+return_address_size+2,sizeof(pint))
+ else
+ reference_reset_base(href,NR_DI,reference.offset+return_address_size,sizeof(pint));
+ href.segment:=NR_SS;
+ a_op_const_ref(list,OP_SUB,size,ioffset,href);
+ list.concat(taicpu.op_reg(A_POP,S_W,NR_DI));
+ end
+ else
+ begin
+ reference_reset_base(href,reference.index,reference.offset+return_address_size,sizeof(pint));
+ href.segment:=NR_SS;
+ a_op_const_ref(list,OP_SUB,size,ioffset,href);
+ end;
+ end
+ else
+ internalerror(200309189);
end;
+ paraloc:=next;
+ end;
end;
@@ -2075,7 +2202,12 @@ unit cgcpu;
inc(selfoffsetfromsp,2);
list.concat(taicpu.op_reg_reg(A_mov,S_W,NR_SP,NR_DI));
reference_reset_base(href,NR_DI,selfoffsetfromsp+offs+2,2);
- cg.a_load_ref_reg(list,OS_ADDR,OS_ADDR,href,NR_BX);
+ if not segment_regs_equal(NR_SS,NR_DS) then
+ href.segment:=NR_SS;
+ if current_settings.x86memorymodel in x86_near_data_models then
+ cg.a_load_ref_reg(list,OS_16,OS_16,href,NR_BX)
+ else
+ list.concat(taicpu.op_ref_reg(A_LES,S_W,href,NR_BX));
list.concat(taicpu.op_reg(A_POP,S_W,NR_DI));
end
else
@@ -2088,26 +2220,42 @@ unit cgcpu;
href : treference;
begin
{ mov 0(%bx),%bx ; load vmt}
- reference_reset_base(href,NR_BX,0,2);
- cg.a_load_ref_reg(list,OS_ADDR,OS_ADDR,href,NR_BX);
+ if current_settings.x86memorymodel in x86_near_data_models then
+ begin
+ reference_reset_base(href,NR_BX,0,2);
+ cg.a_load_ref_reg(list,OS_16,OS_16,href,NR_BX);
+ end
+ else
+ begin
+ reference_reset_base(href,NR_BX,0,2);
+ href.segment:=NR_ES;
+ list.concat(taicpu.op_ref_reg(A_LES,S_W,href,NR_BX));
+ end;
end;
procedure loadmethodoffstobx;
var
href : treference;
+ srcseg: TRegister;
begin
if (procdef.extnumber=$ffff) then
Internalerror(200006139);
+ if current_settings.x86memorymodel in x86_far_data_models then
+ srcseg:=NR_ES
+ else
+ srcseg:=NR_NO;
if current_settings.x86memorymodel in x86_far_code_models then
begin
{ mov vmtseg(%bx),%si ; method seg }
reference_reset_base(href,NR_BX,tobjectdef(procdef.struct).vmtmethodoffset(procdef.extnumber)+2,2);
- cg.a_load_ref_reg(list,OS_ADDR,OS_ADDR,href,NR_SI);
+ href.segment:=srcseg;
+ cg.a_load_ref_reg(list,OS_16,OS_16,href,NR_SI);
end;
{ mov vmtoffs(%bx),%bx ; method offs }
reference_reset_base(href,NR_BX,tobjectdef(procdef.struct).vmtmethodoffset(procdef.extnumber),2);
- cg.a_load_ref_reg(list,OS_ADDR,OS_ADDR,href,NR_BX);
+ href.segment:=srcseg;
+ cg.a_load_ref_reg(list,OS_16,OS_16,href,NR_BX);
end;
@@ -2162,11 +2310,13 @@ unit cgcpu;
reference_reset_base(href,NR_DI,6,2)
else
reference_reset_base(href,NR_DI,4,2);
+ if not segment_regs_equal(NR_DS,NR_SS) then
+ href.segment:=NR_SS;
list.concat(taicpu.op_reg_reg(A_MOV,S_W,NR_SP,NR_DI));
list.concat(taicpu.op_reg_ref(A_MOV,S_W,NR_BX,href));
if current_settings.x86memorymodel in x86_far_code_models then
begin
- reference_reset_base(href,NR_DI,8,2);
+ inc(href.offset,2);
list.concat(taicpu.op_reg_ref(A_MOV,S_W,NR_SI,href));
end;
@@ -2193,11 +2343,7 @@ unit cgcpu;
lab:=current_asmdata.RefAsmSymbol(procdef.mangledname);
if current_settings.x86memorymodel in x86_far_code_models then
- begin
- reference_reset_symbol(href,lab,0,sizeof(pint));
- href.refaddr:=addr_far;
- list.concat(taicpu.op_ref(A_JMP,S_NO,href));
- end
+ list.concat(taicpu.op_sym(A_JMP,S_FAR,lab))
else
list.concat(taicpu.op_sym(A_JMP,S_NO,lab));
end;
diff --git a/compiler/i8086/cpuinfo.pas b/compiler/i8086/cpuinfo.pas
index db536a1416..d68369b947 100644
--- a/compiler/i8086/cpuinfo.pas
+++ b/compiler/i8086/cpuinfo.pas
@@ -123,7 +123,7 @@ Const
cs_opt_tailrecursion,cs_opt_nodecse,cs_useebp,
cs_opt_reorder_fields,cs_opt_fastmath];
- level1optimizerswitches = genericlevel1optimizerswitches + [cs_opt_peephole];
+ level1optimizerswitches = genericlevel1optimizerswitches;
level2optimizerswitches = genericlevel2optimizerswitches + level1optimizerswitches +
[{cs_opt_regvar,}cs_opt_stackframe,cs_opt_tailrecursion{,cs_opt_nodecse}];
level3optimizerswitches = genericlevel3optimizerswitches + level2optimizerswitches + [{,cs_opt_loopunroll}];
diff --git a/compiler/i8086/cpunode.pas b/compiler/i8086/cpunode.pas
index 047a211279..59208c5b8b 100644
--- a/compiler/i8086/cpunode.pas
+++ b/compiler/i8086/cpunode.pas
@@ -50,11 +50,16 @@ unit cpunode;
n8086add,
n8086cal,
n8086cnv,
+ n8086ld,
n8086mem{,
n386set},
n8086inl,
n8086mat,
- n8086con
+ n8086con,
+ { these are not really nodes }
+ n8086tcon,tgcpu,
+ { symtable }
+ symcpu
;
end.
diff --git a/compiler/i8086/cpupara.pas b/compiler/i8086/cpupara.pas
index bc720dd011..bc5934202e 100644
--- a/compiler/i8086/cpupara.pas
+++ b/compiler/i8086/cpupara.pas
@@ -67,7 +67,7 @@ unit cpupara;
uses
cutils,
systems,verbose,
- symtable,
+ symtable,symcpu,
defutil;
const
@@ -418,13 +418,15 @@ unit cpupara;
paracgsize : tcgsize;
firstparaloc,
pushaddr : boolean;
+ pushleftright: boolean;
begin
paraalign:=get_para_align(p.proccalloption);
- { we push Flags and CS as long
- to cope with the IRETD
- and we save 6 register + 4 selectors }
+ { interrupt routines need parameter fixup }
if po_interrupt in p.procoptions then
- inc(parasize,8+6*4+4*2);
+ if is_proc_far(p) then
+ dec(parasize,6)
+ else
+ dec(parasize,4);
{ Offset is calculated like:
sub esp,12
mov [esp+8],para3
@@ -434,20 +436,21 @@ unit cpupara;
That means for pushes the para with the
highest offset (see para3) needs to be pushed first
}
- if p.proccalloption in pushleftright_pocalls then
+ pushleftright:=(p.proccalloption in pushleftright_pocalls) or (po_interrupt in p.procoptions);
+ if pushleftright then
i:=paras.count-1
else
i:=0;
- while ((p.proccalloption in pushleftright_pocalls) and (i>=0)) or
- (not(p.proccalloption in pushleftright_pocalls) and (i<=paras.count-1)) do
+ while (pushleftright and (i>=0)) or
+ (not(pushleftright) and (i<=paras.count-1)) do
begin
hp:=tparavarsym(paras[i]);
paradef:=hp.vardef;
pushaddr:=push_addr_param(hp.varspez,paradef,p.proccalloption);
if pushaddr then
begin
- paralen:=sizeof(aint);
- paracgsize:=OS_ADDR;
+ paralen:=voidpointertype.size;
+ paracgsize:=int_cgsize(voidpointertype.size);
paradef:=getpointerdef(paradef);
end
else
@@ -496,7 +499,7 @@ unit cpupara;
if side=calleeside then
begin
inc(paraloc^.reference.offset,target_info.first_parm_offset);
- if po_far in p.procoptions then
+ if is_proc_far(p) then
inc(paraloc^.reference.offset,2);
end;
parasize:=align(parasize+paralen,varalign);
@@ -546,7 +549,7 @@ unit cpupara;
else
{ return addres }
inc(paraloc^.reference.offset,2);
- if po_far in p.procoptions then
+ if is_proc_far(p) then
inc(paraloc^.reference.offset,2);
end;
parasize:=align(parasize+l,varalign);
@@ -554,7 +557,7 @@ unit cpupara;
firstparaloc:=false;
end;
end;
- if p.proccalloption in pushleftright_pocalls then
+ if pushleftright then
dec(i)
else
inc(i);
@@ -606,8 +609,8 @@ unit cpupara;
pushaddr:=push_addr_param(hp.varspez,hp.vardef,p.proccalloption);
if pushaddr then
begin
- paralen:=sizeof(aint);
- paracgsize:=OS_ADDR;
+ paralen:=voidpointertype.size;
+ paracgsize:=int_cgsize(voidpointertype.size);
paradef:=getpointerdef(paradef);
end
else
@@ -669,7 +672,7 @@ unit cpupara;
if side=calleeside then
begin
inc(paraloc^.reference.offset,target_info.first_parm_offset);
- if po_far in p.procoptions then
+ if is_proc_far(p) then
inc(paraloc^.reference.offset,2);
end;
parasize:=align(parasize+paralen,varalign);
@@ -692,8 +695,8 @@ unit cpupara;
end
else
begin
- { We can allocate at maximum 32 bits per location }
- if paralen>sizeof(aint) then
+ { We can allocate at maximum 16 bits per location }
+ if paralen>=sizeof(aint) then
begin
l:=sizeof(aint);
paraloc^.def:=uinttype;
@@ -714,7 +717,7 @@ unit cpupara;
if side=calleeside then
begin
inc(paraloc^.reference.offset,target_info.first_parm_offset);
- if po_far in p.procoptions then
+ if is_proc_far(p) then
inc(paraloc^.reference.offset,2);
end;
parasize:=align(parasize+l,varalign);
diff --git a/compiler/i8086/hlcgcpu.pas b/compiler/i8086/hlcgcpu.pas
index 70bbc0f64b..0f31abd3c3 100644
--- a/compiler/i8086/hlcgcpu.pas
+++ b/compiler/i8086/hlcgcpu.pas
@@ -29,7 +29,7 @@ unit hlcgcpu;
interface
uses
- globals,
+ globals,globtype,
aasmdata,
symtype,symdef,parabase,
cgbase,cgutils,
@@ -37,10 +37,41 @@ interface
type
+
+ { thlcgcpu }
+
thlcgcpu = class(thlcgx86)
+ private
+ { checks whether the type needs special methodptr-like handling, when stored
+ in a LOC_REGISTER location. This applies to the following types:
+ - i8086 method pointers (incl. 6-byte mixed near + far),
+ - 6-byte records (only in the medium and compact memory model are these
+ loaded in a register)
+ - nested proc ptrs
+ When stored in a LOC_REGISTER tlocation, these types use both register
+ and registerhi with the following sizes:
+
+ register - cgsize = int_cgsize(voidcodepointertype.size)
+ registerhi - cgsize = int_cgsize(voidpointertype.size) }
+ function is_methodptr_like_type(d:tdef): boolean;
+
+ { 4-byte records in registers need special handling as well. A record may
+ be located in registerhi:register if it was converted from a procvar or
+ in GetNextReg(register):register if it was converted from a longint.
+ We can tell between the two by checking whether registerhi has been set. }
+ function is_fourbyterecord(d:tdef): boolean;
protected
procedure gen_loadfpu_loc_cgpara(list: TAsmList; size: tdef; const l: tlocation; const cgpara: tcgpara; locintsize: longint); override;
public
+ function getaddressregister(list:TAsmList;size:tdef):Tregister;override;
+
+ procedure reference_reset_base(var ref: treference; regsize: tdef; reg: tregister; offset, alignment: longint); override;
+
+ function a_call_name(list : TAsmList;pd : tprocdef;const s : TSymStr; const paras: array of pcgpara; forceresdef: tdef; weak: boolean): tcgpara;override;
+
+ procedure a_load_loc_ref(list : TAsmList;fromsize, tosize: tdef; const loc: tlocation; const ref : treference);override;
+ procedure a_loadaddr_ref_reg(list : TAsmList;fromsize, tosize : tdef;const ref : treference;r : tregister);override;
+
procedure g_copyvaluepara_openarray(list: TAsmList; const ref: treference; const lenloc: tlocation; arrdef: tarraydef; destreg: tregister); override;
procedure g_releasevaluepara_openarray(list: TAsmList; arrdef: tarraydef; const l: tlocation); override;
@@ -52,14 +83,37 @@ interface
implementation
uses
- globtype,verbose,
+ verbose,
paramgr,
cpubase,cpuinfo,tgobj,cgobj,cgcpu,
defutil,
- symconst;
+ symconst,symcpu,
+ procinfo,fmodule,
+ aasmcpu;
{ thlcgcpu }
+ function thlcgcpu.is_methodptr_like_type(d: tdef): boolean;
+ var
+ is_sixbyterecord,is_methodptr,is_nestedprocptr: Boolean;
+ begin
+ is_sixbyterecord:=(d.typ=recorddef) and (d.size=6);
+ is_methodptr:=(d.typ=procvardef)
+ and (po_methodpointer in tprocvardef(d).procoptions)
+ and not(po_addressonly in tprocvardef(d).procoptions);
+ is_nestedprocptr:=(d.typ=procvardef)
+ and is_nested_pd(tprocvardef(d))
+ and not(po_addressonly in tprocvardef(d).procoptions);
+ result:=is_sixbyterecord or is_methodptr or is_nestedprocptr;
+ end;
+
+
+ function thlcgcpu.is_fourbyterecord(d: tdef): boolean;
+ begin
+ result:=(d.typ=recorddef) and (d.size=4);
+ end;
+
+
procedure thlcgcpu.gen_loadfpu_loc_cgpara(list: TAsmList; size: tdef; const l: tlocation; const cgpara: tcgpara; locintsize: longint);
var
locsize : tcgsize;
@@ -83,10 +137,10 @@ implementation
(cgpara.location^.reference.index=NR_STACK_POINTER_REG) then
begin
cg.g_stackpointer_alloc(list,stacksize);
- reference_reset_base(href,NR_STACK_POINTER_REG,0,sizeof(pint));
+ reference_reset_base(href,voidstackpointertype,NR_STACK_POINTER_REG,0,voidstackpointertype.size);
end
else
- reference_reset_base(href,cgpara.location^.reference.index,cgpara.location^.reference.offset,cgpara.alignment);
+ reference_reset_base(href,voidstackpointertype,cgpara.location^.reference.index,cgpara.location^.reference.offset,cgpara.alignment);
cg.a_loadfpu_reg_ref(list,locsize,locsize,l.register,href);
end;
LOC_FPUREGISTER:
@@ -128,10 +182,10 @@ implementation
(cgpara.location^.reference.index=NR_STACK_POINTER_REG) then
begin
cg.g_stackpointer_alloc(list,stacksize);
- reference_reset_base(href,NR_STACK_POINTER_REG,0,sizeof(pint));
+ reference_reset_base(href,voidstackpointertype,NR_STACK_POINTER_REG,0,voidstackpointertype.size);
end
else
- reference_reset_base(href,cgpara.location^.reference.index,cgpara.location^.reference.offset,cgpara.alignment);
+ reference_reset_base(href,voidstackpointertype,cgpara.location^.reference.index,cgpara.location^.reference.offset,cgpara.alignment);
cg.a_loadmm_reg_ref(list,locsize,locsize,l.register,href,mms_movescalar);
end;
LOC_FPUREGISTER:
@@ -157,7 +211,7 @@ implementation
cg.a_load_ref_cgpara(list,locsize,l.reference,cgpara)
else
begin
- reference_reset_base(href,cgpara.location^.reference.index,cgpara.location^.reference.offset,cgpara.alignment);
+ reference_reset_base(href,voidstackpointertype,cgpara.location^.reference.index,cgpara.location^.reference.offset,cgpara.alignment);
cg.g_concatcopy(list,l.reference,href,stacksize);
end;
end;
@@ -175,6 +229,139 @@ implementation
end;
+ function thlcgcpu.getaddressregister(list: TAsmList; size: tdef): Tregister;
+ begin
+ { implicit pointer types on i8086 follow the default data pointer size for
+ the current memory model }
+ if is_implicit_pointer_object_type(size) or is_implicit_array_pointer(size) then
+ size:=voidpointertype;
+
+ if is_farpointer(size) or is_hugepointer(size) then
+ Result:=cg.getintregister(list,OS_32)
+ else
+ Result:=cg.getintregister(list,OS_16);
+ end;
+
+
+ procedure thlcgcpu.reference_reset_base(var ref: treference; regsize: tdef;
+ reg: tregister; offset, alignment: longint);
+ begin
+ inherited reference_reset_base(ref, regsize, reg, offset, alignment);
+
+ { implicit pointer types on i8086 follow the default data pointer size for
+ the current memory model }
+ if is_implicit_pointer_object_type(regsize) or is_implicit_array_pointer(regsize) then
+ regsize:=voidpointertype;
+
+ if regsize.typ=pointerdef then
+ case tcpupointerdef(regsize).x86pointertyp of
+ x86pt_near:
+ ;
+ x86pt_near_cs:
+ ref.segment:=NR_CS;
+ x86pt_near_ds:
+ ref.segment:=NR_DS;
+ x86pt_near_ss:
+ ref.segment:=NR_SS;
+ x86pt_near_es:
+ ref.segment:=NR_ES;
+ x86pt_near_fs:
+ ref.segment:=NR_FS;
+ x86pt_near_gs:
+ ref.segment:=NR_GS;
+ x86pt_far,
+ x86pt_huge:
+ ref.segment:=GetNextReg(reg);
+ end;
+ end;
+
+
+ function thlcgcpu.a_call_name(list : TAsmList;pd : tprocdef;const s : TSymStr; const paras: array of pcgpara; forceresdef: tdef; weak: boolean): tcgpara;
+ begin
+ if is_proc_far(pd) then
+ begin
+ { far calls to the same module (in $HUGECODE off mode) can be optimized
+ to push cs + call near, because they are in the same segment }
+ if not (cs_huge_code in current_settings.moduleswitches) and
+ pd.owner.iscurrentunit and not (po_external in pd.procoptions) then
+ begin
+ list.concat(Taicpu.Op_reg(A_PUSH,S_W,NR_CS));
+ tcg8086(cg).a_call_name_near(list,s,weak);
+ end
+ else
+ tcg8086(cg).a_call_name_far(list,s,weak);
+ end
+ else
+ tcg8086(cg).a_call_name_near(list,s,weak);
+ result:=get_call_result_cgpara(pd,forceresdef);
+ end;
+
+
+ procedure thlcgcpu.a_load_loc_ref(list: TAsmList; fromsize, tosize: tdef; const loc: tlocation; const ref: treference);
+ var
+ tmpref: treference;
+ begin
+ if is_methodptr_like_type(tosize) and (loc.loc in [LOC_REGISTER,LOC_CREGISTER]) then
+ begin
+ tmpref:=ref;
+ a_load_reg_ref(list,voidcodepointertype,voidcodepointertype,loc.register,tmpref);
+ inc(tmpref.offset,voidcodepointertype.size);
+ a_load_reg_ref(list,voidpointertype,voidpointertype,loc.registerhi,tmpref);
+ end
+ else if is_fourbyterecord(tosize) and (loc.loc in [LOC_REGISTER,LOC_CREGISTER]) then
+ begin
+ tmpref:=ref;
+ cg.a_load_reg_ref(list,OS_16,OS_16,loc.register,tmpref);
+ inc(tmpref.offset,2);
+ if loc.registerhi<>tregister(0) then
+ cg.a_load_reg_ref(list,OS_16,OS_16,loc.registerhi,tmpref)
+ else
+ cg.a_load_reg_ref(list,OS_16,OS_16,GetNextReg(loc.register),tmpref);
+ end
+ else
+ inherited a_load_loc_ref(list, fromsize, tosize, loc, ref);
+ end;
+
+
+ procedure thlcgcpu.a_loadaddr_ref_reg(list: TAsmList; fromsize, tosize: tdef; const ref: treference; r: tregister);
+ var
+ tmpref,segref: treference;
+ begin
+ { step 1: call the x86 low level code generator to handle the offset;
+ we set the segment to NR_NO to disable the i8086 segment handling code
+ in the low level cg (which can be removed, once all calls to
+ a_loadaddr_ref_reg go through the high level code generator) }
+ tmpref:=ref;
+ tmpref.segment:=NR_NO;
+ cg.a_loadaddr_ref_reg(list, tmpref, r);
+
+ { step 2: if destination is a far pointer, we have to pass a segment as well }
+ if is_farpointer(tosize) or is_hugepointer(tosize) then
+ begin
+ { if a segment register is specified in ref, we use that }
+ if ref.segment<>NR_NO then
+ begin
+ if is_segment_reg(ref.segment) then
+ list.concat(Taicpu.op_reg_reg(A_MOV,S_W,ref.segment,GetNextReg(r)))
+ else
+ cg.a_load_reg_reg(list,OS_16,OS_16,ref.segment,GetNextReg(r));
+ end
+ { references relative to a symbol use the segment of the symbol,
+ which can be obtained by the SEG directive }
+ else if assigned(ref.symbol) then
+ begin
+ reference_reset_symbol(segref,ref.symbol,0,0);
+ segref.refaddr:=addr_seg;
+ cg.a_load_ref_reg(current_asmdata.CurrAsmList,OS_16,OS_16,segref,GetNextReg(r));
+ end
+ else if ref.base=NR_BP then
+ list.concat(Taicpu.op_reg_reg(A_MOV,S_W,NR_SS,GetNextReg(r)))
+ else
+ internalerror(2014032801);
+ end;
+ end;
+
+
procedure thlcgcpu.g_copyvaluepara_openarray(list: TAsmList; const ref: treference; const lenloc: tlocation; arrdef: tarraydef; destreg: tregister);
begin
if paramanager.use_fixed_stack then
@@ -200,50 +387,20 @@ implementation
procedure thlcgcpu.location_force_mem(list: TAsmList; var l: tlocation; size: tdef);
var
r,tmpref: treference;
- is_sixbyterecord: Boolean;
- is_fourbyterecord: Boolean;
- is_methodptr: Boolean;
- is_nestedprocptr: Boolean;
begin
- is_sixbyterecord:=(size.typ=recorddef) and (size.size=6);
- is_fourbyterecord:=(size.typ=recorddef) and (size.size=4);
- is_methodptr:=(size.typ=procvardef)
- and (po_methodpointer in tprocvardef(size).procoptions)
- and not(po_addressonly in tprocvardef(size).procoptions);
- is_nestedprocptr:=(size.typ=procvardef)
- and is_nested_pd(tprocvardef(size))
- and not(po_addressonly in tprocvardef(size).procoptions);
-
- { handle i8086 method pointers (incl. 6-byte mixed near + far),
- 6-byte records and nested proc ptrs }
- if (is_sixbyterecord or is_methodptr or is_nestedprocptr) and (l.loc in [LOC_REGISTER,LOC_CREGISTER]) then
+ if is_methodptr_like_type(size) and (l.loc in [LOC_REGISTER,LOC_CREGISTER]) then
begin
tg.gethltemp(list,size,size.size,tt_normal,r);
tmpref:=r;
- if current_settings.x86memorymodel in x86_far_code_models then
- begin
- cg.a_load_reg_ref(list,OS_32,OS_32,l.register,tmpref);
- inc(tmpref.offset,4);
- end
- else
- begin
- cg.a_load_reg_ref(list,OS_16,OS_16,l.register,tmpref);
- inc(tmpref.offset,2);
- end;
- if current_settings.x86memorymodel in x86_far_data_models then
- cg.a_load_reg_ref(list,OS_32,OS_32,l.registerhi,tmpref)
- else
- cg.a_load_reg_ref(list,OS_16,OS_16,l.registerhi,tmpref);
+ a_load_reg_ref(list,voidcodepointertype,voidcodepointertype,l.register,tmpref);
+ inc(tmpref.offset,voidcodepointertype.size);
+ a_load_reg_ref(list,voidpointertype,voidpointertype,l.registerhi,tmpref);
location_reset_ref(l,LOC_REFERENCE,l.size,0);
l.reference:=r;
end
- { 4-byte records in registers need special handling as well. A record may
- be located in registerhi:register if it was converted from a procvar or
- in GetNextReg(register):register if it was converted from a longint.
- We can tell between the two by checking whether registerhi has been set. }
- else if is_fourbyterecord and (l.loc in [LOC_REGISTER,LOC_CREGISTER]) then
+ else if is_fourbyterecord(size) and (l.loc in [LOC_REGISTER,LOC_CREGISTER]) then
begin
tg.gethltemp(list,size,size.size,tt_normal,r);
tmpref:=r;
diff --git a/compiler/i8086/i8086att.inc b/compiler/i8086/i8086att.inc
index ed2f7848a1..3611f09fd0 100644
--- a/compiler/i8086/i8086att.inc
+++ b/compiler/i8086/i8086att.inc
@@ -951,6 +951,26 @@
'sarx',
'shlx',
'shrx',
+'vbroadcasti128',
+'vextracti128',
+'vinserti128',
+'vpblendd',
+'vpbroadcastb',
+'vpbroadcastd',
+'vpbroadcastq',
+'vpbroadcastw',
+'vperm2i128',
+'vpermd',
+'vpermpd',
+'vpermps',
+'vpermq',
+'vpmaskmovd',
+'vpmaskmovq',
+'vpsllvd',
+'vpsllvq',
+'vpsravd',
+'vpsrlvd',
+'vpsrlvq',
'add4s',
'brkem',
'clr1',
@@ -964,5 +984,66 @@
'ror4',
'set1',
'sub4s',
-'test1'
+'test1',
+'vfmadd132pd',
+'vfmadd213pd',
+'vfmadd231pd',
+'vfmaddpd',
+'vfmadd132ps',
+'vfmadd213ps',
+'vfmadd231ps',
+'vfmadd132sd',
+'vfmadd213sd',
+'vfmadd231sd',
+'vfmadd132ss',
+'vfmadd213ss',
+'vfmadd231ss',
+'vfmaddsub132pd',
+'vfmaddsub213pd',
+'vfmaddsub231pd',
+'vfmaddsub132ps',
+'vfmaddsub213ps',
+'vfmaddsub231ps',
+'vfmsubadd132pd',
+'vfmsubadd213pd',
+'vfmsubadd231pd',
+'vfmsubadd132ps',
+'vfmsubadd213ps',
+'vfmsubadd231ps',
+'vfmsub132pd',
+'vfmsub213pd',
+'vfmsub231pd',
+'vfmsub132ps',
+'vfmsub213ps',
+'vfmsub231ps',
+'vfmsub132sd',
+'vfmsub213sd',
+'vfmsub231sd',
+'vfmsub132ss',
+'vfmsub213ss',
+'vfmsub231ss',
+'vfnmadd132pd',
+'vfnmadd213pd',
+'vfnmadd231pd',
+'vfnmadd132ps',
+'vfnmadd213ps',
+'vfnmadd231ps',
+'vfnmadd132sd',
+'vfnmadd213sd',
+'vfnmadd231sd',
+'vfnmadd132ss',
+'vfnmadd213ss',
+'vfnmadd231ss',
+'vfnmsub132pd',
+'vfnmsub213pd',
+'vfnmsub231pd',
+'vfnmsub132ps',
+'vfnmsub213ps',
+'vfnmsub231ps',
+'vfnmsub132sd',
+'vfnmsub213sd',
+'vfnmsub231sd',
+'vfnmsub132ss',
+'vfnmsub213ss',
+'vfnmsub231ss'
);
diff --git a/compiler/i8086/i8086atts.inc b/compiler/i8086/i8086atts.inc
index 5a53788dd6..c0c039b318 100644
--- a/compiler/i8086/i8086atts.inc
+++ b/compiler/i8086/i8086atts.inc
@@ -964,5 +964,86 @@ attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
attsufNONE
);
diff --git a/compiler/i8086/i8086int.inc b/compiler/i8086/i8086int.inc
index dc4ebb3dd2..5070c54d44 100644
--- a/compiler/i8086/i8086int.inc
+++ b/compiler/i8086/i8086int.inc
@@ -951,6 +951,26 @@
'sarx',
'shlx',
'shrx',
+'vbroadcasti128',
+'vextracti128',
+'vinserti128',
+'vpblendd',
+'vpbroadcastb',
+'vpbroadcastd',
+'vpbroadcastq',
+'vpbroadcastw',
+'vperm2i128',
+'vpermd',
+'vpermpd',
+'vpermps',
+'vpermq',
+'vpmaskmovd',
+'vpmaskmovq',
+'vpsllvd',
+'vpsllvq',
+'vpsravd',
+'vpsrlvd',
+'vpsrlvq',
'add4s',
'brkem',
'clr1',
@@ -964,5 +984,66 @@
'ror4',
'set1',
'sub4s',
-'test1'
+'test1',
+'vfmadd132pd',
+'vfmadd213pd',
+'vfmadd231pd',
+'vfmaddpd',
+'vfmadd132ps',
+'vfmadd213ps',
+'vfmadd231ps',
+'vfmadd132sd',
+'vfmadd213sd',
+'vfmadd231sd',
+'vfmadd132ss',
+'vfmadd213ss',
+'vfmadd231ss',
+'vfmaddsub132pd',
+'vfmaddsub213pd',
+'vfmaddsub231pd',
+'vfmaddsub132ps',
+'vfmaddsub213ps',
+'vfmaddsub231ps',
+'vfmsubadd132pd',
+'vfmsubadd213pd',
+'vfmsubadd231pd',
+'vfmsubadd132ps',
+'vfmsubadd213ps',
+'vfmsubadd231ps',
+'vfmsub132pd',
+'vfmsub213pd',
+'vfmsub231pd',
+'vfmsub132ps',
+'vfmsub213ps',
+'vfmsub231ps',
+'vfmsub132sd',
+'vfmsub213sd',
+'vfmsub231sd',
+'vfmsub132ss',
+'vfmsub213ss',
+'vfmsub231ss',
+'vfnmadd132pd',
+'vfnmadd213pd',
+'vfnmadd231pd',
+'vfnmadd132ps',
+'vfnmadd213ps',
+'vfnmadd231ps',
+'vfnmadd132sd',
+'vfnmadd213sd',
+'vfnmadd231sd',
+'vfnmadd132ss',
+'vfnmadd213ss',
+'vfnmadd231ss',
+'vfnmsub132pd',
+'vfnmsub213pd',
+'vfnmsub231pd',
+'vfnmsub132ps',
+'vfnmsub213ps',
+'vfnmsub231ps',
+'vfnmsub132sd',
+'vfnmsub213sd',
+'vfnmsub231sd',
+'vfnmsub132ss',
+'vfnmsub213ss',
+'vfnmsub231ss'
);
diff --git a/compiler/i8086/i8086nop.inc b/compiler/i8086/i8086nop.inc
index 80c4fcebce..bc6da38bd0 100644
--- a/compiler/i8086/i8086nop.inc
+++ b/compiler/i8086/i8086nop.inc
@@ -1,2 +1,2 @@
{ don't edit, this file is generated from x86ins.dat }
-1686;
+1954;
diff --git a/compiler/i8086/i8086op.inc b/compiler/i8086/i8086op.inc
index 48dbdd334d..4bdf54716e 100644
--- a/compiler/i8086/i8086op.inc
+++ b/compiler/i8086/i8086op.inc
@@ -951,6 +951,26 @@ A_RORX,
A_SARX,
A_SHLX,
A_SHRX,
+A_VBROADCASTI128,
+A_VEXTRACTI128,
+A_VINSERTI128,
+A_VPBLENDD,
+A_VPBROADCASTB,
+A_VPBROADCASTD,
+A_VPBROADCASTQ,
+A_VPBROADCASTW,
+A_VPERM2I128,
+A_VPERMD,
+A_VPERMPD,
+A_VPERMPS,
+A_VPERMQ,
+A_VPMASKMOVD,
+A_VPMASKMOVQ,
+A_VPSLLVD,
+A_VPSLLVQ,
+A_VPSRAVD,
+A_VPSRLVD,
+A_VPSRLVQ,
A_ADD4S,
A_BRKEM,
A_CLR1,
@@ -964,5 +984,66 @@ A_ROL4,
A_ROR4,
A_SET1,
A_SUB4S,
-A_TEST1
+A_TEST1,
+A_VFMADD132PD,
+A_VFMADD213PD,
+A_VFMADD231PD,
+A_VFMADDPD,
+A_VFMADD132PS,
+A_VFMADD213PS,
+A_VFMADD231PS,
+A_VFMADD132SD,
+A_VFMADD213SD,
+A_VFMADD231SD,
+A_VFMADD132SS,
+A_VFMADD213SS,
+A_VFMADD231SS,
+A_VFMADDSUB132PD,
+A_VFMADDSUB213PD,
+A_VFMADDSUB231PD,
+A_VFMADDSUB132PS,
+A_VFMADDSUB213PS,
+A_VFMADDSUB231PS,
+A_VFMSUBADD132PD,
+A_VFMSUBADD213PD,
+A_VFMSUBADD231PD,
+A_VFMSUBADD132PS,
+A_VFMSUBADD213PS,
+A_VFMSUBADD231PS,
+A_VFMSUB132PD,
+A_VFMSUB213PD,
+A_VFMSUB231PD,
+A_VFMSUB132PS,
+A_VFMSUB213PS,
+A_VFMSUB231PS,
+A_VFMSUB132SD,
+A_VFMSUB213SD,
+A_VFMSUB231SD,
+A_VFMSUB132SS,
+A_VFMSUB213SS,
+A_VFMSUB231SS,
+A_VFNMADD132PD,
+A_VFNMADD213PD,
+A_VFNMADD231PD,
+A_VFNMADD132PS,
+A_VFNMADD213PS,
+A_VFNMADD231PS,
+A_VFNMADD132SD,
+A_VFNMADD213SD,
+A_VFNMADD231SD,
+A_VFNMADD132SS,
+A_VFNMADD213SS,
+A_VFNMADD231SS,
+A_VFNMSUB132PD,
+A_VFNMSUB213PD,
+A_VFNMSUB231PD,
+A_VFNMSUB132PS,
+A_VFNMSUB213PS,
+A_VFNMSUB231PS,
+A_VFNMSUB132SD,
+A_VFNMSUB213SD,
+A_VFNMSUB231SD,
+A_VFNMSUB132SS,
+A_VFNMSUB213SS,
+A_VFNMSUB231SS
);
diff --git a/compiler/i8086/i8086prop.inc b/compiler/i8086/i8086prop.inc
index 47e1495c0d..ce6c618d3c 100644
--- a/compiler/i8086/i8086prop.inc
+++ b/compiler/i8086/i8086prop.inc
@@ -953,6 +953,26 @@
(Ch: (Ch_Rop1, Ch_Rop2, Ch_Wop3)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
@@ -964,5 +984,66 @@
(Ch: (Ch_Mop1, Ch_RWEAX, Ch_None)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
-(Ch: (Ch_WFlags, Ch_Rop1, Ch_Rop2))
+(Ch: (Ch_WFlags, Ch_Rop1, Ch_Rop2)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1))
);
diff --git a/compiler/i8086/i8086tab.inc b/compiler/i8086/i8086tab.inc
index a661cd5fd5..61096c18d4 100644
--- a/compiler/i8086/i8086tab.inc
+++ b/compiler/i8086/i8086tab.inc
@@ -8702,6 +8702,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VBROADCASTSD;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none);
+ code : #241#242#244#249#1#25#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VBROADCASTSS;
ops : 2;
optypes : (ot_ymmreg,ot_memory or ot_bits32,ot_none,ot_none);
@@ -8716,6 +8723,20 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VBROADCASTSS;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none);
+ code : #241#242#244#249#1#24#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VBROADCASTSS;
+ ops : 2;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_none,ot_none);
+ code : #241#242#249#1#24#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VCMPPD;
ops : 4;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8);
@@ -8816,7 +8837,7 @@
(
opcode : A_VCVTDQ2PD;
ops : 2;
- optypes : (ot_ymmreg,ot_ymmreg,ot_none,ot_none);
+ optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none);
code : #219#242#244#248#1#230#72;
flags : if_avx or if_sandybridge
),
@@ -9759,6 +9780,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VMOVNTDQA;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_memory or ot_bits256,ot_none,ot_none);
+ code : #241#242#244#249#1#42#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VMOVNTPD;
ops : 2;
optypes : (ot_memory or ot_bits256,ot_ymmreg,ot_none,ot_none);
@@ -9948,6 +9976,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VMPSADBW;
+ ops : 4;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8);
+ code : #241#242#244#250#1#66#61#80#23;
+ flags : if_avx2
+ ),
+ (
opcode : A_VMULPD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10032,6 +10067,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPABSB;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_ymmrm,ot_none,ot_none);
+ code : #241#242#244#249#1#28#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPABSD;
ops : 2;
optypes : (ot_xmmreg,ot_xmmrm,ot_none,ot_none);
@@ -10039,6 +10081,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPABSD;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_ymmrm,ot_none,ot_none);
+ code : #241#242#244#249#1#30#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPABSW;
ops : 2;
optypes : (ot_xmmreg,ot_xmmrm,ot_none,ot_none);
@@ -10046,6 +10095,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPABSW;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_ymmrm,ot_none,ot_none);
+ code : #241#242#244#249#1#29#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPACKSSDW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10053,6 +10109,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPACKSSDW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#107#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPACKSSWB;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10060,6 +10123,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPACKSSWB;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#99#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPACKUSDW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10067,6 +10137,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPACKUSDW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#43#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPACKUSWB;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10074,6 +10151,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPACKUSWB;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#103#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPADDB;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10081,6 +10165,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPADDB;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#252#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPADDD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10088,6 +10179,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPADDD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#254#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPADDQ;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10095,6 +10193,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPADDQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#212#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPADDSB;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10102,6 +10207,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPADDSB;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#236#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPADDSW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10109,6 +10221,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPADDSW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#237#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPADDUSB;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10116,6 +10235,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPADDUSB;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#220#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPADDUSW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10123,6 +10249,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPADDUSW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#221#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPADDW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10130,6 +10263,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPADDW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#253#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPALIGNR;
ops : 4;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8);
@@ -10137,6 +10277,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPALIGNR;
+ ops : 4;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8);
+ code : #241#242#244#250#1#15#61#80#23;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPAND;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10144,6 +10291,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPAND;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#219#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPANDN;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10151,6 +10305,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPANDN;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#223#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPAVGB;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10158,6 +10319,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPAVGB;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#224#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPAVGW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10165,6 +10333,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPAVGW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#227#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPBLENDVB;
ops : 4;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_xmmreg);
@@ -10172,6 +10347,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPBLENDVB;
+ ops : 4;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_ymmreg);
+ code : #241#242#244#250#1#76#61#80#247;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPBLENDW;
ops : 4;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8);
@@ -10179,6 +10361,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPBLENDW;
+ ops : 4;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8);
+ code : #241#242#244#250#1#14#61#80#23;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPCLMULQDQ;
ops : 4;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8);
@@ -10193,6 +10382,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPCMPEQB;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#116#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPCMPEQD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10200,6 +10396,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPCMPEQD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#118#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPCMPEQQ;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10207,6 +10410,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPCMPEQQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#41#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPCMPEQW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10214,6 +10424,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPCMPEQW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#117#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPCMPESTRI;
ops : 3;
optypes : (ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8,ot_none);
@@ -10235,6 +10452,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPCMPGTB;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#100#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPCMPGTD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10242,6 +10466,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPCMPGTD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#102#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPCMPGTQ;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10249,6 +10480,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPCMPGTQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#55#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPCMPGTW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10256,6 +10494,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPCMPGTW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#101#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPCMPISTRI;
ops : 3;
optypes : (ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8,ot_none);
@@ -10410,6 +10655,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPHADDD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#2#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPHADDSW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10417,6 +10669,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPHADDSW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#3#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPHADDW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10424,6 +10683,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPHADDW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#1#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPHMINPOSUW;
ops : 2;
optypes : (ot_xmmreg,ot_xmmrm,ot_none,ot_none);
@@ -10438,6 +10704,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPHSUBD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#6#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPHSUBSW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10445,6 +10718,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPHSUBSW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#7#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPHSUBW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10452,6 +10732,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPHSUBW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#5#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPINSRB;
ops : 4;
optypes : (ot_xmmreg,ot_xmmreg,ot_reg32,ot_immediate or ot_bits8);
@@ -10501,6 +10788,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMADDUBSW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#4#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMADDWD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10508,6 +10802,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMADDWD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#245#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMAXSB;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10515,6 +10816,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMAXSB;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#60#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMAXSD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10522,6 +10830,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMAXSD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#61#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMAXSW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10529,6 +10844,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMAXSW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#238#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMAXUB;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10536,6 +10858,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMAXUB;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#222#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMAXUD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10543,6 +10872,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMAXUD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#63#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMAXUW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10550,6 +10886,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMAXUW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#62#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMINSB;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10557,6 +10900,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMINSB;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#56#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMINSD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10564,6 +10914,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMINSD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#57#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMINSW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10571,6 +10928,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMINSW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#234#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMINUB;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10578,6 +10942,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMINUB;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#218#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMINUD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10585,6 +10956,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMINUD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#59#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMINUW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10592,6 +10970,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMINUW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#58#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMOVMSKB;
ops : 2;
optypes : (ot_reg64,ot_xmmreg,ot_none,ot_none);
@@ -10606,6 +10991,20 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMOVMSKB;
+ ops : 2;
+ optypes : (ot_reg32,ot_ymmreg,ot_none,ot_none);
+ code : #241#242#244#248#1#215#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPMOVMSKB;
+ ops : 2;
+ optypes : (ot_reg64,ot_ymmreg,ot_none,ot_none);
+ code : #241#242#244#248#1#215#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMOVSXBD;
ops : 2;
optypes : (ot_xmmreg,ot_memory or ot_bits32,ot_none,ot_none);
@@ -10620,6 +11019,20 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMOVSXBD;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none);
+ code : #241#242#244#249#1#33#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPMOVSXBD;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_memory or ot_bits64,ot_none,ot_none);
+ code : #241#242#244#249#1#33#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMOVSXBQ;
ops : 2;
optypes : (ot_xmmreg,ot_memory or ot_bits16,ot_none,ot_none);
@@ -10634,6 +11047,20 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMOVSXBQ;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_memory or ot_bits32,ot_none,ot_none);
+ code : #241#242#244#249#1#34#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPMOVSXBQ;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none);
+ code : #241#242#244#249#1#34#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMOVSXBW;
ops : 2;
optypes : (ot_xmmreg,ot_memory or ot_bits64,ot_none,ot_none);
@@ -10648,6 +11075,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMOVSXBW;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_xmmrm,ot_none,ot_none);
+ code : #241#242#244#249#1#32#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMOVSXDQ;
ops : 2;
optypes : (ot_xmmreg,ot_memory or ot_bits64,ot_none,ot_none);
@@ -10662,6 +11096,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMOVSXDQ;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_xmmrm,ot_none,ot_none);
+ code : #241#242#244#249#1#37#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMOVSXWD;
ops : 2;
optypes : (ot_xmmreg,ot_memory or ot_bits64,ot_none,ot_none);
@@ -10676,6 +11117,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMOVSXWD;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_xmmrm,ot_none,ot_none);
+ code : #241#242#244#249#1#35#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMOVSXWQ;
ops : 2;
optypes : (ot_xmmreg,ot_memory or ot_bits32,ot_none,ot_none);
@@ -10690,6 +11138,20 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMOVSXWQ;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_memory or ot_bits64,ot_none,ot_none);
+ code : #241#242#244#249#1#36#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPMOVSXWQ;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none);
+ code : #241#242#244#249#1#36#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMOVZXBD;
ops : 2;
optypes : (ot_xmmreg,ot_memory or ot_bits32,ot_none,ot_none);
@@ -10704,6 +11166,20 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMOVZXBD;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_memory or ot_bits64,ot_none,ot_none);
+ code : #241#242#244#249#1#49#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPMOVZXBD;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none);
+ code : #241#242#244#249#1#49#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMOVZXBQ;
ops : 2;
optypes : (ot_xmmreg,ot_memory or ot_bits16,ot_none,ot_none);
@@ -10718,6 +11194,20 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMOVZXBQ;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_memory or ot_bits32,ot_none,ot_none);
+ code : #241#242#244#249#1#50#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPMOVZXBQ;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none);
+ code : #241#242#244#249#1#50#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMOVZXBW;
ops : 2;
optypes : (ot_xmmreg,ot_memory or ot_bits64,ot_none,ot_none);
@@ -10732,6 +11222,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMOVZXBW;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_xmmrm,ot_none,ot_none);
+ code : #241#242#244#249#1#48#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMOVZXDQ;
ops : 2;
optypes : (ot_xmmreg,ot_memory or ot_bits64,ot_none,ot_none);
@@ -10746,6 +11243,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMOVZXDQ;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_xmmrm,ot_none,ot_none);
+ code : #241#242#244#249#1#53#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMOVZXWD;
ops : 2;
optypes : (ot_xmmreg,ot_memory or ot_bits64,ot_none,ot_none);
@@ -10760,6 +11264,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMOVZXWD;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_xmmrm,ot_none,ot_none);
+ code : #241#242#244#249#1#51#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMOVZXWQ;
ops : 2;
optypes : (ot_xmmreg,ot_memory or ot_bits32,ot_none,ot_none);
@@ -10774,6 +11285,20 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMOVZXWQ;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_memory or ot_bits64,ot_none,ot_none);
+ code : #241#242#244#249#1#52#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPMOVZXWQ;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none);
+ code : #241#242#244#249#1#52#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMULDQ;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10781,6 +11306,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMULDQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#40#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMULHRSW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10788,6 +11320,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMULHRSW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#11#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMULHUW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10795,6 +11334,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMULHUW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#228#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMULHW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10802,6 +11348,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMULHW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#229#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMULLD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10809,6 +11362,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMULLD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#64#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMULLW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10816,6 +11376,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMULLW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#213#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMULUDQ;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10823,6 +11390,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMULUDQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#244#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPOR;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10830,6 +11404,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPOR;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#235#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSADBW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10837,6 +11418,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSADBW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#246#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSHUFB;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10844,6 +11432,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSHUFB;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#0#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSHUFD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8,ot_none);
@@ -10851,6 +11446,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSHUFD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8,ot_none);
+ code : #241#242#244#248#1#112#72#22;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSHUFHW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8,ot_none);
@@ -10858,6 +11460,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSHUFHW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8,ot_none);
+ code : #219#242#244#248#1#112#72#22;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSHUFLW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8,ot_none);
@@ -10865,6 +11474,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSHUFLW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8,ot_none);
+ code : #220#242#244#248#1#112#72#22;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSIGNB;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10872,6 +11488,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSIGNB;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#8#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSIGND;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10879,6 +11502,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSIGND;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#10#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSIGNW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10886,6 +11516,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSIGNW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#9#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSLLD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_bits8,ot_none);
@@ -10900,6 +11537,20 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSLLD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+ code : #241#242#244#248#1#114#60#142#22;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPSLLD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_xmmrm,ot_none);
+ code : #241#242#244#248#1#242#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSLLDQ;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_bits8,ot_none);
@@ -10907,6 +11558,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSLLDQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+ code : #241#242#244#248#1#115#60#143#22;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSLLQ;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10921,6 +11579,20 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSLLQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_xmmrm,ot_none);
+ code : #241#242#244#248#1#243#61#80;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPSLLQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+ code : #241#242#244#248#1#115#60#142#22;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSLLW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_bits8,ot_none);
@@ -10935,6 +11607,20 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSLLW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+ code : #241#242#244#248#1#113#60#142#22;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPSLLW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_xmmrm,ot_none);
+ code : #241#242#244#248#1#241#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSRAD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_bits8,ot_none);
@@ -10949,6 +11635,20 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSRAD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+ code : #241#242#244#248#1#114#60#140#22;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPSRAD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_xmmrm,ot_none);
+ code : #241#242#244#248#1#226#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSRAW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_bits8,ot_none);
@@ -10963,6 +11663,20 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSRAW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+ code : #241#242#244#248#1#113#60#140#22;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPSRAW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_xmmrm,ot_none);
+ code : #241#242#244#248#1#225#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSRLD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_bits8,ot_none);
@@ -10977,6 +11691,20 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSRLD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+ code : #241#242#244#248#1#114#60#138#22;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPSRLD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_xmmrm,ot_none);
+ code : #241#242#244#248#1#210#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSRLDQ;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_bits8,ot_none);
@@ -10984,6 +11712,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSRLDQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+ code : #241#242#244#248#1#115#60#139#22;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSRLQ;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_bits8,ot_none);
@@ -10998,6 +11733,20 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSRLQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+ code : #241#242#244#248#1#115#60#138#22;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPSRLQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_xmmrm,ot_none);
+ code : #241#242#244#248#1#211#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSRLW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_bits8,ot_none);
@@ -11012,6 +11761,20 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSRLW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+ code : #241#242#244#248#1#113#60#138#22;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPSRLW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_xmmrm,ot_none);
+ code : #241#242#244#248#1#209#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSUBB;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -11019,6 +11782,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSUBB;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#248#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSUBD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -11026,6 +11796,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSUBD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#250#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSUBQ;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -11033,6 +11810,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSUBQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#251#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSUBSB;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -11040,6 +11824,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSUBSB;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#232#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSUBSW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -11047,6 +11838,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSUBSW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#233#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSUBUSB;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -11054,6 +11852,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSUBUSB;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#216#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSUBUSW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -11061,6 +11866,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSUBUSW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#217#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSUBW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -11068,6 +11880,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSUBW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#249#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPTEST;
ops : 2;
optypes : (ot_ymmreg,ot_ymmrm,ot_none,ot_none);
@@ -11089,6 +11908,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPUNPCKHBW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#104#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPUNPCKHDQ;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -11096,6 +11922,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPUNPCKHDQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#106#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPUNPCKHQDQ;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -11103,6 +11936,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPUNPCKHQDQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#109#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPUNPCKHWD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -11110,6 +11950,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPUNPCKHWD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#105#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPUNPCKLBW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -11117,6 +11964,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPUNPCKLBW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#96#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPUNPCKLDQ;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -11124,6 +11978,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPUNPCKLDQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#98#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPUNPCKLQDQ;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -11131,6 +11992,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPUNPCKLQDQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#108#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPUNPCKLWD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -11138,6 +12006,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPUNPCKLWD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#97#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPXOR;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -11145,6 +12020,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPXOR;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#239#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VRCPPS;
ops : 2;
optypes : (ot_xmmreg,ot_xmmrm,ot_none,ot_none);
@@ -11607,6 +12489,314 @@
flags : if_bmi2
),
(
+ opcode : A_VBROADCASTI128;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_memory or ot_bits128,ot_none,ot_none);
+ code : #241#242#244#249#1#90#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VEXTRACTI128;
+ ops : 3;
+ optypes : (ot_xmmrm,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+ code : #241#242#244#250#1#57#65#22;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VINSERTI128;
+ ops : 4;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_xmmrm,ot_immediate or ot_bits8);
+ code : #241#242#244#250#1#56#61#80#23;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPBLENDD;
+ ops : 4;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8);
+ code : #241#242#244#250#1#2#61#80#23;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPBLENDD;
+ ops : 4;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8);
+ code : #241#242#250#1#2#61#80#23;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPBROADCASTB;
+ ops : 2;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_none,ot_none);
+ code : #241#242#249#1#120#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPBROADCASTB;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none);
+ code : #241#242#244#249#1#120#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPBROADCASTB;
+ ops : 2;
+ optypes : (ot_xmmreg,ot_memory or ot_bits8,ot_none,ot_none);
+ code : #241#242#249#1#120#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPBROADCASTB;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_memory or ot_bits8,ot_none,ot_none);
+ code : #241#242#244#249#1#120#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPBROADCASTD;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none);
+ code : #241#242#244#249#1#88#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPBROADCASTD;
+ ops : 2;
+ optypes : (ot_xmmreg,ot_memory or ot_bits32,ot_none,ot_none);
+ code : #241#242#249#1#88#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPBROADCASTD;
+ ops : 2;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_none,ot_none);
+ code : #241#242#249#1#88#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPBROADCASTD;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_memory or ot_bits32,ot_none,ot_none);
+ code : #241#242#244#249#1#88#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPBROADCASTQ;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_memory or ot_bits64,ot_none,ot_none);
+ code : #241#242#244#249#1#89#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPBROADCASTQ;
+ ops : 2;
+ optypes : (ot_xmmreg,ot_memory or ot_bits64,ot_none,ot_none);
+ code : #241#242#249#1#89#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPBROADCASTQ;
+ ops : 2;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_none,ot_none);
+ code : #241#242#249#1#89#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPBROADCASTQ;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none);
+ code : #241#242#244#249#1#89#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPBROADCASTW;
+ ops : 2;
+ optypes : (ot_xmmreg,ot_memory or ot_bits16,ot_none,ot_none);
+ code : #241#242#249#1#121#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPBROADCASTW;
+ ops : 2;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_none,ot_none);
+ code : #241#242#249#1#121#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPBROADCASTW;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_memory or ot_bits16,ot_none,ot_none);
+ code : #241#242#244#249#1#121#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPBROADCASTW;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none);
+ code : #241#242#244#249#1#121#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPERM2I128;
+ ops : 4;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8);
+ code : #241#242#244#250#1#70#61#80#23;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPERMD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#54#61#80;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPERMPD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8,ot_none);
+ code : #241#242#243#244#250#1#1#72#22;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPERMPS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#22#61#80;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPERMQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8,ot_none);
+ code : #241#242#243#244#250#1#0#72#22;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPMASKMOVD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_memory or ot_bits128,ot_none);
+ code : #241#242#249#1#140#61#80;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPMASKMOVD;
+ ops : 3;
+ optypes : (ot_memory or ot_bits128,ot_xmmreg,ot_xmmreg,ot_none);
+ code : #241#242#249#1#142#61#66;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPMASKMOVD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_memory or ot_bits256,ot_none);
+ code : #241#242#244#249#1#140#61#80;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPMASKMOVD;
+ ops : 3;
+ optypes : (ot_memory or ot_bits256,ot_ymmreg,ot_ymmreg,ot_none);
+ code : #241#242#244#249#1#142#61#66;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPMASKMOVQ;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_memory or ot_bits128,ot_none);
+ code : #241#242#243#249#1#140#61#80;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPMASKMOVQ;
+ ops : 3;
+ optypes : (ot_memory or ot_bits128,ot_xmmreg,ot_xmmreg,ot_none);
+ code : #241#242#243#249#1#142#61#66;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPMASKMOVQ;
+ ops : 3;
+ optypes : (ot_memory or ot_bits256,ot_ymmreg,ot_ymmreg,ot_none);
+ code : #241#242#243#244#249#1#142#61#66;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPMASKMOVQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_memory or ot_bits256,ot_none);
+ code : #241#242#243#244#249#1#140#61#80;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPSLLVD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#71#61#80;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPSLLVD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#71#61#80;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPSLLVQ;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#243#249#1#71#61#80;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPSLLVQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#243#244#249#1#71#61#80;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPSRAVD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#70#61#80;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPSRAVD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#70#61#80;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPSRLVD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#69#61#80;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPSRLVD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#69#61#80;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPSRLVQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#243#244#249#1#69#61#80;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPSRLVQ;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#243#249#1#69#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_ADD4S;
ops : 0;
optypes : (ot_none,ot_none,ot_none,ot_none);
@@ -11801,5 +12991,691 @@
optypes : (ot_rm_gpr or ot_bits16,ot_immediate,ot_none,ot_none);
code : #2#15#25#128#21;
flags : if_nec or if_sw or if_16bitonly
+ ),
+ (
+ opcode : A_VFMADD132PD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#152#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADD132PD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#243#1#152#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADD213PD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#168#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADD213PD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#243#1#168#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADD231PD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#184#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADD231PD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#243#1#184#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADDPD;
+ ops : 4;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_xmmreg);
+ code : #241#242#250#1#105#61#80#247;
+ flags : if_fma4
+ ),
+ (
+ opcode : A_VFMADDPD;
+ ops : 4;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmreg,ot_xmmrm);
+ code : #241#242#250#243#1#105#61#88#246;
+ flags : if_fma4
+ ),
+ (
+ opcode : A_VFMADD132PS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#152#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADD132PS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#152#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADD213PS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#168#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADD213PS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#168#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADD231PS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#184#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADD231PS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#184#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADD132SD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#153#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADD213SD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#169#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADD231SD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#185#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADD132SS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#153#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADD213SS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#169#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADD231SS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#185#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADDSUB132PD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#150#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADDSUB132PD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#243#1#150#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADDSUB213PD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#166#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADDSUB213PD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#243#1#166#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADDSUB231PD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#182#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADDSUB231PD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#243#1#182#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADDSUB132PS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#150#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADDSUB132PS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#150#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADDSUB213PS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#166#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADDSUB213PS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#166#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADDSUB231PS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#182#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADDSUB231PS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#182#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUBADD132PD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#151#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUBADD132PD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#243#1#151#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUBADD213PD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#167#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUBADD213PD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#243#1#167#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUBADD231PD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#183#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUBADD231PD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#243#1#183#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUBADD132PS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#151#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUBADD132PS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#151#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUBADD213PS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#167#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUBADD213PS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#167#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUBADD231PS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#183#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUBADD231PS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#183#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUB132PD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#154#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUB132PD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#243#1#154#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUB213PD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#170#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUB213PD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#243#1#170#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUB231PD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#186#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUB231PD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#243#1#186#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUB132PS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#154#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUB132PS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#154#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUB213PS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#170#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUB213PS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#170#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUB231PS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#186#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUB231PS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#186#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUB132SD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#155#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUB213SD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#171#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUB231SD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#187#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUB132SS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#155#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUB213SS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#171#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUB231SS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#187#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMADD132PD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#156#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMADD132PD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#243#1#156#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMADD213PD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#172#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMADD213PD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#243#1#172#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMADD231PD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#188#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMADD231PD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#243#1#188#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMADD132PS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#156#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMADD132PS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#156#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMADD213PS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#172#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMADD213PS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#172#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMADD231PS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#188#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMADD231PS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#188#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMADD132SD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#157#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMADD213SD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#173#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMADD231SD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#189#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMADD132SS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#157#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMADD213SS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#173#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMADD231SS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#189#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMSUB132PD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#158#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMSUB132PD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#243#1#158#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMSUB213PD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#174#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMSUB213PD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#243#1#174#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMSUB231PD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#190#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMSUB231PD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#243#1#190#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMSUB132PS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#158#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMSUB132PS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#158#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMSUB213PS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#174#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMSUB213PS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#174#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMSUB231PS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#190#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMSUB231PS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#190#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMSUB132SD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#159#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMSUB213SD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#175#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMSUB231SD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#191#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMSUB132SS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#159#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMSUB213SS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#175#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMSUB231SS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#191#61#80;
+ flags : if_fma
)
);
diff --git a/compiler/i8086/n8086add.pas b/compiler/i8086/n8086add.pas
index 126b379334..2ea107fc5e 100644
--- a/compiler/i8086/n8086add.pas
+++ b/compiler/i8086/n8086add.pas
@@ -33,9 +33,11 @@ interface
{ ti8086addnode }
ti8086addnode = class(tx86addnode)
+ function simplify(forinline: boolean) : tnode;override;
function use_generic_mul32to64: boolean; override;
procedure second_addordinal; override;
procedure second_add64bit;override;
+ procedure second_addfarpointer;
procedure second_cmp64bit;override;
procedure second_cmp32bit;
procedure second_cmpordinal;override;
@@ -46,8 +48,8 @@ interface
uses
globtype,systems,
- cutils,verbose,globals,
- symconst,symdef,paramgr,defutil,
+ cutils,verbose,globals,constexp,
+ symconst,symdef,symtype,paramgr,defutil,
aasmbase,aasmtai,aasmdata,aasmcpu,
cgbase,procinfo,
ncon,nset,cgutils,tgobj,
@@ -55,6 +57,97 @@ interface
hlcgobj;
{*****************************************************************************
+ simplify
+*****************************************************************************}
+
+ function ti8086addnode.simplify(forinline: boolean): tnode;
+ var
+ t : tnode;
+ lt,rt: tnodetype;
+ rd,ld: tdef;
+ rv,lv,v: tconstexprint;
+ begin
+ { load easier access variables }
+ rd:=right.resultdef;
+ ld:=left.resultdef;
+ rt:=right.nodetype;
+ lt:=left.nodetype;
+
+ if (
+ (lt = pointerconstn) and is_farpointer(ld) and
+ is_constintnode(right) and
+ (nodetype in [addn,subn])
+ ) or
+ (
+ (rt = pointerconstn) and is_farpointer(rd) and
+ is_constintnode(left) and
+ (nodetype=addn)
+ ) then
+ begin
+ t:=nil;
+
+ { load values }
+ case lt of
+ ordconstn:
+ lv:=tordconstnode(left).value;
+ pointerconstn:
+ lv:=tpointerconstnode(left).value;
+ niln:
+ lv:=0;
+ else
+ internalerror(2002080202);
+ end;
+ case rt of
+ ordconstn:
+ rv:=tordconstnode(right).value;
+ pointerconstn:
+ rv:=tpointerconstnode(right).value;
+ niln:
+ rv:=0;
+ else
+ internalerror(2002080203);
+ end;
+
+ case nodetype of
+ addn:
+ begin
+ v:=lv+rv;
+ if lt=pointerconstn then
+ t := cpointerconstnode.create((qword(lv) and $FFFF0000) or word(qword(v)),resultdef)
+ else if rt=pointerconstn then
+ t := cpointerconstnode.create((qword(rv) and $FFFF0000) or word(qword(v)),resultdef)
+ else
+ internalerror(2014040604);
+ end;
+ subn:
+ begin
+ v:=lv-rv;
+ if (lt=pointerconstn) then
+ { pointer-pointer results in an integer }
+ if (rt=pointerconstn) then
+ begin
+ if not(nf_has_pointerdiv in flags) then
+ internalerror(2008030101);
+ { todo: implement pointer-pointer as well }
+ internalerror(2014040607);
+ //t := cpointerconstnode.create(qword(v),resultdef);
+ end
+ else
+ t := cpointerconstnode.create((qword(lv) and $FFFF0000) or word(qword(v)),resultdef)
+ else
+ internalerror(2014040606);
+ end;
+ else
+ internalerror(2014040605);
+ end;
+ result:=t;
+ exit;
+ end
+ else
+ Result:=inherited simplify(forinline);
+ end;
+
+{*****************************************************************************
use_generic_mul32to64
*****************************************************************************}
@@ -72,6 +165,8 @@ interface
not(is_signed(right.resultdef));
if nodetype=muln then
second_mul(unsigned)
+ else if is_farpointer(left.resultdef) xor is_farpointer(right.resultdef) then
+ second_addfarpointer
else
inherited second_addordinal;
end;
@@ -213,6 +308,97 @@ interface
end;
+ procedure ti8086addnode.second_addfarpointer;
+ var
+ tmpreg : tregister;
+ pointernode: tnode;
+ begin
+ pass_left_right;
+ force_reg_left_right(false,true);
+ set_result_location_reg;
+
+ if (left.resultdef.typ=pointerdef) and (right.resultdef.typ<>pointerdef) then
+ pointernode:=left
+ else if (left.resultdef.typ<>pointerdef) and (right.resultdef.typ=pointerdef) then
+ pointernode:=right
+ else
+ internalerror(2014040601);
+
+ if not (nodetype in [addn,subn]) then
+ internalerror(2014040602);
+
+ if nodetype=addn then
+ begin
+ if (right.location.loc<>LOC_CONSTANT) then
+ begin
+ cg.a_op_reg_reg_reg(current_asmdata.CurrAsmList,OP_ADD,OS_16,
+ left.location.register,right.location.register,location.register);
+ cg.a_load_reg_reg(current_asmdata.CurrAsmList,OS_16,OS_16,
+ GetNextReg(pointernode.location.register),GetNextReg(location.register));
+ end
+ else
+ begin
+ if pointernode=left then
+ begin
+ { farptr_reg + int_const }
+ cg.a_op_const_reg_reg(current_asmdata.CurrAsmList,OP_ADD,OS_16,
+ right.location.value,left.location.register,location.register);
+ cg.a_load_reg_reg(current_asmdata.CurrAsmList,OS_16,OS_16,
+ GetNextReg(left.location.register),GetNextReg(location.register));
+ end
+ else
+ begin
+ { int_reg + farptr_const }
+ tmpreg:=hlcg.getintregister(current_asmdata.CurrAsmList,resultdef);
+ hlcg.a_load_const_reg(current_asmdata.CurrAsmList,resultdef,
+ right.location.value,tmpreg);
+ cg.a_op_reg_reg_reg(current_asmdata.CurrAsmList,OP_ADD,OS_16,
+ left.location.register,tmpreg,location.register);
+ cg.a_load_reg_reg(current_asmdata.CurrAsmList,OS_16,OS_16,
+ GetNextReg(tmpreg),GetNextReg(location.register));
+ end;
+ end;
+ end
+ else { subtract is a special case since its not commutative }
+ begin
+ if (nf_swapped in flags) then
+ swapleftright;
+ { left can only be a pointer in this case, since (int-pointer) is not supported }
+ if pointernode<>left then
+ internalerror(2014040603);
+ if left.location.loc<>LOC_CONSTANT then
+ begin
+ if right.location.loc<>LOC_CONSTANT then
+ begin
+ cg.a_op_reg_reg_reg(current_asmdata.CurrAsmList,OP_SUB,OS_16,
+ right.location.register,left.location.register,location.register);
+ cg.a_load_reg_reg(current_asmdata.CurrAsmList,OS_16,OS_16,
+ GetNextReg(pointernode.location.register),GetNextReg(location.register));
+ end
+ else
+ begin
+ { farptr_reg - int_const }
+ cg.a_op_const_reg_reg(current_asmdata.CurrAsmList,OP_SUB,OS_16,
+ right.location.value,left.location.register,location.register);
+ cg.a_load_reg_reg(current_asmdata.CurrAsmList,OS_16,OS_16,
+ GetNextReg(left.location.register),GetNextReg(location.register));
+ end;
+ end
+ else
+ begin
+ { farptr_const - int_reg }
+ tmpreg:=hlcg.getintregister(current_asmdata.CurrAsmList,resultdef);
+ hlcg.a_load_const_reg(current_asmdata.CurrAsmList,resultdef,
+ left.location.value,tmpreg);
+ cg.a_op_reg_reg_reg(current_asmdata.CurrAsmList,OP_SUB,OS_16,
+ right.location.register,tmpreg,location.register);
+ cg.a_load_reg_reg(current_asmdata.CurrAsmList,OS_16,OS_16,
+ GetNextReg(tmpreg),GetNextReg(location.register));
+ end;
+ end;
+ end;
+
+
procedure ti8086addnode.second_cmp64bit;
var
hregister,
diff --git a/compiler/i8086/n8086cal.pas b/compiler/i8086/n8086cal.pas
index 8bb55ca1f0..2735dc42cc 100644
--- a/compiler/i8086/n8086cal.pas
+++ b/compiler/i8086/n8086cal.pas
@@ -62,7 +62,8 @@ implementation
procedure ti8086callnode.extra_interrupt_code;
begin
emit_none(A_PUSHF,S_W);
- emit_reg(A_PUSH,S_W,NR_CS);
+ if current_settings.x86memorymodel in x86_near_code_models then
+ emit_reg(A_PUSH,S_W,NR_CS);
end;
@@ -98,7 +99,7 @@ implementation
procedure ti8086callnode.extra_call_ref_code(var ref: treference);
begin
- if ref.base<>NR_NO then
+ if (ref.base<>NR_NO) and (ref.base<>NR_BP) then
begin
cg.getcpuregister(current_asmdata.CurrAsmList,NR_BX);
cg.a_load_reg_reg(current_asmdata.CurrAsmList,OS_16,OS_16,ref.base,NR_BX);
@@ -118,8 +119,9 @@ implementation
function ti8086callnode.do_call_ref(ref: treference): tcgpara;
begin
if current_settings.x86memorymodel in x86_far_code_models then
- ref.refaddr:=addr_far_ref;
- current_asmdata.CurrAsmList.concat(taicpu.op_ref(A_CALL,S_NO,ref));
+ current_asmdata.CurrAsmList.concat(taicpu.op_ref(A_CALL,S_FAR,ref))
+ else
+ current_asmdata.CurrAsmList.concat(taicpu.op_ref(A_CALL,S_NO,ref));
result:=hlcg.get_call_result_cgpara(procdefinition,typedef)
end;
diff --git a/compiler/i8086/n8086cnv.pas b/compiler/i8086/n8086cnv.pas
index 8e286b9bb7..62977e4ae0 100644
--- a/compiler/i8086/n8086cnv.pas
+++ b/compiler/i8086/n8086cnv.pas
@@ -29,10 +29,13 @@ interface
node,ncgcnv,nx86cnv,defutil,defcmp;
type
+
+ { t8086typeconvnode }
+
t8086typeconvnode = class(tx86typeconvnode)
protected
+ function typecheck_proc_to_procvar: tnode;override;
procedure second_proc_to_procvar;override;
- procedure second_nil_to_methodprocvar;override;
end;
@@ -41,123 +44,31 @@ implementation
uses
verbose,systems,globals,globtype,
aasmbase,aasmtai,aasmdata,aasmcpu,
- symconst,symdef,
+ symconst,symdef,symcpu,
cgbase,cga,procinfo,pass_1,pass_2,
ncon,ncal,ncnv,
cpubase,cpuinfo,
cgutils,cgobj,hlcgobj,cgx86,ncgutil,
tgobj;
-
- procedure t8086typeconvnode.second_proc_to_procvar;
- var
- tmpreg: tregister;
- tmpref: treference;
+ function t8086typeconvnode.typecheck_proc_to_procvar: tnode;
begin
- if not (po_far in tabstractprocdef(resultdef).procoptions) then
- begin
- inherited;
- exit;
- end;
-
- if tabstractprocdef(resultdef).is_addressonly then
- begin
- location_reset(location,LOC_REGISTER,OS_32);
- { only a code pointer? (when taking the address of classtype.method
- we also only get a code pointer even though the resultdef is a
- procedure of object, and hence is_addressonly would return false)
- }
- if left.location.size = OS_32 then
- begin
- case left.location.loc of
- LOC_REFERENCE,LOC_CREFERENCE:
- begin
- { the procedure symbol is encoded in reference.symbol -> take address }
- location.register:=cg.getintregister(current_asmdata.CurrAsmList,OS_32);
- cg.a_loadaddr_ref_reg(current_asmdata.CurrAsmList,left.location.reference,location.register);
- tmpref:=left.location.reference;
- tmpref.refaddr:=addr_seg;
- cg.a_load_ref_reg(current_asmdata.CurrAsmList,OS_16,OS_16,tmpref,GetNextReg(location.register));
- end;
- else
- internalerror(2013031501)
- end;
- end
- else
- begin
- { conversion from a procedure of object/nested procvar to plain procvar }
- case left.location.loc of
- LOC_REFERENCE,LOC_CREFERENCE:
- begin
- location.register:=cg.getintregister(current_asmdata.CurrAsmList,OS_32);
- { code field is the first one }
- cg.a_load_ref_reg(current_asmdata.CurrAsmList,OS_32,OS_32,left.location.reference,location.register);
- end;
- LOC_REGISTER,LOC_CREGISTER:
- begin
- if target_info.endian=endian_little then
- location.register:=left.location.register
- else
- location.register:=left.location.registerhi;
- end;
- else
- internalerror(2013031502)
- end;
- end;
- end
- else
- begin
- if not tabstractprocdef(left.resultdef).is_addressonly then
- location_copy(location,left.location)
- else
- begin
- { assigning a global function to a nested procvar -> create
- tmethodpointer record and set the "frame pointer" to nil }
- if not(left.location.loc in [LOC_REFERENCE,LOC_CREFERENCE]) then
- internalerror(2013031503);
- location_reset_ref(location,LOC_REFERENCE,int_cgsize(6),sizeof(pint));
- tg.gethltemp(current_asmdata.CurrAsmList,resultdef,resultdef.size,tt_normal,location.reference);
- tmpreg:=cg.getaddressregister(current_asmdata.CurrAsmList);
- cg.a_loadaddr_ref_reg(current_asmdata.CurrAsmList,left.location.reference,tmpreg);
- cg.a_load_reg_ref(current_asmdata.CurrAsmList,OS_16,OS_16,tmpreg,location.reference);
- tmpref:=left.location.reference;
- tmpref.refaddr:=addr_seg;
- inc(location.reference.offset,2);
- cg.a_load_ref_ref(current_asmdata.CurrAsmList,OS_16,OS_16,tmpref,location.reference);
- { setting the frame pointer to nil is not strictly necessary
- since the global procedure won't use it, but it can help with
- debugging }
- inc(location.reference.offset,2);
- cg.a_load_const_ref(current_asmdata.CurrAsmList,OS_ADDR,0,location.reference);
- dec(location.reference.offset,4);
- end;
- end;
+ if (current_settings.x86memorymodel in x86_far_code_models) and
+ not is_proc_far(tabstractprocdef(left.resultdef)) then
+ CGMessage1(type_e_procedure_must_be_far,left.resultdef.GetTypeName);
+ Result:=inherited typecheck_proc_to_procvar;
end;
- procedure t8086typeconvnode.second_nil_to_methodprocvar;
+ procedure t8086typeconvnode.second_proc_to_procvar;
begin
- location_reset(location,LOC_REGISTER,def_cgsize(resultdef));
- if current_settings.x86memorymodel in x86_far_data_models then
- begin
- location.registerhi:=cg.getintregister(current_asmdata.currasmlist,OS_32);
- cg.a_load_const_reg(current_asmdata.currasmlist,OS_32,0,location.registerhi);
- end
- else
- begin
- location.registerhi:=cg.getaddressregister(current_asmdata.currasmlist);
- cg.a_load_const_reg(current_asmdata.currasmlist,OS_ADDR,0,location.registerhi);
- end;
- if (resultdef.typ=procvardef) and (po_far in tprocvardef(resultdef).procoptions) then
- begin
- location.register:=cg.getintregister(current_asmdata.currasmlist,OS_32);
- cg.a_load_const_reg(current_asmdata.currasmlist,OS_32,0,location.register);
- end
- else
- begin
- location.register:=cg.getaddressregister(current_asmdata.currasmlist);
- cg.a_load_const_reg(current_asmdata.currasmlist,OS_ADDR,0,location.register);
- end;
+ if is_proc_far(tabstractprocdef(resultdef))<>
+ (current_settings.x86memorymodel in x86_far_code_models) then
+ internalerror(2014041302);
+ if is_proc_far(tabstractprocdef(left.resultdef))<>
+ (current_settings.x86memorymodel in x86_far_code_models) then
+ internalerror(2014041303);
+ inherited;
end;
diff --git a/compiler/i8086/n8086con.pas b/compiler/i8086/n8086con.pas
index ecbe9e0244..746e162165 100644
--- a/compiler/i8086/n8086con.pas
+++ b/compiler/i8086/n8086con.pas
@@ -26,21 +26,22 @@ unit n8086con;
interface
uses
- node,ncon,ncgcon,nx86con;
+ globtype,symtype,ncon,ncgcon,nx86con;
type
- { tcgpointerconstnode }
+ { ti8086pointerconstnode }
ti8086pointerconstnode = class(tcgpointerconstnode)
+ constructor create(v : TConstPtrUInt;def:tdef);override;
procedure pass_generate_code;override;
end;
implementation
uses
- systems,globals,globtype,
- symconst,symdef,
+ systems,globals,
+ symconst,symdef,symcpu,
defutil,
cpubase,
cga,cgx86,cgobj,cgbase,cgutils;
@@ -49,10 +50,20 @@ implementation
T8086POINTERCONSTNODE
*****************************************************************************}
+
+ constructor ti8086pointerconstnode.create(v: TConstPtrUInt; def: tdef);
+ begin
+ { truncate near pointers }
+ if (def.typ<>pointerdef) or not (tcpupointerdef(def).x86pointertyp in [x86pt_far,x86pt_huge]) then
+ v := Word(v);
+ inherited create(v, def);
+ end;
+
+
procedure ti8086pointerconstnode.pass_generate_code;
begin
{ far pointer? }
- if (typedef.typ=pointerdef) and (tpointerdef(typedef).x86pointertyp in [x86pt_far,x86pt_huge]) then
+ if (typedef.typ=pointerdef) and (tcpupointerdef(typedef).x86pointertyp in [x86pt_far,x86pt_huge]) then
begin
location_reset(location,LOC_CONSTANT,OS_32);
location.value:=longint(value);
diff --git a/compiler/i8086/n8086inl.pas b/compiler/i8086/n8086inl.pas
index 9625c1f24b..94a1273ae6 100644
--- a/compiler/i8086/n8086inl.pas
+++ b/compiler/i8086/n8086inl.pas
@@ -61,6 +61,13 @@ implementation
begin
result := nil;
resultdef:=u16inttype;
+
+ { don't allow constants }
+ if is_constnode(left) then
+ begin
+ CGMessagePos(left.fileinfo,type_e_no_addr_of_constant);
+ exit;
+ end;
end;
function ti8086inlinenode.first_seg: tnode;
@@ -70,10 +77,48 @@ implementation
end;
procedure ti8086inlinenode.second_seg;
+ var
+ segref: treference;
begin
- location_reset(location,LOC_REGISTER,OS_16);
- location.register:=cg.getintregister(current_asmdata.CurrAsmList,OS_16);
- current_asmdata.CurrAsmList.Concat(Taicpu.op_reg_reg(A_MOV,S_W,NR_DS,location.register));
+ secondpass(left);
+
+ if not(left.location.loc in [LOC_REFERENCE,LOC_CREFERENCE]) then
+ internalerror(2013040101);
+
+ { if a segment register is specified in ref, we use that }
+ if left.location.reference.segment<>NR_NO then
+ begin
+ location_reset(location,LOC_REGISTER,OS_16);
+ if is_segment_reg(left.location.reference.segment) then
+ begin
+ location.register:=cg.getintregister(current_asmdata.CurrAsmList,OS_16);
+ current_asmdata.CurrAsmList.Concat(Taicpu.op_reg_reg(A_MOV,S_W,left.location.reference.segment,location.register));
+ end
+ else
+ location.register:=left.location.reference.segment;
+ end
+ { references relative to a symbol use the segment of the symbol,
+ which can be obtained by the SEG directive }
+ else if assigned(left.location.reference.symbol) then
+ begin
+ location_reset(location,LOC_REGISTER,OS_16);
+ location.register:=cg.getintregister(current_asmdata.CurrAsmList,OS_16);
+ reference_reset_symbol(segref,left.location.reference.symbol,0,0);
+ segref.refaddr:=addr_seg;
+ cg.a_load_ref_reg(current_asmdata.CurrAsmList,OS_16,OS_16,segref,location.register);
+ end
+ else if left.location.reference.base=NR_BP then
+ begin
+ location_reset(location,LOC_REGISTER,OS_16);
+ location.register:=cg.getintregister(current_asmdata.CurrAsmList,OS_16);
+ current_asmdata.CurrAsmList.concat(Taicpu.op_reg_reg(A_MOV,S_W,NR_SS,location.register));
+ end
+ else
+ begin
+ location_reset(location,LOC_REGISTER,OS_16);
+ location.register:=cg.getintregister(current_asmdata.CurrAsmList,OS_16);
+ current_asmdata.CurrAsmList.Concat(Taicpu.op_reg_reg(A_MOV,S_W,NR_DS,location.register));
+ end;
end;
procedure ti8086inlinenode.second_get_frame;
diff --git a/compiler/i8086/n8086ld.pas b/compiler/i8086/n8086ld.pas
new file mode 100644
index 0000000000..deaa3d016b
--- /dev/null
+++ b/compiler/i8086/n8086ld.pas
@@ -0,0 +1,91 @@
+{
+ Copyright (c) 2002-2014 by Florian Klaempfl
+
+ Generate i8086 assembler for load nodes
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+ ****************************************************************************
+}
+unit n8086ld;
+
+{$i fpcdefs.inc}
+
+interface
+
+ uses
+ globtype,
+ symsym,symtype,
+ node,ncgld;
+
+ type
+ ti8086loadnode = class(tcgloadnode)
+ procedure generate_nested_access(vs: tsym); override;
+ procedure generate_absaddr_access(vs: tabsolutevarsym); override;
+ end;
+
+
+implementation
+
+ uses
+ globals,aasmdata,
+ symcpu,
+ nld,
+ cgbase,cgobj,
+ cpubase,cpuinfo;
+
+{*****************************************************************************
+ TI8086LOADNODE
+*****************************************************************************}
+
+ procedure ti8086loadnode.generate_nested_access(vs: tsym);
+ begin
+ inherited;
+
+ { the parentfp pointer is always a near pointer (this is turbo pascal
+ compatible) regardless of memory model, so we need to set the segment
+ manually.
+
+ todo: once the far data memory models are fully implemented, the
+ parentfp type should be changed to a near 'ss' pointer in all memory
+ models and then this code can be removed. But this can only happen
+ after:
+ 1) all calls to a_loadaddr_ref_reg go through the high level code
+ generator
+ 2) a_loadaddr_ref_reg in the low level code generator stops using
+ the presence of a segment in the source reference to determine the
+ destination reg size
+ 3) make_simple_ref is updated to remove unnecessary segment prefixes
+ 4) hlcg.reference_reset_base is updated to set the segment on near_ss
+ pointers }
+ if (left.nodetype=loadparentfpn) and
+ (current_settings.x86memorymodel in x86_far_data_models) then
+ location.reference.segment:=NR_SS;
+ end;
+
+ procedure ti8086loadnode.generate_absaddr_access(vs: tabsolutevarsym);
+ begin
+ if tcpuabsolutevarsym(symtableentry).absseg then
+ begin
+ location.reference.segment:=cg.getintregister(current_asmdata.CurrAsmList,OS_16);
+ cg.a_load_const_reg(current_asmdata.CurrAsmList,OS_16,aint(tcpuabsolutevarsym(symtableentry).addrsegment),location.reference.segment);
+ end;
+ inherited;
+ end;
+
+
+begin
+ cloadnode:=ti8086loadnode;
+end.
diff --git a/compiler/i8086/n8086mem.pas b/compiler/i8086/n8086mem.pas
index e292bda548..31c5c96f31 100644
--- a/compiler/i8086/n8086mem.pas
+++ b/compiler/i8086/n8086mem.pas
@@ -28,23 +28,31 @@ interface
uses
globtype,
cgbase,cpuinfo,cpubase,
- node,nmem,ncgmem,nx86mem;
+ symtype,
+ node,nmem,ncgmem,nx86mem,ni86mem;
type
- ti8086addrnode = class(tcgaddrnode)
- procedure pass_generate_code;override;
+ ti8086addrnode = class(ti86addrnode)
+ protected
+ procedure set_absvarsym_resultdef; override;
+ function typecheck_non_proc(realsource: tnode; out res: tnode): boolean; override;
end;
ti8086derefnode = class(tx86derefnode)
procedure pass_generate_code;override;
end;
+ { tx86vecnode doesn't work for i8086, so we inherit tcgvecnode }
+ ti8086vecnode = class(tcgvecnode)
+ procedure update_reference_reg_mul(maybe_const_reg: tregister; regsize: tdef; l: aint);override;
+ end;
+
implementation
uses
systems,globals,
cutils,verbose,
- symbase,symconst,symdef,symtable,symtype,symsym,
+ symbase,symconst,symdef,symtable,symsym,symcpu,
parabase,paramgr,
aasmtai,aasmdata,
nld,ncon,nadd,
@@ -56,34 +64,31 @@ implementation
TI8086ADDRNODE
*****************************************************************************}
- procedure ti8086addrnode.pass_generate_code;
- var
- segref: treference;
+ procedure ti8086addrnode.set_absvarsym_resultdef;
begin
- if (current_settings.x86memorymodel in x86_far_code_models) and
- (left.nodetype=loadn) and
- (tloadnode(left).symtableentry.typ=labelsym) then
- begin
- secondpass(left);
-
- location_reset(location,LOC_REGISTER,OS_32);
- location.register:=cg.getintregister(current_asmdata.CurrAsmList,OS_32);
- if not(left.location.loc in [LOC_REFERENCE,LOC_CREFERENCE]) then
- internalerror(2013091801);
+ if not(nf_typedaddr in flags) then
+ resultdef:=voidfarpointertype
+ else
+ resultdef:=tcpupointerdefclass(cpointerdef).createx86(left.resultdef,x86pt_far);
+ end;
- { load offset }
- cg.a_loadaddr_ref_reg(current_asmdata.CurrAsmList,left.location.reference,location.register);
- { load segment }
- segref:=left.location.reference;
- segref.refaddr:=addr_seg;
- cg.a_load_ref_reg(current_asmdata.CurrAsmList,OS_16,OS_16,segref,GetNextReg(location.register));
+ function ti8086addrnode.typecheck_non_proc(realsource: tnode; out res: tnode): boolean;
+ begin
+ res:=nil;
+ if (realsource.nodetype=loadn) and
+ (tloadnode(realsource).symtableentry.typ=labelsym) then
+ begin
+ if current_settings.x86memorymodel in x86_far_code_models then
+ resultdef:=voidfarpointertype
+ else
+ resultdef:=voidnearpointertype;
+ result:=true
end
else
- inherited;
+ result:=inherited;
end;
-
{*****************************************************************************
TI8086DEREFNODE
*****************************************************************************}
@@ -96,7 +101,7 @@ implementation
st : tsymtable;
tmpref: treference;
begin
- if tpointerdef(left.resultdef).x86pointertyp in [x86pt_far,x86pt_huge] then
+ if tcpupointerdef(left.resultdef).x86pointertyp in [x86pt_far,x86pt_huge] then
begin
secondpass(left);
{ assume natural alignment, except for packed records }
@@ -111,7 +116,7 @@ implementation
LOC_CREGISTER,
LOC_REGISTER:
begin
- maybechangeloadnodereg(current_asmdata.CurrAsmList,left,true);
+ hlcg.maybe_change_load_node_reg(current_asmdata.CurrAsmList,left,true);
location.reference.base := left.location.register;
location.reference.segment := GetNextReg(left.location.register);
end;
@@ -138,7 +143,7 @@ implementation
(cs_checkpointer in current_settings.localswitches) and
not(cs_compilesystem in current_settings.moduleswitches) and
{$ifdef x86}
- (tpointerdef(left.resultdef).x86pointertyp = default_x86_data_pointer_type) and
+ (tcpupointerdef(left.resultdef).x86pointertyp = tcpupointerdefclass(cpointerdef).default_x86_data_pointer_type) and
{$endif x86}
not(nf_no_checkpointer in flags) and
{ can be NR_NO in case of LOC_CONSTANT }
@@ -162,8 +167,22 @@ implementation
inherited pass_generate_code;
end;
+{*****************************************************************************
+ TI8086VECNODE
+*****************************************************************************}
+
+ procedure ti8086vecnode.update_reference_reg_mul(maybe_const_reg: tregister; regsize: tdef; l: aint);
+ var
+ saveseg: TRegister;
+ begin
+ saveseg:=location.reference.segment;
+ location.reference.segment:=NR_NO;
+ inherited update_reference_reg_mul(maybe_const_reg,regsize,l);
+ location.reference.segment:=saveseg;
+ end;
begin
caddrnode:=ti8086addrnode;
cderefnode:=ti8086derefnode;
+ cvecnode:=ti8086vecnode;
end.
diff --git a/compiler/i8086/n8086tcon.pas b/compiler/i8086/n8086tcon.pas
new file mode 100644
index 0000000000..0d4a735322
--- /dev/null
+++ b/compiler/i8086/n8086tcon.pas
@@ -0,0 +1,77 @@
+{
+ Copyright (c) 1998-2011 by Florian Klaempfl, Jonas Maebe
+
+ Generates i8086 assembler for typed constant declarations
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+ ****************************************************************************
+}
+unit n8086tcon;
+
+{$i fpcdefs.inc}
+
+interface
+
+ uses
+ node,symdef,ngtcon;
+
+
+ type
+
+ { ti8086typedconstbuilder }
+
+ ti8086typedconstbuilder = class(tasmlisttypedconstbuilder)
+ protected
+ procedure tc_emit_pointerdef(def: tpointerdef; var node: tnode);override;
+ end;
+
+
+implementation
+
+uses
+ ncnv,defcmp,defutil,aasmtai;
+
+ { ti8086typedconstbuilder }
+
+ procedure ti8086typedconstbuilder.tc_emit_pointerdef(def: tpointerdef; var node: tnode);
+ var
+ hp: tnode;
+ begin
+ { remove equal typecasts for pointer/nil addresses }
+ if (node.nodetype=typeconvn) then
+ with Ttypeconvnode(node) do
+ if (left.nodetype in [addrn,niln]) and equal_defs(def,node.resultdef) then
+ begin
+ hp:=left;
+ left:=nil;
+ node.free;
+ node:=hp;
+ end;
+ if node.nodetype=niln then
+ begin
+ if is_farpointer(def) or is_hugepointer(def) then
+ list.concat(Tai_const.Create_32bit(0))
+ else
+ list.concat(Tai_const.Create_16bit(0));
+ end
+ else
+ inherited tc_emit_pointerdef(def, node);
+ end;
+
+begin
+ ctypedconstbuilder:=ti8086typedconstbuilder;
+end.
+
diff --git a/compiler/i8086/rgcpu.pas b/compiler/i8086/rgcpu.pas
index becac48aca..b415cf445d 100644
--- a/compiler/i8086/rgcpu.pas
+++ b/compiler/i8086/rgcpu.pas
@@ -30,11 +30,15 @@ unit rgcpu;
uses
cpubase,
cpuinfo,
- aasmbase,aasmtai,aasmdata,
- cclasses,globtype,cgbase,rgobj,rgx86;
+ aasmbase,aasmtai,aasmsym,aasmdata,aasmcpu,
+ cclasses,globtype,cgbase,cgutils,rgobj,rgx86;
type
+
+ { trgcpu }
+
trgcpu = class(trgx86)
+ function do_spill_replace(list:TAsmList;instr:tai_cpu_abstract_sym;orgreg:tsuperregister;const spilltemp:treference):boolean;override;
procedure add_constraints(reg:Tregister);override;
end;
@@ -47,9 +51,7 @@ implementation
uses
systems,
- verbose,
- aasmcpu,
- cgutils;
+ verbose;
const
{ This value is used in tsaved. If the array value is equal
@@ -60,6 +62,17 @@ implementation
trgcpu
*************************************************************************}
+ function trgcpu.do_spill_replace(list:TAsmList;instr:tai_cpu_abstract_sym;orgreg:tsuperregister;const spilltemp:treference): boolean;
+ var
+ spilltemp2: treference;
+ begin
+ spilltemp2:=spilltemp;
+ if spilltemp2.segment=NR_SS then
+ spilltemp2.segment:=NR_NO;
+ Result:=inherited do_spill_replace(list, instr, orgreg, spilltemp2);
+ end;
+
+
procedure trgcpu.add_constraints(reg:Tregister);
var
supreg : tsuperregister;
diff --git a/compiler/i8086/symcpu.pas b/compiler/i8086/symcpu.pas
new file mode 100644
index 0000000000..bc16f8c2e6
--- /dev/null
+++ b/compiler/i8086/symcpu.pas
@@ -0,0 +1,371 @@
+{
+ Copyright (c) 2014 by Florian Klaempfl
+
+ Symbol table overrides for i8086
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+ ****************************************************************************
+}
+unit symcpu;
+
+{$i fpcdefs.inc}
+
+interface
+
+uses
+ globtype,
+ symconst,symtype,symdef,symsym,symx86,symi86;
+
+type
+ { defs }
+ tcpufiledef = class(tfiledef)
+ end;
+ tcpufiledefclass = class of tcpufiledef;
+
+ tcpuvariantdef = class(tvariantdef)
+ end;
+ tcpuvariantdefclass = class of tcpuvariantdef;
+
+ tcpuformaldef = class(tformaldef)
+ end;
+ tcpuformaldefclass = class of tcpuformaldef;
+
+ tcpuforwarddef = class(tforwarddef)
+ end;
+ tcpuforwarddefclass = class of tcpuforwarddef;
+
+ tcpuundefineddef = class(tundefineddef)
+ end;
+ tcpuundefineddefclass = class of tcpuundefineddef;
+
+ tcpuerrordef = class(terrordef)
+ end;
+ tcpuerrordefclass = class of tcpuerrordef;
+
+ tcpupointerdef = class(tx86pointerdef)
+ class function default_x86_data_pointer_type: tx86pointertyp; override;
+ end;
+ tcpupointerdefclass = class of tcpupointerdef;
+
+ tcpurecorddef = class(trecorddef)
+ end;
+ tcpurecorddefclass = class of tcpurecorddef;
+
+ tcpuimplementedinterface = class(timplementedinterface)
+ end;
+ tcpuimplementedinterfaceclass = class of tcpuimplementedinterface;
+
+ tcpuobjectdef = class(tobjectdef)
+ end;
+ tcpuobjectdefclass = class of tcpuobjectdef;
+
+ tcpuclassrefdef = class(tclassrefdef)
+ end;
+ tcpuclassrefdefclass = class of tcpuclassrefdef;
+
+ tcpuarraydef = class(tarraydef)
+ end;
+ tcpuarraydefclass = class of tcpuarraydef;
+
+ tcpuorddef = class(torddef)
+ end;
+ tcpuorddefclass = class of tcpuorddef;
+
+ tcpufloatdef = class(tfloatdef)
+ end;
+ tcpufloatdefclass = class of tcpufloatdef;
+
+ { tcpuprocvardef }
+
+ tcpuprocvardef = class(ti86procvardef)
+ constructor create(level:byte);override;
+ function is_far:boolean;
+ end;
+ tcpuprocvardefclass = class of tcpuprocvardef;
+
+ { tcpuprocdef }
+
+ tcpuprocdef = class(ti86procdef)
+ private
+ { returns whether the function is far by default, i.e. whether it would be
+ far if _all_ of the following conditions are true:
+ - we're in a far code memory model
+ - it has no 'near' or 'far' specifiers
+ - it is compiled in a $F- state }
+ function default_far:boolean;
+ public
+ constructor create(level:byte);override;
+ function address_type:tdef;override;
+ procedure declared_far;override;
+ procedure declared_near;override;
+ function is_far:boolean;
+ end;
+ tcpuprocdefclass = class of tcpuprocdef;
+
+ tcpustringdef = class(tstringdef)
+ end;
+ tcpustringdefclass = class of tcpustringdef;
+
+ tcpuenumdef = class(tenumdef)
+ end;
+ tcpuenumdefclass = class of tcpuenumdef;
+
+ tcpusetdef = class(tsetdef)
+ end;
+ tcpusetdefclass = class of tcpusetdef;
+
+ { syms }
+ tcpulabelsym = class(tlabelsym)
+ end;
+ tcpulabelsymclass = class of tcpulabelsym;
+
+ tcpuunitsym = class(tunitsym)
+ end;
+ tcpuunitsymclass = class of tcpuunitsym;
+
+ tcpunamespacesym = class(tnamespacesym)
+ end;
+ tcpunamespacesymclass = class of tcpunamespacesym;
+
+ tcpuprocsym = class(tprocsym)
+ end;
+ tcpuprocsymclass = class of tcpuprocsym;
+
+ tcputypesym = class(ttypesym)
+ end;
+ tcpuypesymclass = class of tcputypesym;
+
+ tcpufieldvarsym = class(tfieldvarsym)
+ end;
+ tcpufieldvarsymclass = class of tcpufieldvarsym;
+
+ tcpulocalvarsym = class(tlocalvarsym)
+ end;
+ tcpulocalvarsymclass = class of tcpulocalvarsym;
+
+ tcpuparavarsym = class(tparavarsym)
+ end;
+ tcpuparavarsymclass = class of tcpuparavarsym;
+
+ tcpustaticvarsym = class(tstaticvarsym)
+ end;
+ tcpustaticvarsymclass = class of tcpustaticvarsym;
+
+ tcpuabsolutevarsym = class(ti86absolutevarsym)
+ protected
+ procedure ppuload_platform(ppufile: tcompilerppufile); override;
+ procedure ppuwrite_platform(ppufile: tcompilerppufile); override;
+ public
+ addrsegment : aword;
+ end;
+ tcpuabsolutevarsymclass = class of tcpuabsolutevarsym;
+
+ tcpupropertysym = class(tpropertysym)
+ end;
+ tcpupropertysymclass = class of tcpupropertysym;
+
+ tcpuconstsym = class(tconstsym)
+ end;
+ tcpuconstsymclass = class of tcpuconstsym;
+
+ tcpuenumsym = class(tenumsym)
+ end;
+ tcpuenumsymclass = class of tcpuenumsym;
+
+ tcpusyssym = class(tsyssym)
+ end;
+ tcpusyssymclass = class of tcpusyssym;
+
+
+const
+ pbestrealtype : ^tdef = @s80floattype;
+
+
+ function is_proc_far(p: tabstractprocdef): boolean;
+
+
+implementation
+
+ uses
+ globals, cpuinfo, verbose;
+
+
+ function is_proc_far(p: tabstractprocdef): boolean;
+ begin
+ if p is tcpuprocdef then
+ result:=tcpuprocdef(p).is_far
+ else if p is tcpuprocvardef then
+ result:=tcpuprocvardef(p).is_far
+ else
+ internalerror(2014041301);
+ end;
+
+
+{****************************************************************************
+ tcpuprocdef
+****************************************************************************}
+
+ constructor tcpuprocdef.create(level: byte);
+ begin
+ inherited create(level);
+ if (current_settings.x86memorymodel in x86_far_code_models) and
+ ((cs_huge_code in current_settings.moduleswitches) or
+ (cs_force_far_calls in current_settings.localswitches)) then
+ procoptions:=procoptions+[po_far];
+ end;
+
+
+ function tcpuprocdef.address_type: tdef;
+ begin
+ if is_far then
+ result:=voidfarpointertype
+ else
+ result:=voidnearpointertype;
+ end;
+
+
+ procedure tcpuprocdef.declared_far;
+ begin
+ if current_settings.x86memorymodel in x86_far_code_models then
+ include(procoptions,po_far)
+ else
+ inherited declared_far;
+ end;
+
+
+ procedure tcpuprocdef.declared_near;
+ begin
+ if (current_settings.x86memorymodel in x86_far_code_models) and
+ not (cs_huge_code in current_settings.moduleswitches) then
+ exclude(procoptions,po_far)
+ else
+ inherited declared_near;
+ end;
+
+
+ function tcpuprocdef.default_far: boolean;
+ begin
+ if proctypeoption in [potype_proginit,potype_unitinit,potype_unitfinalize,
+ potype_constructor,potype_destructor,
+ potype_class_constructor,potype_class_destructor,
+ potype_propgetter,potype_propsetter] then
+ exit(true);
+ if (procoptions*[po_classmethod,po_virtualmethod,po_abstractmethod,
+ po_finalmethod,po_staticmethod,po_overridingmethod,
+ po_external,po_public,po_interrupt])<>[] then
+ exit(true);
+ if is_methodpointer then
+ exit(true);
+ result:=not (visibility in [vis_private,vis_hidden]);
+ end;
+
+
+ function tcpuprocdef.is_far: boolean;
+ begin
+ result:=(current_settings.x86memorymodel in x86_far_code_models) and
+ ((po_far in procoptions) or default_far);
+ end;
+
+{****************************************************************************
+ tcpuprocvardef
+****************************************************************************}
+
+ constructor tcpuprocvardef.create(level: byte);
+ begin
+ inherited create(level);
+ { procvars are always far in the far code memory models }
+ if current_settings.x86memorymodel in x86_far_code_models then
+ procoptions:=procoptions+[po_far];
+ end;
+
+
+ function tcpuprocvardef.is_far: boolean;
+ begin
+ { procvars are always far in the far code memory models }
+ result:=current_settings.x86memorymodel in x86_far_code_models;
+ end;
+
+{****************************************************************************
+ tcpupointerdef
+****************************************************************************}
+
+ class function tcpupointerdef.default_x86_data_pointer_type: tx86pointertyp;
+ begin
+ if current_settings.x86memorymodel in x86_far_data_models then
+ result:=x86pt_far
+ else
+ result:=inherited;
+ end;
+
+
+{****************************************************************************
+ tcpuabsolutevarsym
+****************************************************************************}
+
+ procedure tcpuabsolutevarsym.ppuload_platform(ppufile: tcompilerppufile);
+ begin
+ inherited;
+ if absseg then
+ addrsegment:=ppufile.getaword;
+ end;
+
+
+ procedure tcpuabsolutevarsym.ppuwrite_platform(ppufile: tcompilerppufile);
+ begin
+ inherited;
+ if absseg then
+ ppufile.putaword(addrsegment);
+ end;
+
+begin
+ { used tdef classes }
+ cfiledef:=tcpufiledef;
+ cvariantdef:=tcpuvariantdef;
+ cformaldef:=tcpuformaldef;
+ cforwarddef:=tcpuforwarddef;
+ cundefineddef:=tcpuundefineddef;
+ cerrordef:=tcpuerrordef;
+ cpointerdef:=tcpupointerdef;
+ crecorddef:=tcpurecorddef;
+ cimplementedinterface:=tcpuimplementedinterface;
+ cobjectdef:=tcpuobjectdef;
+ cclassrefdef:=tcpuclassrefdef;
+ carraydef:=tcpuarraydef;
+ corddef:=tcpuorddef;
+ cfloatdef:=tcpufloatdef;
+ cprocvardef:=tcpuprocvardef;
+ cprocdef:=tcpuprocdef;
+ cstringdef:=tcpustringdef;
+ cenumdef:=tcpuenumdef;
+ csetdef:=tcpusetdef;
+
+ { used tsym classes }
+ clabelsym:=tcpulabelsym;
+ cunitsym:=tcpuunitsym;
+ cnamespacesym:=tcpunamespacesym;
+ cprocsym:=tcpuprocsym;
+ ctypesym:=tcputypesym;
+ cfieldvarsym:=tcpufieldvarsym;
+ clocalvarsym:=tcpulocalvarsym;
+ cparavarsym:=tcpuparavarsym;
+ cstaticvarsym:=tcpustaticvarsym;
+ cabsolutevarsym:=tcpuabsolutevarsym;
+ cpropertysym:=tcpupropertysym;
+ cconstsym:=tcpuconstsym;
+ cenumsym:=tcpuenumsym;
+ csyssym:=tcpusyssym;
+end.
+
diff --git a/compiler/i8086/tgcpu.pas b/compiler/i8086/tgcpu.pas
new file mode 100644
index 0000000000..c5dda4fdcc
--- /dev/null
+++ b/compiler/i8086/tgcpu.pas
@@ -0,0 +1,58 @@
+{
+ Copyright (C) 1998-2000 by Florian Klaempfl
+
+ This unit handles the temporary variables stuff for i8086
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+ ****************************************************************************
+}
+{
+ This unit handles the temporary variables stuff for i8086.
+}
+unit tgcpu;
+
+{$i fpcdefs.inc}
+
+ interface
+
+ uses
+ tgobj,globtype,aasmdata,cgutils,symtype;
+
+ type
+
+ { ttgi8086 }
+
+ ttgi8086 = class(ttgobj)
+ protected
+ procedure alloctemp(list: TAsmList; size,alignment : longint; temptype : ttemptype; def:tdef; out ref: treference);override;
+ end;
+
+implementation
+
+uses
+ cpubase;
+
+{ ttgi8086 }
+
+procedure ttgi8086.alloctemp(list: TAsmList; size, alignment: longint; temptype: ttemptype; def: tdef; out ref: treference);
+ begin
+ inherited;
+ ref.segment:=NR_SS;
+ end;
+
+begin
+ tgobjclass:=ttgi8086;
+end.
diff --git a/compiler/ia64/symcpu.pas b/compiler/ia64/symcpu.pas
new file mode 100644
index 0000000000..0c79c1078c
--- /dev/null
+++ b/compiler/ia64/symcpu.pas
@@ -0,0 +1,211 @@
+{
+ Copyright (c) 2014 by Florian Klaempfl
+
+ Symbol table overrides for IA64
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+ ****************************************************************************
+}
+unit symcpu;
+
+{$i fpcdefs.inc}
+
+interface
+
+uses
+ symtype,symdef,symsym;
+
+type
+ { defs }
+ tcpufiledef = class(tfiledef)
+ end;
+ tcpufiledefclass = class of tcpufiledef;
+
+ tcpuvariantdef = class(tvariantdef)
+ end;
+ tcpuvariantdefclass = class of tcpuvariantdef;
+
+ tcpuformaldef = class(tformaldef)
+ end;
+ tcpuformaldefclass = class of tcpuformaldef;
+
+ tcpuforwarddef = class(tforwarddef)
+ end;
+ tcpuforwarddefclass = class of tcpuforwarddef;
+
+ tcpuundefineddef = class(tundefineddef)
+ end;
+ tcpuundefineddefclass = class of tcpuundefineddef;
+
+ tcpuerrordef = class(terrordef)
+ end;
+ tcpuerrordefclass = class of tcpuerrordef;
+
+ tcpupointerdef = class(tpointerdef)
+ end;
+ tcpupointerdefclass = class of tcpupointerdef;
+
+ tcpurecorddef = class(trecorddef)
+ end;
+ tcpurecorddefclass = class of tcpurecorddef;
+
+ tcpuimplementedinterface = class(timplementedinterface)
+ end;
+ tcpuimplementedinterfaceclass = class of tcpuimplementedinterface;
+
+ tcpuobjectdef = class(tobjectdef)
+ end;
+ tcpuobjectdefclass = class of tcpuobjectdef;
+
+ tcpuclassrefdef = class(tclassrefdef)
+ end;
+ tcpuclassrefdefclass = class of tcpuclassrefdef;
+
+ tcpuarraydef = class(tarraydef)
+ end;
+ tcpuarraydefclass = class of tcpuarraydef;
+
+ tcpuorddef = class(torddef)
+ end;
+ tcpuorddefclass = class of tcpuorddef;
+
+ tcpufloatdef = class(tfloatdef)
+ end;
+ tcpufloatdefclass = class of tcpufloatdef;
+
+ tcpuprocvardef = class(tprocvardef)
+ end;
+ tcpuprocvardefclass = class of tcpuprocvardef;
+
+ tcpuprocdef = class(tprocdef)
+ end;
+ tcpuprocdefclass = class of tcpuprocdef;
+
+ tcpustringdef = class(tstringdef)
+ end;
+ tcpustringdefclass = class of tcpustringdef;
+
+ tcpuenumdef = class(tenumdef)
+ end;
+ tcpuenumdefclass = class of tcpuenumdef;
+
+ tcpusetdef = class(tsetdef)
+ end;
+ tcpusetdefclass = class of tcpusetdef;
+
+ { syms }
+ tcpulabelsym = class(tlabelsym)
+ end;
+ tcpulabelsymclass = class of tcpulabelsym;
+
+ tcpuunitsym = class(tunitsym)
+ end;
+ tcpuunitsymclass = class of tcpuunitsym;
+
+ tcpunamespacesym = class(tnamespacesym)
+ end;
+ tcpunamespacesymclass = class of tcpunamespacesym;
+
+ tcpuprocsym = class(tprocsym)
+ end;
+ tcpuprocsymclass = class of tcpuprocsym;
+
+ tcputypesym = class(ttypesym)
+ end;
+ tcpuypesymclass = class of tcputypesym;
+
+ tcpufieldvarsym = class(tfieldvarsym)
+ end;
+ tcpufieldvarsymclass = class of tcpufieldvarsym;
+
+ tcpulocalvarsym = class(tlocalvarsym)
+ end;
+ tcpulocalvarsymclass = class of tcpulocalvarsym;
+
+ tcpuparavarsym = class(tparavarsym)
+ end;
+ tcpuparavarsymclass = class of tcpuparavarsym;
+
+ tcpustaticvarsym = class(tstaticvarsym)
+ end;
+ tcpustaticvarsymclass = class of tcpustaticvarsym;
+
+ tcpuabsolutevarsym = class(tabsolutevarsym)
+ end;
+ tcpuabsolutevarsymclass = class of tcpuabsolutevarsym;
+
+ tcpupropertysym = class(tpropertysym)
+ end;
+ tcpupropertysymclass = class of tcpupropertysym;
+
+ tcpuconstsym = class(tconstsym)
+ end;
+ tcpuconstsymclass = class of tcpuconstsym;
+
+ tcpuenumsym = class(tenumsym)
+ end;
+ tcpuenumsymclass = class of tcpuenumsym;
+
+ tcpusyssym = class(tsyssym)
+ end;
+ tcpusyssymclass = class of tcpusyssym;
+
+
+const
+ pbestrealtype : ^tdef = @s64floattype;
+
+
+implementation
+
+begin
+ { used tdef classes }
+ cfiledef:=tcpufiledef;
+ cvariantdef:=tcpuvariantdef;
+ cformaldef:=tcpuformaldef;
+ cforwarddef:=tcpuforwarddef;
+ cundefineddef:=tcpuundefineddef;
+ cerrordef:=tcpuerrordef;
+ cpointerdef:=tcpupointerdef;
+ crecorddef:=tcpurecorddef;
+ cimplementedinterface:=tcpuimplementedinterface;
+ cobjectdef:=tcpuobjectdef;
+ cclassrefdef:=tcpuclassrefdef;
+ carraydef:=tcpuarraydef;
+ corddef:=tcpuorddef;
+ cfloatdef:=tcpufloatdef;
+ cprocvardef:=tcpuprocvardef;
+ cprocdef:=tcpuprocdef;
+ cstringdef:=tcpustringdef;
+ cenumdef:=tcpuenumdef;
+ csetdef:=tcpusetdef;
+
+ { used tsym classes }
+ clabelsym:=tcpulabelsym;
+ cunitsym:=tcpuunitsym;
+ cnamespacesym:=tcpunamespacesym;
+ cprocsym:=tcpuprocsym;
+ ctypesym:=tcputypesym;
+ cfieldvarsym:=tcpufieldvarsym;
+ clocalvarsym:=tcpulocalvarsym;
+ cparavarsym:=tcpuparavarsym;
+ cstaticvarsym:=tcpustaticvarsym;
+ cabsolutevarsym:=tcpuabsolutevarsym;
+ cpropertysym:=tcpupropertysym;
+ cconstsym:=tcpuconstsym;
+ cenumsym:=tcpuenumsym;
+ csyssym:=tcpusyssym;
+end.
+
diff --git a/compiler/jvm/cpubase.pas b/compiler/jvm/cpubase.pas
index 0cc12ff590..aa14c179e7 100644
--- a/compiler/jvm/cpubase.pas
+++ b/compiler/jvm/cpubase.pas
@@ -157,6 +157,15 @@ uses
EVALSTACKLOCS = [LOC_REGISTER,LOC_CREGISTER,LOC_FPUREGISTER,LOC_CFPUREGISTER,
LOC_MMREGISTER,LOC_CMMREGISTER,LOC_SUBSETREG,LOC_CSUBSETREG];
+
+{*****************************************************************************
+ References
+*****************************************************************************}
+
+ type
+ { array reference types }
+ tarrayreftype = (art_none,art_indexreg,art_indexref,art_indexconst);
+
{*****************************************************************************
Conditions
*****************************************************************************}
diff --git a/compiler/jvm/cpunode.pas b/compiler/jvm/cpunode.pas
index 62d04a915a..e9703aa334 100644
--- a/compiler/jvm/cpunode.pas
+++ b/compiler/jvm/cpunode.pas
@@ -33,8 +33,10 @@ implementation
ncgbas,ncgflw,ncgcnv,ncgld,ncgmem,ncgcon,ncgset,
ncgadd, ncgcal,ncgmat,ncginl,
njvmadd,njvmcal,njvmmat,njvmcnv,njvmcon,njvminl,njvmmem,njvmflw,njvmld,
- njvmset
+ njvmset,njvmvmt
{ these are not really nodes }
- ,rgcpu,tgcpu,njvmutil,njvmtcon;
+ ,rgcpu,tgcpu,njvmutil,njvmtcon,
+ { symtable }
+ symcpu;
end.
diff --git a/compiler/jvm/dbgjasm.pas b/compiler/jvm/dbgjasm.pas
index 1736f02710..2b76bbc1ca 100644
--- a/compiler/jvm/dbgjasm.pas
+++ b/compiler/jvm/dbgjasm.pas
@@ -58,7 +58,7 @@ implementation
version,globals,verbose,systems,
cpubase,cpuinfo,cgbase,paramgr,
fmodule,
- defutil,symtable,jvmdef,ppu
+ defutil,symtable,symcpu,jvmdef,ppu
;
{****************************************************************************
@@ -76,7 +76,7 @@ implementation
exit;
proc:=tprocdef(sym.owner.defowner);
jvar:=tai_jvar.create(sym.localloc.reference.offset,jvmmangledbasename(sym,true),fcurrprocstart,fcurrprocend);
- proc.exprasmlist.InsertAfter(jvar,proc.procstarttai);
+ tcpuprocdef(proc).exprasmlist.InsertAfter(jvar,proc.procstarttai);
end;
@@ -109,8 +109,8 @@ implementation
current_asmdata.getlabel(procstartlabel,alt_dbgtype);
current_asmdata.getlabel(procendlabel,alt_dbgtype);
- def.exprasmlist.insertafter(tai_label.create(procstartlabel),def.procstarttai);
- def.exprasmlist.insertbefore(tai_label.create(procendlabel),def.procendtai);
+ tcpuprocdef(def).exprasmlist.insertafter(tai_label.create(procstartlabel),def.procstarttai);
+ tcpuprocdef(def).exprasmlist.insertbefore(tai_label.create(procendlabel),def.procendtai);
fcurrprocstart:=procstartlabel;
fcurrprocend:=procendlabel;
diff --git a/compiler/jvm/hlcgcpu.pas b/compiler/jvm/hlcgcpu.pas
index a447923704..fdfcb0b035 100644
--- a/compiler/jvm/hlcgcpu.pas
+++ b/compiler/jvm/hlcgcpu.pas
@@ -30,6 +30,7 @@ uses
globtype,
aasmbase,aasmdata,
symbase,symconst,symtype,symdef,symsym,
+ node,
cpubase, hlcgobj, cgbase, cgutils, parabase;
type
@@ -103,6 +104,7 @@ uses
procedure g_overflowCheck_loc(List:TAsmList;const Loc:TLocation;def:TDef;var ovloc : tlocation); override;
procedure location_get_data_ref(list:TAsmList;def: tdef; const l:tlocation;var ref:treference;loadref:boolean; alignment: longint);override;
+ procedure maybe_change_load_node_reg(list: TAsmList; var n: tnode; reload: boolean); override;
procedure g_copyvaluepara_openarray(list: TAsmList; const ref: treference; const lenloc: tlocation; arrdef: tarraydef; destreg: tregister); override;
procedure g_releasevaluepara_openarray(list: TAsmList; arrdef: tarraydef; const l: tlocation); override;
@@ -246,7 +248,7 @@ implementation
verbose,cutils,globals,fmodule,constexp,
defutil,
aasmtai,aasmcpu,
- symtable,jvmdef,
+ symtable,symcpu,jvmdef,
procinfo,cpuinfo,cgcpu,tgobj;
const
@@ -1030,7 +1032,7 @@ implementation
end;
art_indexref:
begin
- reference_reset_base(href,ref.indexbase,ref.indexoffset,4);
+ cgutils.reference_reset_base(href,ref.indexbase,ref.indexoffset,4);
href.symbol:=ref.indexsymbol;
a_load_ref_stack(list,s32inttype,href,prepare_stack_for_ref(list,href,false));
end;
@@ -1513,7 +1515,7 @@ implementation
begin
if not tprocvardef(size).is_addressonly then
begin
- concatcopy_record(list,tprocvardef(size).classdef,source,dest);
+ concatcopy_record(list,tcpuprocvardef(size).classdef,source,dest);
handled:=true;
end;
end;
@@ -1626,8 +1628,8 @@ implementation
if not code.empty and
current_asmdata.asmlists[al_procedures].empty then
current_asmdata.asmlists[al_procedures].concat(tai_align.Create(4));
- pd.exprasmlist:=TAsmList.create;
- pd.exprasmlist.concatlist(code);
+ tcpuprocdef(pd).exprasmlist:=TAsmList.create;
+ tcpuprocdef(pd).exprasmlist.concatlist(code);
if assigned(data) and
not data.empty then
internalerror(2010122801);
@@ -1788,7 +1790,7 @@ implementation
{ passed by reference in array of single element; l contains the
base address of the array }
location_reset_ref(tmploc,LOC_REFERENCE,OS_ADDR,4);
- reference_reset_base(tmploc.reference,getaddressregister(list,java_jlobject),0,4);
+ cgutils.reference_reset_base(tmploc.reference,getaddressregister(list,java_jlobject),0,4);
tmploc.reference.arrayreftype:=art_indexconst;
tmploc.reference.indexoffset:=0;
a_load_loc_reg(list,java_jlobject,java_jlobject,l,tmploc.reference.base);
@@ -1815,6 +1817,11 @@ implementation
end;
end;
+ procedure thlcgjvm.maybe_change_load_node_reg(list: TAsmList; var n: tnode; reload: boolean);
+ begin
+ { don't do anything, all registers become stack locations anyway }
+ end;
+
procedure thlcgjvm.g_copyvaluepara_openarray(list: TAsmList; const ref: treference; const lenloc: tlocation; arrdef: tarraydef; destreg: tregister);
var
localref: treference;
@@ -1850,7 +1857,7 @@ implementation
case current_procinfo.procdef.proctypeoption of
potype_unitinit:
begin
- reference_reset_base(ref,NR_NO,0,1);
+ cgutils.reference_reset_base(ref,NR_NO,0,1);
if assigned(current_module.globalsymtable) then
allocate_implicit_structs_for_st_with_base_ref(list,current_module.globalsymtable,ref,staticvarsym);
allocate_implicit_structs_for_st_with_base_ref(list,current_module.localsymtable,ref,staticvarsym);
@@ -1860,7 +1867,7 @@ implementation
{ also initialise local variables, if any }
inherited;
{ initialise class fields }
- reference_reset_base(ref,NR_NO,0,1);
+ cgutils.reference_reset_base(ref,NR_NO,0,1);
allocate_implicit_structs_for_st_with_base_ref(list,tabstractrecorddef(current_procinfo.procdef.owner.defowner).symtable,ref,staticvarsym);
end
else
@@ -2309,7 +2316,7 @@ implementation
sym: tstaticvarsym;
begin
result:=false;
- sym:=tstaticvarsym(tenumdef(def).getbasedef.classdef.symtable.Find('__FPC_ZERO_INITIALIZER'));
+ sym:=tstaticvarsym(tcpuenumdef(tenumdef(def).getbasedef).classdef.symtable.Find('__FPC_ZERO_INITIALIZER'));
{ no enum with ordinal value 0 -> exit }
if not assigned(sym) then
exit;
@@ -2409,7 +2416,7 @@ implementation
internalerror(2011033001);
selfreg:=getaddressregister(list,selfpara.vardef);
a_load_loc_reg(list,obj,obj,selfpara.localloc,selfreg);
- reference_reset_base(ref,selfreg,0,1);
+ cgutils.reference_reset_base(ref,selfreg,0,1);
allocate_implicit_structs_for_st_with_base_ref(list,obj.symtable,ref,fieldvarsym);
end;
@@ -2423,7 +2430,7 @@ implementation
(checkdef.typ=formaldef) then
checkdef:=java_jlobject
else if checkdef.typ=enumdef then
- checkdef:=tenumdef(checkdef).classdef
+ checkdef:=tcpuenumdef(checkdef).classdef
else if checkdef.typ=setdef then
begin
if tsetdef(checkdef).elementdef.typ=enumdef then
@@ -2432,7 +2439,7 @@ implementation
checkdef:=java_jubitset;
end
else if checkdef.typ=procvardef then
- checkdef:=tprocvardef(checkdef).classdef
+ checkdef:=tcpuprocvardef(checkdef).classdef
else if is_wide_or_unicode_string(checkdef) then
checkdef:=java_jlstring
else if is_ansistring(checkdef) then
diff --git a/compiler/jvm/jvmdef.pas b/compiler/jvm/jvmdef.pas
index da0fbbac49..626eca8db4 100644
--- a/compiler/jvm/jvmdef.pas
+++ b/compiler/jvm/jvmdef.pas
@@ -97,7 +97,7 @@ implementation
cutils,cclasses,constexp,
verbose,systems,
fmodule,
- symtable,symconst,symsym,symdef,symcreat,
+ symtable,symconst,symsym,symdef,symcpu,symcreat,
defutil,paramgr;
{******************************************************************
@@ -230,7 +230,7 @@ implementation
end;
enumdef:
begin
- result:=jvmaddencodedtype(tenumdef(def).getbasedef.classdef,false,encodedstr,forcesignature,founderror);
+ result:=jvmaddencodedtype(tcpuenumdef(tenumdef(def).getbasedef).classdef,false,encodedstr,forcesignature,founderror);
end;
orddef :
begin
@@ -352,7 +352,7 @@ implementation
end;
procvardef :
begin
- result:=jvmaddencodedtype(tprocvardef(def).classdef,false,encodedstr,forcesignature,founderror);
+ result:=jvmaddencodedtype(tcpuprocvardef(def).classdef,false,encodedstr,forcesignature,founderror);
end;
objectdef :
case tobjectdef(def).objecttype of
@@ -683,7 +683,7 @@ implementation
end;
enumdef:
begin
- result:=tenumdef(def).getbasedef.classdef;
+ result:=tcpuenumdef(tenumdef(def).getbasedef).classdef;
end;
pointerdef :
begin
@@ -724,7 +724,7 @@ implementation
end;
procvardef :
begin
- result:=tprocvardef(def).classdef;
+ result:=tcpuprocvardef(def).classdef;
end;
objectdef :
case tobjectdef(def).objecttype of
diff --git a/compiler/jvm/njvmadd.pas b/compiler/jvm/njvmadd.pas
index ecbdbab371..1b4946fce1 100644
--- a/compiler/jvm/njvmadd.pas
+++ b/compiler/jvm/njvmadd.pas
@@ -54,7 +54,7 @@ interface
uses
systems,
cutils,verbose,constexp,globtype,
- symconst,symtable,symdef,
+ symconst,symtable,symdef,symcpu,
paramgr,procinfo,pass_1,
aasmtai,aasmdata,aasmcpu,defutil,
hlcgobj,hlcgcpu,cgutils,
@@ -231,7 +231,7 @@ interface
procname:='OF';
if isenum then
begin
- inserttypeconv_explicit(tsetelementnode(right).left,tenumdef(tsetelementnode(right).left.resultdef).getbasedef.classdef);
+ inserttypeconv_explicit(tsetelementnode(right).left,tcpuenumdef(tenumdef(tsetelementnode(right).left.resultdef).getbasedef).classdef);
result:=cloadvmtaddrnode.create(ctypenode.create(java_juenumset));
end
else
@@ -247,7 +247,7 @@ interface
procname:='RANGE';
if isenum then
begin
- inserttypeconv_explicit(tsetelementnode(right).right,tenumdef(tsetelementnode(right).right.resultdef).getbasedef.classdef);
+ inserttypeconv_explicit(tsetelementnode(right).right,tcpuenumdef(tenumdef(tsetelementnode(right).right.resultdef).getbasedef).classdef);
end
else
begin
@@ -268,7 +268,7 @@ interface
procname:='ADD';
if isenum then
begin
- inserttypeconv_explicit(tsetelementnode(right).left,tenumdef(tsetelementnode(right).left.resultdef).getbasedef.classdef);
+ inserttypeconv_explicit(tsetelementnode(right).left,tcpuenumdef(tenumdef(tsetelementnode(right).left.resultdef).getbasedef).classdef);
end
else
begin
@@ -284,7 +284,7 @@ interface
factory method, then add all of its elements }
if isenum then
begin
- inserttypeconv_explicit(tsetelementnode(right).right,tenumdef(tsetelementnode(right).right.resultdef).getbasedef.classdef);
+ inserttypeconv_explicit(tsetelementnode(right).right,tcpuenumdef(tenumdef(tsetelementnode(right).right.resultdef).getbasedef).classdef);
tmpn:=cloadvmtaddrnode.create(ctypenode.create(java_juenumset));
end
else
diff --git a/compiler/jvm/njvmcal.pas b/compiler/jvm/njvmcal.pas
index 1202ed2d9a..976f87528a 100644
--- a/compiler/jvm/njvmcal.pas
+++ b/compiler/jvm/njvmcal.pas
@@ -60,7 +60,7 @@ implementation
uses
verbose,globals,globtype,constexp,cutils,
- symconst,symtable,symsym,defutil,
+ symconst,symtable,symsym,symcpu,defutil,
cgutils,tgobj,procinfo,htypechk,
cpubase,aasmdata,aasmcpu,
hlcgobj,hlcgcpu,
@@ -527,7 +527,7 @@ implementation
var
pdclass: tobjectdef;
begin
- pdclass:=tprocvardef(right.resultdef).classdef;
+ pdclass:=tcpuprocvardef(right.resultdef).classdef;
{ convert procvar type into corresponding class }
if not tprocvardef(right.resultdef).is_addressonly then
begin
@@ -590,6 +590,10 @@ implementation
result:=inherited pass_1;
if assigned(result) then
exit;
+ { set fforcedprocname so that even virtual method calls will be
+ name-based (instead of based on VMT entry numbers) }
+ if procdefinition.typ=procdef then
+ fforcedprocname:=tprocdef(procdefinition).mangledname
end;
end;
diff --git a/compiler/jvm/njvmcnv.pas b/compiler/jvm/njvmcnv.pas
index 0721ba7489..3d4d21821d 100644
--- a/compiler/jvm/njvmcnv.pas
+++ b/compiler/jvm/njvmcnv.pas
@@ -55,6 +55,7 @@ interface
{ procedure second_real_to_real;override; }
{ procedure second_cord_to_pointer;override; }
procedure second_proc_to_procvar;override;
+ procedure second_nil_to_methodprocvar;override;
procedure second_bool_to_int;override;
procedure second_int_to_bool;override;
{ procedure second_load_smallset;override; }
@@ -95,7 +96,7 @@ implementation
uses
verbose,globals,globtype,constexp,cutils,
- symbase,symconst,symdef,symsym,symtable,aasmbase,aasmdata,
+ symbase,symconst,symdef,symsym,symcpu,symtable,aasmbase,aasmdata,
defutil,defcmp,jvmdef,
cgbase,cgutils,pass_1,pass_2,
nbas,ncon,ncal,ninl,nld,nmem,procinfo,
@@ -221,7 +222,7 @@ implementation
if not assigned(totypedef) or
(totypedef.typ<>procvardef) then
begin
- if assigned(tprocvardef(resultdef).classdef) then
+ if assigned(tcpuprocvardef(resultdef).classdef) then
internalerror(2011072405);
{ associate generic classdef; this is the result of an @proc
expression, and such expressions can never result in a direct call
@@ -231,7 +232,7 @@ implementation
{ todo }
internalerror(2011072406)
else
- tprocvardef(resultdef).classdef:=java_procvarbase;
+ tcpuprocvardef(resultdef).classdef:=java_procvarbase;
end;
end;
@@ -257,7 +258,13 @@ implementation
function tjvmtypeconvnode.pass_1: tnode;
begin
- if (nf_explicit in flags) then
+ if (nf_explicit in flags) or
+ { some implicit type conversions from voidpointer to other types
+ (such as dynamic array) are allowed too, even though the types are
+ incompatible -> make sure we check those too and insert checkcast
+ instructions as necessary }
+ (is_voidpointer(left.resultdef) and
+ not is_voidpointer(resultdef)) then
begin
do_target_specific_explicit_typeconv(false,result);
if assigned(result) then
@@ -375,10 +382,10 @@ implementation
result:=inherited first_nil_to_methodprocvar;
if assigned(result) then
exit;
- if not assigned(tprocvardef(resultdef).classdef) then
- tprocvardef(resultdef).classdef:=java_procvarbase;
+ if not assigned(tcpuprocvardef(resultdef).classdef) then
+ tcpuprocvardef(resultdef).classdef:=java_procvarbase;
result:=ccallnode.createinternmethod(
- cloadvmtaddrnode.create(ctypenode.create(tprocvardef(resultdef).classdef)),'CREATE',nil);
+ cloadvmtaddrnode.create(ctypenode.create(tcpuprocvardef(resultdef).classdef)),'CREATE',nil);
{ method pointer is an implicit pointer type }
result:=ctypeconvnode.create_explicit(result,getpointerdef(resultdef));
result:=cderefnode.create(result);
@@ -481,7 +488,7 @@ implementation
if not assigned(procdefparas) then
procdefparas:=carrayconstructornode.create(nil,nil);
constrparas:=ccallparanode.create(procdefparas,constrparas);
- result:=ccallnode.createinternmethod(cloadvmtaddrnode.create(ctypenode.create(tprocvardef(resultdef).classdef)),'CREATE',constrparas);
+ result:=ccallnode.createinternmethod(cloadvmtaddrnode.create(ctypenode.create(tcpuprocvardef(resultdef).classdef)),'CREATE',constrparas);
{ typecast to the procvar type }
if tprocvardef(resultdef).is_addressonly then
result:=ctypeconvnode.create_explicit(result,resultdef)
@@ -683,6 +690,17 @@ implementation
end;
+ procedure tjvmtypeconvnode.second_nil_to_methodprocvar;
+ var
+ r: Treference;
+ begin
+ tg.gethltemp(current_asmdata.currasmlist,java_jlobject,java_jlobject.size,tt_normal,r);
+ hlcg.a_load_const_ref(current_asmdata.CurrAsmList,java_jlobject,0,r);
+ location_reset_ref(location,LOC_REFERENCE,def_cgsize(resultdef),1);
+ location.reference:=r;
+ end;
+
+
procedure tjvmtypeconvnode.second_bool_to_int;
var
newsize: tcgsize;
@@ -868,12 +886,12 @@ implementation
left:=nil;
end;
- function ord_enum_explicit_typecast(fdef: torddef; todef: tenumdef): tnode;
+ function ord_enum_explicit_typecast(fdef: torddef; todef: tcpuenumdef): tnode;
var
psym: tsym;
begin
{ we only create a class for the basedefs }
- todef:=todef.getbasedef;
+ todef:=tcpuenumdef(todef.getbasedef);
psym:=search_struct_member(todef.classdef,'FPCVALUEOF');
if not assigned(psym) or
(psym.typ<>procsym) then
@@ -887,12 +905,12 @@ implementation
left:=nil;
end;
- function enum_ord_explicit_typecast(fdef: tenumdef; todef: torddef): tnode;
+ function enum_ord_explicit_typecast(fdef: tcpuenumdef; todef: torddef): tnode;
var
psym: tsym;
begin
{ we only create a class for the basedef }
- fdef:=fdef.getbasedef;
+ fdef:=tcpuenumdef(fdef.getbasedef);
psym:=search_struct_member(fdef.classdef,'FPCORDINAL');
if not assigned(psym) or
(psym.typ<>procsym) then
@@ -938,7 +956,7 @@ implementation
if tsetdef(resultdef).elementdef.typ=enumdef then
begin
inserttypeconv_explicit(left,s64inttype);
- enumclassdef:=tenumdef(tsetdef(resultdef).elementdef).getbasedef.classdef;
+ enumclassdef:=tcpuenumdef(tenumdef(tsetdef(resultdef).elementdef).getbasedef).classdef;
mp:=cloadvmtaddrnode.create(ctypenode.create(enumclassdef));
helpername:='fpcLongToEnumSet';
{ enumclass.fpcLongToEnumSet(left,setbase,setsize) }
@@ -973,21 +991,21 @@ implementation
result:=nil;
if fromdef=todef then
exit;
- fsym:=tfieldvarsym(search_struct_member(tprocvardef(fromdef).classdef,'METHOD'));
+ fsym:=tfieldvarsym(search_struct_member(tcpuprocvardef(fromdef).classdef,'METHOD'));
if not assigned(fsym) or
(fsym.typ<>fieldvarsym) then
internalerror(2011072414);
{ can either be a procvar or a procvarclass }
if fromdef.typ=procvardef then
begin
- left:=ctypeconvnode.create_explicit(left,tprocvardef(fromdef).classdef);
+ left:=ctypeconvnode.create_explicit(left,tcpuprocvardef(fromdef).classdef);
include(left.flags,nf_load_procvar);
typecheckpass(left);
end;
result:=csubscriptnode.create(fsym,left);
{ create destination procvartype with info from source }
result:=ccallnode.createinternmethod(
- cloadvmtaddrnode.create(ctypenode.create(tprocvardef(todef).classdef)),
+ cloadvmtaddrnode.create(ctypenode.create(tcpuprocvardef(todef).classdef)),
'CREATE',ccallparanode.create(result,nil));
left:=nil;
end;
@@ -999,8 +1017,8 @@ implementation
{ must be procedure-of-object -> implicit pointer type -> get address
before typecasting to corresponding classdef }
left:=caddrnode.create_internal(left);
- inserttypeconv_explicit(left,tprocvardef(fromdef).classdef);
- fsym:=tfieldvarsym(search_struct_member(tprocvardef(fromdef).classdef,'METHOD'));
+ inserttypeconv_explicit(left,tcpuprocvardef(fromdef).classdef);
+ fsym:=tfieldvarsym(search_struct_member(tcpuprocvardef(fromdef).classdef,'METHOD'));
if not assigned(fsym) or
(fsym.typ<>fieldvarsym) then
internalerror(2011072414);
@@ -1012,11 +1030,11 @@ implementation
var
fsym: tsym;
begin
- fsym:=tfieldvarsym(search_struct_member(tprocvardef(todef).classdef,'METHOD'));
+ fsym:=tfieldvarsym(search_struct_member(tcpuprocvardef(todef).classdef,'METHOD'));
if not assigned(fsym) or
(fsym.typ<>fieldvarsym) then
internalerror(2011072415);
- result:=ccallnode.createinternmethod(cloadvmtaddrnode.create(ctypenode.create(tprocvardef(todef).classdef)),
+ result:=ccallnode.createinternmethod(cloadvmtaddrnode.create(ctypenode.create(tcpuprocvardef(todef).classdef)),
'CREATE',ccallparanode.create(left,nil));
left:=nil;
end;
@@ -1071,9 +1089,9 @@ implementation
result:=true;
{ check procvar conversion compatibility via their classes }
if fromdef.typ=procvardef then
- fromdef:=tprocvardef(fromdef).classdef;
+ fromdef:=tcpuprocvardef(fromdef).classdef;
if todef.typ=procvardef then
- todef:=tprocvardef(todef).classdef;
+ todef:=tcpuprocvardef(todef).classdef;
if (todef=java_jlobject) or
(todef=voidpointertype) then
exit;
@@ -1331,14 +1349,14 @@ implementation
if left.resultdef.typ=orddef then
begin
if not check_only then
- resnode:=ord_enum_explicit_typecast(torddef(left.resultdef),tenumdef(resultdef));
+ resnode:=ord_enum_explicit_typecast(torddef(left.resultdef),tcpuenumdef(resultdef));
result:=true;
exit;
end
else if resultdef.typ=orddef then
begin
if not check_only then
- resnode:=enum_ord_explicit_typecast(tenumdef(left.resultdef),torddef(resultdef));
+ resnode:=enum_ord_explicit_typecast(tcpuenumdef(left.resultdef),torddef(resultdef));
result:=true;
exit;
end
diff --git a/compiler/jvm/njvmcon.pas b/compiler/jvm/njvmcon.pas
index 722ccb29e4..8d248b0046 100644
--- a/compiler/jvm/njvmcon.pas
+++ b/compiler/jvm/njvmcon.pas
@@ -85,7 +85,7 @@ implementation
uses
globals,cutils,widestr,verbose,constexp,fmodule,
- symdef,symsym,symtable,symconst,
+ symdef,symsym,symcpu,symtable,symconst,
aasmdata,aasmcpu,defutil,
nutils,ncnv,nld,nmem,pjvm,pass_1,
cgbase,hlcgobj,hlcgcpu,cgutils,cpubase
@@ -98,7 +98,7 @@ implementation
function tjvmordconstnode.pass_1: tnode;
var
- basedef: tenumdef;
+ basedef: tcpuenumdef;
sym: tenumsym;
classfield: tsym;
begin
@@ -120,7 +120,7 @@ implementation
exit;
end;
{ b) find the corresponding class field }
- basedef:=tenumdef(resultdef).getbasedef;
+ basedef:=tcpuenumdef(tenumdef(resultdef).getbasedef);
classfield:=search_struct_member(basedef.classdef,sym.name);
{ c) create loadnode of the field }
@@ -313,7 +313,7 @@ implementation
mp:=cloadvmtaddrnode.create(ctypenode.create(java_juenumset));
if len=0 then
begin
- enumele:=cloadvmtaddrnode.create(ctypenode.create(tenumdef(eledef).getbasedef.classdef));
+ enumele:=cloadvmtaddrnode.create(ctypenode.create(tcpuenumdef(tenumdef(eledef).getbasedef).classdef));
inserttypeconv_explicit(enumele,search_system_type('JLCLASS').typedef);
paras:=ccallparanode.create(enumele,nil);
result:=ccallnode.createinternmethod(mp,'NONEOF',paras)
@@ -445,7 +445,7 @@ implementation
{ add a read-only typed constant }
new(ps);
ps^:=value_set^;
- csym:=tconstsym.create_ptr('_$setconst'+tostr(current_module.symlist.count),constset,ps,resultdef);
+ csym:=cconstsym.create_ptr('_$setconst'+tostr(current_module.symlist.count),constset,ps,resultdef);
csym.visibility:=vis_private;
include(csym.symoptions,sp_internal);
current_module.localsymtable.insert(csym);
diff --git a/compiler/jvm/njvminl.pas b/compiler/jvm/njvminl.pas
index 4711446de4..e4176fc838 100644
--- a/compiler/jvm/njvminl.pas
+++ b/compiler/jvm/njvminl.pas
@@ -73,7 +73,7 @@ implementation
uses
cutils,globals,verbose,globtype,constexp,fmodule,
aasmbase,aasmtai,aasmdata,aasmcpu,
- symtype,symconst,symdef,symsym,symtable,jvmdef,
+ symtype,symconst,symdef,symsym,symcpu,symtable,jvmdef,
defutil,
nadd,nbas,ncon,ncnv,nmat,nmem,ncal,nld,nflw,nutils,
cgbase,pass_1,pass_2,
@@ -362,7 +362,7 @@ implementation
if seteledef.typ=enumdef then
begin
inserttypeconv_explicit(setpara,java_juenumset);
- inserttypeconv_explicit(valuepara.left,tenumdef(seteledef).getbasedef.classdef);
+ inserttypeconv_explicit(valuepara.left,tcpuenumdef(tenumdef(seteledef).getbasedef).classdef);
end
else
begin
diff --git a/compiler/jvm/njvmld.pas b/compiler/jvm/njvmld.pas
index 529d62423b..9225b1305b 100644
--- a/compiler/jvm/njvmld.pas
+++ b/compiler/jvm/njvmld.pas
@@ -66,7 +66,7 @@ uses
symconst,symsym,symdef,symtable,defutil,jvmdef,
paramgr,
pass_1,
- cgbase,hlcgobj,cpuinfo;
+ cpubase,cgbase,hlcgobj,cpuinfo;
{ tjvmassignmentnode }
diff --git a/compiler/jvm/njvmmem.pas b/compiler/jvm/njvmmem.pas
index df77af9005..bc933ba6bd 100644
--- a/compiler/jvm/njvmmem.pas
+++ b/compiler/jvm/njvmmem.pas
@@ -66,7 +66,7 @@ implementation
systems,globals,procinfo,
cutils,verbose,constexp,
aasmbase,
- symconst,symtype,symtable,symsym,symdef,defutil,jvmdef,
+ symconst,symtype,symtable,symsym,symdef,symcpu,defutil,jvmdef,
htypechk,paramgr,
nadd,ncal,ncnv,ncon,nld,nutils,
pass_1,njvmcon,
@@ -225,7 +225,7 @@ implementation
{ an internal address node will observe "normal" address
operator semantics (= take the actual address!) }
result:=caddrnode.create_internal(taddrnode(left).left);
- result:=ctypeconvnode.create_explicit(result,tprocvardef(taddrnode(left).left.resultdef).classdef);
+ result:=ctypeconvnode.create_explicit(result,tcpuprocvardef(taddrnode(left).left.resultdef).classdef);
taddrnode(left).left:=nil;
end;
end
@@ -235,9 +235,9 @@ implementation
begin
{ the "code" field from the procvar }
result:=caddrnode.create_internal(left);
- result:=ctypeconvnode.create_explicit(result,tprocvardef(left.resultdef).classdef);
+ result:=ctypeconvnode.create_explicit(result,tcpuprocvardef(left.resultdef).classdef);
{ procvarclass.method }
- fsym:=search_struct_member(tprocvardef(left.resultdef).classdef,'METHOD');
+ fsym:=search_struct_member(tcpuprocvardef(left.resultdef).classdef,'METHOD');
if not assigned(fsym) or
(fsym.typ<>fieldvarsym) then
internalerror(2011072501);
@@ -436,7 +436,7 @@ implementation
begin
if (right.location.loc<>LOC_CONSTANT) then
begin
- psym:=search_struct_member(tenumdef(right.resultdef).getbasedef.classdef,'FPCORDINAL');
+ psym:=search_struct_member(tcpuenumdef(tenumdef(right.resultdef).getbasedef).classdef,'FPCORDINAL');
if not assigned(psym) or
(psym.typ<>procsym) or
(tprocsym(psym).ProcdefList.count<>1) then
diff --git a/compiler/jvm/njvmutil.pas b/compiler/jvm/njvmutil.pas
index d19537874d..72df2627b2 100644
--- a/compiler/jvm/njvmutil.pas
+++ b/compiler/jvm/njvmutil.pas
@@ -61,7 +61,7 @@ implementation
uses
verbose,cutils,globtype,globals,constexp,fmodule,
aasmdata,aasmtai,cpubase,aasmcpu,
- symbase,symtable,defutil,jvmdef,
+ symbase,symcpu,symtable,defutil,jvmdef,
ncnv,ncon,ninl,ncal,nld,nmem,
ppu,
pass_1;
@@ -197,7 +197,7 @@ implementation
java.lang.ThreadLocal class which will wrap the actual variable value }
if vo_is_thread_var in sym.varoptions then
begin
- vs:=tstaticvarsym.create(sym.realname+'$threadvar',sym.varspez,
+ vs:=cstaticvarsym.create(sym.realname+'$threadvar',sym.varspez,
jvmgetthreadvardef(sym.vardef),
sym.varoptions - [vo_is_thread_var]);
sym.owner.insert(vs);
@@ -223,7 +223,7 @@ implementation
{ in case of enum type, initialize with enum(0) if it exists }
if sym.vardef.typ=enumdef then
begin
- enuminitsym:=tstaticvarsym(tenumdef(sym.vardef).getbasedef.classdef.symtable.Find('__FPC_ZERO_INITIALIZER'));
+ enuminitsym:=tstaticvarsym(tcpuenumdef(tenumdef(sym.vardef).getbasedef).classdef.symtable.Find('__FPC_ZERO_INITIALIZER'));
if assigned(enuminitsym) then
initnode:=cloadnode.create(enuminitsym,enuminitsym.owner);
end
@@ -413,7 +413,7 @@ implementation
mainpd:=tprocsym(mainpsym).find_procdef_bytype(potype_proginit);
if not assigned(mainpd) then
internalerror(2011041902);
- mainpd.exprasmlist.insertList(unitinits);
+ tcpuprocdef(mainpd).exprasmlist.insertList(unitinits);
unitinits.free;
end;
@@ -467,7 +467,7 @@ implementation
if (tprocdef(pd).proctypeoption=potype_proginit) then
begin
{ add the args parameter }
- pvs:=tparavarsym.create('$args',1,vs_const,search_system_type('TJSTRINGARRAY').typedef,[]);
+ pvs:=cparavarsym.create('$args',1,vs_const,search_system_type('TJSTRINGARRAY').typedef,[]);
tprocdef(pd).parast.insert(pvs);
tprocdef(pd).calcparas;
end;
diff --git a/compiler/m68k/cpuasm.pas b/compiler/jvm/njvmvmt.pas
index b19eb527df..de9e184e94 100644
--- a/compiler/m68k/cpuasm.pas
+++ b/compiler/jvm/njvmvmt.pas
@@ -1,5 +1,7 @@
{
- Copyright (c) 1998-2000 by Florian Klaempfl
+ Copyright (c) 2014 by Jonas Maebe
+
+ Generate JVM bytecode for in set/case nodes
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -17,10 +19,34 @@
****************************************************************************
}
-unit cpuasm;
+unit njvmvmt;
+
+{$i fpcdefs.inc}
+
+interface
+
+ uses
+ ncgvmt;
+
+ type
+ tjvmvmtwriter = class(TVMTWriter)
+ class function use_vmt_writer: boolean; override;
+ end;
+
+
+implementation
+
+
+{*****************************************************************************
+ TJVMVMTWRITER
+*****************************************************************************}
- interface
- implementation
+ class function tjvmvmtwriter.use_vmt_writer: boolean;
+ begin
+ result:=false;
+ end;
+begin
+ CVMTWriter:=tjvmvmtwriter;
end.
diff --git a/compiler/jvm/pjvm.pas b/compiler/jvm/pjvm.pas
index d05886b6e9..80edbbe90f 100644
--- a/compiler/jvm/pjvm.pas
+++ b/compiler/jvm/pjvm.pas
@@ -64,7 +64,7 @@ implementation
fmodule,
parabase,aasmdata,
pdecsub,ngenutil,pparautl,
- symtable,symcreat,defcmp,jvmdef,nobj,
+ symtable,symcreat,defcmp,jvmdef,symcpu,nobj,
defutil,paramgr;
@@ -131,7 +131,7 @@ implementation
end;
if not assigned(sym) then
begin
- ps:=tprocsym.create('Create');
+ ps:=cprocsym.create('Create');
obj.symtable.insert(ps);
end;
{ determine symtable level }
@@ -139,7 +139,7 @@ implementation
while not(topowner.owner.symtabletype in [staticsymtable,globalsymtable]) do
topowner:=topowner.owner.defowner;
{ create procdef }
- pd:=tprocdef.create(topowner.owner.symtablelevel+1);
+ pd:=cprocdef.create(topowner.owner.symtablelevel+1);
if df_generic in obj.defoptions then
include(pd.defoptions,df_generic);
{ method of this objectdef }
@@ -304,8 +304,8 @@ implementation
{ create new class (different internal name than enum to prevent name
clash; at unit level because we don't want its methods to be nested
inside a function in case its a local type) }
- enumclass:=tobjectdef.create(odt_javaclass,'$'+current_module.realmodulename^+'$'+name+'$InternEnum$'+tostr(def.defid),java_jlenum);
- tenumdef(def).classdef:=enumclass;
+ enumclass:=cobjectdef.create(odt_javaclass,'$'+current_module.realmodulename^+'$'+name+'$InternEnum$'+tostr(def.defid),java_jlenum);
+ tcpuenumdef(def).classdef:=enumclass;
include(enumclass.objectoptions,oo_is_enum_class);
include(enumclass.objectoptions,oo_is_sealed);
{ implement FpcEnumValueObtainable interface }
@@ -314,11 +314,11 @@ implementation
name that can be used in generated Pascal code without risking an
identifier conflict (since it is local to this class; the global name
is unique because it's an identifier that contains $-signs) }
- enumclass.symtable.insert(ttypesym.create('__FPC_TEnumClassAlias',enumclass));
+ enumclass.symtable.insert(ctypesym.create('__FPC_TEnumClassAlias',enumclass));
{ also create an alias for the enum type so that we can iterate over
all enum values when creating the body of the class constructor }
- temptypesym:=ttypesym.create('__FPC_TEnumAlias',nil);
+ temptypesym:=ctypesym.create('__FPC_TEnumAlias',nil);
{ don't pass def to the ttypesym constructor, because then it
will replace the current (real) typesym of that def with the alias }
temptypesym.typedef:=def;
@@ -350,23 +350,23 @@ implementation
{ create static fields representing all enums }
for i:=0 to tenumdef(def).symtable.symlist.count-1 do
begin
- fsym:=tfieldvarsym.create(tenumsym(tenumdef(def).symtable.symlist[i]).realname,vs_final,enumclass,[]);
+ fsym:=cfieldvarsym.create(tenumsym(tenumdef(def).symtable.symlist[i]).realname,vs_final,enumclass,[]);
enumclass.symtable.insert(fsym);
sym:=make_field_static(enumclass.symtable,fsym);
{ add alias for the field representing ordinal(0), for use in
initialization code }
if tenumsym(tenumdef(def).symtable.symlist[i]).value=0 then
begin
- aliassym:=tstaticvarsym.create('__FPC_Zero_Initializer',vs_final,enumclass,[vo_is_external]);
+ aliassym:=cstaticvarsym.create('__FPC_Zero_Initializer',vs_final,enumclass,[vo_is_external]);
enumclass.symtable.insert(aliassym);
aliassym.set_raw_mangledname(sym.mangledname);
end;
end;
{ create local "array of enumtype" type for the "values" functionality
(used internally by the JDK) }
- arrdef:=tarraydef.create(0,tenumdef(def).symtable.symlist.count-1,s32inttype);
+ arrdef:=carraydef.create(0,tenumdef(def).symtable.symlist.count-1,s32inttype);
arrdef.elementdef:=enumclass;
- arrsym:=ttypesym.create('__FPC_TEnumValues',arrdef);
+ arrsym:=ctypesym.create('__FPC_TEnumValues',arrdef);
enumclass.symtable.insert(arrsym);
{ insert "public static values: array of enumclass" that returns $VALUES.clone()
(rather than a dynamic array and using clone --which we don't support yet for arrays--
@@ -380,12 +380,12 @@ implementation
if tenumdef(def).has_jumps then
begin
{ add field for the value }
- fsym:=tfieldvarsym.create('__fpc_fenumval',vs_final,s32inttype,[]);
+ fsym:=cfieldvarsym.create('__fpc_fenumval',vs_final,s32inttype,[]);
enumclass.symtable.insert(fsym);
tobjectsymtable(enumclass.symtable).addfield(fsym,vis_strictprivate);
{ add class field with hash table that maps from FPC-declared ordinal value -> enum instance }
juhashmap:=search_system_type('JUHASHMAP').typedef;
- fsym:=tfieldvarsym.create('__fpc_ord2enum',vs_final,juhashmap,[]);
+ fsym:=cfieldvarsym.create('__fpc_ord2enum',vs_final,juhashmap,[]);
enumclass.symtable.insert(fsym);
make_field_static(enumclass.symtable,fsym);
{ add custom constructor }
@@ -442,14 +442,14 @@ implementation
"Values" instance method -- that's also the reason why we insert the
field only now, because we cannot disable duplicate identifier
checking when creating the "Values" method }
- fsym:=tfieldvarsym.create('$VALUES',vs_final,arrdef,[]);
+ fsym:=cfieldvarsym.create('$VALUES',vs_final,arrdef,[]);
fsym.visibility:=vis_strictprivate;
enumclass.symtable.insert(fsym,false);
sym:=make_field_static(enumclass.symtable,fsym);
{ alias for accessing the field in generated Pascal code }
sl:=tpropaccesslist.create;
sl.addsym(sl_load,sym);
- enumclass.symtable.insert(tabsolutevarsym.create_ref('__fpc_FVALUES',arrdef,sl));
+ enumclass.symtable.insert(cabsolutevarsym.create_ref('__fpc_FVALUES',arrdef,sl));
{ add initialization of the static class fields created above }
if not str_parse_method_dec('constructor fpc_enum_class_constructor;',potype_class_constructor,true,enumclass,pd) then
internalerror(2011062303);
@@ -489,13 +489,13 @@ implementation
{ create new class (different internal name than pvar to prevent name
clash; at unit level because we don't want its methods to be nested
inside a function in case its a local type) }
- pvclass:=tobjectdef.create(odt_javaclass,'$'+current_module.realmodulename^+'$'+name+'$InternProcvar$'+tostr(def.defid),java_procvarbase);
- tprocvardef(def).classdef:=pvclass;
+ pvclass:=cobjectdef.create(odt_javaclass,'$'+current_module.realmodulename^+'$'+name+'$InternProcvar$'+tostr(def.defid),java_procvarbase);
+ tcpuprocvardef(def).classdef:=pvclass;
include(pvclass.objectoptions,oo_is_sealed);
if df_generic in def.defoptions then
include(pvclass.defoptions,df_generic);
{ associate typesym }
- pvclass.symtable.insert(ttypesym.create('__FPC_TProcVarClassAlias',pvclass));
+ pvclass.symtable.insert(ctypesym.create('__FPC_TProcVarClassAlias',pvclass));
{ set external name to match procvar type name }
if not islocal then
pvclass.objextname:=stringdup(name)
@@ -517,7 +517,7 @@ implementation
{ add local alias for the procvartype that we can use when implementing
the invoke method }
- temptypesym:=ttypesym.create('__FPC_ProcVarAlias',nil);
+ temptypesym:=ctypesym.create('__FPC_ProcVarAlias',nil);
{ don't pass def to the ttypesym constructor, because then it
will replace the current (real) typesym of that def with the alias }
temptypesym.typedef:=def;
@@ -533,12 +533,12 @@ implementation
not islocal and
not force_no_callback_intf then
begin
- pvintf:=tobjectdef.create(odt_interfacejava,'Callback',nil);
+ pvintf:=cobjectdef.create(odt_interfacejava,'Callback',nil);
pvintf.objextname:=stringdup('Callback');
if df_generic in def.defoptions then
include(pvintf.defoptions,df_generic);
{ associate typesym }
- pvclass.symtable.insert(ttypesym.create('Callback',pvintf));
+ pvclass.symtable.insert(ctypesym.create('Callback',pvintf));
{ add a method prototype matching the procvar (like the invoke
in the procvarclass itself) }
@@ -583,7 +583,7 @@ implementation
procedure jvm_wrap_virtual_class_method(pd: tprocdef);
var
wrapperpd: tprocdef;
- wrapperpv: tprocvardef;
+ wrapperpv: tcpuprocvardef;
typ: ttypesym;
wrappername: shortstring;
begin
@@ -641,14 +641,14 @@ implementation
wrapperpd.synthetickind:=tsk_jvm_virtual_clmethod;
wrapperpd.skpara:=pd;
{ also create procvar type that we can use in the implementation }
- wrapperpv:=tprocvardef(pd.getcopyas(procvardef,pc_normal));
+ wrapperpv:=tcpuprocvardef(pd.getcopyas(procvardef,pc_normal));
wrapperpv.calcparas;
{ no use in creating a callback wrapper here, this procvar type isn't
for public consumption }
jvm_create_procvar_class_intern('__fpc_virtualclassmethod_pv_t'+tostr(wrapperpd.defid),wrapperpv,true);
{ create alias for the procvar type so we can use it in generated
Pascal code }
- typ:=ttypesym.create('__fpc_virtualclassmethod_pv_t'+tostr(wrapperpd.defid),wrapperpv);
+ typ:=ctypesym.create('__fpc_virtualclassmethod_pv_t'+tostr(wrapperpd.defid),wrapperpv);
wrapperpv.classdef.typesym.visibility:=vis_strictprivate;
symtablestack.top.insert(typ);
symtablestack.pop(pd.owner);
@@ -741,7 +741,7 @@ implementation
begin
{ make sure we don't emit a definition for this field (we'll do
that for the constsym already) -> mark as external }
- ssym:=tstaticvarsym.create(internal_static_field_name(csym.realname),vs_final,csym.constdef,[vo_is_external]);
+ ssym:=cstaticvarsym.create(internal_static_field_name(csym.realname),vs_final,csym.constdef,[vo_is_external]);
csym.owner.insert(ssym);
{ alias storage to the constsym }
ssym.set_mangledname(csym.realname);
@@ -779,7 +779,7 @@ implementation
has been compiler -> insert a copy in the unit's staticsymtable
}
symtablestack.push(current_module.localsymtable);
- ssym:=tstaticvarsym.create(internal_static_field_name(csym.realname),vs_final,tsetdef(csym.constdef).getcopy,[vo_is_external,vo_has_local_copy]);
+ ssym:=cstaticvarsym.create(internal_static_field_name(csym.realname),vs_final,tsetdef(csym.constdef).getcopy,[vo_is_external,vo_has_local_copy]);
symtablestack.top.insert(ssym);
symtablestack.pop(current_module.localsymtable);
{ alias storage to the constsym }
@@ -998,7 +998,7 @@ implementation
{ create procdef }
if not assigned(orgaccesspd) then
begin
- pd:=tprocdef.create(normal_function_level);
+ pd:=cprocdef.create(normal_function_level);
if df_generic in obj.defoptions then
include(pd.defoptions,df_generic);
{ method of this objectdef }
@@ -1030,7 +1030,7 @@ implementation
if not assigned(sym) or
(sym.owner<>p.owner) then
begin
- ps:=tprocsym.create(name);
+ ps:=cprocsym.create(name);
obj.symtable.insert(ps);
end
else
@@ -1060,7 +1060,7 @@ implementation
if not assigned(orgaccesspd) then
begin
{ parameter with value to set }
- pvs:=tparavarsym.create('__fpc_newval__',10,vs_const,p.propdef,[]);
+ pvs:=cparavarsym.create('__fpc_newval__',10,vs_const,p.propdef,[]);
pd.parast.insert(pvs);
end;
if (ppo_hasparameters in p.propoptions) and
@@ -1076,7 +1076,7 @@ implementation
callthroughpropname:=callthroughpropname+'__getter_wrapper'
else
callthroughpropname:=callthroughpropname+'__setter_wrapper';
- callthroughprop:=tpropertysym.create(callthroughpropname);
+ callthroughprop:=cpropertysym.create(callthroughpropname);
callthroughprop.visibility:=p.visibility;
if getter then
diff --git a/compiler/jvm/symcpu.pas b/compiler/jvm/symcpu.pas
new file mode 100644
index 0000000000..207a70b4bd
--- /dev/null
+++ b/compiler/jvm/symcpu.pas
@@ -0,0 +1,549 @@
+{
+ Copyright (c) 2014 by Florian Klaempfl
+
+ Symbol table overrides for JVM
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+ ****************************************************************************
+}
+unit symcpu;
+
+{$i fpcdefs.inc}
+
+interface
+
+uses
+ globtype,
+ aasmdata,
+ symtype,
+ symdef,symsym;
+
+type
+ { defs }
+ tcpufiledef = class(tfiledef)
+ end;
+ tcpufiledefclass = class of tcpufiledef;
+
+ tcpuvariantdef = class(tvariantdef)
+ end;
+ tcpuvariantdefclass = class of tcpuvariantdef;
+
+ tcpuformaldef = class(tformaldef)
+ end;
+ tcpuformaldefclass = class of tcpuformaldef;
+
+ tcpuforwarddef = class(tforwarddef)
+ end;
+ tcpuforwarddefclass = class of tcpuforwarddef;
+
+ tcpuundefineddef = class(tundefineddef)
+ end;
+ tcpuundefineddefclass = class of tcpuundefineddef;
+
+ tcpuerrordef = class(terrordef)
+ end;
+ tcpuerrordefclass = class of tcpuerrordef;
+
+ tcpupointerdef = class(tpointerdef)
+ end;
+ tcpupointerdefclass = class of tcpupointerdef;
+
+ tcpurecorddef = class(trecorddef)
+ end;
+ tcpurecorddefclass = class of tcpurecorddef;
+
+ tcpuimplementedinterface = class(timplementedinterface)
+ end;
+ tcpuimplementedinterfaceclass = class of tcpuimplementedinterface;
+
+ tcpuobjectdef = class(tobjectdef)
+ end;
+ tcpuobjectdefclass = class of tcpuobjectdef;
+
+ tcpuclassrefdef = class(tclassrefdef)
+ end;
+ tcpuclassrefdefclass = class of tcpuclassrefdef;
+
+ tcpuarraydef = class(tarraydef)
+ end;
+ tcpuarraydefclass = class of tcpuarraydef;
+
+ tcpuorddef = class(torddef)
+ end;
+ tcpuorddefclass = class of tcpuorddef;
+
+ tcpufloatdef = class(tfloatdef)
+ end;
+ tcpufloatdefclass = class of tcpufloatdef;
+
+ tcpuprocvardef = class(tprocvardef)
+ protected
+ procedure ppuwrite_platform(ppufile: tcompilerppufile); override;
+ procedure ppuload_platform(ppufile: tcompilerppufile); override;
+ public
+ { class representing this procvar on the Java side }
+ classdef : tobjectdef;
+ classdefderef : tderef;
+ procedure buildderef;override;
+ procedure deref;override;
+ function getcopy: tstoreddef; override;
+ end;
+ tcpuprocvardefclass = class of tcpuprocvardef;
+
+ tcpuprocdef = class(tprocdef)
+ { generated assembler code; used by JVM backend so it can afterwards
+ easily write out all methods grouped per class }
+ exprasmlist : TAsmList;
+ function jvmmangledbasename(signature: boolean): TSymStr;
+ function mangledname: TSymStr; override;
+ destructor destroy; override;
+ end;
+ tcpuprocdefclass = class of tcpuprocdef;
+
+ tcpustringdef = class(tstringdef)
+ end;
+ tcpustringdefclass = class of tcpustringdef;
+
+ tcpuenumdef = class(tenumdef)
+ protected
+ procedure ppuload_platform(ppufile: tcompilerppufile); override;
+ procedure ppuwrite_platform(ppufile: tcompilerppufile); override;
+ public
+ { class representing this enum on the Java side }
+ classdef : tobjectdef;
+ classdefderef : tderef;
+ function getcopy: tstoreddef; override;
+ procedure buildderef; override;
+ procedure deref; override;
+ end;
+ tcpuenumdefclass = class of tcpuenumdef;
+
+ tcpusetdef = class(tsetdef)
+ end;
+ tcpusetdefclass = class of tcpusetdef;
+
+ { syms }
+ tcpulabelsym = class(tlabelsym)
+ end;
+ tcpulabelsymclass = class of tcpulabelsym;
+
+ tcpuunitsym = class(tunitsym)
+ end;
+ tcpuunitsymclass = class of tcpuunitsym;
+
+ tcpunamespacesym = class(tnamespacesym)
+ end;
+ tcpunamespacesymclass = class of tcpunamespacesym;
+
+ tcpuprocsym = class(tprocsym)
+ procedure check_forward; override;
+ end;
+ tcpuprocsymclass = class of tcpuprocsym;
+
+ tcputypesym = class(ttypesym)
+ end;
+ tcpuypesymclass = class of tcputypesym;
+
+ tcpufieldvarsym = class(tfieldvarsym)
+ procedure set_externalname(const s: string); override;
+ function mangledname: TSymStr; override;
+ end;
+ tcpufieldvarsymclass = class of tcpufieldvarsym;
+
+ tcpulocalvarsym = class(tlocalvarsym)
+ end;
+ tcpulocalvarsymclass = class of tcpulocalvarsym;
+
+ tcpuparavarsym = class(tparavarsym)
+ end;
+ tcpuparavarsymclass = class of tcpuparavarsym;
+
+ tcpustaticvarsym = class(tstaticvarsym)
+ procedure set_mangledname(const s: TSymStr); override;
+ function mangledname: TSymStr; override;
+ end;
+ tcpustaticvarsymclass = class of tcpustaticvarsym;
+
+ tcpuabsolutevarsym = class(tabsolutevarsym)
+ end;
+ tcpuabsolutevarsymclass = class of tcpuabsolutevarsym;
+
+ tcpupropertysym = class(tpropertysym)
+ end;
+ tcpupropertysymclass = class of tcpupropertysym;
+
+ tcpuconstsym = class(tconstsym)
+ end;
+ tcpuconstsymclass = class of tcpuconstsym;
+
+ tcpuenumsym = class(tenumsym)
+ end;
+ tcpuenumsymclass = class of tcpuenumsym;
+
+ tcpusyssym = class(tsyssym)
+ end;
+ tcpusyssymclass = class of tcpusyssym;
+
+
+const
+ pbestrealtype : ^tdef = @s64floattype;
+
+
+implementation
+
+ uses
+ verbose,cutils,cclasses,
+ symconst,symbase,jvmdef,
+ paramgr;
+
+
+{****************************************************************************
+ tcpuenumdef
+****************************************************************************}
+
+ procedure tcpuenumdef.ppuload_platform(ppufile: tcompilerppufile);
+ begin
+ inherited;
+ ppufile.getderef(classdefderef);
+ end;
+
+
+ procedure tcpuenumdef.ppuwrite_platform(ppufile: tcompilerppufile);
+ begin
+ inherited;
+ ppufile.putderef(classdefderef);
+ end;
+
+
+ function tcpuenumdef.getcopy: tstoreddef;
+ begin
+ result:=inherited;
+ tcpuenumdef(result).classdef:=classdef;
+ end;
+
+
+ procedure tcpuenumdef.buildderef;
+ begin
+ inherited;
+ classdefderef.build(classdef);
+ end;
+
+
+ procedure tcpuenumdef.deref;
+ begin
+ inherited;
+ classdef:=tobjectdef(classdefderef.resolve);
+ end;
+
+{****************************************************************************
+ tcpuprocdef
+****************************************************************************}
+
+ function tcpuprocdef.jvmmangledbasename(signature: boolean): TSymStr;
+ var
+ vs: tparavarsym;
+ i: longint;
+ founderror: tdef;
+ tmpresult: TSymStr;
+ container: tsymtable;
+ begin
+ { format:
+ * method definition (in Jasmin):
+ (private|protected|public) [static] method(parametertypes)returntype
+ * method invocation
+ package/class/method(parametertypes)returntype
+ -> store common part: method(parametertypes)returntype and
+ adorn as required when using it.
+ }
+ if not signature then
+ begin
+ { method name }
+ { special names for constructors and class constructors }
+ if proctypeoption=potype_constructor then
+ tmpresult:='<init>'
+ else if proctypeoption in [potype_class_constructor,potype_unitinit] then
+ tmpresult:='<clinit>'
+ else if po_has_importname in procoptions then
+ begin
+ if assigned(import_name) then
+ tmpresult:=import_name^
+ else
+ internalerror(2010122608);
+ end
+ else
+ begin
+ tmpresult:=procsym.realname;
+ if tmpresult[1]='$' then
+ tmpresult:=copy(tmpresult,2,length(tmpresult)-1);
+ { nested functions }
+ container:=owner;
+ while container.symtabletype=localsymtable do
+ begin
+ tmpresult:='$'+tprocdef(owner.defowner).procsym.realname+'$'+tostr(tprocdef(owner.defowner).procsym.symid)+'$'+tmpresult;
+ container:=container.defowner.owner;
+ end;
+ end;
+ end
+ else
+ tmpresult:='';
+ { parameter types }
+ tmpresult:=tmpresult+'(';
+ { not the case for the main program (not required for defaultmangledname
+ because setmangledname() is called for the main program; in case of
+ the JVM, this only sets the importname, however) }
+ if assigned(paras) then
+ begin
+ init_paraloc_info(callerside);
+ for i:=0 to paras.count-1 do
+ begin
+ vs:=tparavarsym(paras[i]);
+ { function result is not part of the mangled name }
+ if vo_is_funcret in vs.varoptions then
+ continue;
+ { self pointer neither, except for class methods (the JVM only
+ supports static class methods natively, so the self pointer
+ here is a regular parameter as far as the JVM is concerned }
+ if not(po_classmethod in procoptions) and
+ (vo_is_self in vs.varoptions) then
+ continue;
+ { passing by reference is emulated by passing an array of one
+ element containing the value; for types that aren't pointers
+ in regular Pascal, simply passing the underlying pointer type
+ does achieve regular call-by-reference semantics though;
+ formaldefs always have to be passed like that because their
+ contents can be replaced }
+ if paramanager.push_copyout_param(vs.varspez,vs.vardef,proccalloption) then
+ tmpresult:=tmpresult+'[';
+ { Add the parameter type. }
+ if not jvmaddencodedtype(vs.vardef,false,tmpresult,signature,founderror) then
+ { an internalerror here is also triggered in case of errors in the source code }
+ tmpresult:='<error>';
+ end;
+ end;
+ tmpresult:=tmpresult+')';
+ { And the type of the function result (void in case of a procedure and
+ constructor). }
+ if (proctypeoption in [potype_constructor,potype_class_constructor]) then
+ jvmaddencodedtype(voidtype,false,tmpresult,signature,founderror)
+ else if not jvmaddencodedtype(returndef,false,tmpresult,signature,founderror) then
+ { an internalerror here is also triggered in case of errors in the source code }
+ tmpresult:='<error>';
+ result:=tmpresult;
+ end;
+
+
+ function tcpuprocdef.mangledname: TSymStr;
+ begin
+ if _mangledname='' then
+ begin
+ result:=jvmmangledbasename(false);
+ if (po_has_importdll in procoptions) then
+ begin
+ { import_dll comes from "external 'import_dll_name' name 'external_name'" }
+ if assigned(import_dll) then
+ result:=import_dll^+'/'+result
+ else
+ internalerror(2010122607);
+ end
+ else
+ jvmaddtypeownerprefix(owner,mangledname);
+ _mangledname:=result;
+ end
+ else
+ result:=_mangledname;
+ end;
+
+
+ destructor tcpuprocdef.destroy;
+ begin
+ exprasmlist.free;
+ inherited destroy;
+ end;
+
+{****************************************************************************
+ tcpuprocvardef
+****************************************************************************}
+
+ procedure tcpuprocvardef.ppuwrite_platform(ppufile: tcompilerppufile);
+ begin
+ inherited;
+ ppufile.putderef(classdefderef);
+ end;
+
+
+ procedure tcpuprocvardef.ppuload_platform(ppufile: tcompilerppufile);
+ begin
+ inherited;
+ ppufile.getderef(classdefderef);
+ end;
+
+
+ procedure tcpuprocvardef.buildderef;
+ begin
+ inherited buildderef;
+ classdefderef.build(classdef);
+ end;
+
+
+ procedure tcpuprocvardef.deref;
+ begin
+ inherited deref;
+ classdef:=tobjectdef(classdefderef.resolve);
+ end;
+
+ function tcpuprocvardef.getcopy: tstoreddef;
+ begin
+ result:=inherited;
+ tcpuprocvardef(result).classdef:=classdef;
+ end;
+
+
+{****************************************************************************
+ tcpuprocsym
+****************************************************************************}
+
+ procedure tcpuprocsym.check_forward;
+ var
+ curri, checki: longint;
+ currpd, checkpd: tprocdef;
+ begin
+ inherited;
+ { check for conflicts based on mangled name, because several FPC
+ types/constructs map to the same JVM mangled name }
+ for curri:=0 to FProcdefList.Count-2 do
+ begin
+ currpd:=tprocdef(FProcdefList[curri]);
+ if (po_external in currpd.procoptions) or
+ (currpd.proccalloption=pocall_internproc) then
+ continue;
+ for checki:=curri+1 to FProcdefList.Count-1 do
+ begin
+ checkpd:=tprocdef(FProcdefList[checki]);
+ if po_external in checkpd.procoptions then
+ continue;
+ if currpd.mangledname=checkpd.mangledname then
+ begin
+ MessagePos(checkpd.fileinfo,parser_e_overloaded_have_same_mangled_name);
+ MessagePos1(currpd.fileinfo,sym_e_param_list,currpd.customprocname([pno_mangledname]));
+ MessagePos1(checkpd.fileinfo,sym_e_param_list,checkpd.customprocname([pno_mangledname]));
+ end;
+ end;
+ end;
+ inherited;
+ end;
+
+
+{****************************************************************************
+ tcpustaticvarsym
+****************************************************************************}
+
+ procedure tcpustaticvarsym.set_mangledname(const s: TSymStr);
+ begin
+ inherited;
+ _mangledname:=jvmmangledbasename(self,s,false);
+ jvmaddtypeownerprefix(owner,_mangledname);
+ end;
+
+
+ function tcpustaticvarsym.mangledname: TSymStr;
+ begin
+ if _mangledname='' then
+ begin
+ if _mangledbasename='' then
+ _mangledname:=jvmmangledbasename(self,false)
+ else
+ _mangledname:=jvmmangledbasename(self,_mangledbasename,false);
+ jvmaddtypeownerprefix(owner,_mangledname);
+ end;
+ result:=_mangledname;
+ end;
+
+
+{****************************************************************************
+ tcpufieldvarsym
+****************************************************************************}
+
+ procedure tcpufieldvarsym.set_externalname(const s: string);
+ begin
+ { make sure it is recalculated }
+ cachedmangledname:='';
+ if is_java_class_or_interface(tdef(owner.defowner)) then
+ begin
+ externalname:=stringdup(s);
+ include(varoptions,vo_has_mangledname);
+ end
+ else
+ internalerror(2011031201);
+ end;
+
+
+ function tcpufieldvarsym.mangledname: TSymStr;
+ begin
+ if is_java_class_or_interface(tdef(owner.defowner)) or
+ (tdef(owner.defowner).typ=recorddef) then
+ begin
+ if cachedmangledname<>'' then
+ result:=cachedmangledname
+ else
+ begin
+ result:=jvmmangledbasename(self,false);
+ jvmaddtypeownerprefix(owner,result);
+ cachedmangledname:=result;
+ end;
+ end
+ else
+ result:=inherited;
+ end;
+
+begin
+ { used tdef classes }
+ cfiledef:=tcpufiledef;
+ cvariantdef:=tcpuvariantdef;
+ cformaldef:=tcpuformaldef;
+ cforwarddef:=tcpuforwarddef;
+ cundefineddef:=tcpuundefineddef;
+ cerrordef:=tcpuerrordef;
+ cpointerdef:=tcpupointerdef;
+ crecorddef:=tcpurecorddef;
+ cimplementedinterface:=tcpuimplementedinterface;
+ cobjectdef:=tcpuobjectdef;
+ cclassrefdef:=tcpuclassrefdef;
+ carraydef:=tcpuarraydef;
+ corddef:=tcpuorddef;
+ cfloatdef:=tcpufloatdef;
+ cprocvardef:=tcpuprocvardef;
+ cprocdef:=tcpuprocdef;
+ cstringdef:=tcpustringdef;
+ cenumdef:=tcpuenumdef;
+ csetdef:=tcpusetdef;
+
+ { used tsym classes }
+ clabelsym:=tcpulabelsym;
+ cunitsym:=tcpuunitsym;
+ cnamespacesym:=tcpunamespacesym;
+ cprocsym:=tcpuprocsym;
+ ctypesym:=tcputypesym;
+ cfieldvarsym:=tcpufieldvarsym;
+ clocalvarsym:=tcpulocalvarsym;
+ cparavarsym:=tcpuparavarsym;
+ cstaticvarsym:=tcpustaticvarsym;
+ cabsolutevarsym:=tcpuabsolutevarsym;
+ cpropertysym:=tcpupropertysym;
+ cconstsym:=tcpuconstsym;
+ cenumsym:=tcpuenumsym;
+ csyssym:=tcpusyssym;
+end.
+
diff --git a/compiler/jvm/tgcpu.pas b/compiler/jvm/tgcpu.pas
index 28f7b03518..6f3b2e431f 100644
--- a/compiler/jvm/tgcpu.pas
+++ b/compiler/jvm/tgcpu.pas
@@ -55,7 +55,7 @@ unit tgcpu;
uses
verbose,
cgbase,
- symconst,symdef,symsym,defutil,
+ symconst,symdef,symsym,symcpu,defutil,
cpubase,aasmcpu,
hlcgobj,hlcgcpu;
@@ -135,7 +135,7 @@ unit tgcpu;
if tsetdef(def).elementdef.typ=enumdef then
begin
{ load enum class type }
- list.concat(taicpu.op_sym(a_ldc,current_asmdata.RefAsmSymbol(tenumdef(tsetdef(def).elementdef).getbasedef.classdef.jvm_full_typename(true))));
+ list.concat(taicpu.op_sym(a_ldc,current_asmdata.RefAsmSymbol(tcpuenumdef(tenumdef(tsetdef(def).elementdef).getbasedef).classdef.jvm_full_typename(true))));
thlcgjvm(hlcg).incstack(current_asmdata.CurrAsmList,1);
{ call tenumset.noneOf() class method }
sym:=tsym(tobjectdef(java_juenumset).symtable.find('NONEOF'));
@@ -182,7 +182,7 @@ unit tgcpu;
begin
if not tprocvardef(def).is_addressonly then
begin
- getimplicitobjtemp(list,tprocvardef(def).classdef,temptype,ref);
+ getimplicitobjtemp(list,tcpuprocvardef(def).classdef,temptype,ref);
result:=true;
end;
end;
diff --git a/compiler/link.pas b/compiler/link.pas
index 245c6da968..7731666d18 100644
--- a/compiler/link.pas
+++ b/compiler/link.pas
@@ -800,7 +800,7 @@ Implementation
if (target_ar.id=ar_gnu_ar_scripted) then
writeln(script, 'CREATE ' + current_module.staticlibfilename)
else { wlib case }
- writeln(script,'-q -fo -c '+
+ writeln(script,'-q -fo -c -b '+
maybequoted(current_module.staticlibfilename));
current := TCmdStrListItem(SmartLinkOFiles.First);
while current <> nil do
@@ -1592,7 +1592,7 @@ Implementation
ar_watcom_wlib_omf_info : tarinfo =
( id : ar_watcom_wlib_omf;
- arcmd : 'wlib -q -fo -c $LIB $FILES';
+ arcmd : 'wlib -q -fo -c -b $LIB $FILES';
arfinishcmd : ''
);
diff --git a/compiler/llvm/hlcgllvm.pas b/compiler/llvm/hlcgllvm.pas
index ea7b57be80..36baed2bfb 100644
--- a/compiler/llvm/hlcgllvm.pas
+++ b/compiler/llvm/hlcgllvm.pas
@@ -182,7 +182,7 @@ implementation
paraloctoloc(location,hloc);
tmpreg:=getaddressregister(list,getpointerdef(location^.def));
list.concat(taillvm.getelementptr_reg_size_ref_size_const(tmpreg,getpointerdef(size),initialref,s32inttype,paralocidx,true));
- reference_reset_base(tmpref,tmpreg,0,newalignment(initialref.alignment,totaloffset));
+ reference_reset_base(tmpref,getpointerdef(location^.def),tmpreg,0,newalignment(initialref.alignment,totaloffset));
end
else
tmpref:=initialref;
@@ -211,7 +211,7 @@ implementation
begin
if assigned(location^.next) then
internalerror(2010052906);
- reference_reset_base(ref,location^.reference.index,location^.reference.offset,newalignment(cgpara.alignment,cgpara.intsize-sizeleft));
+ reference_reset_base(ref,getpointerdef(size),location^.reference.index,location^.reference.offset,newalignment(cgpara.alignment,cgpara.intsize-sizeleft));
if (def_cgsize(size)<>OS_NO) and
(size.size=sizeleft) and
(sizeleft<=sizeof(aint)) then
@@ -256,7 +256,7 @@ implementation
begin
reg:=getaddressregister(list,getpointerdef(newrefsize));
a_loadaddr_ref_reg(list,refsize,getpointerdef(newrefsize),initialref,reg);
- reference_reset_base(newref,reg,0,initialref.alignment);
+ reference_reset_base(newref,getpointerdef(newrefsize),reg,0,initialref.alignment);
refsize:=newrefsize;
end
else
@@ -327,7 +327,7 @@ implementation
internalerror(2014012307)
else
begin
- reference_reset_base(href,paraloc^.reference.index,paraloc^.reference.offset,paraloc^.def.alignment);
+ reference_reset_base(href,getpointerdef(callpara^.def),paraloc^.reference.index,paraloc^.reference.offset,paraloc^.def.alignment);
res:=getregisterfordef(list,paraloc^.def);
load_ref_anyreg(callpara^.def,href,res,callpara);
end;
@@ -443,7 +443,7 @@ implementation
{ typecast pointer to memory into pointer to integer type }
hreg:=getaddressregister(list,getpointerdef(tmpsize));
a_loadaddr_ref_reg(list,fromsize,getpointerdef(tmpsize),tmpref,hreg);
- reference_reset_base(sref,hreg,0,tmpref.alignment);
+ reference_reset_base(sref,getpointerdef(tmpsize),hreg,0,tmpref.alignment);
{ load the integer from the temp into the destination }
a_load_ref_ref(list,tmpsize,tosize,tmpref,sref);
tg.ungettemp(list,tmpref);
@@ -465,7 +465,7 @@ implementation
begin
hreg2:=getaddressregister(list,getpointerdef(fromsize));
a_loadaddr_ref_reg(list,tosize,getpointerdef(fromsize),sref,hreg2);
- reference_reset_base(sref,hreg2,0,sref.alignment);
+ reference_reset_base(sref,getpointerdef(fromsize),hreg2,0,sref.alignment);
tosize:=fromsize;
end;
end
@@ -553,7 +553,7 @@ implementation
tmpsize:=def2intdef(fromsize,tosize);
hreg:=getaddressregister(list,getpointerdef(tmpsize));
a_loadaddr_ref_reg(list,fromsize,getpointerdef(tmpsize),sref,hreg);
- reference_reset_base(sref,hreg,0,sref.alignment);
+ reference_reset_base(sref,getpointerdef(tmpsize),hreg,0,sref.alignment);
{ load that integer }
a_load_ref_reg(list,tmpsize,tosize,sref,register);
end
@@ -583,7 +583,7 @@ implementation
to an i64 *)
hreg:=getaddressregister(list,getpointerdef(tosize));
a_loadaddr_ref_reg(list,fromsize,getpointerdef(tosize),sref,hreg);
- reference_reset_base(sref,hreg,0,sref.alignment);
+ reference_reset_base(sref,getpointerdef(tosize),hreg,0,sref.alignment);
fromsize:=tosize;
end;
end;
@@ -1196,7 +1196,7 @@ implementation
begin
hreg:=getaddressregister(list,getpointerdef(llvmparadef));
a_loadaddr_ref_reg(list,vardef,getpointerdef(llvmparadef),destloc.reference,hreg);
- reference_reset_base(href,hreg,0,destloc.reference.alignment);
+ reference_reset_base(href,getpointerdef(llvmparadef),hreg,0,destloc.reference.alignment);
end;
index:=0;
offset:=0;
@@ -1205,7 +1205,7 @@ implementation
paraloctoloc(ploc,hloc);
hreg:=getaddressregister(list,getpointerdef(ploc^.def));
list.concat(taillvm.getelementptr_reg_size_ref_size_const(hreg,getpointerdef(llvmparadef),href,s32inttype,index,true));
- reference_reset_base(href2,hreg,0,newalignment(href.alignment,offset));
+ reference_reset_base(href2,getpointerdef(ploc^.def),hreg,0,newalignment(href.alignment,offset));
a_load_loc_ref(list,ploc^.def,ploc^.def,hloc,href2);
inc(offset,ploc^.def.size);
inc(index);
@@ -1318,9 +1318,9 @@ implementation
if assigned(ref.symbol) then
reference_reset_symbol(tmpref,ref.symbol,0,ref.alignment)
else
- reference_reset_base(tmpref,ref.base,0,ref.alignment);
+ reference_reset_base(tmpref,getpointerdef(def),ref.base,0,ref.alignment);
list.concat(taillvm.getelementptr_reg_size_ref_size_const(hreg2,getpointerdef(def),tmpref,ptruinttype,ptrindex,assigned(ref.symbol)));
- reference_reset_base(result,hreg2,0,ref.alignment);
+ reference_reset_base(result,getpointerdef(def),hreg2,0,ref.alignment);
exit;
end;
{ for now, perform all calculations using plain pointer arithmetic. Later
@@ -1359,7 +1359,7 @@ implementation
hreg1:=hreg2;
end;
a_load_reg_reg(list,ptruinttype,getpointerdef(def),hreg1,hreg2);
- reference_reset_base(result,hreg2,0,ref.alignment);
+ reference_reset_base(result,getpointerdef(def),hreg2,0,ref.alignment);
end;
diff --git a/compiler/m68k/aasmcpu.pas b/compiler/m68k/aasmcpu.pas
index 1d78fba743..223a549891 100644
--- a/compiler/m68k/aasmcpu.pas
+++ b/compiler/m68k/aasmcpu.pas
@@ -464,7 +464,7 @@ type
result:=operand_read;
case opcode of
- A_MOVE, A_MOVEQ, A_MOVEA, A_LEA:
+ A_MOVE, A_MOVEQ, A_MOVEA, A_MVZ, A_MVS, A_MOV3Q, A_LEA:
if opnr=1 then
result:=operand_write;
A_ADD, A_ADDQ, A_ADDX, A_SUB, A_SUBQ, A_SUBX,
diff --git a/compiler/m68k/cgcpu.pas b/compiler/m68k/cgcpu.pas
index 39cc4ac2a9..11a83b3a32 100644
--- a/compiler/m68k/cgcpu.pas
+++ b/compiler/m68k/cgcpu.pas
@@ -91,16 +91,19 @@ unit cgcpu;
procedure g_adjust_self_value(list:TAsmList;procdef:tprocdef;ioffset:tcgint);override;
procedure g_intf_wrapper(list: TAsmList; procdef: tprocdef; const labelname: string; ioffset: longint);override;
+ { # Sign or zero extend the register to a full 32-bit value.
+ The new value is left in the same register.
+ }
+ procedure sign_extend(list: TAsmList;_oldsize : tcgsize; reg: tregister);
+ procedure sign_extend(list: TAsmList;_oldsize : tcgsize; _newsize : tcgsize; reg: tregister);
+
protected
function fixref(list: TAsmList; var ref: treference): boolean;
procedure call_rtl_mul_const_reg(list:tasmlist;size:tcgsize;a:tcgint;reg:tregister;const name:string);
procedure call_rtl_mul_reg_reg(list:tasmlist;reg1,reg2:tregister;const name:string);
private
- { # Sign or zero extend the register to a full 32-bit value.
- The new value is left in the same register.
- }
- procedure sign_extend(list: TAsmList;_oldsize : tcgsize; reg: tregister);
+
procedure a_jmp_cond(list : TAsmList;cond : TOpCmp;l: tasmlabel);
function force_to_dataregister(list: TAsmList; size: TCGSize; reg: TRegister): TRegister;
procedure move_if_needed(list: TAsmList; size: TCGSize; src: TRegister; dest: TRegister);
@@ -452,6 +455,19 @@ unit cgcpu;
displacement.
}
{ first ensure that base is an address register }
+ if ((ref.base<>NR_NO) and (ref.index<>NR_NO)) and
+ (not isaddressregister(ref.base) and isaddressregister(ref.index)) and
+ (ref.scalefactor < 2) then
+ begin
+ { if we have both base and index registers, but base is data and index
+ is address, we can just swap them, as FPC always uses long index.
+ but we can only do this, if the index has no scalefactor }
+ hreg:=ref.base;
+ ref.base:=ref.index;
+ ref.index:=hreg;
+ //list.concat(tai_comment.create(strpnew('fixref: base and index swapped')));
+ end;
+
if (not assigned (ref.symbol) and (current_settings.cputype<>cpu_MC68000)) and
(ref.base<>NR_NO) and not isaddressregister(ref.base) then
begin
@@ -853,7 +869,7 @@ unit cgcpu;
register }
hreg:=getintregister(list,fromsize);
list.concat(taicpu.op_ref_reg(A_MOVE,TCGSize2OpSize[fromsize],aref,hreg));
- sign_extend(list,fromsize,hreg);
+ sign_extend(list,fromsize,tosize,hreg);
list.concat(taicpu.op_reg_ref(A_MOVE,TCGSize2OpSize[tosize],hreg,bref));
exit;
end;
@@ -918,11 +934,9 @@ unit cgcpu;
instr : taicpu;
begin
{ move to destination register }
- instr:=taicpu.op_reg_reg(A_MOVE,S_L,reg1,reg2);
+ instr:=taicpu.op_reg_reg(A_MOVE,TCGSize2OpSize[fromsize],reg1,reg2);
add_move_instruction(instr);
list.concat(instr);
-
- { zero/sign extend register to 32-bit }
sign_extend(list, fromsize, reg2);
end;
@@ -1176,7 +1190,8 @@ unit cgcpu;
procedure tcg68k.a_op_const_ref(list : TAsmList; Op: TOpCG; size: TCGSize; a: tcgint; const ref: TReference);
var
opcode: tasmop;
- opsize : topsize;
+ opsize: topsize;
+ href : treference;
begin
optimize_op_const(size, op, a);
opcode := topcg2tasmop[op];
@@ -1191,6 +1206,8 @@ unit cgcpu;
exit;
end;
+ href:=ref;
+ fixref(list,href);
case op of
OP_NONE :
begin
@@ -1211,11 +1228,11 @@ unit cgcpu;
opcode:=A_ADDQ
else
opcode:=A_SUBQ;
- list.concat(taicpu.op_const_ref(opcode, opsize, a, ref));
+ list.concat(taicpu.op_const_ref(opcode, opsize, a, href));
end
else
- if current_settings.cputype = cpu_mc68000 then
- list.concat(taicpu.op_const_ref(opcode, opsize, a, ref))
+ if not(current_settings.cputype in cpu_coldfire) then
+ list.concat(taicpu.op_const_ref(opcode, opsize, a, href))
else
{ on ColdFire, ADDI/SUBI cannot act on memory
so we can only go through a register }
@@ -1408,8 +1425,12 @@ unit cgcpu;
list.concat(taicpu.op_reg(A_TST,TCGSize2OpSize[size],reg))
else
begin
- { ColdFire also needs S_L for CMPI }
- if current_settings.cputype in cpu_coldfire then
+ { ColdFire ISA A also needs S_L for CMPI }
+ { Note: older QEMU pukes from CMPI sizes <> .L even on ISA B/C, but
+ it's actually *LEGAL*, see CFPRM, page 4-30, the bug also seems
+ fixed in recent QEMU, but only when CPU cfv4e is forced, not by
+ default. (KB) }
+ if current_settings.cputype in cpu_coldfire{-[cpu_isa_b,cpu_isa_c]} then
begin
sign_extend(list, size, reg);
size:=OS_INT;
@@ -1622,8 +1643,8 @@ unit cgcpu;
if current_settings.cputype in cpu_coldfire then
begin
{ Coldfire does not support DBRA }
- list.concat(taicpu.op_const_reg(A_SUB,S_L,1,hregister));
- list.concat(taicpu.op_sym(A_BPL,S_L,hl));
+ list.concat(taicpu.op_const_reg(A_SUBQ,S_L,1,hregister));
+ list.concat(taicpu.op_sym(A_BPL,S_NO,hl));
end
else
list.concat(taicpu.op_reg_sym(A_DBRA,S_L,hregister,hl));
@@ -1881,45 +1902,67 @@ unit cgcpu;
tg.UnGetTemp(list,current_procinfo.save_regs_ref);
end;
+ procedure tcg68k.sign_extend(list: TAsmList;_oldsize : tcgsize; _newsize : tcgsize; reg: tregister);
+ begin
+ case _newsize of
+ OS_S16, OS_16:
+ case _oldsize of
+ OS_S8:
+ begin { 8 -> 16 bit sign extend }
+ if (isaddressregister(reg)) then
+ internalerror(2014031201);
+ list.concat(taicpu.op_reg(A_EXT,S_W,reg));
+ end;
+ OS_8: { 8 -> 16 bit zero extend }
+ begin
+ if (current_settings.cputype in cpu_coldfire) then
+ { ColdFire has no ANDI.W }
+ list.concat(taicpu.op_const_reg(A_AND,S_L,$FF,reg))
+ else
+ list.concat(taicpu.op_const_reg(A_AND,S_W,$FF,reg));
+ end;
+ end;
+ OS_S32, OS_32:
+ case _oldsize of
+ OS_S8:
+ begin { 8 -> 32 bit sign extend }
+ if (isaddressregister(reg)) then
+ internalerror(2014031202);
+ if (current_settings.cputype = cpu_MC68000) then
+ begin
+ list.concat(taicpu.op_reg(A_EXT,S_W,reg));
+ list.concat(taicpu.op_reg(A_EXT,S_L,reg));
+ end
+ else
+ begin
+ //list.concat(tai_comment.create(strpnew('sign extend byte')));
+ list.concat(taicpu.op_reg(A_EXTB,S_L,reg));
+ end;
+ end;
+ OS_8: { 8 -> 32 bit zero extend }
+ begin
+ //list.concat(tai_comment.create(strpnew('zero extend byte')));
+ list.concat(taicpu.op_const_reg(A_AND,S_L,$FF,reg));
+ end;
+ OS_S16: { 16 -> 32 bit sign extend }
+ begin
+ if (isaddressregister(reg)) then
+ internalerror(2014031203);
+ //list.concat(tai_comment.create(strpnew('sign extend word')));
+ list.concat(taicpu.op_reg(A_EXT,S_L,reg));
+ end;
+ OS_16:
+ begin
+ //list.concat(tai_comment.create(strpnew('zero extend byte')));
+ list.concat(taicpu.op_const_reg(A_AND,S_L,$FFFF,reg));
+ end;
+ end;
+ end; { otherwise the size is already correct }
+ end;
procedure tcg68k.sign_extend(list: TAsmList;_oldsize : tcgsize; reg: tregister);
begin
- case _oldsize of
- { sign extend }
- OS_S8:
- begin
- if (isaddressregister(reg)) then
- internalerror(20020729);
- if (current_settings.cputype = cpu_MC68000) then
- begin
- list.concat(taicpu.op_reg(A_EXT,S_W,reg));
- list.concat(taicpu.op_reg(A_EXT,S_L,reg));
- end
- else
- begin
-// list.concat(tai_comment.create(strpnew('sign extend byte')));
- list.concat(taicpu.op_reg(A_EXTB,S_L,reg));
- end;
- end;
- OS_S16:
- begin
- if (isaddressregister(reg)) then
- internalerror(20020729);
-// list.concat(tai_comment.create(strpnew('sign extend word')));
- list.concat(taicpu.op_reg(A_EXT,S_L,reg));
- end;
- { zero extend }
- OS_8:
- begin
-// list.concat(tai_comment.create(strpnew('zero extend byte')));
- list.concat(taicpu.op_const_reg(A_AND,S_L,$FF,reg));
- end;
- OS_16:
- begin
-// list.concat(tai_comment.create(strpnew('zero extend word')));
- list.concat(taicpu.op_const_reg(A_AND,S_L,$FFFF,reg));
- end;
- end; { otherwise the size is already correct }
+ sign_extend(list, _oldsize, OS_INT, reg);
end;
procedure tcg68k.a_jmp_cond(list : TAsmList;cond : TOpCmp;l: tasmlabel);
diff --git a/compiler/m68k/cpubase.pas b/compiler/m68k/cpubase.pas
index 23e30ef07e..5280f5dbc4 100644
--- a/compiler/m68k/cpubase.pas
+++ b/compiler/m68k/cpubase.pas
@@ -111,12 +111,14 @@ unit cpubase;
const
{ Available Superregisters }
{$i r68ksup.inc}
+ RS_SP = RS_A7;
{ ? whatever... }
R_SUBWHOLE = R_SUBNONE;
{ Available Registers }
{$i r68kcon.inc}
+ NR_SP = NR_A7;
{ Integer Super registers first and last }
first_int_imreg = RS_D7+1;
diff --git a/compiler/m68k/cpuinfo.pas b/compiler/m68k/cpuinfo.pas
index 4f9e0a9693..38f6f79a49 100644
--- a/compiler/m68k/cpuinfo.pas
+++ b/compiler/m68k/cpuinfo.pas
@@ -113,7 +113,7 @@ type
const
cpu_capabilities : array[tcputype] of set of tcpuflags =
( { cpu_none } [],
- { cpu_68000 } [CPUM68K_HAS_DBRA,CPUM68K_HAS_TAS,CPUM68K_HAS_BRAL],
+ { cpu_68000 } [CPUM68K_HAS_DBRA,CPUM68K_HAS_TAS],
{ cpu_68020 } [CPUM68K_HAS_DBRA,CPUM68K_HAS_CAS,CPUM68K_HAS_TAS,CPUM68K_HAS_BRAL],
{ cpu_68040 } [CPUM68K_HAS_DBRA,CPUM68K_HAS_CAS,CPUM68K_HAS_TAS,CPUM68K_HAS_BRAL],
{ cpu_isaa } [],
@@ -122,7 +122,7 @@ const
{ cpu_isac } [CPUM68K_HAS_TAS]
);
- { all CPUs commonly cold "coldfire" }
+ { all CPUs commonly called "coldfire" }
cpu_coldfire = [cpu_isa_a,cpu_isa_a_p,cpu_isa_b,cpu_isa_c];
Implementation
diff --git a/compiler/m68k/cpunode.pas b/compiler/m68k/cpunode.pas
index 79f38ae861..e44c4e9829 100644
--- a/compiler/m68k/cpunode.pas
+++ b/compiler/m68k/cpunode.pas
@@ -38,7 +38,7 @@ unit cpunode;
n68kcal,
// nppccon,
// nppcflw,
-// nppcmem,
+// n68kmem,
// nppcset,
// nppcinl,
// nppcopt,
@@ -46,7 +46,9 @@ unit cpunode;
// nppcobj,
// nppcmat,
n68kmat,
- n68kcnv
- ;
+ n68kcnv,
+ { symtable }
+ symcpu
+ ;
end.
diff --git a/compiler/m68k/cpupara.pas b/compiler/m68k/cpupara.pas
index c43616f031..7ae777c587 100644
--- a/compiler/m68k/cpupara.pas
+++ b/compiler/m68k/cpupara.pas
@@ -220,6 +220,17 @@ unit cpupara;
if set_common_funcretloc_info(p,forcetempdef,retcgsize,result) then
exit;
+ { always use the whole 32 bit register when returning values }
+ if (side=calleeside) and
+ (result.intsize>0) and
+ (result.intsize<sizeof(aint)) then
+ begin
+ result.def:=sinttype;
+ result.intsize:=sizeof(aint);
+ retcgsize:=OS_SINT;
+ result.size:=retcgsize;
+ end;
+
paraloc:=result.add_location;
{ Return in FPU register? }
if not (cs_fp_emulation in current_settings.moduleswitches) and
diff --git a/compiler/m68k/m68kreg.dat b/compiler/m68k/m68kreg.dat
index 9ff2289155..a33be1a47d 100644
--- a/compiler/m68k/m68kreg.dat
+++ b/compiler/m68k/m68kreg.dat
@@ -41,4 +41,4 @@ A3,$06,$03,a3,%a3,11
A4,$06,$04,a4,%a4,12
A5,$06,$05,a5,%a5,13
A6,$06,$06,a6,%a6,14
-SP,$06,$07,sp,%sp,15
+A7,$06,$07,a7,%a7,15
diff --git a/compiler/m68k/n68kadd.pas b/compiler/m68k/n68kadd.pas
index 5f7bf8e050..01f6096f5d 100644
--- a/compiler/m68k/n68kadd.pas
+++ b/compiler/m68k/n68kadd.pas
@@ -84,21 +84,16 @@ implementation
{ check whether left_reg.reghi is less than right_reg.reghi }
current_asmdata.currasmlist.concat(taicpu.op_reg_reg(A_CMP,S_L,right_reg.reghi,left_reg.reghi));
- current_asmdata.currasmlist.concat(taicpu.op_cond_sym(A_BXX,C_LT,S_L,labelcmp64_2));
+ current_asmdata.currasmlist.concat(taicpu.op_cond_sym(A_BXX,C_LT,S_NO,labelcmp64_2));
{ are left_reg.reghi and right_reg.reghi equal? }
- current_asmdata.currasmlist.concat(taicpu.op_cond_sym(A_BXX,C_NE,S_L,labelcmp64_1));
+ current_asmdata.currasmlist.concat(taicpu.op_cond_sym(A_BXX,C_NE,S_NO,labelcmp64_1));
{ is left_reg.reglo less than right_reg.reglo? }
current_asmdata.currasmlist.concat(taicpu.op_reg_reg(A_CMP,S_L,right_reg.reglo,left_reg.reglo));
- current_asmdata.currasmlist.concat(taicpu.op_cond_sym(A_BXX,C_CS,S_L,labelcmp64_2));
-
- if CPUM68K_HAS_BRAL in cpu_capabilities[current_settings.cputype] then
- current_asmdata.currasmlist.concat(Taicpu.op_sym(A_BRA,S_L,labelcmp64_1))
- else
- { better use JMP? }
- current_asmdata.currasmlist.concat(Taicpu.op_sym(A_BRA,S_W,labelcmp64_1));
+ current_asmdata.currasmlist.concat(taicpu.op_cond_sym(A_BXX,C_CS,S_NO,labelcmp64_2));
+ current_asmdata.currasmlist.concat(Taicpu.op_sym(A_BRA,S_NO,labelcmp64_1));
cg.a_label(current_asmdata.currasmlist,labelcmp64_2);
{ load the value for "true" }
@@ -123,14 +118,14 @@ implementation
{ check whether right_reg.reghi is less than left_reg.reghi }
current_asmdata.currasmlist.concat(taicpu.op_reg_reg(A_CMP,S_L,left_reg.reghi,right_reg.reghi));
- current_asmdata.currasmlist.concat(taicpu.op_cond_sym(A_BXX,C_LT,S_L,labelcmp64_1));
+ current_asmdata.currasmlist.concat(taicpu.op_cond_sym(A_BXX,C_LT,S_NO,labelcmp64_1));
{ are left_reg.reghi and right_reg.reghi equal? }
- current_asmdata.currasmlist.concat(taicpu.op_cond_sym(A_BXX,C_NE,S_L,labelcmp64_2));
+ current_asmdata.currasmlist.concat(taicpu.op_cond_sym(A_BXX,C_NE,S_NO,labelcmp64_2));
{ is right_reg.reglo less than left_reg.reglo? }
current_asmdata.currasmlist.concat(taicpu.op_reg_reg(A_CMP,S_L,left_reg.reglo,right_reg.reglo));
- current_asmdata.currasmlist.concat(taicpu.op_cond_sym(A_BXX,C_CS,S_L,labelcmp64_1));
+ current_asmdata.currasmlist.concat(taicpu.op_cond_sym(A_BXX,C_CS,S_NO,labelcmp64_1));
cg.a_label(current_asmdata.currasmlist,labelcmp64_2);
@@ -154,11 +149,11 @@ implementation
{ is the high order longword equal? }
current_asmdata.currasmlist.concat(taicpu.op_reg_reg(A_CMP,S_L,left_reg.reghi,right_reg.reghi));
- current_asmdata.currasmlist.concat(taicpu.op_cond_sym(A_BXX,C_NE,S_L,labelcmp64));
+ current_asmdata.currasmlist.concat(taicpu.op_cond_sym(A_BXX,C_NE,S_NO,labelcmp64));
{ is the low order longword equal? }
current_asmdata.currasmlist.concat(taicpu.op_reg_reg(A_CMP,S_L,left_reg.reglo,right_reg.reglo));
- current_asmdata.currasmlist.concat(taicpu.op_cond_sym(A_BXX,C_NE,S_L,labelcmp64));
+ current_asmdata.currasmlist.concat(taicpu.op_cond_sym(A_BXX,C_NE,S_NO,labelcmp64));
{ load the value for "true" }
cg.a_load_const_reg(current_asmdata.currasmlist,OS_INT,1,tmpreg);
@@ -180,11 +175,11 @@ implementation
{ is the high order longword equal? }
current_asmdata.currasmlist.concat(taicpu.op_reg_reg(A_CMP,S_L,left_reg.reghi,right_reg.reghi));
- current_asmdata.currasmlist.concat(taicpu.op_cond_sym(A_BXX,C_NE,S_L,labelcmp64));
+ current_asmdata.currasmlist.concat(taicpu.op_cond_sym(A_BXX,C_NE,S_NO,labelcmp64));
{ is the low order longword equal? }
current_asmdata.currasmlist.concat(taicpu.op_reg_reg(A_CMP,S_L,left_reg.reglo,right_reg.reglo));
- current_asmdata.currasmlist.concat(taicpu.op_cond_sym(A_BXX,C_NE,S_L,labelcmp64));
+ current_asmdata.currasmlist.concat(taicpu.op_cond_sym(A_BXX,C_NE,S_NO,labelcmp64));
{ load the value for "false" }
cg.a_load_const_reg(current_asmdata.currasmlist,OS_INT,0,tmpreg);
@@ -208,21 +203,16 @@ implementation
{ check whether left_reg.reghi is less than right_reg.reghi }
current_asmdata.currasmlist.concat(taicpu.op_reg_reg(A_CMP,S_L,right_reg.reghi,left_reg.reghi));
- current_asmdata.currasmlist.concat(taicpu.op_cond_sym(A_BXX,C_CS,S_L,labelcmp64_2));
+ current_asmdata.currasmlist.concat(taicpu.op_cond_sym(A_BXX,C_CS,S_NO,labelcmp64_2));
{ are left_reg.reghi and right_reg.reghi equal? }
- current_asmdata.currasmlist.concat(taicpu.op_cond_sym(A_BXX,C_NE,S_L,labelcmp64_1));
+ current_asmdata.currasmlist.concat(taicpu.op_cond_sym(A_BXX,C_NE,S_NO,labelcmp64_1));
{ is left_reg.reglo less than right_reg.reglo? }
current_asmdata.currasmlist.concat(taicpu.op_reg_reg(A_CMP,S_L,right_reg.reglo,left_reg.reglo));
- current_asmdata.currasmlist.concat(taicpu.op_cond_sym(A_BXX,C_CS,S_L,labelcmp64_2));
-
- if CPUM68K_HAS_BRAL in cpu_capabilities[current_settings.cputype] then
- current_asmdata.currasmlist.concat(Taicpu.op_sym(A_BRA,S_L,labelcmp64_1))
- else
- { ToDo : use JMP? }
- current_asmdata.currasmlist.concat(Taicpu.op_sym(A_BRA,S_W,labelcmp64_1));
+ current_asmdata.currasmlist.concat(taicpu.op_cond_sym(A_BXX,C_CS,S_NO,labelcmp64_2));
+ current_asmdata.currasmlist.concat(Taicpu.op_sym(A_BRA,S_NO,labelcmp64_1));
cg.a_label(current_asmdata.currasmlist,labelcmp64_2);
{ load the value for "true" }
@@ -247,14 +237,14 @@ implementation
{ check whether right_reg.reghi is less than left_reg.reghi }
current_asmdata.currasmlist.concat(taicpu.op_reg_reg(A_CMP,S_L,left_reg.reghi,right_reg.reghi));
- current_asmdata.currasmlist.concat(taicpu.op_cond_sym(A_BXX,C_CS,S_L,labelcmp64_1));
+ current_asmdata.currasmlist.concat(taicpu.op_cond_sym(A_BXX,C_CS,S_NO,labelcmp64_1));
{ are left_reg.reghi and right_reg.reghi equal? }
- current_asmdata.currasmlist.concat(taicpu.op_cond_sym(A_BXX,C_NE,S_L,labelcmp64_2));
+ current_asmdata.currasmlist.concat(taicpu.op_cond_sym(A_BXX,C_NE,S_NO,labelcmp64_2));
{ is right_reg.reglo less than left_reg.reglo? }
current_asmdata.currasmlist.concat(taicpu.op_reg_reg(A_CMP,S_L,left_reg.reglo,right_reg.reglo));
- current_asmdata.currasmlist.concat(taicpu.op_cond_sym(A_BXX,C_CS,S_L,labelcmp64_1));
+ current_asmdata.currasmlist.concat(taicpu.op_cond_sym(A_BXX,C_CS,S_NO,labelcmp64_1));
cg.a_label(current_asmdata.currasmlist,labelcmp64_2);
@@ -406,8 +396,8 @@ implementation
swapleftright;
// put both operands in a register
- location_force_fpureg(current_asmdata.CurrAsmList,right.location,true);
- location_force_fpureg(current_asmdata.CurrAsmList,left.location,true);
+ hlcg.location_force_fpureg(current_asmdata.CurrAsmList,right.location,right.resultdef,true);
+ hlcg.location_force_fpureg(current_asmdata.CurrAsmList,left.location,left.resultdef,true);
// initialize de result
if not cmpop then
@@ -454,8 +444,8 @@ implementation
}
{ force fpureg as location, left right doesn't matter
as both will be in a fpureg }
- location_force_fpureg(current_asmdata.CurrAsmList,left.location,true);
- location_force_fpureg(current_asmdata.CurrAsmList,right.location,true);
+ hlcg.location_force_fpureg(current_asmdata.CurrAsmList,left.location,left.resultdef,true);
+ hlcg.location_force_fpureg(current_asmdata.CurrAsmList,right.location,right.resultdef,true);
location_reset(location,LOC_FLAGS,OS_NO);
location.resflags:=getresflags(true);
diff --git a/compiler/m68k/n68kcal.pas b/compiler/m68k/n68kcal.pas
index d9763acd9a..0e965a29f3 100644
--- a/compiler/m68k/n68kcal.pas
+++ b/compiler/m68k/n68kcal.pas
@@ -30,6 +30,9 @@ interface
type
tm68kcallnode = class(tcgcallnode)
+ protected
+ procedure gen_syscall_para(para: tcallparanode); override;
+ public
procedure do_syscall;override;
end;
@@ -39,7 +42,7 @@ implementation
uses
globtype,systems,
cutils,verbose,globals,
- symconst,symbase,symsym,symtable,defutil,paramgr,parabase,
+ symconst,symbase,symsym,symcpu,symtable,defutil,paramgr,parabase,
cgbase,pass_2,
cpuinfo,cpubase,aasmbase,aasmtai,aasmdata,aasmcpu,
nmem,nld,ncnv,
@@ -47,30 +50,29 @@ implementation
cg64f32,cgcpu,cpupi,procinfo;
+ procedure tm68kcallnode.gen_syscall_para(para: tcallparanode);
+ begin
+ { lib parameter has no special type but proccalloptions must be a syscall }
+ para.left:=cloadnode.create(tcpuprocdef(procdefinition).libsym,tcpuprocdef(procdefinition).libsym.owner);
+ end;
+
+
procedure tm68kcallnode.do_syscall;
var
tmpref: treference;
- tmpref2: treference;
begin
case target_info.system of
system_m68k_amiga:
begin
if po_syscall_legacy in tprocdef(procdefinition).procoptions then
begin
- { save base pointer on syscalls }
- { FIXME: probably this will need to be extended to save all regs (KB) }
- reference_reset_base(tmpref2, NR_STACK_POINTER_REG, 0, 4);
- tmpref2.direction := dir_dec;
- current_asmdata.CurrAsmList.concat(taicpu.op_reg_ref(A_MOVE,S_L,NR_FRAME_POINTER_REG,tmpref2));
-
- { the actuall call }
+ { according to Amiga Developer CD 2.1, system functions destroy the
+ scratch regs D0-D1 and A0-A1, but preserve all other regs. A6 is
+ not used as FP on Amiga any more (we use A5), so we don't need to
+ save it. (KB)
+ http://amigadev.elowar.com/read/ADCD_2.1/Libraries_Manual_guide/node0290.html }
reference_reset_base(tmpref,NR_A6,-tprocdef(procdefinition).extnumber,4);
current_asmdata.CurrAsmList.concat(taicpu.op_ref(A_JSR,S_NO,tmpref));
-
- { restore frame pointer }
- reference_reset_base(tmpref2, NR_STACK_POINTER_REG, 0, 4);
- tmpref2.direction := dir_inc;
- current_asmdata.CurrAsmList.concat(taicpu.op_ref_reg(A_MOVE,S_L,tmpref2,NR_FRAME_POINTER_REG));
end
else
internalerror(2005010403);
diff --git a/compiler/m68k/n68kcnv.pas b/compiler/m68k/n68kcnv.pas
index cf5a68ace0..f49769e169 100644
--- a/compiler/m68k/n68kcnv.pas
+++ b/compiler/m68k/n68kcnv.pas
@@ -212,7 +212,7 @@ implementation
if isvalidrefoffset(left.location.reference) then
begin
{ Coldfire cannot handle tst.l 123(dX) }
- if (current_settings.cputype in cpu_coldfire) and
+ if (current_settings.cputype in (cpu_coldfire + [cpu_mc68000])) and
isintregister(left.location.reference.base) then
begin
tmpreference:=left.location.reference;
diff --git a/compiler/m68k/n68kmat.pas b/compiler/m68k/n68kmat.pas
index 412507a655..9474cd00cd 100644
--- a/compiler/m68k/n68kmat.pas
+++ b/compiler/m68k/n68kmat.pas
@@ -176,29 +176,13 @@ implementation
TM68KMODDIVNODE
*****************************************************************************}
procedure tm68kmoddivnode.emit_div_reg_reg(signed: boolean;denum,num : tregister);
- var
- continuelabel : tasmlabel;
- reg_d0,reg_d1 : tregister;
- paraloc1,paraloc2 : tcgpara;
begin
- { no RTL call, so inline a zero denominator verification }
if current_settings.cputype=cpu_MC68020 then
begin
- { verify if denominator is zero }
- current_asmdata.getjumplabel(continuelabel);
- { compare against zero, if not zero continue }
- cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_S32,OC_NE,0,denum,continuelabel);
-// paraloc1.init;
-// cg.a_load_const_cgpara(current_asmdata.CurrAsmList,OS_S32,200,paramanager.getintparaloc(pocall_default,1,paraloc1));
-
- cg.a_call_name(current_asmdata.CurrAsmList,'FPC_HANDLEERROR',false);
- cg.a_label(current_asmdata.CurrAsmList, continuelabel);
if signed then
- current_asmdata.CurrAsmList.concat(taicpu.op_reg_reg(A_DIVS,S_L,denum,num))
+ current_asmdata.CurrAsmList.concat(taicpu.op_reg_reg(A_DIVS,S_L,denum,num))
else
- current_asmdata.CurrAsmList.concat(taicpu.op_reg_reg(A_DIVU,S_L,denum,num));
- { result should be in denuminator }
- cg.a_load_reg_reg(current_asmdata.CurrAsmList,OS_INT,OS_INT,num,denum);
+ current_asmdata.CurrAsmList.concat(taicpu.op_reg_reg(A_DIVU,S_L,denum,num));
end
else
begin
@@ -217,40 +201,16 @@ implementation
signlabel : tasmlabel;
reg_d0,reg_d1 : tregister;
begin
-// writeln('emit mod reg reg');
- { no RTL call, so inline a zero denominator verification }
if current_settings.cputype=cpu_MC68020 then
begin
- { verify if denominator is zero }
- current_asmdata.getjumplabel(continuelabel);
- { compare against zero, if not zero continue }
- cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_S32,OC_NE,0,denum,continuelabel);
-// cg.a_load_const_cgpara(current_asmdata.CurrAsmList, OS_S32,200,paramanager.getintparaloc(pocall_default,1));
- cg.a_call_name(current_asmdata.CurrAsmList,'FPC_HANDLEERROR',false);
- cg.a_label(current_asmdata.CurrAsmList, continuelabel);
-
tmpreg:=cg.getintregister(current_asmdata.CurrAsmList,OS_INT);
-
- { we have to prepare the high register with the }
- { correct sign. i.e we clear it, check if the low dword reg }
- { which will participate in the division is signed, if so we}
- { we extend the sign to the high doword register by inverting }
- { all the bits. }
- current_asmdata.CurrAsmList.concat(taicpu.op_reg(A_CLR,S_L,tmpreg));
- current_asmdata.getjumplabel(signlabel);
- current_asmdata.CurrAsmList.concat(taicpu.op_reg(A_TST,S_L,tmpreg));
- cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_S32,OC_A,0,tmpreg,signlabel);
- { its a negative value, therefore change sign }
- cg.a_label(current_asmdata.CurrAsmList,signlabel);
- { tmpreg:num / denum }
-
+ { copy the numerator to the tmpreg, so we can use it as quotient, which
+ means we'll get the remainder immediately in the numerator }
+ cg.a_load_reg_reg(current_asmdata.CurrAsmList,OS_INT,OS_INT,num,tmpreg);
if signed then
- current_asmdata.CurrAsmList.concat(taicpu.op_reg_reg_reg(A_DIVSL,S_L,denum,tmpreg,num))
+ current_asmdata.CurrAsmList.concat(taicpu.op_reg_reg_reg(A_DIVSL,S_L,denum,num,tmpreg))
else
- current_asmdata.CurrAsmList.concat(taicpu.op_reg_reg_reg(A_DIVUL,S_L,denum,tmpreg,num));
- { remainder in tmpreg }
- cg.a_load_reg_reg(current_asmdata.CurrAsmList,OS_INT,OS_INT,tmpreg,denum);
-// cg.ungetcpuregister(current_asmdata.CurrAsmList,tmpreg);
+ current_asmdata.CurrAsmList.concat(taicpu.op_reg_reg_reg(A_DIVUL,S_L,denum,num,tmpreg));
end
else
begin
@@ -260,7 +220,6 @@ implementation
else
call_rtl_divmod_reg_reg(denum,num,'fpc_mod_dword');
end;
-// writeln('exits');
end;
diff --git a/compiler/m68k/n68kmem.pas b/compiler/m68k/n68kmem.pas
new file mode 100644
index 0000000000..d67b7533ad
--- /dev/null
+++ b/compiler/m68k/n68kmem.pas
@@ -0,0 +1,117 @@
+{
+ Copyright (c) 2014 by the Free Pascal development team
+
+ Generate m68k assembler for in memory related nodes
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+ ****************************************************************************
+}
+unit n68kmem;
+
+{$i fpcdefs.inc}
+
+interface
+
+ uses
+ globtype,
+ cgbase,cpuinfo,cpubase,
+ node,nmem,ncgmem;
+
+ type
+ t68kvecnode = class(tcgvecnode)
+ procedure update_reference_reg_mul(maybe_const_reg:tregister;l:aint);override;
+ //procedure pass_generate_code;override;
+ end;
+
+implementation
+
+ uses
+ systems,globals,
+ cutils,verbose,
+ symdef,paramgr,
+ aasmtai,aasmdata,
+ nld,ncon,nadd,
+ cgutils,cgobj;
+
+
+{*****************************************************************************
+ T68KVECNODE
+*****************************************************************************}
+
+ { this routine must, like any other routine, not change the contents }
+ { of base/index registers of references, as these may be regvars. }
+ { The register allocator can coalesce one LOC_REGISTER being moved }
+ { into another (as their live ranges won't overlap), but not a }
+ { LOC_CREGISTER moved into a LOC_(C)REGISTER most of the time (as }
+ { the live range of the LOC_CREGISTER will most likely overlap the }
+ { the live range of the target LOC_(C)REGISTER) }
+ { The passed register may be a LOC_CREGISTER as well. }
+ procedure t68kvecnode.update_reference_reg_mul(maybe_const_reg:tregister;l:aint);
+ var
+ hreg: tregister;
+ hreg2: tregister;
+ begin
+ if l<>1 then
+ begin
+ hreg:=cg.getintregister(current_asmdata.CurrAsmList,OS_32);
+ { if we have a possibility, setup a scalefactor instead of the MUL }
+ if (location.reference.base=NR_NO) or (location.reference.index<>NR_NO) or
+ ((current_settings.cputype in cpu_coldfire) and not (l in [2,4])) or
+ not (l in [2,4,8]) then
+ cg.a_op_const_reg_reg(current_asmdata.CurrAsmList,OP_IMUL,OS_ADDR,l,maybe_const_reg,hreg)
+ else
+ begin
+ cg.a_load_reg_reg(current_asmdata.CurrAsmList,OS_ADDR,OS_ADDR,maybe_const_reg,hreg);
+ location.reference.scalefactor:=l;
+ end;
+ { prefer an address reg, if we will be a base, otherwise for indexes
+ a data register is better choice }
+ if location.reference.base=NR_NO then
+ begin
+ hreg2:=cg.getaddressregister(current_asmdata.CurrAsmList);
+ cg.a_load_reg_reg(current_asmdata.CurrAsmList,OS_ADDR,OS_ADDR,hreg,hreg2);
+ maybe_const_reg:=hreg2;
+ end
+ else
+ maybe_const_reg:=hreg;
+ end;
+ if location.reference.base=NR_NO then
+ location.reference.base:=maybe_const_reg
+ else if location.reference.index=NR_NO then
+ location.reference.index:=maybe_const_reg
+ else
+ begin
+ hreg:=cg.getaddressregister(current_asmdata.CurrAsmList);
+ cg.a_loadaddr_ref_reg(current_asmdata.CurrAsmList,location.reference,hreg);
+ reference_reset_base(location.reference,hreg,0,location.reference.alignment);
+ { insert new index register }
+ location.reference.index:=maybe_const_reg;
+ end;
+ { update alignment }
+ if (location.reference.alignment=0) then
+ internalerror(2009020704);
+ location.reference.alignment:=newalignment(location.reference.alignment,l);
+ end;
+
+ {procedure t68kvecnode.pass_generate_code;
+ begin
+ inherited pass_generate_code;
+ end;}
+
+
+begin
+ cvecnode:=t68kvecnode;
+end.
diff --git a/compiler/m68k/r68kcon.inc b/compiler/m68k/r68kcon.inc
index 2e8f8716fb..4a21cc15bb 100644
--- a/compiler/m68k/r68kcon.inc
+++ b/compiler/m68k/r68kcon.inc
@@ -32,4 +32,4 @@ NR_A3 = tregister($06000003);
NR_A4 = tregister($06000004);
NR_A5 = tregister($06000005);
NR_A6 = tregister($06000006);
-NR_SP = tregister($06000007);
+NR_A7 = tregister($06000007);
diff --git a/compiler/m68k/r68kgas.inc b/compiler/m68k/r68kgas.inc
index ee47e9ad64..8f1f99fd59 100644
--- a/compiler/m68k/r68kgas.inc
+++ b/compiler/m68k/r68kgas.inc
@@ -32,4 +32,4 @@
'%a4',
'%a5',
'%a6',
-'%sp'
+'%a7'
diff --git a/compiler/m68k/r68kgri.inc b/compiler/m68k/r68kgri.inc
index 17ba5dc3a9..43f743d38d 100644
--- a/compiler/m68k/r68kgri.inc
+++ b/compiler/m68k/r68kgri.inc
@@ -6,6 +6,7 @@
30,
31,
32,
+33,
18,
1,
2,
@@ -28,7 +29,6 @@
25,
17,
23,
-33,
20,
21,
24,
diff --git a/compiler/m68k/r68ksri.inc b/compiler/m68k/r68ksri.inc
index 44010ba66a..19f6bdbbde 100644
--- a/compiler/m68k/r68ksri.inc
+++ b/compiler/m68k/r68ksri.inc
@@ -7,6 +7,7 @@
30,
31,
32,
+33,
18,
1,
2,
@@ -29,7 +30,6 @@
25,
17,
23,
-33,
20,
21,
24
diff --git a/compiler/m68k/r68kstd.inc b/compiler/m68k/r68kstd.inc
index 3719f1f96b..103d3b250e 100644
--- a/compiler/m68k/r68kstd.inc
+++ b/compiler/m68k/r68kstd.inc
@@ -32,4 +32,4 @@
'a4',
'a5',
'a6',
-'sp'
+'a7'
diff --git a/compiler/m68k/r68ksup.inc b/compiler/m68k/r68ksup.inc
index 8677c2a633..89a275d366 100644
--- a/compiler/m68k/r68ksup.inc
+++ b/compiler/m68k/r68ksup.inc
@@ -32,4 +32,4 @@ RS_A3 = $03;
RS_A4 = $04;
RS_A5 = $05;
RS_A6 = $06;
-RS_SP = $07;
+RS_A7 = $07;
diff --git a/compiler/m68k/ra68k.pas b/compiler/m68k/ra68k.pas
index 611ad4dcd3..7dff294853 100644
--- a/compiler/m68k/ra68k.pas
+++ b/compiler/m68k/ra68k.pas
@@ -54,12 +54,11 @@ unit ra68k;
if assigned(result) then
taicpu(result).opsize:=opsize;
end;
-{
+(*
function TM68kInstruction.ConcatInstruction(p : TAsmList):tai;
var
fits : boolean;
begin
- writeln('jaj mami');
result:=nil;
fits := FALSE;
{ setup specific opcodetions for first pass }
@@ -88,7 +87,7 @@ unit ra68k;
{ Setup operand types }
-(*
+{*
in opcode <> A_MOVEM then
begin
@@ -138,7 +137,7 @@ unit ra68k;
end;
inc(i);
end; { end while }
- *)
+ *}
fits:=TRUE;
{ We add the opcode to the opcode linked list }
@@ -325,7 +324,7 @@ unit ra68k;
if assigned(result) then
p.concat(result);
end;
-}
+*)
function TM68kInstruction.ConcatLabeledInstr(p : TAsmList):tai;
begin
diff --git a/compiler/m68k/ra68kmot.pas b/compiler/m68k/ra68kmot.pas
index a8353e54ab..004c467c51 100644
--- a/compiler/m68k/ra68kmot.pas
+++ b/compiler/m68k/ra68kmot.pas
@@ -171,8 +171,11 @@ const
hs:=s;
{ Search opcodes }
- actopcode:=tasmop(PtrInt(iasmops.Find(hs)));
- if actopcode<>A_NONE then
+ actopcode:=tasmop(PtrUInt(iasmops.Find(hs)));
+ { Also filter the helper opcodes, they can't be valid
+ while reading an assembly source }
+ if not (actopcode in
+ [A_NONE, A_LABEL, A_DBXX, A_SXX, A_BXX, A_FBXX]) then
begin
actasmtoken:=AS_OPCODE;
result:=TRUE;
@@ -201,12 +204,26 @@ const
function tm68kmotreader.is_register(const s:string):boolean;
begin
- is_register:=false;
- // FIX ME!!! Ugly, needs a proper fix (KB)
+ result:=false;
+ // FIX ME!!! '%'+ is ugly, needs a proper fix (KB)
actasmregister:=gas_regnum_search('%'+lower(s));
if actasmregister<>NR_NO then
begin
- is_register:=true;
+ result:=true;
+ actasmtoken:=AS_REGISTER;
+ end;
+ { reg found?
+ possible aliases are always 2 char
+ }
+ if result or (length(s)<>2) then
+ exit;
+ if lower(s)='sp' then
+ actasmregister:=NR_STACK_POINTER_REG;
+ if lower(s)='fp' then
+ actasmregister:=NR_STACK_POINTER_REG;
+ if actasmregister<>NR_NO then
+ begin
+ result:=true;
actasmtoken:=AS_REGISTER;
end;
end;
@@ -317,8 +334,11 @@ const
{ this isn't the first token, so it can't be an
opcode }
- {If is_asmopcode(actasmpattern) then
- exit;}
+ { Actually, it's possible, since @label: OPCODE foo,bar
+ is valid and was supported in 0.99/1.0 FPC for 68k,
+ the amunits package is full of such code. (KB) }
+ if is_asmopcode(actasmpattern) then
+ exit;
if is_register(actasmpattern) then
exit;
if is_asmdirective(actasmpattern) then
@@ -1410,7 +1430,6 @@ const
if expr = 'SELF' then
oper.SetupSelf
else begin
- writeln('unknown id: ',expr);
Message1(sym_e_unknown_id,expr);
end;
expr:='';
@@ -1459,7 +1478,6 @@ const
end;
{ // Register, a variable reference or a constant reference // }
AS_REGISTER: begin
-// writeln('register! ',actasmpattern);
{ save the type of register used. }
tempstr := actasmpattern;
Consume(AS_REGISTER);
@@ -1732,8 +1750,6 @@ const
_asmsorted := TRUE;
end;
curlist:=TAsmList.Create;
- { setup label linked list }
- LocalLabelList:=TLocalLabelList.Create;
c:=current_scanner.asmgetchar;
gettoken;
while actasmtoken<>AS_END do
@@ -1827,8 +1843,7 @@ const
end; { end while }
{ Check LocalLabelList }
- LocalLabelList.CheckEmitted;
- LocalLabelList.Free;
+ checklocallabels;
assemble:=curlist;
//Message(asmr_d_finish_reading);
diff --git a/compiler/m68k/symcpu.pas b/compiler/m68k/symcpu.pas
new file mode 100644
index 0000000000..93702598cb
--- /dev/null
+++ b/compiler/m68k/symcpu.pas
@@ -0,0 +1,259 @@
+{
+ Copyright (c) 2014 by Florian Klaempfl
+
+ Symbol table overrides for m68k
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+ ****************************************************************************
+}
+unit symcpu;
+
+{$i fpcdefs.inc}
+
+interface
+
+uses
+ symconst,symtype,symdef,symsym;
+
+type
+ { defs }
+ tcpufiledef = class(tfiledef)
+ end;
+ tcpufiledefclass = class of tcpufiledef;
+
+ tcpuvariantdef = class(tvariantdef)
+ end;
+ tcpuvariantdefclass = class of tcpuvariantdef;
+
+ tcpuformaldef = class(tformaldef)
+ end;
+ tcpuformaldefclass = class of tcpuformaldef;
+
+ tcpuforwarddef = class(tforwarddef)
+ end;
+ tcpuforwarddefclass = class of tcpuforwarddef;
+
+ tcpuundefineddef = class(tundefineddef)
+ end;
+ tcpuundefineddefclass = class of tcpuundefineddef;
+
+ tcpuerrordef = class(terrordef)
+ end;
+ tcpuerrordefclass = class of tcpuerrordef;
+
+ tcpupointerdef = class(tpointerdef)
+ end;
+ tcpupointerdefclass = class of tcpupointerdef;
+
+ tcpurecorddef = class(trecorddef)
+ end;
+ tcpurecorddefclass = class of tcpurecorddef;
+
+ tcpuimplementedinterface = class(timplementedinterface)
+ end;
+ tcpuimplementedinterfaceclass = class of tcpuimplementedinterface;
+
+ tcpuobjectdef = class(tobjectdef)
+ end;
+ tcpuobjectdefclass = class of tcpuobjectdef;
+
+ tcpuclassrefdef = class(tclassrefdef)
+ end;
+ tcpuclassrefdefclass = class of tcpuclassrefdef;
+
+ tcpuarraydef = class(tarraydef)
+ end;
+ tcpuarraydefclass = class of tcpuarraydef;
+
+ tcpuorddef = class(torddef)
+ end;
+ tcpuorddefclass = class of tcpuorddef;
+
+ tcpufloatdef = class(tfloatdef)
+ end;
+ tcpufloatdefclass = class of tcpufloatdef;
+
+ tcpuprocvardef = class(tprocvardef)
+ end;
+ tcpuprocvardefclass = class of tcpuprocvardef;
+
+ tcpuprocdef = class(tprocdef)
+ procedure ppuload_platform(ppufile: tcompilerppufile); override;
+ procedure ppuwrite_platform(ppufile: tcompilerppufile); override;
+ public
+ { library symbol for AmigaOS/MorphOS }
+ libsym : tsym;
+ libsymderef : tderef;
+ function getcopyas(newtyp: tdeftyp; copytyp: tproccopytyp): tstoreddef; override;
+ procedure buildderef; override;
+ procedure deref; override;
+ end;
+ tcpuprocdefclass = class of tcpuprocdef;
+
+ tcpustringdef = class(tstringdef)
+ end;
+ tcpustringdefclass = class of tcpustringdef;
+
+ tcpuenumdef = class(tenumdef)
+ end;
+ tcpuenumdefclass = class of tcpuenumdef;
+
+ tcpusetdef = class(tsetdef)
+ end;
+ tcpusetdefclass = class of tcpusetdef;
+
+ { syms }
+ tcpulabelsym = class(tlabelsym)
+ end;
+ tcpulabelsymclass = class of tcpulabelsym;
+
+ tcpuunitsym = class(tunitsym)
+ end;
+ tcpuunitsymclass = class of tcpuunitsym;
+
+ tcpunamespacesym = class(tnamespacesym)
+ end;
+ tcpunamespacesymclass = class of tcpunamespacesym;
+
+ tcpuprocsym = class(tprocsym)
+ end;
+ tcpuprocsymclass = class of tcpuprocsym;
+
+ tcputypesym = class(ttypesym)
+ end;
+ tcpuypesymclass = class of tcputypesym;
+
+ tcpufieldvarsym = class(tfieldvarsym)
+ end;
+ tcpufieldvarsymclass = class of tcpufieldvarsym;
+
+ tcpulocalvarsym = class(tlocalvarsym)
+ end;
+ tcpulocalvarsymclass = class of tcpulocalvarsym;
+
+ tcpuparavarsym = class(tparavarsym)
+ end;
+ tcpuparavarsymclass = class of tcpuparavarsym;
+
+ tcpustaticvarsym = class(tstaticvarsym)
+ end;
+ tcpustaticvarsymclass = class of tcpustaticvarsym;
+
+ tcpuabsolutevarsym = class(tabsolutevarsym)
+ end;
+ tcpuabsolutevarsymclass = class of tcpuabsolutevarsym;
+
+ tcpupropertysym = class(tpropertysym)
+ end;
+ tcpupropertysymclass = class of tcpupropertysym;
+
+ tcpuconstsym = class(tconstsym)
+ end;
+ tcpuconstsymclass = class of tcpuconstsym;
+
+ tcpuenumsym = class(tenumsym)
+ end;
+ tcpuenumsymclass = class of tcpuenumsym;
+
+ tcpusyssym = class(tsyssym)
+ end;
+ tcpusyssymclass = class of tcpusyssym;
+
+
+const
+ pbestrealtype : ^tdef = @s64floattype;
+
+
+implementation
+
+{****************************************************************************
+ tcpuprocdef
+****************************************************************************}
+
+ procedure tcpuprocdef.ppuload_platform(ppufile: tcompilerppufile);
+ begin
+ inherited;
+ ppufile.getderef(libsymderef);
+ end;
+
+
+ procedure tcpuprocdef.ppuwrite_platform(ppufile: tcompilerppufile);
+ begin
+ inherited;
+ ppufile.putderef(libsymderef);
+ end;
+
+
+ function tcpuprocdef.getcopyas(newtyp: tdeftyp; copytyp: tproccopytyp): tstoreddef;
+ begin
+ result:=inherited;
+ if newtyp=procdef then
+ tcpuprocdef(result).libsym:=libsym;
+ end;
+
+
+ procedure tcpuprocdef.buildderef;
+ begin
+ inherited;
+ libsymderef.build(libsym);
+ end;
+
+
+ procedure tcpuprocdef.deref;
+ begin
+ inherited;
+ libsym:=tsym(libsymderef.resolve);
+ end;
+
+begin
+ { used tdef classes }
+ cfiledef:=tcpufiledef;
+ cvariantdef:=tcpuvariantdef;
+ cformaldef:=tcpuformaldef;
+ cforwarddef:=tcpuforwarddef;
+ cundefineddef:=tcpuundefineddef;
+ cerrordef:=tcpuerrordef;
+ cpointerdef:=tcpupointerdef;
+ crecorddef:=tcpurecorddef;
+ cimplementedinterface:=tcpuimplementedinterface;
+ cobjectdef:=tcpuobjectdef;
+ cclassrefdef:=tcpuclassrefdef;
+ carraydef:=tcpuarraydef;
+ corddef:=tcpuorddef;
+ cfloatdef:=tcpufloatdef;
+ cprocvardef:=tcpuprocvardef;
+ cprocdef:=tcpuprocdef;
+ cstringdef:=tcpustringdef;
+ cenumdef:=tcpuenumdef;
+ csetdef:=tcpusetdef;
+
+ { used tsym classes }
+ clabelsym:=tcpulabelsym;
+ cunitsym:=tcpuunitsym;
+ cnamespacesym:=tcpunamespacesym;
+ cprocsym:=tcpuprocsym;
+ ctypesym:=tcputypesym;
+ cfieldvarsym:=tcpufieldvarsym;
+ clocalvarsym:=tcpulocalvarsym;
+ cparavarsym:=tcpuparavarsym;
+ cstaticvarsym:=tcpustaticvarsym;
+ cabsolutevarsym:=tcpuabsolutevarsym;
+ cpropertysym:=tcpupropertysym;
+ cconstsym:=tcpuconstsym;
+ cenumsym:=tcpuenumsym;
+ csyssym:=tcpusyssym;
+end.
+
diff --git a/compiler/mips/cpugas.pas b/compiler/mips/cpugas.pas
index dfd9a825a9..9bedd3be82 100644
--- a/compiler/mips/cpugas.pas
+++ b/compiler/mips/cpugas.pas
@@ -103,6 +103,7 @@ unit cpugas;
Replace(result,'$ABI','-mabi='+abitypestr[mips_abi]);
{ ARCH selection }
Replace(result,'$ARCH','-march='+lower(cputypestr[current_settings.cputype]));
+// Replace(result,'$ARCH','-march=pic32mx -mtune=pic32mx');
end;
{****************************************************************************}
@@ -380,7 +381,7 @@ unit cpugas;
idtxt: 'AS';
asmbin: 'as';
asmcmd: '$ABI $ARCH $NOWARN -EL $PIC -o $OBJ $EXTRAOPT $ASM';
- supported_targets: [system_mipsel_linux,system_mipsel_android];
+ supported_targets: [system_mipsel_linux,system_mipsel_android,system_mipsel_embedded];
flags: [ af_needar, af_smartlink_sections];
labelprefix: '.L';
comment: '# ';
diff --git a/compiler/mips/cpuinfo.pas b/compiler/mips/cpuinfo.pas
index 2a02a02e22..77a2a03aab 100644
--- a/compiler/mips/cpuinfo.pas
+++ b/compiler/mips/cpuinfo.pas
@@ -38,7 +38,8 @@ Type
cpu_mips4,
cpu_mips5,
cpu_mips32,
- cpu_mips32r2
+ cpu_mips32r2,
+ cpu_pic32mx
);
tfputype =(fpu_none,fpu_soft,fpu_mips2,fpu_mips3);
@@ -80,7 +81,8 @@ Const
{ cpu_mips4 } 'MIPS4',
{ cpu_mips5 } 'MIPS5',
{ cpu_mips32 } 'MIPS32',
- { cpu_mips32r2 } 'MIPS32R2'
+ { cpu_mips32r2 } 'MIPS32R2',
+ { cpu_pic32mx } 'PIC32MX'
);
fputypestr : array[tfputype] of string[9] = ('',
@@ -102,6 +104,107 @@ Const
mips_abi : tabitype = abi_default;
+{$ifdef MIPSEL}
+type
+ tcpuflags=(CPUMIPS_HAS_XXXX); //Todo: Does this need to be filled?
+
+const
+ cpu_capabilities : array[tcputype] of set of tcpuflags =
+ ( { cpu_none } [],
+ { cpu_mips1 } [],
+ { cpu_mips2 } [],
+ { cpu_mips3 } [],
+ { cpu_mips4 } [],
+ { cpu_mips5 } [],
+ { cpu_mips32 } [],
+ { cpu_mips32r2 } [],
+ { cpu_pic32mx } []
+ );
+
+
+type
+ tcontrollertype =
+ (ct_none,
+ { pic32mx }
+ ct_pic32mx110f016b,
+ ct_pic32mx110f016c,
+ ct_pic32mx110f016d,
+ ct_pic32mx120f032b,
+ ct_pic32mx120f032c,
+ ct_pic32mx120f032d,
+ ct_pic32mx130f064b,
+ ct_pic32mx130f064c,
+ ct_pic32mx130f064d,
+ ct_pic32mx150f128b,
+ ct_pic32mx150f128c,
+ ct_pic32mx150f128d,
+ ct_pic32mx210f016b,
+ ct_pic32mx210f016c,
+ ct_pic32mx210f016d,
+ ct_pic32mx220f032b,
+ ct_pic32mx220f032c,
+ ct_pic32mx220f032d,
+ ct_pic32mx230f064b,
+ ct_pic32mx230f064c,
+ ct_pic32mx230f064d,
+ ct_pic32mx250f128b,
+ ct_pic32mx250f128c,
+ ct_pic32mx250f128d,
+ ct_pic32mx775f256h,
+ ct_pic32mx775f256l,
+ ct_pic32mx775f512h,
+ ct_pic32mx775f512l,
+ ct_pic32mx795f512h,
+ ct_pic32mx795f512l
+ );
+
+ { We know that there are fields after sramsize
+ but we don't care about this warning }
+ {$WARN 3177 OFF}
+const
+ embedded_controllers : array [tcontrollertype] of tcontrollerdatatype =
+ (
+ (controllertypestr:''; controllerunitstr:''; flashbase:0; flashsize:0; srambase:0; sramsize:0),
+
+ { PIC32MX1xx Series}
+ (controllertypestr:'PIC32MX110F016B'; controllerunitstr:'PIC32MX1xxFxxxB'; flashbase:$9d000000; flashsize:$00004000; srambase:$A0000000; sramsize:$00001000; eeprombase:0; eepromsize:0; bootbase:$BFC00000; bootsize:$00000BEF),
+ (controllertypestr:'PIC32MX110F016C'; controllerunitstr:'PIC32MX1xxFxxxC'; flashbase:$9d000000; flashsize:$00004000; srambase:$A0000000; sramsize:$00001000; eeprombase:0; eepromsize:0; bootbase:$BFC00000; bootsize:$00000BEF),
+ (controllertypestr:'PIC32MX110F016D'; controllerunitstr:'PIC32MX1xxFxxxD'; flashbase:$9d000000; flashsize:$00004000; srambase:$A0000000; sramsize:$00001000; eeprombase:0; eepromsize:0; bootbase:$BFC00000; bootsize:$00000BEF),
+ (controllertypestr:'PIC32MX120F032B'; controllerunitstr:'PIC32MX1xxFxxxB'; flashbase:$9d000000; flashsize:$00008000; srambase:$A0000000; sramsize:$00002000; eeprombase:0; eepromsize:0; bootbase:$BFC00000; bootsize:$00000BEF),
+ (controllertypestr:'PIC32MX120F032C'; controllerunitstr:'PIC32MX1xxFxxxC'; flashbase:$9d000000; flashsize:$00008000; srambase:$A0000000; sramsize:$00002000; eeprombase:0; eepromsize:0; bootbase:$BFC00000; bootsize:$00000BEF),
+ (controllertypestr:'PIC32MX120F032D'; controllerunitstr:'PIC32MX1xxFxxxD'; flashbase:$9d000000; flashsize:$00008000; srambase:$A0000000; sramsize:$00002000; eeprombase:0; eepromsize:0; bootbase:$BFC00000; bootsize:$00000BEF),
+ (controllertypestr:'PIC32MX130F064B'; controllerunitstr:'PIC32MX1xxFxxxB'; flashbase:$9d000000; flashsize:$00010000; srambase:$A0000000; sramsize:$00004000; eeprombase:0; eepromsize:0; bootbase:$BFC00000; bootsize:$00000BEF),
+ (controllertypestr:'PIC32MX130F064C'; controllerunitstr:'PIC32MX1xxFxxxC'; flashbase:$9d000000; flashsize:$00010000; srambase:$A0000000; sramsize:$00004000; eeprombase:0; eepromsize:0; bootbase:$BFC00000; bootsize:$00000BEF),
+ (controllertypestr:'PIC32MX130F064D'; controllerunitstr:'PIC32MX1xxFxxxD'; flashbase:$9d000000; flashsize:$00010000; srambase:$A0000000; sramsize:$00004000; eeprombase:0; eepromsize:0; bootbase:$BFC00000; bootsize:$00000BEF),
+ (controllertypestr:'PIC32MX150F128B'; controllerunitstr:'PIC32MX1xxFxxxB'; flashbase:$9d000000; flashsize:$00020000; srambase:$A0000000; sramsize:$00008000; eeprombase:0; eepromsize:0; bootbase:$BFC00000; bootsize:$00000BEF),
+ (controllertypestr:'PIC32MX150F128C'; controllerunitstr:'PIC32MX1xxFxxxC'; flashbase:$9d000000; flashsize:$00020000; srambase:$A0000000; sramsize:$00008000; eeprombase:0; eepromsize:0; bootbase:$BFC00000; bootsize:$00000BEF),
+ (controllertypestr:'PIC32MX150F128D'; controllerunitstr:'PIC32MX1xxFxxxD'; flashbase:$9d000000; flashsize:$00020000; srambase:$A0000000; sramsize:$00008000; eeprombase:0; eepromsize:0; bootbase:$BFC00000; bootsize:$00000BEF),
+
+ { PIC32MX2xx Series}
+ (controllertypestr:'PIC32MX210F016B'; controllerunitstr:'PIC32MX2xxFxxxB'; flashbase:$9d000000; flashsize:$00004000; srambase:$A0000000; sramsize:$00001000; eeprombase:0; eepromsize:0; bootbase:$BFC00000; bootsize:$00000BEF),
+ (controllertypestr:'PIC32MX210F016C'; controllerunitstr:'PIC32MX2xxFxxxC'; flashbase:$9d000000; flashsize:$00004000; srambase:$A0000000; sramsize:$00001000; eeprombase:0; eepromsize:0; bootbase:$BFC00000; bootsize:$00000BEF),
+ (controllertypestr:'PIC32MX210F016D'; controllerunitstr:'PIC32MX2xxFxxxD'; flashbase:$9d000000; flashsize:$00004000; srambase:$A0000000; sramsize:$00001000; eeprombase:0; eepromsize:0; bootbase:$BFC00000; bootsize:$00000BEF),
+ (controllertypestr:'PIC32MX220F032B'; controllerunitstr:'PIC32MX2xxFxxxB'; flashbase:$9d000000; flashsize:$00008000; srambase:$A0000000; sramsize:$00002000; eeprombase:0; eepromsize:0; bootbase:$BFC00000; bootsize:$00000BEF),
+ (controllertypestr:'PIC32MX220F032C'; controllerunitstr:'PIC32MX2xxFxxxC'; flashbase:$9d000000; flashsize:$00008000; srambase:$A0000000; sramsize:$00002000; eeprombase:0; eepromsize:0; bootbase:$BFC00000; bootsize:$00000BEF),
+ (controllertypestr:'PIC32MX220F032D'; controllerunitstr:'PIC32MX2xxFxxxD'; flashbase:$9d000000; flashsize:$00008000; srambase:$A0000000; sramsize:$00002000; eeprombase:0; eepromsize:0; bootbase:$BFC00000; bootsize:$00000BEF),
+ (controllertypestr:'PIC32MX230F064B'; controllerunitstr:'PIC32MX2xxFxxxB'; flashbase:$9d000000; flashsize:$00010000; srambase:$A0000000; sramsize:$00004000; eeprombase:0; eepromsize:0; bootbase:$BFC00000; bootsize:$00000BEF),
+ (controllertypestr:'PIC32MX230F064C'; controllerunitstr:'PIC32MX2xxFxxxC'; flashbase:$9d000000; flashsize:$00010000; srambase:$A0000000; sramsize:$00004000; eeprombase:0; eepromsize:0; bootbase:$BFC00000; bootsize:$00000BEF),
+ (controllertypestr:'PIC32MX230F064D'; controllerunitstr:'PIC32MX2xxFxxxD'; flashbase:$9d000000; flashsize:$00010000; srambase:$A0000000; sramsize:$00004000; eeprombase:0; eepromsize:0; bootbase:$BFC00000; bootsize:$00000BEF),
+ (controllertypestr:'PIC32MX250F128B'; controllerunitstr:'PIC32MX2xxFxxxB'; flashbase:$9d000000; flashsize:$00020000; srambase:$A0000000; sramsize:$00008000; eeprombase:0; eepromsize:0; bootbase:$BFC00000; bootsize:$00000BEF),
+ (controllertypestr:'PIC32MX250F128C'; controllerunitstr:'PIC32MX2xxFxxxC'; flashbase:$9d000000; flashsize:$00020000; srambase:$80000000; sramsize:$00008000; eeprombase:0; eepromsize:0; bootbase:$BFC00000; bootsize:$00000BEF),
+ (controllertypestr:'PIC32MX250F128D'; controllerunitstr:'PIC32MX2xxFxxxD'; flashbase:$9d000000; flashsize:$00020000; srambase:$A0000000; sramsize:$00008000; eeprombase:0; eepromsize:0; bootbase:$BFC00000; bootsize:$00000BEF),
+
+ { PIC32MX7x5 Series}
+ (controllertypestr:'PIC32MX775F256H'; controllerunitstr:'PIC32MX7x5FxxxH'; flashbase:$9d000000; flashsize:$00040000; srambase:$A0000000; sramsize:$00010000; eeprombase:0; eepromsize:0; bootbase:$BFC00000; bootsize:$00002FEF),
+ (controllertypestr:'PIC32MX775F256L'; controllerunitstr:'PIC32MX7x5FxxxL'; flashbase:$9d000000; flashsize:$00040000; srambase:$A0000000; sramsize:$00010000; eeprombase:0; eepromsize:0; bootbase:$BFC00000; bootsize:$00002FEF),
+ (controllertypestr:'PIC32MX775F512H'; controllerunitstr:'PIC32MX7x5FxxxH'; flashbase:$9d000000; flashsize:$00080000; srambase:$A0000000; sramsize:$00010000; eeprombase:0; eepromsize:0; bootbase:$BFC00000; bootsize:$00002FEF),
+ (controllertypestr:'PIC32MX775F512L'; controllerunitstr:'PIC32MX7x5FxxxL'; flashbase:$9d000000; flashsize:$00080000; srambase:$A0000000; sramsize:$00010000; eeprombase:0; eepromsize:0; bootbase:$BFC00000; bootsize:$00002FEF),
+ (controllertypestr:'PIC32MX795F512H'; controllerunitstr:'PIC32MX7x5FxxxH'; flashbase:$9d000000; flashsize:$00080000; srambase:$A0000000; sramsize:$00020000; eeprombase:0; eepromsize:0; bootbase:$BFC00000; bootsize:$00002FEF),
+ (controllertypestr:'PIC32MX795F512L'; controllerunitstr:'PIC32MX7x5FxxxL'; flashbase:$9d000000; flashsize:$00080000; srambase:$A0000000; sramsize:$00020000; eeprombase:0; eepromsize:0; bootbase:$BFC00000; bootsize:$00002FEF)
+ );
+
+{$endif MIPSEL}
+
{ Supported optimizations, only used for information }
supported_optimizerswitches = [cs_opt_regvar,cs_opt_loopunroll,cs_opt_nodecse,
cs_opt_reorder_fields,cs_opt_fastmath];
diff --git a/compiler/mips/cpunode.pas b/compiler/mips/cpunode.pas
index f5b968bd1d..4066df4bb8 100644
--- a/compiler/mips/cpunode.pas
+++ b/compiler/mips/cpunode.pas
@@ -37,6 +37,9 @@ implementation
after the generic one (FK)
}
ncpuadd,ncpucall,ncpumat,ncpuinln,
- ncpuld,ncpucnv,ncpuset;
+ ncpuld,ncpucnv,ncpuset,
+ { symtable }
+ symcpu
+ ;
end.
diff --git a/compiler/mips/cpupi.pas b/compiler/mips/cpupi.pas
index aad3e2b209..00ec533b1b 100644
--- a/compiler/mips/cpupi.pas
+++ b/compiler/mips/cpupi.pas
@@ -49,6 +49,7 @@ interface
function calc_stackframe_size:longint;override;
procedure set_first_temp_offset;override;
procedure allocate_got_register(list:tasmlist);override;
+ procedure postprocess_code;override;
end;
{ Used by Stabs debug info generator }
@@ -60,7 +61,7 @@ implementation
uses
systems,globals,verbose,
cpubase,cgbase,cgobj,
- tgobj,paramgr,symconst;
+ tgobj,paramgr,symconst,symcpu,aasmcpu;
constructor TMIPSProcInfo.create(aparent: tprocinfo);
begin
@@ -143,18 +144,25 @@ implementation
if computed_local_size=-1 then
begin
computed_local_size:=result;
- procdef.total_local_size:=result;
+ tcpuprocdef(procdef).total_local_size:=result;
end
else if computed_local_size <> result then
Comment(V_Error,'TMIPSProcInfo.calc_stackframe_size result changed');
end;
+
+ procedure TMIPSProcInfo.postprocess_code;
+ begin
+ fixup_jmps(aktproccode);
+ end;
+
+
function mips_extra_offset(procdef : tprocdef) : longint;
begin
if procdef=nil then
mips_extra_offset:=0
else
- mips_extra_offset:=procdef.total_local_size;
+ mips_extra_offset:=tcpuprocdef(procdef).total_local_size;
end;
begin
diff --git a/compiler/mips/cputarg.pas b/compiler/mips/cputarg.pas
index 4b1c6688f1..766b878e4c 100644
--- a/compiler/mips/cputarg.pas
+++ b/compiler/mips/cputarg.pas
@@ -51,6 +51,9 @@ implementation
,t_android
{$endif MIPSEL}
{$endif}
+ {$ifndef NOTARGETEMBEDDED}
+ ,t_embed
+ {$endif}
{**************************************
Assemblers
diff --git a/compiler/mips/hlcgcpu.pas b/compiler/mips/hlcgcpu.pas
index 93edbf4cac..eeddde8e9c 100644
--- a/compiler/mips/hlcgcpu.pas
+++ b/compiler/mips/hlcgcpu.pas
@@ -93,7 +93,7 @@ implementation
begin
cgsubsetsize:=def_cgsize(subsetsize);
cgtosize:=def_cgsize(tosize);
- if (current_settings.cputype<>cpu_mips32r2) then
+ if (current_settings.cputype<>cpu_mips32r2) and (current_settings.cputype<>cpu_pic32mx) then
inherited a_load_subsetreg_reg(list,subsetsize,tosize,sreg,destreg)
else if (sreg.bitlen>32) then
InternalError(2013070201)
@@ -121,7 +121,7 @@ implementation
procedure thlcgmips.a_load_regconst_subsetreg_intern(list: TAsmList; fromsize, subsetsize: tdef; fromreg: tregister; const sreg: tsubsetregister; slopt: tsubsetloadopt);
begin
- if (current_settings.cputype<>cpu_mips32r2) then
+ if (current_settings.cputype<>cpu_mips32r2) and (current_settings.cputype<>cpu_pic32mx) then
inherited a_load_regconst_subsetreg_intern(list,fromsize,subsetsize,fromreg,sreg,slopt)
else if (sreg.bitlen>32) then
InternalError(2013070202)
diff --git a/compiler/mips/ncpuadd.pas b/compiler/mips/ncpuadd.pas
index 7e0b486eec..e1c17336e4 100644
--- a/compiler/mips/ncpuadd.pas
+++ b/compiler/mips/ncpuadd.pas
@@ -63,7 +63,7 @@ uses
procinfo,
symconst,symdef,
ncon, nset, nadd,
- ncgutil, cgobj;
+ ncgutil, hlcgobj, cgobj;
{*****************************************************************************
tmipsaddnode
@@ -210,8 +210,8 @@ begin
{ force fpureg as location, left right doesn't matter
as both will be in a fpureg }
- location_force_fpureg(current_asmdata.CurrAsmList, left.location, True);
- location_force_fpureg(current_asmdata.CurrAsmList, right.location, True);
+ hlcg.location_force_fpureg(current_asmdata.CurrAsmList, left.location, left.resultdef, True);
+ hlcg.location_force_fpureg(current_asmdata.CurrAsmList, right.location, right.resultdef, True);
location_reset(location, LOC_FPUREGISTER, def_cgsize(resultdef));
location.register:=cg.getfpuregister(current_asmdata.CurrAsmList,location.size);
@@ -271,8 +271,8 @@ begin
if nf_swapped in flags then
swapleftright;
- location_force_fpureg(current_asmdata.CurrAsmList, left.location, True);
- location_force_fpureg(current_asmdata.CurrAsmList, right.location, True);
+ hlcg.location_force_fpureg(current_asmdata.CurrAsmList, left.location, left.resultdef, True);
+ hlcg.location_force_fpureg(current_asmdata.CurrAsmList, right.location, right.resultdef, True);
location_reset(location, LOC_JUMP, OS_NO);
op:=ops_cmpfloat[left.location.size=OS_F64,nodetype];
diff --git a/compiler/mips/ncpuinln.pas b/compiler/mips/ncpuinln.pas
index f333d236db..447c05c0b7 100644
--- a/compiler/mips/ncpuinln.pas
+++ b/compiler/mips/ncpuinln.pas
@@ -53,7 +53,7 @@ uses
cgbase, pass_2,
cpubase, paramgr,
nbas, ncon, ncal, ncnv, nld,
- ncgutil, cgobj, cgutils;
+ hlcgobj, ncgutil, cgobj, cgutils;
{*****************************************************************************
tMIPSELinlinenode
@@ -62,7 +62,7 @@ uses
procedure tMIPSELinlinenode.load_fpu_location;
begin
secondpass(left);
- location_force_fpureg(current_asmdata.CurrAsmList, left.location, True);
+ hlcg.location_force_fpureg(current_asmdata.CurrAsmList, left.location, left.resultdef, True);
location_copy(location, left.location);
if left.location.loc = LOC_CFPUREGISTER then
begin
diff --git a/compiler/mips/ncpumat.pas b/compiler/mips/ncpumat.pas
index 5583b0953e..f0b9074440 100644
--- a/compiler/mips/ncpumat.pas
+++ b/compiler/mips/ncpumat.pas
@@ -271,7 +271,7 @@ end;
procedure TMIPSunaryminusnode.second_float;
begin
secondpass(left);
- location_force_fpureg(current_asmdata.CurrAsmList,left.location,true);
+ hlcg.location_force_fpureg(current_asmdata.CurrAsmList,left.location,left.resultdef,true);
location_reset(location,LOC_FPUREGISTER,def_cgsize(resultdef));
location.register:=cg.getfpuregister(current_asmdata.CurrAsmList,location.size);
case location.size of
diff --git a/compiler/mips/ncpuset.pas b/compiler/mips/ncpuset.pas
index ddfa2949c5..cbc7370e54 100644
--- a/compiler/mips/ncpuset.pas
+++ b/compiler/mips/ncpuset.pas
@@ -91,13 +91,15 @@ var
begin
opcgsize:=def_cgsize(opsize);
+ last:=min_;
jumpsegment := current_procinfo.aktlocaldata;
if not (jumptable_no_range) then
begin
- { case expr less than min_ => goto elselabel }
- cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList, opcgsize, jmp_lt, aint(min_), hregister, elselabel);
+ { a <= x <= b <-> unsigned(x-a) <= (b-a) }
+ cg.a_op_const_reg(current_asmdata.CurrAsmList,OP_SUB,opcgsize,aint(min_),hregister);
{ case expr greater than max_ => goto elselabel }
- cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList, opcgsize, jmp_gt, aint(max_), hregister, elselabel);
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,opcgsize,OC_A,aint(max_)-aint(min_),hregister,elselabel);
+ min_:=0;
end;
current_asmdata.getjumplabel(table);
indexreg := cg.getaddressregister(current_asmdata.CurrAsmList);
@@ -123,7 +125,6 @@ begin
{ generate jump table }
new_section(jumpSegment,sec_rodata,current_procinfo.procdef.mangledname,sizeof(aint));
jumpSegment.concat(Tai_label.Create(table));
- last := min_;
genitem(hp);
end;
diff --git a/compiler/mips/opcode.inc b/compiler/mips/opcode.inc
index 8c69dd8f88..4b607c5f33 100644
--- a/compiler/mips/opcode.inc
+++ b/compiler/mips/opcode.inc
@@ -188,4 +188,5 @@ A_MFC0,
A_MTC0,
A_SDBBP,
A_WRPGPR,
+A_ERET,
A_END_DEF
diff --git a/compiler/mips/strinst.inc b/compiler/mips/strinst.inc
index f14ccc7377..d3df8fdb18 100644
--- a/compiler/mips/strinst.inc
+++ b/compiler/mips/strinst.inc
@@ -188,4 +188,5 @@
'mtc0',
'sdbbp',
'wrpgpr',
+'eret',
'end_def'
diff --git a/compiler/mips/symcpu.pas b/compiler/mips/symcpu.pas
new file mode 100644
index 0000000000..ce2a5e73df
--- /dev/null
+++ b/compiler/mips/symcpu.pas
@@ -0,0 +1,213 @@
+{
+ Copyright (c) 2014 by Florian Klaempfl
+
+ Symbol table overrides for MIPS
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+ ****************************************************************************
+}
+unit symcpu;
+
+{$i fpcdefs.inc}
+
+interface
+
+uses
+ symtype,symdef,symsym;
+
+type
+ { defs }
+ tcpufiledef = class(tfiledef)
+ end;
+ tcpufiledefclass = class of tcpufiledef;
+
+ tcpuvariantdef = class(tvariantdef)
+ end;
+ tcpuvariantdefclass = class of tcpuvariantdef;
+
+ tcpuformaldef = class(tformaldef)
+ end;
+ tcpuformaldefclass = class of tcpuformaldef;
+
+ tcpuforwarddef = class(tforwarddef)
+ end;
+ tcpuforwarddefclass = class of tcpuforwarddef;
+
+ tcpuundefineddef = class(tundefineddef)
+ end;
+ tcpuundefineddefclass = class of tcpuundefineddef;
+
+ tcpuerrordef = class(terrordef)
+ end;
+ tcpuerrordefclass = class of tcpuerrordef;
+
+ tcpupointerdef = class(tpointerdef)
+ end;
+ tcpupointerdefclass = class of tcpupointerdef;
+
+ tcpurecorddef = class(trecorddef)
+ end;
+ tcpurecorddefclass = class of tcpurecorddef;
+
+ tcpuimplementedinterface = class(timplementedinterface)
+ end;
+ tcpuimplementedinterfaceclass = class of tcpuimplementedinterface;
+
+ tcpuobjectdef = class(tobjectdef)
+ end;
+ tcpuobjectdefclass = class of tcpuobjectdef;
+
+ tcpuclassrefdef = class(tclassrefdef)
+ end;
+ tcpuclassrefdefclass = class of tcpuclassrefdef;
+
+ tcpuarraydef = class(tarraydef)
+ end;
+ tcpuarraydefclass = class of tcpuarraydef;
+
+ tcpuorddef = class(torddef)
+ end;
+ tcpuorddefclass = class of tcpuorddef;
+
+ tcpufloatdef = class(tfloatdef)
+ end;
+ tcpufloatdefclass = class of tcpufloatdef;
+
+ tcpuprocvardef = class(tprocvardef)
+ end;
+ tcpuprocvardefclass = class of tcpuprocvardef;
+
+ tcpuprocdef = class(tprocdef)
+ { needed for stabs debugging }
+ total_local_size : longint;
+ end;
+ tcpuprocdefclass = class of tcpuprocdef;
+
+ tcpustringdef = class(tstringdef)
+ end;
+ tcpustringdefclass = class of tcpustringdef;
+
+ tcpuenumdef = class(tenumdef)
+ end;
+ tcpuenumdefclass = class of tcpuenumdef;
+
+ tcpusetdef = class(tsetdef)
+ end;
+ tcpusetdefclass = class of tcpusetdef;
+
+ { syms }
+ tcpulabelsym = class(tlabelsym)
+ end;
+ tcpulabelsymclass = class of tcpulabelsym;
+
+ tcpuunitsym = class(tunitsym)
+ end;
+ tcpuunitsymclass = class of tcpuunitsym;
+
+ tcpunamespacesym = class(tnamespacesym)
+ end;
+ tcpunamespacesymclass = class of tcpunamespacesym;
+
+ tcpuprocsym = class(tprocsym)
+ end;
+ tcpuprocsymclass = class of tcpuprocsym;
+
+ tcputypesym = class(ttypesym)
+ end;
+ tcpuypesymclass = class of tcputypesym;
+
+ tcpufieldvarsym = class(tfieldvarsym)
+ end;
+ tcpufieldvarsymclass = class of tcpufieldvarsym;
+
+ tcpulocalvarsym = class(tlocalvarsym)
+ end;
+ tcpulocalvarsymclass = class of tcpulocalvarsym;
+
+ tcpuparavarsym = class(tparavarsym)
+ end;
+ tcpuparavarsymclass = class of tcpuparavarsym;
+
+ tcpustaticvarsym = class(tstaticvarsym)
+ end;
+ tcpustaticvarsymclass = class of tcpustaticvarsym;
+
+ tcpuabsolutevarsym = class(tabsolutevarsym)
+ end;
+ tcpuabsolutevarsymclass = class of tcpuabsolutevarsym;
+
+ tcpupropertysym = class(tpropertysym)
+ end;
+ tcpupropertysymclass = class of tcpupropertysym;
+
+ tcpuconstsym = class(tconstsym)
+ end;
+ tcpuconstsymclass = class of tcpuconstsym;
+
+ tcpuenumsym = class(tenumsym)
+ end;
+ tcpuenumsymclass = class of tcpuenumsym;
+
+ tcpusyssym = class(tsyssym)
+ end;
+ tcpusyssymclass = class of tcpusyssym;
+
+
+const
+ pbestrealtype : ^tdef = @s64floattype;
+
+
+implementation
+
+begin
+ { used tdef classes }
+ cfiledef:=tcpufiledef;
+ cvariantdef:=tcpuvariantdef;
+ cformaldef:=tcpuformaldef;
+ cforwarddef:=tcpuforwarddef;
+ cundefineddef:=tcpuundefineddef;
+ cerrordef:=tcpuerrordef;
+ cpointerdef:=tcpupointerdef;
+ crecorddef:=tcpurecorddef;
+ cimplementedinterface:=tcpuimplementedinterface;
+ cobjectdef:=tcpuobjectdef;
+ cclassrefdef:=tcpuclassrefdef;
+ carraydef:=tcpuarraydef;
+ corddef:=tcpuorddef;
+ cfloatdef:=tcpufloatdef;
+ cprocvardef:=tcpuprocvardef;
+ cprocdef:=tcpuprocdef;
+ cstringdef:=tcpustringdef;
+ cenumdef:=tcpuenumdef;
+ csetdef:=tcpusetdef;
+
+ { used tsym classes }
+ clabelsym:=tcpulabelsym;
+ cunitsym:=tcpuunitsym;
+ cnamespacesym:=tcpunamespacesym;
+ cprocsym:=tcpuprocsym;
+ ctypesym:=tcputypesym;
+ cfieldvarsym:=tcpufieldvarsym;
+ clocalvarsym:=tcpulocalvarsym;
+ cparavarsym:=tcpuparavarsym;
+ cstaticvarsym:=tcpustaticvarsym;
+ cabsolutevarsym:=tcpuabsolutevarsym;
+ cpropertysym:=tcpupropertysym;
+ cconstsym:=tcpuconstsym;
+ cenumsym:=tcpuenumsym;
+ csyssym:=tcpusyssym;
+end.
+
diff --git a/compiler/msg/errore.msg b/compiler/msg/errore.msg
index d39eb82b6c..48ed10c04b 100644
--- a/compiler/msg/errore.msg
+++ b/compiler/msg/errore.msg
@@ -136,7 +136,7 @@ general_f_oserror=01025_F_Operating system error: $1
#
# Scanner
#
-# 02094 is the last used one
+# 02095 is the last used one
#
% \section{Scanner messages.}
% This section lists the messages that the scanner emits. The scanner takes
@@ -394,11 +394,13 @@ scan_e_illegal_peflag=02093_E_Illegal argument for SETPEFLAGS
scan_e_illegal_peoptflag=02094_E_Illegal argument for SETPEOPTFLAGS
% The given argument for SETPEOPTFLAGS is neither a correct named value nor an
% ordinal value
+scan_e_unsupported_switch=02095_E_Directive $1 is not supported on this target
+% Not all compiler directives are supported on all targets.
% \end{description}
#
# Parser
#
-# 03335 is the last used one
+# 03336 is the last used one
#
% \section{Parser messages}
% This section lists all parser messages. The parser takes care of the
@@ -1501,13 +1503,18 @@ parser_e_no_assembler_in_generic=03334_E_Assembler blocks not allowed inside gen
parser_e_property_only_sgr=03335_E_Properties can be only static, global or inside structured types
% Properties cannot be declared local, only global, using the static
% directive or inside structured types.
+parser_e_overloaded_have_same_mangled_name=03336_E_Overloaded routines have the same mangled name
+% Some platforms, such as the JVM platform, encode the parameters in the routine name in
+% a prescribed way, and this encoding may map different Pascal types to the same encoded
+% (a.k.a.\ ``mangled'') name. This error can only be solved by removing or changing the
+% conflicting definitions' parameter declarations or routine names.
%
%
% \end{description}
%
# Type Checking
#
-# 04120 is the last used one
+# 04121 is the last used one
#
% \section{Type checking errors}
% This section lists all errors that can occur when type checking is
@@ -1931,6 +1938,9 @@ type_e_invalid_default_value=04119_E_It is not possible to define a default valu
% arrays and TP-style objects, cannot have a default value.
type_e_type_not_allowed_for_type_helper=04120_E_Type "$1" cannot be extended by a type helper
% Types like procedural variables cannot be extended by type helpers
+type_e_procedure_must_be_far=04121_E_Procedure or function must be far in order to allow taking its address: "$1"
+% In certain i8086 memory models (medium, large and huge), procedures and functions
+% have to be declared 'far' in order to allow their address to be taken.
% \end{description}
#
# Symtable
@@ -2201,6 +2211,8 @@ sym_e_no_matching_inherited_parameterless_constructor=05086_E_Cannot generate de
% In this case you must add a valid constructor yourself.
sym_d_adding_helper_for=05087_D_Adding helper for $1
% A helper for the mentioned type is added to the current scope
+sym_e_param_list=05088_E_Found declaration: $1
+% This message shows all overloaded declarations in case of an error.
% \end{description}
#
# Codegenerator
@@ -2349,6 +2361,11 @@ cg_e_mod_only_defined_for_pos_quotient=06054_E_In ISO mode, the mod operator is
% In ISO pascal, only positive values are allowed for the quotient: \var{n mod m} is only valid if \var{m>0}.
cg_d_autoinlining=06055_DL_Auto inlining: $1
% Due to auto inlining turned on, the compiler auto inlines this subroutine.
+cg_e_function_not_support_by_selected_instruction_set=06056_E_The function used, is not supported by the selected instruction set: $1
+% Some functions cannot be implemented efficiently for certain instruction sets, one example is fused multiply/add.
+% To avoid very inefficient code, the compiler complains in this case, so either select another instruction set
+% or replace the function call by alternative code
+%
% \end{description}
# EndOfTeX
#
@@ -2606,7 +2623,6 @@ asmr_e_mixing_regtypes=07108_E_All registers in a register set must be of the sa
asmr_e_empty_regset=07109_E_A register set cannot be empty
% Instructions on the ARM architecture that take a register set as argument require that such a set
% contains at least one register.
-
asmr_w_useless_got_for_local=07110_W_@GOTPCREL is useless and potentially dangereous for local symbols
% The use of @GOTPCREL supposes an extra indirection that is
% not present if the symbol is local, which might lead to wrong asembler code
@@ -3069,7 +3085,7 @@ unit_u_ppu_invalid_memory_model=10063_U_PPU is compiled for another i8086 memory
#
# Options
#
-# 11055 is the last used one
+# 11056 is the last used one
#
option_usage=11000_O_$1 [options] <inputfile> [options]
# BeginOfTeX
@@ -3213,6 +3229,7 @@ option_missing_arg=11054_E_argument to "$1" is missing
% Displayed when parameter must be followed by an argument.
option_malformed_para=11055_E_malformed parameter: $1
% Given argument is not valid for parameter.
+option_smart_link_requires_external_linker=11056_W_Smart linking requires external linker
%\end{description}
diff --git a/compiler/msgidx.inc b/compiler/msgidx.inc
index 40eb4112e3..55d6638157 100644
--- a/compiler/msgidx.inc
+++ b/compiler/msgidx.inc
@@ -116,6 +116,7 @@ const
scan_w_setpeoptflags_not_support=02092;
scan_e_illegal_peflag=02093;
scan_e_illegal_peoptflag=02094;
+ scan_e_unsupported_switch=02095;
parser_e_syntax_error=03000;
parser_e_dont_nest_interrupt=03004;
parser_w_proc_directive_ignored=03005;
@@ -433,6 +434,7 @@ const
parser_e_dir_not_allowed=03333;
parser_e_no_assembler_in_generic=03334;
parser_e_property_only_sgr=03335;
+ parser_e_overloaded_have_same_mangled_name=03336;
type_e_mismatch=04000;
type_e_incompatible_types=04001;
type_e_not_equal_types=04002;
@@ -544,6 +546,7 @@ const
type_e_typeof_requires_vmt=04118;
type_e_invalid_default_value=04119;
type_e_type_not_allowed_for_type_helper=04120;
+ type_e_procedure_must_be_far=04121;
sym_e_id_not_found=05000;
sym_f_internal_error_in_symtablestack=05001;
sym_e_duplicate_id=05002;
@@ -618,6 +621,7 @@ const
sym_e_duplicate_id_create_java_constructor=05085;
sym_e_no_matching_inherited_parameterless_constructor=05086;
sym_d_adding_helper_for=05087;
+ sym_e_param_list=05088;
cg_e_parasize_too_big=06009;
cg_e_file_must_call_by_reference=06012;
cg_e_cant_use_far_pointer_there=06013;
@@ -651,6 +655,7 @@ const
cg_e_goto_across_procedures_with_exceptions_not_allowed=06053;
cg_e_mod_only_defined_for_pos_quotient=06054;
cg_d_autoinlining=06055;
+ cg_e_function_not_support_by_selected_instruction_set=06056;
asmr_d_start_reading=07000;
asmr_d_finish_reading=07001;
asmr_e_none_label_contain_at=07002;
@@ -957,6 +962,7 @@ const
option_w_unsupported_debug_format=11053;
option_missing_arg=11054;
option_malformed_para=11055;
+ option_smart_link_requires_external_linker=11056;
wpo_cant_find_file=12000;
wpo_begin_processing=12001;
wpo_end_processing=12002;
@@ -981,9 +987,9 @@ const
option_info=11024;
option_help_pages=11025;
- MsgTxtSize = 70977;
+ MsgTxtSize = 71327;
MsgIdxMax : array[1..20] of longint=(
- 26,95,336,121,88,56,126,27,202,64,
- 56,20,1,1,1,1,1,1,1,1
+ 26,96,337,122,89,57,126,27,202,64,
+ 57,20,1,1,1,1,1,1,1,1
);
diff --git a/compiler/msgtxt.inc b/compiler/msgtxt.inc
index c4be030cfd..314953cefc 100644
--- a/compiler/msgtxt.inc
+++ b/compiler/msgtxt.inc
@@ -1,7 +1,7 @@
{$ifdef Delphi}
-const msgtxt : array[0..000295] of string[240]=(
+const msgtxt : array[0..000297] of string[240]=(
{$else Delphi}
-const msgtxt : array[0..000295,1..240] of char=(
+const msgtxt : array[0..000297,1..240] of char=(
{$endif Delphi}
'01000_T_Compiler: $1'#000+
'01001_D_Compiler OS: $1'#000+
@@ -127,1084 +127,1091 @@ const msgtxt : array[0..000295,1..240] of char=(
'02092_W_SETPEOPTFLAGS is not supported by the target OS'#000+
'02093_E_Illegal argument for SETPEFLAGS'#000+
'02094_E_Illegal argument for SETPEOPTFLAGS'#000+
- '03000_E_Parser - Syntax Error'#000+
+ '02095_E_Directive $1 is not supported on this target'#000+
+ '03000_E_Parser - Syntax E','rror'#000+
'03004_E_INTERRUPT procedure cannot be nested'#000+
- '030','05_W_Procedure type "$1" ignored'#000+
+ '03005_W_Procedure type "$1" ignored'#000+
'03006_E_Not all declarations of "$1" are declared with OVERLOAD'#000+
'03008_E_Duplicate exported function name "$1"'#000+
- '03009_E_Duplicate exported function index $1'#000+
+ '03009_E_Duplicate exported function index $1',#000+
'03010_E_Invalid index for exported function'#000+
- '03011_W_','Relocatable DLL or executable $1 debug info does not work, d'+
- 'isabled.'#000+
+ '03011_W_Relocatable DLL or executable $1 debug info does not work, dis'+
+ 'abled.'#000+
'03012_W_To allow debugging for win32 code you need to disable relocati'+
'on with -WN option'#000+
- '03013_E_Constructor name must be INIT'#000+
+ '03013_E_Constructor name must',' be INIT'#000+
'03014_E_Destructor name must be DONE'#000+
- '03016_E','_Procedure type INLINE not supported'#000+
+ '03016_E_Procedure type INLINE not supported'#000+
'03018_W_Constructor should be public'#000+
'03019_W_Destructor should be public'#000+
'03020_N_Class should have one destructor only'#000+
- '03021_E_Local class definitions are not allowed'#000+
- '03022_F_Anonymous class definitions ','are not allowed'#000+
+ '03021_E_Local class definitions',' are not allowed'#000+
+ '03022_F_Anonymous class definitions are not allowed'#000+
'03023_N_The object "$1" has no VMT'#000+
'03024_E_Illegal parameter list'#000+
'03026_E_Wrong number of parameters specified for call to "$1"'#000+
- '03027_E_overloaded identifier "$1" isn'#039't a function'#000+
- '03028_E_overloaded functions have the same p','arameter list'#000+
+ '03027_E_overloaded identifier "$1" isn'#039't a ','function'#000+
+ '03028_E_overloaded functions have the same parameter list'#000+
'03029_E_function header doesn'#039't match the previous declaration "$1'+
'"'#000+
'03030_E_function header "$1" doesn'#039't match forward : var name chan'+
'ges $2 => $3'#000+
- '03031_N_Values in enumeration types have to be ascending'#000+
- '03033_E_With cannot be',' used for variables in a different segment'#000+
+ '03031_N_Values in enumerat','ion types have to be ascending'#000+
+ '03033_E_With cannot be used for variables in a different segment'#000+
'03034_E_function nesting > 31'#000+
'03035_E_range check error while evaluating constants'#000+
'03036_W_range check error while evaluating constants'#000+
- '03037_E_duplicate case label'#000+
- '03038_E_Upper bound of case rang','e is less than lower bound'#000+
+ '03037_E_','duplicate case label'#000+
+ '03038_E_Upper bound of case range is less than lower bound'#000+
'03039_E_typed constants of classes or interfaces are not allowed'#000+
'03040_E_functions variables of overloaded functions are not allowed'#000+
- '03041_E_string length must be a value from 1 to 255'#000+
- '03042_W_use extended syntax ','of NEW and DISPOSE for instances of obje'+
- 'cts'#000+
+ '03041_E_string length must ','be a value from 1 to 255'#000+
+ '03042_W_use extended syntax of NEW and DISPOSE for instances of object'+
+ 's'#000+
'03043_W_use of NEW or DISPOSE for untyped pointers is meaningless'#000+
'03044_E_use of NEW or DISPOSE is not possible for untyped pointers'#000+
- '03045_E_class identifier expected'#000+
- '03046_E_type identifier not a','llowed here'#000+
+ '03045_E_cl','ass identifier expected'#000+
+ '03046_E_type identifier not allowed here'#000+
'03047_E_method identifier expected'#000+
'03048_E_function header doesn'#039't match any method of this class "$1'+
'"'#000+
'03049_DL_procedure/function $1'#000+
'03050_E_Illegal floating point constant'#000+
- '03051_E_FAIL can be used in constructors only'#000+
- '03052_E_','Destructors cannot have parameters'#000+
+ '0','3051_E_FAIL can be used in constructors only'#000+
+ '03052_E_Destructors cannot have parameters'#000+
'03053_E_Only class methods, class properties and class variables can b'+
'e referred with class references'#000+
- '03054_E_Only class methods, class properties and class variables can b'+
- 'e accessed in class methods'#000+
- '0305','5_E_Constant and CASE types do not match'#000+
+ '03054_E_Only class methods, class properties and ','class variables can'+
+ ' be accessed in class methods'#000+
+ '03055_E_Constant and CASE types do not match'#000+
'03056_E_The symbol cannot be exported from a library'#000+
'03057_W_An inherited method is hidden by "$1"'#000+
- '03058_E_There is no method in an ancestor class to be overridden: "$1"'+
- #000+
- '03059_E_No member is provided',' to access property'#000+
+ '03058_E_There is no method in an ancestor class',' to be overridden: "$'+
+ '1"'#000+
+ '03059_E_No member is provided to access property'#000+
'03060_W_Stored property directive is not yet implemented'#000+
'03061_E_Illegal symbol for property access'#000+
'03062_E_Cannot access a protected field of an object here'#000+
- '03063_E_Cannot access a private field of an object here'#000+
- '03066_','E_Overridden methods must have the same return type: "$2" is o'+
- 'verridden by "$1" which has another return type'#000+
+ '03063_E_C','annot access a private field of an object here'#000+
+ '03066_E_Overridden methods must have the same return type: "$2" is ove'+
+ 'rridden by "$1" which has another return type'#000+
'03067_E_EXPORT declared functions cannot be nested'#000+
- '03068_E_Methods cannot be EXPORTed'#000+
- '03069_E_Call by var for arg no. $1 has to ma','tch exactly: Got "$2" ex'+
- 'pected "$3"'#000+
+ '03068_E_Methods cannot be ','EXPORTed'#000+
+ '03069_E_Call by var for arg no. $1 has to match exactly: Got "$2" expe'+
+ 'cted "$3"'#000+
'03070_E_Class isn'#039't a parent class of the current class'#000+
'03071_E_SELF is only allowed in methods'#000+
- '03072_E_Methods can be only in other methods called direct with type i'+
- 'dentifier of the class'#000+
- '03073_E_Illegal',' use of '#039':'#039#000+
+ '03072_E_Methods can be only in other methods called dir','ect with type'+
+ ' identifier of the class'#000+
+ '03073_E_Illegal use of '#039':'#039#000+
'03074_E_range check error in set constructor or duplicate set element'#000+
'03075_E_Pointer to object expected'#000+
'03076_E_Expression must be constructor call'#000+
- '03077_E_Expression must be destructor call'#000+
- '03078_E_Illegal order of record elem','ents'#000+
+ '03077_E_Expression must be',' destructor call'#000+
+ '03078_E_Illegal order of record elements'#000+
'03079_E_Expression type must be class or record type, got $1'#000+
'03080_E_Procedures cannot return a value'#000+
'03081_E_constructors, destructors and class operators must be methods'#000+
- '03082_E_Operator is not overloaded'#000+
- '03083_E_Impossible to overlo','ad assignment for equal types'#000+
+ '03082_E_Op','erator is not overloaded'#000+
+ '03083_E_Impossible to overload assignment for equal types'#000+
'03084_E_Impossible operator overload'#000+
'03085_E_Re-raise isn'#039't possible there'#000+
'03086_E_The extended syntax of new or dispose isn'#039't allowed for a '+
'class'#000+
- '03088_E_Procedure overloading is switched off'#000+
- '03089_E_It is not',' possible to overload this operator. Related overlo'+
- 'adable operators (if any) are: $1'#000+
+ '03088_E_Pr','ocedure overloading is switched off'#000+
+ '03089_E_It is not possible to overload this operator. Related overload'+
+ 'able operators (if any) are: $1'#000+
'03090_E_Comparative operator must return a boolean value'#000+
- '03091_E_Only virtual methods can be abstract'#000+
+ '03091_E_Only virtual methods can be abstract'#000,
'03092_F_Use of unsupported feature!'#000+
- '03093_E_The mix o','f different kind of objects (class, object, interfa'+
- 'ce, etc) isn'#039't allowed'#000+
+ '03093_E_The mix of different kind of objects (class, object, interface'+
+ ', etc) isn'#039't allowed'#000+
'03094_W_Unknown procedure directive had to be ignored: "$1"'#000+
'03095_E_$1 can be associated with only one variable'#000+
- '03096_E_absolute can only be associated with a var or ','const'#000+
+ '0','3096_E_absolute can only be associated with a var or const'#000+
'03097_E_Only one variable can be initialized'#000+
'03098_E_Abstract methods shouldn'#039't have any definition (with funct'+
'ion body)'#000+
- '03099_E_This overloaded function cannot be local (must be exported)'#000+
- '03100_W_Virtual methods are used without a co','nstructor in "$1"'#000+
+ '03099_E_This overloaded function cannot be local (must be ex','ported)'#000+
+ '03100_W_Virtual methods are used without a constructor in "$1"'#000+
'03101_CL_Macro defined: $1'#000+
'03102_CL_Macro undefined: $1'#000+
'03103_CL_Macro $1 set to $2'#000+
'03104_I_Compiling $1'#000+
'03105_UL_Parsing interface of unit $1'#000+
- '03106_UL_Parsing implementation of $1'#000+
- '03107_DL_Compiling $1 for the second time',#000+
+ '03106_UL_Parsing implement','ation of $1'#000+
+ '03107_DL_Compiling $1 for the second time'#000+
'03109_E_No property found to override'#000+
'03110_E_Only one default property is allowed'#000+
'03111_E_The default property must be an array property'#000+
- '03112_E_Virtual constructors are only supported in class object model'#000+
- '03113_E_No default property ava','ilable'#000+
+ '03112_E_Virtual constructors are only supported ','in class object mode'+
+ 'l'#000+
+ '03113_E_No default property available'#000+
'03114_E_The class cannot have a published section, use the {$M+} switc'+
'h'#000+
'03115_E_Forward declaration of class "$1" must be resolved here to use'+
' the class as ancestor'#000+
- '03116_E_Local operators not supported'#000+
- '03117_E_Procedure directive "$','1" not allowed in interface section'#000+
+ '03116_E_Local o','perators not supported'#000+
+ '03117_E_Procedure directive "$1" not allowed in interface section'#000+
'03118_E_Procedure directive "$1" not allowed in implementation section'+
#000+
'03119_E_Procedure directive "$1" not allowed in procvar declaration'#000+
- '03120_E_Function is already declared Public/Forward "$1"'#000+
- '03121_E_','Can not use both EXPORT and EXTERNAL'#000+
+ '03120_E_Func','tion is already declared Public/Forward "$1"'#000+
+ '03121_E_Can not use both EXPORT and EXTERNAL'#000+
'03123_H_"$1" not yet supported inside inline procedure/function'#000+
'03124_H_Inlining disabled'#000+
'03125_I_Writing Browser log $1'#000+
- '03126_H_may be pointer dereference is missing'#000+
- '03127_F_Selected assembler reader no','t supported'#000+
+ '03126_H_may be pointer derefe','rence is missing'#000+
+ '03127_F_Selected assembler reader not supported'#000+
'03128_E_Procedure directive "$1" has conflicts with other directives'#000+
'03129_E_Calling convention doesn'#039't match forward'#000+
'03131_E_Property cannot have a default value'#000+
- '03132_E_The default value of a property must be constant'#000+
- '03133_E_','Symbol cannot be published, can be only a class'#000+
+ '03132_E_The ','default value of a property must be constant'#000+
+ '03133_E_Symbol cannot be published, can be only a class'#000+
'03134_E_This kind of property cannot be published'#000+
'03136_E_An import name is required'#000+
'03138_E_Division by zero'#000+
- '03139_E_Invalid floating point operation'#000+
- '03140_E_Upper bound of range is less than',' lower bound'#000+
+ '03139_E_Invalid floating poin','t operation'#000+
+ '03140_E_Upper bound of range is less than lower bound'#000+
'03141_W_string "$1" is longer than "$2"'#000+
'03142_E_string length is larger than array of char length'#000+
'03143_E_Illegal expression after message directive'#000+
- '03144_E_Message handlers can take only one call by ref. parameter'#000+
- '03145_E_Dupl','icate message label: "$1"'#000+
+ '03144_E_Message handlers ','can take only one call by ref. parameter'#000+
+ '03145_E_Duplicate message label: "$1"'#000+
'03146_E_Self can only be an explicit parameter in methods which are me'+
'ssage handlers'#000+
'03147_E_Threadvars can be only static or global'#000+
- '03148_F_Direct assembler not supported for binary output format'#000+
- '03149_W_Don'#039't loa','d OBJPAS unit manually, use \{\$mode objfpc\} o'+
- 'r \{\$mode delphi\} instead'#000+
+ '03148_F_Direct assembler not',' supported for binary output format'#000+
+ '03149_W_Don'#039't load OBJPAS unit manually, use \{\$mode objfpc\} or '+
+ '\{\$mode delphi\} instead'#000+
'03150_E_OVERRIDE cannot be used in objects'#000+
- '03151_E_Data types which require initialization/finalization cannot be'+
- ' used in variant records'#000+
- '03152_E_Resourcestrings can',' be only static or global'#000+
+ '03151_E_Data types which require initialization/finalization cannot b',
+ 'e used in variant records'#000+
+ '03152_E_Resourcestrings can be only static or global'#000+
'03153_E_Exit with argument cannot be used here'#000+
'03154_E_The type of the storage symbol must be boolean'#000+
'03155_E_This symbol isn'#039't allowed as storage symbol'#000+
- '03156_E_Only classes which are compiled in $M+ mode can be p','ublished'+
+ '03156_E','_Only classes which are compiled in $M+ mode can be published'+
#000+
'03157_E_Procedure directive expected'#000+
'03158_E_The value for a property index must be of an ordinal type'#000+
'03159_E_Procedure name too short to be exported'#000+
- '03160_E_No DEFFILE entry can be generated for unit global vars'#000+
- '03161_E_Compile w','ithout -WD option'#000+
+ '03160_E_No DEFFILE entry ca','n be generated for unit global vars'#000+
+ '03161_E_Compile without -WD option'#000+
'03162_F_You need ObjFpc (-S2) or Delphi (-Sd) mode to compile this mod'+
'ule'#000+
'03163_E_Can not export with index under $1'#000+
- '03164_E_Exporting of variables is not supported under $1'#000+
+ '03164_E_Exporting of variables is not supported unde','r $1'#000+
'03165_E_Improper GUID syntax'#000+
- '03168_W_Procedure n','amed "$1" not found that is suitable for implemen'+
- 'ting the $2.$3'#000+
+ '03168_W_Procedure named "$1" not found that is suitable for implementi'+
+ 'ng the $2.$3'#000+
'03169_E_interface identifier expected'#000+
'03170_E_Type "$1" cannot be used as array index type'#000+
- '03171_E_Con- and destructors are not allowed in interfaces'#000+
- '03172_E_Access specifiers ','cannot be used in INTERFACEs and OBJCPROTO'+
- 'COLs'#000+
+ '03171_E_Con- and destructors are',' not allowed in interfaces'#000+
+ '03172_E_Access specifiers cannot be used in INTERFACEs and OBJCPROTOCO'+
+ 'Ls'#000+
'03173_E_An interface, helper or Objective-C protocol or category canno'+
't contain fields'#000+
'03174_E_Can not declare local procedure as EXTERNAL'#000+
- '03175_W_Some fields coming before "$1" were not initia','lized'#000+
+ '0','3175_W_Some fields coming before "$1" were not initialized'#000+
'03176_E_Some fields coming before "$1" were not initialized'#000+
'03177_W_Some fields coming after "$1" were not initialized'#000+
- '03178_E_VarArgs directive (or '#039'...'#039' in MacPas) without CDecl/C'+
+ '03178_E_VarArgs directive (or '#039'...'#039' in MacPas) without CDecl/C',
'PPDecl/MWPascal and External'#000+
- '03179_E_Self must be a n','ormal (call-by-value) parameter'#000+
+ '03179_E_Self must be a normal (call-by-value) parameter'#000+
'03180_E_Interface "$1" has no interface identification'#000+
'03181_E_Unknown class field or method identifier "$1"'#000+
- '03182_W_Overriding calling convention "$1" with "$2"'#000+
- '03183_E_Typed constants of the type "procedure',' of object" can only b'+
- 'e initialized with NIL'#000+
+ '03182_W_Overriding calling convention "$1" wit','h "$2"'#000+
+ '03183_E_Typed constants of the type "procedure of object" can only be '+
+ 'initialized with NIL'#000+
'03184_E_Default value can only be assigned to one parameter'#000+
'03185_E_Default parameter required for "$1"'#000+
'03186_W_Use of unsupported feature!'#000+
- '03187_H_C arrays are passed by reference'#000+
- '03188_E_C arra','y of const must be the last argument'#000+
+ '03','187_H_C arrays are passed by reference'#000+
+ '03188_E_C array of const must be the last argument'#000+
'03189_H_Type "$1" redefinition'#000+
'03190_W_cdecl'#039'ared functions have no high parameter'#000+
'03191_W_cdecl'#039'ared functions do not support open strings'#000+
- '03192_E_Cannot initialize variables declared as threadvar'#000+
- '03193','_E_Message directive is only allowed in Classes'#000+
+ '03192_E_Ca','nnot initialize variables declared as threadvar'#000+
+ '03193_E_Message directive is only allowed in Classes'#000+
'03194_E_Procedure or Function expected'#000+
'03195_W_Calling convention directive ignored: "$1"'#000+
'03196_E_REINTRODUCE cannot be used in objects'#000+
- '03197_E_Each argument must have its own location'#000+
- '03198_E','_Each argument must have an explicit location'#000+
+ '031','97_E_Each argument must have its own location'#000+
+ '03198_E_Each argument must have an explicit location'#000+
'03199_E_Unknown argument location'#000+
'03200_E_32 Bit-Integer or pointer variable expected'#000+
- '03201_E_Goto statements are not allowed between different procedures'#000+
- '03202_F_Procedure too complex, it requi','res too many registers'#000+
+ '03201_E_Goto statements are not allowed between differe','nt procedures'+
+ #000+
+ '03202_F_Procedure too complex, it requires too many registers'#000+
'03203_E_Illegal expression'#000+
'03204_E_Invalid integer expression'#000+
'03205_E_Illegal qualifier'#000+
'03206_E_High range limit < low range limit'#000+
- '03207_E_Exit'#039's parameter must be the name of the procedure it is u'+
- 'sed in or of a surro','unding procedure'#000+
+ '03207_E_Exit'#039's parameter must be ','the name of the procedure it is'+
+ ' used in or of a surrounding procedure'#000+
'03208_E_Illegal assignment to for-loop variable "$1"'#000+
'03209_E_Can not declare local variable as EXTERNAL'#000+
'03210_E_Procedure is already declared EXTERNAL'#000+
- '03211_W_Implicit uses of Variants unit'#000+
- '03212_E_Class and static methods ','cannot be used in INTERFACES'#000+
+ '03211_W_Implicit us','es of Variants unit'#000+
+ '03212_E_Class and static methods cannot be used in INTERFACES'#000+
'03213_E_Overflow in arithmetic operation'#000+
'03214_E_Protected or private expected'#000+
'03215_E_SLICE cannot be used outside of parameter list'#000+
- '03216_E_A DISPINTERFACE cannot have a parent class'#000+
- '03217_E_A DISPINTERFACE ne','eds a guid'#000+
+ '03216_E_A DISPINTERFACE ','cannot have a parent class'#000+
+ '03217_E_A DISPINTERFACE needs a guid'#000+
'03218_W_Overridden methods must have a related return type. This code '+
'may crash, it depends on a Delphi parser bug ("$2" is overridden by "$'+
'1" which has another return type)'#000+
- '03219_E_Dispatch IDs must be ordinal constants'#000+
- '03220_E_','The range of the array is too large'#000+
+ '03','219_E_Dispatch IDs must be ordinal constants'#000+
+ '03220_E_The range of the array is too large'#000+
'03221_E_The address cannot be taken of bit packed array elements and r'+
'ecord fields'#000+
'03222_E_Dynamic arrays cannot be packed'#000+
- '03223_E_Bit packed array elements and record fields cannot be used as '+
- 'loop variab','les'#000+
+ '03223_E_Bit packed array ele','ments and record fields cannot be used a'+
+ 's loop variables'#000+
'03224_E_VAR, TYPE and CONST are allowed only in records, objects and c'+
'lasses'#000+
'03225_E_This type cannot be a generic'#000+
'03226_W_Don'#039't load LINEINFO unit manually, Use the -gl compiler sw'+
- 'itch instead'#000+
- '03227_E_No function result type specified ','for function "$1"'#000+
+ 'it','ch instead'#000+
+ '03227_E_No function result type specified for function "$1"'#000+
'03228_E_Specialization is only supported for generic types'#000+
'03229_E_Generics cannot be used as parameters when specializing generi'+
'cs'#000+
- '03230_E_Constants of objects containing a VMT are not allowed'#000+
- '03231_E_Taking the address o','f labels defined outside the current sco'+
- 'pe isn'#039't allowed'#000+
+ '03230_E_Constants of objects containi','ng a VMT are not allowed'#000+
+ '03231_E_Taking the address of labels defined outside the current scope'+
+ ' isn'#039't allowed'#000+
'03233_E_Cannot initialize variables declared as external'#000+
'03234_E_Illegal function result type'#000+
- '03235_E_No common type possible between "$1" and "$2"'#000+
- '03236_E_Generics without specializa','tion cannot be used as a type for'+
- ' a variable'#000+
+ '03235_E_No common type possible betw','een "$1" and "$2"'#000+
+ '03236_E_Generics without specialization cannot be used as a type for a'+
+ ' variable'#000+
'03237_W_Register list is ignored for pure assembler routines'#000+
'03238_E_Implements property must have class or interface type'#000+
- '03239_E_Implements-property must implement interface of correct type, '+
- 'fo','und "$1" expected "$2"'#000+
+ '03239_E_Implements-','property must implement interface of correct type'+
+ ', found "$1" expected "$2"'#000+
'03240_E_Implements-property must have read specifier'#000+
'03241_E_Implements-property must not have write-specifier'#000+
- '03242_E_Implements-property must not have stored-specifier'#000+
- '03243_E_Implements-property used on unimplement','ed interface: "$1"'#000+
+ '03242_E_Implements-property must not have stored-spec','ifier'#000+
+ '03243_E_Implements-property used on unimplemented interface: "$1"'#000+
'03244_E_Floating point not supported for this target'#000+
'03245_E_Class "$1" does not implement interface "$2"'#000+
'03246_E_Type used by implements must be an interface'#000+
- '03247_E_Variables cannot be exported with a different name on ','this t'+
+ '03247_E_V','ariables cannot be exported with a different name on this t'+
'arget, add the name to the declaration using the "export" directive (v'+
'ariable name: $1, declared export name: $2)'#000+
- '03248_E_Weak external symbols are not supported for the current target'+
- #000+
+ '03248_E_Weak external symbols are not supported for the current tar','g'+
+ 'et'#000+
'03249_E_Forward type definition does not match'#000+
- '03','250_N_Virtual method "$1" has a lower visibility ($2) than parent '+
- 'class $3 ($4)'#000+
+ '03250_N_Virtual method "$1" has a lower visibility ($2) than parent cl'+
+ 'ass $3 ($4)'#000+
'03251_E_Fields cannot appear after a method or property definition, st'+
'art a new visibility section first'#000+
- '03252_E_Parameters or result types cannot contain local',' type definit'+
+ '03','252_E_Parameters or result types cannot contain local type definit'+
'ions. Use a separate type definition in a type block.'#000+
'03253_E_ABSTRACT and SEALED conflict'#000+
'03254_E_Cannot create a descendant of the sealed class "$1"'#000+
- '03255_E_SEALED class cannot have an ABSTRACT method'#000+
- '03256_E_Only virtual met','hods can be final'#000+
+ '03255_E_SEALED class ca','nnot have an ABSTRACT method'#000+
+ '03256_E_Only virtual methods can be final'#000+
'03257_E_Final method cannot be overridden: "$1"'#000+
'03258_E_Only one message can be used per method.'#000+
'03259_E_Invalid enumerator identifier: "$1"'#000+
- '03260_E_Enumerator identifier required'#000+
- '03261_E_Enumerator MoveNext pattern method',' is not valid. Method must'+
- ' be a function with the Boolean return type and no required arguments.'+
- #000+
+ '03260_E_Enumerator identifie','r required'#000+
+ '03261_E_Enumerator MoveNext pattern method is not valid. Method must b'+
+ 'e a function with the Boolean return type and no required arguments.'#000+
'03262_E_Enumerator Current pattern property is not valid. Property mus'+
't have a getter.'#000+
- '03263_E_Only one enumerator MoveNext method is allowed p','er class/obj'+
+ '032','63_E_Only one enumerator MoveNext method is allowed per class/obj'+
'ect'#000+
'03264_E_Only one enumerator Current property is allowed per class/obje'+
'ct'#000+
'03265_E_For in loop cannot be used for the type "$1"'#000+
- '03266_E_Objective-C messages require their Objective-C selector name t'+
- 'o be specified using the "me','ssage" directive.'#000+
+ '03266_E_Objective-C messages require their Ob','jective-C selector name'+
+ ' to be specified using the "message" directive.'#000+
'03267_E_Objective-C does not have formal constructors nor destructors.'+
' Use the alloc, initXXX and dealloc messages.'#000+
- '03268_E_Message name is too long (max. 255 characters)'#000+
- '03269_E_Objective-C message symbol name for "$1" is',' too long'#000+
+ '03268_E_Message name is too long (max. 255 characters',')'#000+
+ '03269_E_Objective-C message symbol name for "$1" is too long'#000+
'03270_H_Defining a new Objective-C root class. To derive from another '+
'root class (e.g., NSObject), specify it as the parent class.'#000+
- '03271_E_Objective-C classes cannot have published sections.'#000+
- '03272_F_This module requires an Objecti','ve-C mode switch to be compil'+
- 'ed'#000+
+ '03271_E_Objective-C classes cannot have publis','hed sections.'#000+
+ '03272_F_This module requires an Objective-C mode switch to be compiled'+
+ #000+
'03273_E_Inherited methods can only be overridden in Objective-C and Ja'+
'va, add "override" (inherited method defined in $1)'#000+
- '03274_H_Inherited methods can only be overridden in Objective-C and Ja'+
- 'va, add "overrid','e" (inherited method defined in $1).'#000+
+ '03274_H_Inherited methods can onl','y be overridden in Objective-C and '+
+ 'Java, add "override" (inherited method defined in $1).'#000+
'03275_E_Message name "$1" in inherited class is different from message'+
' name "$2" in current class.'#000+
- '03276_E_It is not yet possible to make unique copies of Objective-C or'+
- ' Java types'#000+
- '03277_E_Objective-C ca','tegories and Object Pascal class helpers canno'+
- 't be used as types'#000+
+ '03276_E_It is not yet possible to make unique copie','s of Objective-C '+
+ 'or Java types'#000+
+ '03277_E_Objective-C categories and Object Pascal class helpers cannot '+
+ 'be used as types'#000+
'03278_E_Categories do not override, but replace methods. Use "reintrod'+
'uce" instead.'#000+
- '03279_E_Replaced methods can only be reintroduced in Objective-C, add '+
- '"reintroduce" (replac','ed method defined in $1).'#000+
+ '03279_E_Replaced methods can only be r','eintroduced in Objective-C, ad'+
+ 'd "reintroduce" (replaced method defined in $1).'#000+
'03280_H_Replaced methods can only be reintroduced in Objective-C, add '+
'"reintroduce" (replaced method defined in $1).'#000+
- '03281_E_Getter for implements interface must use the target'#039's defa'+
- 'ult calling convention.'#000+
- '03282_E','_Typed files cannot contain reference-counted types.'#000+
+ '03281_E_Getter for implements interface must',' use the target'#039's de'+
+ 'fault calling convention.'#000+
+ '03282_E_Typed files cannot contain reference-counted types.'#000+
'03283_E_Operator is not overloaded: $2 "$1"'#000+
'03284_E_Operator is not overloaded: "$1" $2 "$3"'#000+
- '03285_E_Expected another $1 array elements'#000+
- '03286_E_String constant too long while ansistrings ','are disabled'#000+
+ '03285_E_Expected another $1 array element','s'#000+
+ '03286_E_String constant too long while ansistrings are disabled'#000+
'03287_E_Type cannot be used as univ parameter because its size is unkn'+
'own at compile time: "$1"'#000+
'03288_E_Only one class constructor can be declared in class: "$1"'#000+
- '03289_E_Only one class destructor can be declared in class: "$1"'#000,
+ '03289_E_Only',' one class destructor can be declared in class: "$1"'#000+
'03290_E_Class constructors cannot have parameters'#000+
'03291_E_Class destructors cannot have parameters'#000+
'03292_F_This construct requires the \{\$modeswitch objectivec1\} mode '+
- 'switch to be active'#000+
- '03293_E_Unicodechar/string constants cannot be conv','erted to ansi/sho'+
- 'rtstring at compile-time'#000+
+ 'switch to be activ','e'#000+
+ '03293_E_Unicodechar/string constants cannot be converted to ansi/short'+
+ 'string at compile-time'#000+
'03294_E_For-in Objective-Pascal loops require \{\$modeswitch Objective'+
'C2\} to be active'#000+
- '03295_E_The compiler cannot find the NSFastEnumerationProtocol or NSFa'+
- 'stEnumerationState type in the CocoaAll ','unit'#000+
+ '03295_E_The compiler cannot find the NSFastEnumerationPro','tocol or NS'+
+ 'FastEnumerationState type in the CocoaAll unit'#000+
'03296_E_Typed constants of the type '#039'procedure is nested'#039' can '+
'only be initialized with NIL and global procedures/functions'#000+
- '03297_F_Declaration of generic class inside another generic class is n'+
- 'ot allowed'#000+
- '03298_E_Forward declaration "$1','" must be resolved before a class can'+
- ' conform to or implement it'#000+
+ '03297_F_Declaration of generic class inside another generic',' class is'+
+ ' not allowed'#000+
+ '03298_E_Forward declaration "$1" must be resolved before a class can c'+
+ 'onform to or implement it'#000+
'03299_E_Record types cannot have published sections'#000+
'03300_E_Destructors are not allowed in records or helpers'#000+
- '03301_E_Class methods must be static in records'#000+
- '03302_E_Parameter','less constructors are not allowed in records or rec'+
- 'ord/type helpers'#000+
+ '03301_E_Clas','s methods must be static in records'#000+
+ '03302_E_Parameterless constructors are not allowed in records or recor'+
+ 'd/type helpers'#000+
'03303_E_Either the result or at least one parameter must be of type "$'+
'1"'#000+
- '03304_E_Type parameters may require initialization/finalization - cann'+
- 'ot be used in variant records',#000+
+ '03304_E_Type parameters may require initializa','tion/finalization - ca'+
+ 'nnot be used in variant records'#000+
'03305_E_Variables being declared as external cannot be in a custom sec'+
'tion'#000+
'03306_E_Non-static and non-global variables cannot have a section dire'+
'ctive'#000+
- '03307_E_"$1" is not allowed in helper types'#000+
- '03308_E_Class constructors are not allowed i','n helpers'#000+
+ '03307_E_"$1" is not allowed in help','er types'#000+
+ '03308_E_Class constructors are not allowed in helpers'#000+
'03309_E_The use of "inherited" is not allowed in a record'#000+
'03310_E_Type declarations are not allowed in local or anonymous record'+
's'#000+
- '03311_E_Duplicate implements clause for interface "$1"'#000+
- '03312_E_Interface "$1" cannot be delegated by',' "$2", it already has m'+
- 'ethod resolutions'#000+
+ '03311_E_Duplicate implements clause for interfa','ce "$1"'#000+
+ '03312_E_Interface "$1" cannot be delegated by "$2", it already has met'+
+ 'hod resolutions'#000+
'03313_E_Interface "$1" cannot have method resolutions, "$2" already de'+
'legates it'#000+
'03314_E_Invalid codepage'#000+
- '03315_E_Only fields (var-sections) and constants can be final in objec'+
- 't types'#000+
- '03316_E_Final f','ields are currently only supported for external class'+
- 'es'#000+
+ '03315_E_Only fields (var-sections) and c','onstants can be final in obj'+
+ 'ect types'#000+
+ '03316_E_Final fields are currently only supported for external classes'+
+ #000+
'03317_E_Typed constants are not allowed here, only formal constants ar'+
'e'#000+
- '03318_E_Constructors are not automatically inherited in the JVM; expli'+
- 'citly add a constructor that calls the inh','erited one if you need it'#000+
+ '03318_E_Constructors are not automatically inherited in the',' JVM; exp'+
+ 'licitly add a constructor that calls the inherited one if you need it'#000+
'03319_D_Parsing internally generated code: $1'#000+
'03320_E_This language feature is not supported on managed VM targets'#000+
- '03321_E_Calling a virtual constructor for the current instance inside '+
- 'another constructor is not po','ssible on the JVM target'#000+
+ '03321_E_Calling a virtual constructor for the ','current instance insid'+
+ 'e another constructor is not possible on the JVM target'#000+
'03322_E_Overriding method "$1" cannot have a lower visibility ($2) tha'+
'n in parent class $3 ($4)'#000+
- '03323_E_Procedure/Function declared with call option NOSTACKFRAME but '+
- 'without ASSEMBLER'#000+
- '03324_E_Procedure/Function decl','ared with call option NOSTACKFRAME bu'+
- 't local stack size is $1'#000+
+ '03323_E_Procedure/Function declared with call option NOSTACKFRAME ','bu'+
+ 't without ASSEMBLER'#000+
+ '03324_E_Procedure/Function declared with call option NOSTACKFRAME but '+
+ 'local stack size is $1'#000+
'03325_E_Cannot generate property getter/setter $1 because its name cla'+
'shes with existing identifier $2'#000+
- '03326_W_Automatically generated property getter/setter $1 overrides th'+
- 'e sam','e-named getter/setter in class $2'#000+
+ '03326_W_Automatically ','generated property getter/setter $1 overrides '+
+ 'the same-named getter/setter in class $2'#000+
'03327_W_Case mismatch between declared property getter/setter $1 and a'+
'utomatically constructed name $2, not changing declared name'#000+
- '03328_E_Constants declarations are not allowed in local or anonymous r'+
- 'ecord','s'#000+
+ '03328_E_Constants decl','arations are not allowed in local or anonymous'+
+ ' records'#000+
'03329_E_Method declarations are not allowed in local or anonymous reco'+
'rds'#000+
'03330_E_Property declarations are not allowed in local or anonymous re'+
'cords'#000+
- '03331_E_Class memeber declarations are not allowed in local or anonymo'+
- 'us records'#000+
- '03332_E','_Visibility section "$1" not allowed in records'#000+
+ '03331_E_Class memeber declarations ','are not allowed in local or anony'+
+ 'mous records'#000+
+ '03332_E_Visibility section "$1" not allowed in records'#000+
'03333_E_Directive "$1" not allowed here'#000+
'03334_E_Assembler blocks not allowed inside generics'#000+
- '03335_E_Properties can be only static, global or inside structured typ'+
- 'es'#000+
+ '03335_E_Properties can be only static, global ','or inside structured t'+
+ 'ypes'#000+
+ '03336_E_Overloaded routines have the same mangled name'#000+
'04000_E_Type mismatch'#000+
- '0400','1_E_Incompatible types: got "$1" expected "$2"'#000+
+ '04001_E_Incompatible types: got "$1" expected "$2"'#000+
'04002_E_Type mismatch between "$1" and "$2"'#000+
'04003_E_Type identifier expected'#000+
- '04004_E_Variable identifier expected'#000+
+ '04004_E_','Variable identifier expected'#000+
'04005_E_Integer expression expected, but got "$1"'#000+
- '04006_E_Boolean expression ex','pected, but got "$1"'#000+
+ '04006_E_Boolean expression expected, but got "$1"'#000+
'04007_E_Ordinal expression expected'#000+
'04008_E_pointer type expected, but got "$1"'#000+
- '04009_E_class type expected, but got "$1"'#000+
+ '04009_E_class type expected, bu','t got "$1"'#000+
'04011_E_Can'#039't evaluate constant expression'#000+
'04012_E_Set elements are not compatible'#000+
- '04013_E_Operat','ion not implemented for sets'#000+
+ '04013_E_Operation not implemented for sets'#000+
'04014_W_Automatic type conversion from floating type to COMP which is '+
'an integer type'#000+
- '04015_H_use DIV instead to get an integer result'#000+
+ '04015_H_use DIV i','nstead to get an integer result'#000+
'04016_E_String types have to match exactly in $V+ mode'#000+
- '04017_E_succ or pred ','on enums with assignments not possible'#000+
+ '04017_E_succ or pred on enums with assignments not possible'#000+
'04018_E_Can'#039't read or write variables of this type'#000+
- '04019_E_Can'#039't use readln or writeln on typed file'#000+
+ '04019_E_Can'#039't use readln or writeln on typ','ed file'#000+
'04020_E_Can'#039't use read or write on untyped file.'#000+
'04021_E_Type conflict between set elements'#000+
- '04022_W_','lo/hi(dword/qword) returns the upper/lower word/dword'#000+
+ '04022_W_lo/hi(dword/qword) returns the upper/lower word/dword'#000+
'04023_E_Integer or real expression expected'#000+
- '04024_E_Wrong type "$1" in array constructor'#000+
+ '04024_E_Wrong type "$1" in array c','onstructor'#000+
'04025_E_Incompatible type for arg no. $1: Got "$2", expected "$3"'#000+
- '04026_E_Method (variable) and P','rocedure (variable) are not compatibl'+
- 'e'#000+
+ '04026_E_Method (variable) and Procedure (variable) are not compatible'#000+
'04027_E_Illegal constant passed to internal math function'#000+
- '04028_E_Can'#039't take the address of constant expressions'#000+
+ '04028_E_Can'#039't take the address of c','onstant expressions'#000+
'04029_E_Argument cannot be assigned to'#000+
- '04030_E_Can'#039't assign local procedure/function to ','procedure varia'+
- 'ble'#000+
+ '04030_E_Can'#039't assign local procedure/function to procedure variabl'+
+ 'e'#000+
'04031_E_Can'#039't assign values to an address'#000+
'04032_E_Can'#039't assign values to const variable'#000+
- '04033_E_Array type required'#000+
+ '04033_E_Array type requir','ed'#000+
'04034_E_interface type expected, but got "$1"'#000+
- '04035_H_Mixing signed expressions and longwords gives a 64b','it result'+
- #000+
+ '04035_H_Mixing signed expressions and longwords gives a 64bit result'#000+
'04036_W_Mixing signed expressions and cardinals here may cause a range'+
' check error'#000+
- '04037_E_Typecast has different size ($1 -> $2) in assignment'#000+
+ '04037_E_Typecast has different size ($1',' -> $2) in assignment'#000+
'04038_E_enums with assignments cannot be used as array index'#000+
- '04039_E_Class or Object t','ypes "$1" and "$2" are not related'#000+
+ '04039_E_Class or Object types "$1" and "$2" are not related'#000+
'04040_W_Class types "$1" and "$2" are not related'#000+
- '04041_E_Class or interface type expected, but got "$1"'#000+
+ '04041_E_Class or interface type expected, but g','ot "$1"'#000+
'04042_E_Type "$1" is not completely defined'#000+
- '04043_W_String literal has more characters than short st','ring length'#000+
+ '04043_W_String literal has more characters than short string length'#000+
'04044_W_Comparison might be always false due to range of constant and '+
'expression'#000+
- '04045_W_Comparison might be always true due to range of constant and e'+
- 'xpression'#000+
+ '04045_W_Comparison might be always true',' due to range of constant and'+
+ ' expression'#000+
'04046_W_Constructing a class "$1" with abstract method "$2"'#000+
- '04047_H','_The left operand of the IN operator should be byte sized'#000+
+ '04047_H_The left operand of the IN operator should be byte sized'#000+
'04048_W_Type size mismatch, possible loss of data / range check error'#000+
- '04049_H_Type size mismatch, possible loss of data / range check error'#000+
- '04050_E_The address of an abstract method ','cannot be taken'#000+
+ '0404','9_H_Type size mismatch, possible loss of data / range check erro'+
+ 'r'#000+
+ '04050_E_The address of an abstract method cannot be taken'#000+
'04051_E_Assignments to formal parameters and open arrays are not possi'+
'ble'#000+
'04052_E_Constant Expression expected'#000+
- '04053_E_Operation "$1" not supported for types "$2" and "$3"'#000+
+ '04053','_E_Operation "$1" not supported for types "$2" and "$3"'#000+
'04054_E_Illegal type conversion: "$1" to "$2"'#000+
- '04055_','H_Conversion between ordinals and pointers is not portable'#000+
+ '04055_H_Conversion between ordinals and pointers is not portable'#000+
'04056_W_Conversion between ordinals and pointers is not portable'#000+
- '04057_E_Can'#039't determine which overloaded function to call'#000+
+ '04057_E_','Can'#039't determine which overloaded function to call'#000+
'04058_E_Illegal counter variable'#000+
- '04059_W_Converting consta','nt real value to double for C variable argu'+
- 'ment, add explicit typecast to prevent this.'#000+
- '04060_E_Class or COM interface type expected, but got "$1"'#000+
+ '04059_W_Converting constant real value to double for C variable argume'+
+ 'nt, add explicit typecast to prevent this.'#000+
+ '04060_E_Class or COM interface type expected',', but got "$1"'#000+
'04061_E_Constant packed arrays are not yet supported'#000+
- '04062_E_Incompatible type for arg no. $1',': Got "$2" expected "(Bit)Pa'+
- 'cked Array"'#000+
+ '04062_E_Incompatible type for arg no. $1: Got "$2" expected "(Bit)Pack'+
+ 'ed Array"'#000+
'04063_E_Incompatible type for arg no. $1: Got "$2" expected "(not pack'+
'ed) Array"'#000+
- '04064_E_Elements of packed arrays cannot be of a type which need to be'+
- ' initialised'#000+
- '04065_E_Constant packed records and ','objects are not yet supported'#000+
+ '04064_E_Ele','ments of packed arrays cannot be of a type which need to '+
+ 'be initialised'#000+
+ '04065_E_Constant packed records and objects are not yet supported'#000+
'04066_W_Arithmetic "$1" on untyped pointer is unportable to {$T+}, sug'+
'gest typecast'#000+
- '04076_E_Can'#039't take address of a subroutine marked as local'#000+
+ '04076_E_Can'#039't take',' address of a subroutine marked as local'#000+
'04077_E_Can'#039't export subroutine marked as local from a unit'#000+
- '04078_E','_Type is not automatable: "$1"'#000+
+ '04078_E_Type is not automatable: "$1"'#000+
'04079_H_Converting the operands to "$1" before doing the add could pre'+
'vent overflow errors.'#000+
- '04080_H_Converting the operands to "$1" before doing the subtract coul'+
- 'd prevent overflow errors.'#000+
- '04081_H_Converting t','he operands to "$1" before doing the multiply co'+
+ '04080_H_C','onverting the operands to "$1" before doing the subtract co'+
'uld prevent overflow errors.'#000+
- '04082_W_Converting pointers to signed integers may result in wrong com'+
- 'parison results and range errors, use an unsigned type instead.'#000+
- '04083_E_Interface type $1 has',' no valid GUID'#000+
+ '04081_H_Converting the operands to "$1" before doing the multiply coul'+
+ 'd prevent overflow errors.'#000+
+ '04082_W_Converting pointers to signed integers may resu','lt in wrong c'+
+ 'omparison results and range errors, use an unsigned type instead.'#000+
+ '04083_E_Interface type $1 has no valid GUID'#000+
'04084_E_Invalid selector name "$1"'#000+
'04085_E_Expected Objective-C method, but got $1'#000+
- '04086_E_Expected Objective-C method or constant method name'#000+
+ '04086_E_Expected Objective-C metho','d or constant method name'#000+
'04087_E_No type info available for this type'#000+
- '04088_E_Ordinal or string expression ','expected'#000+
+ '04088_E_Ordinal or string expression expected'#000+
'04089_E_String expression expected'#000+
'04090_W_Converting 0 to NIL'#000+
'04091_E_Objective-C protocol type expected, but got "$1"'#000+
- '04092_E_The type "$1" is not supported for interaction with the Object'+
- 'ive-C runtime.'#000+
- '04093_E_Class or objcclass',' type expected, but got "$1"'#000+
+ '040','92_E_The type "$1" is not supported for interaction with the Obje'+
+ 'ctive-C runtime.'#000+
+ '04093_E_Class or objcclass type expected, but got "$1"'#000+
'04094_E_Objcclass type expected'#000+
'04095_W_Coerced univ parameter type in procedural variable may cause c'+
- 'rash or memory corruption: $1 to $2'#000+
+ 'r','ash or memory corruption: $1 to $2'#000+
'04096_E_Type parameters of specializations of generics cannot referenc'+
- 'e t','he currently specialized type'#000+
+ 'e the currently specialized type'#000+
'04097_E_Type parameters are not allowed on non-generic class/record/ob'+
'ject procedure or function'#000+
- '04098_E_Generic declaration of "$1" differs from previous declaration'#000+
+ '04098','_E_Generic declaration of "$1" differs from previous declaratio'+
+ 'n'#000+
'04099_E_Helper type expected'#000+
- '04100_E_Record',' type expected'#000+
+ '04100_E_Record type expected'#000+
'04101_E_Derived class helper must extend a subclass of "$1" or the cla'+
'ss itself'#000+
- '04102_E_Derived record or type helper must extend "$1"'#000+
+ '04102_E_Derived record or type helper',' must extend "$1"'#000+
'04103_E_Invalid assignment, procedures return no value'#000+
- '04104_W_Implicit string type conver','sion from "$1" to "$2"'#000+
+ '04104_W_Implicit string type conversion from "$1" to "$2"'#000+
'04105_W_Implicit string type conversion with potential data loss from '+
'"$1" to "$2"'#000+
- '04106_-W_Explicit string typecast from "$1" to "$2"'#000+
+ '04106_-W_Explicit string t','ypecast from "$1" to "$2"'#000+
'04107_-W_Explicit string typecast with potential data loss from "$1" t'+
'o "$2"'#000+
- '04108','_W_Unicode constant cast with potential data loss'#000+
+ '04108_W_Unicode constant cast with potential data loss'#000+
'04109_E_range check error while evaluating constants ($1 must be betwe'+
- 'en $2 and $3)'#000+
+ 'en $2 and $3',')'#000+
'04110_W_range check error while evaluating constants ($1 must be betwe'+
'en $2 and $3)'#000+
- '04111_E_This type is n','ot supported for the Default() intrinsic'#000+
+ '04111_E_This type is not supported for the Default() intrinsic'#000+
'04112_E_JVM virtual class methods cannot be static'#000+
- '04113_E_Final (class) fields can only be assigned in their class'#039' '+
- '(class) constructor'#000+
- '04114_E_It is not possible to typecast untyped parameters on m','anaged'+
- ' platforms, simply assign a value to them instead.'#000+
+ '04113_E_Final (class) fields can only be',' assigned in their class'#039+
+ ' (class) constructor'#000+
+ '04114_E_It is not possible to typecast untyped parameters on managed p'+
+ 'latforms, simply assign a value to them instead.'#000+
'04115_E_The assignment side of an expression cannot be typecasted to a'+
- ' supertype on managed platforms'#000+
+ ' supe','rtype on managed platforms'#000+
'04116_-W_The interface method "$1" raises the visibility of "$2" to pu'+
- 'blic when a','ccessed via an interface instance'#000+
+ 'blic when accessed via an interface instance'#000+
'04117_E_The interface method "$1" has a higher visibility (public) tha'+
'n "$2"'#000+
- '04118_E_TYPEOF can only be used on object types with VMT'#000+
+ '04118_E_TYPEOF can on','ly be used on object types with VMT'#000+
'04119_E_It is not possible to define a default value for a parameter o'+
- 'f ','type "$1"'#000+
+ 'f type "$1"'#000+
'04120_E_Type "$1" cannot be extended by a type helper'#000+
+ '04121_E_Procedure or function must be far in order to allow taking i','t'+
+ 's address: "$1"'#000+
'05000_E_Identifier not found "$1"'#000+
'05001_F_Internal Error in SymTableStack()'#000+
'05002_E_Duplicate identifier "$1"'#000+
'05003_H_Identifier already defined in $1 at line $2'#000+
- '05004_E_Unknow','n identifier "$1"'#000+
- '05005_E_Forward declaration not solved "$1"'#000+
+ '05004_E_Unknown identifier "$1"'#000+
+ '05005_E_Forward declaration n','ot solved "$1"'#000+
'05007_E_Error in type definition'#000+
'05009_E_Forward type not resolved "$1"'#000+
'05010_E_Only static variables can be used in static methods or outside'+
' methods'#000+
- '05012_E_Record or object or',' class type expected'#000+
- '05013_E_Instances of classes or objects with an abstract method are no'+
- 't allowed'#000+
+ '05012_E_Record or object or class type expected'#000+
+ '05013_E_Instances of class','es or objects with an abstract method are '+
+ 'not allowed'#000+
'05014_W_Label not defined "$1"'#000+
'05015_E_Label used but not defined "$1"'#000+
'05016_E_Illegal label declaration'#000+
- '05017_E_GOTO and LABEL are not sup','ported (use switch -Sg)'#000+
- '05018_E_Label not found'#000+
+ '05017_E_GOTO and LABEL are not supported (use switch -Sg)'#000+
+ '05018_E_Label not found',#000+
'05019_E_identifier isn'#039't a label'#000+
'05020_E_label already defined'#000+
'05021_E_illegal type declaration of set elements'#000+
'05022_E_Forward class definition not resolved "$1"'#000+
- '05023_H_Unit "$1" not used in',' $2'#000+
+ '05023_H_Unit "$1" not used in $2'#000+
'05024_H_Parameter "$1" not used'#000+
- '05025_N_Local variable "$1" not used'#000+
+ '05025_N_Loc','al variable "$1" not used'#000+
'05026_H_Value parameter "$1" is assigned but never used'#000+
'05027_N_Local variable "$1" is assigned but never used'#000+
'05028_H_Local $1 "$2" is not used'#000+
- '05029_N_Private field ','"$1.$2" is never used'#000+
- '05030_N_Private field "$1.$2" is assigned but never used'#000+
+ '05029_N_Private field "$1.$2" is never used'#000+
+ '05030_N_Private field "$1','.$2" is assigned but never used'#000+
'05031_N_Private method "$1.$2" never used'#000+
'05032_E_Set type expected'#000+
'05033_W_Function result does not seem to be set'#000+
- '05034_W_Type "$1" is not aligned correctly in',' current record for C'#000+
- '05035_E_Unknown record field identifier "$1"'#000+
+ '05034_W_Type "$1" is not aligned correctly in current record for C'#000+
+ '05035_E_Unknown record fi','eld identifier "$1"'#000+
'05036_W_Local variable "$1" does not seem to be initialized'#000+
'05037_W_Variable "$1" does not seem to be initialized'#000+
'05038_E_identifier idents no member "$1"'#000+
- '05039_H_Found decl','aration: $1'#000+
+ '05039_H_Found declaration: $1'#000+
'05040_E_Data element too large'#000+
- '05042_E_No matching implementation for interface method "$1" found'#000+
+ '0504','2_E_No matching implementation for interface method "$1" found'#000+
'05043_W_Symbol "$1" is deprecated'#000+
'05044_W_Symbol "$1" is not portable'#000+
'05055_W_Symbol "$1" is not implemented'#000+
- '05056_E_Can'#039't create ','unique type from this type'#000+
- '05057_H_Local variable "$1" does not seem to be initialized'#000+
+ '05056_E_Can'#039't create unique type from this type'#000+
+ '05057_H_Local variab','le "$1" does not seem to be initialized'#000+
'05058_H_Variable "$1" does not seem to be initialized'#000+
'05059_W_Function result variable does not seem to initialized'#000+
- '05060_H_Function result variable does',' not seem to be initialized'#000+
- '05061_W_Variable "$1" read but nowhere assigned'#000+
+ '05060_H_Function result variable does not seem to be initialized'#000+
+ '05061_W_Variable "$','1" read but nowhere assigned'#000+
'05062_H_Found abstract method: $1'#000+
'05063_W_Symbol "$1" is experimental'#000+
'05064_W_Forward declaration "$1" not resolved, assumed external'#000+
- '05065_W_Symbol "$1" is belongs',' to a library'#000+
- '05066_W_Symbol "$1" is deprecated: "$2"'#000+
+ '05065_W_Symbol "$1" is belongs to a library'#000+
+ '05066_W_Symbol "$1" is deprecated',': "$2"'#000+
'05067_E_Cannot find an enumerator for the type "$1"'#000+
'05068_E_Cannot find a "MoveNext" method in enumerator "$1"'#000+
'05069_E_Cannot find a "Current" property in enumerator "$1"'#000+
- '05070_E_Mismatc','h between number of declared parameters and number of'+
+ '05070_E_Mismatch between number of declared parameters and num','ber of'+
' colons in message string.'#000+
'05071_N_Private type "$1.$2" never used'#000+
'05072_N_Private const "$1.$2" never used'#000+
'05073_N_Private property "$1.$2" never used'#000+
'05074_W_Unit "$1" is deprecated'#000+
- '050','75_W_Unit "$1" is deprecated: "$2"'#000+
- '05076_W_Unit "$1" is not portable'#000+
+ '05075_W_Unit "$1" is deprecated: "$2"'#000+
+ '05076_W_Unit',' "$1" is not portable'#000+
'05077_W_Unit "$1" is belongs to a library'#000+
'05078_W_Unit "$1" is not implemented'#000+
'05079_W_Unit "$1" is experimental'#000+
- '05080_E_No complete definition of the formally declared cl','ass "$1" i'+
- 's in scope'#000+
- '05081_E_Gotos into initialization or finalization blocks of units are '+
- 'not allowed'#000+
+ '05080_E_No complete definition of the formally declared class "$1" is '+
+ 'in scope'#000+
+ '05081_E_Gotos into initial','ization or finalization blocks of units ar'+
+ 'e not allowed'#000+
'05082_E_Invalid external name "$1" for formal class "$2"'#000+
'05083_E_Complete class definition with external name "$1" here'#000+
- '05084_W_Possible ','library conflict: symbol "$1" from library "$2" als'+
+ '05084_W_Possible library conflict: symbol "$1" from library "$2"',' als'+
'o found in library "$3"'#000+
'05085_E_Cannot add implicit constructor '#039'Create'#039' because ident'+
'ifier already used by "$1"'#000+
'05086_E_Cannot generate default constructor for class, because parent '+
- 'has no',' parameterless constructor'#000+
- '05087_D_Adding helper for $1'#000+
+ 'has no parameterless constructor'#000+
+ '05087_D_Adding helpe','r for $1'#000+
+ '05088_E_Found declaration: $1'#000+
'06009_E_Parameter list size exceeds 65535 bytes'#000+
'06012_E_File types must be var parameters'#000+
'06013_E_The use of a far pointer isn'#039't allowed there'#000+
- '06015_E_EXPORT declared functions cannot ','be called'#000+
- '06016_W_Possible illegal call of constructor or destructor'#000+
+ '06015_E_EXPORT declared functions cannot be called'#000+
+ '06016_W','_Possible illegal call of constructor or destructor'#000+
'06017_N_Inefficient code'#000+
'06018_W_unreachable code'#000+
'06020_E_Abstract methods cannot be called directly'#000+
'06027_DL_Register $1 weight $2 $3'#000+
'06029_DL_Stack frame is omitted'#000+
- '0603','1_E_Object or class methods cannot be inline.'#000+
+ '06031_E_Object or cla','ss methods cannot be inline.'#000+
'06032_E_Procvar calls cannot be inline.'#000+
'06033_E_No code for inline procedure stored'#000+
'06035_E_Element zero of an ansi/wide- or longstring cannot be accessed'+
', use (set)length instead'#000+
- '06037_E_Constr','uctors or destructors cannot be called inside a '#039'w'+
+ '06037_E_Constructors or destruc','tors cannot be called inside a '#039'w'+
'ith'#039' clause'#000+
'06038_E_Cannot call message handler methods directly'#000+
'06039_E_Jump in or outside of an exception block'#000+
'06040_E_Control flow statements are not allowed in a finally block'#000+
- '06041_W_P','arameters size exceeds limit for certain cpu'#039's'#000+
+ '06041_W_Parameters size ex','ceeds limit for certain cpu'#039's'#000+
'06042_W_Local variable size exceed limit for certain cpu'#039's'#000+
'06043_E_Local variables size exceeds supported limit'#000+
'06044_E_BREAK not allowed'#000+
'06045_E_CONTINUE not allowed'#000+
- '06046_F_Unknown compilerpr','oc "$1". Check if you use the correct run '+
+ '06046_F_Unknown compilerproc "$1". Check if',' you use the correct run '+
'time library.'#000+
'06047_F_Cannot find system type "$1". Check if you use the correct run'+
' time library.'#000+
'06048_H_Inherited call to abstract method ignored'#000+
- '06049_E_Goto label "$1" not defined or optimized ','away'#000+
- '06050_F_Cannot find type "$1" in unit "$2". Check if you use the corre'+
- 'ct run time library.'#000+
+ '06049_E_Goto label "$1" not defined or optimized away'#000+
+ '06050_F_Cann','ot find type "$1" in unit "$2". Check if you use the cor'+
+ 'rect run time library.'#000+
'06051_E_Interprocedural gotos are allowed only to outer subroutines'#000+
'06052_E_Label must be defined in the same scope as it is declared'#000+
- '06053_E_Le','aving procedures containing explicit or implicit exception'+
+ '06053_E_Leaving procedures ','containing explicit or implicit exception'+
's frames using goto is not allowed'#000+
'06054_E_In ISO mode, the mod operator is defined only for positive quo'+
'tient'#000+
'06055_DL_Auto inlining: $1'#000+
- '07000_DL_Starting $1 styled assembler parsin','g'#000+
+ '06056_E_The function used, is not supported by the selected i','nstruct'+
+ 'ion set: $1'#000+
+ '07000_DL_Starting $1 styled assembler parsing'#000+
'07001_DL_Finished $1 styled assembler parsing'#000+
'07002_E_Non-label pattern contains @'#000+
'07004_E_Error building record offset'#000+
'07005_E_OFFSET used without identifier'#000+
- '07006_E_TYPE used without identifier'#000+
- '07007_E_Cannot use local variable or param','eters here'#000+
+ '07006_E_TYPE use','d without identifier'#000+
+ '07007_E_Cannot use local variable or parameters here'#000+
'07008_E_need to use OFFSET here'#000+
'07009_E_need to use $ here'#000+
'07010_E_Cannot use multiple relocatable symbols'#000+
'07011_E_Relocatable symbol can only be added'#000+
- '07012_E_Invalid constant expression'#000+
- '07013_E_Relocatable symbol is not allowed',#000+
+ '07012_E_Invali','d constant expression'#000+
+ '07013_E_Relocatable symbol is not allowed'#000+
'07014_E_Invalid reference syntax'#000+
'07015_E_You cannot reach $1 from that code'#000+
'07016_E_Local symbols/labels are not allowed as references'#000+
- '07017_E_Invalid base and index register usage'#000+
+ '07017_E_Invalid base and index register u','sage'#000+
'07018_W_Possible error in object field handling'#000+
- '07019_E_Wr','ong scale factor specified'#000+
+ '07019_E_Wrong scale factor specified'#000+
'07020_E_Multiple index register usage'#000+
'07021_E_Invalid operand type'#000+
'07022_E_Invalid string as opcode operand: $1'#000+
- '07023_W_@CODE and @DATA not supported'#000+
+ '07023_W_@CODE and @DATA not supported'#000,
'07024_E_Null label references are not allowed'#000+
- '07025_E_Divide by',' zero in asm evaluator'#000+
+ '07025_E_Divide by zero in asm evaluator'#000+
'07026_E_Illegal expression'#000+
'07027_E_escape sequence ignored: $1'#000+
'07028_E_Invalid symbol reference'#000+
'07029_W_Fwait can cause emulation problems with emu387'#000+
- '07030_W_$1 without operand translated into $1P'#000+
- '07031_W_ENTER instr','uction is not supported by Linux kernel'#000+
+ '070','30_W_$1 without operand translated into $1P'#000+
+ '07031_W_ENTER instruction is not supported by Linux kernel'#000+
'07032_W_Calling an overload function in assembler'#000+
'07033_E_Unsupported symbol type for operand'#000+
'07034_E_Constant value out of bounds'#000+
- '07035_E_Error converting decimal $1'#000+
- '07036_E_Error converting octal $1',#000+
+ '07035_','E_Error converting decimal $1'#000+
+ '07036_E_Error converting octal $1'#000+
'07037_E_Error converting binary $1'#000+
'07038_E_Error converting hexadecimal $1'#000+
'07039_H_$1 translated to $2'#000+
'07040_W_$1 is associated to an overloaded function'#000+
- '07041_E_Cannot use SELF outside a method'#000+
- '07042_E_Cannot use OLDEBP outside a nested p','rocedure'#000+
+ '07041_E_Cannot use SEL','F outside a method'#000+
+ '07042_E_Cannot use OLDEBP outside a nested procedure'#000+
'07043_W_Procedures cannot return any value in asm code'#000+
'07044_E_SEG not supported'#000+
'07045_E_Size suffix and destination or source size do not match'#000+
- '07046_W_Size suffix and destination or source size do not match'#000+
- '07047_E_Assembler synt','ax error'#000+
+ '07046_W_Size suffix and',' destination or source size do not match'#000+
+ '07047_E_Assembler syntax error'#000+
'07048_E_Invalid combination of opcode and operands'#000+
'07049_E_Assembler syntax error in operand'#000+
'07050_E_Assembler syntax error in constant'#000+
- '07051_E_Invalid String expression'#000+
- '07052_W_constant with symbol $1 for address which is not on a',' pointe'+
- 'r'#000+
+ '07051_E_Invalid String expressio','n'#000+
+ '07052_W_constant with symbol $1 for address which is not on a pointer'#000+
'07053_E_Unrecognized opcode $1'#000+
'07054_E_Invalid or missing opcode'#000+
'07055_E_Invalid combination of prefix and opcode: $1'#000+
- '07056_E_Invalid combination of override and opcode: $1'#000+
+ '07056_E_Invalid combination of override and opcode',': $1'#000+
'07057_E_Too many operands on line'#000+
'07058_W_NEAR ignored'#000+
- '070','59_W_FAR ignored'#000+
+ '07059_W_FAR ignored'#000+
'07060_E_Duplicate local symbol $1'#000+
'07061_E_Undefined local symbol $1'#000+
'07062_E_Unknown label identifier $1'#000+
'07063_E_Invalid register name'#000+
- '07064_E_Invalid floating point register name'#000+
+ '07064_E_Invalid floating p','oint register name'#000+
'07066_W_Modulo not supported'#000+
- '07067_E_Invalid',' floating point constant $1'#000+
+ '07067_E_Invalid floating point constant $1'#000+
'07068_E_Invalid floating point expression'#000+
'07069_E_Wrong symbol type'#000+
'07070_E_Cannot index a local var or parameter with a register'#000+
- '07071_E_Invalid segment override expression'#000+
- '07072_W_Identifier $1 supposed externa','l'#000+
+ '07071_E_Invalid seg','ment override expression'#000+
+ '07072_W_Identifier $1 supposed external'#000+
'07073_E_Strings not allowed as constants'#000+
'07074_E_No type of variable specified'#000+
'07075_E_assembler code not returned to text section'#000+
'07076_E_Not a directive or local symbol $1'#000+
- '07077_E_Using a defined name as a local label'#000+
- '07078_E_Dollar tok','en is used without an identifier'#000+
+ '0','7077_E_Using a defined name as a local label'#000+
+ '07078_E_Dollar token is used without an identifier'#000+
'07079_W_32bit constant created for address'#000+
'07080_N_.align is target specific, use .balign or .p2align'#000+
- '07081_E_Can'#039't access fields directly for parameters'#000+
- '07082_E_Can'#039't access fields of objects/classes direct','ly'#000+
+ '07081_E_Can'#039't access fields directly for p','arameters'#000+
+ '07082_E_Can'#039't access fields of objects/classes directly'#000+
'07083_E_No size specified and unable to determine the size of the oper'+
'ands'#000+
'07084_E_Cannot use RESULT in this function'#000+
- '07086_W_"$1" without operand translated into "$1 %st,%st(1)"'#000+
+ '07086_W_"$1" without operand translated into "$1 %st,%st','(1)"'#000+
'07087_W_"$1 %st(n)" translated into "$1 %st,%st(n)"'#000+
- '07088_','W_"$1 %st(n)" translated into "$1 %st(n),%st"'#000+
+ '07088_W_"$1 %st(n)" translated into "$1 %st(n),%st"'#000+
'07089_E_Char < not allowed here'#000+
'07090_E_Char > not allowed here'#000+
'07093_W_ALIGN not supported'#000+
- '07094_E_Inc and Dec cannot be together'#000+
+ '07094_E_Inc and Dec cannot be together'#000,
'07095_E_Invalid reglist for movem'#000+
- '07096_E_Reglist invalid for o','pcode'#000+
+ '07096_E_Reglist invalid for opcode'#000+
'07097_E_Higher cpu mode required ($1)'#000+
'07098_W_No size specified and unable to determine the size of the oper'+
'ands, using DWORD as default'#000+
- '07099_E_Syntax error while trying to parse a shifter operand'#000+
- '07100_E_Address of packed component ','is not at a byte boundary'#000+
+ '07099_E_Syntax error while trying ','to parse a shifter operand'#000+
+ '07100_E_Address of packed component is not at a byte boundary'#000+
'07101_W_No size specified and unable to determine the size of the oper'+
'ands, using BYTE as default'#000+
- '07102_W_Use of +offset(%ebp) for parameters invalid here'#000+
- '07103_W_Use of +offset(%ebp) is not compatible with regcall',' conventi'+
- 'on'#000+
+ '07102_W_Use of +offset(%ebp) for parameters invalid h','ere'#000+
+ '07103_W_Use of +offset(%ebp) is not compatible with regcall convention'+
+ #000+
'07104_W_Use of -offset(%ebp) is not recommended for local variable acc'+
'ess'#000+
'07105_W_Use of -offset(%esp), access may cause a crash or value may be'+
' lost'#000+
- '07106_E_VMTOffset must be used in combination with a virtual method, a'+
- 'nd "$1" ','is not virtual'#000+
+ '07106_E_VMTOffs','et must be used in combination with a virtual method,'+
+ ' and "$1" is not virtual'#000+
'07107_E_Generating PIC, but reference is not PIC-safe'#000+
'07108_E_All registers in a register set must be of the same kind and w'+
'idth'#000+
- '07109_E_A register set cannot be empty'#000+
- '07110_W_@GOTPCREL is useless and potentially dangereous f','or local sy'+
- 'mbols'#000+
+ '07109_E_A register set cannot be ','empty'#000+
+ '07110_W_@GOTPCREL is useless and potentially dangereous for local symb'+
+ 'ols'#000+
'07111_W_Constant with general purpose segment register'#000+
'07112_E_Invalid offset value for $1'#000+
'07113_E_Invalid register for $1'#000+
- '07114_E_SEH directives are allowed only in pure assembler procedures'#000+
- '07115_E_Directive "$1" is not s','upported for the current target'#000+
+ '07114_E_SEH directives are allowed on','ly in pure assembler procedures'+
+ #000+
+ '07115_E_Directive "$1" is not supported for the current target'#000+
'07116_E_This function'#039's result location cannot be encoded directly'+
' in a single operand when "nostackframe" is used'#000+
- '07117_E_GOTPCREL references in Intel assembler syntax cannot contain a'+
- ' base or index register',', and their offset must 0.'#000+
+ '07117_E_GOTPCREL references in',' Intel assembler syntax cannot contain'+
+ ' a base or index register, and their offset must 0.'#000+
'07118_E_The current target does not support GOTPCREL relocations'#000+
'07119_W_Exported/global symbols should accessed via the GOT'#000+
- '07120_W_Check size of memory operand "$1"'#000+
- '07121_W_Check size of memory operand "$1: memo','ry-operand-size is $2 '+
- 'bits, but expected [$3 bits]"'#000+
+ '07120_W_Check size of mem','ory operand "$1"'#000+
+ '07121_W_Check size of memory operand "$1: memory-operand-size is $2 bi'+
+ 'ts, but expected [$3 bits]"'#000+
'07122_W_Check size of memory operand "$1: memory-operand-size is $2 bi'+
'ts, but expected [$3 bits + $4 byte offset]"'#000+
- '07123_W_Check "$1: offset of memory operand is negative "$2 byte"'#000+
- '07124_W','_Check "$1: size of memory operand is empty, but es exists di'+
- 'fferent definitions of the memory size =>> map to $2 (smallest option)'+
- '"'#000+
- '07125_E_Invalid register used in memory reference expression: "$1"'#000+
+ '07123_W_Ch','eck "$1: offset of memory operand is negative "$2 byte"'#000+
+ '07124_W_Check "$1: size of memory operand is empty, but es exists diff'+
+ 'erent definitions of the memory size =>> map to $2 (smallest option)"'#000+
+ '07125_E_Invalid register used in memory refe','rence expression: "$1"'#000+
'08000_F_Too many assembler files'#000+
- '08001_F','_Selected assembler output not supported'#000+
+ '08001_F_Selected assembler output not supported'#000+
'08002_F_Comp not supported'#000+
'08003_F_Direct not support for binary writers'#000+
'08004_E_Allocating of data is only allowed in bss section'#000+
- '08005_F_No binary writer selected'#000+
- '08006_E_Asm: Opcode $1 not in tabl','e'#000+
+ '08005','_F_No binary writer selected'#000+
+ '08006_E_Asm: Opcode $1 not in table'#000+
'08007_E_Asm: $1 invalid combination of opcode and operands'#000+
'08008_E_Asm: 16 Bit references not supported'#000+
'08009_E_Asm: Invalid effective address'#000+
- '08010_E_Asm: Immediate or reference expected'#000+
+ '08010_E_Asm: Immediate or refere','nce expected'#000+
'08011_E_Asm: $1 value exceeds bounds $2'#000+
- '08012_E_As','m: Short jump is out of range $1'#000+
+ '08012_E_Asm: Short jump is out of range $1'#000+
'08013_E_Asm: Undefined label $1'#000+
'08014_E_Asm: Comp type not supported for this target'#000+
'08015_E_Asm: Extended type not supported for this target'#000+
- '08016_E_Asm: Duplicate label $1'#000+
+ '08','016_E_Asm: Duplicate label $1'#000+
'08017_E_Asm: Redefined label $1'#000+
- '0','8018_E_Asm: First defined here'#000+
+ '08018_E_Asm: First defined here'#000+
'08019_E_Asm: Invalid register $1'#000+
'08020_E_Asm: 16 or 32 Bit references not supported'#000+
'08021_E_Asm: 64 Bit operands not supported'#000+
- '08022_E_Asm: AH,BH,CH or DH cannot be used in an instruction requiring'+
- ' REX prefix'#000,
+ '08022_E_Asm: AH,BH,','CH or DH cannot be used in an instruction requiri'+
+ 'ng REX prefix'#000+
'08023_E_Missing .seh_endprologue directive'#000+
'08024_E_Function prologue exceeds 255 bytes'#000+
'08025_E_.seh_handlerdata directive without preceding .seh_handler'#000+
- '08026_F_Relocation count for section $1 exceeds 65535'#000+
- '09000_W_Source operating system r','edefined'#000+
+ '08026_F_Relocation count',' for section $1 exceeds 65535'#000+
+ '09000_W_Source operating system redefined'#000+
'09001_I_Assembling (pipe) $1'#000+
'09002_E_Can'#039't create assembler file: $1'#000+
'09003_E_Can'#039't create object file: $1 (error code: $2)'#000+
'09004_E_Can'#039't create archive file: $1'#000+
- '09005_E_Assembler $1 not found, switching to external assembling'#000+
- '09006','_T_Using assembler: $1'#000+
+ '09005_E','_Assembler $1 not found, switching to external assembling'#000+
+ '09006_T_Using assembler: $1'#000+
'09007_E_Error while assembling exitcode $1'#000+
'09008_E_Can'#039't call the assembler, error $1 switching to external a'+
'ssembling'#000+
'09009_I_Assembling $1'#000+
- '09010_I_Assembling with smartlinking $1'#000+
- '09011_W_Object $1 not found, Linking',' may fail !'#000+
+ '09010_I_Assem','bling with smartlinking $1'#000+
+ '09011_W_Object $1 not found, Linking may fail !'#000+
'09012_W_Library $1 not found, Linking may fail !'#000+
'09013_E_Error while linking'#000+
'09014_E_Can'#039't call the linker, switching to external linking'#000+
'09015_I_Linking $1'#000+
- '09016_E_Util $1 not found, switching to external linking'#000+
- '09017_T_Using ','util $1'#000+
+ '09016_E_','Util $1 not found, switching to external linking'#000+
+ '09017_T_Using util $1'#000+
'09018_E_Creation of Executables not supported'#000+
'09019_E_Creation of Dynamic/Shared Libraries not supported'#000+
'09035_E_Creation of Static Libraries not supported'#000+
- '09020_I_Closing script $1'#000+
- '09021_E_resource compiler "$1" not found, switchin','g to external mode'+
- #000+
+ '09020_I_Closi','ng script $1'#000+
+ '09021_E_resource compiler "$1" not found, switching to external mode'#000+
'09022_I_Compiling resource $1'#000+
'09023_T_unit $1 cannot be statically linked, switching to smart linkin'+
'g'#000+
- '09024_T_unit $1 cannot be smart linked, switching to static linking'#000+
- '09025_T_unit $1 cannot be shared linked, switching ','to static linking'+
- #000+
+ '09024_T_unit $1 cannot be smart linked, switching to sta','tic linking'#000+
+ '09025_T_unit $1 cannot be shared linked, switching to static linking'#000+
'09026_E_unit $1 cannot be smart or static linked'#000+
'09027_E_unit $1 cannot be shared or static linked'#000+
- '09028_D_Calling resource compiler "$1" with "$2" as command line'#000+
+ '09028_D_Calling resource compiler "$1" with "$2" as command ','line'#000+
'09029_E_Error while compiling resources'#000+
- '09030_E_Can'#039't call',' the resource compiler "$1", switching to exte'+
- 'rnal mode'#000+
+ '09030_E_Can'#039't call the resource compiler "$1", switching to extern'+
+ 'al mode'#000+
'09031_E_Can'#039't open resource file "$1"'#000+
'09032_E_Can'#039't write resource file "$1"'#000+
- '09033_N_File "$1" not found for backquoted cat command'#000+
- '09034_W_"$1" not found, this will probably cause a l','inking failure'#000+
+ '09033_N_File "$1" not found for backquoted c','at command'#000+
+ '09034_W_"$1" not found, this will probably cause a linking failure'#000+
'09128_F_Can'#039't post process executable $1'#000+
'09129_F_Can'#039't open executable $1'#000+
'09130_X_Size of Code: $1 bytes'#000+
'09131_X_Size of initialized data: $1 bytes'#000+
- '09132_X_Size of uninitialized data: $1 bytes'#000+
- '09133_X_Stack space reserved: $1',' bytes'#000+
+ '09132_X_Size o','f uninitialized data: $1 bytes'#000+
+ '09133_X_Stack space reserved: $1 bytes'#000+
'09134_X_Stack space committed: $1 bytes'#000+
'09200_F_Executable image size is too big for $1 target.'#000+
'09201_W_Object file "$1" contains 32-bit absolute relocation to symbol'+
- ' "$2".'#000+
+ ' "$2','".'#000+
'10000_T_Unitsearch: $1'#000+
'10001_T_PPU Loading $1'#000+
- '10002_U_PPU Na','me: $1'#000+
+ '10002_U_PPU Name: $1'#000+
'10003_U_PPU Flags: $1'#000+
'10004_U_PPU Crc: $1'#000+
'10005_U_PPU Time: $1'#000+
'10006_U_PPU File too short'#000+
'10007_U_PPU Invalid Header (no PPU at the begin)'#000+
- '10008_U_PPU Invalid Version $1'#000+
+ '10008_U_PPU Invalid Version $1'#000,
'10009_U_PPU is compiled for another processor'#000+
- '10010_U_PPU is co','mpiled for another target'#000+
+ '10010_U_PPU is compiled for another target'#000+
'10011_U_PPU Source: $1'#000+
'10012_U_Writing $1'#000+
'10013_F_Can'#039't Write PPU-File'#000+
'10014_F_Error reading PPU-File'#000+
'10015_F_unexpected end of PPU-File'#000+
- '10016_F_Invalid PPU-File entry: $1'#000+
+ '10016_F_Invali','d PPU-File entry: $1'#000+
'10017_F_PPU Dbx count problem'#000+
- '10018_E_Ille','gal unit name: $1'#000+
+ '10018_E_Illegal unit name: $1'#000+
'10019_F_Too much units'#000+
'10020_F_Circular unit reference between $1 and $2'#000+
'10021_F_Can'#039't compile unit $1, no sources available'#000+
- '10022_F_Can'#039't find unit $1 used by $2'#000+
+ '10022_F_Can'#039't find unit $1 used by',' $2'#000+
'10023_W_Unit $1 was not found but $2 exists'#000+
- '10024_F_Unit $1',' searched but $2 found'#000+
+ '10024_F_Unit $1 searched but $2 found'#000+
'10025_W_Compiling the system unit requires the -Us switch'#000+
'10026_F_There were $1 errors compiling module, stopping'#000+
'10027_U_Load from $1 ($2) unit $3'#000+
- '10028_U_Recompiling $1, checksum changed for $2'#000+
- '10029_U_Recompiling $','1, source found only'#000+
+ '10028_','U_Recompiling $1, checksum changed for $2'#000+
+ '10029_U_Recompiling $1, source found only'#000+
'10030_U_Recompiling unit, static lib is older than ppufile'#000+
'10031_U_Recompiling unit, shared lib is older than ppufile'#000+
- '10032_U_Recompiling unit, obj and asm are older than ppufile'#000+
- '10033_U_Recompiling unit, obj is older t','han asm'#000+
+ '10032_U_Recompiling unit, obj and asm ','are older than ppufile'#000+
+ '10033_U_Recompiling unit, obj is older than asm'#000+
'10034_U_Parsing interface of $1'#000+
'10035_U_Parsing implementation of $1'#000+
'10036_U_Second load for unit $1'#000+
'10037_U_PPU Check file $1 time $2'#000+
- '10040_W_Can'#039't recompile unit $1, but found modifed include files'#000+
- '10041_U_File $1 is newer than th','e one used for creating PPU file $2'#000+
+ '10040_W_Can'#039't recompile unit $1, b','ut found modifed include files'+
+ #000+
+ '10041_U_File $1 is newer than the one used for creating PPU file $2'#000+
'10042_U_Trying to use a unit which was compiled with a different FPU m'+
'ode'#000+
'10043_U_Loading interface units from $1'#000+
- '10044_U_Loading implementation units from $1'#000+
+ '10044_U_Loading implementat','ion units from $1'#000+
'10045_U_Interface CRC changed for unit $1'#000+
- '100','46_U_Implementation CRC changed for unit $1'#000+
+ '10046_U_Implementation CRC changed for unit $1'#000+
'10047_U_Finished compiling unit $1'#000+
'10048_U_Adding dependency: $1 depends on $2'#000+
'10049_U_No reload, is caller: $1'#000+
- '10050_U_No reload, already in second compile: $1'#000+
+ '10050_U_No reload, al','ready in second compile: $1'#000+
'10051_U_Flag for reload: $1'#000+
- '10052_U','_Forced reloading'#000+
+ '10052_U_Forced reloading'#000+
'10053_U_Previous state of $1: $2'#000+
'10054_U_Already compiling $1, setting second compile'#000+
'10055_U_Loading unit $1'#000+
'10056_U_Finished loading unit $1'#000+
- '10057_U_Registering new unit $1'#000+
+ '10057_U_Register','ing new unit $1'#000+
'10058_U_Re-resolving unit $1'#000+
- '10059_U_Skipping r','e-resolving unit $1, still loading used units'#000+
+ '10059_U_Skipping re-resolving unit $1, still loading used units'#000+
'10060_U_Unloading resource unit $1 (not needed)'#000+
'10061_E_Unit $1 was compiled using a different whole program optimizat'+
- 'ion feedback input ($2, $3); recompile it without wpo or use the same '+
- 'wpo fe','edback input file for this compilation invocation'#000+
+ 'ion feedback ','input ($2, $3); recompile it without wpo or use the sam'+
+ 'e wpo feedback input file for this compilation invocation'#000+
'10062_U_Indirect interface (objects/classes) CRC changed for unit $1'#000+
'10063_U_PPU is compiled for another i8086 memory model'#000+
- '11000_O_$1 [options] <inputfile> [options]'#000+
- '11001_W_Only one source',' file supported, changing source file to comp'+
- 'ile from "$1" into "$2"'#000+
+ '110','00_O_$1 [options] <inputfile> [options]'#000+
+ '11001_W_Only one source file supported, changing source file to compil'+
+ 'e from "$1" into "$2"'#000+
'11002_W_DEF file can be created only for OS/2'#000+
'11003_E_nested response files are not supported'#000+
- '11004_F_No source file name in command line'#000+
- '11005_N_No option inside $1 confi','g file'#000+
+ '11004_F_No sou','rce file name in command line'#000+
+ '11005_N_No option inside $1 config file'#000+
'11006_E_Illegal parameter: $1'#000+
'11007_H_-? writes help pages'#000+
'11008_F_Too many config files nested'#000+
'11009_F_Unable to open file $1'#000+
'11010_D_Reading further options from $1'#000+
- '11011_W_Target is already set to: $1'#000+
- '11012_W_Shared libs not suppo','rted on DOS platform, reverting to stat'+
- 'ic'#000+
+ '110','11_W_Target is already set to: $1'#000+
+ '11012_W_Shared libs not supported on DOS platform, reverting to static'+
+ #000+
'11013_F_In options file $1 at line $2 too many \var{\#IF(N)DEFs} encou'+
'ntered'#000+
- '11014_F_In options file $1 at line $2 unexpected \var{\#ENDIFs} encoun'+
- 'tered'#000+
- '11015_F_Open conditional at the end of the op','tions file'#000+
+ '11014_F_In options file $1 at line $2 unexpected \var{\#EN','DIFs} enco'+
+ 'untered'#000+
+ '11015_F_Open conditional at the end of the options file'#000+
'11016_W_Debug information generation is not supported by this executab'+
'le'#000+
'11017_H_Try recompiling with -dGDB'#000+
'11018_W_You are using the obsolete switch $1'#000+
- '11019_W_You are using the obsolete switch $1, please use $2'#000+
- '11020_N_Switchin','g assembler to default source writing assembler'#000+
+ '11019_W_You a','re using the obsolete switch $1, please use $2'#000+
+ '11020_N_Switching assembler to default source writing assembler'#000+
'11021_W_Assembler output selected "$1" is not compatible with "$2"'#000+
'11022_W_"$1" assembler use forced'#000+
- '11026_T_Reading options from file $1'#000+
+ '11026_T_Reading options from',' file $1'#000+
'11027_T_Reading options from environment $1'#000+
- '11028_D_Ha','ndling option "$1"'#000+
+ '11028_D_Handling option "$1"'#000+
'11029_O_*** press enter ***'#000+
'11030_H_Start of reading config file $1'#000+
'11031_H_End of reading config file $1'#000+
'11032_D_interpreting option "$1"'#000+
- '11036_D_interpreting firstpass option "$1"'#000+
+ '11036_D_interpretin','g firstpass option "$1"'#000+
'11033_D_interpreting file option "$1"'#000+
- '1','1034_D_Reading config file "$1"'#000+
+ '11034_D_Reading config file "$1"'#000+
'11035_D_found source file name "$1"'#000+
'11039_E_Unknown codepage "$1"'#000+
'11040_F_Config file $1 is a directory'#000+
- '11041_W_Assembler output selected "$1" cannot generate debug info, deb'+
- 'ugging disabled'#000+
- '11042_W_Use of ppc','386.cfg is deprecated, please use fpc.cfg instead'#000+
+ '11041_W_Assembler output selected "$1" ca','nnot generate debug info, d'+
+ 'ebugging disabled'#000+
+ '11042_W_Use of ppc386.cfg is deprecated, please use fpc.cfg instead'#000+
'11043_F_In options file $1 at line $2 \var{\#ELSE} directive without \'+
'var{\#IF(N)DEF} found'#000+
- '11044_F_Option "$1" is not, or not yet, supported on the current targe'+
- 't platform'#000+
- '11045_F_The featu','re "$1" is not, or not yet, supported on the select'+
- 'ed target platform'#000+
+ '11044_F_Option "$1" is not, or not ','yet, supported on the current tar'+
+ 'get platform'#000+
+ '11045_F_The feature "$1" is not, or not yet, supported on the selected'+
+ ' target platform'#000+
'11046_N_DWARF debug information cannot be used with smart linking on t'+
- 'his target, switching to static linking'#000+
- '11047_W_Option "$1" is ignored for the current target platfo','rm.'#000+
+ 'his target, switching to static linki','ng'#000+
+ '11047_W_Option "$1" is ignored for the current target platform.'#000+
'11048_W_Disabling external debug information because it is unsupported'+
' for the selected target/debug format combination.'#000+
- '11049_N_DWARF debug information cannot be used with smart linking with'+
- ' external assembler, disabling static library',' creation.'#000+
+ '11049_N_DWARF debug information cannot be used with ','smart linking wi'+
+ 'th external assembler, disabling static library creation.'#000+
'11050_E_Invalid value for MACOSX_DEPLOYMENT_TARGET environment variabl'+
'e: $1'#000+
'11051_E_Invalid value for IPHONEOS_DEPLOYMENT_TARGET environment varia'+
'ble: $1'#000+
- '11052_E_You must use a FPU type of VFPV2, VFPV3 or VFPV3_D16 when usin'+
- 'g the',' EABIHF ABI target'#000+
+ '11052_E_You ','must use a FPU type of VFPV2, VFPV3 or VFPV3_D16 when us'+
+ 'ing the EABIHF ABI target'#000+
'11053_W_The selected debug format is not supported on the current targ'+
'et, not changing the current setting'#000+
'11054_E_argument to "$1" is missing'#000+
- '11055_E_malformed parameter: $1'#000+
- '12000_F_Cannot open whole program optimization',' feedback file "$1"'#000+
+ '11055_E_malform','ed parameter: $1'#000+
+ '11056_W_Smart linking requires external linker'#000+
+ '12000_F_Cannot open whole program optimization feedback file "$1"'#000+
'12001_D_Processing whole program optimization information in wpo feedb'+
'ack file "$1"'#000+
- '12002_D_Finished processing the whole program optimization information'+
- ' in wpo feedback file "$1"'#000+
- '12003_E_Expected section header, but go','t "$2" at line $1 of wpo feed'+
- 'back file'#000+
+ '12002_D_Finished processin','g the whole program optimization informati'+
+ 'on in wpo feedback file "$1"'#000+
+ '12003_E_Expected section header, but got "$2" at line $1 of wpo feedba'+
+ 'ck file'#000+
'12004_W_No handler registered for whole program optimization section "'+
- '$2" at line $1 of wpo feedback file, ignoring'#000+
+ '$2" at line $1 of wpo',' feedback file, ignoring'#000+
'12005_D_Found whole program optimization section "$1" with information'+
' about "$2"'#000+
- '120','06_F_The selected whole program optimizations require a previousl'+
- 'y generated feedback file (use -Fw to specify)'#000+
- '12007_E_No collected information necessary to perform "$1" whole progr'+
- 'am optimization found'#000+
- '12008_F_Specify a whole program opti','mization feedback file to store '+
- 'the generated info in (using -FW)'#000+
- '12009_E_Not generating any whole program optimization information, yet'+
- ' a feedback file was specified (using -FW)'#000+
- '12010_E_Not performing any whole program optimizations, yet a','n input'+
- ' feedback file was specified (using -Fw)'#000+
+ '12006_F_The selected whole program optimizations require a previously '+
+ 'generated feedback file (use -Fw to specify)'#000+
+ '12007_E_No collect','ed information necessary to perform "$1" whole pro'+
+ 'gram optimization found'#000+
+ '12008_F_Specify a whole program optimization feedback file to store th'+
+ 'e generated info in (using -FW)'#000+
+ '12009_E_Not generating any whole program optimization informatio','n, y'+
+ 'et a feedback file was specified (using -FW)'#000+
+ '12010_E_Not performing any whole program optimizations, yet an input f'+
+ 'eedback file was specified (using -Fw)'#000+
'12011_D_Skipping whole program optimization section "$1", because not '+
- 'needed by the requested optimizations'#000+
+ 'needed by th','e requested optimizations'#000+
'12012_W_Overriding previously read information for "$1" from feedback '+
- 'input file usi','ng information in section "$2"'#000+
+ 'input file using information in section "$2"'#000+
'12013_E_Cannot extract symbol liveness information from program when s'+
'tripping symbols, use -Xs-'#000+
- '12014_E_Cannot extract symbol liveness information from program when w'+
- 'hen not linking'#000+
- '12015_F_Cannot find "$1" o','r "$2" to extract symbol liveness informat'+
- 'ion from linked program'#000+
- '12016_E_Error during reading symbol liveness information produced by "'+
- '$1"'#000+
+ '12','014_E_Cannot extract symbol liveness information from program when'+
+ ' when not linking'#000+
+ '12015_F_Cannot find "$1" or "$2" to extract symbol liveness informatio'+
+ 'n from linked program'#000+
+ '12016_E_Error during reading symbol liveness information produce','d by'+
+ ' "$1"'#000+
'12017_F_Error executing "$1" (exitcode: $2) to extract symbol informat'+
'ion from linked program'#000+
- '12018_','E_Collection of symbol liveness information can only help when'+
- ' using smart linking, use -CX -XX'#000+
- '12019_E_Cannot create specified whole program optimisation feedback fi'+
- 'le "$1"'#000+
- '11023_Free Pascal Compiler version $FPCFULLVERSION [$FPCDATE] for ','$F'+
- 'PCCPU'#010+
+ '12018_E_Collection of symbol liveness information can only help when u'+
+ 'sing smart linking, use -CX -XX'#000+
+ '12019_E_Cannot create specified wh','ole program optimisation feedback '+
+ 'file "$1"'#000+
+ '11023_Free Pascal Compiler version $FPCFULLVERSION [$FPCDATE] for $FPC'+
+ 'CPU'#010+
'Copyright (c) 1993-2014 by Florian Klaempfl and others'#000+
'11024_Free Pascal Compiler version $FPCVERSION'#010+
#010+
- 'Compiler Date : $FPCDATE'#010+
+ 'Compiler Date ',': $FPCDATE'#010+
'Compiler CPU Target: $FPCCPU'#010+
#010+
'Supported targets:'#010+
' $OSTARGETS'#010+
#010+
'Supported CPU instruction sets:'#010+
- ' $I','NSTRUCTIONSETS'#010+
+ ' $INSTRUCTIONSETS'#010+
#010+
'Supported FPU instruction sets:'#010+
' $FPUINSTRUCTIONSETS'#010+
@@ -1212,423 +1219,420 @@ const msgtxt : array[0..000295,1..240] of char=(
'Supported inline assembler modes:'#010+
' $ASMMODES'#010+
#010+
- 'Supported ABI targets:'#010+
+ 'Supported AB','I targets:'#010+
' $ABITARGETS'#010+
#010+
'Supported Optimizations:'#010+
' $OPTIMIZATIONS'#010+
#010+
'Supported Whole Program Optimizations:'#010+
- ' ','All'#010+
+ ' All'#010+
' $WPOPTIMIZATIONS'#010+
#010+
'Supported Microcontroller types:'#010+
' $CONTROLLERTYPES'#010+
#010+
- 'This program comes under the GNU General Public Licence'#010+
+ 'This program comes under the GNU General Public Licen','ce'#010+
'For more information read COPYING.v2'#010+
#010+
'Please report bugs in our bug tracker on:'#010+
- ' http://bug','s.freepascal.org'#010+
+ ' http://bugs.freepascal.org'#010+
#010+
'More information may be found on our WWW pages (including directions'#010+
- 'for mailing lists useful for asking questions or discussing potential'#010+
+ 'for mailing lists useful for asking questio','ns or discussing potentia'+
+ 'l'#010+
'new features, etc.):'#010+
' http://www.freepascal.org'#000+
- '11025_**0*_Put + af','ter a boolean switch option to enable it, - to di'+
- 'sable it'#010+
+ '11025_**0*_Put + after a boolean switch option to enable it, - to disa'+
+ 'ble it'#010+
'**1a_The compiler does not delete the generated assembler file'#010+
- '**2al_List sourcecode lines in assembler file'#010+
+ '**2al_Lis','t sourcecode lines in assembler file'#010+
'**2an_List node info in assembler file (-dEXTDEBUG compiler)'#010+
- '**2ao_Add an',' extra option to external assembler call (ignored for in'+
- 'ternal)'#010+
+ '**2ao_Add an extra option to external assembler call (ignored for inte'+
+ 'rnal)'#010+
'*L2ap_Use pipes instead of creating temporary assembler files'#010+
- '**2ar_List register allocation/release info in assembler file'#010+
- '**2at_List temp allocation/release info in assembler',' file'#010+
+ '**2a','r_List register allocation/release info in assembler file'#010+
+ '**2at_List temp allocation/release info in assembler file'#010+
'**1A<x>_Output format:'#010+
'**2Adefault_Use default assembler'#010+
'3*2Aas_Assemble using GNU AS'#010+
- '3*2Amacho_Mach-O (Darwin, Intel 32 bit) using internal writer'#010+
+ '3*2Amacho_Mach-O (Darwin, Intel 32 bit',') using internal writer'#010+
'8*2Anasm_Assemble using Nasm'#010+
'8*2Anasmobj_Assemble using Nasm'#010+
- '3*2Anasm_Assemble using N','asm'#010+
+ '3*2Anasm_Assemble using Nasm'#010+
'3*2Anasmcoff_COFF (Go32v2) file using Nasm'#010+
'3*2Anasmelf_ELF32 (Linux) file using Nasm'#010+
- '3*2Anasmwin32_Win32 object file using Nasm'#010+
+ '3*2Anasmwin32_Win32 object file using Nas','m'#010+
'3*2Anasmwdosx_Win32/WDOSX object file using Nasm'#010+
- '3*2Anasmdarwin macho32 object file using Nasm (experimental',')'#010+
+ '3*2Anasmdarwin macho32 object file using Nasm (experimental)'#010+
'3*2Awasm_Obj file using Wasm (Watcom)'#010+
'3*2Anasmobj_Obj file using Nasm'#010+
'3*2Amasm_Obj file using Masm (Microsoft)'#010+
- '3*2Atasm_Obj file using Tasm (Borland)'#010+
+ '3*2Atasm_Obj file',' using Tasm (Borland)'#010+
'3*2Aelf_ELF (Linux) using internal writer'#010+
'3*2Acoff_COFF (Go32v2) using internal writer'#010+
- '3','*2Apecoff_PE-COFF (Win32) using internal writer'#010+
+ '3*2Apecoff_PE-COFF (Win32) using internal writer'#010+
'3*2Ayasm_Assmeble using Yasm (experimental)'#010+
'4*2Aas_Assemble using GNU AS'#010+
- '4*2Agas_Assemble using GNU GAS'#010+
+ '4*2Agas_A','ssemble using GNU GAS'#010+
'4*2Agas-darwin_Assemble darwin Mach-O64 using GNU GAS'#010+
- '4*2Amasm_Win64 object file using m','l64 (Microsoft)'#010+
+ '4*2Amasm_Win64 object file using ml64 (Microsoft)'#010+
'4*2Apecoff_PE-COFF (Win64) using internal writer'#010+
'4*2Aelf_ELF (Linux-64bit) using internal writer'#010+
- '4*2Ayasm_Assemble using Yasm (experimental)'#010+
+ '4*2Ayasm_Assemble',' using Yasm (experimental)'#010+
'4*2Anasm_Assemble using Nasm (experimental)'#010+
- '4*2Anasmwin64_Assemble Win64 object fi','le using Nasm (experimental)'#010+
+ '4*2Anasmwin64_Assemble Win64 object file using Nasm (experimental)'#010+
'4*2Anasmelf_Assemble Linux-64bit object file using Nasm (experimental)'+
#010+
- '4*2Anasmdarwin_Assemble darwin macho64 object file using Nasm (experim'+
- 'ental)'#010+
+ '4*2Anasmdarwin_Assemble darwin',' macho64 object file using Nasm (exper'+
+ 'imental)'#010+
'6*2Aas_Unix o-file using GNU AS'#010+
- '6*2Agas_GNU Motorola assembler'#010,
+ '6*2Agas_GNU Motorola assembler'#010+
'6*2Amit_MIT Syntax (old GAS)'#010+
'6*2Amot_Standard Motorola assembler'#010+
'A*2Aas_Assemble using GNU AS'#010+
'P*2Aas_Assemble using GNU AS'#010+
- 'S*2Aas_Assemble using GNU AS'#010+
+ 'S*2Aas_','Assemble using GNU AS'#010+
'**1b_Generate browser info'#010+
'**2bl_Generate local symbol info'#010+
'**1B_Build all modules'#010+
- '**1C<','x>_Code generation options:'#010+
+ '**1C<x>_Code generation options:'#010+
'**2C3_Turn on ieee error checking for constants'#010+
'**2Ca<x>_Select ABI, see fpc -i for possible values'#010+
- '**2Cb_Generate code for a big-endian variant of the target architectur'+
- 'e'#010+
- '**2Cc<x>_Set default calling convention ','to <x>'#010+
+ '**','2Cb_Generate code for a big-endian variant of the target architect'+
+ 'ure'#010+
+ '**2Cc<x>_Set default calling convention to <x>'#010+
'**2CD_Create also dynamic library (not supported)'#010+
'**2Ce_Compilation with emulated floating point opcodes'#010+
- '**2Cf<x>_Select fpu instruction set to use, see fpc -i for possible va'+
- 'lues'#010+
- '**2CF<x>_Minimal floating point constant precision (d','efault, 32, 64)'+
- #010+
+ '**2Cf<x>_Select fp','u instruction set to use, see fpc -i for possible '+
+ 'values'#010+
+ '**2CF<x>_Minimal floating point constant precision (default, 32, 64)'#010+
'**2Cg_Generate PIC code'#010+
'**2Ch<n>_<n> bytes heap (between 1023 and 67107840)'#010+
'**2Ci_IO-checking'#010+
- 'A*2CI<x>_Select instruction set on ARM: ARM or THUMB'#010+
+ 'A*2CI<x>_Select inst','ruction set on ARM: ARM or THUMB'#010+
'**2Cn_Omit linking stage'#010+
'P*2CN_Generate nil-pointer checks (AIX-only)'#010+
- '**2Co_C','heck overflow of integer operations'#010+
+ '**2Co_Check overflow of integer operations'#010+
'**2CO_Check for possible overflow of integer operations'#010+
- '**2Cp<x>_Select instruction set, see fpc -i for possible values'#010+
+ '**2Cp<x>_Select instruction set, see f','pc -i for possible values'#010+
'**2CP<x>=<y>_ packing settings'#010+
- '**3CPPACKSET=<y>_ <y> set allocation: 0, 1 or DEFAULT',' or NORMAL, 2, '+
- '4 and 8'#010+
+ '**3CPPACKSET=<y>_ <y> set allocation: 0, 1 or DEFAULT or NORMAL, 2, 4 '+
+ 'and 8'#010+
'**2Cr_Range checking'#010+
'**2CR_Verify object method call validity'#010+
'**2Cs<n>_Set stack checking size to <n>'#010+
- '**2Ct_Stack checking (for testing only, see manual)'#010+
+ '**2Ct','_Stack checking (for testing only, see manual)'#010+
'8*2CT<x>_Target-specific code generation options'#010+
- '3*2CT<x>_Targe','t-specific code generation options'#010+
+ '3*2CT<x>_Target-specific code generation options'#010+
'4*2CT<x>_Target-specific code generation options'#010+
- 'p*2CT<x>_Target-specific code generation options'#010+
+ 'p*2CT<x>_Target-specific code generation optio','ns'#010+
'P*2CT<x>_Target-specific code generation options'#010+
'J*2CT<x>_Target-specific code generation options'#010+
- 'A*2CT<x>_','Target-specific code generation options'#010+
+ 'A*2CT<x>_Target-specific code generation options'#010+
'p*3CTsmalltoc_ Generate smaller TOCs at the expense of execution speed'+
' (AIX)'#010+
- 'P*3CTsmalltoc_ Generate smaller TOCs at the expense of execution speed'+
- ' (AIX)'#010+
- 'J*3CTautogetterprefix=X_ Automatically create',' getters for propertie'+
- 's with prefix X (empty string disables)'#010+
- 'J*3CTautosetterprefix=X_ Automatically create setters for properties '+
+ 'P*3CTsmalltoc','_ Generate smaller TOCs at the expense of execution spe'+
+ 'ed (AIX)'#010+
+ 'J*3CTautogetterprefix=X_ Automatically create getters for properties '+
'with prefix X (empty string disables)'#010+
- '8*3CTcld_ Emit a CLD instruction before using the x86 ',
+ 'J*3CTautosetterprefix=X_ Automatically create setters for propertie','s'+
+ ' with prefix X (empty string disables)'#010+
+ '8*3CTcld_ Emit a CLD instruction before using the x86 '+
'string instructions'#010+
'3*3CTcld_ Emit a CLD instruction before using the x86 '+
'string instructions'#010+
- '4*3CTcld_ Emit a CLD instruction before using the x86 '+
- 'string instructions'#010+
- 'J*3CTcompactintarrayinit_ Generate small','er (but potentially slower) '+
- 'code for initializing integer array constants'#010+
- 'J*3CTenumfieldinit_ Initialize enumeration fields in constructor'+
- 's to enumtype(0), after calling inherited constructors'#010+
- 'J*3CTinitlocals_ Initialize loca','l variables that trigger a '+
- 'JVM bytecode verification error if used uninitialized (slows down code'+
- ')'#010+
- 'J*3CTlowercaseprocstart_ Lowercase the first character of procedure/f'+
- 'unction/method names'#010+
- 'A*3CTthumbinterworking_ Generate Thumb interworkin','g-safe code if pos'+
- 'sible'#010+
+ '4*3CTcld_ ',' Emit a CLD instruction before using the x8'+
+ '6 string instructions'#010+
+ 'J*3CTcompactintarrayinit_ Generate smaller (but potentially slower) co'+
+ 'de for initializing integer array constants'#010+
+ 'J*3CTenumfieldinit_ Initialize enumeration fields ','in construct'+
+ 'ors to enumtype(0), after calling inherited constructors'#010+
+ 'J*3CTinitlocals_ Initialize local variables that trigger a JV'+
+ 'M bytecode verification error if used uninitialized (slows down code)'#010+
+ 'J*3CTlowercaseprocstart_ Lower','case the first character of procedure'+
+ '/function/method names'#010+
+ 'A*3CTthumbinterworking_ Generate Thumb interworking-safe code if possi'+
+ 'ble'#010+
'J*2Cv_Var/out parameter copy-out checking'#010+
'**2CX_Create also smartlinked library'#010+
- '**1d<x>_Defines the symbol <x>'#010+
+ '**1d<x>_Defines the symbol',' <x>'#010+
'**1D_Generate a DEF file'#010+
'**2Dd<x>_Set description to <x>'#010+
'**2Dv<x>_Set DLL version to <x>'#010+
- '*O2Dw_PM applica','tion'#010+
+ '*O2Dw_PM application'#010+
'**1e<x>_Set path to executable'#010+
'**1E_Same as -Cn'#010+
'**1fPIC_Same as -Cg'#010+
'**1F<x>_Set file names and paths:'#010+
- '**2Fa<x>[,y]_(for a program) load units <x> and [y] before uses is par'+
- 'sed'#010+
+ '**2Fa<x>[,y]_(for a pro','gram) load units <x> and [y] before uses is p'+
+ 'arsed'#010+
'**2Fc<x>_Set input codepage to <x>'#010+
- '**2FC<x>_Set RC compiler',' binary name to <x>'#010+
+ '**2FC<x>_Set RC compiler binary name to <x>'#010+
'**2Fd_Disable the compiler'#039's internal directory cache'#010+
- '**2FD<x>_Set the directory where to search for compiler utilities'#010+
+ '**2FD<x>_Set the directory where to search for compiler ','utilities'#010+
'**2Fe<x>_Redirect error output to <x>'#010+
'**2Ff<x>_Add <x> to framework path (Darwin only)'#010+
- '**2FE<x>_Set ','exe/unit output path to <x>'#010+
+ '**2FE<x>_Set exe/unit output path to <x>'#010+
'**2Fi<x>_Add <x> to include path'#010+
'**2Fl<x>_Add <x> to library path'#010+
'**2FL<x>_Use <x> as dynamic linker'#010+
- '**2Fm<x>_Load unicode conversion table from <x>.txt in the compiler di'+
- 'r'#010+
- '**2FM<x>_Set the directory where to sea','rch for unicode binary files'#010+
+ '*','*2Fm<x>_Load unicode conversion table from <x>.txt in the compiler '+
+ 'dir'#010+
+ '**2FM<x>_Set the directory where to search for unicode binary files'#010+
'**2Fo<x>_Add <x> to object path'#010+
'**2Fr<x>_Load error message file <x>'#010+
- '**2FR<x>_Set resource (.res) linker to <x>'#010+
+ '**2FR<x>_Set resource (.res) lin','ker to <x>'#010+
'**2Fu<x>_Add <x> to unit path'#010+
'**2FU<x>_Set unit output path to <x>, overrides -FE'#010+
- '**2FW<x>_Store ge','nerated whole-program optimization feedback in <x>'#010+
+ '**2FW<x>_Store generated whole-program optimization feedback in <x>'#010+
'**2Fw<x>_Load previously stored whole-program optimization feedback fr'+
'om <x>'#010+
- '*g1g_Generate debug information (default format for target)'#010+
+ '*g','1g_Generate debug information (default format for target)'#010+
'*g2gc_Generate checks for pointers'#010+
- '*g2gh_Use heaptra','ce unit (for memory leak/corruption debugging)'#010+
+ '*g2gh_Use heaptrace unit (for memory leak/corruption debugging)'#010+
'*g2gl_Use line info unit (show more info with backtraces)'#010+
- '*g2go<x>_Set debug information options'#010+
+ '*g2go<x>_Set debug inform','ation options'#010+
'*g3godwarfsets_ Enable DWARF '#039'set'#039' type debug information (bre'+
'aks gdb < 6.5)'#010+
- '*g3gostabsabsinclud','es_ Store absolute/full include file paths in Sta'+
- 'bs'#010+
+ '*g3gostabsabsincludes_ Store absolute/full include file paths in Stabs'+
+ #010+
'*g3godwarfmethodclassprefix_ Prefix method names in DWARF with class n'+
'ame'#010+
- '*g2gp_Preserve case in stabs symbol names'#010+
+ '*g2g','p_Preserve case in stabs symbol names'#010+
'*g2gs_Generate Stabs debug information'#010+
- '*g2gt_Trash local variables (to d','etect uninitialized uses)'#010+
+ '*g2gt_Trash local variables (to detect uninitialized uses)'#010+
'*g2gv_Generates programs traceable with Valgrind'#010+
- '*g2gw_Generate DWARFv2 debug information (same as -gw2)'#010+
+ '*g2gw_Generate DWARFv2 debug information (same as -gw2)',#010+
'*g2gw2_Generate DWARFv2 debug information'#010+
'*g2gw3_Generate DWARFv3 debug information'#010+
- '*g2gw4_Generate DWARFv4 d','ebug information (experimental)'#010+
+ '*g2gw4_Generate DWARFv4 debug information (experimental)'#010+
'**1i_Information'#010+
'**2iD_Return compiler date'#010+
'**2iV_Return short compiler version'#010+
- '**2iW_Return full compiler version'#010+
+ '**2iW_Return full ','compiler version'#010+
'**2iSO_Return compiler OS'#010+
'**2iSP_Return compiler host processor'#010+
'**2iTO_Return target OS'#010+
- '**2iT','P_Return target processor'#010+
+ '**2iTP_Return target processor'#010+
'**1I<x>_Add <x> to include path'#010+
'**1k<x>_Pass <x> to the linker'#010+
'**1l_Write logo'#010+
- '**1M<x>_Set language mode to <x>'#010+
+ '**1M<x>_Set language mode',' to <x>'#010+
'**2Mfpc_Free Pascal dialect (default)'#010+
'**2Mobjfpc_FPC mode with Object Pascal support'#010+
- '**2Mdelphi_Delphi',' 7 compatibility mode'#010+
+ '**2Mdelphi_Delphi 7 compatibility mode'#010+
'**2Mtp_TP/BP 7.0 compatibility mode'#010+
'**2Mmacpas_Macintosh Pascal dialects compatibility mode'#010+
- '**1n_Do not read the default config files'#010+
+ '**1n_Do not read',' the default config files'#010+
'**1o<x>_Change the name of the executable produced to <x>'#010+
'**1O<x>_Optimizations:'#010+
- '**2','O-_Disable optimizations'#010+
+ '**2O-_Disable optimizations'#010+
'**2O1_Level 1 optimizations (quick and debugger friendly)'#010+
- '**2O2_Level 2 optimizations (-O1 + quick optimizations)'#010+
+ '**2O2_Level 2 optimizations (-O1 + quick optimi','zations)'#010+
'**2O3_Level 3 optimizations (-O2 + slow optimizations)'#010+
- '**2O4_Level 4 optimizations (-O3 + optimizatio','ns which might have un'+
- 'expected side effects)'#010+
+ '**2O4_Level 4 optimizations (-O3 + optimizations which might have unex'+
+ 'pected side effects)'#010+
'**2Oa<x>=<y>_Set alignment'#010+
- '**2Oo[NO]<x>_Enable or disable optimizations, see fpc -i for possible '+
- 'values'#010+
+ '**2Oo[NO]<x>_Enable or disable optimizations, see fpc -i f','or possibl'+
+ 'e values'#010+
'**2Op<x>_Set target cpu for optimizing, see fpc -i for possible values'+
#010+
- '**2OW<x>_Generate wh','ole-program optimization feedback for optimizati'+
- 'on <x>, see fpc -i for possible values'#010+
- '**2Ow<x>_Perform whole-program optimization <x>, see fpc -i for possib'+
- 'le values'#010+
+ '**2OW<x>_Generate whole-program optimization feedback for optimization'+
+ ' <x>, see fpc -i for possible values'#010+
+ '**2Ow<x>_Perform whole-program optimization',' <x>, see fpc -i for poss'+
+ 'ible values'#010+
'**2Os_Optimize for size rather than speed'#010+
- '**1pg_Generate profile code for',' gprof (defines FPC_PROFILE)'#010+
+ '**1pg_Generate profile code for gprof (defines FPC_PROFILE)'#010+
'F*1P<x>_Target CPU / compiler related options:'#010+
'F*2PB_Show default compiler binary'#010+
- 'F*2PP_Show default target cpu'#010+
+ 'F*2PP_Show default ','target cpu'#010+
'F*2P<x>_Set target CPU (arm,i386,m68k,mips,mipsel,powerpc,powerpc64,sp'+
'arc,x86_64'#010+
- '**1R<x>_Assembler ','reading style:'#010+
+ '**1R<x>_Assembler reading style:'#010+
'**2Rdefault_Use default assembler for target'#010+
'3*2Ratt_Read AT&T style assembler'#010+
- '3*2Rintel_Read Intel style assembler'#010+
+ '3*2Rintel_Read Intel style assembler',#010+
'6*2RMOT_Read motorola style assembler'#010+
'**1S<x>_Syntax options:'#010+
'**2S2_Same as -Mobjfpc'#010+
- '**2Sc_Support operators ','like C (*=,+=,/= and -=)'#010+
+ '**2Sc_Support operators like C (*=,+=,/= and -=)'#010+
'**2Sa_Turn on assertions'#010+
'**2Sd_Same as -Mdelphi'#010+
- '**2Se<x>_Error options. <x> is a combination of the following:'#010+
+ '**2Se<x>_Error options. <x> is a combination of the follo','wing:'#010+
'**3*_<n> : Compiler halts after the <n> errors (default is 1)'#010+
- '**3*_w : Compiler also halts after warning','s'#010+
+ '**3*_w : Compiler also halts after warnings'#010+
'**3*_n : Compiler also halts after notes'#010+
'**3*_h : Compiler also halts after hints'#010+
- '**2Sg_Enable LABEL and GOTO (default in -Mtp and -Mdelphi)'#010+
+ '**2Sg_Enable LABEL and GOTO (default in -Mtp a','nd -Mdelphi)'#010+
'**2Sh_Use reference counted strings (ansistring by default) instead of'+
' shortstrings'#010+
- '**2Si_Turn on',' inlining of procedures/functions declared as "inline"'#010+
+ '**2Si_Turn on inlining of procedures/functions declared as "inline"'#010+
'**2Sk_Load fpcylix unit'#010+
'**2SI<x>_Set interface style to <x>'#010+
- '**3SIcom_COM compatible interface (default)'#010+
+ '**3SIcom_COM co','mpatible interface (default)'#010+
'**3SIcorba_CORBA compatible interface'#010+
'**2Sm_Support macros like C (global)'#010+
- '**2So_','Same as -Mtp'#010+
+ '**2So_Same as -Mtp'#010+
'**2Ss_Constructor name must be init (destructor must be done)'#010+
- '**2Sx_Enable exception keywords (default in Delphi/ObjFPC modes)'#010+
+ '**2Sx_Enable exception keywords (default in Delphi/ObjF','PC modes)'#010+
'**2Sy_@<pointer> returns a typed pointer, same as $T+'#010+
'**1s_Do not call assembler and linker'#010+
- '**2sh_Ge','nerate script to link on host'#010+
+ '**2sh_Generate script to link on host'#010+
'**2st_Generate script to link on target'#010+
'**2sr_Skip register allocation phase (use with -alr)'#010+
- '**1T<x>_Target operating system:'#010+
+ '**1T<x>','_Target operating system:'#010+
'3*2Tdarwin_Darwin/Mac OS X'#010+
'3*2Temx_OS/2 via EMX (including EMX/RSX extender)'#010+
- '3*2Tfre','ebsd_FreeBSD'#010+
+ '3*2Tfreebsd_FreeBSD'#010+
'3*2Tgo32v2_Version 2 of DJ Delorie DOS extender'#010+
- '3*2Tiphonesim_ iPhoneSimulator from iOS SDK 3.2+ (older versions: -Tda'+
- 'rwin)'#010+
+ '3*2Tiphonesim_ iPhoneSimulator from iOS SDK 3.2+ (older versions: -Td',
+ 'arwin)'#010+
'3*2Tlinux_Linux'#010+
'3*2Tnativent_Native NT API (experimental)'#010+
'3*2Tnetbsd_NetBSD'#010+
- '3*2Tnetware_Novell Netware ','Module (clib)'#010+
+ '3*2Tnetware_Novell Netware Module (clib)'#010+
'3*2Tnetwlibc_Novell Netware Module (libc)'#010+
'3*2Topenbsd_OpenBSD'#010+
'3*2Tos2_OS/2 / eComStation'#010+
'3*2Tsunos_SunOS/Solaris'#010+
- '3*2Tsymbian_Symbian OS'#010+
+ '3*2','Tsymbian_Symbian OS'#010+
'3*2Tsolaris_Solaris'#010+
'3*2Twatcom_Watcom compatible DOS extender'#010+
- '3*2Twdosx_WDOSX DOS extender',#010+
+ '3*2Twdosx_WDOSX DOS extender'#010+
'3*2Twin32_Windows 32 Bit'#010+
'3*2Twince_Windows CE'#010+
'4*2Tdarwin_Darwin/Mac OS X'#010+
'4*2Tlinux_Linux'#010+
- '4*2Twin64_Win64 (64 bit Windows systems)'#010+
+ '4*2Twin64_Win64 (64 bit Windows systems)',#010+
'6*2Tamiga_Commodore Amiga'#010+
'6*2Tatari_Atari ST/STe/TT'#010+
'6*2Tlinux_Linux'#010+
'6*2Tpalmos_PalmOS'#010+
- 'A*2Tdarwin_Darwin/iPhon','eOS/iOS'#010+
+ 'A*2Tdarwin_Darwin/iPhoneOS/iOS'#010+
'A*2Tlinux_Linux'#010+
'A*2Twince_Windows CE'#010+
'P*2Tamiga_AmigaOS'#010+
'P*2Tdarwin_Darwin/Mac OS X'#010+
'P*2Tlinux_Linux'#010+
- 'P*2Tmacos_Mac OS (classic)'#010+
+ 'P*2Tmacos_Mac OS (classi','c)'#010+
'P*2Tmorphos_MorphOS'#010+
'S*2Tsolaris_Solaris'#010+
'S*2Tlinux_Linux'#010+
'**1u<x>_Undefines the symbol <x>'#010+
- '**1U_Unit options:',#010+
+ '**1U_Unit options:'#010+
'**2Un_Do not check where the unit name matches the file name'#010+
'**2Ur_Generate release unit files (never automatically recompiled)'#010+
- '**2Us_Compile a system unit'#010+
+ '*','*2Us_Compile a system unit'#010+
'**1v<x>_Be verbose. <x> is a combination of the following letters:'#010+
- '**2*_e : Show er','rors (default) 0 : Show nothing (except errors'+
- ')'#010+
+ '**2*_e : Show errors (default) 0 : Show nothing (except errors)'#010+
'**2*_w : Show warnings u : Show unit info'#010+
- '**2*_n : Show notes t : Show tried/used files'#010+
+ '**2*_n : Show notes ',' t : Show tried/used files'#010+
'**2*_h : Show hints c : Show conditionals'#010+
- '**2*_i :',' Show general info d : Show debug info'#010+
+ '**2*_i : Show general info d : Show debug info'#010+
'**2*_l : Show linenumbers r : Rhide/GCC compatibility mode'#010+
- '**2*_s : Show time stamps q : Show message numbers'#010+
- '**2*_a : Show everything x : Executable info (W','in32 only'+
- ')'#010+
+ '**2*_s : Sh','ow time stamps q : Show message numbers'#010+
+ '**2*_a : Show everything x : Executable info (Win32 only)'#010+
'**2*_b : Write file names messages p : Write tree.log with parse tre'+
'e'#010+
- '**2*_ with full path v : Write fpcdebug.txt with'#010+
+ '**2*_ with full path v : Write ','fpcdebug.txt with'#010+
'**2*_ lots of debugging info'#010+
- '**2*_m<x>,<y> : Do not show ','messages numbered <x> and <y>'#010+
+ '**2*_m<x>,<y> : Do not show messages numbered <x> and <y>'#010+
'F*1V<x>_Append '#039'-<x>'#039' to the used compiler binary name (e.g. f'+
'or version)'#010+
- '**1W<x>_Target-specific options (targets)'#010+
+ '**1W<x>_Target-specific op','tions (targets)'#010+
'3*2WA_Specify native type application (Windows)'#010+
- '4*2WA_Specify native type application (Windows',')'#010+
+ '4*2WA_Specify native type application (Windows)'#010+
'A*2WA_Specify native type application (Windows)'#010+
'3*2Wb_Create a bundle instead of a library (Darwin)'#010+
- 'P*2Wb_Create a bundle instead of a library (Darwin)'#010+
+ 'P*2Wb_Create a bundle instea','d of a library (Darwin)'#010+
'p*2Wb_Create a bundle instead of a library (Darwin)'#010+
- 'A*2Wb_Create a bundle instead of a',' library (Darwin)'#010+
+ 'A*2Wb_Create a bundle instead of a library (Darwin)'#010+
'4*2Wb_Create a bundle instead of a library (Darwin)'#010+
'3*2WB_Create a relocatable image (Windows, Symbian)'#010+
- '3*2WBxxxx_Set image base to xxxx (Windows, Symbian)'#010+
+ '3*2WBxxx','x_Set image base to xxxx (Windows, Symbian)'#010+
'4*2WB_Create a relocatable image (Windows)'#010+
- '4*2WBxxxx_Set image bas','e to xxxx (Windows)'#010+
+ '4*2WBxxxx_Set image base to xxxx (Windows)'#010+
'A*2WB_Create a relocatable image (Windows, Symbian)'#010+
'A*2WBxxxx_Set image base to xxxx (Windows, Symbian)'#010+
- '3*2WC_Specify console type application (EMX, OS/2, Windows)'#010+
- '4*2WC_Specify console type application (EMX, OS/2, Windo','ws)'#010+
+ '3*2WC_','Specify console type application (EMX, OS/2, Windows)'#010+
+ '4*2WC_Specify console type application (EMX, OS/2, Windows)'#010+
'A*2WC_Specify console type application (Windows)'#010+
'P*2WC_Specify console type application (Classic Mac OS)'#010+
- '3*2WD_Use DEFFILE to export functions of DLL or EXE (Windows)'#010+
+ '3*2WD_Use DEFFILE to ','export functions of DLL or EXE (Windows)'#010+
'4*2WD_Use DEFFILE to export functions of DLL or EXE (Windows)'#010+
- 'A*2WD_U','se DEFFILE to export functions of DLL or EXE (Windows)'#010+
+ 'A*2WD_Use DEFFILE to export functions of DLL or EXE (Windows)'#010+
'3*2We_Use external resources (Darwin)'#010+
- '4*2We_Use external resources (Darwin)'#010+
+ '4*2We_Use external resources (Darwin)',#010+
'A*2We_Use external resources (Darwin)'#010+
'P*2We_Use external resources (Darwin)'#010+
- 'p*2We_Use external resources (Dar','win)'#010+
+ 'p*2We_Use external resources (Darwin)'#010+
'3*2WF_Specify full-screen type application (EMX, OS/2)'#010+
'3*2WG_Specify graphic type application (EMX, OS/2, Windows)'#010+
- '4*2WG_Specify graphic type application (EMX, OS/2, Windows)'#010+
+ '4*2WG_Spec','ify graphic type application (EMX, OS/2, Windows)'#010+
'A*2WG_Specify graphic type application (Windows)'#010+
- 'P*2WG_Speci','fy graphic type application (Classic Mac OS)'#010+
+ 'P*2WG_Specify graphic type application (Classic Mac OS)'#010+
'3*2Wi_Use internal resources (Darwin)'#010+
'4*2Wi_Use internal resources (Darwin)'#010+
- 'A*2Wi_Use internal resources (Darwin)'#010+
+ 'A*2Wi_Use',' internal resources (Darwin)'#010+
'P*2Wi_Use internal resources (Darwin)'#010+
'p*2Wi_Use internal resources (Darwin)'#010+
- '3*2WI','_Turn on/off the usage of import sections (Windows)'#010+
+ '3*2WI_Turn on/off the usage of import sections (Windows)'#010+
'4*2WI_Turn on/off the usage of import sections (Windows)'#010+
- 'A*2WI_Turn on/off the usage of import sections (Windows)'#010+
+ 'A*2WI_Turn on/off the',' usage of import sections (Windows)'#010+
'8*2Wm<x>_Set memory model'#010+
'8*3WmTiny_Tiny memory model'#010+
- '8*3WmSmall_Small mem','ory model (default)'#010+
+ '8*3WmSmall_Small memory model (default)'#010+
'8*3WmMedium_Medium memory model'#010+
'3*2WM<x>_Minimum Mac OS X deployment version: 10.4, 10.5.1, ... (Darwi'+
'n)'#010+
- '4*2WM<x>_Minimum Mac OS X deployment version: 10.4, 10.5.1, ... (Darwi'+
- 'n)'#010+
- 'p*2WM<x>_Minimum Mac OS X deployment versi','on: 10.4, 10.5.1, ... (Dar'+
+ '4*2WM','<x>_Minimum Mac OS X deployment version: 10.4, 10.5.1, ... (Dar'+
'win)'#010+
+ 'p*2WM<x>_Minimum Mac OS X deployment version: 10.4, 10.5.1, ... (Darwi'+
+ 'n)'#010+
'P*2WM<x>_Minimum Mac OS X deployment version: 10.4, 10.5.1, ... (Darwi'+
'n)'#010+
- '3*2WN_Do not generate relocation code, needed for debugging (Windows)'#010+
- '4*2WN_Do not generate relocation code, needed for debugging (Windo','ws'+
+ '3*2WN_Do not generate relo','cation code, needed for debugging (Windows'+
')'#010+
+ '4*2WN_Do not generate relocation code, needed for debugging (Windows)'#010+
'A*2WN_Do not generate relocation code, needed for debugging (Windows)'#010+
- 'A*2Wpxxxx_Specify the controller type, see fpc -i for possible values'#010+
+ 'A*2Wpxxxx_Specify the controller type, see fpc -i for po','ssible value'+
+ 's'#010+
'V*2Wpxxxx_Specify the controller type, see fpc -i for possible values'#010+
- '3*2WP<x>_Minimum iOS deplo','yment version: 3.0, 5.0.1, ... (iphonesim)'+
- #010+
+ '3*2WP<x>_Minimum iOS deployment version: 3.0, 5.0.1, ... (iphonesim)'#010+
'A*2WP<x>_Minimum iOS deployment version: 3.0, 5.0.1, ... (Darwin)'#010+
- '3*2WR_Generate relocation code (Windows)'#010+
+ '3*2WR_Generate reloca','tion code (Windows)'#010+
'4*2WR_Generate relocation code (Windows)'#010+
'A*2WR_Generate relocation code (Windows)'#010+
- '8*2Wt<x>','_Set the target executable format'#010+
+ '8*2Wt<x>_Set the target executable format'#010+
'8*3Wtexe_Create a DOS .EXE file (default)'#010+
- '8*3Wtcom_Create a DOS .COM file (requires tiny memory model)'#010+
+ '8*3Wtcom_Create a DOS .COM file (requires tiny memory ','model)'#010+
'P*2WT_Specify MPW tool type application (Classic Mac OS)'#010+
'**2WX_Enable executable stack (Linux)'#010+
- '**1X_Exe','cutable options:'#010+
+ '**1X_Executable options:'#010+
'**2Xc_Pass --shared/-dynamic to the linker (BeOS, Darwin, FreeBSD, Lin'+
'ux)'#010+
- '**2Xd_Do not search default library path (sometimes required for cross'+
- '-compiling when not using -XR)'#010+
+ '**2Xd_Do not search default library pat','h (sometimes required for cro'+
+ 'ss-compiling when not using -XR)'#010+
'**2Xe_Use external linker'#010+
- '**2Xg_Create debuginfo',' in a separate file and add a debuglink sectio'+
- 'n to executable'#010+
- '**2XD_Try to link units dynamically (defines FPC_LINK_DYNAMIC)'#010+
+ '**2Xg_Create debuginfo in a separate file and add a debuglink section '+
+ 'to executable'#010+
+ '**2XD_Try to link units dynamically (defines FPC_LINK_DYNAMIC)'#010,
'**2Xi_Use internal linker'#010+
'**2Xm_Generate link map'#010+
- '**2XM<x>_Set the name of the '#039'main'#039' program routine (default',' '+
- 'is '#039'main'#039')'#010+
+ '**2XM<x>_Set the name of the '#039'main'#039' program routine (default i'+
+ 's '#039'main'#039')'#010+
'F*2Xp<x>_First search for the compiler binary in the directory <x>'#010+
- '**2XP<x>_Prepend the binutils names with the prefix <x>'#010+
+ '**2XP<x>_Prepend the binutils names with the prefix',' <x>'#010+
'**2Xr<x>_Set the linker'#039's rlink-path to <x> (needed for cross comp'+
- 'ile, see the ld manual for more informa','tion) (BeOS, Linux)'#010+
+ 'ile, see the ld manual for more information) (BeOS, Linux)'#010+
'**2XR<x>_Prepend <x> to all linker search paths (BeOS, Darwin, FreeBSD'+
', Linux, Mac OS, Solaris)'#010+
- '**2Xs_Strip all symbols from executable'#010+
+ '**2Xs_Strip al','l symbols from executable'#010+
'**2XS_Try to link units statically (default, defines FPC_LINK_STATIC)'#010+
- '**2Xt_Link wit','h static libraries (-static is passed to linker)'#010+
+ '**2Xt_Link with static libraries (-static is passed to linker)'#010+
'**2XX_Try to smartlink units (defines FPC_LINK_SMART)'#010+
'**1*_'#010+
- '**1?_Show this help'#010+
+ '**1?_Show',' this help'#010+
'**1h_Shows this help without waiting'
);
diff --git a/compiler/nadd.pas b/compiler/nadd.pas
index 7d6a118ce8..acf9e864a7 100644
--- a/compiler/nadd.pas
+++ b/compiler/nadd.pas
@@ -110,7 +110,7 @@ implementation
{$ENDIF}
globtype,systems,constexp,
cutils,verbose,globals,widestr,
- symconst,symdef,symsym,symtable,defutil,defcmp,
+ symconst,symdef,symsym,symcpu,symtable,defutil,defcmp,
cgbase,
htypechk,pass_1,
nld,nbas,nmat,ncnv,ncon,nset,nopt,ncal,ninl,nmem,nutils,
@@ -420,6 +420,11 @@ implementation
(nodetype in [addn,subn])
) or
(
+ (rt = pointerconstn) and
+ is_constintnode(left) and
+ (nodetype=addn)
+ ) or
+ (
(lt in [pointerconstn,niln]) and
(rt in [pointerconstn,niln]) and
(nodetype in [ltn,lten,gtn,gten,equaln,unequaln,subn])
@@ -460,7 +465,7 @@ implementation
{ Recover }
t:=genintconstnode(0)
end
- else if (lt=pointerconstn) then
+ else if (lt=pointerconstn) or (rt=pointerconstn) then
t := cpointerconstnode.create(qword(v),resultdef)
else
if is_integer(ld) then
@@ -1580,7 +1585,7 @@ implementation
llow:=rlow;
lhigh:=rhigh;
end;
- nd:=tsetdef.create(tsetdef(ld).elementdef,min(llow,rlow).svalue,max(lhigh,rhigh).svalue);
+ nd:=csetdef.create(tsetdef(ld).elementdef,min(llow,rlow).svalue,max(lhigh,rhigh).svalue);
inserttypeconv(left,nd);
if (rd.typ=setdef) then
inserttypeconv(right,nd)
@@ -1635,15 +1640,14 @@ implementation
inserttypeconv_internal(left,java_jlobject);
inserttypeconv_internal(right,java_jlobject);
{$elseif defined(i8086)}
- { we don't have a charfarpointertype yet, so for far pointers we use bytefarpointertype }
if is_farpointer(left.resultdef) then
- inserttypeconv_internal(left,bytefarpointertype)
+ inserttypeconv_internal(left,charfarpointertype)
else
- inserttypeconv_internal(left,charpointertype);
+ inserttypeconv_internal(left,charnearpointertype);
if is_farpointer(right.resultdef) then
- inserttypeconv_internal(right,bytefarpointertype)
+ inserttypeconv_internal(right,charfarpointertype)
else
- inserttypeconv_internal(right,charpointertype);
+ inserttypeconv_internal(right,charnearpointertype);
{$else}
inserttypeconv_internal(left,charpointertype);
inserttypeconv_internal(right,charpointertype);
@@ -2722,13 +2726,13 @@ implementation
procname:=procname+'_le';
gtn:
begin
- procname:=procname+'_le';
- notnode:=true;
+ procname:=procname+'_lt';
+ swapleftright;
end;
gten:
begin
- procname:=procname+'_lt';
- notnode:=true;
+ procname:=procname+'_le';
+ swapleftright;
end;
equaln:
procname:=procname+'_eq';
diff --git a/compiler/ncal.pas b/compiler/ncal.pas
index e38eaa5387..2454ad2a5f 100644
--- a/compiler/ncal.pas
+++ b/compiler/ncal.pas
@@ -81,6 +81,7 @@ interface
procedure register_created_object_types;
function get_expect_loc: tcgloc;
protected
+ procedure gen_syscall_para(para: tcallparanode); virtual;
procedure objc_convert_to_message_send;virtual;
protected
@@ -98,8 +99,14 @@ interface
pushedparasize : longint;
{ Objective-C support: force the call node to call the routine with
this name rather than the name of symtableprocentry (don't store
- to ppu, is set while processing the node) }
- fobjcforcedprocname: pshortstring;
+ to ppu, is set while processing the node). Also used on the JVM
+ target for calling virtual methods, as this is name-based and not
+ based on VMT entry locations }
+{$ifdef symansistr}
+ fforcedprocname: TSymStr;
+{$else symansistr}
+ fforcedprocname: pshortstring;
+{$endif symansistr}
public
{ the symbol containing the definition of the procedure }
{ to call }
@@ -217,6 +224,7 @@ interface
{ a refcounted into a non-refcounted type }
function can_be_inlined: boolean;
+ property paravalue : tnode read left write left;
property nextpara : tnode read right write right;
{ third is reused to store the parameter name (only while parsing
vardispatch calls, never in real node tree) and copy of 'high'
@@ -1202,7 +1210,9 @@ implementation
funcretnode.free;
if assigned(varargsparas) then
varargsparas.free;
- stringdispose(fobjcforcedprocname);
+{$ifndef symansistr}
+ stringdispose(fforcedprocname);
+{$endif symansistr}
inherited destroy;
end;
@@ -1342,7 +1352,7 @@ implementation
for i:=0 to varargsparas.count-1 do
begin
hp:=tparavarsym(varargsparas[i]);
- hpn:=tparavarsym.create(hp.realname,hp.paranr,hp.varspez,hp.vardef,[]);
+ hpn:=cparavarsym.create(hp.realname,hp.paranr,hp.varspez,hp.vardef,[]);
n.varargsparas.add(hpn);
para:=tcallparanode(n.left);
while assigned(para) do
@@ -1355,6 +1365,14 @@ implementation
end
else
n.varargsparas:=nil;
+{$ifdef symansistr}
+ n.fforcedprocname:=fforcedprocname;
+{$else symansistr}
+ if assigned(fforcedprocname) then
+ n.fforcedprocname:=stringdup(fforcedprocname^)
+ else
+ n.fforcedprocname:=nil;
+{$endif symansistr}
result:=n;
end;
@@ -1925,7 +1943,7 @@ implementation
be marked as instantiatable (only the pointeddef will actually be
recorded, so it's no problem that the clasrefdef is only temporary)
}
- crefdef:=tclassrefdef.create(tcallnode(methodpointer).methodpointer.resultdef);
+ crefdef:=cclassrefdef.create(tcallnode(methodpointer).methodpointer.resultdef);
{ and register it }
crefdef.register_created_object_type;
end
@@ -1985,6 +2003,13 @@ implementation
end;
+ procedure tcallnode.gen_syscall_para(para: tcallparanode);
+ begin
+ { unsupported }
+ internalerror(2014040101);
+ end;
+
+
procedure tcallnode.objc_convert_to_message_send;
var
block,
@@ -2059,7 +2084,11 @@ implementation
(srsym.typ<>procsym) or
(tprocsym(srsym).ProcdefList.count<>1) then
Message1(cg_f_unknown_compilerproc,'objc.'+msgsendname);
- fobjcforcedprocname:=stringdup(tprocdef(tprocsym(srsym).ProcdefList[0]).mangledname);
+{$ifdef symansistr}
+ fforcedprocname:=tprocdef(tprocsym(srsym).ProcdefList[0]).mangledname;
+{$else symansistr}
+ fforcedprocname:=stringdup(tprocdef(tprocsym(srsym).ProcdefList[0]).mangledname);
+{$endif symansistr}
{ B) Handle self }
{ 1) in case of sending a message to a superclass, self is a pointer to
@@ -2494,14 +2523,9 @@ implementation
begin
para.left:=gen_vmt_tree;
end
-{$if defined(powerpc) or defined(m68k)}
else
if vo_is_syscall_lib in para.parasym.varoptions then
- begin
- { lib parameter has no special type but proccalloptions must be a syscall }
- para.left:=cloadnode.create(tprocdef(procdefinition).libsym,tprocdef(procdefinition).libsym.owner);
- end
-{$endif powerpc or m68k}
+ gen_syscall_para(para)
else
if vo_is_parentfp in para.parasym.varoptions then
begin
@@ -2775,7 +2799,7 @@ implementation
begin
if cpf_varargs_para in pt.callparaflags then
begin
- varargspara:=tparavarsym.create('va'+tostr(i),i,vs_value,pt.resultdef,[]);
+ varargspara:=cparavarsym.create('va'+tostr(i),i,vs_value,pt.resultdef,[]);
dec(i);
{ varargspara is left-right, use insert
instead of concat }
@@ -3435,7 +3459,9 @@ implementation
para : tcallparanode;
begin
{ Can we inline the procedure? }
- if ([po_inline,po_has_inlininginfo] <= procdefinition.procoptions) then
+ if (po_inline in procdefinition.procoptions) and
+ (procdefinition.typ=procdef) and
+ tprocdef(procdefinition).has_inlininginfo then
begin
include(callnodeflags,cnf_do_inline);
{ Check if we can inline the procedure when it references proc/var that
@@ -3525,7 +3551,7 @@ implementation
{ allow only certain proc options }
((tprocdef(procdefinition).procoptions-[po_none,po_classmethod,po_staticmethod,
po_interrupt,po_iocheck,po_assembler,po_msgstr,po_msgint,po_exports,po_external,po_overload,
- po_nostackframe,po_has_mangledname,po_has_public_name,po_forward,po_global,po_has_inlininginfo,
+ po_nostackframe,po_has_mangledname,po_has_public_name,po_forward,po_global,
po_inline,po_compilerproc,po_has_importdll,po_has_importname,po_kylixlocal,po_dispid,po_delphi_nested_cc,
po_rtlproc,po_ignore_for_overload_resolution,po_auto_raised_visibility])=[]) then
begin
diff --git a/compiler/ncgcal.pas b/compiler/ncgcal.pas
index a32a1e4778..3bbd091bcd 100644
--- a/compiler/ncgcal.pas
+++ b/compiler/ncgcal.pas
@@ -268,7 +268,7 @@ implementation
secondpass(fparainit);
secondpass(left);
- maybechangeloadnodereg(current_asmdata.CurrAsmList,left,true);
+ hlcg.maybe_change_load_node_reg(current_asmdata.CurrAsmList,left,true);
{ release memory for refcnt out parameters }
if (parasym.varspez=vs_out) and
@@ -779,7 +779,7 @@ implementation
procedure tcgcallnode.pass_generate_code;
var
- name_to_call: shortstring;
+ name_to_call: TSymStr;
regs_to_save_int,
regs_to_save_address,
regs_to_save_fpu,
@@ -884,11 +884,13 @@ implementation
end;
{$endif vtentry}
- name_to_call:='';
- if assigned(fobjcforcedprocname) then
- name_to_call:=fobjcforcedprocname^;
- { in the JVM, virtual method calls are also name-based }
-{$ifndef jvm}
+{$ifdef symansistr}
+ name_to_call:=fforcedprocname;
+{$else symansistr}
+ name_to_call:='';
+ if assigned(fforcedprocname) then
+ name_to_call:=fforcedprocname^;
+{$endif symansistr}
{ When methodpointer is typen we don't need (and can't) load
a pointer. We can directly call the correct procdef (PFV) }
if (name_to_call='') and
@@ -967,7 +969,6 @@ implementation
extra_post_call_code;
end
else
-{$endif jvm}
begin
{ Load parameters that are in temporary registers in the
correct parameter register }
@@ -998,10 +999,9 @@ implementation
extra_call_code;
retloc.resetiftemp;
if (name_to_call='') then
- if cnf_inherited in callnodeflags then
- retloc:=hlcg.a_call_name_inherited(current_asmdata.CurrAsmList,tprocdef(procdefinition),tprocdef(procdefinition).mangledname,paralocs)
- else
- retloc:=hlcg.a_call_name(current_asmdata.CurrAsmList,tprocdef(procdefinition),tprocdef(procdefinition).mangledname,paralocs,typedef,po_weakexternal in procdefinition.procoptions)
+ name_to_call:=tprocdef(procdefinition).mangledname;
+ if cnf_inherited in callnodeflags then
+ retloc:=hlcg.a_call_name_inherited(current_asmdata.CurrAsmList,tprocdef(procdefinition),name_to_call,paralocs)
else
retloc:=hlcg.a_call_name(current_asmdata.CurrAsmList,tprocdef(procdefinition),name_to_call,paralocs,typedef,po_weakexternal in procdefinition.procoptions);
extra_post_call_code;
diff --git a/compiler/ncgcnv.pas b/compiler/ncgcnv.pas
index fd1a817630..5d8c18b4e2 100644
--- a/compiler/ncgcnv.pas
+++ b/compiler/ncgcnv.pas
@@ -273,19 +273,21 @@ interface
begin
if left.nodetype<>stringconstn then
internalerror(200601131);
- location_reset(location,LOC_REGISTER,OS_ADDR);
+ if not is_pchar(resultdef) and not is_pwidechar(resultdef) then
+ internalerror(2014032802);
+ location_reset(location,LOC_REGISTER,def_cgsize(resultdef));
case tstringconstnode(left).cst_type of
cst_conststring :
begin
- location.register:=cg.getaddressregister(current_asmdata.CurrAsmList);
- cg.a_loadaddr_ref_reg(current_asmdata.CurrAsmList,left.location.reference,location.register);
+ location.register:=hlcg.getaddressregister(current_asmdata.CurrAsmList,resultdef);
+ hlcg.a_loadaddr_ref_reg(current_asmdata.CurrAsmList,left.resultdef,resultdef,left.location.reference,location.register);
end;
cst_shortstring :
begin
inc(left.location.reference.offset);
location.reference.alignment:=1;
- location.register:=cg.getaddressregister(current_asmdata.CurrAsmList);
- cg.a_loadaddr_ref_reg(current_asmdata.CurrAsmList,left.location.reference,location.register);
+ location.register:=hlcg.getaddressregister(current_asmdata.CurrAsmList,resultdef);
+ hlcg.a_loadaddr_ref_reg(current_asmdata.CurrAsmList,left.resultdef,resultdef,left.location.reference,location.register);
end;
cst_widestring,
cst_unicodestring,
@@ -296,8 +298,8 @@ interface
{ FPC_EMPTYCHAR is a widechar -> 2 bytes }
reference_reset(hr,2);
hr.symbol:=current_asmdata.RefAsmSymbol('FPC_EMPTYCHAR');
- location.register:=cg.getaddressregister(current_asmdata.CurrAsmList);
- cg.a_loadaddr_ref_reg(current_asmdata.CurrAsmList,hr,location.register);
+ location.register:=hlcg.getaddressregister(current_asmdata.CurrAsmList,resultdef);
+ hlcg.a_loadaddr_ref_reg(current_asmdata.CurrAsmList,left.resultdef,resultdef,hr,location.register);
end
else
begin
@@ -338,8 +340,8 @@ interface
procedure tcgtypeconvnode.second_array_to_pointer;
begin
- location_reset(location,LOC_REGISTER,OS_ADDR);
- location.register:=cg.getaddressregister(current_asmdata.CurrAsmList);
+ location_reset(location,LOC_REGISTER,def_cgsize(resultdef));
+ location.register:=hlcg.getaddressregister(current_asmdata.CurrAsmList,resultdef);
hlcg.a_loadaddr_ref_reg(current_asmdata.CurrAsmList,left.resultdef,resultdef,left.location.reference,location.register);
end;
@@ -362,7 +364,7 @@ interface
end
else
{$endif}
- location.reference.base := left.location.register;
+ hlcg.reference_reset_base(location.reference,left.resultdef,left.location.register,0,location.reference.alignment);
end;
LOC_REFERENCE,
LOC_CREFERENCE,
@@ -372,7 +374,8 @@ interface
LOC_SUBSETREF,
LOC_CSUBSETREF:
begin
- location.reference.base:=cg.getaddressregister(current_asmdata.CurrAsmList);
+ hlcg.reference_reset_base(location.reference,left.resultdef,
+ hlcg.getaddressregister(current_asmdata.CurrAsmList,left.resultdef),0,location.reference.alignment);
hlcg.a_load_loc_reg(current_asmdata.CurrAsmList,left.resultdef,left.resultdef,left.location,
location.reference.base);
if left.location.loc in [LOC_REFERENCE,LOC_CREFERENCE] then
@@ -421,7 +424,7 @@ interface
(left.location.size in [OS_F80,OS_C64]) then
begin
if (left.location.loc in [LOC_CREFERENCE,LOC_REFERENCE]) then
- location_force_fpureg(current_asmdata.CurrAsmList,left.location,false);
+ hlcg.location_force_fpureg(current_asmdata.CurrAsmList,left.location,left.resultdef,false);
{ round them down to the proper precision }
tg.gethltemp(current_asmdata.currasmlist,resultdef,resultdef.size,tt_normal,tr);
hlcg.a_loadfpu_reg_ref(current_asmdata.CurrAsmList,left.resultdef,resultdef,left.location.register,tr);
@@ -512,19 +515,19 @@ interface
begin
if tabstractprocdef(resultdef).is_addressonly then
begin
- location_reset(location,LOC_REGISTER,OS_ADDR);
+ location_reset(location,LOC_REGISTER,def_cgsize(voidcodepointertype));
{ only a code pointer? (when taking the address of classtype.method
we also only get a code pointer even though the resultdef is a
procedure of object, and hence is_addressonly would return false)
}
- if left.location.size = OS_ADDR then
+ if left.location.size = def_cgsize(voidcodepointertype) then
begin
case left.location.loc of
LOC_REFERENCE,LOC_CREFERENCE:
begin
{ the procedure symbol is encoded in reference.symbol -> take address }
- location.register:=cg.getaddressregister(current_asmdata.CurrAsmList);
- cg.a_loadaddr_ref_reg(current_asmdata.CurrAsmList,left.location.reference,location.register);
+ location.register:=hlcg.getaddressregister(current_asmdata.CurrAsmList,voidcodepointertype);
+ hlcg.a_loadaddr_ref_reg(current_asmdata.CurrAsmList,left.resultdef,voidcodepointertype,left.location.reference,location.register);
end;
else
internalerror(2013031501)
@@ -536,9 +539,9 @@ interface
case left.location.loc of
LOC_REFERENCE,LOC_CREFERENCE:
begin
- location.register:=cg.getaddressregister(current_asmdata.CurrAsmList);
+ location.register:=hlcg.getaddressregister(current_asmdata.CurrAsmList,voidcodepointertype);
{ code field is the first one }
- cg.a_load_ref_reg(current_asmdata.CurrAsmList,OS_ADDR,OS_ADDR,left.location.reference,location.register);
+ hlcg.a_load_ref_reg(current_asmdata.CurrAsmList,voidcodepointertype,voidcodepointertype,left.location.reference,location.register);
end;
LOC_REGISTER,LOC_CREGISTER:
begin
@@ -562,40 +565,28 @@ interface
tmethodpointer record and set the "frame pointer" to nil }
if not(left.location.loc in [LOC_REFERENCE,LOC_CREFERENCE]) then
internalerror(2013031503);
- location_reset_ref(location,LOC_REFERENCE,int_cgsize(sizeof(pint)*2),sizeof(pint));
+ location_reset_ref(location,LOC_REFERENCE,int_cgsize(resultdef.size),sizeof(pint));
tg.gethltemp(current_asmdata.CurrAsmList,resultdef,resultdef.size,tt_normal,location.reference);
- tmpreg:=cg.getaddressregister(current_asmdata.CurrAsmList);
- cg.a_loadaddr_ref_reg(current_asmdata.CurrAsmList,left.location.reference,tmpreg);
- cg.a_load_reg_ref(current_asmdata.CurrAsmList,OS_ADDR,OS_ADDR,tmpreg,location.reference);
+ tmpreg:=hlcg.getaddressregister(current_asmdata.CurrAsmList,voidcodepointertype);
+ hlcg.a_loadaddr_ref_reg(current_asmdata.CurrAsmList,left.resultdef,voidcodepointertype,left.location.reference,tmpreg);
+ hlcg.a_load_reg_ref(current_asmdata.CurrAsmList,voidcodepointertype,voidcodepointertype,tmpreg,location.reference);
{ setting the frame pointer to nil is not strictly necessary
since the global procedure won't use it, but it can help with
debugging }
- inc(location.reference.offset,sizeof(pint));
- cg.a_load_const_ref(current_asmdata.CurrAsmList,OS_ADDR,0,location.reference);
- dec(location.reference.offset,sizeof(pint));
+ inc(location.reference.offset,voidcodepointertype.size);
+ hlcg.a_load_const_ref(current_asmdata.CurrAsmList,voidpointertype,0,location.reference);
+ dec(location.reference.offset,voidcodepointertype.size);
end;
end;
end;
procedure Tcgtypeconvnode.second_nil_to_methodprocvar;
- {$ifdef jvm}
- var r:Treference;
- {$endif}
begin
-{$ifdef jvm}
-{$ifndef nounsupported}
- tg.gethltemp(current_asmdata.currasmlist,java_jlobject,java_jlobject.size,tt_normal,r);
- hlcg.a_load_const_ref(current_asmdata.CurrAsmList,java_jlobject,0,r);
- location_reset_ref(location,LOC_REFERENCE,def_cgsize(resultdef),1);
- location.reference:=r;
- exit;
-{$endif}
-{$endif}
location_reset(location,LOC_REGISTER,def_cgsize(resultdef));
- location.registerhi:=cg.getaddressregister(current_asmdata.currasmlist);
- cg.a_load_const_reg(current_asmdata.currasmlist,OS_ADDR,0,location.registerhi);
- location.register:=cg.getaddressregister(current_asmdata.currasmlist);
- cg.a_load_const_reg(current_asmdata.currasmlist,OS_ADDR,0,location.register);
+ location.registerhi:=hlcg.getaddressregister(current_asmdata.currasmlist,voidpointertype);
+ hlcg.a_load_const_reg(current_asmdata.currasmlist,voidpointertype,0,location.registerhi);
+ location.register:=hlcg.getaddressregister(current_asmdata.currasmlist,voidcodepointertype);
+ hlcg.a_load_const_reg(current_asmdata.currasmlist,voidcodepointertype,0,location.register);
end;
procedure tcgtypeconvnode.second_bool_to_int;
@@ -670,17 +661,17 @@ interface
l1 : tasmlabel;
hr : treference;
begin
- location_reset(location,LOC_REGISTER,OS_ADDR);
+ location_reset(location,LOC_REGISTER,def_cgsize(resultdef));
current_asmdata.getjumplabel(l1);
- location.register:=cg.getaddressregister(current_asmdata.CurrAsmList);
- cg.a_load_loc_reg(current_asmdata.CurrAsmList,OS_ADDR,
+ location.register:=hlcg.getaddressregister(current_asmdata.CurrAsmList,resultdef);
+ hlcg.a_load_loc_reg(current_asmdata.CurrAsmList,left.resultdef,resultdef,
left.location,location.register);
- cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_ADDR,OC_NE,0,location.register,l1);
+ hlcg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,resultdef,OC_NE,0,location.register,l1);
{ FPC_EMPTYCHAR is a widechar -> 2 bytes }
reference_reset(hr,2);
hr.symbol:=current_asmdata.RefAsmSymbol('FPC_EMPTYCHAR');
- cg.a_loadaddr_ref_reg(current_asmdata.CurrAsmList,hr,location.register);
- cg.a_label(current_asmdata.CurrAsmList,l1);
+ hlcg.a_loadaddr_ref_reg(current_asmdata.CurrAsmList,left.resultdef,resultdef,hr,location.register);
+ hlcg.a_label(current_asmdata.CurrAsmList,l1);
end;
@@ -691,19 +682,19 @@ interface
ImplIntf : TImplementedInterface;
begin
l1:=nil;
- location_reset(location,LOC_REGISTER,OS_ADDR);
+ location_reset(location,LOC_REGISTER,def_cgsize(resultdef));
case left.location.loc of
LOC_CREFERENCE,
LOC_REFERENCE:
begin
- location.register:=cg.getaddressregister(current_asmdata.CurrAsmList);
- cg.a_load_ref_reg(current_asmdata.CurrAsmList,OS_ADDR,OS_ADDR,left.location.reference,location.register);
+ location.register:=hlcg.getaddressregister(current_asmdata.CurrAsmList,resultdef);
+ hlcg.a_load_ref_reg(current_asmdata.CurrAsmList,left.resultdef,resultdef,left.location.reference,location.register);
location_freetemp(current_asmdata.CurrAsmList,left.location);
end;
LOC_CREGISTER:
begin
- location.register:=cg.getaddressregister(current_asmdata.CurrAsmList);
- cg.a_load_reg_reg(current_asmdata.CurrAsmList,OS_ADDR,OS_ADDR,left.location.register,location.register);
+ location.register:=hlcg.getaddressregister(current_asmdata.CurrAsmList,resultdef);
+ hlcg.a_load_reg_reg(current_asmdata.CurrAsmList,left.resultdef,resultdef,left.location.register,location.register);
end;
LOC_REGISTER:
location.register:=left.location.register;
@@ -720,7 +711,10 @@ interface
etStandard:
begin
current_asmdata.getjumplabel(l1);
- cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_ADDR,OC_EQ,0,location.register,l1);
+ hlcg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,resultdef,OC_EQ,0,location.register,l1);
+ { todo: consider adding far pointer support to hlcg.a_op_const_reg for i8086 (i.e. perform the
+ arithmetic operation only on the offset), then the next line can be converted to the
+ high level code generator as well }
cg.a_op_const_reg(current_asmdata.CurrAsmList,OP_ADD,OS_ADDR,ImplIntf.ioffset,location.register);
break;
end;
@@ -759,17 +753,15 @@ interface
{ Floats should never be returned as LOC_CONSTANT, do the
moving to memory before the new size is set.
+
Also when converting from a float to a non-float
- or the other way round, move to memory first to prevent
- invalid LOC_FPUREGISTER locations }
+ move to memory first to prevent
+ invalid LOC_(C)MM/FPUREGISTER locations }
if (
(resultdef.typ=floatdef) and
(location.loc=LOC_CONSTANT)
) or
- (
- (left.resultdef.typ=floatdef) xor
- (resultdef.typ=floatdef)
- ) then
+ ((resultdef.typ=floatdef) xor (location.loc in [LOC_CFPUREGISTER,LOC_FPUREGISTER,LOC_CMMREGISTER,LOC_MMREGISTER])) then
hlcg.location_force_mem(current_asmdata.CurrAsmList,location,left.resultdef);
{ but use the new size, but we don't know the size of all arrays }
diff --git a/compiler/ncgcon.pas b/compiler/ncgcon.pas
index a21c239f6c..0cd1da2ffc 100644
--- a/compiler/ncgcon.pas
+++ b/compiler/ncgcon.pas
@@ -76,7 +76,7 @@ implementation
symconst,symdef,aasmtai,aasmdata,aasmcpu,defutil,
cpuinfo,cpubase,
cgbase,cgobj,cgutils,
- ncgutil, cclasses,asmutils,tgobj
+ ncgutil,hlcgobj,symtype,cclasses,asmutils,tgobj
;
@@ -264,6 +264,8 @@ implementation
pool: THashSet;
entry: PHashSetItem;
winlikewidestring: boolean;
+ elementdef: tdef;
+ strpointerdef: tdef;
const
PoolMap: array[tconststringtype] of TConstPoolType = (
@@ -275,10 +277,27 @@ implementation
sp_unicodestr
);
begin
+ case cst_type of
+ cst_shortstring,
+ cst_conststring,
+ cst_ansistring:
+ begin
+ elementdef:=cansichartype;
+ strpointerdef:=charpointertype;
+ end;
+ cst_widestring,
+ cst_unicodestring:
+ begin
+ elementdef:=cwidechartype;
+ strpointerdef:=widecharpointertype;
+ end;
+ else
+ internalerror(2014032803);
+ end;
{ for empty ansistrings we could return a constant 0 }
if (cst_type in [cst_ansistring,cst_widestring,cst_unicodestring]) and (len=0) then
begin
- location_reset(location,LOC_CONSTANT,OS_ADDR);
+ location_reset(location,LOC_CONSTANT,def_cgsize(strpointerdef));
location.value:=0;
exit;
end;
@@ -373,16 +392,16 @@ implementation
end;
if cst_type in [cst_ansistring, cst_widestring, cst_unicodestring] then
begin
- location_reset(location, LOC_REGISTER, OS_ADDR);
+ location_reset(location, LOC_REGISTER, def_cgsize(strpointerdef));
reference_reset_symbol(href, lab_str,
get_string_symofs(tstringdef(resultdef).stringtype,winlikewidestring),
- const_align(sizeof(pint)));
- location.register:=cg.getaddressregister(current_asmdata.CurrAsmList);
- cg.a_loadaddr_ref_reg(current_asmdata.CurrAsmList,href,location.register);
+ const_align(strpointerdef.size));
+ location.register:=hlcg.getaddressregister(current_asmdata.CurrAsmList,strpointerdef);
+ hlcg.a_loadaddr_ref_reg(current_asmdata.CurrAsmList,elementdef,strpointerdef,href,location.register)
end
else
begin
- location_reset_ref(location, LOC_CREFERENCE, def_cgsize(resultdef), const_align(sizeof(pint)));
+ location_reset_ref(location, LOC_CREFERENCE, def_cgsize(resultdef), const_align(strpointerdef.size));
location.reference.symbol:=lab_str;
end;
end;
diff --git a/compiler/ncgflw.pas b/compiler/ncgflw.pas
index 110bde6644..c0d73c431c 100644
--- a/compiler/ncgflw.pas
+++ b/compiler/ncgflw.pas
@@ -508,7 +508,7 @@ implementation
current_procinfo.CurrFalseLabel:=ofl;
end;
- maybechangeloadnodereg(current_asmdata.CurrAsmList,left,false);
+ hlcg.maybe_change_load_node_reg(current_asmdata.CurrAsmList,left,false);
oldflowcontrol:=flowcontrol;
include(flowcontrol,fc_inflowcontrol);
{ produce start assignment }
@@ -1263,6 +1263,8 @@ implementation
paraloc1 : tcgpara;
exceptvarsym : tlocalvarsym;
pd : tprocdef;
+ fpc_catches_res: TCGPara;
+ fpc_catches_resloc: tlocation;
begin
paraloc1.init;
location_reset(location,LOC_VOID,OS_NO);
@@ -1281,11 +1283,13 @@ implementation
paramanager.getintparaloc(pd,1,paraloc1);
cg.a_loadaddr_ref_cgpara(current_asmdata.CurrAsmList,href2,paraloc1);
paramanager.freecgpara(current_asmdata.CurrAsmList,paraloc1);
- cg.g_call(current_asmdata.CurrAsmList,'FPC_CATCHES');
+ fpc_catches_res:=hlcg.g_call_system_proc(current_asmdata.CurrAsmList,pd,[@paraloc1],nil);
+ location_reset(fpc_catches_resloc,LOC_REGISTER,def_cgsize(fpc_catches_res.def));
+ fpc_catches_resloc.register:=hlcg.getaddressregister(current_asmdata.CurrAsmList,fpc_catches_res.def);
+ hlcg.gen_load_cgpara_loc(current_asmdata.CurrAsmList,fpc_catches_res.def,fpc_catches_res,fpc_catches_resloc,true);
- cg.a_reg_alloc(current_asmdata.CurrAsmList,NR_FUNCTION_RESULT_REG);
{ is it this catch? No. go to next onlabel }
- cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_ADDR,OC_EQ,0,NR_FUNCTION_RESULT_REG,nextonlabel);
+ hlcg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,fpc_catches_res.def,OC_EQ,0,fpc_catches_resloc.register,nextonlabel);
{ Retrieve exception variable }
if assigned(excepTSymtable) then
@@ -1295,11 +1299,10 @@ implementation
if assigned(exceptvarsym) then
begin
- location_reset_ref(exceptvarsym.localloc,LOC_REFERENCE,OS_ADDR,sizeof(pint));
- tg.GetLocal(current_asmdata.CurrAsmList,sizeof(pint),voidpointertype,exceptvarsym.localloc.reference);
- cg.a_load_reg_ref(current_asmdata.CurrAsmList,OS_ADDR,OS_ADDR,NR_FUNCTION_RESULT_REG,exceptvarsym.localloc.reference);
+ location_reset_ref(exceptvarsym.localloc,LOC_REFERENCE,def_cgsize(voidpointertype),voidpointertype.alignment);
+ tg.GetLocal(current_asmdata.CurrAsmList,voidpointertype.size,voidpointertype,exceptvarsym.localloc.reference);
+ hlcg.a_load_reg_ref(current_asmdata.CurrAsmList,fpc_catches_res.def,voidpointertype,fpc_catches_resloc.register,exceptvarsym.localloc.reference);
end;
- cg.a_reg_dealloc(current_asmdata.CurrAsmList,NR_FUNCTION_RESULT_REG);
{ in the case that another exception is risen
we've to destroy the old one }
diff --git a/compiler/ncginl.pas b/compiler/ncginl.pas
index e2f5b71bbe..d6348d324d 100644
--- a/compiler/ncginl.pas
+++ b/compiler/ncginl.pas
@@ -60,6 +60,7 @@ interface
procedure second_box; virtual; abstract;
procedure second_popcnt; virtual;
procedure second_seg; virtual; abstract;
+ procedure second_fma; virtual;
end;
implementation
@@ -190,6 +191,11 @@ implementation
second_popcnt;
in_seg_x:
second_seg;
+ in_fma_single,
+ in_fma_double,
+ in_fma_extended,
+ in_fma_float128:
+ second_fma;
else internalerror(9);
end;
end;
@@ -207,21 +213,18 @@ implementation
hrefvmt : treference;
hregister : tregister;
begin
- if inlinenumber=in_sizeof_x then
- location_reset(location,LOC_REGISTER,def_cgsize(resultdef))
- else
- location_reset(location,LOC_REGISTER,OS_ADDR);
+ location_reset(location,LOC_REGISTER,def_cgsize(resultdef));
{ for both cases load vmt }
if left.nodetype=typen then
begin
- hregister:=cg.getaddressregister(current_asmdata.CurrAsmList);
- reference_reset_symbol(href,current_asmdata.RefAsmSymbol(tobjectdef(left.resultdef).vmt_mangledname,AT_DATA),0,sizeof(pint));
- cg.a_loadaddr_ref_reg(current_asmdata.CurrAsmList,href,hregister);
+ hregister:=hlcg.getaddressregister(current_asmdata.CurrAsmList,voidpointertype);
+ reference_reset_symbol(href,current_asmdata.RefAsmSymbol(tobjectdef(left.resultdef).vmt_mangledname,AT_DATA),0,voidpointertype.size);
+ hlcg.a_loadaddr_ref_reg(current_asmdata.CurrAsmList,voidpointertype,voidpointertype,href,hregister);
end
else
begin
secondpass(left);
- hregister:=cg.getaddressregister(current_asmdata.CurrAsmList);
+ hregister:=hlcg.getaddressregister(current_asmdata.CurrAsmList,voidpointertype);
{ handle self inside a method of a class }
case left.location.loc of
@@ -230,12 +233,12 @@ implementation
begin
if (left.resultdef.typ=classrefdef) or
(po_staticmethod in current_procinfo.procdef.procoptions) then
- cg.a_load_reg_reg(current_asmdata.CurrAsmList,OS_ADDR,OS_ADDR,left.location.register,hregister)
+ hlcg.a_load_reg_reg(current_asmdata.CurrAsmList,voidpointertype,voidpointertype,left.location.register,hregister)
else
begin
{ load VMT pointer }
- reference_reset_base(hrefvmt,left.location.register,tobjectdef(left.resultdef).vmt_offset,sizeof(pint));
- cg.a_load_ref_reg(current_asmdata.CurrAsmList,OS_ADDR,OS_ADDR,hrefvmt,hregister);
+ hlcg.reference_reset_base(hrefvmt,voidpointertype,left.location.register,tobjectdef(left.resultdef).vmt_offset,voidpointertype.size);
+ hlcg.a_load_ref_reg(current_asmdata.CurrAsmList,voidpointertype,voidpointertype,hrefvmt,hregister);
end
end;
LOC_REFERENCE,
@@ -244,11 +247,11 @@ implementation
if is_class(left.resultdef) then
begin
{ deref class }
- cg.a_load_ref_reg(current_asmdata.CurrAsmList,OS_ADDR,OS_ADDR,left.location.reference,hregister);
+ hlcg.a_load_ref_reg(current_asmdata.CurrAsmList,voidpointertype,voidpointertype,left.location.reference,hregister);
hlcg.g_maybe_testself(current_asmdata.CurrAsmList,left.resultdef,hregister);
{ load VMT pointer }
- reference_reset_base(hrefvmt,hregister,tobjectdef(left.resultdef).vmt_offset,sizeof(pint));
- cg.a_load_ref_reg(current_asmdata.CurrAsmList,OS_ADDR,OS_ADDR,hrefvmt,hregister);
+ hlcg.reference_reset_base(hrefvmt,voidpointertype,hregister,tobjectdef(left.resultdef).vmt_offset,voidpointertype.size);
+ hlcg.a_load_ref_reg(current_asmdata.CurrAsmList,voidpointertype,voidpointertype,hrefvmt,hregister);
end
else
begin
@@ -258,7 +261,7 @@ implementation
inc(left.location.reference.offset,tobjectdef(left.resultdef).vmt_offset);
left.location.reference.alignment:=newalignment(left.location.reference.alignment,tobjectdef(left.resultdef).vmt_offset);
end;
- cg.a_load_ref_reg(current_asmdata.CurrAsmList,OS_ADDR,OS_ADDR,left.location.reference,hregister);
+ hlcg.a_load_ref_reg(current_asmdata.CurrAsmList,voidpointertype,voidpointertype,left.location.reference,hregister);
end;
end;
else
@@ -268,7 +271,7 @@ implementation
{ in sizeof load size }
if inlinenumber=in_sizeof_x then
begin
- reference_reset_base(href,hregister,0,sizeof(pint));
+ hlcg.reference_reset_base(href,voidpointertype,hregister,0,voidpointertype.size);
hregister:=cg.getintregister(current_asmdata.CurrAsmList,OS_INT);
cg.a_load_ref_reg(current_asmdata.CurrAsmList,OS_INT,OS_INT,href,hregister);
end;
@@ -297,16 +300,16 @@ implementation
{ length in ansi/wide strings and high in dynamic arrays is at offset -sizeof(pint) }
hlcg.location_force_reg(current_asmdata.CurrAsmList,left.location,left.resultdef,left.resultdef,false);
current_asmdata.getjumplabel(lengthlab);
- cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_ADDR,OC_EQ,0,left.location.register,lengthlab);
+ hlcg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,left.resultdef,OC_EQ,0,left.location.register,lengthlab);
if is_widestring(left.resultdef) and (tf_winlikewidestring in target_info.flags) then
begin
- reference_reset_base(href,left.location.register,-sizeof(dword),sizeof(dword));
+ hlcg.reference_reset_base(href,left.resultdef,left.location.register,-sizeof(dword),sizeof(dword));
hregister:=cg.makeregsize(current_asmdata.CurrAsmList,left.location.register,OS_INT);
cg.a_load_ref_reg(current_asmdata.CurrAsmList,OS_32,OS_INT,href,hregister);
end
else
begin
- reference_reset_base(href,left.location.register,-sizeof(pint),sizeof(pint));
+ hlcg.reference_reset_base(href,left.resultdef,left.location.register,-sizeof(pint),sizeof(pint));
hregister:=cg.makeregsize(current_asmdata.CurrAsmList,left.location.register,OS_INT);
cg.a_load_ref_reg(current_asmdata.CurrAsmList,OS_INT,OS_INT,href,hregister);
end;
@@ -771,6 +774,12 @@ implementation
end;
+ procedure tcginlinenode.second_fma;
+ begin
+ internalerror(2014032701);
+ end;
+
+
begin
cinlinenode:=tcginlinenode;
end. s
diff --git a/compiler/ncgld.pas b/compiler/ncgld.pas
index e92fdeefe5..abbe8e184f 100644
--- a/compiler/ncgld.pas
+++ b/compiler/ncgld.pas
@@ -28,7 +28,7 @@ interface
uses
globtype,
- symtype,
+ symtype,symsym,
aasmdata,
node,nld,cgutils;
@@ -36,6 +36,7 @@ interface
tcgloadnode = class(tloadnode)
protected
procedure generate_nested_access(vs: tsym);virtual;
+ procedure generate_absaddr_access(vs: tabsolutevarsym); virtual;
public
procedure pass_generate_code;override;
procedure changereflocation(const ref: treference);
@@ -68,7 +69,7 @@ implementation
systems,
verbose,globals,constexp,
nutils,
- symtable,symconst,symdef,symsym,defutil,paramgr,ncon,nbas,ncgrtti,
+ symtable,symconst,symdef,defutil,paramgr,ncon,nbas,ncgrtti,
aasmbase,
cgbase,pass_2,
procinfo,
@@ -241,7 +242,13 @@ implementation
internalerror(200309286);
if lvs.localloc.loc<>LOC_REFERENCE then
internalerror(200409241);
- reference_reset_base(location.reference,left.location.register,lvs.localloc.reference.offset,lvs.localloc.reference.alignment);
+ hlcg.reference_reset_base(location.reference,left.resultdef,left.location.register,lvs.localloc.reference.offset,lvs.localloc.reference.alignment);
+ end;
+
+
+ procedure tcgloadnode.generate_absaddr_access(vs: tabsolutevarsym);
+ begin
+ location.reference.offset:=aint(vs.addroffset);
end;
@@ -269,19 +276,7 @@ implementation
{ this is only for toasm and toaddr }
case tabsolutevarsym(symtableentry).abstyp of
toaddr :
- begin
-{$if defined(i8086)}
- if tabsolutevarsym(symtableentry).absseg then
- begin
- location.reference.segment:=cg.getintregister(current_asmdata.CurrAsmList,OS_16);
- cg.a_load_const_reg(current_asmdata.CurrAsmList,OS_16,aint(tabsolutevarsym(symtableentry).addrsegment),location.reference.segment);
- end;
-{$elseif defined(i386)}
- if tabsolutevarsym(symtableentry).absseg then
- location.reference.segment:=NR_FS;
-{$endif}
- location.reference.offset:=aint(tabsolutevarsym(symtableentry).addroffset);
- end;
+ generate_absaddr_access(tabsolutevarsym(symtableentry));
toasm :
location.reference.symbol:=current_asmdata.RefAsmSymbol(tabsolutevarsym(symtableentry).mangledname);
else
@@ -292,7 +287,7 @@ implementation
begin
if tconstsym(symtableentry).consttyp=constresourcestring then
begin
- location_reset_ref(location,LOC_CREFERENCE,OS_ADDR,sizeof(pint));
+ location_reset_ref(location,LOC_CREFERENCE,def_cgsize(cansistringtype),cansistringtype.size);
location.reference.symbol:=current_asmdata.RefAsmSymbol(make_mangledname('RESSTR',symtableentry.owner,symtableentry.name),AT_DATA);
{ Resourcestring layout:
TResourceStringRecord = Packed Record
@@ -302,7 +297,7 @@ implementation
HashValue : LongWord;
end;
}
- location.reference.offset:=sizeof(pint);
+ location.reference.offset:=cansistringtype.size;
end
else
internalerror(22798);
@@ -383,10 +378,10 @@ implementation
internalerror(2012120901);
paraloc1.init;
paramanager.getintparaloc(tprocvardef(pvd),1,paraloc1);
- hregister:=cg.getaddressregister(current_asmdata.CurrAsmList);
- reference_reset_symbol(href,current_asmdata.RefAsmSymbol('FPC_THREADVAR_RELOCATE'),0,sizeof(pint));
- cg.a_load_ref_reg(current_asmdata.CurrAsmList,OS_ADDR,OS_ADDR,href,hregister);
- cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_ADDR,OC_EQ,0,hregister,norelocatelab);
+ hregister:=hlcg.getaddressregister(current_asmdata.CurrAsmList,pvd);
+ reference_reset_symbol(href,current_asmdata.RefAsmSymbol('FPC_THREADVAR_RELOCATE'),0,pvd.size);
+ hlcg.a_load_ref_reg(current_asmdata.CurrAsmList,pvd,pvd,href,hregister);
+ hlcg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,pvd,OC_EQ,0,hregister,norelocatelab);
{ don't save the allocated register else the result will be destroyed later }
if not(vo_is_weak_external in gvs.varoptions) then
reference_reset_symbol(href,current_asmdata.RefAsmSymbol(gvs.mangledname),0,sizeof(pint))
@@ -400,7 +395,7 @@ implementation
cg.deallocallcpuregisters(current_asmdata.CurrAsmList);
cg.getcpuregister(current_asmdata.CurrAsmList,NR_FUNCTION_RESULT_REG);
cg.ungetcpuregister(current_asmdata.CurrAsmList,NR_FUNCTION_RESULT_REG);
- hregister:=cg.getaddressregister(current_asmdata.CurrAsmList);
+ hregister:=hlcg.getaddressregister(current_asmdata.CurrAsmList,voidpointertype);
cg.a_load_reg_reg(current_asmdata.CurrAsmList,OS_INT,OS_ADDR,NR_FUNCTION_RESULT_REG,hregister);
cg.a_jmp_always(current_asmdata.CurrAsmList,endrelocatelab);
cg.a_label(current_asmdata.CurrAsmList,norelocatelab);
@@ -412,9 +407,9 @@ implementation
reference_reset_symbol(href,current_asmdata.RefAsmSymbol(gvs.mangledname),sizeof(pint),sizeof(pint))
else
reference_reset_symbol(href,current_asmdata.WeakRefAsmSymbol(gvs.mangledname),sizeof(pint),sizeof(pint));
- cg.a_loadaddr_ref_reg(current_asmdata.CurrAsmList,href,hregister);
+ hlcg.a_loadaddr_ref_reg(current_asmdata.CurrAsmList,resultdef,voidpointertype,href,hregister);
cg.a_label(current_asmdata.CurrAsmList,endrelocatelab);
- location.reference.base:=hregister;
+ hlcg.reference_reset_base(location.reference,voidpointertype,hregister,0,location.reference.alignment);
end;
end
{ Normal (or external) variable }
@@ -456,7 +451,7 @@ implementation
vd:=getpointerdef(resultdef);
hregister:=hlcg.getaddressregister(current_asmdata.CurrAsmList,vd);
{ we need to load only an address }
- location.size:=OS_ADDR;
+ location.size:=int_cgsize(vd.size);
hlcg.a_load_loc_reg(current_asmdata.CurrAsmList,vd,vd,location,hregister);
end;
{ assume packed records may always be unaligned }
@@ -465,7 +460,7 @@ implementation
location_reset_ref(location,LOC_REFERENCE,newsize,resultdef.alignment)
else
location_reset_ref(location,LOC_REFERENCE,newsize,1);
- location.reference.base:=hregister;
+ hlcg.reference_reset_base(location.reference,voidpointertype,hregister,0,location.reference.alignment);
end;
{ make const a LOC_CREFERENCE }
@@ -498,11 +493,16 @@ implementation
LOC_CREFERENCE,
LOC_REFERENCE:
begin
- location.registerhi:=cg.getaddressregister(current_asmdata.CurrAsmList);
if not is_object(left.resultdef) then
- cg.a_load_ref_reg(current_asmdata.CurrAsmList,OS_ADDR,OS_ADDR,left.location.reference,location.registerhi)
+ begin
+ location.registerhi:=hlcg.getaddressregister(current_asmdata.CurrAsmList,left.resultdef);
+ hlcg.a_load_ref_reg(current_asmdata.CurrAsmList,left.resultdef,left.resultdef,left.location.reference,location.registerhi)
+ end
else
- cg.a_loadaddr_ref_reg(current_asmdata.CurrAsmList,left.location.reference,location.registerhi);
+ begin
+ location.registerhi:=hlcg.getaddressregister(current_asmdata.CurrAsmList,voidpointertype);
+ hlcg.a_loadaddr_ref_reg(current_asmdata.CurrAsmList,left.resultdef,voidpointertype,left.location.reference,location.registerhi);
+ end;
location_freetemp(current_asmdata.CurrAsmList,left.location);
end;
else
@@ -528,47 +528,23 @@ implementation
if (left.resultdef.typ<>classrefdef) then
begin
{ load vmt pointer }
- reference_reset_base(href,location.registerhi,tobjectdef(left.resultdef).vmt_offset,sizeof(pint));
- hregister:=cg.getaddressregister(current_asmdata.CurrAsmList);
- cg.a_load_ref_reg(current_asmdata.CurrAsmList,OS_ADDR,OS_ADDR,href,hregister);
+ hlcg.reference_reset_base(href,voidpointertype,location.registerhi,tobjectdef(left.resultdef).vmt_offset,voidpointertype.alignment);
+ hregister:=hlcg.getaddressregister(current_asmdata.CurrAsmList,voidpointertype);
+ hlcg.a_load_ref_reg(current_asmdata.CurrAsmList,voidpointertype,voidpointertype,href,hregister);
end
else
hregister:=location.registerhi;
{ load method address }
-{$ifdef i8086}
- if po_far in procdef.procoptions then
- begin
- reference_reset_base(href,hregister,tobjectdef(procdef.struct).vmtmethodoffset(procdef.extnumber),4);
- location.register:=cg.getintregister(current_asmdata.CurrAsmList,OS_32);
- cg.a_load_ref_reg(current_asmdata.CurrAsmList,OS_32,OS_32,href,location.register);
- end
- else
-{$endif i8086}
- begin
- reference_reset_base(href,hregister,tobjectdef(procdef.struct).vmtmethodoffset(procdef.extnumber),sizeof(pint));
- location.register:=cg.getaddressregister(current_asmdata.CurrAsmList);
- cg.a_load_ref_reg(current_asmdata.CurrAsmList,OS_ADDR,OS_ADDR,href,location.register);
- end;
+ hlcg.reference_reset_base(href,voidpointertype,hregister,tobjectdef(procdef.struct).vmtmethodoffset(procdef.extnumber),voidpointertype.alignment);
+ location.register:=hlcg.getaddressregister(current_asmdata.CurrAsmList,procdef.address_type);
+ hlcg.a_load_ref_reg(current_asmdata.CurrAsmList,procdef.address_type,procdef.address_type,href,location.register);
end
else
begin
{ load address of the function }
-{$ifdef i8086}
- if po_far in procdef.procoptions then
- begin
- reference_reset_symbol(href,current_asmdata.RefAsmSymbol(procdef.mangledname),0,sizeof(pint));
- location.register:=cg.getintregister(current_asmdata.CurrAsmList,OS_32);
- cg.a_loadaddr_ref_reg(current_asmdata.CurrAsmList,href,location.register);
- href.refaddr:=addr_seg;
- cg.a_load_ref_reg(current_asmdata.CurrAsmList,OS_16,OS_16,href,GetNextReg(location.register));
- end
- else
-{$endif i8086}
- begin
- reference_reset_symbol(href,current_asmdata.RefAsmSymbol(procdef.mangledname),0,sizeof(pint));
- location.register:=cg.getaddressregister(current_asmdata.CurrAsmList);
- cg.a_loadaddr_ref_reg(current_asmdata.CurrAsmList,href,location.register);
- end;
+ reference_reset_symbol(href,current_asmdata.RefAsmSymbol(procdef.mangledname),0,procdef.address_type.alignment);
+ location.register:=hlcg.getaddressregister(current_asmdata.CurrAsmList,procdef.address_type);
+ hlcg.a_loadaddr_ref_reg(current_asmdata.CurrAsmList,procdef,procdef.address_type,href,location.register);
end;
{ to get methodpointers stored correctly, code and self register must be swapped on
@@ -582,13 +558,9 @@ implementation
end
else
begin
- { def_cgsize does not work for procdef }
- location.size:=OS_ADDR;
pd:=tprocdef(tprocsym(symtableentry).ProcdefList[0]);
-{$ifdef i8086}
- if po_far in pd.procoptions then
- location.size:=OS_32;
-{$endif i8086}
+ { def_cgsize does not work for tprocdef, so we use pd.address_type }
+ location.size:=def_cgsize(pd.address_type);
if not(po_weakexternal in pd.procoptions) then
location.reference.symbol:=current_asmdata.RefAsmSymbol(procdef.mangledname)
else
@@ -752,8 +724,8 @@ implementation
else
begin
{ SSA support }
- maybechangeloadnodereg(current_asmdata.CurrAsmList,left,false);
- maybechangeloadnodereg(current_asmdata.CurrAsmList,right,true);
+ hlcg.maybe_change_load_node_reg(current_asmdata.CurrAsmList,left,false);
+ hlcg.maybe_change_load_node_reg(current_asmdata.CurrAsmList,right,true);
case right.location.loc of
LOC_CONSTANT :
begin
@@ -915,36 +887,11 @@ implementation
else
{$endif cpu64bitalu}
{$ifdef i8086}
- { i8086 method pointer support (incl. 6-byte method pointers for the medium and compact memory models) }
- if (left.resultdef.typ = procvardef) and
- ((po_methodpointer in tprocvardef(left.resultdef).procoptions) or is_nested_pd(tprocvardef(left.resultdef))) and
- not(po_addressonly in tprocvardef(left.resultdef).procoptions) then
- begin
- case left.location.loc of
- LOC_REFERENCE,LOC_CREFERENCE:
- begin
- href:=left.location.reference;
- { proc address }
- if po_far in tprocdef(right.resultdef).procoptions then
- begin
- cg.a_load_reg_ref(current_asmdata.CurrAsmList,OS_32,OS_32,right.location.register,href);
- inc(href.offset, 4)
- end
- else
- begin
- cg.a_load_reg_ref(current_asmdata.CurrAsmList,OS_16,OS_16,right.location.register,href);
- inc(href.offset, 2);
- end;
- { object self }
- if current_settings.x86memorymodel in x86_far_data_models then
- cg.a_load_reg_ref(current_asmdata.CurrAsmList,OS_32,OS_32,right.location.registerhi,href)
- else
- cg.a_load_reg_ref(current_asmdata.CurrAsmList,OS_16,OS_16,right.location.registerhi,href);
- end;
- else
- internalerror(2013072001);
- end;
- end
+ { prefer a_load_loc_ref, because it supports i8086-specific types
+ that use registerhi (like 6-byte method pointers)
+ (todo: maybe we should add a_load_loc_loc?) }
+ if left.location.loc in [LOC_REFERENCE,LOC_CREFERENCE] then
+ hlcg.a_load_loc_ref(current_asmdata.CurrAsmList,right.resultdef,left.resultdef,right.location,left.location.reference)
else
{$endif i8086}
hlcg.a_load_reg_loc(current_asmdata.CurrAsmList,right.resultdef,left.resultdef,right.location.register,left.location);
@@ -1194,9 +1141,11 @@ implementation
be sure that location is valid (PFV) }
{ on the JVM platform, an array can have 0 elements; since the length
of the array is part of the array itself, make sure we allocate one
- of the proper length to avoid getting unexpected results later }
+ of the proper length to avoid getting unexpected results later --
+ allocating a temp of size 0 also forces it to be size 4 on regular
+ targets }
if tarraydef(resultdef).highrange=-1 then
- tg.gethltemp(current_asmdata.CurrAsmList,resultdef,{$ifdef jvm}0{$else}elesize{$endif},tt_normal,location.reference)
+ tg.gethltemp(current_asmdata.CurrAsmList,resultdef,0,tt_normal,location.reference)
else
tg.gethltemp(current_asmdata.CurrAsmList,resultdef,(tarraydef(resultdef).highrange+1)*elesize,tt_normal,location.reference);
href:=location.reference;
@@ -1338,9 +1287,9 @@ implementation
if vaddr then
begin
hlcg.location_force_mem(current_asmdata.CurrAsmList,hp.left.location,hp.left.resultdef);
- tmpreg:=cg.getaddressregister(current_asmdata.CurrAsmList);
- cg.a_loadaddr_ref_reg(current_asmdata.CurrAsmList,hp.left.location.reference,tmpreg);
- cg.a_load_reg_ref(current_asmdata.CurrAsmList,OS_ADDR,OS_ADDR,tmpreg,href);
+ tmpreg:=hlcg.getaddressregister(current_asmdata.CurrAsmList,voidpointertype);
+ hlcg.a_loadaddr_ref_reg(current_asmdata.CurrAsmList,hp.left.resultdef,voidpointertype,hp.left.location.reference,tmpreg);
+ hlcg.a_load_reg_ref(current_asmdata.CurrAsmList,voidpointertype,voidpointertype,tmpreg,href);
end
else
{ todo: proper type information for hlcg }
diff --git a/compiler/ncgmat.pas b/compiler/ncgmat.pas
index 28633188f5..8d34d92aaa 100644
--- a/compiler/ncgmat.pas
+++ b/compiler/ncgmat.pas
@@ -171,7 +171,13 @@ implementation
internalerror(200406021);
end;
{ flip sign-bit (bit 31/63) of single/double }
- hlcg.a_op_const_ref(current_asmdata.CurrAsmList,OP_XOR,u32inttype,aint($80000000),href2);
+ hlcg.a_op_const_ref(current_asmdata.CurrAsmList,OP_XOR,u32inttype,
+{$ifdef cpu64bitalu}
+ aint($80000000),
+{$else cpu64bitalu}
+ longint($80000000),
+{$endif cpu64bitalu}
+ href2);
hlcg.a_loadfpu_ref_reg(current_asmdata.CurrAsmList,_size,_size,href,r);
tg.ungetiftemp(current_asmdata.CurrAsmList,href);
end;
@@ -194,7 +200,7 @@ implementation
begin
tr:=cg.getintregister(current_asmdata.CurrAsmList,OS_32);
cg.a_op_const_reg_reg(current_asmdata.CurrAsmList,OP_XOR,OS_32,
- aint($80000000),location.register64.reghi,tr);
+ longint($80000000),location.register64.reghi,tr);
cg.a_op_reg_reg(current_asmdata.CurrAsmList,OP_OR,OS_32,
location.register64.reglo,tr);
current_asmdata.getjumplabel(hl);
@@ -387,19 +393,23 @@ implementation
{ purposes }
hdenom := cg.getintregister(current_asmdata.CurrAsmList,OS_INT);
hlcg.a_load_loc_reg(current_asmdata.CurrAsmList,right.resultdef,osuinttype,right.location,hdenom);
- { verify if the divisor is zero, if so return an error
- immediately
+ { verify if the divisor is zero, if so return an error immediately,
+ except if we have a const node, where we don't need this, because
+ then zero check was done earlier.
}
- current_asmdata.getjumplabel(hl);
- cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_INT,OC_NE,0,hdenom,hl);
- paraloc1.init;
- pd:=search_system_proc('fpc_handleerror');
- paramanager.getintparaloc(pd,1,paraloc1);
- cg.a_load_const_cgpara(current_asmdata.CurrAsmList,OS_S32,aint(200),paraloc1);
- paramanager.freecgpara(current_asmdata.CurrAsmList,paraloc1);
- cg.a_call_name(current_asmdata.CurrAsmList,'FPC_HANDLEERROR',false);
- paraloc1.done;
- cg.a_label(current_asmdata.CurrAsmList,hl);
+ if (right.nodetype <> ordconstn) then
+ begin
+ current_asmdata.getjumplabel(hl);
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_INT,OC_NE,0,hdenom,hl);
+ paraloc1.init;
+ pd:=search_system_proc('fpc_handleerror');
+ paramanager.getintparaloc(pd,1,paraloc1);
+ cg.a_load_const_cgpara(current_asmdata.CurrAsmList,OS_S32,aint(200),paraloc1);
+ paramanager.freecgpara(current_asmdata.CurrAsmList,paraloc1);
+ cg.a_call_name(current_asmdata.CurrAsmList,'FPC_HANDLEERROR',false);
+ paraloc1.done;
+ cg.a_label(current_asmdata.CurrAsmList,hl);
+ end;
if nodetype = modn then
emit_mod_reg_reg(is_signed(left.resultdef),hdenom,hreg1)
else
diff --git a/compiler/ncgmem.pas b/compiler/ncgmem.pas
index 14ee8e8884..219839fed9 100644
--- a/compiler/ncgmem.pas
+++ b/compiler/ncgmem.pas
@@ -86,7 +86,7 @@ implementation
uses
systems,
cutils,cclasses,verbose,globals,constexp,
- symconst,symbase,symdef,symsym,symtable,defutil,paramgr,
+ symconst,symbase,symdef,symsym,symcpu,symtable,defutil,paramgr,
aasmbase,aasmtai,aasmdata,
procinfo,pass_2,parabase,
pass_1,nld,ncon,nadd,ncnv,nutils,
@@ -107,16 +107,16 @@ implementation
entry : PHashSetItem;
begin
- location_reset(location,LOC_REGISTER,OS_ADDR);
+ location_reset(location,LOC_REGISTER,def_cgsize(voidpointertype));
if (left.nodetype=typen) then
begin
- location.register:=cg.getaddressregister(current_asmdata.CurrAsmList);
+ location.register:=hlcg.getaddressregister(current_asmdata.CurrAsmList,voidpointertype);
if not is_objcclass(left.resultdef) then
begin
reference_reset_symbol(href,
current_asmdata.RefAsmSymbol(tobjectdef(tclassrefdef(resultdef).pointeddef).vmt_mangledname,AT_DATA),0,
- sizeof(pint));
- cg.a_loadaddr_ref_reg(current_asmdata.CurrAsmList,href,location.register);
+ voidpointertype.size);
+ hlcg.a_loadaddr_ref_reg(current_asmdata.CurrAsmList,voidpointertype,voidpointertype,href,location.register);
end
else
begin
@@ -132,8 +132,8 @@ implementation
{ find/add necessary classref/classname pool entries }
objcfinishstringrefpoolentry(entry,sp_objcclassnames,sec_objc_cls_refs,sec_objc_class_names);
end;
- reference_reset_symbol(href,tasmlabel(entry^.Data),0,sizeof(pint));
- cg.a_load_ref_reg(current_asmdata.CurrAsmList,OS_ADDR,OS_ADDR,href,location.register);
+ reference_reset_symbol(href,tasmlabel(entry^.Data),0,voidpointertype.size);
+ hlcg.a_load_ref_reg(current_asmdata.CurrAsmList,voidpointertype,voidpointertype,href,location.register);
end;
end
else
@@ -157,14 +157,14 @@ implementation
begin
if (current_procinfo.procdef.parast.symtablelevel=parentpd.parast.symtablelevel) then
begin
- location_reset(location,LOC_REGISTER,OS_ADDR);
+ location_reset(location,LOC_REGISTER,def_cgsize(parentfpvoidpointertype));
location.register:=current_procinfo.framepointer;
end
else
begin
currpi:=current_procinfo;
- location_reset(location,LOC_REGISTER,OS_ADDR);
- location.register:=cg.getaddressregister(current_asmdata.CurrAsmList);
+ location_reset(location,LOC_REGISTER,def_cgsize(parentfpvoidpointertype));
+ location.register:=hlcg.getaddressregister(current_asmdata.CurrAsmList,parentfpvoidpointertype);
{ load framepointer of current proc }
hsym:=tparavarsym(currpi.procdef.parast.Find('parentfp'));
if not assigned(hsym) then
@@ -183,8 +183,8 @@ implementation
if hsym.localloc.loc<>LOC_REFERENCE then
internalerror(200309283);
- reference_reset_base(href,location.register,hsym.localloc.reference.offset,sizeof(pint));
- cg.a_load_ref_reg(current_asmdata.CurrAsmList,OS_ADDR,OS_ADDR,href,location.register);
+ hlcg.reference_reset_base(href,parentfpvoidpointertype,location.register,hsym.localloc.reference.offset,sizeof(pint));
+ hlcg.a_load_ref_reg(current_asmdata.CurrAsmList,parentfpvoidpointertype,parentfpvoidpointertype,href,location.register);
end;
end;
end;
@@ -198,8 +198,8 @@ implementation
begin
secondpass(left);
- location_reset(location,LOC_REGISTER,OS_ADDR);
- location.register:=cg.getaddressregister(current_asmdata.CurrAsmList);
+ location_reset(location,LOC_REGISTER,int_cgsize(resultdef.size));
+ location.register:=hlcg.getaddressregister(current_asmdata.CurrAsmList,resultdef);
if not(left.location.loc in [LOC_REFERENCE,LOC_CREFERENCE]) then
{ on x86_64-win64, array of chars can be returned in registers, however,
when passing these arrays to other functions, the compiler wants to take
@@ -263,7 +263,7 @@ implementation
LOC_CREGISTER,
LOC_REGISTER:
begin
- maybechangeloadnodereg(current_asmdata.CurrAsmList,left,true);
+ hlcg.maybe_change_load_node_reg(current_asmdata.CurrAsmList,left,true);
{$ifdef cpu_uses_separate_address_registers}
if getregtype(left.location.register)<>R_ADDRESSREGISTER then
begin
@@ -293,7 +293,7 @@ implementation
(cs_checkpointer in current_settings.localswitches) and
not(cs_compilesystem in current_settings.moduleswitches) and
{$ifdef x86}
- (tpointerdef(left.resultdef).x86pointertyp = default_x86_data_pointer_type) and
+ (tcpupointerdef(left.resultdef).x86pointertyp = tcpupointerdefclass(cpointerdef).default_x86_data_pointer_type) and
{$endif x86}
not(nf_no_checkpointer in flags) and
{ can be NR_NO in case of LOC_CONSTANT }
@@ -347,7 +347,7 @@ implementation
(target_info.system in systems_garbage_collected_managed_types) then
begin
{ the contents of a class are aligned to a sizeof(pointer) }
- location_reset_ref(location,LOC_REFERENCE,def_cgsize(resultdef),sizeof(pint));
+ location_reset_ref(location,LOC_REFERENCE,def_cgsize(resultdef),voidpointertype.size);
case left.location.loc of
LOC_CREGISTER,
LOC_REGISTER:
@@ -361,7 +361,7 @@ implementation
end
else
{$endif}
- location.reference.base := left.location.register;
+ hlcg.reference_reset_base(location.reference,left.resultdef,left.location.register,0,location.reference.alignment);
end;
LOC_CREFERENCE,
LOC_REFERENCE,
@@ -371,7 +371,8 @@ implementation
LOC_SUBSETREF,
LOC_CSUBSETREF:
begin
- location.reference.base:=hlcg.getaddressregister(current_asmdata.CurrAsmList,left.resultdef);
+ hlcg.reference_reset_base(location.reference,left.resultdef,
+ hlcg.getaddressregister(current_asmdata.CurrAsmList,left.resultdef),0,location.reference.alignment);
hlcg.a_load_loc_reg(current_asmdata.CurrAsmList,left.resultdef,left.resultdef,left.location,location.reference.base);
end;
LOC_CONSTANT:
@@ -737,10 +738,10 @@ implementation
begin
{ cdecl functions don't have high() so we can not check the range }
{ (can't use current_procdef, since it may be a nested procedure) }
- if not(tprocdef(tparasymtable(tparavarsym(tloadnode(left).symtableentry).owner).defowner).proccalloption in cdecl_pocalls) then
+ if not(tprocdef(tparasymtable(tparavarsym(tloadnode(get_open_const_array(left)).symtableentry).owner).defowner).proccalloption in cdecl_pocalls) then
begin
{ Get high value }
- hightree:=load_high_value_node(tparavarsym(tloadnode(left).symtableentry));
+ hightree:=load_high_value_node(tparavarsym(tloadnode(get_open_const_array(left)).symtableentry));
{ it must be available }
if not assigned(hightree) then
internalerror(200212201);
@@ -894,13 +895,13 @@ implementation
location.reference.base:=cg.getaddressregister(current_asmdata.CurrAsmList);
cg.a_load_reg_reg(current_asmdata.CurrAsmList,OS_ADDR,OS_ADDR,left.location.register,location.reference.base);
{$else m68k}
- location.reference.base:=left.location.register;
+ hlcg.reference_reset_base(location.reference,left.resultdef,left.location.register,0,location.reference.alignment);
{$endif m68k}
end;
LOC_CREFERENCE,
LOC_REFERENCE :
begin
- location.reference.base:=hlcg.getaddressregister(current_asmdata.CurrAsmList,left.resultdef);
+ hlcg.reference_reset_base(location.reference,left.resultdef,hlcg.getaddressregister(current_asmdata.CurrAsmList,left.resultdef),0,location.reference.alignment);
hlcg.a_load_ref_reg(current_asmdata.CurrAsmList,left.resultdef,left.resultdef,left.location.reference,location.reference.base);
end;
else
@@ -922,11 +923,11 @@ implementation
case left.location.loc of
LOC_REGISTER,
LOC_CREGISTER :
- location.reference.base:=left.location.register;
+ hlcg.reference_reset_base(location.reference,left.resultdef,left.location.register,0,location.reference.alignment);
LOC_REFERENCE,
LOC_CREFERENCE :
begin
- location.reference.base:=cg.getaddressregister(current_asmdata.CurrAsmList);
+ hlcg.reference_reset_base(location.reference,left.resultdef,hlcg.getaddressregister(current_asmdata.CurrAsmList,left.resultdef),0,location.reference.alignment);
hlcg.a_load_ref_reg(current_asmdata.CurrAsmList,left.resultdef,left.resultdef,
left.location.reference,location.reference.base);
end;
@@ -937,7 +938,7 @@ implementation
we assume to be always aligned to a multiple of the
pointer size
}
- location.reference.alignment:=sizeof(pint);
+ location.reference.alignment:=voidpointertype.size;
end
else
begin
diff --git a/compiler/ncgset.pas b/compiler/ncgset.pas
index a8bed43af8..1fbe83f6e1 100644
--- a/compiler/ncgset.pas
+++ b/compiler/ncgset.pas
@@ -459,7 +459,7 @@ implementation
{should be caught earlier }
internalerror(2007020402);
- hlcg.a_bit_test_const_loc_reg(current_asmdata.CurrAsmList,left.resultdef,resultdef,left.location.value-setbase,
+ hlcg.a_bit_test_const_loc_reg(current_asmdata.CurrAsmList,right.resultdef,resultdef,left.location.value-setbase,
right.location,location.register);
end
else
@@ -630,7 +630,7 @@ implementation
genitem(t^.less);
if t^._low=t^._high then
begin
-{$ifdef cpu32bitalu}
+{$if defined(cpu32bitalu)}
if def_cgsize(opsize) in [OS_S64,OS_64] then
begin
current_asmdata.getjumplabel(l1);
@@ -639,8 +639,7 @@ implementation
cg.a_label(current_asmdata.CurrAsmList,l1);
end
else
-{$endif cpu32bitalu}
-{$ifdef cpu16bitalu)}
+{$elseif defined(cpu16bitalu)}
if def_cgsize(opsize) in [OS_S64,OS_64] then
begin
current_asmdata.getjumplabel(l1);
@@ -658,7 +657,38 @@ implementation
cg.a_label(current_asmdata.CurrAsmList,l1);
end
else
-{$endif cpu16bitalu}
+{$elseif defined(cpu8bitalu)}
+ if def_cgsize(opsize) in [OS_S64,OS_64] then
+ begin
+ current_asmdata.getjumplabel(l1);
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList, OS_8, OC_NE, aint(hi(hi(hi(int64(t^._low.svalue))))),GetNextReg(GetNextReg(GetNextReg(hregister2))),l1);
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList, OS_8, OC_NE, aint(lo(hi(hi(int64(t^._low.svalue))))),GetNextReg(GetNextReg(hregister2)),l1);
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList, OS_8, OC_NE, aint(hi(lo(hi(int64(t^._low.svalue))))),GetNextReg(hregister2),l1);
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList, OS_8, OC_NE, aint(lo(lo(hi(int64(t^._low.svalue))))),hregister2,l1);
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList, OS_8, OC_NE, aint(hi(hi(lo(int64(t^._low.svalue))))),GetNextReg(GetNextReg(GetNextReg(hregister))),l1);
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList, OS_8, OC_NE, aint(lo(hi(lo(int64(t^._low.svalue))))),GetNextReg(GetNextReg(hregister)),l1);
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList, OS_8, OC_NE, aint(hi(lo(lo(int64(t^._low.svalue))))),GetNextReg(hregister),l1);
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList, OS_8, OC_EQ, aint(lo(lo(lo(int64(t^._low.svalue))))),hregister,blocklabel(t^.blockid));
+ cg.a_label(current_asmdata.CurrAsmList,l1);
+ end
+ else if def_cgsize(opsize) in [OS_S32,OS_32] then
+ begin
+ current_asmdata.getjumplabel(l1);
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList, OS_8, OC_NE, aint(hi(hi(int32(t^._low.svalue)))),GetNextReg(GetNextReg(GetNextReg(hregister))),l1);
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList, OS_8, OC_NE, aint(lo(hi(int32(t^._low.svalue)))),GetNextReg(GetNextReg(hregister)),l1);
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList, OS_8, OC_NE, aint(hi(lo(int32(t^._low.svalue)))),GetNextReg(hregister),l1);
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList, OS_8, OC_EQ, aint(lo(lo(int32(t^._low.svalue)))),hregister, blocklabel(t^.blockid));
+ cg.a_label(current_asmdata.CurrAsmList,l1);
+ end
+ else if def_cgsize(opsize) in [OS_S16,OS_16] then
+ begin
+ current_asmdata.getjumplabel(l1);
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList, OS_8, OC_NE, aint(hi(int16(t^._low.svalue))),GetNextReg(hregister),l1);
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList, OS_8, OC_EQ, aint(lo(int16(t^._low.svalue))),hregister, blocklabel(t^.blockid));
+ cg.a_label(current_asmdata.CurrAsmList,l1);
+ end
+ else
+{$endif}
begin
hlcg.a_cmp_const_reg_label(current_asmdata.CurrAsmList, opsize, OC_EQ, aint(t^._low.svalue),hregister, blocklabel(t^.blockid));
end;
@@ -673,7 +703,7 @@ implementation
{ ELSE-label }
if not lastwasrange or (t^._low-last>1) then
begin
-{$ifdef cpu32bitalu}
+{$if defined(cpu32bitalu)}
if def_cgsize(opsize) in [OS_64,OS_S64] then
begin
current_asmdata.getjumplabel(l1);
@@ -686,8 +716,7 @@ implementation
cg.a_label(current_asmdata.CurrAsmList,l1);
end
else
-{$endif cpu32bitalu}
-{$ifdef cpu16bitalu}
+{$elseif defined(cpu16bitalu)}
if def_cgsize(opsize) in [OS_64,OS_S64] then
begin
current_asmdata.getjumplabel(l1);
@@ -719,13 +748,58 @@ implementation
cg.a_label(current_asmdata.CurrAsmList,l1);
end
else
-{$endif cpu16bitalu}
+{$elseif defined(cpu8bitalu)}
+ if def_cgsize(opsize) in [OS_64,OS_S64] then
+ begin
+ current_asmdata.getjumplabel(l1);
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_8,jmp_lt,aint(hi(hi(hi(int64(t^._low.svalue))))),GetNextReg(GetNextReg(GetNextReg(hregister2))),elselabel);
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_8,jmp_gt,aint(hi(hi(hi(int64(t^._low.svalue))))),GetNextReg(GetNextReg(GetNextReg(hregister2))),l1);
+ { the comparison of the low words must be always unsigned! }
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_8,OC_B,aint(lo(hi(hi(int64(t^._low.svalue))))),GetNextReg(GetNextReg(hregister2)),elselabel);
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_8,OC_A,aint(lo(hi(hi(int64(t^._low.svalue))))),GetNextReg(GetNextReg(hregister2)),l1);
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_8,OC_B,aint(hi(lo(hi(int64(t^._low.svalue))))),GetNextReg(hregister2),elselabel);
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_8,OC_A,aint(hi(lo(hi(int64(t^._low.svalue))))),GetNextReg(hregister2),l1);
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_8,OC_B,aint(lo(lo(hi(int64(t^._low.svalue))))),hregister2,elselabel);
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_8,OC_A,aint(lo(lo(hi(int64(t^._low.svalue))))),hregister2,l1);
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_8,OC_B,aint(hi(hi(lo(int64(t^._low.svalue))))),GetNextReg(GetNextReg(GetNextReg(hregister))),elselabel);
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_8,OC_A,aint(hi(hi(lo(int64(t^._low.svalue))))),GetNextReg(GetNextReg(GetNextReg(hregister))),l1);
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_8,OC_B,aint(lo(hi(lo(int64(t^._low.svalue))))),GetNextReg(GetNextReg(hregister)),elselabel);
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_8,OC_A,aint(lo(hi(lo(int64(t^._low.svalue))))),GetNextReg(GetNextReg(hregister)),l1);
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_8,OC_B,aint(hi(lo(lo(int64(t^._low.svalue))))),GetNextReg(hregister),elselabel);
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_8,OC_A,aint(hi(lo(lo(int64(t^._low.svalue))))),GetNextReg(hregister),l1);
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_8,OC_B,aint(lo(lo(lo(int64(t^._low.svalue))))),hregister,elselabel);
+ cg.a_label(current_asmdata.CurrAsmList,l1);
+ end
+ else if def_cgsize(opsize) in [OS_32,OS_S32] then
+ begin
+ current_asmdata.getjumplabel(l1);
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_8,jmp_lt,aint(hi(hi(int32(t^._low.svalue)))),GetNextReg(GetNextReg(GetNextReg(hregister))),elselabel);
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList, OS_8,jmp_gt,aint(hi(hi(int32(t^._low.svalue)))),GetNextReg(GetNextReg(GetNextReg(hregister))),l1);
+ { the comparison of the low words must be always unsigned! }
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_8,OC_B,aint(lo(hi(int32(t^._low.svalue)))),GetNextReg(GetNextReg(hregister)),elselabel);
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_8,OC_A,aint(lo(hi(int32(t^._low.svalue)))),GetNextReg(GetNextReg(hregister)),l1);
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_8,OC_B,aint(hi(lo(int32(t^._low.svalue)))),GetNextReg(hregister),elselabel);
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_8,OC_A,aint(hi(lo(int32(t^._low.svalue)))),GetNextReg(hregister),l1);
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_8,OC_B,aint(lo(lo(int32(t^._low.svalue)))),hregister,elselabel);
+ cg.a_label(current_asmdata.CurrAsmList,l1);
+ end
+ else if def_cgsize(opsize) in [OS_16,OS_S16] then
+ begin
+ current_asmdata.getjumplabel(l1);
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_8,jmp_lt,aint(hi(int16(t^._low.svalue))),GetNextReg(hregister),elselabel);
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_8,jmp_gt,aint(hi(int16(t^._low.svalue))),GetNextReg(hregister),l1);
+ { the comparisation of the low dword must be always unsigned! }
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_8,OC_B,aint(lo(int16(t^._low.svalue))),hregister,elselabel);
+ cg.a_label(current_asmdata.CurrAsmList,l1);
+ end
+ else
+{$endif}
begin
hlcg.a_cmp_const_reg_label(current_asmdata.CurrAsmList, opsize, jmp_lt, aint(t^._low.svalue), hregister,
elselabel);
end;
end;
-{$ifdef cpu32bitalu}
+{$if defined(cpu32bitalu)}
if def_cgsize(opsize) in [OS_S64,OS_64] then
begin
current_asmdata.getjumplabel(l1);
@@ -737,8 +811,7 @@ implementation
cg.a_label(current_asmdata.CurrAsmList,l1);
end
else
-{$endif cpu32bitalu}
-{$ifdef cpu16bitalu}
+{$elseif defined(cpu16bitalu)}
if def_cgsize(opsize) in [OS_S64,OS_64] then
begin
current_asmdata.getjumplabel(l1);
@@ -768,7 +841,49 @@ implementation
cg.a_label(current_asmdata.CurrAsmList,l1);
end
else
-{$endif cpu16bitalu}
+{$elseif defined(cpu8bitalu)}
+ if def_cgsize(opsize) in [OS_S64,OS_64] then
+ begin
+ current_asmdata.getjumplabel(l1);
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_8,jmp_lt,aint(hi(hi(hi(int64(t^._high.svalue))))),GetNextReg(GetNextReg(GetNextReg(hregister2))),blocklabel(t^.blockid));
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_8,jmp_gt,aint(hi(hi(hi(int64(t^._high.svalue))))),GetNextReg(GetNextReg(GetNextReg(hregister2))),l1);
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_8,OC_B,aint(lo(hi(hi(int64(t^._high.svalue))))),GetNextReg(GetNextReg(hregister2)),blocklabel(t^.blockid));
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_8,OC_A,aint(lo(hi(hi(int64(t^._high.svalue))))),GetNextReg(GetNextReg(hregister2)),l1);
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_8,OC_B,aint(hi(lo(hi(int64(t^._high.svalue))))),GetNextReg(hregister2),blocklabel(t^.blockid));
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_8,OC_A,aint(hi(lo(hi(int64(t^._high.svalue))))),GetNextReg(hregister2),l1);
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_8,OC_B,aint(lo(lo(hi(int64(t^._high.svalue))))),hregister2,blocklabel(t^.blockid));
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_8,OC_A,aint(lo(lo(hi(int64(t^._high.svalue))))),hregister2,l1);
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_8,OC_B,aint(hi(hi(lo(int64(t^._high.svalue))))),GetNextReg(GetNextReg(GetNextReg(hregister))),blocklabel(t^.blockid));
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_8,OC_A,aint(hi(hi(lo(int64(t^._high.svalue))))),GetNextReg(GetNextReg(GetNextReg(hregister))),l1);
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_8,OC_B,aint(lo(hi(lo(int64(t^._high.svalue))))),GetNextReg(GetNextReg(hregister)),blocklabel(t^.blockid));
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_8,OC_A,aint(lo(hi(lo(int64(t^._high.svalue))))),GetNextReg(GetNextReg(hregister)),l1);
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_8,OC_B,aint(hi(lo(lo(int64(t^._high.svalue))))),GetNextReg(hregister),blocklabel(t^.blockid));
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_8,OC_A,aint(hi(lo(lo(int64(t^._high.svalue))))),GetNextReg(hregister),l1);
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_8,OC_BE,aint(lo(lo(lo(int64(t^._high.svalue))))),hregister,blocklabel(t^.blockid));
+ cg.a_label(current_asmdata.CurrAsmList,l1);
+ end
+ else if def_cgsize(opsize) in [OS_S32,OS_32] then
+ begin
+ current_asmdata.getjumplabel(l1);
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_8,jmp_lt,aint(hi(hi(int32(t^._high.svalue)))),GetNextReg(GetNextReg(GetNextReg(hregister))),blocklabel(t^.blockid));
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_8,jmp_gt,aint(hi(hi(int32(t^._high.svalue)))),GetNextReg(GetNextReg(GetNextReg(hregister))),l1);
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_8,OC_B,aint(lo(hi(int32(t^._high.svalue)))),GetNextReg(GetNextReg(hregister)),blocklabel(t^.blockid));
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_8,OC_A,aint(lo(hi(int32(t^._high.svalue)))),GetNextReg(GetNextReg(hregister)),l1);
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_8,OC_B,aint(hi(lo(int32(t^._high.svalue)))),GetNextReg(hregister),blocklabel(t^.blockid));
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_8,OC_A,aint(hi(lo(int32(t^._high.svalue)))),GetNextReg(hregister),l1);
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_8,OC_BE,aint(lo(lo(int32(t^._high.svalue)))),hregister,blocklabel(t^.blockid));
+ cg.a_label(current_asmdata.CurrAsmList,l1);
+ end
+ else if def_cgsize(opsize) in [OS_S16,OS_16] then
+ begin
+ current_asmdata.getjumplabel(l1);
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_8,jmp_lt,aint(hi(int16(t^._high.svalue))),GetNextReg(hregister),blocklabel(t^.blockid));
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_8,jmp_gt,aint(hi(int16(t^._high.svalue))),GetNextReg(hregister),l1);
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_8,OC_BE,aint(lo(int16(t^._high.svalue))),hregister,blocklabel(t^.blockid));
+ cg.a_label(current_asmdata.CurrAsmList,l1);
+ end
+ else
+{$endif}
begin
hlcg.a_cmp_const_reg_label(current_asmdata.CurrAsmList, opsize, jmp_le, aint(t^._high.svalue), hregister, blocklabel(t^.blockid));
end;
diff --git a/compiler/ncgutil.pas b/compiler/ncgutil.pas
index 635db7688f..c9324153da 100644
--- a/compiler/ncgutil.pas
+++ b/compiler/ncgutil.pas
@@ -60,7 +60,6 @@ interface
procedure maketojumpbool(list:TAsmList; p : tnode; loadregvars: tloadregvars);
// procedure remove_non_regvars_from_loc(const t: tlocation; var regs:Tsuperregisterset);
- procedure location_force_fpureg(list:TAsmList;var l: tlocation;maybeconst:boolean);
procedure location_force_mmreg(list:TAsmList;var l: tlocation;maybeconst:boolean);
procedure location_allocate_register(list:TAsmList;out l: tlocation;def: tdef;constant: boolean);
@@ -98,11 +97,6 @@ interface
// procedure get_used_regvars_common(n: tnode; var rv: tusedregvarscommon);
procedure gen_sync_regvars(list:TAsmList; var rv: tusedregvars);
- { if the result of n is a LOC_C(..)REGISTER, try to find the corresponding
- loadn and change its location to a new register (= SSA). In case reload
- is true, transfer the old to the new register }
- procedure maybechangeloadnodereg(list: TAsmList; var n: tnode; reload: boolean);
-
{ Allocate the buffers for exception management and setjmp environment.
Return a pointer to these buffers, send them to the utility routine
so they are registered, and then call setjmp.
@@ -116,8 +110,6 @@ interface
routine has been called, therefore on machines where the stack cannot
be modified, all temps should be allocated on the heap instead of the
stack. }
- const
- EXCEPT_BUF_SIZE = 3*sizeof(pint);
type
texceptiontemps=record
jmpbuf,
@@ -394,9 +386,15 @@ implementation
*****************************************************************************}
procedure get_exception_temps(list:TAsmList;var t:texceptiontemps);
+ var
+ except_buf_size: longint;
begin
+ { todo: is there a way to retrieve the except_buf_size from the size of
+ the TExceptAddr record from the system unit (like we do for jmp_buf_size),
+ without moving TExceptAddr to the interface part? }
+ except_buf_size:=voidpointertype.size*2+sizeof(pint);
get_jumpbuf_size;
- tg.GetTemp(list,EXCEPT_BUF_SIZE,sizeof(pint),tt_persistent,t.envbuf);
+ tg.GetTemp(list,except_buf_size,sizeof(pint),tt_persistent,t.envbuf);
tg.GetTemp(list,jmp_buf_size,jmp_buf_align,tt_persistent,t.jmpbuf);
tg.GetTemp(list,sizeof(pint),sizeof(pint),tt_persistent,t.reasonbuf);
end;
@@ -422,6 +420,9 @@ implementation
var
paraloc1,paraloc2,paraloc3 : tcgpara;
pd: tprocdef;
+{$ifdef i8086}
+ tmpreg: TRegister;
+{$endif i8086}
begin
pd:=search_system_proc('fpc_pushexceptaddr');
paraloc1.init;
@@ -453,7 +454,17 @@ implementation
pd:=search_system_proc('fpc_setjmp');
paramanager.getintparaloc(pd,1,paraloc1);
- cg.a_load_reg_cgpara(list,OS_ADDR,NR_FUNCTION_RESULT_REG,paraloc1);
+{$ifdef i8086}
+ if current_settings.x86memorymodel in x86_far_data_models then
+ begin
+ tmpreg:=cg.getintregister(list,OS_32);
+ cg.a_load_reg_reg(list,OS_16,OS_16,NR_FUNCTION_RESULT32_LOW_REG,tmpreg);
+ cg.a_load_reg_reg(list,OS_16,OS_16,NR_FUNCTION_RESULT32_HIGH_REG,GetNextReg(tmpreg));
+ cg.a_load_reg_cgpara(list,OS_32,tmpreg,paraloc1);
+ end
+ else
+{$endif i8086}
+ cg.a_load_reg_cgpara(list,OS_ADDR,NR_FUNCTION_RESULT_REG,paraloc1);
paramanager.freecgpara(list,paraloc1);
cg.allocallcpuregisters(list);
cg.a_call_name(list,'FPC_SETJMP',false);
@@ -490,31 +501,6 @@ implementation
*****************************************************************************}
- procedure location_force_fpureg(list:TAsmList;var l: tlocation;maybeconst:boolean);
- var
- reg : tregister;
- href : treference;
- begin
- if (l.loc<>LOC_FPUREGISTER) and
- ((l.loc<>LOC_CFPUREGISTER) or (not maybeconst)) then
- begin
- { if it's in an mm register, store to memory first }
- if (l.loc in [LOC_MMREGISTER,LOC_CMMREGISTER]) then
- begin
- tg.GetTemp(list,tcgsize2size[l.size],tcgsize2size[l.size],tt_normal,href);
- cg.a_loadmm_reg_ref(list,l.size,l.size,l.register,href,mms_movescalar);
- location_reset_ref(l,LOC_REFERENCE,l.size,0);
- l.reference:=href;
- end;
- reg:=cg.getfpuregister(list,l.size);
- cg.a_loadfpu_loc_reg(list,l.size,l,reg);
- location_freetemp(list,l);
- location_reset(l,LOC_FPUREGISTER,l.size);
- l.register:=reg;
- end;
- end;
-
-
procedure register_maybe_adjust_setbase(list: TAsmList; var l: tlocation; setbase: aint);
var
tmpreg: tregister;
@@ -601,12 +587,12 @@ implementation
end
else
{$endif cpu64bitalu}
- { Note: for withs of records (and maybe objects, classes, etc.) an
+ { Note: for widths of records (and maybe objects, classes, etc.) an
address register could be set here, but that is later
changed to an intregister neverthless when in the
- tcgassignmentnode maybechangeloadnodereg is called for the
- temporary node; so the workaround for now is to fix the
- symptoms... }
+ tcgassignmentnode thlcgobj.maybe_change_load_node_reg is
+ called for the temporary node; so the workaround for now is
+ to fix the symptoms... }
l.register:=cg.getintregister(list,l.size);
end;
end;
@@ -643,13 +629,13 @@ implementation
hsym:=tparavarsym(get_high_value_sym(tparavarsym(p)));
if not assigned(hsym) then
internalerror(200306061);
- hreg:=cg.getaddressregister(list);
+ sizedef:=getpointerdef(tparavarsym(p).vardef);
+ hreg:=hlcg.getaddressregister(list,sizedef);
if not is_packed_array(tparavarsym(p).vardef) then
hlcg.g_copyvaluepara_openarray(list,href,hsym.initialloc,tarraydef(tparavarsym(p).vardef),hreg)
else
internalerror(2006080401);
// cg.g_copyvaluepara_packedopenarray(list,href,hsym.intialloc,tarraydef(tparavarsym(p).vardef).elepackedbitsize,hreg);
- sizedef:=getpointerdef(tparavarsym(p).vardef);
hlcg.a_load_reg_loc(list,sizedef,sizedef,hreg,tparavarsym(p).initialloc);
end;
end
@@ -1526,8 +1512,10 @@ implementation
var
i : longint;
+ highsym,
sym : tsym;
vs : tabstractnormalvarsym;
+ ptrdef : tdef;
isaddr : boolean;
begin
for i:=0 to st.SymList.Count-1 do
@@ -1566,9 +1554,19 @@ implementation
end
else
begin
+ { if an open array is used, also its high parameter is used,
+ since the hidden high parameters are inserted after the corresponding symbols,
+ we can increase the ref. count here }
+ if is_open_array(vs.vardef) or is_array_of_const(vs.vardef) then
+ begin
+ highsym:=get_high_value_sym(tparavarsym(vs));
+ if assigned(highsym) then
+ inc(highsym.refs);
+ end;
+
isaddr:=paramanager.push_addr_param(vs.varspez,vs.vardef,pd.proccalloption);
if isaddr then
- vs.initialloc.size:=OS_ADDR
+ vs.initialloc.size:=def_cgsize(voidpointertype)
else
vs.initialloc.size:=def_cgsize(vs.vardef);
@@ -1585,7 +1583,10 @@ implementation
else
begin
if isaddr then
- tg.GetLocal(list,sizeof(pint),getpointerdef(vs.vardef),vs.initialloc.reference)
+ begin
+ ptrdef:=getpointerdef(vs.vardef);
+ tg.GetLocal(list,ptrdef.size,ptrdef,vs.initialloc.reference)
+ end
else
tg.GetLocal(list,vs.getsize,tparavarsym(vs).paraloc[calleeside].alignment,vs.vardef,vs.initialloc.reference);
end;
@@ -1801,243 +1802,6 @@ implementation
end;
-{*****************************************************************************
- SSA support
-*****************************************************************************}
-
- type
- preplaceregrec = ^treplaceregrec;
- treplaceregrec = record
- old, new: tregister;
- oldhi, newhi: tregister;
- ressym: tsym;
- { moved sym }
- sym : tabstractnormalvarsym;
- end;
-
-
- function doreplace(var n: tnode; para: pointer): foreachnoderesult;
- var
- rr: preplaceregrec absolute para;
- begin
- result := fen_false;
- if (nf_is_funcret in n.flags) and (fc_exit in flowcontrol) then
- exit;
- case n.nodetype of
- loadn:
- begin
- if (tloadnode(n).symtableentry.typ in [localvarsym,paravarsym,staticvarsym]) and
- (tabstractvarsym(tloadnode(n).symtableentry).varoptions * [vo_is_dll_var, vo_is_thread_var] = []) and
- not assigned(tloadnode(n).left) and
- ((tloadnode(n).symtableentry <> rr^.ressym) or
- not(fc_exit in flowcontrol)
- ) and
- (tabstractnormalvarsym(tloadnode(n).symtableentry).localloc.loc in [LOC_CREGISTER,LOC_CFPUREGISTER,LOC_CMMXREGISTER,LOC_CMMREGISTER]) and
- (tabstractnormalvarsym(tloadnode(n).symtableentry).localloc.register = rr^.old) then
- begin
-{$ifdef cpu64bitalu}
- { it's possible a 128 bit location was shifted and/xor typecasted }
- { in a 64 bit value, so only 1 register was left in the location }
- if (tabstractnormalvarsym(tloadnode(n).symtableentry).localloc.size in [OS_128,OS_S128]) then
- if (tabstractnormalvarsym(tloadnode(n).symtableentry).localloc.register128.reghi = rr^.oldhi) then
- tabstractnormalvarsym(tloadnode(n).symtableentry).localloc.register128.reghi := rr^.newhi
- else
- exit;
-{$else cpu64bitalu}
- { it's possible a 64 bit location was shifted and/xor typecasted }
- { in a 32 bit value, so only 1 register was left in the location }
- if (tabstractnormalvarsym(tloadnode(n).symtableentry).localloc.size in [OS_64,OS_S64]) then
- if (tabstractnormalvarsym(tloadnode(n).symtableentry).localloc.register64.reghi = rr^.oldhi) then
- tabstractnormalvarsym(tloadnode(n).symtableentry).localloc.register64.reghi := rr^.newhi
- else
- exit;
-{$endif cpu64bitalu}
- tabstractnormalvarsym(tloadnode(n).symtableentry).localloc.register := rr^.new;
- rr^.sym := tabstractnormalvarsym(tloadnode(n).symtableentry);
- result := fen_norecurse_true;
- end;
- end;
- temprefn:
- begin
- if (ti_valid in ttemprefnode(n).tempinfo^.flags) and
- (ttemprefnode(n).tempinfo^.location.loc in [LOC_CREGISTER,LOC_CFPUREGISTER,LOC_CMMXREGISTER,LOC_CMMREGISTER]) and
- (ttemprefnode(n).tempinfo^.location.register = rr^.old) then
- begin
-{$ifdef cpu64bitalu}
- { it's possible a 128 bit location was shifted and/xor typecasted }
- { in a 64 bit value, so only 1 register was left in the location }
- if (ttemprefnode(n).tempinfo^.location.size in [OS_128,OS_S128]) then
- if (ttemprefnode(n).tempinfo^.location.register128.reghi = rr^.oldhi) then
- ttemprefnode(n).tempinfo^.location.register128.reghi := rr^.newhi
- else
- exit;
-{$else cpu64bitalu}
- { it's possible a 64 bit location was shifted and/xor typecasted }
- { in a 32 bit value, so only 1 register was left in the location }
- if (ttemprefnode(n).tempinfo^.location.size in [OS_64,OS_S64]) then
- if (ttemprefnode(n).tempinfo^.location.register64.reghi = rr^.oldhi) then
- ttemprefnode(n).tempinfo^.location.register64.reghi := rr^.newhi
- else
- exit;
-{$endif cpu64bitalu}
- ttemprefnode(n).tempinfo^.location.register := rr^.new;
- result := fen_norecurse_true;
- end;
- end;
- { optimize the searching a bit }
- derefn,addrn,
- calln,inlinen,casen,
- addn,subn,muln,
- andn,orn,xorn,
- ltn,lten,gtn,gten,equaln,unequaln,
- slashn,divn,shrn,shln,notn,
- inn,
- asn,isn:
- result := fen_norecurse_false;
- end;
- end;
-
-
- procedure maybechangeloadnodereg(list: TAsmList; var n: tnode; reload: boolean);
- var
- rr: treplaceregrec;
- varloc : tai_varloc;
- begin
-{$ifdef jvm}
- exit;
-{$endif}
- if not (n.location.loc in [LOC_CREGISTER,LOC_CFPUREGISTER,LOC_CMMXREGISTER,LOC_CMMREGISTER]) or
- ([fc_inflowcontrol,fc_gotolabel,fc_lefthandled] * flowcontrol <> []) then
- exit;
- rr.old := n.location.register;
- rr.ressym := nil;
- rr.sym := nil;
- rr.oldhi := NR_NO;
- case n.location.loc of
- LOC_CREGISTER:
- begin
- {$ifdef cpu64bitalu}
- if (n.location.size in [OS_128,OS_S128]) then
- begin
- rr.oldhi := n.location.register128.reghi;
- rr.new := cg.getintregister(current_asmdata.CurrAsmList,OS_INT);
- rr.newhi := cg.getintregister(current_asmdata.CurrAsmList,OS_INT);
- end
- else
- {$else cpu64bitalu}
- if (n.location.size in [OS_64,OS_S64]) then
- begin
- rr.oldhi := n.location.register64.reghi;
- rr.new := cg.getintregister(current_asmdata.CurrAsmList,OS_32);
- rr.newhi := cg.getintregister(current_asmdata.CurrAsmList,OS_32);
- end
- else
- {$endif cpu64bitalu}
- rr.new := cg.getintregister(current_asmdata.CurrAsmList,n.location.size);
- end;
- LOC_CFPUREGISTER:
- rr.new := cg.getfpuregister(current_asmdata.CurrAsmList,n.location.size);
- {$ifdef SUPPORT_MMX}
- LOC_CMMXREGISTER:
- rr.new := tcgx86(cg).getmmxregister(current_asmdata.CurrAsmList);
- {$endif SUPPORT_MMX}
- LOC_CMMREGISTER:
- rr.new := cg.getmmregister(current_asmdata.CurrAsmList,n.location.size);
- else
- exit;
- end;
-
- { self is implicitly returned from constructors, even if there are no
- references to it; additionally, funcretsym is not set for constructor
- procdefs }
- if (current_procinfo.procdef.proctypeoption=potype_constructor) then
- rr.ressym:=tsym(current_procinfo.procdef.parast.Find('self'))
- else if not is_void(current_procinfo.procdef.returndef) and
- assigned(current_procinfo.procdef.funcretsym) and
- (tabstractvarsym(current_procinfo.procdef.funcretsym).refs <> 0) then
- rr.ressym:=current_procinfo.procdef.funcretsym;
-
- if not foreachnodestatic(n,@doreplace,@rr) then
- exit;
-
- if reload then
- case n.location.loc of
- LOC_CREGISTER:
- begin
- {$ifdef cpu64bitalu}
- if (n.location.size in [OS_128,OS_S128]) then
- cg128.a_load128_reg_reg(list,n.location.register128,joinreg128(rr.new,rr.newhi))
- else
- {$else cpu64bitalu}
- if (n.location.size in [OS_64,OS_S64]) then
- cg64.a_load64_reg_reg(list,n.location.register64,joinreg64(rr.new,rr.newhi))
- else
- {$endif cpu64bitalu}
- cg.a_load_reg_reg(list,n.location.size,n.location.size,n.location.register,rr.new);
- end;
- LOC_CFPUREGISTER:
- cg.a_loadfpu_reg_reg(list,n.location.size,n.location.size,n.location.register,rr.new);
- {$ifdef SUPPORT_MMX}
- LOC_CMMXREGISTER:
- cg.a_loadmm_reg_reg(list,OS_M64,OS_M64,n.location.register,rr.new,nil);
- {$endif SUPPORT_MMX}
- LOC_CMMREGISTER:
- cg.a_loadmm_reg_reg(list,n.location.size,n.location.size,n.location.register,rr.new,nil);
- else
- internalerror(2006090920);
- end;
-
- { now that we've change the loadn/temp, also change the node result location }
- {$ifdef cpu64bitalu}
- if (n.location.size in [OS_128,OS_S128]) then
- begin
- n.location.register128.reglo := rr.new;
- n.location.register128.reghi := rr.newhi;
- if assigned(rr.sym) and
- ((rr.sym.currentregloc.register<>rr.new) or
- (rr.sym.currentregloc.registerhi<>rr.newhi)) then
- begin
- varloc:=tai_varloc.create128(rr.sym,rr.new,rr.newhi);
- varloc.oldlocation:=rr.sym.currentregloc.register;
- varloc.oldlocationhi:=rr.sym.currentregloc.registerhi;
- rr.sym.currentregloc.register:=rr.new;
- rr.sym.currentregloc.registerHI:=rr.newhi;
- list.concat(varloc);
- end;
- end
- else
- {$else cpu64bitalu}
- if (n.location.size in [OS_64,OS_S64]) then
- begin
- n.location.register64.reglo := rr.new;
- n.location.register64.reghi := rr.newhi;
- if assigned(rr.sym) and
- ((rr.sym.currentregloc.register<>rr.new) or
- (rr.sym.currentregloc.registerhi<>rr.newhi)) then
- begin
- varloc:=tai_varloc.create64(rr.sym,rr.new,rr.newhi);
- varloc.oldlocation:=rr.sym.currentregloc.register;
- varloc.oldlocationhi:=rr.sym.currentregloc.registerhi;
- rr.sym.currentregloc.register:=rr.new;
- rr.sym.currentregloc.registerHI:=rr.newhi;
- list.concat(varloc);
- end;
- end
- else
- {$endif cpu64bitalu}
- begin
- n.location.register := rr.new;
- if assigned(rr.sym) and (rr.sym.currentregloc.register<>rr.new) then
- begin
- varloc:=tai_varloc.create(rr.sym,rr.new);
- varloc.oldlocation:=rr.sym.currentregloc.register;
- rr.sym.currentregloc.register:=rr.new;
- list.concat(varloc);
- end;
- end;
- end;
-
-
procedure gen_free_symtable(list:TAsmList;st:TSymtable);
var
i : longint;
@@ -2141,8 +1905,8 @@ implementation
LOC_CREFERENCE,
LOC_REFERENCE:
begin
- reference_reset_base(href,cg.getaddressregister(list),objdef.vmt_offset,sizeof(pint));
- cg.a_loadaddr_ref_reg(list,selfloc.reference,href.base);
+ hlcg.reference_reset_base(href,voidpointertype,hlcg.getaddressregister(list,voidpointertype),objdef.vmt_offset,voidpointertype.size);
+ hlcg.a_loadaddr_ref_reg(list,voidpointertype,voidpointertype,selfloc.reference,href.base);
selfdef:=getpointerdef(objdef);
end;
else
@@ -2166,7 +1930,7 @@ implementation
end
else
{$endif cpu_uses_separate_address_registers}
- reference_reset_base(href,selfloc.register,objdef.vmt_offset,sizeof(pint));
+ hlcg.reference_reset_base(href,voidpointertype,selfloc.register,objdef.vmt_offset,voidpointertype.size);
end;
LOC_CONSTANT,
LOC_CREGISTER,
@@ -2177,7 +1941,7 @@ implementation
LOC_CSUBSETREF,
LOC_SUBSETREF:
begin
- reference_reset_base(href,cg.getaddressregister(list),objdef.vmt_offset,sizeof(pint));
+ hlcg.reference_reset_base(href,voidpointertype,hlcg.getaddressregister(list,voidpointertype),objdef.vmt_offset,voidpointertype.size);
{ todo: pass actual vmt pointer type to hlcg }
hlcg.a_load_loc_reg(list,voidpointertype,voidpointertype,selfloc,href.base);
end;
@@ -2185,9 +1949,9 @@ implementation
internalerror(200305057);
end;
end;
- vmtreg:=cg.getaddressregister(list);
+ vmtreg:=hlcg.getaddressregister(list,voidpointertype);
hlcg.g_maybe_testself(list,selfdef,href.base);
- cg.a_load_ref_reg(list,OS_ADDR,OS_ADDR,href,vmtreg);
+ hlcg.a_load_ref_reg(list,voidpointertype,voidpointertype,href,vmtreg);
{ test validity of VMT }
if not(is_interface(objdef)) and
diff --git a/compiler/ncgvmt.pas b/compiler/ncgvmt.pas
index d5687d0609..792bc7f2fb 100644
--- a/compiler/ncgvmt.pas
+++ b/compiler/ncgvmt.pas
@@ -26,23 +26,8 @@ unit ncgvmt;
interface
uses
- symbase;
-
- { generate persistent type information like VMT, RTTI and inittables }
- procedure write_persistent_type_info(st:tsymtable;is_global:boolean);
-
-implementation
-
- uses
- cutils,cclasses,
- globtype,globals,verbose,constexp,
- systems,
- symconst,symtype,symdef,symsym,symtable,defutil,
- aasmbase,aasmtai,aasmdata,
- wpobase,
- nobj,
- cgbase,parabase,paramgr,cgobj,cgcpu,hlcgobj,hlcgcpu,
- ncgrtti;
+ aasmdata,aasmbase,
+ symbase,symdef;
type
pprocdeftree = ^tprocdeftree;
@@ -93,11 +78,33 @@ implementation
function gendmt : tasmlabel;
{$endif WITHDMT}
public
- constructor create(c:tobjectdef);
+ constructor create(c:tobjectdef); virtual;
{ write the VMT to al_globals }
procedure writevmt;
procedure writeinterfaceids(list: TAsmList);
+ { should the VMT writer be used at all (e.g., not for the JVM target) }
+ class function use_vmt_writer: boolean; virtual;
end;
+ TVMTWriterClass = class of TVMTWriter;
+
+ { generate persistent type information like VMT, RTTI and inittables }
+ procedure write_persistent_type_info(st:tsymtable;is_global:boolean);
+
+ var
+ CVMTWriter: TVMTWriterClass = TVMTWriter;
+
+implementation
+
+ uses
+ cutils,cclasses,
+ globtype,globals,verbose,constexp,
+ systems,
+ symconst,symtype,symsym,symtable,defutil,
+ aasmtai,
+ wpobase,
+ nobj,
+ cgbase,parabase,paramgr,cgobj,cgcpu,hlcgobj,hlcgcpu,
+ ncgrtti;
{*****************************************************************************
@@ -686,6 +693,12 @@ implementation
end;
+ class function TVMTWriter.use_vmt_writer: boolean;
+ begin
+ result:=true;
+ end;
+
+
function TVMTWriter.RedirectToEmpty(procdef : tprocdef) : boolean;
var
i : longint;
@@ -750,7 +763,7 @@ implementation
vmtpd : tprocdef;
vmtentry : pvmtentry;
i : longint;
- procname : string;
+ procname : TSymStr;
{$ifdef vtentry}
hs : string;
{$endif vtentry}
@@ -964,10 +977,8 @@ implementation
def : tdef;
vmtwriter : TVMTWriter;
begin
-{$ifdef jvm}
- { no Delphi-style RTTI }
- exit;
-{$endif jvm}
+ if not CVMTWriter.use_vmt_writer then
+ exit;
for i:=0 to st.DefList.Count-1 do
begin
def:=tdef(st.DefList[i]);
@@ -984,7 +995,7 @@ implementation
{ Write also VMT if not done yet }
if not(ds_vmt_written in def.defstates) then
begin
- vmtwriter:=TVMTWriter.create(tobjectdef(def));
+ vmtwriter:=CVMTWriter.create(tobjectdef(def));
if is_interface(tobjectdef(def)) then
vmtwriter.writeinterfaceids(current_asmdata.AsmLists[al_globals]);
if (oo_has_vmt in tobjectdef(def).objectoptions) then
diff --git a/compiler/ncnv.pas b/compiler/ncnv.pas
index cbe35735ef..6a4c9b09dd 100644
--- a/compiler/ncnv.pas
+++ b/compiler/ncnv.pas
@@ -293,7 +293,7 @@ implementation
uses
globtype,systems,constexp,
cutils,verbose,globals,widestr,
- symconst,symdef,symsym,symtable,
+ symconst,symdef,symsym,symcpu,symtable,
ncon,ncal,nset,nadd,nmem,nmat,nbas,nutils,ninl,
cgbase,procinfo,
htypechk,pass_1,cpuinfo;
@@ -643,7 +643,7 @@ implementation
p.free;
end;
{ set the initial set type }
- constp.resultdef:=tsetdef.create(hdef,constsetlo.svalue,constsethi.svalue);
+ constp.resultdef:=csetdef.create(hdef,constsetlo.svalue,constsethi.svalue);
{ determine the resultdef for the tree }
typecheckpass(buildp);
{ set the new tree }
@@ -2508,7 +2508,12 @@ implementation
{ also done otherwise so there is no difference }
{ in overload choosing etc between $r+ and $r-) }
if (nf_internal in n.flags) then
- result:=true
+ begin
+ result:=true;
+ { the result could become negative in this case }
+ if n.nodetype=subn then
+ gotsint:=true
+ end
else
result:=
docheckremove64bittypeconvs(tbinarynode(n).left) and
diff --git a/compiler/ncon.pas b/compiler/ncon.pas
index ddcb98e181..3357e7f1e7 100644
--- a/compiler/ncon.pas
+++ b/compiler/ncon.pas
@@ -738,11 +738,6 @@ implementation
begin
inherited create(pointerconstn);
-{$ifdef i8086}
- { truncate near pointers }
- if (def.typ<>pointerdef) or not (tpointerdef(def).x86pointertyp in [x86pt_far,x86pt_huge]) then
- v := Word(v);
-{$endif i8086}
value:=v;
typedef:=def;
end;
@@ -971,7 +966,7 @@ implementation
l:=len-1
else
l:=0;
- resultdef:=tarraydef.create(0,l,s32inttype);
+ resultdef:=carraydef.create(0,l,s32inttype);
tarraydef(resultdef).elementdef:=cansichartype;
include(tarraydef(resultdef).arrayoptions,ado_IsConstString);
end;
diff --git a/compiler/nflw.pas b/compiler/nflw.pas
index e1c38bf6a2..c76b171fc2 100644
--- a/compiler/nflw.pas
+++ b/compiler/nflw.pas
@@ -182,6 +182,7 @@ interface
constructor create(l,r,_t1 : tnode);virtual;reintroduce;
function pass_typecheck:tnode;override;
function pass_1 : tnode;override;
+ function simplify(forinline: boolean): tnode; override;
end;
ttryexceptnodeclass = class of ttryexceptnode;
@@ -351,7 +352,7 @@ implementation
typecheckpass(tnode(state));
addstatement(mainstatement,state);
{ the temporary items array }
- itemsarraydef:=tarraydef.create(1,16,u32inttype);
+ itemsarraydef:=carraydef.create(1,16,u32inttype);
itemsarraydef.elementdef:=objc_idtype;
items:=ctempcreatenode.create(itemsarraydef,itemsarraydef.size,tt_persistent,false);
addstatement(mainstatement,items);
@@ -456,7 +457,7 @@ implementation
if hp.resultdef.typ<>pointerdef then
internalerror(2010061904);
inserttypeconv(hp,
- tarraydef.create_from_pointer(tpointerdef(hp.resultdef).pointeddef));
+ carraydef.create_from_pointer(tpointerdef(hp.resultdef).pointeddef));
hp:=cvecnode.create(hp,ctemprefnode.create(innerloopcounter));
addstatement(innerloopbodystatement,
cassignmentnode.create(hloopvar,hp));
@@ -570,7 +571,7 @@ implementation
if assigned(tmpdef) and (tmpdef.typ=arraydef) and (tarraydef(tmpdef).arrayoptions = []) then
begin
elementcount:=elementcount*tarraydef(tmpdef).elecount;
- convertdef:=tarraydef.create(0,elementcount-1,s32inttype);
+ convertdef:=carraydef.create(0,elementcount-1,s32inttype);
tarraydef(convertdef).elementdef:=tarraydef(tmpdef).elementdef;
expression:=expr.getcopy;
expression:=ctypeconvnode.create_internal(expression,convertdef);
@@ -579,7 +580,8 @@ implementation
end;
end;
- if (node_complexity(expression) > 1) and not is_open_array(expression.resultdef) then
+ if (node_complexity(expression) > 1) and
+ not(is_open_array(expression.resultdef)) and not(is_array_of_const(expression.resultdef)) then
begin
{ create a temp variable for expression }
arrayvar := ctempcreatenode.create(
@@ -1965,14 +1967,7 @@ implementation
begin
{ addr }
typecheckpass(right);
-{$ifdef i8086}
- if current_settings.x86memorymodel in x86_far_code_models then
- inserttypeconv(right,voidfarpointertype)
- else
- inserttypeconv(right,voidnearpointertype);
-{$else i8086}
- inserttypeconv(right,voidpointertype);
-{$endif i8086}
+ inserttypeconv(right,voidcodepointertype);
{ frame }
if assigned(third) then
begin
@@ -2010,7 +2005,7 @@ implementation
else
begin
third:=cinlinenode.create(in_get_frame,false,nil);
- current_addr:=clabelnode.create(cnothingnode.create,tlabelsym.create('$raiseaddr'));
+ current_addr:=clabelnode.create(cnothingnode.create,clabelsym.create('$raiseaddr'));
addstatement(statements,current_addr);
right:=caddrnode.create(cloadnode.create(current_addr.labsym,current_addr.labsym.owner));
end;
@@ -2077,6 +2072,15 @@ implementation
end;
+ function ttryexceptnode.simplify(forinline: boolean): tnode;
+ begin
+ result:=nil;
+ { empty try -> can never raise exception -> do nothing }
+ if has_no_code(left) then
+ result:=cnothingnode.create;
+ end;
+
+
{*****************************************************************************
TTRYFINALLYNODE
*****************************************************************************}
@@ -2182,7 +2186,7 @@ implementation
destroyed before procsym, leaving invalid pointers). }
oldsymtablestack:=symtablestack;
symtablestack:=nil;
- result:=tprocdef.create(max(normal_function_level,st.symtablelevel)+1);
+ result:=cprocdef.create(max(normal_function_level,st.symtablelevel)+1);
symtablestack:=oldsymtablestack;
st.insertdef(result);
result.struct:=current_procinfo.procdef.struct;
@@ -2191,7 +2195,7 @@ implementation
exclude(result.procoptions,po_delphi_nested_cc);
result.proctypeoption:=potype_exceptfilter;
handle_calling_convention(result);
- sym:=tprocsym.create('$fin$'+tostr(seq));
+ sym:=cprocsym.create('$fin$'+tostr(seq));
st.insert(sym);
inc(seq);
diff --git a/compiler/ngenutil.pas b/compiler/ngenutil.pas
index c5b2329b8d..f4cd140802 100644
--- a/compiler/ngenutil.pas
+++ b/compiler/ngenutil.pas
@@ -592,7 +592,7 @@ implementation
var
pd: tprocdef;
begin
- pd:=tprocdef.create(main_program_level);
+ pd:=cprocdef.create(main_program_level);
pd.procsym:=ps;
ps.ProcdefList.Add(pd);
include(pd.procoptions,po_global);
diff --git a/compiler/ngtcon.pas b/compiler/ngtcon.pas
index 67be1fdd21..4a0a200451 100644
--- a/compiler/ngtcon.pas
+++ b/compiler/ngtcon.pas
@@ -76,11 +76,11 @@ interface
tasmlisttypedconstbuilder = class(ttypedconstbuilder)
private
- list: tasmlist;
curoffset: asizeint;
function parse_single_packed_const(def: tdef; var bp: tbitpackedval): boolean;
protected
+ list: tasmlist;
procedure parse_packed_array_def(def: tarraydef);
procedure parse_arraydef(def:tarraydef);override;
diff --git a/compiler/ninl.pas b/compiler/ninl.pas
index 68a6340919..56ac546d00 100644
--- a/compiler/ninl.pas
+++ b/compiler/ninl.pas
@@ -45,6 +45,7 @@ interface
{ pack and unpack are changed into for-loops by the compiler }
function first_pack_unpack: tnode; virtual;
+ property parameters : tnode read left write left;
protected
{ All the following routines currently
call compilerprocs, unless they are
@@ -83,6 +84,7 @@ interface
function typecheck_seg: tnode; virtual;
function first_seg: tnode; virtual;
function first_sar: tnode; virtual;
+ function first_fma : tnode; virtual;
private
function handle_str: tnode;
function handle_reset_rewrite_typed: tnode;
@@ -108,7 +110,7 @@ implementation
uses
verbose,globals,systems,constexp,
globtype,cutils,fmodule,
- symconst,symdef,symsym,symtable,paramgr,defutil,symbase,
+ symconst,symdef,symsym,symcpu,symtable,paramgr,defutil,symbase,
pass_1,
ncal,ncon,ncnv,nadd,nld,nbas,nflw,nmem,nmat,nutils,
nobjc,objcdef,
@@ -392,15 +394,25 @@ implementation
not (def.typ in [arraydef,recorddef,variantdef,objectdef,procvardef]) or
((def.typ=objectdef) and not is_object(def)) then
internalerror(201202101);
- defaultname:=make_mangledname('zero',def.owner,def.typesym.Name);
- hashedid.id:=defaultname;
+ { extra '$' prefix because on darwin the result of makemangledname
+ is prefixed by '_' and hence adding a '$' at the start of the
+ prefix passed to makemangledname doesn't help (the whole point of
+ the copy() operation below is to ensure that the id does not start
+ with a '$', because that is interpreted specially by the symtable
+ routines -- that's also why we prefix with '$_', so it will still
+ work if make_mangledname() would somehow return a name that already
+ starts with '$' }
+ defaultname:='$_'+make_mangledname('zero',def.owner,def.typesym.Name);
+ { can't hardcode the position of the '$', e.g. on darwin an underscore
+ is added }
+ hashedid.id:=copy(defaultname,2,255);
{ the default sym is always part of the current procedure/function }
srsymtable:=current_procinfo.procdef.localst;
srsym:=tsym(srsymtable.findwithhash(hashedid));
if not assigned(srsym) then
begin
{ no valid default variable found, so create it }
- srsym:=tlocalvarsym.create(defaultname,vs_const,def,[]);
+ srsym:=clocalvarsym.create(defaultname,vs_const,def,[]);
srsymtable.insert(srsym);
{ mark the staticvarsym as typedconst }
include(tabstractvarsym(srsym).varoptions,vo_is_typed_const);
@@ -2762,7 +2774,13 @@ implementation
begin
{ will be handled in simplify }
end;
- end
+ end;
+ undefineddef :
+ begin
+ if not (df_generic in current_procinfo.procdef.defoptions) then
+ CGMessage(type_e_mismatch);
+ { otherwise nothing }
+ end;
else
CGMessage(type_e_mismatch);
end;
@@ -3229,6 +3247,16 @@ implementation
begin
result:=handle_unbox;
end;
+ in_fma_single,
+ in_fma_double,
+ in_fma_extended,
+ in_fma_float128:
+ begin
+ set_varstate(tcallparanode(left).left,vs_read,[vsf_must_be_valid]);
+ set_varstate(tcallparanode(tcallparanode(left).right).left,vs_read,[vsf_must_be_valid]);
+ set_varstate(tcallparanode(tcallparanode(tcallparanode(left).right).right).left,vs_read,[vsf_must_be_valid]);
+ resultdef:=tcallparanode(left).left.resultdef;
+ end;
else
internalerror(8);
end;
@@ -3343,7 +3371,7 @@ implementation
hp:=caddnode.create(subn,left,hp);
{ assign result of addition }
if not(is_integer(resultdef)) then
- inserttypeconv(hp,torddef.create(
+ inserttypeconv(hp,corddef.create(
{$ifdef cpu64bitaddr}
s64bit,
{$else cpu64bitaddr}
@@ -3452,7 +3480,7 @@ implementation
hpp := caddnode.create(subn,hp,hpp);
{ assign result of addition }
if not(is_integer(resultnode.resultdef)) then
- inserttypeconv(hpp,torddef.create(
+ inserttypeconv(hpp,corddef.create(
{$ifdef cpu64bitaddr}
s64bit,
{$else cpu64bitaddr}
@@ -3643,6 +3671,11 @@ implementation
result:=first_box;
in_unbox_x_y:
result:=first_unbox;
+ in_fma_single,
+ in_fma_double,
+ in_fma_extended,
+ in_fma_float128:
+ result:=first_fma;
else
internalerror(89);
end;
@@ -4167,7 +4200,7 @@ implementation
temprangedef:=nil;
getrange(unpackednode.resultdef,ulorange,uhirange);
getrange(packednode.resultdef,plorange,phirange);
- temprangedef:=torddef.create(torddef(sinttype).ordtype,ulorange,uhirange);
+ temprangedef:=corddef.create(torddef(sinttype).ordtype,ulorange,uhirange);
sourcevecindex := ctemprefnode.create(loopvar);
targetvecindex := ctypeconvnode.create_internal(index.getcopy,sinttype);
targetvecindex := caddnode.create(subn,targetvecindex,cordconstnode.create(plorange,sinttype,true));
@@ -4202,4 +4235,12 @@ implementation
result := loop;
end;
+
+ function tinlinenode.first_fma: tnode;
+ begin
+ CGMessage1(cg_e_function_not_support_by_selected_instruction_set,'FMA');
+ result:=nil;
+ end;
+
end.
+
diff --git a/compiler/nld.pas b/compiler/nld.pas
index ef36504ba1..a72f0bbc6b 100644
--- a/compiler/nld.pas
+++ b/compiler/nld.pas
@@ -342,7 +342,7 @@ implementation
resultdef:=tobjectdef(resultdef).extendeddef;
if (po_classmethod in tprocdef(symtableentry.owner.defowner).procoptions) or
(po_staticmethod in tprocdef(symtableentry.owner.defowner).procoptions) then
- resultdef:=tclassrefdef.create(resultdef)
+ resultdef:=cclassrefdef.create(resultdef)
else if (is_object(resultdef) or is_record(resultdef)) and
(loadnf_load_self_pointer in loadnodeflags) then
resultdef:=getpointerdef(resultdef);
@@ -350,7 +350,7 @@ implementation
else if vo_is_vmt in tabstractvarsym(symtableentry).varoptions then
begin
resultdef:=tprocdef(symtableentry.owner.defowner).struct;
- resultdef:=tclassrefdef.create(resultdef);
+ resultdef:=cclassrefdef.create(resultdef);
end
else
resultdef:=tabstractvarsym(symtableentry).vardef;
@@ -1066,7 +1066,7 @@ implementation
is_array_of_const(hdef) or
is_open_array(hdef) then
hdef:=voidtype;
- resultdef:=tarraydef.create(0,len-1,s32inttype);
+ resultdef:=carraydef.create(0,len-1,s32inttype);
tarraydef(resultdef).elementdef:=hdef;
include(tarraydef(resultdef).arrayoptions,ado_IsConstructor);
if varia then
diff --git a/compiler/nmat.pas b/compiler/nmat.pas
index e9a1d37855..de86d6e505 100644
--- a/compiler/nmat.pas
+++ b/compiler/nmat.pas
@@ -197,6 +197,14 @@ implementation
result:=nil;
typecheckpass(left);
typecheckpass(right);
+
+ { avoid any problems with type parameters later on }
+ if is_typeparam(left.resultdef) or is_typeparam(right.resultdef) then
+ begin
+ resultdef:=cundefinedtype;
+ exit;
+ end;
+
set_varstate(left,vs_read,[vsf_must_be_valid]);
set_varstate(right,vs_read,[vsf_must_be_valid]);
if codegenerror then
@@ -584,11 +592,7 @@ implementation
begin
{ shl/shr are unsigned operations, so cut off upper bits }
case resultdef.size of
- 1:
- rvalue:=tordconstnode(right).value and byte($7);
- 2:
- rvalue:=tordconstnode(right).value and byte($f);
- 4:
+ 1,2,4:
rvalue:=tordconstnode(right).value and byte($1f);
8:
rvalue:=tordconstnode(right).value and byte($3f);
@@ -637,13 +641,18 @@ implementation
function tshlshrnode.pass_typecheck:tnode;
var
t : tnode;
-{$ifdef cpunodefaultint}
- nd : tdef;
-{$endif cpunodefaultint}
begin
result:=nil;
typecheckpass(left);
typecheckpass(right);
+
+ { avoid any problems with type parameters later on }
+ if is_typeparam(left.resultdef) or is_typeparam(right.resultdef) then
+ begin
+ resultdef:=cundefinedtype;
+ exit;
+ end;
+
set_varstate(right,vs_read,[vsf_must_be_valid]);
set_varstate(left,vs_read,[vsf_must_be_valid]);
if codegenerror then
@@ -661,14 +670,6 @@ implementation
exit;
end;
-{$ifdef cpunodefaultint}
- { for small cpus we use the smallest common type }
- if (left.resultdef.typ=orddef) and (right.resultdef.typ=orddef) then
- nd:=get_common_intdef(torddef(left.resultdef),torddef(right.resultdef),false)
- else
- nd:=s32inttype;
-{$endif cpunodefaultint}
-
{ calculations for ordinals < 32 bit have to be done in
32 bit for backwards compatibility. That way 'shl 33' is
the same as 'shl 1'. It's ugly but compatible with delphi/tp/gcc }
@@ -678,41 +679,27 @@ implementation
{ keep singness of orignal type }
if is_signed(left.resultdef) then
begin
-{$if defined(cpunodefaultint)}
- inserttypeconv(left,nd)
-{$elseif defined(cpu64bitalu) or defined(cpu32bitalu)}
+{$if defined(cpu64bitalu) or defined(cpu32bitalu)}
inserttypeconv(left,s32inttype)
-{$elseif defined(cpu16bitalu)}
- if (left.resultdef.size > 2) or (right.resultdef.size > 2) then
- inserttypeconv(left,s32inttype)
- else
- inserttypeconv(left,sinttype);
+{$elseif defined(cpu16bitalu) or defined(cpu8bitalu)}
+ inserttypeconv(left,get_common_intdef(torddef(left.resultdef),torddef(sinttype),true));
{$else}
internalerror(2013031301);
{$endif}
end
else
begin
-{$if defined(cpunodefaultint)}
- inserttypeconv(left,nd)
-{$elseif defined(cpu64bitalu) or defined(cpu32bitalu)}
+{$if defined(cpu64bitalu) or defined(cpu32bitalu)}
inserttypeconv(left,u32inttype);
-{$elseif defined(cpu16bitalu)}
- if (left.resultdef.size > 2) or (right.resultdef.size > 2) then
- inserttypeconv(left,u32inttype)
- else
- inserttypeconv(left,uinttype);
+{$elseif defined(cpu16bitalu) or defined(cpu8bitalu)}
+ inserttypeconv(left,get_common_intdef(torddef(left.resultdef),torddef(uinttype),true));
{$else}
internalerror(2013031301);
{$endif}
end
end;
-{$ifdef cpunodefaultint}
- inserttypeconv(right,nd);
-{$else cpunodefaultint}
inserttypeconv(right,sinttype);
-{$endif cpunodefaultint}
resultdef:=left.resultdef;
@@ -818,6 +805,14 @@ implementation
begin
result:=nil;
typecheckpass(left);
+
+ { avoid any problems with type parameters later on }
+ if is_typeparam(left.resultdef) then
+ begin
+ resultdef:=cundefinedtype;
+ exit;
+ end;
+
set_varstate(left,vs_read,[vsf_must_be_valid]);
if codegenerror then
exit;
@@ -968,6 +963,14 @@ implementation
begin
result:=nil;
typecheckpass(left);
+
+ { avoid any problems with type parameters later on }
+ if is_typeparam(left.resultdef) then
+ begin
+ resultdef:=cundefinedtype;
+ exit;
+ end;
+
set_varstate(left,vs_read,[vsf_must_be_valid]);
if codegenerror then
exit;
@@ -1093,26 +1096,24 @@ implementation
u16bit,
s16bit,
s32bit,
-{$ifdef cpu64bitaddr}
u32bit,
-{$endif cpu64bitaddr}
- s64bit:
+ s64bit,
+ u64bit:
begin
- v:=int64(not int64(v));
- if (torddef(left.resultdef).ordtype<>s64bit) then
- def:=sinttype
+ { unsigned, equal or bigger than the native int size? }
+ if (torddef(left.resultdef).ordtype in [u64bit,u32bit,u16bit,u8bit,uchar,uwidechar]) and
+ (is_nativeord(left.resultdef) or is_oversizedord(left.resultdef)) then
+ begin
+ { Delphi-compatible: not dword = dword (not word = longint) }
+ { Extension: not qword = qword }
+ v:=qword(not qword(v));
+ { will be truncated by the ordconstnode for u32bit }
+ end
else
- def:=s64inttype;
- end;
-{$ifndef cpu64bitaddr}
- u32bit,
-{$endif not cpu64bitaddr}
- u64bit :
- begin
- { Delphi-compatible: not dword = dword (not word = longint) }
- { Extension: not qword = qword }
- v:=qword(not qword(v));
- { will be truncated by the ordconstnode for u32bit }
+ begin
+ v:=int64(not int64(v));
+ def:=get_common_intdef(torddef(left.resultdef),torddef(sinttype),false);
+ end;
end;
else
CGMessage(type_e_mismatch);
@@ -1144,6 +1145,14 @@ implementation
begin
result:=nil;
typecheckpass(left);
+
+ { avoid any problems with type parameters later on }
+ if is_typeparam(left.resultdef) then
+ begin
+ resultdef:=cundefinedtype;
+ exit;
+ end;
+
set_varstate(left,vs_read,[vsf_must_be_valid]);
if codegenerror then
exit;
diff --git a/compiler/nmem.pas b/compiler/nmem.pas
index 52bc50594f..016b5df2e7 100644
--- a/compiler/nmem.pas
+++ b/compiler/nmem.pas
@@ -77,6 +77,7 @@ interface
function pass_typecheck:tnode;override;
protected
mark_read_written: boolean;
+ function typecheck_non_proc(realsource: tnode; out res: tnode): boolean; virtual;
end;
taddrnodeclass = class of taddrnode;
@@ -187,7 +188,7 @@ implementation
if assigned(current_structdef.genericdef) then
if current_structdef.genericdef=left.resultdef then
begin
- resultdef:=tclassrefdef.create(current_structdef);
+ resultdef:=cclassrefdef.create(current_structdef);
defaultresultdef:=false;
end
else
@@ -196,10 +197,10 @@ implementation
else
message(parser_e_cant_create_generics_of_this_type);
if defaultresultdef then
- resultdef:=tclassrefdef.create(left.resultdef);
+ resultdef:=cclassrefdef.create(left.resultdef);
end
else
- resultdef:=tclassrefdef.create(left.resultdef);
+ resultdef:=cclassrefdef.create(left.resultdef);
end
else
CGMessage(parser_e_pointer_to_class_expected);
@@ -477,10 +478,9 @@ implementation
function taddrnode.pass_typecheck:tnode;
var
- hp : tnode;
+ hp : tnode;
hsym : tfieldvarsym;
isprocvar : boolean;
- offset: asizeint;
begin
result:=nil;
typecheckpass(left);
@@ -530,14 +530,7 @@ implementation
begin
if tabstractprocdef(left.resultdef).is_addressonly then
begin
-{$ifdef i8086}
- if po_far in tabstractprocdef(left.resultdef).procoptions then
- result:=ctypeconvnode.create_internal(left,voidfarpointertype)
- else
- result:=ctypeconvnode.create_internal(left,voidnearpointertype);
-{$else i8086}
- result:=ctypeconvnode.create_internal(left,voidpointertype);
-{$endif i8086}
+ result:=ctypeconvnode.create_internal(left,tabstractprocdef(left.resultdef).address_type);
include(result.flags,nf_load_procvar);
left:=nil;
end
@@ -571,79 +564,17 @@ implementation
end
else
begin
- { what are we getting the address from an absolute sym? }
hp:=left;
while assigned(hp) and (hp.nodetype in [typeconvn,vecn,derefn,subscriptn]) do
hp:=tunarynode(hp).left;
if not assigned(hp) then
internalerror(200412042);
-{$if defined(i386) or defined(i8086)}
- if (hp.nodetype=loadn) and
- ((tloadnode(hp).symtableentry.typ=absolutevarsym) and
- tabsolutevarsym(tloadnode(hp).symtableentry).absseg) then
+ if typecheck_non_proc(hp,result) then
begin
- {$if defined(i8086)}
- if not(nf_typedaddr in flags) then
- resultdef:=voidfarpointertype
- else
- resultdef:=tpointerdef.createx86(left.resultdef,x86pt_far);
- {$elseif defined(i386)}
- if not(nf_typedaddr in flags) then
- resultdef:=voidnearfspointertype
- else
- resultdef:=tpointerdef.createx86(left.resultdef,x86pt_near_fs);
- {$endif}
+ if assigned(result) then
+ exit;
end
else
-{$endif i386 or i8086}
- if (hp.nodetype=loadn) and
- (tloadnode(hp).symtableentry.typ=absolutevarsym) and
-{$if defined(i386) or defined(i8086)}
- not(tabsolutevarsym(tloadnode(hp).symtableentry).absseg) and
-{$endif i386 or i8086}
- (tabsolutevarsym(tloadnode(hp).symtableentry).abstyp=toaddr) then
- begin
- offset:=tabsolutevarsym(tloadnode(hp).symtableentry).addroffset;
- hp:=left;
- while assigned(hp)and(hp.nodetype=subscriptn) do
- begin
- hsym:=tsubscriptnode(hp).vs;
- if tabstractrecordsymtable(hsym.owner).is_packed then
- begin
- { can't calculate the address of a non-byte aligned field }
- if (hsym.fieldoffset mod 8)<>0 then
- exit;
- inc(offset,hsym.fieldoffset div 8)
- end
- else
- inc(offset,hsym.fieldoffset);
- hp:=tunarynode(hp).left;
- end;
- if nf_typedaddr in flags then
- result:=cpointerconstnode.create(offset,getpointerdef(left.resultdef))
- else
- result:=cpointerconstnode.create(offset,voidpointertype);
- exit;
- end
-{$ifdef i8086}
- else if (hp.nodetype=loadn) and
- (tloadnode(hp).symtableentry.typ=labelsym) then
- begin
- if current_settings.x86memorymodel in x86_far_code_models then
- resultdef:=voidfarpointertype
- else
- resultdef:=voidnearpointertype;
- end
-{$endif i8086}
- else if (nf_internal in flags) or
- valid_for_addr(left,true) then
- begin
- if not(nf_typedaddr in flags) then
- resultdef:=voidpointertype
- else
- resultdef:=getpointerdef(left.resultdef);
- end
- else
CGMessage(type_e_variable_id_expected);
end;
@@ -661,6 +592,55 @@ implementation
end;
+ function taddrnode.typecheck_non_proc(realsource: tnode; out res: tnode): boolean;
+ var
+ hp : tnode;
+ hsym : tfieldvarsym;
+ offset: asizeint;
+ begin
+ result:=false;
+ res:=nil;
+ if (realsource.nodetype=loadn) and
+ (tloadnode(realsource).symtableentry.typ=absolutevarsym) and
+ (tabsolutevarsym(tloadnode(realsource).symtableentry).abstyp=toaddr) then
+ begin
+ offset:=tabsolutevarsym(tloadnode(realsource).symtableentry).addroffset;
+ hp:=left;
+ while assigned(hp)and(hp.nodetype=subscriptn) do
+ begin
+ hsym:=tsubscriptnode(hp).vs;
+ if tabstractrecordsymtable(hsym.owner).is_packed then
+ begin
+ { can't calculate the address of a non-byte aligned field }
+ if (hsym.fieldoffset mod 8)<>0 then
+ begin
+ CGMessagePos(hp.fileinfo,parser_e_packed_element_no_var_addr);
+ exit
+ end;
+ inc(offset,hsym.fieldoffset div 8)
+ end
+ else
+ inc(offset,hsym.fieldoffset);
+ hp:=tunarynode(hp).left;
+ end;
+ if nf_typedaddr in flags then
+ res:=cpointerconstnode.create(offset,getpointerdef(left.resultdef))
+ else
+ res:=cpointerconstnode.create(offset,voidpointertype);
+ result:=true;
+ end
+ else if (nf_internal in flags) or
+ valid_for_addr(left,true) then
+ begin
+ if not(nf_typedaddr in flags) then
+ resultdef:=voidpointertype
+ else
+ resultdef:=getpointerdef(left.resultdef);
+ result:=true;
+ end
+ end;
+
+
function taddrnode.pass_1 : tnode;
begin
result:=nil;
@@ -914,7 +894,7 @@ implementation
((tarraydef(left.resultdef).lowrange<>tenumdef(htype).min) or
(tarraydef(left.resultdef).highrange<>tenumdef(htype).max)) then
{Convert array indexes to low_bound..high_bound.}
- inserttypeconv(right,tenumdef.create_subrange(tenumdef(right.resultdef),
+ inserttypeconv(right,cenumdef.create_subrange(tenumdef(right.resultdef),
asizeint(Tarraydef(left.resultdef).lowrange),
asizeint(Tarraydef(left.resultdef).highrange)
))
@@ -944,7 +924,7 @@ implementation
newordtyp:=Torddef(right.resultdef).ordtype
else
newordtyp:=torddef(ptrsinttype).ordtype;
- inserttypeconv(right,Torddef.create(newordtyp,
+ inserttypeconv(right,corddef.create(newordtyp,
int64(Tarraydef(left.resultdef).lowrange),
int64(Tarraydef(left.resultdef).highrange)
))
@@ -957,7 +937,7 @@ implementation
inserttypeconv(right,u8inttype)
else if is_shortstring(left.resultdef) then
{Convert shortstring indexes to 0..length.}
- inserttypeconv(right,Torddef.create(u8bit,0,int64(Tstringdef(left.resultdef).len)))
+ inserttypeconv(right,corddef.create(u8bit,0,int64(Tstringdef(left.resultdef).len)))
else
{Convert indexes into dynamically allocated strings to aword.}
inserttypeconv(right,uinttype);
@@ -1000,14 +980,19 @@ implementation
{ webtbs/tw8975 }
if (cs_check_range in current_settings.localswitches) and
(is_open_array(left.resultdef) or
- is_array_of_const(left.resultdef)) and
- { cdecl functions don't have high() so we can not check the range }
- { (can't use current_procdef, since it may be a nested procedure) }
- not(tprocdef(tparasymtable(tparavarsym(tloadnode(left).symtableentry).owner).defowner).proccalloption in cdecl_pocalls) then
+ is_array_of_const(left.resultdef)) then
begin
- { load_high_value_node already typechecks }
- hightree:=load_high_value_node(tparavarsym(tloadnode(left).symtableentry));
- hightree.free;
+ { expect to find the load node }
+ if get_open_const_array(left).nodetype<>loadn then
+ internalerror(2014040601);
+ { cdecl functions don't have high() so we can not check the range }
+ { (can't use current_procdef, since it may be a nested procedure) }
+ if not(tprocdef(tparasymtable(tparavarsym(tloadnode(get_open_const_array(left)).symtableentry).owner).defowner).proccalloption in cdecl_pocalls) then
+ begin
+ { load_high_value_node already typechecks }
+ hightree:=load_high_value_node(tparavarsym(tloadnode(get_open_const_array(left)).symtableentry));
+ hightree.free;
+ end;
end;
end;
pointerdef :
@@ -1024,7 +1009,7 @@ implementation
) then
begin
{ convert pointer to array }
- htype:=tarraydef.create_from_pointer(tpointerdef(left.resultdef).pointeddef);
+ htype:=carraydef.create_from_pointer(tpointerdef(left.resultdef).pointeddef);
inserttypeconv(left,htype);
if right.nodetype=rangen then
resultdef:=htype
@@ -1051,7 +1036,7 @@ implementation
end;
if right.nodetype=rangen then
begin
- htype:=Tarraydef.create_from_pointer(elementdef);
+ htype:=carraydef.create_from_pointer(elementdef);
resultdef:=htype;
end
else
diff --git a/compiler/nobj.pas b/compiler/nobj.pas
index 90165c361e..205891eb17 100644
--- a/compiler/nobj.pas
+++ b/compiler/nobj.pas
@@ -60,6 +60,7 @@ implementation
globals,verbose,systems,
node,
symbase,symtable,symconst,symtype,defcmp,
+ symcpu,
dbgbase,
wpobase
;
@@ -253,7 +254,7 @@ implementation
those are looked up dynamicall by name }
javanewtreeok:=
is_java_class_or_interface(_class) and
- (pd.jvmmangledbasename(false)<>vmtpd.jvmmangledbasename(false)) and
+ (tcpuprocdef(pd).jvmmangledbasename(false)<>tcpuprocdef(vmtpd).jvmmangledbasename(false)) and
((vmtpd.proctypeoption<>potype_constructor) and
not(po_staticmethod in vmtpd.procoptions));
{$endif}
@@ -768,9 +769,9 @@ implementation
{ allocate a pointer in the object memory }
with tObjectSymtable(_class.symtable) do
begin
- datasize:=align(datasize,sizeof(pint));
+ datasize:=align(datasize,voidpointertype.alignment);
ImplIntf.Ioffset:=datasize;
- datasize:=datasize+sizeof(pint);
+ datasize:=datasize+voidpointertype.size;
end;
end;
end;
diff --git a/compiler/nset.pas b/compiler/nset.pas
index 44c2730a6d..90c2e7167c 100644
--- a/compiler/nset.pas
+++ b/compiler/nset.pas
@@ -754,11 +754,11 @@ implementation
if (labels^.label_type = ltConstString) then
begin
- endlabel:=clabelnode.create(cnothingnode.create,tlabelsym.create('$casestrofend'));
+ endlabel:=clabelnode.create(cnothingnode.create,clabelsym.create('$casestrofend'));
stmt_block:=internalstatements(stmt);
for i:=0 to blocks.count-1 do
begin
- pcaseblock(blocks[i])^.statementlabel:=clabelnode.create(cnothingnode.create,tlabelsym.create('$casestrof'));
+ pcaseblock(blocks[i])^.statementlabel:=clabelnode.create(cnothingnode.create,clabelsym.create('$casestrof'));
addstatement(stmt,pcaseblock(blocks[i])^.statementlabel);
addstatement(stmt,pcaseblock(blocks[i])^.statement);
pcaseblock(blocks[i])^.statement:=nil;
diff --git a/compiler/nutils.pas b/compiler/nutils.pas
index f6d9667ac1..a802fffdf7 100644
--- a/compiler/nutils.pas
+++ b/compiler/nutils.pas
@@ -135,6 +135,12 @@ interface
node tree }
procedure replacenode(var dest,src : tnode);
+ { strip off deref/addr combinations when looking for a the load node of an open array/array of const
+ since there is no possiblity to defined a pointer to an open array/array of const, we have not to
+ take care of type casts, further, it means also that deref/addr nodes must always appear coupled
+ }
+ function get_open_const_array(p : tnode) : tnode;
+
implementation
uses
@@ -710,14 +716,8 @@ implementation
in_trunc_real,
in_int_real,
in_frac_real,
- in_cos_real,
- in_sin_real,
- in_arctan_real,
in_pi_real,
in_abs_real,
- in_sqr_real,
- in_sqrt_real,
- in_ln_real,
in_aligned_x,
in_unaligned_x,
in_prefetch_var:
@@ -725,6 +725,21 @@ implementation
inc(result);
p:=tunarynode(p).left;
end;
+ in_cos_real,
+ in_sin_real,
+ in_arctan_real,
+ in_sqr_real,
+ in_sqrt_real,
+ in_ln_real:
+ begin
+ inc(result,2);
+ if (result >= NODE_COMPLEXITY_INF) then
+ begin
+ result:=NODE_COMPLEXITY_INF;
+ exit;
+ end;
+ p:=tunarynode(p).left;
+ end;
in_abs_long:
begin
inc(result,3);
@@ -1192,5 +1207,11 @@ implementation
end;
+ function get_open_const_array(p : tnode) : tnode;
+ begin
+ result:=p;
+ if (p.nodetype=derefn) and (tderefnode(p).left.nodetype=addrn) then
+ result:=get_open_const_array(taddrnode(tderefnode(result).left).left);
+ end;
end.
diff --git a/compiler/ogcoff.pas b/compiler/ogcoff.pas
index 0ae1f794e2..028eefa457 100644
--- a/compiler/ogcoff.pas
+++ b/compiler/ogcoff.pas
@@ -917,27 +917,27 @@ const pemagic : array[0..3] of byte = (
RELOC_RELATIVE_1:
begin
address:=address-objsec.mempos+relocval;
- dec(address,objreloc.dataoffset+1);
+ dec(address,objreloc.dataoffset+5);
end;
RELOC_RELATIVE_2:
begin
address:=address-objsec.mempos+relocval;
- dec(address,objreloc.dataoffset+2);
+ dec(address,objreloc.dataoffset+6);
end;
RELOC_RELATIVE_3:
begin
address:=address-objsec.mempos+relocval;
- dec(address,objreloc.dataoffset+3);
+ dec(address,objreloc.dataoffset+7);
end;
RELOC_RELATIVE_4:
begin
address:=address-objsec.mempos+relocval;
- dec(address,objreloc.dataoffset+4);
+ dec(address,objreloc.dataoffset+8);
end;
RELOC_RELATIVE_5:
begin
address:=address-objsec.mempos+relocval;
- dec(address,objreloc.dataoffset+5);
+ dec(address,objreloc.dataoffset+9);
end;
RELOC_ABSOLUTE32,
{$endif x86_64}
diff --git a/compiler/ogelf.pas b/compiler/ogelf.pas
index 03d8034979..871cabec6c 100644
--- a/compiler/ogelf.pas
+++ b/compiler/ogelf.pas
@@ -2521,7 +2521,7 @@ implementation
continue;
if ((exesym.ObjSymbol.refs and symref_plt)<>0) or
- ((exesym.ObjSymbol.typ=AT_FUNCTION) and (not IsSharedLibrary)) then
+ ((exesym.ObjSymbol.typ in [AT_FUNCTION,AT_GNU_IFUNC]) and (not IsSharedLibrary)) then
begin
make_dynamic_if_undefweak(exesym);
diff --git a/compiler/optcse.pas b/compiler/optcse.pas
index 3dda3c8384..e133cf9723 100644
--- a/compiler/optcse.pas
+++ b/compiler/optcse.pas
@@ -66,7 +66,11 @@ unit optcse;
begin
if (n.nodetype in cseinvariant) or
((n.nodetype=inlinen) and
- (tinlinenode(n).inlinenumber in [in_assigned_x])
+ (tinlinenode(n).inlinenumber in [in_assigned_x,in_sqr_real,in_sqrt_real,in_sin_real,in_cos_real,in_abs_long,
+ in_abs_real,in_exp_real,in_ln_real,in_pi_real,in_popcnt_x,in_arctan_real,in_round_real,in_trunc_real,
+ { cse on fma will still not work because it would require proper handling of call nodes
+ with more than one parameter }
+ in_fma_single,in_fma_double,in_fma_extended,in_fma_float128])
) or
((n.nodetype=callparan) and not(assigned(tcallparanode(n).right))) or
((n.nodetype=loadn) and
@@ -152,7 +156,7 @@ unit optcse;
(
{ regable expressions }
(actualtargetnode(@n)^.flags*[nf_write,nf_modify,nf_address_taken]=[]) and
- ((((tstoreddef(n.resultdef).is_intregable or tstoreddef(n.resultdef).is_fpuregable) and
+ ((((tstoreddef(n.resultdef).is_intregable or tstoreddef(n.resultdef).is_fpuregable or tstoreddef(n.resultdef).is_const_intregable) and
{ is_int/fpuregable allows arrays and records to be in registers, cse cannot handle this }
(not(n.resultdef.typ in [arraydef,recorddef]))) or is_dynamic_array(n.resultdef)) and
{ same for voiddef }
@@ -381,7 +385,7 @@ unit optcse;
true,caddrnode.create_internal(tnode(lists.nodelist[i])))
else
templist[i]:=ctempcreatenode.create_value(def,def.size,tt_persistent,
- def.is_intregable or def.is_fpuregable or is_dynamic_array(def),tnode(lists.nodelist[i]));
+ def.is_intregable or def.is_fpuregable or def.is_const_intregable,tnode(lists.nodelist[i]));
{ the value described by the temp. is immutable and the temp. can be always in register
diff --git a/compiler/optdead.pas b/compiler/optdead.pas
index 827df77b87..576696ba42 100644
--- a/compiler/optdead.pas
+++ b/compiler/optdead.pas
@@ -28,7 +28,7 @@ unit optdead;
uses
globtype,
- classes,cclasses,
+ cclasses,
symtype,
wpobase;
@@ -71,7 +71,7 @@ unit optdead;
fsymnamepos : longint;
fsymfile : text;
fsymfilename : tcmdstr;
- aixstrings : tstringlist;
+ aixstrings : TDynStringArray;
fuseaixextractstrings : boolean;
function parselinenm(const line: ansistring): boolean;
function parselineobjdump(const line: ansistring): boolean;
@@ -229,7 +229,7 @@ const
(aixstrings[0][1]='.') then
fsymbols.add(copy(aixstrings[0],2,length(aixstrings[0])),pointer(1));
end;
- aixstrings.clear;
+ setlength(aixstrings,0);
end
else
begin
@@ -330,7 +330,7 @@ const
if not(line[1] in ['0'..'9','a'..'f','A'..'F']) then
begin
fuseaixextractstrings:=true;
- aixstrings:=tstringlist.create;
+ setlength(aixstrings,0);
result:=true;
exit;
end;
@@ -462,7 +462,6 @@ const
destructor twpodeadcodeinfofromexternallinker.destroy;
begin
- aixstrings.free;
inherited destroy;
end;
diff --git a/compiler/options.pas b/compiler/options.pas
index 97e2442288..3debc3d7b7 100644
--- a/compiler/options.pas
+++ b/compiler/options.pas
@@ -115,17 +115,6 @@ var
****************************************************************************}
const
- { pointer checking (requires special code in FPC_CHECKPOINTER,
- and can never work for libc-based targets or any other program
- linking to an external library)
- }
- supported_targets_gc = [system_i386_linux,system_powerpc_linux]
- + [system_i386_win32]
- + [system_i386_GO32V2]
- + [system_i386_os2]
- + [system_i386_beos,system_i386_haiku]
- + [system_powerpc_morphos];
-
{ gprof (requires implementation of g_profilecode in the code generator) }
supported_targets_pg = [system_i386_linux,system_x86_64_linux,system_mipseb_linux,system_mipsel_linux]
+ [system_i386_win32]
@@ -208,9 +197,9 @@ var
wpopt: twpoptimizerswitch;
abi : tabi;
asmmode : tasmmode;
-{$if defined(arm) or defined(avr)}
+{$if defined(arm) or defined(avr) or defined(mipsel)}
controllertype : tcontrollertype;
-{$endif defined(arm) or defined(avr)}
+{$endif defined(arm) or defined(avr) or defined(mipsel)}
begin
p:=MessagePchar(option_info);
while assigned(p) do
@@ -347,7 +336,7 @@ begin
end
else if pos('$CONTROLLERTYPES',s)>0 then
begin
- {$if defined(arm) or defined(avr)}
+ {$if defined(arm) or defined(avr) or defined(mipsel)}
hs1:='';
for controllertype:=low(tcontrollertype) to high(tcontrollertype) do
begin
@@ -371,8 +360,8 @@ begin
Comment(V_Normal,hs);
hs1:=''
end;
- {$else defined(arm) or defined(avr)}
- {$endif defined(arm) or defined(avr)}
+ {$else defined(arm) or defined(avr) or defined(mipsel)}
+ {$endif defined(arm) or defined(avr) or defined(mipsel)}
end
else
Comment(V_Normal,s);
@@ -1310,7 +1299,7 @@ begin
begin
if UnsetBool(More, j, opt, false) then
exclude(init_settings.localswitches,cs_checkpointer)
- else if (target_info.system in supported_targets_gc) then
+ else if (target_info.system in systems_support_checkpointer) then
include(init_settings.localswitches,cs_checkpointer)
else
UnsupportedPara('-gc');
@@ -1690,9 +1679,9 @@ begin
include(init_settings.globalswitches,cs_support_vectors);
'x' :
If UnsetBool(More, j, opt, false) then
- exclude(init_settings.globalswitches,cs_support_exceptions)
+ SetCompileModeSwitch('EXCEPTIONS-',true)
else
- include(init_settings.globalswitches,cs_support_exceptions);
+ SetCompileModeSwitch('EXCEPTIONS',true);
'y' :
If UnsetBool(More, j, opt, false) then
exclude(init_settings.localswitches,cs_typed_addresses)
@@ -1969,7 +1958,7 @@ begin
end;
'p':
begin
-{$if defined(arm) or defined(avr)}
+{$if defined(arm) or defined(avr) or defined(mipsel)}
if (target_info.system in systems_embedded) then
begin
s:=upper(copy(more,j+1,length(more)-j));
@@ -1978,7 +1967,7 @@ begin
break;
end
else
-{$endif defined(arm) or defined(avr)}
+{$endif defined(arm) or defined(avr) or defined(mipsel)}
IllegalPara(opt);
end;
'P':
@@ -2756,6 +2745,20 @@ begin
Message(option_debug_external_unsupported);
exclude(init_settings.globalswitches,cs_link_separate_dbg_file);
end;
+ { Also create a smartlinked version, on an assembler that
+ does not support smartlink sections like nasm?
+ This is not compatible with using internal linker. }
+ if ((cs_link_smart in init_settings.globalswitches) or
+ (cs_create_smart in init_settings.moduleswitches)) and
+ (af_needar in target_asm.flags) and
+ not (af_smartlink_sections in target_asm.flags) and
+ not (cs_link_extern in init_settings.globalswitches) and
+ (target_info.link<>ld_none) and
+ not (cs_link_nolink in init_settings.globalswitches) then
+ begin
+ Message(option_smart_link_requires_external_linker);
+ include(init_settings.globalswitches,cs_link_extern);
+ end;
end;
@@ -3141,6 +3144,8 @@ begin
heapsize:=128;
system_arm_embedded:
heapsize:=256;
+ system_mipsel_embedded:
+ heapsize:=256;
else
heapsize:=256;
end;
diff --git a/compiler/optloop.pas b/compiler/optloop.pas
index 1d1f6662f1..9a8ea5acaf 100644
--- a/compiler/optloop.pas
+++ b/compiler/optloop.pas
@@ -155,7 +155,7 @@ unit optloop;
if (counts mod unrolls<>0) and
((counts mod unrolls)=unrolls-i) then
begin
- tfornode(node).entrylabel:=clabelnode.create(cnothingnode.create,tlabelsym.create('$optunrol'));
+ tfornode(node).entrylabel:=clabelnode.create(cnothingnode.create,clabelsym.create('$optunrol'));
addstatement(unrollstatement,tfornode(node).entrylabel);
end;
diff --git a/compiler/opttail.pas b/compiler/opttail.pas
index a177bd8da3..fc3600ad4a 100644
--- a/compiler/opttail.pas
+++ b/compiler/opttail.pas
@@ -198,7 +198,7 @@ unit opttail;
is_managed_type(vardef)) then
exit;
- labelsym:=tlabelsym.create('$opttail');
+ labelsym:=clabelsym.create('$opttail');
labelnode:=clabelnode.create(cnothingnode.create,labelsym);
if find_and_replace_tailcalls(n) then
begin
diff --git a/compiler/optvirt.pas b/compiler/optvirt.pas
index b646967dbb..d3526b5b31 100644
--- a/compiler/optvirt.pas
+++ b/compiler/optvirt.pas
@@ -140,7 +140,7 @@ unit optvirt;
procedure converttreenode(node: tinheritancetreenode; arg: pointer);
function addunitifnew(const n: shortstring): tunitdevirtinfo;
function findunit(const n: shortstring): tunitdevirtinfo;
- function getstaticname(forvmtentry: boolean; objdef, procdef: tdef; out staticname: string): boolean;
+ function getstaticname(forvmtentry: boolean; objdef, procdef: tdef; out staticname: TSymStr): boolean;
procedure documentformat(writer: twposectionwriterintf);
public
constructor create; override;
@@ -157,8 +157,8 @@ unit optvirt;
{ information providing }
procedure loadfromwpofilesection(reader: twposectionreaderintf); override;
- function staticnameforcallingvirtualmethod(objdef, procdef: tdef; out staticname: string): boolean; override;
- function staticnameforvmtentry(objdef, procdef: tdef; out staticname: string): boolean; override;
+ function staticnameforcallingvirtualmethod(objdef, procdef: tdef; out staticname: TSymStr): boolean; override;
+ function staticnameforvmtentry(objdef, procdef: tdef; out staticname: TSymStr): boolean; override;
end;
@@ -579,10 +579,10 @@ unit optvirt;
{ helper routines: decompose an object & procdef combo into a unitname, class name and vmtentry number
(unit name where the objectdef is declared, class name of the objectdef, vmtentry number of the
procdef -- procdef does not necessarily belong to objectdef, it may also belong to a descendant
- or parent)
+ or parent). classprefix is set in case of nested classes.
}
- procedure defunitclassname(objdef: tobjectdef; out unitname, classname: pshortstring);
+ procedure defunitclassname(objdef: tobjectdef; out unitname, classname: pshortstring; out classprefix: shortstring);
const
mainprogname: string[2] = 'P$';
var
@@ -591,9 +591,15 @@ unit optvirt;
begin
objparentsymtab:=objdef.symtable;
mainsymtab:=objparentsymtab.defowner.owner;
+ classprefix:='';
+ while mainsymtab.symtabletype in [recordsymtable,objectsymtable] do
+ begin
+ classprefix:=mainsymtab.name^+'.'+classprefix;
+ mainsymtab:=mainsymtab.defowner.owner;
+ end;
{ main symtable must be static or global }
if not(mainsymtab.symtabletype in [staticsymtable,globalsymtable]) then
- internalerror(200204175);
+ internalerror(200204177);
if (TSymtable(main_module.localsymtable)=mainsymtab) and
(not main_module.is_unit) then
{ same convention as for mangled names }
@@ -604,9 +610,9 @@ unit optvirt;
end;
- procedure defsdecompose(objdef: tobjectdef; procdef: tprocdef; out unitname, classname: pshortstring; out vmtentry: longint);
+ procedure defsdecompose(objdef: tobjectdef; procdef: tprocdef; out unitname, classname: pshortstring; out classprefix: shortstring; out vmtentry: longint);
begin
- defunitclassname(objdef,unitname,classname);
+ defunitclassname(objdef,unitname,classname,classprefix);
vmtentry:=procdef.extnumber;
{ if it's $ffff, this is not a valid virtual method }
if (vmtentry=$ffff) then
@@ -687,6 +693,7 @@ unit optvirt;
procedure tprogdevirtinfo.converttreenode(node: tinheritancetreenode; arg: pointer);
var
i: longint;
+ classprefix: shortstring;
unitid, classid: pshortstring;
unitdevirtinfo: tunitdevirtinfo;
classdevirtinfo: tclassdevirtinfo;
@@ -698,9 +705,9 @@ unit optvirt;
fill the vmt's of non-instantiated classes with calls to
FPC_ABSTRACTERROR during the optimisation phase
}
- defunitclassname(node.def,unitid,classid);
+ defunitclassname(node.def,unitid,classid,classprefix);
unitdevirtinfo:=addunitifnew(unitid^);
- classdevirtinfo:=unitdevirtinfo.addclass(classid^,node.instantiated);
+ classdevirtinfo:=unitdevirtinfo.addclass(classprefix+classid^,node.instantiated);
if (node.def.vmtentries.count=0) then
exit;
for i:=0 to node.def.vmtentries.count-1 do
@@ -1079,7 +1086,7 @@ unit optvirt;
end;
- function tprogdevirtinfo.getstaticname(forvmtentry: boolean; objdef, procdef: tdef; out staticname: string): boolean;
+ function tprogdevirtinfo.getstaticname(forvmtentry: boolean; objdef, procdef: tdef; out staticname: TSymStr): boolean;
var
unitid,
classid,
@@ -1088,6 +1095,7 @@ unit optvirt;
classdevirtinfo: tclassdevirtinfo;
vmtentry: longint;
realobjdef: tobjectdef;
+ classprefix: shortstring;
begin
{ if we don't have any devirtualisation info, exit }
if not assigned(funits) then
@@ -1124,7 +1132,7 @@ unit optvirt;
end;
{ get the component names for the class/procdef combo }
- defsdecompose(realobjdef,tprocdef(procdef),unitid,classid,vmtentry);
+ defsdecompose(realobjdef,tprocdef(procdef),unitid,classid,classprefix,vmtentry);
{ If we don't have information about a particular unit/class/method,
it means that such class cannot be instantiated. So if we are
@@ -1143,7 +1151,7 @@ unit optvirt;
if not assigned(unitdevirtinfo) then
exit;
{ and for this class? }
- classdevirtinfo:=unitdevirtinfo.findclass(classid^);
+ classdevirtinfo:=unitdevirtinfo.findclass(classprefix+classid^);
if not assigned(classdevirtinfo) then
exit;
if forvmtentry and
@@ -1168,13 +1176,13 @@ unit optvirt;
- function tprogdevirtinfo.staticnameforcallingvirtualmethod(objdef, procdef: tdef; out staticname: string): boolean;
+ function tprogdevirtinfo.staticnameforcallingvirtualmethod(objdef, procdef: tdef; out staticname: TSymStr): boolean;
begin
result:=getstaticname(false,objdef,procdef,staticname);
end;
- function tprogdevirtinfo.staticnameforvmtentry(objdef, procdef: tdef; out staticname: string): boolean;
+ function tprogdevirtinfo.staticnameforvmtentry(objdef, procdef: tdef; out staticname: TSymStr): boolean;
begin
result:=getstaticname(true,objdef,procdef,staticname);
end;
diff --git a/compiler/paramgr.pas b/compiler/paramgr.pas
index 1ff861cde7..199231ce6b 100644
--- a/compiler/paramgr.pas
+++ b/compiler/paramgr.pas
@@ -290,13 +290,7 @@ implementation
LOC_CREGISTER:
begin
if getsupreg(paraloc^.register)<first_int_imreg then
- begin
- cg.getcpuregister(list,paraloc^.register);
-{$ifdef cpu16bitalu}
- if paraloc^.Size in [OS_32, OS_S32] then
- cg.getcpuregister(list,GetNextReg(paraloc^.register));
-{$endif cpu16bitalu}
- end;
+ cg.getcpuregister(list,paraloc^.register);
end;
{$ifndef x86}
{ don't allocate ST(x), they're not handled by the register allocator }
@@ -345,13 +339,7 @@ implementation
LOC_CREGISTER:
begin
if getsupreg(paraloc^.register)<first_int_imreg then
- begin
- cg.ungetcpuregister(list,paraloc^.register);
-{$ifdef cpu16bitalu}
- if paraloc^.Size in [OS_32, OS_S32] then
- cg.ungetcpuregister(list,GetNextReg(paraloc^.register));
-{$endif cpu16bitalu}
- end;
+ cg.ungetcpuregister(list,paraloc^.register);
end;
LOC_FPUREGISTER,
LOC_CFPUREGISTER:
diff --git a/compiler/pdecl.pas b/compiler/pdecl.pas
index 6bb3f66297..ffabb7e879 100644
--- a/compiler/pdecl.pas
+++ b/compiler/pdecl.pas
@@ -56,7 +56,7 @@ implementation
globals,tokens,verbose,widestr,constexp,
systems,aasmdata,fmodule,
{ symtable }
- symconst,symbase,symtype,symtable,symcreat,defutil,
+ symconst,symbase,symtype,symcpu,symtable,symcreat,defutil,
{ pass 1 }
htypechk,ninl,ncon,nobj,ngenutil,
{ parser }
@@ -93,9 +93,9 @@ implementation
ordconstn:
begin
if p.resultdef.typ=pointerdef then
- hp:=tconstsym.create_ordptr(orgname,constpointer,tordconstnode(p).value.uvalue,p.resultdef)
+ hp:=cconstsym.create_ordptr(orgname,constpointer,tordconstnode(p).value.uvalue,p.resultdef)
else
- hp:=tconstsym.create_ord(orgname,constord,tordconstnode(p).value,p.resultdef);
+ hp:=cconstsym.create_ord(orgname,constord,tordconstnode(p).value,p.resultdef);
end;
stringconstn:
begin
@@ -103,7 +103,7 @@ implementation
begin
initwidestring(pw);
copywidestring(pcompilerwidestring(tstringconstnode(p).value_str),pw);
- hp:=tconstsym.create_wstring(orgname,constwstring,pw);
+ hp:=cconstsym.create_wstring(orgname,constwstring,pw);
end
else
begin
@@ -113,30 +113,30 @@ implementation
keep it }
if is_ansistring(p.resultdef) and
(tstringdef(p.resultdef).encoding<>0) then
- hp:=tconstsym.create_string(orgname,conststring,sp,tstringconstnode(p).len,p.resultdef)
+ hp:=cconstsym.create_string(orgname,conststring,sp,tstringconstnode(p).len,p.resultdef)
else
- hp:=tconstsym.create_string(orgname,conststring,sp,tstringconstnode(p).len,nil);
+ hp:=cconstsym.create_string(orgname,conststring,sp,tstringconstnode(p).len,nil);
end;
end;
realconstn :
begin
new(pd);
pd^:=trealconstnode(p).value_real;
- hp:=tconstsym.create_ptr(orgname,constreal,pd,p.resultdef);
+ hp:=cconstsym.create_ptr(orgname,constreal,pd,p.resultdef);
end;
setconstn :
begin
new(ps);
ps^:=tsetconstnode(p).value_set^;
- hp:=tconstsym.create_ptr(orgname,constset,ps,p.resultdef);
+ hp:=cconstsym.create_ptr(orgname,constset,ps,p.resultdef);
end;
pointerconstn :
begin
- hp:=tconstsym.create_ordptr(orgname,constpointer,tpointerconstnode(p).value,p.resultdef);
+ hp:=cconstsym.create_ordptr(orgname,constpointer,tpointerconstnode(p).value,p.resultdef);
end;
niln :
begin
- hp:=tconstsym.create_ord(orgname,constnil,0,p.resultdef);
+ hp:=cconstsym.create_ord(orgname,constnil,0,p.resultdef);
end;
typen :
begin
@@ -146,7 +146,7 @@ implementation
begin
new(pg);
pg^:=tobjectdef(p.resultdef).iidguid^;
- hp:=tconstsym.create_ptr(orgname,constguid,pg,p.resultdef);
+ hp:=cconstsym.create_ptr(orgname,constguid,pg,p.resultdef);
end
else
Message1(parser_e_interface_has_no_guid,tobjectdef(p.resultdef).objrealname^);
@@ -166,7 +166,7 @@ implementation
in_sizeof_x,
in_bitsizeof_x:
begin
- hp:=tconstsym.create_ord(orgname,constord,0,p.resultdef);
+ hp:=cconstsym.create_ord(orgname,constord,0,p.resultdef);
end;
{ add other cases here if necessary }
else
@@ -266,13 +266,13 @@ implementation
to it from the structure or linking will fail }
if symtablestack.top.symtabletype in [recordsymtable,ObjectSymtable] then
begin
- sym:=tfieldvarsym.create(orgname,varspez,hdef,[]);
+ sym:=cfieldvarsym.create(orgname,varspez,hdef,[]);
symtablestack.top.insert(sym);
sym:=make_field_static(symtablestack.top,tfieldvarsym(sym));
end
else
begin
- sym:=tstaticvarsym.create(orgname,varspez,hdef,[]);
+ sym:=cstaticvarsym.create(orgname,varspez,hdef,[]);
sym.visibility:=symtablestack.top.currentvisibility;
symtablestack.top.insert(sym);
end;
@@ -339,20 +339,20 @@ implementation
else
begin
if token=_ID then
- labelsym:=tlabelsym.create(orgpattern)
+ labelsym:=clabelsym.create(orgpattern)
else
- labelsym:=tlabelsym.create(pattern);
+ labelsym:=clabelsym.create(pattern);
symtablestack.top.insert(labelsym);
if m_non_local_goto in current_settings.modeswitches then
begin
if symtablestack.top.symtabletype=localsymtable then
begin
- labelsym.jumpbuf:=tlocalvarsym.create('LABEL$_'+labelsym.name,vs_value,rec_jmp_buf,[]);
+ labelsym.jumpbuf:=clocalvarsym.create('LABEL$_'+labelsym.name,vs_value,rec_jmp_buf,[]);
symtablestack.top.insert(labelsym.jumpbuf);
end
else
begin
- labelsym.jumpbuf:=tstaticvarsym.create('LABEL$_'+labelsym.name,vs_value,rec_jmp_buf,[]);
+ labelsym.jumpbuf:=cstaticvarsym.create('LABEL$_'+labelsym.name,vs_value,rec_jmp_buf,[]);
symtablestack.top.insert(labelsym.jumpbuf);
cnodeutils.insertbssdata(tstaticvarsym(labelsym.jumpbuf));
end;
@@ -592,7 +592,7 @@ implementation
sym:=tsym(symtablestack.top.Find(typename));
if not assigned(sym) then
begin
- sym:=ttypesym.create(orgtypename,tundefineddef.create);
+ sym:=ctypesym.create(orgtypename,cundefineddef.create);
Include(sym.symoptions,sp_generic_dummy);
ttypesym(sym).typedef.typesym:=sym;
sym.visibility:=symtablestack.top.currentvisibility;
@@ -628,7 +628,7 @@ implementation
{ insert a new type if we don't reuse an existing symbol }
if not assigned(newtype) then
begin
- newtype:=ttypesym.create(genorgtypename,hdef);
+ newtype:=ctypesym.create(genorgtypename,hdef);
newtype.visibility:=symtablestack.top.currentvisibility;
symtablestack.top.insert(newtype);
end;
@@ -722,9 +722,9 @@ implementation
if try_to_consume(_FAR) then
begin
{$if defined(i8086)}
- tpointerdef(hdef).x86pointertyp:=x86pt_far;
+ tcpupointerdef(hdef).x86pointertyp:=x86pt_far;
{$elseif defined(i386)}
- tpointerdef(hdef).x86pointertyp:=x86pt_near_fs;
+ tcpupointerdef(hdef).x86pointertyp:=x86pt_near_fs;
{$elseif defined(x86_64)}
{ for compatibility with previous versions of fpc,
far pointer = regular pointer on x86_64 }
@@ -739,18 +739,18 @@ implementation
begin
segment_register:=get_stringconst;
case UpCase(segment_register) of
- 'CS': tpointerdef(hdef).x86pointertyp:=x86pt_near_cs;
- 'DS': tpointerdef(hdef).x86pointertyp:=x86pt_near_ds;
- 'SS': tpointerdef(hdef).x86pointertyp:=x86pt_near_ss;
- 'ES': tpointerdef(hdef).x86pointertyp:=x86pt_near_es;
- 'FS': tpointerdef(hdef).x86pointertyp:=x86pt_near_fs;
- 'GS': tpointerdef(hdef).x86pointertyp:=x86pt_near_gs;
+ 'CS': tcpupointerdef(hdef).x86pointertyp:=x86pt_near_cs;
+ 'DS': tcpupointerdef(hdef).x86pointertyp:=x86pt_near_ds;
+ 'SS': tcpupointerdef(hdef).x86pointertyp:=x86pt_near_ss;
+ 'ES': tcpupointerdef(hdef).x86pointertyp:=x86pt_near_es;
+ 'FS': tcpupointerdef(hdef).x86pointertyp:=x86pt_near_fs;
+ 'GS': tcpupointerdef(hdef).x86pointertyp:=x86pt_near_gs;
else
Message(asmr_e_invalid_register);
end;
end
else
- tpointerdef(hdef).x86pointertyp:=x86pt_near;
+ tcpupointerdef(hdef).x86pointertyp:=x86pt_near;
consume(_SEMICOLON);
end;
{$else x86}
@@ -952,7 +952,7 @@ implementation
getmem(sp,2);
sp[0]:=chr(tordconstnode(p).value.svalue);
sp[1]:=#0;
- sym:=tconstsym.create_string(orgname,constresourcestring,sp,1,nil);
+ sym:=cconstsym.create_string(orgname,constresourcestring,sp,1,nil);
end
else
Message(parser_e_illegal_expression);
@@ -965,7 +965,7 @@ implementation
changestringtype(getansistringdef);
getmem(sp,len+1);
move(value_str^,sp^,len+1);
- sym:=tconstsym.create_string(orgname,constresourcestring,sp,len,nil);
+ sym:=cconstsym.create_string(orgname,constresourcestring,sp,len,nil);
end;
else
Message(parser_e_illegal_expression);
diff --git a/compiler/pdecobj.pas b/compiler/pdecobj.pas
index 2c85fb3785..f83aba9626 100644
--- a/compiler/pdecobj.pas
+++ b/compiler/pdecobj.pas
@@ -1327,7 +1327,7 @@ implementation
begin
Message(parser_e_forward_mismatch);
{ recover }
- current_structdef:=tobjectdef.create(current_objectdef.objecttype,n,nil);
+ current_structdef:=cobjectdef.create(current_objectdef.objecttype,n,nil);
include(current_structdef.objectoptions,oo_is_forward);
end
else
@@ -1340,7 +1340,7 @@ implementation
Message(parser_f_no_anonym_objects);
{ create new class }
- current_structdef:=tobjectdef.create(objecttype,n,nil);
+ current_structdef:=cobjectdef.create(objecttype,n,nil);
{ include always the forward flag, it'll be removed after the parent class have been
added. This is to prevent circular childof loops }
@@ -1369,14 +1369,14 @@ implementation
psystem, but java_jlobject is not yet available
there... }
hrecst:=trecordsymtable.create('',1);
- fsym:=tfieldvarsym.create('$proc',vs_value,java_jlobject,[]);
+ fsym:=cfieldvarsym.create('$proc',vs_value,java_jlobject,[]);
hrecst.insert(fsym);
hrecst.addfield(fsym,vis_hidden);
- fsym:=tfieldvarsym.create('$data',vs_value,java_jlobject,[]);
+ fsym:=cfieldvarsym.create('$data',vs_value,java_jlobject,[]);
hrecst.insert(fsym);
hrecst.addfield(fsym,vis_hidden);
- methodpointertype:=trecorddef.create('',hrecst);
- systemunit.insert(ttypesym.create('$methodpointer',methodpointertype));
+ methodpointertype:=crecorddef.create('',hrecst);
+ systemunit.insert(ctypesym.create('$methodpointer',methodpointertype));
end
else if (current_objectdef.objname^='JLTHROWABLE') then
java_jlthrowable:=current_objectdef
diff --git a/compiler/pdecsub.pas b/compiler/pdecsub.pas
index 11cd621885..d61b935c60 100644
--- a/compiler/pdecsub.pas
+++ b/compiler/pdecsub.pas
@@ -99,7 +99,7 @@ implementation
systems,
cpuinfo,
{ symtable }
- symbase,symtable,defutil,defcmp,
+ symbase,symcpu,symtable,defutil,defcmp,
{ parameter handling }
paramgr,cpupara,
{ pass 1 }
@@ -339,7 +339,7 @@ implementation
sc.clear;
repeat
inc(paranr);
- vs:=tparavarsym.create(orgpattern,paranr*10,varspez,generrordef,[]);
+ vs:=cparavarsym.create(orgpattern,paranr*10,varspez,generrordef,[]);
currparast.insert(vs);
if assigned(vs.owner) then
sc.add(vs)
@@ -352,7 +352,7 @@ implementation
if parseprocvar<>pv_none then
begin
{ inline procvar definitions are always nested procvars }
- pv:=tprocvardef.create(normal_function_level+1);
+ pv:=cprocvardef.create(normal_function_level+1);
if token=_LKLAMMER then
parse_parameter_dec(pv);
if parseprocvar=pv_func then
@@ -366,7 +366,7 @@ implementation
{ possible proc directives }
if check_proc_directive(true) then
begin
- dummytype:=ttypesym.create('unnamed',hdef);
+ dummytype:=ctypesym.create('unnamed',hdef);
parse_var_proc_directives(tsym(dummytype));
dummytype.typedef:=nil;
hdef.typesym:=nil;
@@ -399,7 +399,7 @@ implementation
consume(_ARRAY);
consume(_OF);
{ define range and type of range }
- hdef:=tarraydef.create(0,-1,s32inttype);
+ hdef:=carraydef.create(0,-1,s32inttype);
{ array of const ? }
if (token=_CONST) and (m_objpas in current_settings.modeswitches) then
begin
@@ -946,13 +946,13 @@ implementation
begin
aprocsym:=Tprocsym(symtablestack.top.Find(sp));
if aprocsym=nil then
- aprocsym:=tprocsym.create('$'+sp);
+ aprocsym:=cprocsym.create('$'+sp);
end
else
if (potype in [potype_class_constructor,potype_class_destructor]) then
- aprocsym:=tprocsym.create('$'+lower(sp))
+ aprocsym:=cprocsym.create('$'+lower(sp))
else
- aprocsym:=tprocsym.create(orgsp);
+ aprocsym:=cprocsym.create(orgsp);
symtablestack.top.insert(aprocsym);
end;
@@ -966,7 +966,7 @@ implementation
break;
checkstack:=checkstack^.next;
end;
- pd:=tprocdef.create(st.symtablelevel+1);
+ pd:=cprocdef.create(st.symtablelevel+1);
pd.struct:=astruct;
pd.procsym:=aprocsym;
pd.proctypeoption:=potype;
@@ -1408,12 +1408,12 @@ implementation
procedure pd_far(pd:tabstractprocdef);
begin
- Message1(parser_w_proc_directive_ignored,'FAR');
+ pd.declared_far;
end;
procedure pd_near(pd:tabstractprocdef);
begin
- Message1(parser_w_proc_directive_ignored,'NEAR');
+ pd.declared_near;
end;
procedure pd_export(pd:tabstractprocdef);
@@ -1787,10 +1787,10 @@ begin
is_32bitint(tabstractvarsym(sym).vardef)
) then
begin
- tprocdef(pd).libsym:=sym;
+ tcpuprocdef(pd).libsym:=sym;
if po_syscall_legacy in tprocdef(pd).procoptions then
begin
- vs:=tparavarsym.create('$syscalllib',paranr_syscall_legacy,vs_value,tabstractvarsym(sym).vardef,[vo_is_syscall_lib,vo_is_hidden_para,vo_has_explicit_paraloc]);
+ vs:=cparavarsym.create('$syscalllib',paranr_syscall_legacy,vs_value,tabstractvarsym(sym).vardef,[vo_is_syscall_lib,vo_is_hidden_para,vo_has_explicit_paraloc]);
paramanager.parseparaloc(vs,'A6');
pd.parast.insert(vs);
end
@@ -1821,8 +1821,8 @@ begin
is_32bitint(tabstractvarsym(sym).vardef)
) then
begin
- tprocdef(pd).libsym:=sym;
- vs:=tparavarsym.create('$syscalllib',paranr_syscall_basesysv,vs_value,tabstractvarsym(sym).vardef,[vo_is_syscall_lib,vo_is_hidden_para]);
+ tcpuprocdef(pd).libsym:=sym;
+ vs:=cparavarsym.create('$syscalllib',paranr_syscall_basesysv,vs_value,tabstractvarsym(sym).vardef,[vo_is_syscall_lib,vo_is_hidden_para]);
pd.parast.insert(vs);
end
else
@@ -1888,10 +1888,10 @@ begin
is_32bitint(tabstractvarsym(sym).vardef)
) then
begin
- tprocdef(pd).libsym:=sym;
+ tcpuprocdef(pd).libsym:=sym;
if po_syscall_legacy in tprocdef(pd).procoptions then
begin
- vs:=tparavarsym.create('$syscalllib',paranr_syscall_legacy,vs_value,tabstractvarsym(sym).vardef,[vo_is_syscall_lib,vo_is_hidden_para,vo_has_explicit_paraloc]);
+ vs:=cparavarsym.create('$syscalllib',paranr_syscall_legacy,vs_value,tabstractvarsym(sym).vardef,[vo_is_syscall_lib,vo_is_hidden_para,vo_has_explicit_paraloc]);
paramanager.parseparaloc(vs,'A6');
pd.parast.insert(vs);
end
@@ -1901,17 +1901,17 @@ begin
end
else if po_syscall_basesysv in tprocdef(pd).procoptions then
begin
- vs:=tparavarsym.create('$syscalllib',paranr_syscall_basesysv,vs_value,tabstractvarsym(sym).vardef,[vo_is_syscall_lib,vo_is_hidden_para]);
+ vs:=cparavarsym.create('$syscalllib',paranr_syscall_basesysv,vs_value,tabstractvarsym(sym).vardef,[vo_is_syscall_lib,vo_is_hidden_para]);
pd.parast.insert(vs);
end
else if po_syscall_sysvbase in tprocdef(pd).procoptions then
begin
- vs:=tparavarsym.create('$syscalllib',paranr_syscall_sysvbase,vs_value,tabstractvarsym(sym).vardef,[vo_is_syscall_lib,vo_is_hidden_para]);
+ vs:=cparavarsym.create('$syscalllib',paranr_syscall_sysvbase,vs_value,tabstractvarsym(sym).vardef,[vo_is_syscall_lib,vo_is_hidden_para]);
pd.parast.insert(vs);
end
else if po_syscall_r12base in tprocdef(pd).procoptions then
begin
- vs:=tparavarsym.create('$syscalllib',paranr_syscall_r12base,vs_value,tabstractvarsym(sym).vardef,[vo_is_syscall_lib,vo_is_hidden_para,vo_has_explicit_paraloc]);
+ vs:=cparavarsym.create('$syscalllib',paranr_syscall_r12base,vs_value,tabstractvarsym(sym).vardef,[vo_is_syscall_lib,vo_is_hidden_para,vo_has_explicit_paraloc]);
paramanager.parseparaloc(vs,'R12');
pd.parast.insert(vs);
end
@@ -2503,7 +2503,13 @@ const
_EXPERIMENTAL,
_DEPRECATED :
if (m_delphi in current_settings.modeswitches) and (pd.typ=procdef) then
- maybe_parse_hint_directives(tprocdef(pd))
+ begin
+ maybe_parse_hint_directives(tprocdef(pd));
+ { could the new token still be a directive? }
+ if token<>_ID then
+ exit;
+ name:=tokeninfo^[idtoken].str;
+ end
else
exit;
end;
diff --git a/compiler/pdecvar.pas b/compiler/pdecvar.pas
index ebbacddb6b..50945dac19 100644
--- a/compiler/pdecvar.pas
+++ b/compiler/pdecvar.pas
@@ -55,6 +55,9 @@ implementation
systems,
{ symtable }
symconst,symbase,symtype,defutil,defcmp,symcreat,
+{$if defined(i386) or defined(i8086)}
+ symcpu,
+{$endif}
{$ifdef jvm}
jvmdef,
{$endif}
@@ -254,7 +257,7 @@ implementation
sym: tprocsym;
begin
handle_calling_convention(pd);
- sym:=tprocsym.create(prefix+lower(p.realname));
+ sym:=cprocsym.create(prefix+lower(p.realname));
symtablestack.top.insert(sym);
pd.procsym:=sym;
include(pd.procoptions,po_dispid);
@@ -315,7 +318,7 @@ implementation
begin
{ add an extra parameter, a placeholder of the value to set }
inc(paranr);
- hparavs:=tparavarsym.create('$value',10*paranr,vs_value,p.propdef,[]);
+ hparavs:=cparavarsym.create('$value',10*paranr,vs_value,p.propdef,[]);
writepd.parast.insert(hparavs);
writepd.proctypeoption:=potype_propsetter;
@@ -353,8 +356,8 @@ implementation
{ Generate temp procdefs to search for matching read/write
procedures. the readprocdef will store all definitions }
paranr:=0;
- readprocdef:=tprocdef.create(normal_function_level);
- writeprocdef:=tprocdef.create(normal_function_level);
+ readprocdef:=cprocdef.create(normal_function_level);
+ writeprocdef:=cprocdef.create(normal_function_level);
readprocdef.struct:=astruct;
writeprocdef.struct:=astruct;
@@ -372,7 +375,7 @@ implementation
exit;
end;
{ Generate propertysym and insert in symtablestack }
- p:=tpropertysym.create(orgpattern);
+ p:=cpropertysym.create(orgpattern);
p.visibility:=symtablestack.top.currentvisibility;
p.default:=longint($80000000);
if is_classproperty then
@@ -403,7 +406,7 @@ implementation
sc.clear;
repeat
inc(paranr);
- hreadparavs:=tparavarsym.create(orgpattern,10*paranr,varspez,generrordef,[]);
+ hreadparavs:=cparavarsym.create(orgpattern,10*paranr,varspez,generrordef,[]);
p.parast.insert(hreadparavs);
sc.add(hreadparavs);
consume(_ID);
@@ -414,7 +417,7 @@ implementation
begin
consume(_OF);
{ define range and type of range }
- hdef:=tarraydef.create(0,-1,s32inttype);
+ hdef:=carraydef.create(0,-1,s32inttype);
{ define field type }
single_type(arraytype,[]);
tarraydef(hdef).elementdef:=arraytype;
@@ -456,17 +459,23 @@ implementation
consume(_INDEX);
pt:=comp_expr(true,false);
{ Only allow enum and integer indexes. Convert all integer
- values to s32int to be compatible with delphi, because the
- procedure matching requires equal parameters }
+ values to objpas.integer (s32int on 32- and 64-bit targets,
+ s16int on 16- and 8-bit) to be compatible with delphi,
+ because the procedure matching requires equal parameters }
if is_constnode(pt) and
is_ordinal(pt.resultdef)
-{$ifndef cpu64bitaddr}
and (not is_64bitint(pt.resultdef))
-{$endif cpu64bitaddr}
+{$if defined(cpu8bitalu) or defined(cpu16bitalu)}
+ and (not is_32bitint(pt.resultdef))
+{$endif}
then
begin
if is_integer(pt.resultdef) then
+{$if defined(cpu8bitalu) or defined(cpu16bitalu)}
+ inserttypeconv_internal(pt,s16inttype);
+{$else}
inserttypeconv_internal(pt,s32inttype);
+{$endif}
p.index:=tordconstnode(pt).value.svalue;
end
else
@@ -599,7 +608,7 @@ implementation
of the of the property }
writeprocdef.returndef:=voidtype;
inc(paranr);
- hparavs:=tparavarsym.create('$value',10*paranr,vs_value,p.propdef,[]);
+ hparavs:=cparavarsym.create('$value',10*paranr,vs_value,p.propdef,[]);
writeprocdef.parast.insert(hparavs);
{ Insert hidden parameters }
handle_calling_convention(writeprocdef);
@@ -729,14 +738,14 @@ implementation
procsym :
begin
{ Create a temporary procvardef to handle parameters }
- storedprocdef:=tprocvardef.create(normal_function_level);
+ storedprocdef:=cprocvardef.create(normal_function_level);
include(storedprocdef.procoptions,po_methodpointer);
{ Return type must be boolean }
storedprocdef.returndef:=pasbool8type;
{ Add index parameter if needed }
if ppo_indexed in p.propoptions then
begin
- hparavs:=tparavarsym.create('$index',10,vs_value,p.indexdef,[]);
+ hparavs:=cparavarsym.create('$index',10,vs_value,p.indexdef,[]);
storedprocdef.parast.insert(hparavs);
end;
@@ -950,7 +959,7 @@ implementation
(def.typesym=nil) and
check_proc_directive(true) then
begin
- newtype:=ttypesym.create('unnamed',def);
+ newtype:=ctypesym.create('unnamed',def);
parse_var_proc_directives(tsym(newtype));
newtype.typedef:=nil;
def.typesym:=nil;
@@ -1175,7 +1184,7 @@ implementation
case vs.typ of
localvarsym :
begin
- tcsym:=tstaticvarsym.create('$default'+vs.realname,vs_const,vs.vardef,[]);
+ tcsym:=cstaticvarsym.create('$default'+vs.realname,vs_const,vs.vardef,[]);
include(tcsym.symoptions,sp_internal);
vs.defaultconstsym:=tcsym;
symtablestack.top.insert(tcsym);
@@ -1235,7 +1244,7 @@ implementation
if (pt.nodetype=stringconstn) or
(is_constcharnode(pt)) then
begin
- abssym:=tabsolutevarsym.create(vs.realname,vs.vardef);
+ abssym:=cabsolutevarsym.create(vs.realname,vs.vardef);
abssym.fileinfo:=vs.fileinfo;
if pt.nodetype=stringconstn then
abssym.asmname:=stringdup(strpas(tstringconstnode(pt).value_str))
@@ -1247,7 +1256,7 @@ implementation
{ address }
else if is_constintnode(pt) then
begin
- abssym:=tabsolutevarsym.create(vs.realname,vs.vardef);
+ abssym:=cabsolutevarsym.create(vs.realname,vs.vardef);
abssym.fileinfo:=vs.fileinfo;
abssym.abstyp:=toaddr;
{$ifndef cpu64bitaddr}
@@ -1262,7 +1271,7 @@ implementation
{$endif}
abssym.addroffset:=Tordconstnode(pt).value.svalue;
{$if defined(i386) or defined(i8086)}
- abssym.absseg:=false;
+ tcpuabsolutevarsym(abssym).absseg:=false;
if (target_info.system in [system_i386_go32v2,system_i386_watcom,system_i8086_msdos]) and
try_to_consume(_COLON) then
begin
@@ -1271,7 +1280,7 @@ implementation
if is_constintnode(pt) then
begin
{$if defined(i8086)}
- abssym.addrsegment:=abssym.addroffset;
+ tcpuabsolutevarsym(abssym).addrsegment:=abssym.addroffset;
tmpaddr:=tordconstnode(pt).value.svalue;
if (tmpaddr<int64(low(abssym.addroffset))) or
(tmpaddr>int64(high(abssym.addroffset))) then
@@ -1286,7 +1295,7 @@ implementation
else
abssym.addroffset:=tmpaddr;
{$endif}
- abssym.absseg:=true;
+ tcpuabsolutevarsym(abssym).absseg:=true;
end
else
Message(type_e_ordinal_expr_expected);
@@ -1339,7 +1348,7 @@ implementation
{ we should check the result type of loadn }
if not (tloadnode(hp).symtableentry.typ in [fieldvarsym,staticvarsym,localvarsym,paravarsym]) then
Message(parser_e_absolute_only_to_var_or_const);
- abssym:=tabsolutevarsym.create(vs.realname,vs.vardef);
+ abssym:=cabsolutevarsym.create(vs.realname,vs.vardef);
abssym.fileinfo:=vs.fileinfo;
abssym.abstyp:=tovar;
abssym.ref:=node_to_propaccesslist(pt);
@@ -1401,11 +1410,11 @@ implementation
begin
case symtablestack.top.symtabletype of
localsymtable :
- vs:=tlocalvarsym.create(orgpattern,vs_value,generrordef,[]);
+ vs:=clocalvarsym.create(orgpattern,vs_value,generrordef,[]);
staticsymtable,
globalsymtable :
begin
- vs:=tstaticvarsym.create(orgpattern,vs_value,generrordef,[]);
+ vs:=cstaticvarsym.create(orgpattern,vs_value,generrordef,[]);
if vd_threadvar in options then
include(vs.varoptions,vo_is_thread_var);
end;
@@ -1620,7 +1629,7 @@ implementation
sorg:=orgpattern;
if token=_ID then
begin
- vs:=tfieldvarsym.create(sorg,vs_value,generrordef,[]);
+ vs:=cfieldvarsym.create(sorg,vs_value,generrordef,[]);
{ normally the visibility is set via addfield, but sometimes
we collect symbols so we can add them in a batch of
@@ -1843,7 +1852,7 @@ implementation
begin
consume(_ID);
consume(_COLON);
- fieldvs:=tfieldvarsym.create(sorg,vs_value,generrordef,[]);
+ fieldvs:=cfieldvarsym.create(sorg,vs_value,generrordef,[]);
variantdesc^^.variantselector:=fieldvs;
symtablestack.top.insert(fieldvs);
end;
@@ -1863,7 +1872,7 @@ implementation
consume(_OF);
UnionSymtable:=trecordsymtable.create('',current_settings.packrecords);
- UnionDef:=trecorddef.create('',unionsymtable);
+ UnionDef:=crecorddef.create('',unionsymtable);
uniondef.isunion:=true;
startvarrecsize:=UnionSymtable.datasize;
diff --git a/compiler/pexpr.pas b/compiler/pexpr.pas
index e9ca1356c5..4861451abf 100644
--- a/compiler/pexpr.pas
+++ b/compiler/pexpr.pas
@@ -62,7 +62,7 @@ implementation
verbose,
systems,widestr,
{ symtable }
- symconst,symtable,symsym,defutil,defcmp,
+ symconst,symtable,symsym,symcpu,defutil,defcmp,
{ module }
fmodule,ppu,
{ pass 1 }
@@ -112,14 +112,14 @@ implementation
if tordconstnode(p).value>255 then
begin
{ longstring is currently unsupported (CEC)! }
-{ t:=tstringdef.createlong(tordconstnode(p).value))}
+{ t:=cstringdef.createlong(tordconstnode(p).value))}
Message(parser_e_invalid_string_size);
tordconstnode(p).value:=255;
- def:=tstringdef.createshort(int64(tordconstnode(p).value));
+ def:=cstringdef.createshort(int64(tordconstnode(p).value));
end
else
if tordconstnode(p).value<>255 then
- def:=tstringdef.createshort(int64(tordconstnode(p).value));
+ def:=cstringdef.createshort(int64(tordconstnode(p).value));
consume(_RECKKLAMMER);
end;
p.free;
@@ -332,13 +332,13 @@ implementation
include(current_procinfo.flags,pi_has_nested_exit);
exclude(current_procinfo.procdef.procoptions,po_inline);
- exit_procinfo.nestedexitlabel:=tlabelsym.create('$nestedexit');
+ exit_procinfo.nestedexitlabel:=clabelsym.create('$nestedexit');
{ the compiler is responsible to define this label }
exit_procinfo.nestedexitlabel.defined:=true;
exit_procinfo.nestedexitlabel.used:=true;
- exit_procinfo.nestedexitlabel.jumpbuf:=tlocalvarsym.create('LABEL$_'+exit_procinfo.nestedexitlabel.name,vs_value,rec_jmp_buf,[]);
+ exit_procinfo.nestedexitlabel.jumpbuf:=clocalvarsym.create('LABEL$_'+exit_procinfo.nestedexitlabel.name,vs_value,rec_jmp_buf,[]);
exit_procinfo.procdef.localst.insert(exit_procinfo.nestedexitlabel);
exit_procinfo.procdef.localst.insert(exit_procinfo.nestedexitlabel.jumpbuf);
end;
@@ -877,9 +877,8 @@ implementation
def:=nil;
single_type(def,[stoAllowSpecialization]);
statement_syssym:=cerrornode.create;
- if def=generrordef then
- Message(type_e_type_id_expected)
- else
+ if def<>generrordef then
+ { "type expected" error is already done by single_type }
if def.typ=forwarddef then
Message1(type_e_type_is_not_completly_defined,tforwarddef(def).tosymname^)
else
@@ -2741,7 +2740,7 @@ implementation
undefinedsym :
begin
p1:=cnothingnode.Create;
- p1.resultdef:=tundefineddef.create;
+ p1.resultdef:=cundefineddef.create;
{ clean up previously created dummy symbol }
srsym.free;
end;
@@ -3004,7 +3003,7 @@ implementation
hdef:=hclassdef;
if (po_classmethod in current_procinfo.procdef.procoptions) or
(po_staticmethod in current_procinfo.procdef.procoptions) then
- hdef:=tclassrefdef.create(hdef);
+ hdef:=cclassrefdef.create(hdef);
p1:=ctypenode.create(hdef);
{ we need to allow helpers here }
ttypenode(p1).helperallowed:=true;
diff --git a/compiler/pgenutil.pas b/compiler/pgenutil.pas
index 4c420c3bc4..b99ee7465e 100644
--- a/compiler/pgenutil.pas
+++ b/compiler/pgenutil.pas
@@ -631,7 +631,7 @@ uses
srsym:=tsym(genericdef.genericparas[i]);
if not (sp_generic_para in srsym.symoptions) then
internalerror(2013092602);
- generictype:=ttypesym.create(srsym.realname,tdef(genericdeflist[i]));
+ generictype:=ctypesym.create(srsym.realname,tdef(genericdeflist[i]));
generictypelist.add(generictype);
end;
@@ -728,7 +728,7 @@ uses
{ First a new typesym so we can reuse this specialization and
references to this specialization can be handled }
- srsym:=ttypesym.create(finalspecializename,generrordef);
+ srsym:=ctypesym.create(finalspecializename,generrordef);
specializest.insert(srsym);
{ specializations are declarations as such it is the wisest to
@@ -877,7 +877,7 @@ uses
repeat
if token=_ID then
begin
- generictype:=ttypesym.create(orgpattern,cundefinedtype);
+ generictype:=ctypesym.create(orgpattern,cundefinedtype);
include(generictype.symoptions,sp_generic_para);
result.add(generictype);
end;
@@ -924,7 +924,7 @@ uses
else
begin
srsymtable:=trecordsymtable.create(defname,0);
- basedef:=trecorddef.create(defname,srsymtable);
+ basedef:=crecorddef.create(defname,srsymtable);
include(constraintdata.flags,gcf_record);
allowconstructor:=false;
end;
@@ -983,7 +983,7 @@ uses
if (basedef.typ<>objectdef) or
not (tobjectdef(basedef).objecttype in [odt_javaclass,odt_class]) then
internalerror(2012101101);
- basedef:=tobjectdef.create(tobjectdef(basedef).objecttype,defname,tobjectdef(basedef));
+ basedef:=cobjectdef.create(tobjectdef(basedef).objecttype,defname,tobjectdef(basedef));
for i:=0 to constraintdata.interfaces.count-1 do
tobjectdef(basedef).implementedinterfaces.add(
timplementedinterface.create(tobjectdef(constraintdata.interfaces[i])));
@@ -994,7 +994,7 @@ uses
if basedef.typ<>errordef then
internalerror(2013021601);
def:=tdef(constraintdata.interfaces[0]);
- basedef:=tobjectdef.create(tobjectdef(def).objecttype,defname,tobjectdef(def));
+ basedef:=cobjectdef.create(tobjectdef(def).objecttype,defname,tobjectdef(def));
constraintdata.interfaces.delete(0);
end;
if basedef.typ<>errordef then
@@ -1080,7 +1080,7 @@ uses
begin
{ we need to pass nil as def here, because the constructor wants
to set the typesym of the def which is not what we want }
- gensym:=ttypesym.create(copy(name,1,pos('$',name)-1),nil);
+ gensym:=ctypesym.create(copy(name,1,pos('$',name)-1),nil);
gensym.typedef:=current_structdef;
include(gensym.symoptions,sp_internal);
{ the symbol should be only visible to the generic class
diff --git a/compiler/pmodules.pas b/compiler/pmodules.pas
index 5d96322ce5..1c325822f3 100644
--- a/compiler/pmodules.pas
+++ b/compiler/pmodules.pas
@@ -184,7 +184,7 @@ implementation
assigned(hp.globalmacrosymtable) then
macrosymtablestack.push(hp.globalmacrosymtable);
{ insert unitsym }
- unitsym:=tunitsym.create(s,hp);
+ unitsym:=cunitsym.create(s,hp);
inc(unitsym.refs);
tabstractunitsymtable(current_module.localsymtable).insertunit(unitsym);
{ add to used units }
@@ -374,11 +374,11 @@ implementation
end;
{ CPU targets with microcontroller support can add a controller specific unit }
-{$if defined(ARM) or defined(AVR)}
+{$if defined(ARM) or defined(AVR) or defined(MIPSEL)}
if (target_info.system in systems_embedded) and (current_settings.controllertype<>ct_none) and
(embedded_controllers[current_settings.controllertype].controllerunitstr<>'') then
AddUnit(embedded_controllers[current_settings.controllertype].controllerunitstr);
-{$endif ARM}
+{$endif ARM AVR MIPSEL}
end;
@@ -457,7 +457,7 @@ implementation
can not use the modulename because that can be different
when -Un is used }
current_tokenpos:=filepos;
- unitsym:=tunitsym.create(sorg,nil);
+ unitsym:=cunitsym.create(sorg,nil);
tabstractunitsymtable(current_module.localsymtable).insertunit(unitsym);
{ the current module uses the unit hp2 }
current_module.addusedunit(hp2,true,unitsym);
@@ -561,7 +561,7 @@ implementation
if assigned(current_procinfo) then
internalerror(200304275);
{Generate a procsym for main}
- ps:=tprocsym.create('$'+name);
+ ps:=cprocsym.create('$'+name);
{ main are allways used }
inc(ps.refs);
st.insert(ps);
@@ -604,7 +604,7 @@ implementation
(tf_pic_uses_got in target_info.flags) then
begin
{ insert symbol for got access in assembler code}
- gotvarsym:=tstaticvarsym.create('_GLOBAL_OFFSET_TABLE_',
+ gotvarsym:=cstaticvarsym.create('_GLOBAL_OFFSET_TABLE_',
vs_value,voidpointertype,[vo_is_external]);
gotvarsym.set_mangledname('_GLOBAL_OFFSET_TABLE_');
current_module.localsymtable.insert(gotvarsym);
@@ -712,11 +712,11 @@ implementation
{ java_jlobject may not have been parsed yet (system unit); in any
case, we only use this to refer to the class type, so inheritance
does not matter }
- def:=tobjectdef.create(odt_javaclass,'__FPC_JVM_Module_Class_Alias$',nil);
+ def:=cobjectdef.create(odt_javaclass,'__FPC_JVM_Module_Class_Alias$',nil);
include(def.objectoptions,oo_is_external);
include(def.objectoptions,oo_is_sealed);
def.objextname:=stringdup(current_module.realmodulename^);
- typesym:=ttypesym.create('__FPC_JVM_Module_Class_Alias$',def);
+ typesym:=ctypesym.create('__FPC_JVM_Module_Class_Alias$',def);
symtablestack.top.insert(typesym);
end;
{$endif jvm}
@@ -834,7 +834,7 @@ type
{ insert unitsym of this unit to prevent other units having
the same name }
- tabstractunitsymtable(current_module.localsymtable).insertunit(tunitsym.create(current_module.realmodulename^,current_module));
+ tabstractunitsymtable(current_module.localsymtable).insertunit(cunitsym.create(current_module.realmodulename^,current_module));
{ load default units, like the system unit }
loaddefaultunits;
@@ -1708,7 +1708,7 @@ type
{Insert the name of the main program into the symbol table.}
if current_module.realmodulename^<>'' then
- tabstractunitsymtable(current_module.localsymtable).insertunit(tunitsym.create(current_module.realmodulename^,current_module));
+ tabstractunitsymtable(current_module.localsymtable).insertunit(cunitsym.create(current_module.realmodulename^,current_module));
Message1(parser_u_parsing_implementation,current_module.mainsource);
@@ -2063,7 +2063,7 @@ type
internalerror(2013011201);
for i:=0 to high(sc) do
begin
- ps:=tstaticvarsym.create(sc[i].name,vs_value,textsym.typedef,[]);
+ ps:=cstaticvarsym.create(sc[i].name,vs_value,textsym.typedef,[]);
ps.isoindex:=sc[i].nr;
current_module.localsymtable.insert(ps,true);
cnodeutils.insertbssdata(tstaticvarsym(ps));
@@ -2089,7 +2089,7 @@ type
{Insert the name of the main program into the symbol table.}
if current_module.realmodulename^<>'' then
- tabstractunitsymtable(current_module.localsymtable).insertunit(tunitsym.create(current_module.realmodulename^,current_module));
+ tabstractunitsymtable(current_module.localsymtable).insertunit(cunitsym.create(current_module.realmodulename^,current_module));
Message1(parser_u_parsing_implementation,current_module.mainsource);
diff --git a/compiler/powerpc/cgcpu.pas b/compiler/powerpc/cgcpu.pas
index b8d372a84a..aa312c95cc 100644
--- a/compiler/powerpc/cgcpu.pas
+++ b/compiler/powerpc/cgcpu.pas
@@ -60,9 +60,6 @@ unit cgcpu;
procedure a_jmp_name(list : TAsmList;const s : string); override;
procedure a_jmp_always(list : TAsmList;l: tasmlabel); override;
- procedure a_jmp_flags(list : TAsmList;const f : TResFlags;l: tasmlabel); override;
-
- procedure g_flags2reg(list: TAsmList; size: TCgSize; const f: TResFlags; reg: TRegister); override;
procedure g_proc_entry(list : TAsmList;localsize : longint;nostackframe:boolean);override;
procedure g_proc_exit(list : TAsmList;parasize : longint;nostackframe:boolean); override;
@@ -680,55 +677,6 @@ const
a_jmp(list,A_B,C_None,0,l);
end;
- procedure tcgppc.a_jmp_flags(list : TAsmList;const f : TResFlags;l: tasmlabel);
-
- var
- c: tasmcond;
- begin
- c := flags_to_cond(f);
- a_jmp(list,A_BC,c.cond,c.cr-RS_CR0,l);
- end;
-
- procedure tcgppc.g_flags2reg(list: TAsmList; size: TCgSize; const f: TResFlags; reg: TRegister);
-
- var
- testbit: byte;
- bitvalue: boolean;
-
- begin
- { get the bit to extract from the conditional register + its }
- { requested value (0 or 1) }
- testbit := ((f.cr-RS_CR0) * 4);
- case f.flag of
- F_EQ,F_NE:
- begin
- inc(testbit,2);
- bitvalue := f.flag = F_EQ;
- end;
- F_LT,F_GE:
- begin
- bitvalue := f.flag = F_LT;
- end;
- F_GT,F_LE:
- begin
- inc(testbit);
- bitvalue := f.flag = F_GT;
- end;
- else
- internalerror(200112261);
- end;
- { load the conditional register in the destination reg }
- list.concat(taicpu.op_reg(A_MFCR,reg));
- { we will move the bit that has to be tested to bit 0 by rotating }
- { left }
- testbit := (testbit + 1) and 31;
- { extract bit }
- list.concat(taicpu.op_reg_reg_const_const_const(
- A_RLWINM,reg,reg,testbit,31,31));
- { if we need the inverse, xor with 1 }
- if not bitvalue then
- list.concat(taicpu.op_reg_reg_const(A_XORI,reg,reg,1));
- end;
(*
procedure tcgppc.g_cond2reg(list: TAsmList; const f: TAsmCond; reg: TRegister);
diff --git a/compiler/powerpc/cpubase.pas b/compiler/powerpc/cpubase.pas
index 9926638148..fe1ed96e5f 100644
--- a/compiler/powerpc/cpubase.pas
+++ b/compiler/powerpc/cpubase.pas
@@ -206,22 +206,15 @@ uses
'T','F','DNZ','DNZT','DNZF','DZ','DZT','DZF');
- const
- CondAsmOps=3;
- CondAsmOp:array[0..CondAsmOps-1] of TasmOp=(
- A_BC, A_TW, A_TWI
- );
- CondAsmOpStr:array[0..CondAsmOps-1] of string[7]=(
- 'BC','TW','TWI'
- );
-
-
{*****************************************************************************
Flags
*****************************************************************************}
type
- TResFlagsEnum = (F_EQ,F_NE,F_LT,F_LE,F_GT,F_GE,F_SO,F_FX,F_FEX,F_VX,F_OX);
+ TResFlagsEnum = (F_EQ,F_NE,F_LT,F_LE,F_GT,F_GE,F_SO,F_FX,F_FEX,F_VX,F_OX,
+ { For IEEE-compliant floating-point compares, only <= and >=
+ are actually needed but the other two are for inverse. }
+ F_FA,F_FAE,F_FB,F_FBE);
TResFlags = record
cr: RS_CR0..RS_CR7;
flag: TResFlagsEnum;
@@ -454,8 +447,15 @@ implementation
const
inv_flags: array[F_EQ..F_GE] of TResFlagsEnum =
(F_NE,F_EQ,F_GE,F_GE,F_LE,F_LT);
+ inv_fpuflags: array[F_FA..F_FBE] of TResFlagsEnum =
+ (F_FBE,F_FB,F_FAE,F_FA);
begin
- r.flag := inv_flags[r.flag];
+ if r.flag in [F_EQ..F_GE] then
+ r.flag := inv_flags[r.flag]
+ else if r.flag in [F_FA..F_FBE] then
+ r.flag := inv_fpuflags[r.flag]
+ else
+ internalerror(2014041901);
end;
diff --git a/compiler/powerpc/cpupi.pas b/compiler/powerpc/cpupi.pas
index 3efec0189a..73f6f4dca2 100644
--- a/compiler/powerpc/cpupi.pas
+++ b/compiler/powerpc/cpupi.pas
@@ -51,7 +51,7 @@ unit cpupi;
property get_first_save_int_reg: tsuperregister read first_save_int_reg;
property get_first_save_fpu_reg: tsuperregister read first_save_fpu_reg;
-
+ procedure postprocess_code;override;
end;
@@ -63,7 +63,8 @@ unit cpupi;
aasmtai,
tgobj,cgobj,
symconst,symsym,paramgr,symutil,symtable,
- verbose;
+ verbose,
+ aasmcpu;
constructor tppcprocinfo.create(aparent:tprocinfo);
@@ -201,6 +202,12 @@ unit cpupi;
end;
+ procedure tppcprocinfo.postprocess_code;
+ begin
+ fixup_jmps(aktproccode);
+ end;
+
+
begin
cprocinfo:=tppcprocinfo;
end.
diff --git a/compiler/powerpc/nppccal.pas b/compiler/powerpc/nppccal.pas
index 44b6cebc39..a57e250b2c 100644
--- a/compiler/powerpc/nppccal.pas
+++ b/compiler/powerpc/nppccal.pas
@@ -30,6 +30,9 @@ interface
type
tppccallnode = class(tcgcallnode)
+ protected
+ procedure gen_syscall_para(para: tcallparanode); override;
+ public
procedure extra_call_code;override;
procedure do_syscall;override;
end;
@@ -40,13 +43,19 @@ implementation
uses
globtype,systems,
cutils,verbose,globals,
- symconst,symbase,symsym,symtable,defutil,paramgr,parabase,
+ symconst,symbase,symsym,symcpu,symtable,defutil,paramgr,parabase,
cgbase,pass_2,
cpuinfo,cpubase,aasmbase,aasmtai,aasmdata,aasmcpu,
nmem,nld,ncnv,
ncgutil,cgutils,cgobj,tgobj,regvars,rgobj,rgcpu,
cg64f32,cgcpu,cpupi,procinfo;
+ procedure tppccallnode.gen_syscall_para(para: tcallparanode);
+ begin
+ { lib parameter has no special type but proccalloptions must be a syscall }
+ para.left:=cloadnode.create(tcpuprocdef(procdefinition).libsym,tcpuprocdef(procdefinition).libsym.owner);
+ end;
+
procedure tppccallnode.extra_call_code;
begin
@@ -88,7 +97,7 @@ implementation
cg.getcpuregister(current_asmdata.CurrAsmList,NR_R12);
reference_reset(tmpref,sizeof(pint));
- tmpref.symbol:=current_asmdata.RefAsmSymbol(tstaticvarsym(tprocdef(procdefinition).libsym).mangledname);
+ tmpref.symbol:=current_asmdata.RefAsmSymbol(tstaticvarsym(tcpuprocdef(procdefinition).libsym).mangledname);
tmpref.refaddr:=addr_higha;
current_asmdata.CurrAsmList.concat(taicpu.op_reg_ref(A_LIS,NR_R12,tmpref));
tmpref.base:=NR_R12;
diff --git a/compiler/powerpc/nppccnv.pas b/compiler/powerpc/nppccnv.pas
index 375eb957ad..668dc37e38 100644
--- a/compiler/powerpc/nppccnv.pas
+++ b/compiler/powerpc/nppccnv.pas
@@ -58,7 +58,7 @@ implementation
uses
verbose,globtype,globals,systems,
symconst,symdef,aasmbase,aasmtai,aasmdata,
- defutil,
+ defutil,symcpu,
cgbase,cgutils,pass_1,pass_2,
ncon,ncal,
ncgutil,procinfo,
diff --git a/compiler/powerpc/symcpu.pas b/compiler/powerpc/symcpu.pas
new file mode 100644
index 0000000000..0e76662a88
--- /dev/null
+++ b/compiler/powerpc/symcpu.pas
@@ -0,0 +1,259 @@
+{
+ Copyright (c) 2014 by Florian Klaempfl
+
+ Symbol table overrides for PowerPC
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+ ****************************************************************************
+}
+unit symcpu;
+
+{$i fpcdefs.inc}
+
+interface
+
+uses
+ symconst,symtype,symdef,symsym;
+
+type
+ { defs }
+ tcpufiledef = class(tfiledef)
+ end;
+ tcpufiledefclass = class of tcpufiledef;
+
+ tcpuvariantdef = class(tvariantdef)
+ end;
+ tcpuvariantdefclass = class of tcpuvariantdef;
+
+ tcpuformaldef = class(tformaldef)
+ end;
+ tcpuformaldefclass = class of tcpuformaldef;
+
+ tcpuforwarddef = class(tforwarddef)
+ end;
+ tcpuforwarddefclass = class of tcpuforwarddef;
+
+ tcpuundefineddef = class(tundefineddef)
+ end;
+ tcpuundefineddefclass = class of tcpuundefineddef;
+
+ tcpuerrordef = class(terrordef)
+ end;
+ tcpuerrordefclass = class of tcpuerrordef;
+
+ tcpupointerdef = class(tpointerdef)
+ end;
+ tcpupointerdefclass = class of tcpupointerdef;
+
+ tcpurecorddef = class(trecorddef)
+ end;
+ tcpurecorddefclass = class of tcpurecorddef;
+
+ tcpuimplementedinterface = class(timplementedinterface)
+ end;
+ tcpuimplementedinterfaceclass = class of tcpuimplementedinterface;
+
+ tcpuobjectdef = class(tobjectdef)
+ end;
+ tcpuobjectdefclass = class of tcpuobjectdef;
+
+ tcpuclassrefdef = class(tclassrefdef)
+ end;
+ tcpuclassrefdefclass = class of tcpuclassrefdef;
+
+ tcpuarraydef = class(tarraydef)
+ end;
+ tcpuarraydefclass = class of tcpuarraydef;
+
+ tcpuorddef = class(torddef)
+ end;
+ tcpuorddefclass = class of tcpuorddef;
+
+ tcpufloatdef = class(tfloatdef)
+ end;
+ tcpufloatdefclass = class of tcpufloatdef;
+
+ tcpuprocvardef = class(tprocvardef)
+ end;
+ tcpuprocvardefclass = class of tcpuprocvardef;
+
+ tcpuprocdef = class(tprocdef)
+ procedure ppuload_platform(ppufile: tcompilerppufile); override;
+ procedure ppuwrite_platform(ppufile: tcompilerppufile); override;
+ public
+ { library symbol for AmigaOS/MorphOS }
+ libsym : tsym;
+ libsymderef : tderef;
+ function getcopyas(newtyp: tdeftyp; copytyp: tproccopytyp): tstoreddef; override;
+ procedure buildderef; override;
+ procedure deref; override;
+ end;
+ tcpuprocdefclass = class of tcpuprocdef;
+
+ tcpustringdef = class(tstringdef)
+ end;
+ tcpustringdefclass = class of tcpustringdef;
+
+ tcpuenumdef = class(tenumdef)
+ end;
+ tcpuenumdefclass = class of tcpuenumdef;
+
+ tcpusetdef = class(tsetdef)
+ end;
+ tcpusetdefclass = class of tcpusetdef;
+
+ { syms }
+ tcpulabelsym = class(tlabelsym)
+ end;
+ tcpulabelsymclass = class of tcpulabelsym;
+
+ tcpuunitsym = class(tunitsym)
+ end;
+ tcpuunitsymclass = class of tcpuunitsym;
+
+ tcpunamespacesym = class(tnamespacesym)
+ end;
+ tcpunamespacesymclass = class of tcpunamespacesym;
+
+ tcpuprocsym = class(tprocsym)
+ end;
+ tcpuprocsymclass = class of tcpuprocsym;
+
+ tcputypesym = class(ttypesym)
+ end;
+ tcpuypesymclass = class of tcputypesym;
+
+ tcpufieldvarsym = class(tfieldvarsym)
+ end;
+ tcpufieldvarsymclass = class of tcpufieldvarsym;
+
+ tcpulocalvarsym = class(tlocalvarsym)
+ end;
+ tcpulocalvarsymclass = class of tcpulocalvarsym;
+
+ tcpuparavarsym = class(tparavarsym)
+ end;
+ tcpuparavarsymclass = class of tcpuparavarsym;
+
+ tcpustaticvarsym = class(tstaticvarsym)
+ end;
+ tcpustaticvarsymclass = class of tcpustaticvarsym;
+
+ tcpuabsolutevarsym = class(tabsolutevarsym)
+ end;
+ tcpuabsolutevarsymclass = class of tcpuabsolutevarsym;
+
+ tcpupropertysym = class(tpropertysym)
+ end;
+ tcpupropertysymclass = class of tcpupropertysym;
+
+ tcpuconstsym = class(tconstsym)
+ end;
+ tcpuconstsymclass = class of tcpuconstsym;
+
+ tcpuenumsym = class(tenumsym)
+ end;
+ tcpuenumsymclass = class of tcpuenumsym;
+
+ tcpusyssym = class(tsyssym)
+ end;
+ tcpusyssymclass = class of tcpusyssym;
+
+
+const
+ pbestrealtype : ^tdef = @s64floattype;
+
+
+implementation
+
+{****************************************************************************
+ tcpuprocdef
+****************************************************************************}
+
+ procedure tcpuprocdef.ppuload_platform(ppufile: tcompilerppufile);
+ begin
+ inherited;
+ ppufile.getderef(libsymderef);
+ end;
+
+
+ procedure tcpuprocdef.ppuwrite_platform(ppufile: tcompilerppufile);
+ begin
+ inherited;
+ ppufile.putderef(libsymderef);
+ end;
+
+
+ function tcpuprocdef.getcopyas(newtyp: tdeftyp; copytyp: tproccopytyp): tstoreddef;
+ begin
+ result:=inherited;
+ if newtyp=procdef then
+ tcpuprocdef(result).libsym:=libsym;
+ end;
+
+
+ procedure tcpuprocdef.buildderef;
+ begin
+ inherited;
+ libsymderef.build(libsym);
+ end;
+
+
+ procedure tcpuprocdef.deref;
+ begin
+ inherited;
+ libsym:=tsym(libsymderef.resolve);
+ end;
+
+begin
+ { used tdef classes }
+ cfiledef:=tcpufiledef;
+ cvariantdef:=tcpuvariantdef;
+ cformaldef:=tcpuformaldef;
+ cforwarddef:=tcpuforwarddef;
+ cundefineddef:=tcpuundefineddef;
+ cerrordef:=tcpuerrordef;
+ cpointerdef:=tcpupointerdef;
+ crecorddef:=tcpurecorddef;
+ cimplementedinterface:=tcpuimplementedinterface;
+ cobjectdef:=tcpuobjectdef;
+ cclassrefdef:=tcpuclassrefdef;
+ carraydef:=tcpuarraydef;
+ corddef:=tcpuorddef;
+ cfloatdef:=tcpufloatdef;
+ cprocvardef:=tcpuprocvardef;
+ cprocdef:=tcpuprocdef;
+ cstringdef:=tcpustringdef;
+ cenumdef:=tcpuenumdef;
+ csetdef:=tcpusetdef;
+
+ { used tsym classes }
+ clabelsym:=tcpulabelsym;
+ cunitsym:=tcpuunitsym;
+ cnamespacesym:=tcpunamespacesym;
+ cprocsym:=tcpuprocsym;
+ ctypesym:=tcputypesym;
+ cfieldvarsym:=tcpufieldvarsym;
+ clocalvarsym:=tcpulocalvarsym;
+ cparavarsym:=tcpuparavarsym;
+ cstaticvarsym:=tcpustaticvarsym;
+ cabsolutevarsym:=tcpuabsolutevarsym;
+ cpropertysym:=tcpupropertysym;
+ cconstsym:=tcpuconstsym;
+ cenumsym:=tcpuenumsym;
+ csyssym:=tcpusyssym;
+end.
+
diff --git a/compiler/powerpc64/cgcpu.pas b/compiler/powerpc64/cgcpu.pas
index 943bbc1b17..a64813ec06 100644
--- a/compiler/powerpc64/cgcpu.pas
+++ b/compiler/powerpc64/cgcpu.pas
@@ -68,11 +68,6 @@ type
procedure a_jmp_name(list: TAsmList; const s: string); override;
procedure a_jmp_always(list: TAsmList; l: tasmlabel); override;
- procedure a_jmp_flags(list: TAsmList; const f: TResFlags; l: tasmlabel);
- override;
-
- procedure g_flags2reg(list: TAsmList; size: TCgSize; const f: TResFlags;
- reg: TRegister); override;
{ need to override this for ppc64 to avoid calling CG methods which allocate
registers during creation of the interface wrappers to subtract ioffset from
@@ -1078,55 +1073,6 @@ begin
a_jmp(list, A_B, C_None, 0, l);
end;
-procedure tcgppc.a_jmp_flags(list: TAsmList; const f: TResFlags; l:
- tasmlabel);
-
-var
- c: tasmcond;
-begin
- c := flags_to_cond(f);
- a_jmp(list, A_BC, c.cond, c.cr - RS_CR0, l);
-end;
-
-procedure tcgppc.g_flags2reg(list: TAsmList; size: TCgSize; const f:
- TResFlags; reg: TRegister);
-var
- testbit: byte;
- bitvalue: boolean;
-begin
- { get the bit to extract from the conditional register + its requested value (0 or 1) }
- testbit := ((f.cr - RS_CR0) * 4);
- case f.flag of
- F_EQ, F_NE:
- begin
- inc(testbit, 2);
- bitvalue := f.flag = F_EQ;
- end;
- F_LT, F_GE:
- begin
- bitvalue := f.flag = F_LT;
- end;
- F_GT, F_LE:
- begin
- inc(testbit);
- bitvalue := f.flag = F_GT;
- end;
- else
- internalerror(200112261);
- end;
- { load the conditional register in the destination reg }
- list.concat(taicpu.op_reg(A_MFCR, reg));
- { we will move the bit that has to be tested to bit 0 by rotating left }
- testbit := (testbit + 1) and 31;
- { extract bit }
- list.concat(taicpu.op_reg_reg_const_const_const(
- A_RLWINM,reg,reg,testbit,31,31));
-
- { if we need the inverse, xor with 1 }
- if not bitvalue then
- list.concat(taicpu.op_reg_reg_const(A_XORI, reg, reg, 1));
-end;
-
{ *********** entry/exit code and address loading ************ }
procedure tcgppc.g_save_registers(list: TAsmList);
diff --git a/compiler/powerpc64/cpubase.pas b/compiler/powerpc64/cpubase.pas
index f85094284c..7c3e307e65 100644
--- a/compiler/powerpc64/cpubase.pas
+++ b/compiler/powerpc64/cpubase.pas
@@ -224,23 +224,16 @@ const
'LT', 'LE', 'EQ', 'GE', 'GT', 'NL', 'NE', 'NG', 'SO', 'NS', 'UN', 'NU',
'T', 'F', 'DNZ', 'DNZT', 'DNZF', 'DZ', 'DZT', 'DZF');
-const
- CondAsmOps = 3;
- CondAsmOp: array[0..CondAsmOps - 1] of TasmOp = (
- A_BC, A_TW, A_TWI
- );
- CondAsmOpStr:array[0..CondAsmOps-1] of string[7]=(
- 'B','TW','TWI'
- );
-
-
{*****************************************************************************
Flags
*****************************************************************************}
type
- TResFlagsEnum = (F_EQ, F_NE, F_LT, F_LE, F_GT, F_GE, F_SO, F_FX, F_FEX, F_VX,
- F_OX);
+ TResFlagsEnum = (F_EQ, F_NE, F_LT, F_LE, F_GT, F_GE, F_SO, F_FX, F_FEX, F_VX,F_OX,
+ { For IEEE-compliant floating-point compares, only <= and >=
+ are actually needed but the other two are for inverse. }
+ F_FA,F_FAE,F_FB,F_FBE);
+
TResFlags = record
cr: RS_CR0..RS_CR7;
flag: TResFlagsEnum;
@@ -455,8 +448,15 @@ procedure inverse_flags(var r: TResFlags);
const
inv_flags: array[F_EQ..F_GE] of TResFlagsEnum =
(F_NE, F_EQ, F_GE, F_GE, F_LE, F_LT);
+ inv_fpuflags: array[F_FA..F_FBE] of TResFlagsEnum =
+ (F_FBE,F_FB,F_FAE,F_FA);
begin
- r.flag := inv_flags[r.flag];
+ if r.flag in [F_EQ..F_GE] then
+ r.flag := inv_flags[r.flag]
+ else if r.flag in [F_FA..F_FBE] then
+ r.flag := inv_fpuflags[r.flag]
+ else
+ internalerror(2014041901);
end;
function inverse_cond(const c: TAsmCond): Tasmcond;
diff --git a/compiler/powerpc64/cpunode.pas b/compiler/powerpc64/cpunode.pas
index 39dd3c7485..bbf80aba47 100644
--- a/compiler/powerpc64/cpunode.pas
+++ b/compiler/powerpc64/cpunode.pas
@@ -31,6 +31,8 @@ uses
{ generic nodes }
ncgbas, ncgld, ncgflw, ncgcnv, ncgmem, ncgcon, ncgcal, ncgset, ncginl, ncgopt,
ncgobjc,
+ { symtable }
+ symcpu,
{ to be able to only parts of the generic code,
the processor specific nodes must be included
after the generic one (FK)
diff --git a/compiler/powerpc64/cpupi.pas b/compiler/powerpc64/cpupi.pas
index b5be0df730..c6da36bd4c 100644
--- a/compiler/powerpc64/cpupi.pas
+++ b/compiler/powerpc64/cpupi.pas
@@ -46,6 +46,7 @@ type
function calc_stackframe_size(numgpr, numfpr : longint): longint;
procedure allocate_got_register(list: TAsmList); override;
+ procedure postprocess_code;override;
end;
implementation
@@ -56,7 +57,8 @@ uses
aasmtai,
tgobj,cgobj,
symconst, symsym, paramgr, symutil, symtable,
- verbose;
+ verbose,
+ aasmcpu;
constructor tppcprocinfo.create(aparent: tprocinfo);
@@ -124,6 +126,13 @@ procedure tppcprocinfo.allocate_got_register(list: TAsmList);
end;
end;
+
+procedure tppcprocinfo.postprocess_code;
+ begin
+ fixup_jmps(aktproccode);
+ end;
+
+
begin
cprocinfo := tppcprocinfo;
end.
diff --git a/compiler/powerpc64/nppccnv.pas b/compiler/powerpc64/nppccnv.pas
index 606bd558cb..7eeeffd51f 100644
--- a/compiler/powerpc64/nppccnv.pas
+++ b/compiler/powerpc64/nppccnv.pas
@@ -58,7 +58,7 @@ implementation
uses
verbose, globtype, globals, systems,
symconst, symdef, aasmbase, aasmtai,aasmdata,
- defutil,
+ defutil, symcpu,
cgbase, cgutils, pass_1, pass_2,
ncon, ncal,procinfo,
ncgutil,
diff --git a/compiler/powerpc64/symcpu.pas b/compiler/powerpc64/symcpu.pas
new file mode 100644
index 0000000000..d252b9897a
--- /dev/null
+++ b/compiler/powerpc64/symcpu.pas
@@ -0,0 +1,211 @@
+{
+ Copyright (c) 2014 by Florian Klaempfl
+
+ Symbol table overrides for PowerPC64
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+ ****************************************************************************
+}
+unit symcpu;
+
+{$i fpcdefs.inc}
+
+interface
+
+uses
+ symtype,symdef,symsym;
+
+type
+ { defs }
+ tcpufiledef = class(tfiledef)
+ end;
+ tcpufiledefclass = class of tcpufiledef;
+
+ tcpuvariantdef = class(tvariantdef)
+ end;
+ tcpuvariantdefclass = class of tcpuvariantdef;
+
+ tcpuformaldef = class(tformaldef)
+ end;
+ tcpuformaldefclass = class of tcpuformaldef;
+
+ tcpuforwarddef = class(tforwarddef)
+ end;
+ tcpuforwarddefclass = class of tcpuforwarddef;
+
+ tcpuundefineddef = class(tundefineddef)
+ end;
+ tcpuundefineddefclass = class of tcpuundefineddef;
+
+ tcpuerrordef = class(terrordef)
+ end;
+ tcpuerrordefclass = class of tcpuerrordef;
+
+ tcpupointerdef = class(tpointerdef)
+ end;
+ tcpupointerdefclass = class of tcpupointerdef;
+
+ tcpurecorddef = class(trecorddef)
+ end;
+ tcpurecorddefclass = class of tcpurecorddef;
+
+ tcpuimplementedinterface = class(timplementedinterface)
+ end;
+ tcpuimplementedinterfaceclass = class of tcpuimplementedinterface;
+
+ tcpuobjectdef = class(tobjectdef)
+ end;
+ tcpuobjectdefclass = class of tcpuobjectdef;
+
+ tcpuclassrefdef = class(tclassrefdef)
+ end;
+ tcpuclassrefdefclass = class of tcpuclassrefdef;
+
+ tcpuarraydef = class(tarraydef)
+ end;
+ tcpuarraydefclass = class of tcpuarraydef;
+
+ tcpuorddef = class(torddef)
+ end;
+ tcpuorddefclass = class of tcpuorddef;
+
+ tcpufloatdef = class(tfloatdef)
+ end;
+ tcpufloatdefclass = class of tcpufloatdef;
+
+ tcpuprocvardef = class(tprocvardef)
+ end;
+ tcpuprocvardefclass = class of tcpuprocvardef;
+
+ tcpuprocdef = class(tprocdef)
+ end;
+ tcpuprocdefclass = class of tcpuprocdef;
+
+ tcpustringdef = class(tstringdef)
+ end;
+ tcpustringdefclass = class of tcpustringdef;
+
+ tcpuenumdef = class(tenumdef)
+ end;
+ tcpuenumdefclass = class of tcpuenumdef;
+
+ tcpusetdef = class(tsetdef)
+ end;
+ tcpusetdefclass = class of tcpusetdef;
+
+ { syms }
+ tcpulabelsym = class(tlabelsym)
+ end;
+ tcpulabelsymclass = class of tcpulabelsym;
+
+ tcpuunitsym = class(tunitsym)
+ end;
+ tcpuunitsymclass = class of tcpuunitsym;
+
+ tcpunamespacesym = class(tnamespacesym)
+ end;
+ tcpunamespacesymclass = class of tcpunamespacesym;
+
+ tcpuprocsym = class(tprocsym)
+ end;
+ tcpuprocsymclass = class of tcpuprocsym;
+
+ tcputypesym = class(ttypesym)
+ end;
+ tcpuypesymclass = class of tcputypesym;
+
+ tcpufieldvarsym = class(tfieldvarsym)
+ end;
+ tcpufieldvarsymclass = class of tcpufieldvarsym;
+
+ tcpulocalvarsym = class(tlocalvarsym)
+ end;
+ tcpulocalvarsymclass = class of tcpulocalvarsym;
+
+ tcpuparavarsym = class(tparavarsym)
+ end;
+ tcpuparavarsymclass = class of tcpuparavarsym;
+
+ tcpustaticvarsym = class(tstaticvarsym)
+ end;
+ tcpustaticvarsymclass = class of tcpustaticvarsym;
+
+ tcpuabsolutevarsym = class(tabsolutevarsym)
+ end;
+ tcpuabsolutevarsymclass = class of tcpuabsolutevarsym;
+
+ tcpupropertysym = class(tpropertysym)
+ end;
+ tcpupropertysymclass = class of tcpupropertysym;
+
+ tcpuconstsym = class(tconstsym)
+ end;
+ tcpuconstsymclass = class of tcpuconstsym;
+
+ tcpuenumsym = class(tenumsym)
+ end;
+ tcpuenumsymclass = class of tcpuenumsym;
+
+ tcpusyssym = class(tsyssym)
+ end;
+ tcpusyssymclass = class of tcpusyssym;
+
+
+const
+ pbestrealtype : ^tdef = @s64floattype;
+
+
+implementation
+
+begin
+ { used tdef classes }
+ cfiledef:=tcpufiledef;
+ cvariantdef:=tcpuvariantdef;
+ cformaldef:=tcpuformaldef;
+ cforwarddef:=tcpuforwarddef;
+ cundefineddef:=tcpuundefineddef;
+ cerrordef:=tcpuerrordef;
+ cpointerdef:=tcpupointerdef;
+ crecorddef:=tcpurecorddef;
+ cimplementedinterface:=tcpuimplementedinterface;
+ cobjectdef:=tcpuobjectdef;
+ cclassrefdef:=tcpuclassrefdef;
+ carraydef:=tcpuarraydef;
+ corddef:=tcpuorddef;
+ cfloatdef:=tcpufloatdef;
+ cprocvardef:=tcpuprocvardef;
+ cprocdef:=tcpuprocdef;
+ cstringdef:=tcpustringdef;
+ cenumdef:=tcpuenumdef;
+ csetdef:=tcpusetdef;
+
+ { used tsym classes }
+ clabelsym:=tcpulabelsym;
+ cunitsym:=tcpuunitsym;
+ cnamespacesym:=tcpunamespacesym;
+ cprocsym:=tcpuprocsym;
+ ctypesym:=tcputypesym;
+ cfieldvarsym:=tcpufieldvarsym;
+ clocalvarsym:=tcpulocalvarsym;
+ cparavarsym:=tcpuparavarsym;
+ cstaticvarsym:=tcpustaticvarsym;
+ cabsolutevarsym:=tcpuabsolutevarsym;
+ cpropertysym:=tcpupropertysym;
+ cconstsym:=tcpuconstsym;
+ cenumsym:=tcpuenumsym;
+ csyssym:=tcpusyssym;
+end.
+
diff --git a/compiler/pp.lpi b/compiler/pp.lpi
index 0feb2f007b..c422ab88f7 100644
--- a/compiler/pp.lpi
+++ b/compiler/pp.lpi
@@ -27,12 +27,22 @@
<FormatVersion Value="1"/>
</local>
</RunParams>
- <Units Count="1">
+ <Units Count="3">
<Unit0>
<Filename Value="pp.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="pp"/>
</Unit0>
+ <Unit1>
+ <Filename Value="x86\symold86.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="symold86"/>
+ </Unit1>
+ <Unit2>
+ <Filename Value="i8086\symcpu.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="symcpu"/>
+ </Unit2>
</Units>
</ProjectOptions>
<CompilerOptions>
diff --git a/compiler/pparautl.pas b/compiler/pparautl.pas
index 496d5258fd..3545f61509 100644
--- a/compiler/pparautl.pas
+++ b/compiler/pparautl.pas
@@ -76,7 +76,7 @@ implementation
{$endif}
paranr:=paranr_result;
{ Generate result variable accessing function result }
- vs:=tparavarsym.create('$result',paranr,vs_var,pd.returndef,[vo_is_funcret,vo_is_hidden_para]);
+ vs:=cparavarsym.create('$result',paranr,vs_var,pd.returndef,[vo_is_funcret,vo_is_hidden_para]);
pd.parast.insert(vs);
{ Store this symbol as funcretsym for procedures }
if pd.typ=procdef then
@@ -118,7 +118,7 @@ implementation
{ in case of errors, prevent invalid type cast }
(pd.owner.defowner.typ<>procdef) then
begin
- vs:=tparavarsym.create('$parentfp',paranr,vs_value
+ vs:=cparavarsym.create('$parentfp',paranr,vs_value
,parentfpvoidpointertype,[vo_is_parentfp,vo_is_hidden_para]);
vs.varregable:=vr_none;
end
@@ -126,7 +126,7 @@ implementation
begin
if not assigned(tprocdef(pd.owner.defowner).parentfpstruct) then
build_parentfpstruct(tprocdef(pd.owner.defowner));
- vs:=tparavarsym.create('$parentfp',paranr,vs_value
+ vs:=cparavarsym.create('$parentfp',paranr,vs_value
,tprocdef(pd.owner.defowner).parentfpstructptrtype,[vo_is_parentfp,vo_is_hidden_para]);
end;
pd.parast.insert(vs);
@@ -151,12 +151,12 @@ implementation
(pd.parast.symtablelevel=normal_function_level) then
begin
{ insert Objective-C self and selector parameters }
- vs:=tparavarsym.create('$_cmd',paranr_objc_cmd,vs_value,objc_seltype,[vo_is_msgsel,vo_is_hidden_para]);
+ vs:=cparavarsym.create('$_cmd',paranr_objc_cmd,vs_value,objc_seltype,[vo_is_msgsel,vo_is_hidden_para]);
pd.parast.insert(vs);
{ make accessible to code }
sl:=tpropaccesslist.create;
sl.addsym(sl_load,vs);
- aliasvs:=tabsolutevarsym.create_ref('_CMD',objc_seltype,sl);
+ aliasvs:=cabsolutevarsym.create_ref('_CMD',objc_seltype,sl);
include(aliasvs.varoptions,vo_is_msgsel);
tlocalsymtable(tprocdef(pd).localst).insert(aliasvs);
@@ -166,14 +166,14 @@ implementation
else
hdef:=tprocdef(pd).struct;
- vs:=tparavarsym.create('$self',paranr_objc_self,vs_value,hdef,[vo_is_self,vo_is_hidden_para]);
+ vs:=cparavarsym.create('$self',paranr_objc_self,vs_value,hdef,[vo_is_self,vo_is_hidden_para]);
pd.parast.insert(vs);
end
else if (pd.typ=procvardef) and
pd.is_methodpointer then
begin
{ Generate self variable }
- vs:=tparavarsym.create('$self',paranr_self,vs_value,voidpointertype,[vo_is_self,vo_is_hidden_para]);
+ vs:=cparavarsym.create('$self',paranr_self,vs_value,voidpointertype,[vo_is_self,vo_is_hidden_para]);
pd.parast.insert(vs);
end
else
@@ -202,7 +202,7 @@ implementation
begin
{ can't use classrefdef as type because inheriting
will then always file because of a type mismatch }
- vs:=tparavarsym.create('$vmt',paranr_vmt,vs_value,voidpointertype,[vo_is_vmt,vo_is_hidden_para]);
+ vs:=cparavarsym.create('$vmt',paranr_vmt,vs_value,voidpointertype,[vo_is_vmt,vo_is_hidden_para]);
pd.parast.insert(vs);
end;
@@ -218,14 +218,14 @@ implementation
vsp:=vs_value;
if (po_staticmethod in pd.procoptions) or
(po_classmethod in pd.procoptions) then
- hdef:=tclassrefdef.create(selfdef)
+ hdef:=cclassrefdef.create(selfdef)
else
begin
if is_object(selfdef) or (selfdef.typ<>objectdef) then
vsp:=vs_var;
hdef:=selfdef;
end;
- vs:=tparavarsym.create('$self',paranr_self,vsp,hdef,[vo_is_self,vo_is_hidden_para]);
+ vs:=cparavarsym.create('$self',paranr_self,vsp,hdef,[vo_is_self,vo_is_hidden_para]);
pd.parast.insert(vs);
current_tokenpos:=storepos;
@@ -257,7 +257,7 @@ implementation
if (df_generic in pd.defoptions) or
not paramanager.ret_in_param(pd.returndef,pd) then
begin
- vs:=tlocalvarsym.create('$result',vs_value,pd.returndef,[vo_is_funcret]);
+ vs:=clocalvarsym.create('$result',vs_value,pd.returndef,[vo_is_funcret]);
pd.localst.insert(vs);
pd.funcretsym:=vs;
end;
@@ -273,7 +273,7 @@ implementation
hs:=pd.procsym.name;
sl:=tpropaccesslist.create;
sl.addsym(sl_load,pd.funcretsym);
- aliasvs:=tabsolutevarsym.create_ref(hs,pd.returndef,sl);
+ aliasvs:=cabsolutevarsym.create_ref(hs,pd.returndef,sl);
include(aliasvs.varoptions,vo_is_funcret);
tlocalsymtable(pd.localst).insert(aliasvs);
end;
@@ -283,7 +283,7 @@ implementation
begin
sl:=tpropaccesslist.create;
sl.addsym(sl_load,pd.funcretsym);
- aliasvs:=tabsolutevarsym.create_ref('RESULT',pd.returndef,sl);
+ aliasvs:=cabsolutevarsym.create_ref('RESULT',pd.returndef,sl);
include(aliasvs.varoptions,vo_is_funcret);
include(aliasvs.varoptions,vo_is_result);
tlocalsymtable(pd.localst).insert(aliasvs);
@@ -316,7 +316,7 @@ implementation
{ needs high parameter ? }
if paramanager.push_high_param(varspez,vardef,pd.proccalloption) then
begin
- hvs:=tparavarsym.create('$high'+name,paranr+1,vs_const,sinttype,[vo_is_high_para,vo_is_hidden_para]);
+ hvs:=cparavarsym.create('$high'+name,paranr+1,vs_const,sinttype,[vo_is_high_para,vo_is_hidden_para]);
hvs.symoptions:=[];
owner.insert(hvs);
{ don't place to register if it will be accessed from implicit finally block }
@@ -344,7 +344,7 @@ implementation
end;
if (vardef.typ=formaldef) and (Tformaldef(vardef).typed) then
begin
- hvs:=tparavarsym.create('$typinfo'+name,paranr+1,vs_const,voidpointertype,
+ hvs:=cparavarsym.create('$typinfo'+name,paranr+1,vs_const,voidpointertype,
[vo_is_typinfo_para,vo_is_hidden_para]);
owner.insert(hvs);
end;
diff --git a/compiler/ppc8086.lpi b/compiler/ppc8086.lpi
index 00a96a82a3..1398cb8abc 100644
--- a/compiler/ppc8086.lpi
+++ b/compiler/ppc8086.lpi
@@ -28,7 +28,7 @@
<LaunchingApplication PathPlusParams="\usr\X11R6\bin\xterm -T 'Lazarus Run Output' -e $(LazarusDir)\tools\runwait.sh $(TargetCmdLine)"/>
</local>
</RunParams>
- <Units Count="40">
+ <Units Count="229">
<Unit0>
<Filename Value="pp.pas"/>
<IsPartOfProject Value="True"/>
@@ -219,6 +219,837 @@
<IsPartOfProject Value="True"/>
<UnitName Value="n8086cnv"/>
</Unit39>
+ <Unit40>
+ <Filename Value="systems\i_msdos.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="i_msdos"/>
+ </Unit40>
+ <Unit41>
+ <Filename Value="systems\t_msdos.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="t_msdos"/>
+ </Unit41>
+ <Unit42>
+ <Filename Value="i8086\n8086mem.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="n8086mem"/>
+ </Unit42>
+ <Unit43>
+ <Filename Value="cgobj.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="cgobj"/>
+ </Unit43>
+ <Unit44>
+ <Filename Value="globals.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="globals"/>
+ </Unit44>
+ <Unit45>
+ <Filename Value="scandir.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="scandir"/>
+ </Unit45>
+ <Unit46>
+ <Filename Value="ncginl.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="ncginl"/>
+ </Unit46>
+ <Unit47>
+ <Filename Value="ninl.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="ninl"/>
+ </Unit47>
+ <Unit48>
+ <Filename Value="pdecsub.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="pdecsub"/>
+ </Unit48>
+ <Unit49>
+ <Filename Value="ncgcal.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="ncgcal"/>
+ </Unit49>
+ <Unit50>
+ <Filename Value="hlcg2ll.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="hlcg2ll"/>
+ </Unit50>
+ <Unit51>
+ <Filename Value="ncgadd.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="ncgadd"/>
+ </Unit51>
+ <Unit52>
+ <Filename Value="nadd.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="nadd"/>
+ </Unit52>
+ <Unit53>
+ <Filename Value="defutil.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="defutil"/>
+ </Unit53>
+ <Unit54>
+ <Filename Value="constexp.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="constexp"/>
+ </Unit54>
+ <Unit55>
+ <Filename Value="hlcgobj.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="hlcgobj"/>
+ </Unit55>
+ <Unit56>
+ <Filename Value="ncgmem.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="ncgmem"/>
+ </Unit56>
+ <Unit57>
+ <Filename Value="cgutils.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="cgutils"/>
+ </Unit57>
+ <Unit58>
+ <Filename Value="cutils.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="cutils"/>
+ </Unit58>
+ <Unit59>
+ <Filename Value="options.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="options"/>
+ </Unit59>
+ <Unit60>
+ <Filename Value="globtype.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="globtype"/>
+ </Unit60>
+ <Unit61>
+ <Filename Value="ncnv.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="ncnv"/>
+ </Unit61>
+ <Unit62>
+ <Filename Value="psub.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="psub"/>
+ </Unit62>
+ <Unit63>
+ <Filename Value="ngenutil.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="ngenutil"/>
+ </Unit63>
+ <Unit64>
+ <Filename Value="pinline.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="pinline"/>
+ </Unit64>
+ <Unit65>
+ <Filename Value="pmodules.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="pmodules"/>
+ </Unit65>
+ <Unit66>
+ <Filename Value="aasmtai.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="aasmtai"/>
+ </Unit66>
+ <Unit67>
+ <Filename Value="dbgdwarf.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="dbgdwarf"/>
+ </Unit67>
+ <Unit68>
+ <Filename Value="symdef.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="symdef"/>
+ </Unit68>
+ <Unit69>
+ <Filename Value="ogcoff.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="ogcoff"/>
+ </Unit69>
+ <Unit70>
+ <Filename Value="psystem.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="psystem"/>
+ </Unit70>
+ <Unit71>
+ <Filename Value="symconst.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="symconst"/>
+ </Unit71>
+ <Unit72>
+ <Filename Value="paramgr.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="paramgr"/>
+ </Unit72>
+ <Unit73>
+ <Filename Value="ncgld.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="ncgld"/>
+ </Unit73>
+ <Unit74>
+ <Filename Value="pparautl.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="pparautl"/>
+ </Unit74>
+ <Unit75>
+ <Filename Value="ncgutil.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="ncgutil"/>
+ </Unit75>
+ <Unit76>
+ <Filename Value="ncgnstmm.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="ncgnstmm"/>
+ </Unit76>
+ <Unit77>
+ <Filename Value="nld.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="nld"/>
+ </Unit77>
+ <Unit78>
+ <Filename Value="nmem.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="nmem"/>
+ </Unit78>
+ <Unit79>
+ <Filename Value="ncal.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="ncal"/>
+ </Unit79>
+ <Unit80>
+ <Filename Value="symtype.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="symtype"/>
+ </Unit80>
+ <Unit81>
+ <Filename Value="symsym.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="symsym"/>
+ </Unit81>
+ <Unit82>
+ <Filename Value="symbase.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="symbase"/>
+ </Unit82>
+ <Unit83>
+ <Filename Value="nflw.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="nflw"/>
+ </Unit83>
+ <Unit84>
+ <Filename Value="scanner.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="scanner"/>
+ </Unit84>
+ <Unit85>
+ <Filename Value="ncon.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="ncon"/>
+ </Unit85>
+ <Unit86>
+ <Filename Value="rgobj.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="rgobj"/>
+ </Unit86>
+ <Unit87>
+ <Filename Value="defcmp.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="defcmp"/>
+ </Unit87>
+ <Unit88>
+ <Filename Value="fpcdefs.inc"/>
+ <IsPartOfProject Value="True"/>
+ </Unit88>
+ <Unit89>
+ <Filename Value="nmat.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="nmat"/>
+ </Unit89>
+ <Unit90>
+ <Filename Value="optdfa.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="optdfa"/>
+ </Unit90>
+ <Unit91>
+ <Filename Value="parabase.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="parabase"/>
+ </Unit91>
+ <Unit92>
+ <Filename Value="cgbase.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="cgbase"/>
+ </Unit92>
+ <Unit93>
+ <Filename Value="ncgcnv.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="ncgcnv"/>
+ </Unit93>
+ <Unit94>
+ <Filename Value="ncgcon.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="ncgcon"/>
+ </Unit94>
+ <Unit95>
+ <Filename Value="nset.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="nset"/>
+ </Unit95>
+ <Unit96>
+ <Filename Value="optloop.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="optloop"/>
+ </Unit96>
+ <Unit97>
+ <Filename Value="aasmbase.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit97>
+ <Unit98>
+ <Filename Value="aasmdata.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit98>
+ <Unit99>
+ <Filename Value="aasmsym.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit99>
+ <Unit100>
+ <Filename Value="aggas.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit100>
+ <Unit101>
+ <Filename Value="agjasmin.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit101>
+ <Unit102>
+ <Filename Value="aopt.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit102>
+ <Unit103>
+ <Filename Value="aoptbase.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit103>
+ <Unit104>
+ <Filename Value="aoptcs.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit104>
+ <Unit105>
+ <Filename Value="aoptda.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit105>
+ <Unit106>
+ <Filename Value="aoptobj.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit106>
+ <Unit107>
+ <Filename Value="asmutils.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit107>
+ <Unit108>
+ <Filename Value="assemble.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit108>
+ <Unit109>
+ <Filename Value="browcol.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit109>
+ <Unit110>
+ <Filename Value="catch.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit110>
+ <Unit111>
+ <Filename Value="ccharset.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit111>
+ <Unit112>
+ <Filename Value="cclasses.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit112>
+ <Unit113>
+ <Filename Value="cfidwarf.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit113>
+ <Unit114>
+ <Filename Value="cfileutl.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit114>
+ <Unit115>
+ <Filename Value="cg64f32.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="cg64f32"/>
+ </Unit115>
+ <Unit116>
+ <Filename Value="cghlcpu.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit116>
+ <Unit117>
+ <Filename Value="cmsgs.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit117>
+ <Unit118>
+ <Filename Value="comphook.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit118>
+ <Unit119>
+ <Filename Value="compiler.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit119>
+ <Unit120>
+ <Filename Value="compinnr.inc"/>
+ <IsPartOfProject Value="True"/>
+ </Unit120>
+ <Unit121>
+ <Filename Value="comprsrc.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit121>
+ <Unit122>
+ <Filename Value="cpid.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit122>
+ <Unit123>
+ <Filename Value="crefs.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit123>
+ <Unit124>
+ <Filename Value="cresstr.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="cresstr"/>
+ </Unit124>
+ <Unit125>
+ <Filename Value="cstreams.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit125>
+ <Unit126>
+ <Filename Value="cwindirs.pp"/>
+ <IsPartOfProject Value="True"/>
+ </Unit126>
+ <Unit127>
+ <Filename Value="dbgbase.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit127>
+ <Unit128>
+ <Filename Value="dbgstabs.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit128>
+ <Unit129>
+ <Filename Value="dbgstabx.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit129>
+ <Unit130>
+ <Filename Value="dirparse.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit130>
+ <Unit131>
+ <Filename Value="elfbase.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit131>
+ <Unit132>
+ <Filename Value="export.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit132>
+ <Unit133>
+ <Filename Value="expunix.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit133>
+ <Unit134>
+ <Filename Value="finput.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit134>
+ <Unit135>
+ <Filename Value="fmodule.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit135>
+ <Unit136>
+ <Filename Value="fpccrc.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit136>
+ <Unit137>
+ <Filename Value="fppu.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="fppu"/>
+ </Unit137>
+ <Unit138>
+ <Filename Value="gendef.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit138>
+ <Unit139>
+ <Filename Value="globstat.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit139>
+ <Unit140>
+ <Filename Value="htypechk.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="htypechk"/>
+ </Unit140>
+ <Unit141>
+ <Filename Value="impdef.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit141>
+ <Unit142>
+ <Filename Value="import.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit142>
+ <Unit143>
+ <Filename Value="ldscript.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit143>
+ <Unit144>
+ <Filename Value="link.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit144>
+ <Unit145>
+ <Filename Value="macho.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit145>
+ <Unit146>
+ <Filename Value="machoutils.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit146>
+ <Unit147>
+ <Filename Value="nbas.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="nbas"/>
+ </Unit147>
+ <Unit148>
+ <Filename Value="ncgbas.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit148>
+ <Unit149>
+ <Filename Value="ncgflw.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="ncgflw"/>
+ </Unit149>
+ <Unit150>
+ <Filename Value="ncgmat.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit150>
+ <Unit151>
+ <Filename Value="ncgnstld.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit151>
+ <Unit152>
+ <Filename Value="ncgobjc.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit152>
+ <Unit153>
+ <Filename Value="ncgopt.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit153>
+ <Unit154>
+ <Filename Value="ncgrtti.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit154>
+ <Unit155>
+ <Filename Value="ncgset.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit155>
+ <Unit156>
+ <Filename Value="ncgvmt.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit156>
+ <Unit157>
+ <Filename Value="ngtcon.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="ngtcon"/>
+ </Unit157>
+ <Unit158>
+ <Filename Value="nobj.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit158>
+ <Unit159>
+ <Filename Value="nobjc.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit159>
+ <Unit160>
+ <Filename Value="node.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="node"/>
+ </Unit160>
+ <Unit161>
+ <Filename Value="nopt.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit161>
+ <Unit162>
+ <Filename Value="nstate.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit162>
+ <Unit163>
+ <Filename Value="nutils.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit163>
+ <Unit164>
+ <Filename Value="objcdef.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit164>
+ <Unit165>
+ <Filename Value="objcgutl.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit165>
+ <Unit166>
+ <Filename Value="objcutil.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit166>
+ <Unit167>
+ <Filename Value="ogbase.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit167>
+ <Unit168>
+ <Filename Value="ogelf.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit168>
+ <Unit169>
+ <Filename Value="oglx.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit169>
+ <Unit170>
+ <Filename Value="ogmacho.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit170>
+ <Unit171>
+ <Filename Value="ogmap.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit171>
+ <Unit172>
+ <Filename Value="ognlm.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit172>
+ <Unit173>
+ <Filename Value="optbase.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit173>
+ <Unit174>
+ <Filename Value="optconstprop.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit174>
+ <Unit175>
+ <Filename Value="optcse.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit175>
+ <Unit176>
+ <Filename Value="optdead.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit176>
+ <Unit177>
+ <Filename Value="optdeadstore.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit177>
+ <Unit178>
+ <Filename Value="opttail.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit178>
+ <Unit179>
+ <Filename Value="optutils.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit179>
+ <Unit180>
+ <Filename Value="optvirt.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit180>
+ <Unit181>
+ <Filename Value="owar.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit181>
+ <Unit182>
+ <Filename Value="owbase.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit182>
+ <Unit183>
+ <Filename Value="parser.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit183>
+ <Unit184>
+ <Filename Value="pass_1.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit184>
+ <Unit185>
+ <Filename Value="pass_2.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit185>
+ <Unit186>
+ <Filename Value="pbase.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit186>
+ <Unit187>
+ <Filename Value="pdecl.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit187>
+ <Unit188>
+ <Filename Value="pdecobj.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit188>
+ <Unit189>
+ <Filename Value="pdecvar.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit189>
+ <Unit190>
+ <Filename Value="pexports.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit190>
+ <Unit191>
+ <Filename Value="pexpr.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit191>
+ <Unit192>
+ <Filename Value="pgenutil.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit192>
+ <Unit193>
+ <Filename Value="ppheap.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit193>
+ <Unit194>
+ <Filename Value="ppu.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="ppu"/>
+ </Unit194>
+ <Unit195>
+ <Filename Value="procinfo.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="procinfo"/>
+ </Unit195>
+ <Unit196>
+ <Filename Value="pstatmnt.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="pstatmnt"/>
+ </Unit196>
+ <Unit197>
+ <Filename Value="ptconst.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit197>
+ <Unit198>
+ <Filename Value="ptype.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit198>
+ <Unit199>
+ <Filename Value="raatt.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit199>
+ <Unit200>
+ <Filename Value="rabase.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit200>
+ <Unit201>
+ <Filename Value="rasm.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit201>
+ <Unit202>
+ <Filename Value="rautils.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit202>
+ <Unit203>
+ <Filename Value="regvars.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit203>
+ <Unit204>
+ <Filename Value="rescmn.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit204>
+ <Unit205>
+ <Filename Value="rgbase.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit205>
+ <Unit206>
+ <Filename Value="script.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit206>
+ <Unit207>
+ <Filename Value="switches.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit207>
+ <Unit208>
+ <Filename Value="symcreat.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit208>
+ <Unit209>
+ <Filename Value="symnot.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit209>
+ <Unit210>
+ <Filename Value="symtable.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit210>
+ <Unit211>
+ <Filename Value="symutil.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit211>
+ <Unit212>
+ <Filename Value="systems.inc"/>
+ <IsPartOfProject Value="True"/>
+ </Unit212>
+ <Unit213>
+ <Filename Value="systems.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit213>
+ <Unit214>
+ <Filename Value="tgobj.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="tgobj"/>
+ </Unit214>
+ <Unit215>
+ <Filename Value="tokens.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit215>
+ <Unit216>
+ <Filename Value="verbose.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit216>
+ <Unit217>
+ <Filename Value="version.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit217>
+ <Unit218>
+ <Filename Value="widestr.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit218>
+ <Unit219>
+ <Filename Value="wpo.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit219>
+ <Unit220>
+ <Filename Value="wpobase.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit220>
+ <Unit221>
+ <Filename Value="wpoinfo.pas"/>
+ <IsPartOfProject Value="True"/>
+ </Unit221>
+ <Unit222>
+ <Filename Value="i8086\n8086ld.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="n8086ld"/>
+ </Unit222>
+ <Unit223>
+ <Filename Value="i8086\symcpu.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="symcpu"/>
+ </Unit223>
+ <Unit224>
+ <Filename Value="x86\ni86mem.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="ni86mem"/>
+ </Unit224>
+ <Unit225>
+ <Filename Value="x86\symi86.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="symi86"/>
+ </Unit225>
+ <Unit226>
+ <Filename Value="x86\symx86.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="symx86"/>
+ </Unit226>
+ <Unit227>
+ <Filename Value="i8086\n8086tcon.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="n8086tcon"/>
+ </Unit227>
+ <Unit228>
+ <Filename Value="i8086\tgcpu.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="tgcpu"/>
+ </Unit228>
</Units>
</ProjectOptions>
<CompilerOptions>
diff --git a/compiler/ppcgen/agppcgas.pas b/compiler/ppcgen/agppcgas.pas
index 288b8bf8d8..806493c463 100644
--- a/compiler/ppcgen/agppcgas.pas
+++ b/compiler/ppcgen/agppcgas.pas
@@ -469,6 +469,8 @@ unit agppcgas;
{ make sure we always have a code and toc section, the linker expects
that }
AsmWriteln(#9'.csect .text[PR]');
+ { set _text_s, to be used by footer below }
+ AsmWriteln(#9'_text_s:');
AsmWriteln(#9'.toc');
end;
@@ -477,12 +479,11 @@ unit agppcgas;
begin
inherited WriteExtraFooter;
{ link between data and text section }
- AsmWriteln('_section_.text:');
AsmWriteln(#9'.csect .data[RW],4');
{$ifdef cpu64bitaddr}
- AsmWrite(#9'.llong _section_.text')
+ AsmWriteln('text_pos:'#9'.llong _text_s')
{$else cpu64bitaddr}
- AsmWrite(#9'.long _section_.text')
+ AsmWriteln('text_pos:'#9'.long _text_s')
{$endif cpu64bitaddr}
end;
@@ -588,9 +589,31 @@ unit agppcgas;
dollarsign : '.'
);
+ as_ppc_gas_aix_powerpc_info : tasminfo =
+ (
+ id : as_gas_powerpc_xcoff;
+
+ idtxt : 'GAS';
+ asmbin : 'gas';
+ { -u: allow using symbols before they are defined (when using native
+ AIX assembler, ignore by GNU assembler)
+ -mpwr5: we actually support Power3 and higher, but the AIX assembler
+ has no parameter to select that one (only -mpwr3 and -mpwr5) }
+{$ifdef cpu64bitaddr}
+ asmcmd : '-a64 -u -o $OBJ $EXTRAOPT $ASM -mpwr5';
+{$else cpu64bitaddr}
+ asmcmd : '-a32 -u -o $OBJ $EXTRAOPT $ASM -mpwr5';
+{$endif cpu64bitaddr}
+ supported_targets : [system_powerpc_aix,system_powerpc64_aix];
+ flags : [af_needar,af_smartlink_sections,af_stabs_use_function_absolute_addresses];
+ labelprefix : 'L';
+ comment : '# ';
+ dollarsign : '.'
+ );
begin
RegisterAssembler(as_ppc_gas_info,TPPCGNUAssembler);
RegisterAssembler(as_ppc_gas_darwin_powerpc_info,TPPCAppleGNUAssembler);
RegisterAssembler(as_ppc_aix_powerpc_info,TPPCAIXAssembler);
+ RegisterAssembler(as_ppc_gas_aix_powerpc_info,TPPCAIXAssembler);
end.
diff --git a/compiler/ppcgen/cgppc.pas b/compiler/ppcgen/cgppc.pas
index be0e1b6fd5..088346bdca 100644
--- a/compiler/ppcgen/cgppc.pas
+++ b/compiler/ppcgen/cgppc.pas
@@ -56,6 +56,7 @@ unit cgppc;
{ entry code }
procedure g_profilecode(list: TAsmList); override;
+ procedure a_jmp_flags(list: TAsmList; const f: TResFlags; l: tasmlabel); override;
procedure a_jmp_cond(list : TAsmList;cond : TOpCmp;l: tasmlabel);
procedure g_intf_wrapper(list: TAsmList; procdef: tprocdef; const labelname: string; ioffset: longint);override;
@@ -69,6 +70,7 @@ unit cgppc;
procedure get_aix_toc_sym(list: TAsmList; const symname: string; const flags: tindsymflags; out ref: treference; force_direct_toc: boolean);
procedure g_load_check_simple(list: TAsmList; const ref: treference; size: aint);
procedure g_external_wrapper(list: TAsmList; pd: TProcDef; const externalname: string); override;
+ procedure g_flags2reg(list: TAsmList; size: TCgSize; const f: TResFlags; reg: TRegister); override;
protected
function g_indirect_sym_load(list:TAsmList;const symname: string; const flags: tindsymflags): tregister; override;
function get_darwin_call_stub(const s: string; weak: boolean): tasmsymbol;
@@ -672,6 +674,35 @@ unit cgppc;
end;
+ procedure tcgppcgen.a_jmp_flags(list: TAsmList; const f: TResFlags; l: tasmlabel);
+ var
+ c: tasmcond;
+ f2: TResFlags;
+ testbit: longint;
+ begin
+ f2:=f;
+ testbit:=(f.cr-RS_CR0)*4;
+ case f.flag of
+ F_FA:
+ f2.flag:=F_GT;
+ F_FAE:
+ begin
+ list.concat(taicpu.op_const_const_const(A_CROR,testbit+1,testbit+1,testbit+2));
+ f2.flag:=F_GT;
+ end;
+ F_FB:
+ f2.flag:=F_LT;
+ F_FBE:
+ begin
+ list.concat(taicpu.op_const_const_const(A_CROR,testbit,testbit,testbit+2));
+ f2.flag:=F_LT;
+ end;
+ end;
+ c := flags_to_cond(f2);
+ a_jmp(list,A_BC,c.cond,c.cr-RS_CR0,l);
+ end;
+
+
procedure tcgppcgen.a_jmp_cond(list : TAsmList;cond : TOpCmp; l: tasmlabel);
begin
a_jmp(list,A_BC,TOpCmp2AsmCond[cond],0,l);
@@ -1002,6 +1033,71 @@ unit cgppc;
end;
+ procedure tcgppcgen.g_flags2reg(list: TAsmList; size: TCgSize; const f: TResFlags; reg: TRegister);
+ var
+ testbit: byte;
+ bitvalue: boolean;
+ hreg: tregister;
+ needsecondreg: boolean;
+ begin
+ hreg:=NR_NO;
+ needsecondreg:=false;
+ { get the bit to extract from the conditional register + its requested value (0 or 1) }
+ testbit := ((f.cr - RS_CR0) * 4);
+ case f.flag of
+ F_EQ, F_NE:
+ begin
+ inc(testbit, 2);
+ bitvalue := f.flag = F_EQ;
+ end;
+ F_LT, F_GE, F_FB:
+ begin
+ bitvalue := f.flag in [F_LT,F_FB];
+ end;
+ F_GT, F_LE, F_FA:
+ begin
+ inc(testbit);
+ bitvalue := f.flag in [F_GT,F_FA];
+ end;
+ F_FAE:
+ begin
+ inc(testbit);
+ bitvalue:=true;
+ needsecondreg:=true;
+ end;
+ F_FBE:
+ begin
+ bitvalue:=true;
+ needsecondreg:=true;
+ end;
+ else
+ internalerror(200112261);
+ end;
+ { load the conditional register in the destination reg }
+ list.concat(taicpu.op_reg(A_MFCR, reg));
+ { we will move the bit that has to be tested to bit 0 by rotating left }
+ testbit := (testbit + 1) and 31;
+
+ { for floating-point >= and <=, extract equality bit first }
+ if needsecondreg then
+ begin
+ hreg:=getintregister(list,OS_INT);
+ list.concat(taicpu.op_reg_reg_const_const_const(
+ A_RLWINM,hreg,reg,(((f.cr-RS_CR0)*4)+3) and 31,31,31));
+ end;
+
+ { extract bit }
+ list.concat(taicpu.op_reg_reg_const_const_const(
+ A_RLWINM,reg,reg,testbit,31,31));
+
+ if needsecondreg then
+ list.concat(taicpu.op_reg_reg_reg(A_OR,reg,hreg,reg))
+ { if we need the inverse, xor with 1 }
+ else if not bitvalue then
+ list.concat(taicpu.op_reg_reg_const(A_XORI, reg, reg, 1));
+ end;
+
+
function tcgppcgen.fixref(list: TAsmList; var ref: treference): boolean;
var
tmpreg: tregister;
diff --git a/compiler/ppcgen/ngppcadd.pas b/compiler/ppcgen/ngppcadd.pas
index e6b34869b8..784b6f04d5 100644
--- a/compiler/ppcgen/ngppcadd.pas
+++ b/compiler/ppcgen/ngppcadd.pas
@@ -134,28 +134,54 @@ implementation
function tgenppcaddnode.getresflags : tresflags;
begin
if (left.resultdef.typ <> floatdef) then
- result.cr := RS_CR0
- else
- result.cr := RS_CR1;
- case nodetype of
- equaln : result.flag:=F_EQ;
- unequaln : result.flag:=F_NE;
- else
- if nf_swapped in flags then
+ begin
+ result.cr := RS_CR0;
case nodetype of
- ltn : result.flag:=F_GT;
- lten : result.flag:=F_GE;
- gtn : result.flag:=F_LT;
- gten : result.flag:=F_LE;
+ equaln : result.flag:=F_EQ;
+ unequaln : result.flag:=F_NE;
+ else
+ if nf_swapped in flags then
+ case nodetype of
+ ltn : result.flag:=F_GT;
+ lten : result.flag:=F_GE;
+ gtn : result.flag:=F_LT;
+ gten : result.flag:=F_LE;
+ end
+ else
+ case nodetype of
+ ltn : result.flag:=F_LT;
+ lten : result.flag:=F_LE;
+ gtn : result.flag:=F_GT;
+ gten : result.flag:=F_GE;
+ end;
end
- else
- case nodetype of
- ltn : result.flag:=F_LT;
- lten : result.flag:=F_LE;
- gtn : result.flag:=F_GT;
- gten : result.flag:=F_GE;
- end;
- end
+ end
+ else
+ begin
+ result.cr := RS_CR1;
+ if (nodetype=equaln) then
+ result.flag:=F_EQ
+ else if (nodetype=unequaln) then
+ result.flag:=F_NE
+ else if (nf_swapped in flags) then
+ case nodetype of
+ ltn : result.flag:=F_FA;
+ lten : result.flag:=F_FAE;
+ gtn : result.flag:=F_FB;
+ gten : result.flag:=F_FBE;
+ else
+ internalerror(2014031902);
+ end
+ else
+ case nodetype of
+ ltn : result.flag:=F_FB;
+ lten : result.flag:=F_FBE;
+ gtn : result.flag:=F_FA;
+ gten : result.flag:=F_FAE;
+ else
+ internalerror(2014031903);
+ end;
+ end;
end;
@@ -341,8 +367,8 @@ implementation
swapleftright;
// put both operands in a register
- location_force_fpureg(current_asmdata.CurrAsmList,right.location,true);
- location_force_fpureg(current_asmdata.CurrAsmList,left.location,true);
+ hlcg.location_force_fpureg(current_asmdata.CurrAsmList,right.location,right.resultdef,true);
+ hlcg.location_force_fpureg(current_asmdata.CurrAsmList,left.location,left.resultdef,true);
// initialize de result
if not cmpop then
@@ -416,11 +442,18 @@ implementation
setbase:=tsetdef(left.resultdef).setbase
else
setbase:=tsetdef(right.resultdef).setbase;
+ if (nf_swapped in flags) and
+ ((nodetype=subn) or
+ (left.nodetype=setelementn)) then
+ swapleftright;
+ { we don't support two constant locations (should ideally be handled
+ in simplify }
+ if (left.location.loc=LOC_CONSTANT) and
+ (right.location.loc=LOC_CONSTANT) then
+ hlcg.location_force_reg(current_asmdata.CurrAsmList,left.location,left.resultdef,left.resultdef,true);
case nodetype of
addn :
begin
- if (nf_swapped in flags) and (left.nodetype=setelementn) then
- swapleftright;
{ are we adding set elements ? }
if right.nodetype=setelementn then
begin
@@ -457,18 +490,10 @@ implementation
subn :
begin
cgop:=OP_AND;
- if (not(nf_swapped in flags)) then
- if (right.location.loc=LOC_CONSTANT) then
- right.location.value := not(right.location.value)
- else
- opdone := true
- else if (left.location.loc=LOC_CONSTANT) then
- left.location.value := not(left.location.value)
+ if (right.location.loc=LOC_CONSTANT) then
+ right.location.value := not(right.location.value)
else
- begin
- swapleftright;
- opdone := true;
- end;
+ opdone := true;
if opdone then
begin
if left.location.loc = LOC_CONSTANT then
diff --git a/compiler/ppcgen/ngppcinl.pas b/compiler/ppcgen/ngppcinl.pas
index 78b06e5708..0aeb49b761 100644
--- a/compiler/ppcgen/ngppcinl.pas
+++ b/compiler/ppcgen/ngppcinl.pas
@@ -60,7 +60,7 @@ implementation
defutil,
cgbase,pass_2,
cpuinfo,ncgutil,
- cgutils,cgobj,rgobj,tgobj;
+ hlcgobj,cgutils,cgobj,rgobj,tgobj;
{*****************************************************************************
@@ -122,7 +122,7 @@ implementation
begin
location_reset(location,LOC_FPUREGISTER,def_cgsize(resultdef));
secondpass(left);
- location_force_fpureg(current_asmdata.CurrAsmList,left.location,true);
+ hlcg.location_force_fpureg(current_asmdata.CurrAsmList,left.location,left.resultdef,true);
location.loc := LOC_FPUREGISTER;
location.register := cg.getfpuregister(current_asmdata.CurrAsmList,OS_F64);
end;
@@ -178,7 +178,7 @@ implementation
if (current_settings.cputype < cpu_PPC970) then
internalerror(2007020910);
secondpass(left);
- location_force_fpureg(current_asmdata.CurrAsmList,left.location,true);
+ hlcg.location_force_fpureg(current_asmdata.CurrAsmList,left.location,left.resultdef,true);
tmpreg:=cg.getfpuregister(current_asmdata.CurrAsmList,OS_F64);
current_asmdata.CurrAsmList.concat(taicpu.op_reg_reg(op,tmpreg,
left.location.register));
diff --git a/compiler/ppu.pas b/compiler/ppu.pas
index 45f58a017d..4c84509218 100644
--- a/compiler/ppu.pas
+++ b/compiler/ppu.pas
@@ -43,7 +43,7 @@ type
{$endif Test_Double_checksum}
const
- CurrentPPUVersion = 165;
+ CurrentPPUVersion = 169;
{ buffer sizes }
maxentrysize = 1024;
@@ -165,6 +165,7 @@ const
uf_i8086_far_code = $2000000; { this unit uses an i8086 memory model with far code (i.e. medium, large or huge) }
uf_i8086_far_data = $4000000; { this unit uses an i8086 memory model with far data (i.e. compact or large) }
uf_i8086_huge_data = $8000000; { this unit uses an i8086 memory model with huge data (i.e. huge) }
+ uf_i8086_cs_equals_ds = $10000000; { this unit uses an i8086 memory model with CS=DS (i.e. tiny) }
{$ifdef generic_cpu}
{ We need to use the correct size of aint and pint for
diff --git a/compiler/procinfo.pas b/compiler/procinfo.pas
index dc9fb04acd..7682396336 100644
--- a/compiler/procinfo.pas
+++ b/compiler/procinfo.pas
@@ -178,6 +178,8 @@ unit procinfo;
{ Update the resuired alignment for the current stack frame based
on the current value and the new required alignment }
procedure updatestackalignment(alignment: longint);
+ { Specific actions after the code has been generated }
+ procedure postprocess_code; virtual;
end;
tcprocinfo = class of tprocinfo;
@@ -333,4 +335,9 @@ implementation
end;
+ procedure tprocinfo.postprocess_code;
+ begin
+ { no action by default }
+ end;
+
end.
diff --git a/compiler/pstatmnt.pas b/compiler/pstatmnt.pas
index 0b8a43c7b9..8479cef0c9 100644
--- a/compiler/pstatmnt.pas
+++ b/compiler/pstatmnt.pas
@@ -73,7 +73,7 @@ implementation
consume(_IF);
ex:=comp_expr(true,false);
consume(_THEN);
- if token<>_ELSE then
+ if not(token in endtokens) then
if_a:=statement
else
if_a:=nil;
@@ -671,7 +671,7 @@ implementation
if hasimplicitderef then
hdef:=p.resultdef
else
- hdef:=tpointerdef.create(p.resultdef);
+ hdef:=cpointerdef.create(p.resultdef);
{ load address of the value in a temp }
tempnode:=ctempcreatenode.create_withnode(hdef,sizeof(pint),tt_persistent,true,p);
typecheckpass(tnode(tempnode));
@@ -940,7 +940,7 @@ implementation
begin
single_type(ot,[]);
check_type_valid(ot);
- sym:=tlocalvarsym.create(objrealname,vs_value,ot,[]);
+ sym:=clocalvarsym.create(objrealname,vs_value,ot,[]);
end
else
begin
@@ -973,7 +973,7 @@ implementation
{ create dummy symbol so we don't need a special
case in ncgflw, and so that we always know the
type }
- sym:=tlocalvarsym.create('$exceptsym',vs_value,ot,[]);
+ sym:=clocalvarsym.create('$exceptsym',vs_value,ot,[]);
end;
excepTSymtable:=tstt_excepTSymtable.create;
excepTSymtable.insert(sym);
@@ -1452,7 +1452,7 @@ implementation
current_procinfo.framepointer:=NR_STACK_POINTER_REG;
end;
end;
-{$endif not(defined(sparc)) and not(defined(arm)) and not(defined(avr))}
+{$endif not(defined(sparc)) and not(defined(arm)) and not(defined(avr)) not(defined(mipsel))}
{ Flag the result as assigned when it is returned in a
register.
diff --git a/compiler/psub.pas b/compiler/psub.pas
index 47dfd68a35..f2dce13b42 100644
--- a/compiler/psub.pas
+++ b/compiler/psub.pas
@@ -123,9 +123,6 @@ implementation
optloop,
optconstprop,
optdeadstore
-{$if defined(arm) or defined(avr) or defined(fpc_compiler_has_fixup_jmps)}
- ,aasmcpu
-{$endif arm}
{$if defined(arm)}
,cpuinfo
{$endif arm}
@@ -221,7 +218,7 @@ implementation
exit;
with tabstractnormalvarsym(p) do
begin
- if vo_is_default_var in varoptions then
+ if (vo_is_default_var in varoptions) and (vardef.size>0) then
begin
b:=tblocknode(arg);
b.left:=cstatementnode.create(
@@ -468,7 +465,7 @@ implementation
load_self_pointer_node,
voidpointertype),
ccallnode.create(nil,tprocsym(srsym),srsym.owner,
- ctypeconvnode.create_internal(load_self_pointer_node,tclassrefdef.create(current_structdef)),
+ ctypeconvnode.create_internal(load_self_pointer_node,cclassrefdef.create(current_structdef)),
[])),
nil));
end
@@ -1003,7 +1000,7 @@ implementation
not(cs_profile in current_settings.moduleswitches) and
not(po_assembler in procdef.procoptions) and
not ((pi_has_stackparameter in flags)
-{$ifndef arm} { Outgoing parameter(s) on stack do not need stackframe on x86 targets
+{$ifndef arm} { Outgoing parameter(s) on stack do not need stackframe on x86 targets
with fixed stack. On ARM it fails, see bug #25050 }
and (not paramanager.use_fixed_stack)
{$endif arm}
@@ -1025,13 +1022,35 @@ implementation
(necessary to init para_stack_size)
}
generate_parameter_info;
+
if not(procdef.stack_tainting_parameter(calleeside)) and
not(has_assembler_child) and (para_stack_size=0) then
begin
{ Only need to set the framepointer }
framepointer:=NR_STACK_POINTER_REG;
tg.direction:=1;
+ end
+{$if defined(arm)}
+ { On arm, the stack frame size can be estimated to avoid using an extra frame pointer,
+ in case parameters are passed on the stack.
+
+ However, the draw back is, if the estimation fails, compilation will break later on
+ with an internal error, so this switch is not enabled by default yet. To overcome this,
+ multipass compilation of subroutines must be supported
+ }
+ else if (cs_opt_forcenostackframe in current_settings.optimizerswitches) and
+ not(has_assembler_child) then
+ begin
+ { Only need to set the framepointer }
+ framepointer:=NR_STACK_POINTER_REG;
+ tg.direction:=1;
+ include(flags,pi_estimatestacksize);
+ set_first_temp_offset;
+ procdef.has_paraloc_info:=callnoside;
+ generate_parameter_info;
+ exit;
end;
+{$endif defined(arm)}
end;
end;
{$endif defined(x86) or defined(arm)}
@@ -1132,12 +1151,12 @@ implementation
procedure TCGProcinfo.CreateInlineInfo;
begin
new(procdef.inlininginfo);
- include(procdef.procoptions,po_has_inlininginfo);
procdef.inlininginfo^.code:=code.getcopy;
procdef.inlininginfo^.flags:=flags;
{ The blocknode needs to set an exit label }
if procdef.inlininginfo^.code.nodetype=blockn then
include(procdef.inlininginfo^.code.flags,nf_block_with_exit);
+ procdef.has_inlininginfo:=true;
end;
@@ -1222,7 +1241,7 @@ implementation
{ inlining not turned off? }
(cs_do_inline in current_settings.localswitches) and
{ no inlining yet? }
- not(po_has_inlininginfo in procdef.procoptions) and not(has_nestedprocs) and
+ not(procdef.has_inlininginfo) and not(has_nestedprocs) and
not(procdef.proctypeoption in [potype_proginit,potype_unitinit,potype_unitfinalize,potype_constructor,
potype_destructor,potype_class_constructor,potype_class_destructor]) and
((procdef.procoptions*[po_exports,po_external,po_interrupt,po_virtualmethod,po_iocheck])=[]) and
@@ -1268,8 +1287,7 @@ implementation
do_firstpass(code);
{$if defined(i386) or defined(i8086)}
- procdef.fpu_used:=node_resources_fpu(code);
- if procdef.fpu_used>0 then
+ if node_resources_fpu(code)>0 then
include(flags,pi_uses_fpu);
{$endif i386 or i8086}
@@ -1585,17 +1603,8 @@ implementation
end;
{$endif NoOpt}
-
-{$ifdef ARM}
- { because of the limited constant size of the arm, all data access is done pc relative }
- finalizearmcode(aktproccode,aktlocaldata);
-{$endif ARM}
-
-{$ifdef AVR}
- { because of the limited branch distance of cond. branches, they must be replaced
- sometimes by normal jmps and an inverse branch }
- finalizeavrcode(aktproccode);
-{$endif AVR}
+ { Perform target-specific processing if necessary }
+ postprocess_code;
{ Add end symbol and debug info }
{ this must be done after the pcrelativedata is appended else the distance calculation of
@@ -1605,9 +1614,7 @@ implementation
current_filepos:=exitpos;
hlcg.gen_proc_symbol_end(templist);
aktproccode.concatlist(templist);
-{$ifdef fpc_compiler_has_fixup_jmps}
- fixup_jmps(aktproccode);
-{$endif}
+
{ insert line debuginfo }
if (cs_debuginfo in current_settings.moduleswitches) or
(cs_use_lineinfo in current_settings.globalswitches) then
@@ -2063,25 +2070,6 @@ implementation
{ Handle imports }
if (po_external in pd.procoptions) then
begin
- { External declared in implementation, and there was already a
- forward (or interface) declaration then we need to generate
- a stub that calls the external routine }
- if (not pd.forwarddef) and
- (pd.hasforward)
- { it is unclear to me what's the use of the following condition,
- so commented out, see also issue #18371 (FK)
- and
- not(
- assigned(pd.import_dll) and
- (target_info.system in [system_i386_wdosx,
- system_arm_wince,system_i386_wince])
- ) } then
- begin
- s:=proc_get_importname(pd);
- if s<>'' then
- gen_external_stub(current_asmdata.asmlists[al_procedures],pd,s);
- end;
-
{ Import DLL specified? }
if assigned(pd.import_dll) then
begin
@@ -2100,6 +2088,34 @@ implementation
if tf_has_dllscanner in target_info.flags then
current_module.dllscannerinputlist.Add(proc_get_importname(pd),pd);
end;
+
+ { External declared in implementation, and there was already a
+ forward (or interface) declaration then we need to generate
+ a stub that calls the external routine }
+ if (not pd.forwarddef) and
+ (pd.hasforward)
+ { it is unclear to me what's the use of the following condition,
+ so commented out, see also issue #18371 (FK)
+ and
+ not(
+ assigned(pd.import_dll) and
+ (target_info.system in [system_i386_wdosx,
+ system_arm_wince,system_i386_wince])
+ ) } then
+ begin
+ s:=proc_get_importname(pd);
+ if s<>'' then
+ gen_external_stub(current_asmdata.asmlists[al_procedures],pd,s);
+ { remove the external stuff, so that the interface crc
+ doesn't change. This makes the function calls less
+ efficient, but it means that the interface doesn't
+ change if the function is ever redirected to another
+ function or implemented in the unit. }
+ pd.procoptions:=pd.procoptions-[po_external,po_has_importname,po_has_importdll];
+ stringdispose(pd.import_name);
+ stringdispose(pd.import_dll);
+ pd.import_nr:=0;
+ end;
end;
end;
@@ -2198,7 +2214,14 @@ implementation
Message(parser_w_unsupported_feature);
consume(_BEGIN);
end;
- end
+ end;
+ _PROPERTY:
+ begin
+ if (m_fpc in current_settings.modeswitches) then
+ property_dec
+ else
+ break;
+ end;
else
begin
case idtoken of
@@ -2221,13 +2244,6 @@ implementation
else
break;
end;
- _PROPERTY:
- begin
- if (m_fpc in current_settings.modeswitches) then
- property_dec
- else
- break;
- end;
else
break;
end;
diff --git a/compiler/psystem.pas b/compiler/psystem.pas
index b9473996bf..e1ca895805 100644
--- a/compiler/psystem.pas
+++ b/compiler/psystem.pas
@@ -42,7 +42,7 @@ implementation
uses
globals,globtype,verbose,constexp,cpuinfo,
systems,
- symconst,symtype,symsym,symdef,symtable,
+ symconst,symtype,symsym,symdef,symcpu,symtable,
aasmtai,aasmdata,aasmcpu,
ncgutil,ncgrtti,fmodule,
node,nbas,nflw,nset,ncon,ncnv,nld,nmem,ncal,nmat,nadd,ninl,nopt
@@ -54,58 +54,58 @@ implementation
all intern procedures for the system unit
}
begin
- systemunit.insert(tsyssym.create('Concat',in_concat_x));
- systemunit.insert(tsyssym.create('Write',in_write_x));
- systemunit.insert(tsyssym.create('WriteLn',in_writeln_x));
- systemunit.insert(tsyssym.create('WriteStr',in_writestr_x));
- systemunit.insert(tsyssym.create('Assigned',in_assigned_x));
- systemunit.insert(tsyssym.create('Read',in_read_x));
- systemunit.insert(tsyssym.create('ReadLn',in_readln_x));
- systemunit.insert(tsyssym.create('ReadStr',in_readstr_x));
- systemunit.insert(tsyssym.create('Ofs',in_ofs_x));
- systemunit.insert(tsyssym.create('SizeOf',in_sizeof_x));
- systemunit.insert(tsyssym.create('BitSizeOf',in_bitsizeof_x));
- systemunit.insert(tsyssym.create('TypeOf',in_typeof_x));
- systemunit.insert(tsyssym.create('Low',in_low_x));
- systemunit.insert(tsyssym.create('High',in_high_x));
- systemunit.insert(tsyssym.create('Slice',in_slice_x));
- systemunit.insert(tsyssym.create('Seg',in_seg_x));
- systemunit.insert(tsyssym.create('Ord',in_ord_x));
- systemunit.insert(tsyssym.create('Pred',in_pred_x));
- systemunit.insert(tsyssym.create('Succ',in_succ_x));
- systemunit.insert(tsyssym.create('Exclude',in_exclude_x_y));
- systemunit.insert(tsyssym.create('Include',in_include_x_y));
- systemunit.insert(tsyssym.create('Pack',in_pack_x_y_z));
- systemunit.insert(tsyssym.create('Unpack',in_unpack_x_y_z));
- systemunit.insert(tsyssym.create('Break',in_break));
- systemunit.insert(tsyssym.create('Exit',in_exit));
- systemunit.insert(tsyssym.create('Continue',in_continue));
- systemunit.insert(tsyssym.create('Leave',in_leave)); {macpas only}
- systemunit.insert(tsyssym.create('Cycle',in_cycle)); {macpas only}
- systemunit.insert(tsyssym.create('Dec',in_dec_x));
- systemunit.insert(tsyssym.create('Inc',in_inc_x));
- systemunit.insert(tsyssym.create('Str',in_str_x_string));
- systemunit.insert(tsyssym.create('Assert',in_assert_x_y));
- systemunit.insert(tsyssym.create('Val',in_val_x));
- systemunit.insert(tsyssym.create('Addr',in_addr_x));
- systemunit.insert(tsyssym.create('TypeInfo',in_typeinfo_x));
- systemunit.insert(tsyssym.create('SetLength',in_setlength_x));
- systemunit.insert(tsyssym.create('Copy',in_copy_x));
- systemunit.insert(tsyssym.create('Initialize',in_initialize_x));
- systemunit.insert(tsyssym.create('Finalize',in_finalize_x));
- systemunit.insert(tsyssym.create('Length',in_length_x));
- systemunit.insert(tsyssym.create('New',in_new_x));
- systemunit.insert(tsyssym.create('Dispose',in_dispose_x));
+ systemunit.insert(csyssym.create('Concat',in_concat_x));
+ systemunit.insert(csyssym.create('Write',in_write_x));
+ systemunit.insert(csyssym.create('WriteLn',in_writeln_x));
+ systemunit.insert(csyssym.create('WriteStr',in_writestr_x));
+ systemunit.insert(csyssym.create('Assigned',in_assigned_x));
+ systemunit.insert(csyssym.create('Read',in_read_x));
+ systemunit.insert(csyssym.create('ReadLn',in_readln_x));
+ systemunit.insert(csyssym.create('ReadStr',in_readstr_x));
+ systemunit.insert(csyssym.create('Ofs',in_ofs_x));
+ systemunit.insert(csyssym.create('SizeOf',in_sizeof_x));
+ systemunit.insert(csyssym.create('BitSizeOf',in_bitsizeof_x));
+ systemunit.insert(csyssym.create('TypeOf',in_typeof_x));
+ systemunit.insert(csyssym.create('Low',in_low_x));
+ systemunit.insert(csyssym.create('High',in_high_x));
+ systemunit.insert(csyssym.create('Slice',in_slice_x));
+ systemunit.insert(csyssym.create('Seg',in_seg_x));
+ systemunit.insert(csyssym.create('Ord',in_ord_x));
+ systemunit.insert(csyssym.create('Pred',in_pred_x));
+ systemunit.insert(csyssym.create('Succ',in_succ_x));
+ systemunit.insert(csyssym.create('Exclude',in_exclude_x_y));
+ systemunit.insert(csyssym.create('Include',in_include_x_y));
+ systemunit.insert(csyssym.create('Pack',in_pack_x_y_z));
+ systemunit.insert(csyssym.create('Unpack',in_unpack_x_y_z));
+ systemunit.insert(csyssym.create('Break',in_break));
+ systemunit.insert(csyssym.create('Exit',in_exit));
+ systemunit.insert(csyssym.create('Continue',in_continue));
+ systemunit.insert(csyssym.create('Leave',in_leave)); {macpas only}
+ systemunit.insert(csyssym.create('Cycle',in_cycle)); {macpas only}
+ systemunit.insert(csyssym.create('Dec',in_dec_x));
+ systemunit.insert(csyssym.create('Inc',in_inc_x));
+ systemunit.insert(csyssym.create('Str',in_str_x_string));
+ systemunit.insert(csyssym.create('Assert',in_assert_x_y));
+ systemunit.insert(csyssym.create('Val',in_val_x));
+ systemunit.insert(csyssym.create('Addr',in_addr_x));
+ systemunit.insert(csyssym.create('TypeInfo',in_typeinfo_x));
+ systemunit.insert(csyssym.create('SetLength',in_setlength_x));
+ systemunit.insert(csyssym.create('Copy',in_copy_x));
+ systemunit.insert(csyssym.create('Initialize',in_initialize_x));
+ systemunit.insert(csyssym.create('Finalize',in_finalize_x));
+ systemunit.insert(csyssym.create('Length',in_length_x));
+ systemunit.insert(csyssym.create('New',in_new_x));
+ systemunit.insert(csyssym.create('Dispose',in_dispose_x));
{$ifdef SUPPORT_GET_FRAME}
- systemunit.insert(tsyssym.create('Get_Frame',in_get_frame));
+ systemunit.insert(csyssym.create('Get_Frame',in_get_frame));
{$endif SUPPORT_GET_FRAME}
- systemunit.insert(tsyssym.create('Unaligned',in_unaligned_x));
- systemunit.insert(tsyssym.create('Aligned',in_aligned_x));
- systemunit.insert(tsyssym.create('ObjCSelector',in_objc_selector_x)); { objc only }
- systemunit.insert(tsyssym.create('ObjCEncode',in_objc_encode_x)); { objc only }
- systemunit.insert(tsyssym.create('Default',in_default_x));
- systemunit.insert(tconstsym.create_ord('False',constord,0,pasbool8type));
- systemunit.insert(tconstsym.create_ord('True',constord,1,pasbool8type));
+ systemunit.insert(csyssym.create('Unaligned',in_unaligned_x));
+ systemunit.insert(csyssym.create('Aligned',in_aligned_x));
+ systemunit.insert(csyssym.create('ObjCSelector',in_objc_selector_x)); { objc only }
+ systemunit.insert(csyssym.create('ObjCEncode',in_objc_encode_x)); { objc only }
+ systemunit.insert(csyssym.create('Default',in_default_x));
+ systemunit.insert(cconstsym.create_ord('False',constord,0,pasbool8type));
+ systemunit.insert(cconstsym.create_ord('True',constord,1,pasbool8type));
end;
@@ -149,6 +149,21 @@ implementation
{$endif avr}
end;
+
+ procedure set_default_ptr_types;
+ begin
+{$ifdef i8086}
+ if current_settings.x86memorymodel in x86_far_code_models then
+ voidcodepointertype:=voidfarpointertype
+ else
+ voidcodepointertype:=voidnearpointertype;
+ voidstackpointertype:=voidnearsspointertype;
+{$else i8086}
+ voidcodepointertype:=voidpointertype;
+ voidstackpointertype:=voidpointertype;
+{$endif i8086}
+ end;
+
procedure create_intern_types;
{
all the types inserted into the system unit
@@ -156,7 +171,7 @@ implementation
function addtype(const s:string;def:tdef):ttypesym;
begin
- result:=ttypesym.create(s,def);
+ result:=ctypesym.create(s,def);
systemunit.insert(result);
end;
@@ -170,10 +185,10 @@ implementation
begin
if init_settings.fputype<>fpu_none then
begin
- s32floattype:=tfloatdef.create(s32real);
- s64floattype:=tfloatdef.create(s64real);
- s80floattype:=tfloatdef.create(s80real);
- sc80floattype:=tfloatdef.create(sc80real);
+ s32floattype:=cfloatdef.create(s32real);
+ s64floattype:=cfloatdef.create(s64real);
+ s80floattype:=cfloatdef.create(s80real);
+ sc80floattype:=cfloatdef.create(sc80real);
end else begin
s32floattype:=nil;
s64floattype:=nil;
@@ -186,117 +201,120 @@ implementation
hrecst : trecordsymtable;
begin
symtablestack.push(systemunit);
- cundefinedtype:=tundefineddef.create;
- cformaltype:=tformaldef.create(false);
- ctypedformaltype:=tformaldef.create(true);
- voidtype:=torddef.create(uvoid,0,0);
- voidpointertype:=tpointerdef.create(voidtype);
- u8inttype:=torddef.create(u8bit,0,255);
- s8inttype:=torddef.create(s8bit,int64(-128),127);
- u16inttype:=torddef.create(u16bit,0,65535);
- s16inttype:=torddef.create(s16bit,int64(-32768),32767);
- u32inttype:=torddef.create(u32bit,0,high(longword));
- s32inttype:=torddef.create(s32bit,int64(low(longint)),int64(high(longint)));
- u64inttype:=torddef.create(u64bit,low(qword),high(qword));
- s64inttype:=torddef.create(s64bit,low(int64),high(int64));
- pasbool8type:=torddef.create(pasbool8,0,1);
- pasbool16type:=torddef.create(pasbool16,0,1);
- pasbool32type:=torddef.create(pasbool32,0,1);
- pasbool64type:=torddef.create(pasbool64,0,1);
- bool8type:=torddef.create(bool8bit,low(int64),high(int64));
- bool16type:=torddef.create(bool16bit,low(int64),high(int64));
- bool32type:=torddef.create(bool32bit,low(int64),high(int64));
- bool64type:=torddef.create(bool64bit,low(int64),high(int64));
- cansichartype:=torddef.create(uchar,0,255);
- cwidechartype:=torddef.create(uwidechar,0,65535);
- cshortstringtype:=tstringdef.createshort(255);
+ cundefinedtype:=cundefineddef.create;
+ cformaltype:=cformaldef.create(false);
+ ctypedformaltype:=cformaldef.create(true);
+ voidtype:=corddef.create(uvoid,0,0);
+ voidpointertype:=cpointerdef.create(voidtype);
+ u8inttype:=corddef.create(u8bit,0,255);
+ s8inttype:=corddef.create(s8bit,int64(-128),127);
+ u16inttype:=corddef.create(u16bit,0,65535);
+ s16inttype:=corddef.create(s16bit,int64(-32768),32767);
+ u32inttype:=corddef.create(u32bit,0,high(longword));
+ s32inttype:=corddef.create(s32bit,int64(low(longint)),int64(high(longint)));
+ u64inttype:=corddef.create(u64bit,low(qword),high(qword));
+ s64inttype:=corddef.create(s64bit,low(int64),high(int64));
+ pasbool8type:=corddef.create(pasbool8,0,1);
+ pasbool16type:=corddef.create(pasbool16,0,1);
+ pasbool32type:=corddef.create(pasbool32,0,1);
+ pasbool64type:=corddef.create(pasbool64,0,1);
+ bool8type:=corddef.create(bool8bit,low(int64),high(int64));
+ bool16type:=corddef.create(bool16bit,low(int64),high(int64));
+ bool32type:=corddef.create(bool32bit,low(int64),high(int64));
+ bool64type:=corddef.create(bool64bit,low(int64),high(int64));
+ cansichartype:=corddef.create(uchar,0,255);
+ cwidechartype:=corddef.create(uwidechar,0,65535);
+ cshortstringtype:=cstringdef.createshort(255);
{ should we give a length to the default long and ansi string definition ?? }
- clongstringtype:=tstringdef.createlong(-1);
- cansistringtype:=tstringdef.createansi(0);
+ clongstringtype:=cstringdef.createlong(-1);
+ cansistringtype:=cstringdef.createansi(0);
if target_info.system in systems_windows then
- cwidestringtype:=tstringdef.createwide
+ cwidestringtype:=cstringdef.createwide
else
- cwidestringtype:=tstringdef.createunicode;
- cunicodestringtype:=tstringdef.createunicode;
+ cwidestringtype:=cstringdef.createunicode;
+ cunicodestringtype:=cstringdef.createunicode;
{ length=0 for shortstring is open string (needed for readln(string) }
- openshortstringtype:=tstringdef.createshort(0);
- openchararraytype:=tarraydef.create(0,-1,s32inttype);
+ openshortstringtype:=cstringdef.createshort(0);
+ openchararraytype:=carraydef.create(0,-1,s32inttype);
tarraydef(openchararraytype).elementdef:=cansichartype;
{$ifdef x86}
create_fpu_types;
{$ifndef FPC_SUPPORT_X87_TYPES_ON_WIN64}
if target_info.system=system_x86_64_win64 then
begin
- s64currencytype:=torddef.create(scurrency,low(int64),high(int64));
+ s64currencytype:=corddef.create(scurrency,low(int64),high(int64));
pbestrealtype:=@s64floattype;
end
else
{$endif FPC_SUPPORT_X87_TYPES_ON_WIN64}
- s64currencytype:=tfloatdef.create(s64currency);
+ s64currencytype:=cfloatdef.create(s64currency);
{$endif x86}
{$ifdef powerpc}
create_fpu_types;
- s64currencytype:=torddef.create(scurrency,low(int64),high(int64));
+ s64currencytype:=corddef.create(scurrency,low(int64),high(int64));
{$endif powerpc}
{$ifdef POWERPC64}
create_fpu_types;
- s64currencytype:=torddef.create(scurrency,low(int64),high(int64));
+ s64currencytype:=corddef.create(scurrency,low(int64),high(int64));
{$endif POWERPC64}
{$ifdef sparc}
create_fpu_types;
- s64currencytype:=torddef.create(scurrency,low(int64),high(int64));
+ s64currencytype:=corddef.create(scurrency,low(int64),high(int64));
{$endif sparc}
{$ifdef m68k}
create_fpu_types;
- s64currencytype:=torddef.create(scurrency,low(int64),high(int64));
+ s64currencytype:=corddef.create(scurrency,low(int64),high(int64));
{$endif}
{$ifdef arm}
create_fpu_types;
- s64currencytype:=torddef.create(scurrency,low(int64),high(int64));
+ s64currencytype:=corddef.create(scurrency,low(int64),high(int64));
{$endif arm}
{$ifdef avr}
- s32floattype:=tfloatdef.create(s32real);
- s64floattype:=tfloatdef.create(s64real);
- s80floattype:=tfloatdef.create(s80real);
- sc80floattype:=tfloatdef.create(sc80real);
- s64currencytype:=torddef.create(scurrency,low(int64),high(int64));
+ s32floattype:=cfloatdef.create(s32real);
+ s64floattype:=cfloatdef.create(s64real);
+ s80floattype:=cfloatdef.create(s80real);
+ sc80floattype:=cfloatdef.create(sc80real);
+ s64currencytype:=corddef.create(scurrency,low(int64),high(int64));
{$endif avr}
{$ifdef mips}
create_fpu_types;
- s64currencytype:=torddef.create(scurrency,low(int64),high(int64));
+ s64currencytype:=corddef.create(scurrency,low(int64),high(int64));
{$endif mips}
{$ifdef jvm}
create_fpu_types;
- s64currencytype:=torddef.create(scurrency,low(int64),high(int64));
+ s64currencytype:=corddef.create(scurrency,low(int64),high(int64));
{$endif jvm}
set_default_int_types;
{ some other definitions }
- charpointertype:=tpointerdef.create(cansichartype);
- widecharpointertype:=tpointerdef.create(cwidechartype);
+ charpointertype:=cpointerdef.create(cansichartype);
+ widecharpointertype:=cpointerdef.create(cwidechartype);
{$ifdef i8086}
- parentfpvoidpointertype:=tpointerdef.createx86(voidtype,x86pt_near);
+ parentfpvoidpointertype:=tcpupointerdefclass(cpointerdef).createx86(voidtype,x86pt_near_ss);
{$else i8086}
- parentfpvoidpointertype:=tpointerdef.create(voidtype);
+ parentfpvoidpointertype:=cpointerdef.create(voidtype);
{$endif i8086}
{$ifdef x86}
- voidnearpointertype:=tpointerdef.createx86(voidtype,x86pt_near);
- voidnearcspointertype:=tpointerdef.createx86(voidtype,x86pt_near_cs);
- voidneardspointertype:=tpointerdef.createx86(voidtype,x86pt_near_ds);
- voidnearsspointertype:=tpointerdef.createx86(voidtype,x86pt_near_ss);
- voidnearespointertype:=tpointerdef.createx86(voidtype,x86pt_near_es);
- voidnearfspointertype:=tpointerdef.createx86(voidtype,x86pt_near_fs);
- voidneargspointertype:=tpointerdef.createx86(voidtype,x86pt_near_gs);
+ voidnearpointertype:=tcpupointerdefclass(cpointerdef).createx86(voidtype,x86pt_near);
+ voidnearcspointertype:=tcpupointerdefclass(cpointerdef).createx86(voidtype,x86pt_near_cs);
+ voidneardspointertype:=tcpupointerdefclass(cpointerdef).createx86(voidtype,x86pt_near_ds);
+ voidnearsspointertype:=tcpupointerdefclass(cpointerdef).createx86(voidtype,x86pt_near_ss);
+ voidnearespointertype:=tcpupointerdefclass(cpointerdef).createx86(voidtype,x86pt_near_es);
+ voidnearfspointertype:=tcpupointerdefclass(cpointerdef).createx86(voidtype,x86pt_near_fs);
+ voidneargspointertype:=tcpupointerdefclass(cpointerdef).createx86(voidtype,x86pt_near_gs);
{$ifdef i8086}
- voidfarpointertype:=tpointerdef.createx86(voidtype,x86pt_far);
- voidhugepointertype:=tpointerdef.createx86(voidtype,x86pt_huge);
- bytefarpointertype:=tpointerdef.createx86(u8inttype,x86pt_far);
- wordfarpointertype:=tpointerdef.createx86(u16inttype,x86pt_far);
- longintfarpointertype:=tpointerdef.createx86(s32inttype,x86pt_far);
+ voidfarpointertype:=tcpupointerdefclass(cpointerdef).createx86(voidtype,x86pt_far);
+ voidhugepointertype:=tcpupointerdefclass(cpointerdef).createx86(voidtype,x86pt_huge);
+ charnearpointertype:=tcpupointerdefclass(cpointerdef).createx86(cansichartype,x86pt_near);
+ charfarpointertype:=tcpupointerdefclass(cpointerdef).createx86(cansichartype,x86pt_far);
+ bytefarpointertype:=tcpupointerdefclass(cpointerdef).createx86(u8inttype,x86pt_far);
+ wordfarpointertype:=tcpupointerdefclass(cpointerdef).createx86(u16inttype,x86pt_far);
+ longintfarpointertype:=tcpupointerdefclass(cpointerdef).createx86(s32inttype,x86pt_far);
{$endif i8086}
{$endif x86}
- cfiletype:=tfiledef.createuntyped;
- cvarianttype:=tvariantdef.create(vt_normalvariant);
- colevarianttype:=tvariantdef.create(vt_olevariant);
+ set_default_ptr_types;
+ cfiletype:=cfiledef.createuntyped;
+ cvarianttype:=cvariantdef.create(vt_normalvariant);
+ colevarianttype:=cvariantdef.create(vt_olevariant);
{$ifdef cpufpemu}
{ Normal types }
@@ -335,7 +353,7 @@ implementation
{$ifndef FPC_SUPPORT_X87_TYPES_ON_WIN64}
if target_info.system<>system_x86_64_win64 then
{$endif FPC_SUPPORT_X87_TYPES_ON_WIN64}
- addtype('Comp',tfloatdef.create(s64comp));
+ addtype('Comp',cfloatdef.create(s64comp));
{$endif x86}
addtype('Currency',s64currencytype);
addtype('Pointer',voidpointertype);
@@ -379,8 +397,8 @@ implementation
addtype('Int64',s64inttype);
addtype('Char',cansichartype);
addtype('WideChar',cwidechartype);
- addtype('Text',tfiledef.createtext);
- addtype('TypedFile',tfiledef.createtyped(voidtype));
+ addtype('Text',cfiledef.createtext);
+ addtype('TypedFile',cfiledef.createtyped(voidtype));
addtype('Variant',cvarianttype);
addtype('OleVariant',colevarianttype);
{ Internal types }
@@ -427,6 +445,8 @@ implementation
{$ifdef i8086}
addtype('$void_farpointer',voidfarpointertype);
addtype('$void_hugepointer',voidhugepointertype);
+ addtype('$char_nearpointer',charnearpointertype);
+ addtype('$char_farpointer',charfarpointertype);
addtype('$byte_farpointer',bytefarpointertype);
addtype('$word_farpointer',wordfarpointertype);
addtype('$longint_farpointer',longintfarpointertype);
@@ -448,40 +468,33 @@ implementation
begin
{ Add a type for virtual method tables }
hrecst:=trecordsymtable.create('',current_settings.packrecords);
- vmttype:=trecorddef.create('',hrecst);
- pvmttype:=tpointerdef.create(vmttype);
+ vmttype:=crecorddef.create('',hrecst);
+ pvmttype:=cpointerdef.create(vmttype);
{ can't use addtype for pvmt because the rtti of the pointed
type is not available. The rtti for pvmt will be written implicitly
by thev tblarray below }
- systemunit.insert(ttypesym.create('$pvmt',pvmttype));
- addfield(hrecst,tfieldvarsym.create('$length',vs_value,ptrsinttype,[]));
- addfield(hrecst,tfieldvarsym.create('$mlength',vs_value,ptrsinttype,[]));
- addfield(hrecst,tfieldvarsym.create('$parent',vs_value,pvmttype,[]));
+ systemunit.insert(ctypesym.create('$pvmt',pvmttype));
+ addfield(hrecst,cfieldvarsym.create('$length',vs_value,ptrsinttype,[]));
+ addfield(hrecst,cfieldvarsym.create('$mlength',vs_value,ptrsinttype,[]));
+ addfield(hrecst,cfieldvarsym.create('$parent',vs_value,pvmttype,[]));
{ it seems vmttype is used both for TP objects and Delphi classes,
so the next entry could either be the first virtual method (vm1)
(object) or the class name (class). We can't easily create separate
vtable formats for both, as gdb is hard coded to search for
__vtbl_ptr_type in all cases (JM) }
- addfield(hrecst,tfieldvarsym.create('$vm1_or_classname',vs_value,tpointerdef.create(cshortstringtype),[]));
- vmtarraytype:=tarraydef.create(0,0,s32inttype);
+ addfield(hrecst,cfieldvarsym.create('$vm1_or_classname',vs_value,cpointerdef.create(cshortstringtype),[]));
+ vmtarraytype:=carraydef.create(0,0,s32inttype);
tarraydef(vmtarraytype).elementdef:=voidpointertype;
- addfield(hrecst,tfieldvarsym.create('$__pfn',vs_value,vmtarraytype,[]));
+ addfield(hrecst,cfieldvarsym.create('$__pfn',vs_value,vmtarraytype,[]));
addtype('$__vtbl_ptr_type',vmttype);
- vmtarraytype:=tarraydef.create(0,1,s32inttype);
+ vmtarraytype:=carraydef.create(0,1,s32inttype);
tarraydef(vmtarraytype).elementdef:=pvmttype;
addtype('$vtblarray',vmtarraytype);
{ Add a type for methodpointers }
hrecst:=trecordsymtable.create('',1);
-{$ifdef i8086}
- if current_settings.x86memorymodel in x86_far_code_models then
- addfield(hrecst,tfieldvarsym.create('$proc',vs_value,voidfarpointertype,[]))
- else
- addfield(hrecst,tfieldvarsym.create('$proc',vs_value,voidnearpointertype,[]));
-{$else i8086}
- addfield(hrecst,tfieldvarsym.create('$proc',vs_value,voidpointertype,[]));
-{$endif i8086}
- addfield(hrecst,tfieldvarsym.create('$self',vs_value,voidpointertype,[]));
- methodpointertype:=trecorddef.create('',hrecst);
+ addfield(hrecst,cfieldvarsym.create('$proc',vs_value,voidcodepointertype,[]));
+ addfield(hrecst,cfieldvarsym.create('$self',vs_value,voidpointertype,[]));
+ methodpointertype:=crecorddef.create('',hrecst);
addtype('$methodpointer',methodpointertype);
end;
symtablestack.pop(systemunit);
@@ -563,6 +576,8 @@ implementation
{$ifdef i8086}
loadtype('void_farpointer',voidfarpointertype);
loadtype('void_hugepointer',voidhugepointertype);
+ loadtype('char_nearpointer',charnearpointertype);
+ loadtype('char_farpointer',charfarpointertype);
loadtype('byte_farpointer',bytefarpointertype);
loadtype('word_farpointer',wordfarpointertype);
loadtype('longint_farpointer',longintfarpointertype);
@@ -580,6 +595,7 @@ implementation
loadtype('methodpointer',methodpointertype);
loadtype('HRESULT',hresultdef);
set_default_int_types;
+ set_default_ptr_types;
set_current_module(oldcurrentmodule);
end;
diff --git a/compiler/ptype.pas b/compiler/ptype.pas
index fa74138d43..2b60dd6bf4 100644
--- a/compiler/ptype.pas
+++ b/compiler/ptype.pas
@@ -300,7 +300,7 @@ implementation
{ to a appropriating tdef, s gets the name of }
{ the type to allow name mangling }
var
- is_unit_specific : boolean;
+ is_unit_specific,not_a_type : boolean;
pos : tfileposinfo;
s,sorg : TIDString;
t : ttoken;
@@ -316,10 +316,21 @@ implementation
try_parse_structdef_nested_type(def,current_structdef,isforwarddef) then
exit;
{ Use the special searchsym_type that search only types }
- searchsym_type(s,srsym,srsymtable);
+ if not searchsym_type(s,srsym,srsymtable) then
+ { for a good error message we need to know whether the symbol really did not exist or
+ whether we found a non-type one }
+ not_a_type:=searchsym(s,srsym,srsymtable)
+ else
+ not_a_type:=false;
{ handle unit specification like System.Writeln }
is_unit_specific:=try_consume_unitsym(srsym,srsymtable,t,true);
consume(t);
+ if not_a_type then
+ begin
+ { reset the symbol and symtable to not leak any unexpected values }
+ srsym:=nil;
+ srsymtable:=nil;
+ end;
{ Types are first defined with an error def before assigning
the real type so check if it's an errordef. if so then
give an error. Only check for typesyms in the current symbol
@@ -339,18 +350,18 @@ implementation
if isforwarddef and
not(is_unit_specific) then
begin
- def:=tforwarddef.create(sorg,pos);
+ def:=cforwarddef.create(sorg,pos);
exit;
end;
{ unknown sym ? }
- if not assigned(srsym) then
+ if not assigned(srsym) and not not_a_type then
begin
Message1(sym_e_id_not_found,sorg);
def:=generrordef;
exit;
end;
{ type sym ? }
- if (srsym.typ<>typesym) then
+ if not_a_type or (srsym.typ<>typesym) then
begin
Message(type_e_type_id_expected);
def:=generrordef;
@@ -408,7 +419,7 @@ implementation
single_type(t2,[stoAllowTypeDef]);
if is_managed_type(t2) then
Message(parser_e_no_refcounted_typed_file);
- def:=tfiledef.createtyped(t2);
+ def:=cfiledef.createtyped(t2);
end
else
def:=cfiletype;
@@ -820,14 +831,14 @@ implementation
recst:=trecordsymtable.create(n,current_settings.packrecords);
{ can't use recst.realname^ instead of n, because recst.realname is
nil in case of an empty name }
- current_structdef:=trecorddef.create(n,recst);
+ current_structdef:=crecorddef.create(n,recst);
end
else
begin
{ for the JVM target records always need a name, because they are
represented by a class }
recst:=trecordsymtable.create(current_module.realmodulename^+'__fpc_intern_recname_'+tostr(current_module.deflist.count),current_settings.packrecords);
- current_structdef:=trecorddef.create(recst.name^,recst);
+ current_structdef:=crecorddef.create(recst.name^,recst);
end;
result:=current_structdef;
{ insert in symtablestack }
@@ -956,18 +967,18 @@ implementation
{ All checks passed, create the new def }
case pt1.resultdef.typ of
enumdef :
- def:=tenumdef.create_subrange(tenumdef(pt1.resultdef),lv.svalue,hv.svalue);
+ def:=cenumdef.create_subrange(tenumdef(pt1.resultdef),lv.svalue,hv.svalue);
orddef :
begin
if is_char(pt1.resultdef) then
- def:=torddef.create(uchar,lv,hv)
+ def:=corddef.create(uchar,lv,hv)
else
if is_boolean(pt1.resultdef) then
- def:=torddef.create(pasbool8,lv,hv)
+ def:=corddef.create(pasbool8,lv,hv)
else if is_signed(pt1.resultdef) then
- def:=torddef.create(range_to_basetype(lv,hv),lv,hv)
+ def:=corddef.create(range_to_basetype(lv,hv),lv,hv)
else
- def:=torddef.create(range_to_basetype(lv,hv),lv,hv);
+ def:=corddef.create(range_to_basetype(lv,hv),lv,hv);
end;
end;
end;
@@ -1109,8 +1120,8 @@ implementation
enumdef :
if (tenumdef(tt2).min>=0) and
(tenumdef(tt2).max<=255) then
- // !! def:=tsetdef.create(tt2,tenumdef(tt2.def).min,tenumdef(tt2.def).max))
- def:=tsetdef.create(tt2,tenumdef(tt2).min,tenumdef(tt2).max)
+ // !! def:=csetdef.create(tt2,tenumdef(tt2.def).min,tenumdef(tt2.def).max))
+ def:=csetdef.create(tt2,tenumdef(tt2).min,tenumdef(tt2).max)
else
Message(sym_e_ill_type_decl_set);
orddef :
@@ -1118,11 +1129,11 @@ implementation
if (torddef(tt2).ordtype<>uvoid) and
(torddef(tt2).ordtype<>uwidechar) and
(torddef(tt2).low>=0) then
- // !! def:=tsetdef.create(tt2,torddef(tt2.def).low,torddef(tt2.def).high))
+ // !! def:=csetdef.create(tt2,torddef(tt2.def).low,torddef(tt2.def).high))
if Torddef(tt2).high>int64(high(byte)) then
message(sym_e_ill_type_decl_set)
else
- def:=tsetdef.create(tt2,torddef(tt2).low.svalue,torddef(tt2).high.svalue)
+ def:=csetdef.create(tt2,torddef(tt2).low.svalue,torddef(tt2).high.svalue)
else
Message(sym_e_ill_type_decl_set);
end;
@@ -1195,7 +1206,7 @@ implementation
current_genericdef:=nil;
current_specializedef:=nil;
first:=true;
- arrdef:=tarraydef.create(0,0,s32inttype);
+ arrdef:=carraydef.create(0,0,s32inttype);
consume(_ARRAY);
{ usage of specialized type inside its generic template }
@@ -1275,7 +1286,10 @@ implementation
end
else
if not parse_generic then
- Message(type_e_cant_eval_constant_expr);
+ Message(type_e_cant_eval_constant_expr)
+ else
+ { we need a valid range for debug information }
+ range_to_type(lowval,highval,indexdef);
end
else
Message(sym_e_error_in_type_def)
@@ -1287,7 +1301,7 @@ implementation
as element of the existing array, otherwise modify the existing array }
if not(first) then
begin
- arrdef.elementdef:=tarraydef.create(lowval.svalue,highval.svalue,indexdef);
+ arrdef.elementdef:=carraydef.create(lowval.svalue,highval.svalue,indexdef);
{ push new symtable }
symtablestack.pop(arrdef.symtable);
arrdef:=tarraydef(arrdef.elementdef);
@@ -1357,7 +1371,7 @@ implementation
is_func:=(token=_FUNCTION);
consume(token);
- pd:=tprocvardef.create(normal_function_level);
+ pd:=cprocvardef.create(normal_function_level);
{ usage of specialized type inside its generic template }
if assigned(genericdef) then
@@ -1406,7 +1420,7 @@ implementation
begin
if check_proc_directive(true) then
begin
- newtype:=ttypesym.create('unnamed',result);
+ newtype:=ctypesym.create('unnamed',result);
parse_var_proc_directives(tsym(newtype));
newtype.typedef:=nil;
result.typesym:=nil;
@@ -1470,7 +1484,7 @@ implementation
break;
end;
if not is_specialize then
- aktenumdef:=tenumdef.create
+ aktenumdef:=cenumdef.create
else
aktenumdef:=nil;
repeat
@@ -1532,9 +1546,9 @@ implementation
begin
storepos:=current_tokenpos;
current_tokenpos:=defpos;
- tenumsymtable(aktenumdef.symtable).insert(tenumsym.create(s,aktenumdef,longint(l.svalue)));
+ tenumsymtable(aktenumdef.symtable).insert(cenumsym.create(s,aktenumdef,longint(l.svalue)));
if not (cs_scopedenums in current_settings.localswitches) then
- tstoredsymtable(aktenumdef.owner).insert(tenumsym.create(s,aktenumdef,longint(l.svalue)));
+ tstoredsymtable(aktenumdef.owner).insert(cenumsym.create(s,aktenumdef,longint(l.svalue)));
current_tokenpos:=storepos;
end;
until not try_to_consume(_COMMA);
@@ -1576,7 +1590,7 @@ implementation
end;
{ don't use getpointerdef() here, since this is a type
declaration (-> must create new typedef) }
- def:=tpointerdef.create(tt2);
+ def:=cpointerdef.create(tt2);
if tt2.typ=forwarddef then
current_module.checkforwarddefs.add(def);
end;
@@ -1655,11 +1669,11 @@ implementation
if is_class(hdef) or
is_objcclass(hdef) or
is_javaclass(hdef) then
- def:=tclassrefdef.create(hdef)
+ def:=cclassrefdef.create(hdef)
else
if hdef.typ=forwarddef then
begin
- def:=tclassrefdef.create(hdef);
+ def:=cclassrefdef.create(hdef);
current_module.checkforwarddefs.add(def);
end
else
@@ -1739,7 +1753,7 @@ implementation
begin
consume(_KLAMMERAFFE);
single_type(tt2,SingleTypeOptionsInTypeBlock[block_type=bt_type]);
- def:=tpointerdef.create(tt2);
+ def:=cpointerdef.create(tt2);
if tt2.typ=forwarddef then
current_module.checkforwarddefs.add(def);
end
diff --git a/compiler/raatt.pas b/compiler/raatt.pas
index e1c6b443b1..6729d0c87c 100644
--- a/compiler/raatt.pas
+++ b/compiler/raatt.pas
@@ -1002,8 +1002,6 @@ unit raatt;
end;
curlist:=TAsmList.Create;
lasTSec:=sec_code;
- { setup label linked list }
- LocalLabelList:=TLocalLabelList.Create;
{ start tokenizer }
c:=current_scanner.asmgetcharstart;
gettoken;
@@ -1256,9 +1254,8 @@ unit raatt;
end;
end;
until false;
- { Check LocalLabelList }
- LocalLabelList.CheckEmitted;
- LocalLabelList.Free;
+ { check that all referenced local labels are defined }
+ checklocallabels;
{ are we back in the code section? }
if lasTSec<>sec_code then
begin
diff --git a/compiler/rasm.pas b/compiler/rasm.pas
index aab54005cb..a10066c31c 100644
--- a/compiler/rasm.pas
+++ b/compiler/rasm.pas
@@ -28,6 +28,7 @@ unit rasm;
uses
cclasses,
rabase,
+ aasmbase,
aasmtai,aasmdata,
systems,
cpubase,
@@ -44,25 +45,89 @@ unit rasm;
actasmregister : tregister;
actcondition : tasmcond;
iasmops : TFPHashList;
+ locallabels : TFPHashObjectList;
constructor create;override;
destructor destroy;override;
+ function createlocallabel(const s: string; var hl: tasmlabel; emit: boolean): boolean;
+ procedure checklocallabels;
end;
implementation
+ uses
+ verbose;
+
+ type
+ TLocalLabel = class(TFPHashObject)
+ emitted: boolean;
+ lab: tasmlabel;
+ function Gettasmlabel: tasmlabel;
+ end;
+
+
+ function TLocalLabel.Gettasmlabel:tasmlabel;
+ begin
+ if not assigned(lab) then
+ begin
+ current_asmdata.getjumplabel(lab);
+ { this label is forced to be used so it's always written }
+ lab.increfs;
+ end;
+ result:=lab;
+ end;
+
+
constructor tasmreader.create;
begin
inherited create;
firsttoken:=true;
+ locallabels:=TFPHashObjectList.create;
end;
destructor tasmreader.destroy;
begin
- if assigned(iasmops) then
- iasmops.Free;
+ locallabels.Free;
+ iasmops.Free;
inherited destroy;
end;
+ function tasmreader.createlocallabel(const s: string; var hl: tasmlabel; emit:boolean):boolean;
+ var
+ lab: TLocalLabel;
+ begin
+ result:=true;
+ { Check if it already is defined }
+ lab:=TLocalLabel(locallabels.Find(s));
+ if not assigned(lab) then
+ lab:=TLocalLabel.Create(locallabels,s);
+ { set emitted flag and check for dup syms }
+ if emit then
+ begin
+ if lab.Emitted then
+ begin
+ Message1(asmr_e_dup_local_sym,lab.Name);
+ result:=false;
+ end;
+ lab.Emitted:=true;
+ end;
+ hl:=lab.Gettasmlabel;
+ end;
+
+
+ procedure tasmreader.checklocallabels;
+ var
+ i: longint;
+ lab: TLocalLabel;
+ begin
+ for i:=0 to locallabels.Count-1 do
+ begin
+ lab:=TLocalLabel(locallabels[i]);
+ if not lab.emitted then
+ Message1(asmr_e_unknown_label_identifier,lab.name);
+ end;
+ locallabels.Clear;
+ end;
+
end.
diff --git a/compiler/rautils.pas b/compiler/rautils.pas
index 334aad6030..5d3c767fc5 100644
--- a/compiler/rautils.pas
+++ b/compiler/rautils.pas
@@ -41,28 +41,6 @@ Const
{$define MAX_OPER_3}
{$endif}
-{---------------------------------------------------------------------
- Local Label Management
----------------------------------------------------------------------}
-
-Type
- { Each local label has this structure associated with it }
- TLocalLabel = class(TFPHashObject)
- Emitted : boolean;
- constructor Create(AList:TFPHashObjectList;const n:string);
- function Gettasmlabel:tasmlabel;
- private
- lab : tasmlabel;
- end;
-
- TLocalLabelList = class(TFPHashObjectList)
- procedure CheckEmitted;
- end;
-
-var
- LocalLabelList : TLocalLabelList;
-
-function CreateLocalLabel(const s: string; var hl: tasmlabel; emit:boolean):boolean;
Function SearchLabel(const s: string; var hl: tasmlabel;emit:boolean): boolean;
@@ -1150,71 +1128,6 @@ end;
end;
-{***************************************************************************
- TLocalLabel
-***************************************************************************}
-
-constructor TLocalLabel.create(AList:TFPHashObjectList;const n:string);
-begin
- inherited Create(AList,n);
- lab:=nil;
- emitted:=false;
-end;
-
-
-function TLocalLabel.Gettasmlabel:tasmlabel;
-begin
- if not assigned(lab) then
- begin
- current_asmdata.getjumplabel(lab);
- { this label is forced to be used so it's always written }
- lab.increfs;
- end;
- Gettasmlabel:=lab;
-end;
-
-
-{***************************************************************************
- TLocalLabelList
-***************************************************************************}
-
-procedure TLocalLabelList.CheckEmitted;
-var
- i : longint;
- lab : TLocalLabel;
-begin
- for i:=0 to LocalLabelList.Count-1 do
- begin
- lab:=TLocalLabel(LocalLabelList[i]);
- if not lab.emitted then
- Message1(asmr_e_unknown_label_identifier,lab.name);
- end;
-end;
-
-
-function CreateLocalLabel(const s: string; var hl: tasmlabel; emit:boolean):boolean;
-var
- lab : TLocalLabel;
-Begin
- CreateLocalLabel:=true;
-{ Check if it already is defined }
- lab:=TLocalLabel(LocalLabellist.Find(s));
- if not assigned(lab) then
- lab:=TLocalLabel.Create(LocalLabellist,s);
-{ set emitted flag and check for dup syms }
- if emit then
- begin
- if lab.Emitted then
- begin
- Message1(asmr_e_dup_local_sym,lab.Name);
- CreateLocalLabel:=false;
- end;
- lab.Emitted:=true;
- end;
- hl:=lab.Gettasmlabel;
-end;
-
-
{****************************************************************************
Symbol table helper routines
****************************************************************************}
@@ -1513,7 +1426,11 @@ Begin
current_asmdata.getjumplabel(tlabelsym(sym).asmblocklabel);
hl:=tlabelsym(sym).asmblocklabel;
if emit then
- tlabelsym(sym).defined:=true
+ begin
+ if tlabelsym(sym).defined then
+ Message(sym_e_label_already_defined);
+ tlabelsym(sym).defined:=true
+ end
else
tlabelsym(sym).used:=true;
SearchLabel:=true;
diff --git a/compiler/rgobj.pas b/compiler/rgobj.pas
index b49efb98f7..1544ea03ab 100644
--- a/compiler/rgobj.pas
+++ b/compiler/rgobj.pas
@@ -1136,6 +1136,15 @@ unit rgobj;
procedure trgobj.set_alias(u,v:Tsuperregister);
begin
+ { don't make registers that the register allocator shouldn't touch (such
+ as stack and frame pointers) be aliases for other registers, because
+ then it can propagate them and even start changing them if the aliased
+ register gets changed }
+ if ((u<first_imaginary) and
+ not(u in usable_register_set)) or
+ ((v<first_imaginary) and
+ not(v in usable_register_set)) then
+ exit;
include(reginfo[v].flags,ri_coalesced);
if reginfo[v].alias<>0 then
internalerror(200712291);
@@ -1287,9 +1296,15 @@ unit rgobj;
add_worklist(u);
add_worklist(v);
end
- {Next test: is it possible and a good idea to coalesce??}
- else if ((u<first_imaginary) and adjacent_ok(u,v)) or
- conservative(u,v) then
+ {Next test: is it possible and a good idea to coalesce?? Note: don't
+ coalesce registers that should not be touched by the register allocator,
+ such as stack/framepointers, because otherwise they can be changed }
+ else if (((u<first_imaginary) and adjacent_ok(u,v)) or
+ conservative(u,v)) and
+ ((u>first_imaginary) or
+ (u in usable_register_set)) and
+ ((v>first_imaginary) or
+ (v in usable_register_set)) then
begin
m.moveset:=ms_coalesced_moves; {Move coalesced!}
coalesced_moves.insert(m);
diff --git a/compiler/scandir.pas b/compiler/scandir.pas
index b9ddf07984..fa45435e2c 100644
--- a/compiler/scandir.pas
+++ b/compiler/scandir.pas
@@ -57,7 +57,7 @@ unit scandir;
scanner,switches,
fmodule,
defutil,
- dirparse,
+ dirparse,link,
symconst,symtable,symbase,symtype,symsym,
rabase;
@@ -110,13 +110,11 @@ unit scandir;
recordpendinglocalswitch(sw,state);
end;
- procedure do_localswitchdefault(sw:tlocalswitch);
- var
- state : char;
+ function do_localswitchdefault(sw:tlocalswitch): char;
begin
- state:=current_scanner.readstatedefault;
- if (sw<>cs_localnone) and (state in ['-','+','*']) then
- recordpendinglocalswitch(sw,state);
+ result:=current_scanner.readstatedefault;
+ if (sw<>cs_localnone) and (result in ['-','+','*']) then
+ recordpendinglocalswitch(sw,result);
end;
@@ -302,8 +300,13 @@ unit scandir;
procedure dir_checkpointer;
+ var
+ switch: char;
begin
- do_localswitchdefault(cs_checkpointer);
+ switch:=do_localswitchdefault(cs_checkpointer);
+ if (switch='+') and
+ not(target_info.system in systems_support_checkpointer) then
+ Message1(scan_e_unsupported_switch,'CHECKPOINTER+');
end;
@@ -384,6 +387,20 @@ unit scandir;
do_delphiswitch('X');
end;
+ procedure dir_forcefarcalls;
+ begin
+ if (target_info.system<>system_i8086_msdos)
+{$ifdef i8086}
+ or (current_settings.x86memorymodel in x86_near_code_models)
+{$endif i8086}
+ then
+ begin
+ Message1(scan_n_ignored_switch,pattern);
+ exit;
+ end;
+ do_localswitch(cs_force_far_calls);
+ end;
+
procedure dir_fatal;
begin
do_message(scan_f_user_defined);
@@ -1156,6 +1173,20 @@ unit scandir;
Message(option_dwarf_smart_linking);
Exclude(current_settings.moduleswitches,cs_create_smart);
end;
+ { Also create a smartlinked version, on an assembler that
+ does not support smartlink sections like nasm?
+ This is not compatible with using internal linker. }
+ if ((cs_link_smart in current_settings.globalswitches) or
+ (cs_create_smart in current_settings.moduleswitches)) and
+ (af_needar in target_asm.flags) and
+ not (af_smartlink_sections in target_asm.flags) and
+ not (cs_link_extern in current_settings.globalswitches) then
+ begin
+ DoneLinker;
+ Message(option_smart_link_requires_external_linker);
+ include(current_settings.globalswitches,cs_link_extern);
+ InitLinker;
+ end
end;
procedure dir_stackframes;
@@ -1485,6 +1516,20 @@ unit scandir;
begin
end;
+ procedure dir_hugecode;
+ begin
+ if (target_info.system<>system_i8086_msdos)
+{$ifdef i8086}
+ or (current_settings.x86memorymodel in x86_near_code_models)
+{$endif i8086}
+ then
+ begin
+ Message1(scan_n_ignored_switch,pattern);
+ exit;
+ end;
+ do_moduleswitch(cs_huge_code);
+ end;
+
procedure dir_weakpackageunit;
begin
end;
@@ -1579,6 +1624,7 @@ unit scandir;
AddDirective('ERRORC',directive_mac, @dir_error);
AddDirective('EXTENDEDSYNTAX',directive_all, @dir_extendedsyntax);
AddDirective('EXTERNALSYM',directive_all, @dir_externalsym);
+ AddDirective('F',directive_all, @dir_forcefarcalls);
AddDirective('FATAL',directive_all, @dir_fatal);
AddDirective('FPUTYPE',directive_all, @dir_fputype);
AddDirective('FRAMEWORKPATH',directive_all, @dir_frameworkpath);
@@ -1586,6 +1632,7 @@ unit scandir;
AddDirective('HINT',directive_all, @dir_hint);
AddDirective('HINTS',directive_all, @dir_hints);
AddDirective('HPPEMIT',directive_all, @dir_hppemit);
+ AddDirective('HUGECODE',directive_all, @dir_hugecode);
AddDirective('IEEEERRORS',directive_all,@dir_ieeeerrors);
AddDirective('IOCHECKS',directive_all, @dir_iochecks);
AddDirective('IMAGEBASE',directive_all, @dir_imagebase);
diff --git a/compiler/scanner.pas b/compiler/scanner.pas
index 799bb4a41c..450d5c399c 100644
--- a/compiler/scanner.pas
+++ b/compiler/scanner.pas
@@ -849,6 +849,10 @@ type
class constructor texprvalue.createdefs;
begin
+ { do not use corddef etc here: this code is executed before those
+ variables are initialised. Since these types are only used for
+ compile-time evaluation of conditional expressions, it doesn't matter
+ that we use the base types instead of the cpu-specific ones. }
sintdef:=torddef.create(s64bit,low(int64),high(int64));
uintdef:=torddef.create(u64bit,low(qword),high(qword));
booldef:=torddef.create(pasbool8,0,1);
@@ -1275,6 +1279,9 @@ type
if b in pconstset(value.valueptr)^ then
result:=result+tostr(b)+',';
end;
+ { error values }
+ constnone:
+ result:='';
else
internalerror(2013112801);
end;
@@ -2932,9 +2939,9 @@ type
minfpconstprec:=tfloattype(tokenreadenum(sizeof(tfloattype)));
disabledircache:=boolean(tokenreadbyte);
-{$if defined(ARM) or defined(AVR)}
+{$if defined(ARM) or defined(AVR) or defined(MIPSEL)}
controllertype:=tcontrollertype(tokenreadenum(sizeof(tcontrollertype)));
-{$endif defined(ARM) or defined(AVR)}
+{$endif defined(ARM) or defined(AVR) or DEFINED(MIPSEL)}
endpos:=replaytokenbuf.pos;
if endpos-startpos<>expected_size then
Comment(V_Error,'Wrong size of Settings read-in');
@@ -3001,9 +3008,9 @@ type
tokenwriteenum(minfpconstprec,sizeof(tfloattype));
recordtokenbuf.write(byte(disabledircache),1);
-{$if defined(ARM) or defined(AVR)}
+{$if defined(ARM) or defined(AVR) or defined(MIPSEL)}
tokenwriteenum(controllertype,sizeof(tcontrollertype));
-{$endif defined(ARM) or defined(AVR)}
+{$endif defined(ARM) or defined(AVR) or defined(MIPSEL)}
endpos:=recordtokenbuf.pos;
size:=endpos-startpos;
recordtokenbuf.seek(sizepos);
diff --git a/compiler/sparc/cgcpu.pas b/compiler/sparc/cgcpu.pas
index 3fa41146d7..e0e6759b4a 100644
--- a/compiler/sparc/cgcpu.pas
+++ b/compiler/sparc/cgcpu.pas
@@ -935,11 +935,21 @@ implementation
var
hl : tasmlabel;
begin
- current_asmdata.getjumplabel(hl);
- a_load_const_reg(list,size,1,reg);
- a_jmp_flags(list,f,hl);
- a_load_const_reg(list,size,0,reg);
- a_label(list,hl);
+ if (f in [F_B]) then
+ list.concat(taicpu.op_reg_reg_reg(A_ADDX,NR_G0,NR_G0,reg))
+ else if (f in [F_AE]) then
+ begin
+ a_load_const_reg(list,size,1,reg);
+ list.concat(taicpu.op_reg_reg_reg(A_SUBX,reg,NR_G0,reg));
+ end
+ else
+ begin
+ current_asmdata.getjumplabel(hl);
+ a_load_const_reg(list,size,1,reg);
+ a_jmp_flags(list,f,hl);
+ a_load_const_reg(list,size,0,reg);
+ a_label(list,hl);
+ end;
end;
@@ -970,7 +980,7 @@ implementation
pasbool8,pasbool16,pasbool32,pasbool64]))) then
begin
ai:=TAiCpu.Op_sym(A_Bxx,hl);
- ai.SetCondition(C_NO);
+ ai.SetCondition(C_VC);
list.Concat(ai);
{ Delay slot }
list.Concat(TAiCpu.Op_none(A_NOP));
diff --git a/compiler/sparc/cpubase.pas b/compiler/sparc/cpubase.pas
index 35ee0be093..f9749baba4 100644
--- a/compiler/sparc/cpubase.pas
+++ b/compiler/sparc/cpubase.pas
@@ -97,24 +97,28 @@ uses
type
TAsmCond=(C_None,
- C_A,C_AE,C_B,C_BE,C_C,C_E,C_G,C_GE,C_L,C_LE,C_NA,C_NAE,
- C_NB,C_NBE,C_NC,C_NE,C_NG,C_NGE,C_NL,C_NLE,C_NO,C_NP,
- C_NS,C_NZ,C_O,C_P,C_PE,C_PO,C_S,C_Z,
- C_FE,C_FG,C_FL,C_FGE,C_FLE,C_FNE
+ C_A,C_AE,C_B,C_BE,
+ C_G,C_GE,C_L,C_LE,
+ C_E,C_NE,
+ C_POS,C_NEG,C_VC,C_VS,
+ C_FE,C_FG,C_FL,C_FGE,C_FLE,C_FNE,
+ C_FU,C_FUG,C_FUL,C_FUGE,C_FULE,C_FO,C_FUE,C_FLG
);
const
firstIntCond=C_A;
- lastIntCond=C_Z;
+ lastIntCond=C_VS;
firstFloatCond=C_FE;
lastFloatCond=C_FNE;
- floatAsmConds=[C_FE..C_FNE];
+ floatAsmConds=[C_FE..C_FLG];
cond2str:array[TAsmCond] of string[3]=('',
- 'gu','cc','cs','leu','cs','e','g','ge','l','le','leu','cs',
- 'cc','gu','cc','ne','le','l','ge','g','vc','XX',
- 'pos','ne','vs','XX','XX','XX','vs','e',
- 'e','g','l','ge','le','ne'
+ 'gu','cc','cs','leu',
+ 'g','ge','l','le',
+ 'e','ne',
+ 'pos','neg','vc','vs',
+ 'e','g','l','ge','le','ne',
+ 'u','ug','ul','uge','ule','o','ue','lg'
);
@@ -132,11 +136,9 @@ uses
F_GE, {Greater or Equal}
F_LE, {Less or Equal}
F_A, {Above}
- F_AE, {Above or Equal}
- F_B, {Below}
+ F_AE, {Above or Equal, synonym: Carry Clear}
+ F_B, {Below, synonym: Carry Set}
F_BE, {Below or Equal}
- F_C, {Carry}
- F_NC, {Not Carry}
{ Floating point results }
F_FE, {Equal}
F_FNE, {Not Equal}
@@ -325,7 +327,7 @@ implementation
procedure inverse_flags(var f: TResFlags);
const
inv_flags: array[TResFlags] of TResFlags =
- (F_NE,F_E,F_LE,F_GE,F_L,F_G,F_BE,F_B,F_AE,F_A,F_NC,F_C,
+ (F_NE,F_E,F_LE,F_GE,F_L,F_G,F_BE,F_B,F_AE,F_A,
F_FNE,F_FE,F_FLE,F_FGE,F_FL,F_FG);
begin
f:=inv_flags[f];
@@ -335,7 +337,7 @@ implementation
function flags_to_cond(const f:TResFlags):TAsmCond;
const
flags_2_cond:array[TResFlags] of TAsmCond=
- (C_E,C_NE,C_G,C_L,C_GE,C_LE,C_A,C_AE,C_B,C_BE,C_C,C_NC,
+ (C_E,C_NE,C_G,C_L,C_GE,C_LE,C_A,C_AE,C_B,C_BE,
C_FE,C_FNE,C_FG,C_FL,C_FGE,C_FLE);
begin
result:=flags_2_cond[f];
@@ -432,10 +434,12 @@ implementation
function inverse_cond(const c: TAsmCond): TAsmCond; {$ifdef USEINLINE}inline;{$endif USEINLINE}
const
inverse: array[TAsmCond] of TAsmCond=(C_None,
- C_NA,C_NAE,C_NB,C_NBE,C_NC,C_NE,C_NG,C_NGE,C_NL,C_NLE,C_A,C_AE,
- C_B,C_BE,C_C,C_E,C_G,C_GE,C_L,C_LE,C_O,C_P,
- C_S,C_Z,C_NO,C_NP,C_NP,C_P,C_NS,C_NZ,
- C_FNE,C_FLE,C_FGE,C_FL,C_FG,C_FE
+ C_BE,C_B,C_AE,C_A,
+ C_LE,C_L,C_GE,C_G,
+ C_NE,C_E,
+ C_NEG,C_POS,C_VS,C_VC,
+ C_FNE,C_FULE,C_FUGE,C_FUL,C_FUG,C_FE,
+ C_FO,C_FLE,C_FGE,C_FL,C_FG,C_FU,C_FLG,C_FUE
);
begin
result := inverse[c];
diff --git a/compiler/sparc/cpunode.pas b/compiler/sparc/cpunode.pas
index 63fdb77d6f..e242c80f26 100644
--- a/compiler/sparc/cpunode.pas
+++ b/compiler/sparc/cpunode.pas
@@ -33,6 +33,8 @@ implementation
ncgbas,ncgflw,ncgcnv,ncgld,ncgmem,ncgcon,ncgset,
ncpuadd,ncpucall,ncpumat,ncpuinln,ncpucnv,ncpuset,
{ this not really a node }
- rgcpu;
+ rgcpu,
+ { symtable }
+ symcpu;
end.
diff --git a/compiler/sparc/ncpuadd.pas b/compiler/sparc/ncpuadd.pas
index 9a5a8b11f4..12faca4876 100644
--- a/compiler/sparc/ncpuadd.pas
+++ b/compiler/sparc/ncpuadd.pas
@@ -56,7 +56,7 @@ interface
cgbase,cgcpu,cgutils,
cpupara,
ncon,nset,nadd,
- ncgutil,cgobj;
+ hlcgobj, ncgutil,cgobj;
{*****************************************************************************
TSparcAddNode
@@ -170,8 +170,8 @@ interface
{ force fpureg as location, left right doesn't matter
as both will be in a fpureg }
- location_force_fpureg(current_asmdata.CurrAsmList,left.location,true);
- location_force_fpureg(current_asmdata.CurrAsmList,right.location,(left.location.loc<>LOC_CFPUREGISTER));
+ hlcg.location_force_fpureg(current_asmdata.CurrAsmList,left.location,left.resultdef,true);
+ hlcg.location_force_fpureg(current_asmdata.CurrAsmList,right.location,right.resultdef,(left.location.loc<>LOC_CFPUREGISTER));
location_reset(location,LOC_FPUREGISTER,def_cgsize(resultdef));
if left.location.loc<>LOC_CFPUREGISTER then
@@ -227,8 +227,8 @@ interface
{ force fpureg as location, left right doesn't matter
as both will be in a fpureg }
- location_force_fpureg(current_asmdata.CurrAsmList,left.location,true);
- location_force_fpureg(current_asmdata.CurrAsmList,right.location,true);
+ hlcg.location_force_fpureg(current_asmdata.CurrAsmList,left.location,left.resultdef,true);
+ hlcg.location_force_fpureg(current_asmdata.CurrAsmList,right.location,right.resultdef,true);
location_reset(location,LOC_FLAGS,OS_NO);
location.resflags:=getfpuresflags;
diff --git a/compiler/sparc/ncpucall.pas b/compiler/sparc/ncpucall.pas
index d6f7de77b4..5c8be07892 100644
--- a/compiler/sparc/ncpucall.pas
+++ b/compiler/sparc/ncpucall.pas
@@ -47,7 +47,7 @@ implementation
procedure tsparccallnode.extra_post_call_code;
begin
if paramanager.ret_in_param(procdefinition.returndef,procdefinition) then
- current_asmdata.CurrAsmList.concat(taicpu.op_const(A_UNIMP,procdefinition.returndef.size and $fff));
+ current_asmdata.CurrAsmList.concat(taicpu.op_const(A_UNIMP,procdefinition.returndef.size and $3fffff));
end;
diff --git a/compiler/sparc/ncpucnv.pas b/compiler/sparc/ncpucnv.pas
index 87b4728834..fd73cca8b9 100644
--- a/compiler/sparc/ncpucnv.pas
+++ b/compiler/sparc/ncpucnv.pas
@@ -217,7 +217,7 @@ implementation
op : tasmop;
begin
location_reset(location,LOC_FPUREGISTER,def_cgsize(resultdef));
- location_force_fpureg(current_asmdata.CurrAsmList,left.location,false);
+ hlcg.location_force_fpureg(current_asmdata.CurrAsmList,left.location,left.resultdef,false);
{ Convert value in fpu register from integer to float }
op:=conv_op[tfloatdef(resultdef).floattype,tfloatdef(left.resultdef).floattype];
if op=A_NONE then
diff --git a/compiler/sparc/ncpuinln.pas b/compiler/sparc/ncpuinln.pas
index 2d81e05da8..83a1afc37c 100644
--- a/compiler/sparc/ncpuinln.pas
+++ b/compiler/sparc/ncpuinln.pas
@@ -51,7 +51,7 @@ implementation
cgbase,pass_2,
cpubase,paramgr,
nbas,ncon,ncal,ncnv,nld,
- ncgutil,cgobj,cgutils;
+ hlcgobj,ncgutil,cgobj,cgutils;
{*****************************************************************************
tsparcinlinenode
@@ -60,7 +60,7 @@ implementation
procedure tsparcinlinenode.load_fpu_location;
begin
secondpass(left);
- location_force_fpureg(current_asmdata.CurrAsmList,left.location,true);
+ hlcg.location_force_fpureg(current_asmdata.CurrAsmList,left.location,left.resultdef,true);
location_copy(location,left.location);
if left.location.loc=LOC_CFPUREGISTER then
begin
diff --git a/compiler/sparc/ncpumat.pas b/compiler/sparc/ncpumat.pas
index 682f0cad52..6b84a67c53 100644
--- a/compiler/sparc/ncpumat.pas
+++ b/compiler/sparc/ncpumat.pas
@@ -148,7 +148,7 @@ implementation
if (nodetype = modn) then
begin
current_asmdata.getjumplabel(overflowlabel);
- ai:=taicpu.op_cond_sym(A_Bxx,C_O,overflowlabel);
+ ai:=taicpu.op_cond_sym(A_Bxx,C_VS,overflowlabel);
ai.delayslot_annulled:=true;
current_asmdata.CurrAsmList.concat(ai);
current_asmdata.CurrAsmList.concat(taicpu.op_reg(A_NOT,resultreg));
@@ -293,7 +293,7 @@ implementation
procedure tsparcunaryminusnode.second_float;
begin
secondpass(left);
- location_force_fpureg(current_asmdata.CurrAsmList,left.location,true);
+ hlcg.location_force_fpureg(current_asmdata.CurrAsmList,left.location,left.resultdef,true);
location_reset(location,LOC_FPUREGISTER,def_cgsize(resultdef));
location.register:=cg.getfpuregister(current_asmdata.CurrAsmList,location.size);
case location.size of
diff --git a/compiler/sparc/ncpuset.pas b/compiler/sparc/ncpuset.pas
index 4b4940fbdd..4e648fbe9d 100644
--- a/compiler/sparc/ncpuset.pas
+++ b/compiler/sparc/ncpuset.pas
@@ -90,12 +90,14 @@ unit ncpuset;
begin
opcgsize:=def_cgsize(opsize);
+ last:=min_;
if not(jumptable_no_range) then
begin
- { case expr less than min_ => goto elselabel }
- cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,opcgsize,jmp_lt,aint(min_),hregister,elselabel);
- { case expr greater than max_ => goto elselabel }
- cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,opcgsize,jmp_gt,aint(max_),hregister,elselabel);
+ { a <= x <= b <-> unsigned(x-a) <= (b-a) }
+ cg.a_op_const_reg(current_asmdata.CurrAsmList,OP_SUB,opcgsize,aint(min_),hregister);
+ { case expr greater than max_ => goto elselabel }
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,opcgsize,OC_A,aint(max_)-aint(min_),hregister,elselabel);
+ min_:=0;
end;
current_asmdata.getjumplabel(table);
indexreg:=cg.getaddressregister(current_asmdata.CurrAsmList);
@@ -137,7 +139,6 @@ unit ncpuset;
current_asmdata.CurrAsmList.concat(taicpu.op_none(A_NOP));
cg.ungetcpuregister(current_asmdata.CurrAsmList,NR_O7);
{ generate jump table }
- last:=min_;
cg.a_label(current_asmdata.CurrAsmList,table);
genitem(current_asmdata.CurrAsmList,hp);
end;
diff --git a/compiler/sparc/symcpu.pas b/compiler/sparc/symcpu.pas
new file mode 100644
index 0000000000..082064ca19
--- /dev/null
+++ b/compiler/sparc/symcpu.pas
@@ -0,0 +1,211 @@
+{
+ Copyright (c) 2014 by Florian Klaempfl
+
+ Symbol table overrides for SPARC
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+ ****************************************************************************
+}
+unit symcpu;
+
+{$i fpcdefs.inc}
+
+interface
+
+uses
+ symtype,symdef,symsym;
+
+type
+ { defs }
+ tcpufiledef = class(tfiledef)
+ end;
+ tcpufiledefclass = class of tcpufiledef;
+
+ tcpuvariantdef = class(tvariantdef)
+ end;
+ tcpuvariantdefclass = class of tcpuvariantdef;
+
+ tcpuformaldef = class(tformaldef)
+ end;
+ tcpuformaldefclass = class of tcpuformaldef;
+
+ tcpuforwarddef = class(tforwarddef)
+ end;
+ tcpuforwarddefclass = class of tcpuforwarddef;
+
+ tcpuundefineddef = class(tundefineddef)
+ end;
+ tcpuundefineddefclass = class of tcpuundefineddef;
+
+ tcpuerrordef = class(terrordef)
+ end;
+ tcpuerrordefclass = class of tcpuerrordef;
+
+ tcpupointerdef = class(tpointerdef)
+ end;
+ tcpupointerdefclass = class of tcpupointerdef;
+
+ tcpurecorddef = class(trecorddef)
+ end;
+ tcpurecorddefclass = class of tcpurecorddef;
+
+ tcpuimplementedinterface = class(timplementedinterface)
+ end;
+ tcpuimplementedinterfaceclass = class of tcpuimplementedinterface;
+
+ tcpuobjectdef = class(tobjectdef)
+ end;
+ tcpuobjectdefclass = class of tcpuobjectdef;
+
+ tcpuclassrefdef = class(tclassrefdef)
+ end;
+ tcpuclassrefdefclass = class of tcpuclassrefdef;
+
+ tcpuarraydef = class(tarraydef)
+ end;
+ tcpuarraydefclass = class of tcpuarraydef;
+
+ tcpuorddef = class(torddef)
+ end;
+ tcpuorddefclass = class of tcpuorddef;
+
+ tcpufloatdef = class(tfloatdef)
+ end;
+ tcpufloatdefclass = class of tcpufloatdef;
+
+ tcpuprocvardef = class(tprocvardef)
+ end;
+ tcpuprocvardefclass = class of tcpuprocvardef;
+
+ tcpuprocdef = class(tprocdef)
+ end;
+ tcpuprocdefclass = class of tcpuprocdef;
+
+ tcpustringdef = class(tstringdef)
+ end;
+ tcpustringdefclass = class of tcpustringdef;
+
+ tcpuenumdef = class(tenumdef)
+ end;
+ tcpuenumdefclass = class of tcpuenumdef;
+
+ tcpusetdef = class(tsetdef)
+ end;
+ tcpusetdefclass = class of tcpusetdef;
+
+ { syms }
+ tcpulabelsym = class(tlabelsym)
+ end;
+ tcpulabelsymclass = class of tcpulabelsym;
+
+ tcpuunitsym = class(tunitsym)
+ end;
+ tcpuunitsymclass = class of tcpuunitsym;
+
+ tcpunamespacesym = class(tnamespacesym)
+ end;
+ tcpunamespacesymclass = class of tcpunamespacesym;
+
+ tcpuprocsym = class(tprocsym)
+ end;
+ tcpuprocsymclass = class of tcpuprocsym;
+
+ tcputypesym = class(ttypesym)
+ end;
+ tcpuypesymclass = class of tcputypesym;
+
+ tcpufieldvarsym = class(tfieldvarsym)
+ end;
+ tcpufieldvarsymclass = class of tcpufieldvarsym;
+
+ tcpulocalvarsym = class(tlocalvarsym)
+ end;
+ tcpulocalvarsymclass = class of tcpulocalvarsym;
+
+ tcpuparavarsym = class(tparavarsym)
+ end;
+ tcpuparavarsymclass = class of tcpuparavarsym;
+
+ tcpustaticvarsym = class(tstaticvarsym)
+ end;
+ tcpustaticvarsymclass = class of tcpustaticvarsym;
+
+ tcpuabsolutevarsym = class(tabsolutevarsym)
+ end;
+ tcpuabsolutevarsymclass = class of tcpuabsolutevarsym;
+
+ tcpupropertysym = class(tpropertysym)
+ end;
+ tcpupropertysymclass = class of tcpupropertysym;
+
+ tcpuconstsym = class(tconstsym)
+ end;
+ tcpuconstsymclass = class of tcpuconstsym;
+
+ tcpuenumsym = class(tenumsym)
+ end;
+ tcpuenumsymclass = class of tcpuenumsym;
+
+ tcpusyssym = class(tsyssym)
+ end;
+ tcpusyssymclass = class of tcpusyssym;
+
+
+const
+ pbestrealtype : ^tdef = @s64floattype;
+
+
+implementation
+
+begin
+ { used tdef classes }
+ cfiledef:=tcpufiledef;
+ cvariantdef:=tcpuvariantdef;
+ cformaldef:=tcpuformaldef;
+ cforwarddef:=tcpuforwarddef;
+ cundefineddef:=tcpuundefineddef;
+ cerrordef:=tcpuerrordef;
+ cpointerdef:=tcpupointerdef;
+ crecorddef:=tcpurecorddef;
+ cimplementedinterface:=tcpuimplementedinterface;
+ cobjectdef:=tcpuobjectdef;
+ cclassrefdef:=tcpuclassrefdef;
+ carraydef:=tcpuarraydef;
+ corddef:=tcpuorddef;
+ cfloatdef:=tcpufloatdef;
+ cprocvardef:=tcpuprocvardef;
+ cprocdef:=tcpuprocdef;
+ cstringdef:=tcpustringdef;
+ cenumdef:=tcpuenumdef;
+ csetdef:=tcpusetdef;
+
+ { used tsym classes }
+ clabelsym:=tcpulabelsym;
+ cunitsym:=tcpuunitsym;
+ cnamespacesym:=tcpunamespacesym;
+ cprocsym:=tcpuprocsym;
+ ctypesym:=tcputypesym;
+ cfieldvarsym:=tcpufieldvarsym;
+ clocalvarsym:=tcpulocalvarsym;
+ cparavarsym:=tcpuparavarsym;
+ cstaticvarsym:=tcpustaticvarsym;
+ cabsolutevarsym:=tcpuabsolutevarsym;
+ cpropertysym:=tcpupropertysym;
+ cconstsym:=tcpuconstsym;
+ cenumsym:=tcpuenumsym;
+ csyssym:=tcpusyssym;
+end.
+
diff --git a/compiler/switches.pas b/compiler/switches.pas
index 96d020167a..6addd6e950 100644
--- a/compiler/switches.pas
+++ b/compiler/switches.pas
@@ -64,7 +64,11 @@ const
{C} (typesw:localsw; setsw:ord(cs_do_assertion)),
{D} (typesw:modulesw; setsw:ord(cs_debuginfo)),
{E} (typesw:modulesw; setsw:ord(cs_fp_emulation)),
+{$ifdef i8086}
+ {F} (typesw:localsw; setsw:ord(cs_force_far_calls)),
+{$else i8086}
{F} (typesw:ignoredsw; setsw:ord(cs_localnone)),
+{$endif i8086}
{G} (typesw:ignoredsw; setsw:ord(cs_localnone)),
{H} (typesw:localsw; setsw:ord(cs_refcountedstrings)),
{I} (typesw:localsw; setsw:ord(cs_check_io)),
@@ -94,7 +98,11 @@ const
{C} (typesw:localsw; setsw:ord(cs_do_assertion)),
{D} (typesw:modulesw; setsw:ord(cs_debuginfo)),
{E} (typesw:modulesw; setsw:ord(cs_fp_emulation)),
+{$ifdef i8086}
+ {F} (typesw:localsw; setsw:ord(cs_force_far_calls)),
+{$else i8086}
{F} (typesw:ignoredsw; setsw:ord(cs_localnone)),
+{$endif i8086}
{G} (typesw:ignoredsw; setsw:ord(cs_localnone)),
{H} (typesw:localsw; setsw:ord(cs_refcountedstrings)),
{I} (typesw:localsw; setsw:ord(cs_check_io)),
diff --git a/compiler/symconst.pas b/compiler/symconst.pas
index 08394f7c4e..f82929fd35 100644
--- a/compiler/symconst.pas
+++ b/compiler/symconst.pas
@@ -303,7 +303,6 @@ type
po_has_public_name,
po_forward,
po_global,
- po_has_inlininginfo,
{ The different kind of syscalls on MorphOS }
po_syscall_legacy,
po_syscall_sysv,
@@ -358,6 +357,16 @@ type
);
tprocoptions=set of tprocoption;
+ { options that should not trigger the recompilation of a unit if they change
+ between the interface and the implementation }
+ timplprocoption = (
+ { the routine contains no code }
+ pio_empty,
+ { the inline body of this routine is available }
+ pio_has_inlininginfo
+ );
+ timplprocoptions = set of timplprocoption;
+
{ kinds of synthetic procdefs that can be generated }
tsynthetickind = (
tsk_none,
diff --git a/compiler/symcreat.pas b/compiler/symcreat.pas
index 06ac751c72..2a387b9d3d 100644
--- a/compiler/symcreat.pas
+++ b/compiler/symcreat.pas
@@ -1053,7 +1053,7 @@ implementation
end
else
begin
- ps:=tprocsym.create(realname);
+ ps:=cprocsym.create(realname);
newparentst.insert(ps);
end;
pd.procsym:=ps;
@@ -1071,7 +1071,7 @@ implementation
if vo_is_self in parasym.varoptions then
begin
if parasym.vardef.typ=classrefdef then
- parasym.vardef:=tclassrefdef.create(newstruct)
+ parasym.vardef:=cclassrefdef.create(newstruct)
else
parasym.vardef:=newstruct;
end
@@ -1105,7 +1105,7 @@ implementation
accessed from within nested routines (start with extra dollar to prevent
the JVM from thinking this is a nested class in the unit) }
nestedvarsst:=trecordsymtable.create('$'+current_module.realmodulename^+'$$_fpc_nestedvars$'+tostr(pd.defid),current_settings.alignment.localalignmax);
- nestedvarsdef:=trecorddef.create(nestedvarsst.name^,nestedvarsst);
+ nestedvarsdef:=crecorddef.create(nestedvarsst.name^,nestedvarsst);
{$ifdef jvm}
maybe_guarantee_record_typesym(nestedvarsdef,nestedvarsdef.owner);
{ don't add clone/FpcDeepCopy, because the field names are not all
@@ -1118,7 +1118,7 @@ implementation
symtablestack.free;
symtablestack:=old_symtablestack.getcopyuntil(pd.localst);
pnestedvarsdef:=getpointerdef(nestedvarsdef);
- nestedvars:=tlocalvarsym.create('$nestedvars',vs_var,nestedvarsdef,[]);
+ nestedvars:=clocalvarsym.create('$nestedvars',vs_var,nestedvarsdef,[]);
pd.localst.insert(nestedvars);
pd.parentfpstruct:=nestedvars;
pd.parentfpstructptrtype:=pnestedvarsdef;
@@ -1151,7 +1151,7 @@ implementation
fieldvardef:=getpointerdef(vardef)
else
fieldvardef:=vardef;
- result:=tfieldvarsym.create(sym.realname,vs_value,fieldvardef,[]);
+ result:=cfieldvarsym.create(sym.realname,vs_value,fieldvardef,[]);
if nestedvarsst.symlist.count=0 then
include(tfieldvarsym(result).varoptions,vo_is_first_field);
nestedvarsst.insert(result);
@@ -1209,7 +1209,7 @@ implementation
sl:=tpropaccesslist.create;
sl.addsym(sl_load,pd.parentfpstruct);
sl.addsym(sl_subscript,tfieldvarsym(fsym));
- aliassym:=tabsolutevarsym.create_ref(lsym.name,tfieldvarsym(fsym).vardef,sl);
+ aliassym:=cabsolutevarsym.create_ref(lsym.name,tfieldvarsym(fsym).vardef,sl);
{ hide the original variable (can't delete, because there
may be other loadnodes that reference it)
-- only for locals; hiding parameters changes the
@@ -1250,7 +1250,7 @@ implementation
(def.typ=recorddef) and
not assigned(def.typesym) then
begin
- ts:=ttypesym.create(trecorddef(def).symtable.realname^,def);
+ ts:=ctypesym.create(trecorddef(def).symtable.realname^,def);
st.insert(ts);
ts.visibility:=vis_strictprivate;
{ this typesym can't be used by any Pascal code, so make sure we don't
@@ -1270,7 +1270,7 @@ implementation
include(fieldvs.symoptions,sp_static);
{ generate the symbol which reserves the space }
static_name:=lower(generate_nested_name(recst,'_'))+'_'+fieldvs.name;
- hstaticvs:=tstaticvarsym.create(internal_static_field_name(static_name),vs_value,fieldvs.vardef,[]);
+ hstaticvs:=cstaticvarsym.create_from_fieldvar(static_name,fieldvs);
{$ifdef jvm}
{ for the JVM, static field accesses are name-based and
hence we have to keep the original name of the field.
@@ -1304,7 +1304,7 @@ implementation
load node (handle_staticfield_access -> searchsym_in_class ->
is_visible_for_object), which means that the load will fail if this
symbol is e.g. "strict private" while the property is public }
- tmp:=tabsolutevarsym.create_ref('$'+static_name,fieldvs.vardef,sl);
+ tmp:=cabsolutevarsym.create_ref('$'+static_name,fieldvs.vardef,sl);
recst.insert(tmp);
result:=hstaticvs;
end;
diff --git a/compiler/symdef.pas b/compiler/symdef.pas
index 8b4c0d6be2..009ea5f7b2 100644
--- a/compiler/symdef.pas
+++ b/compiler/symdef.pas
@@ -37,9 +37,6 @@ interface
node,
{ aasm }
aasmbase,aasmtai,
-{$ifdef jvm}
- aasmdata,
-{$endif}
cpubase,cpuinfo,
cgbase,
parabase
@@ -68,9 +65,12 @@ interface
tstoreddef = class(tdef)
private
_fullownerhierarchyname : pshortstring;
+ procedure writeentry(ppufile: tcompilerppufile; ibnr: byte);
protected
typesymderef : tderef;
procedure fillgenericparas(symtable:tsymtable);
+ procedure ppuwrite_platform(ppufile:tcompilerppufile);virtual;
+ procedure ppuload_platform(ppufile:tcompilerppufile);virtual;
public
{$ifdef EXTDEBUG}
fileinfo : tfileposinfo;
@@ -128,12 +128,14 @@ interface
filetyp : tfiletyp;
typedfiledef : tdef;
typedfiledefderef : tderef;
- constructor createtext;
- constructor createuntyped;
- constructor createtyped(def : tdef);
+ constructor createtext;virtual;
+ constructor createuntyped;virtual;
+ constructor createtyped(def : tdef);virtual;
constructor ppuload(ppufile:tcompilerppufile);
function getcopy : tstoreddef;override;
- procedure ppuwrite(ppufile:tcompilerppufile);override;
+ { do not override this routine in platform-specific subclasses,
+ override ppuwrite_platform instead }
+ procedure ppuwrite(ppufile:tcompilerppufile);override;final;
procedure buildderef;override;
procedure deref;override;
function GetTypeName:string;override;
@@ -141,50 +143,64 @@ interface
function size:asizeint;override;
procedure setsize;
end;
+ tfiledefclass = class of tfiledef;
tvariantdef = class(tstoreddef)
varianttype : tvarianttype;
- constructor create(v : tvarianttype);
+ constructor create(v : tvarianttype);virtual;
constructor ppuload(ppufile:tcompilerppufile);
function getcopy : tstoreddef;override;
function GetTypeName:string;override;
- procedure ppuwrite(ppufile:tcompilerppufile);override;
+ { do not override this routine in platform-specific subclasses,
+ override ppuwrite_platform instead }
+ procedure ppuwrite(ppufile:tcompilerppufile);override;final;
function getvardef:longint;override;
procedure setsize;
function is_publishable : boolean;override;
function needs_inittable : boolean;override;
end;
+ tvariantdefclass = class of tvariantdef;
tformaldef = class(tstoreddef)
typed:boolean;
- constructor create(Atyped:boolean);
+ constructor create(Atyped:boolean);virtual;
constructor ppuload(ppufile:tcompilerppufile);
- procedure ppuwrite(ppufile:tcompilerppufile);override;
+ { do not override this routine in platform-specific subclasses,
+ override ppuwrite_platform instead }
+ procedure ppuwrite(ppufile:tcompilerppufile);override;final;
function GetTypeName:string;override;
end;
+ tformaldefclass = class of tformaldef;
tforwarddef = class(tstoreddef)
tosymname : pshortstring;
forwardpos : tfileposinfo;
- constructor create(const s:string;const pos:tfileposinfo);
+ constructor create(const s:string;const pos:tfileposinfo);virtual;
destructor destroy;override;
function getcopy:tstoreddef;override;
function GetTypeName:string;override;
end;
+ tforwarddefclass = class of tforwarddef;
tundefineddef = class(tstoreddef)
- constructor create;
+ constructor create;virtual;
constructor ppuload(ppufile:tcompilerppufile);
- procedure ppuwrite(ppufile:tcompilerppufile);override;
+ { do not override this routine in platform-specific subclasses,
+ override ppuwrite_platform instead }
+ procedure ppuwrite(ppufile:tcompilerppufile);override;final;
function GetTypeName:string;override;
end;
+ tundefineddefclass = class of tundefineddef;
terrordef = class(tstoreddef)
- constructor create;
- procedure ppuwrite(ppufile:tcompilerppufile);override;
+ constructor create;virtual;
+ { do not override this routine in platform-specific subclasses,
+ override ppuwrite_platform instead }
+ procedure ppuwrite(ppufile:tcompilerppufile);override;final;
function GetTypeName:string;override;
function getmangledparaname : TSymStr;override;
end;
+ terrordefclass = class of terrordef;
tabstractpointerdef = class(tstoreddef)
pointeddef : tdef;
@@ -194,26 +210,25 @@ interface
procedure ppuwrite(ppufile:tcompilerppufile);override;
procedure buildderef;override;
procedure deref;override;
+ function size:asizeint;override;
+ function alignment:shortint;override;
end;
{ tpointerdef }
tpointerdef = class(tabstractpointerdef)
-{$ifdef x86}
- x86pointertyp : tx86pointertyp;
-{$endif x86}
has_pointer_math : boolean;
- constructor create(def:tdef);
-{$ifdef x86}
- constructor createx86(def:tdef;x86typ:tx86pointertyp);
-{$endif x86}
+ constructor create(def:tdef);virtual;
function size:asizeint;override;
function getcopy:tstoreddef;override;
constructor ppuload(ppufile:tcompilerppufile);
- procedure ppuwrite(ppufile:tcompilerppufile);override;
+ { do not override this routine in platform-specific subclasses,
+ override ppuwrite_platform instead }
+ procedure ppuwrite(ppufile:tcompilerppufile);override;final;
function GetTypeName:string;override;
end;
+ tpointerdefclass = class of tpointerdef;
tprocdef = class;
@@ -270,11 +285,13 @@ interface
public
variantrecdesc : pvariantrecdesc;
isunion : boolean;
- constructor create(const n:string; p:TSymtable);
+ constructor create(const n:string; p:TSymtable);virtual;
constructor ppuload(ppufile:tcompilerppufile);
destructor destroy;override;
function getcopy : tstoreddef;override;
- procedure ppuwrite(ppufile:tcompilerppufile);override;
+ { do not override this routine in platform-specific subclasses,
+ override ppuwrite_platform instead }
+ procedure ppuwrite(ppufile:tcompilerppufile);override;final;
procedure buildderef;override;
procedure buildderefimpl;override;
procedure deref;override;
@@ -286,6 +303,7 @@ interface
function needs_inittable : boolean;override;
function needs_separate_initrtti:boolean;override;
end;
+ trecorddefclass = class of trecorddef;
tobjectdef = class;
@@ -305,8 +323,8 @@ interface
ImplementsGetter : tsym;
ImplementsGetterDeref : tderef;
ImplementsField : tsym;
- constructor create(aintf: tobjectdef);
- constructor create_deref(intfd,getterd:tderef);
+ constructor create(aintf: tobjectdef);virtual;
+ constructor create_deref(intfd,getterd:tderef);virtual;
destructor destroy; override;
function getcopy:TImplementedInterface;
procedure buildderef;
@@ -317,6 +335,7 @@ interface
function IsImplMergePossible(MergingIntf:TImplementedInterface;out weight: longint): boolean;
property IOffset: longint read GetIOffset write fIOffset;
end;
+ timplementedinterfaceclass = class of timplementedinterface;
{ tvmtentry }
tvmtentry = record
@@ -371,11 +390,13 @@ interface
}
classref_created_in_current_module : boolean;
objecttype : tobjecttyp;
- constructor create(ot:tobjecttyp;const n:string;c:tobjectdef);
+ constructor create(ot:tobjecttyp;const n:string;c:tobjectdef);virtual;
constructor ppuload(ppufile:tcompilerppufile);
destructor destroy;override;
function getcopy : tstoreddef;override;
- procedure ppuwrite(ppufile:tcompilerppufile);override;
+ { do not override this routine in platform-specific subclasses,
+ override ppuwrite_platform instead }
+ procedure ppuwrite(ppufile:tcompilerppufile);override;final;
function GetTypeName:string;override;
procedure buildderef;override;
procedure deref;override;
@@ -417,17 +438,21 @@ interface
{ C++ }
procedure finish_cpp_data;
end;
+ tobjectdefclass = class of tobjectdef;
tclassrefdef = class(tabstractpointerdef)
- constructor create(def:tdef);
+ constructor create(def:tdef);virtual;
constructor ppuload(ppufile:tcompilerppufile);
- procedure ppuwrite(ppufile:tcompilerppufile);override;
+ { do not override this routine in platform-specific subclasses,
+ override ppuwrite_platform instead }
+ procedure ppuwrite(ppufile:tcompilerppufile);override;final;
function getcopy:tstoreddef;override;
function GetTypeName:string;override;
function is_publishable : boolean;override;
function rtti_mangledname(rt:trttitype):string;override;
procedure register_created_object_type;override;
end;
+ tclassrefdefclass = class of tclassrefdef;
tarraydef = class(tstoreddef)
lowrange,
@@ -444,12 +469,14 @@ interface
function elesize : asizeint;
function elepackedbitsize : asizeint;
function elecount : asizeuint;
- constructor create_from_pointer(def:tdef);
- constructor create(l,h:asizeint;def:tdef);
+ constructor create_from_pointer(def:tdef);virtual;
+ constructor create(l,h:asizeint;def:tdef);virtual;
constructor ppuload(ppufile:tcompilerppufile);
destructor destroy; override;
function getcopy : tstoreddef;override;
- procedure ppuwrite(ppufile:tcompilerppufile);override;
+ { do not override this routine in platform-specific subclasses,
+ override ppuwrite_platform instead }
+ procedure ppuwrite(ppufile:tcompilerppufile);override;final;
function GetTypeName:string;override;
function getmangledparaname : TSymStr;override;
procedure buildderef;override;
@@ -462,14 +489,17 @@ interface
property elementdef : tdef read _elementdef write setelementdef;
function is_publishable : boolean;override;
end;
+ tarraydefclass = class of tarraydef;
torddef = class(tstoreddef)
low,high : TConstExprInt;
ordtype : tordtype;
- constructor create(t : tordtype;v,b : TConstExprInt);
+ constructor create(t : tordtype;v,b : TConstExprInt);virtual;
constructor ppuload(ppufile:tcompilerppufile);
function getcopy : tstoreddef;override;
- procedure ppuwrite(ppufile:tcompilerppufile);override;
+ { do not override this routine in platform-specific subclasses,
+ override ppuwrite_platform instead }
+ procedure ppuwrite(ppufile:tcompilerppufile);override;final;
function is_publishable : boolean;override;
function GetTypeName:string;override;
function alignment:shortint;override;
@@ -477,13 +507,16 @@ interface
function packedbitsize: asizeint; override;
function getvardef : longint;override;
end;
+ torddefclass = class of torddef;
tfloatdef = class(tstoreddef)
floattype : tfloattype;
- constructor create(t : tfloattype);
+ constructor create(t : tfloattype);virtual;
constructor ppuload(ppufile:tcompilerppufile);
function getcopy : tstoreddef;override;
- procedure ppuwrite(ppufile:tcompilerppufile);override;
+ { do not override this routine in platform-specific subclasses,
+ override ppuwrite_platform instead }
+ procedure ppuwrite(ppufile:tcompilerppufile);override;final;
function GetTypeName:string;override;
function is_publishable : boolean;override;
function alignment:shortint;override;
@@ -491,11 +524,13 @@ interface
procedure setsize;
function getvardef:longint;override;
end;
+ tfloatdefclass = class of tfloatdef;
{ tabstractprocdef }
tprocnameoption = (pno_showhidden, pno_proctypeoption, pno_paranames,
- pno_ownername, pno_noclassmarker, pno_noleadingdollar);
+ pno_ownername, pno_noclassmarker, pno_noleadingdollar,
+ pno_mangledname);
tprocnameoptions = set of tprocnameoption;
tproccopytyp = (pc_normal,
{ always creates a top-level function, removes all
@@ -538,27 +573,22 @@ interface
procedure check_mark_as_nested;
procedure init_paraloc_info(side: tcallercallee);
function stack_tainting_parameter(side: tcallercallee): boolean;
- function is_pushleftright: boolean;
- function address_type:tdef;
+ function is_pushleftright: boolean;virtual;
+ function address_type:tdef;virtual;
+ procedure declared_far;virtual;
+ procedure declared_near;virtual;
private
procedure count_para(p:TObject;arg:pointer);
procedure insert_para(p:TObject;arg:pointer);
end;
tprocvardef = class(tabstractprocdef)
-{$ifdef jvm}
- { class representing this procvar on the Java side }
- classdef : tobjectdef;
- classdefderef : tderef;
-{$endif}
- constructor create(level:byte);
+ constructor create(level:byte);virtual;
constructor ppuload(ppufile:tcompilerppufile);
function getcopy : tstoreddef;override;
- procedure ppuwrite(ppufile:tcompilerppufile);override;
-{$ifdef jvm}
- procedure buildderef;override;
- procedure deref;override;
-{$endif}
+ { do not override this routine in platform-specific subclasses,
+ override ppuwrite_platform instead }
+ procedure ppuwrite(ppufile:tcompilerppufile);override;final;
function GetSymtable(t:tGetSymtable):TSymtable;override;
function size : asizeint;override;
function GetTypeName:string;override;
@@ -567,6 +597,7 @@ interface
function is_addressonly:boolean;override;
function getmangledparaname:TSymStr;override;
end;
+ tprocvardefclass = class of tprocvardef;
tmessageinf = record
case integer of
@@ -612,7 +643,7 @@ interface
{ tprocdef }
tprocdef = class(tabstractprocdef)
- private
+ protected
{$ifdef symansistr}
_mangledname : ansistring;
{$else symansistr}
@@ -642,6 +673,10 @@ interface
procedure Setinterfacedef(AValue: boolean);
function Gethasforward: boolean;
procedure Sethasforward(AValue: boolean);
+ function GetIsEmpty: boolean;
+ procedure SetIsEmpty(AValue: boolean);
+ function GetHasInliningInfo: boolean;
+ procedure SetHasInliningInfo(AValue: boolean);
public
messageinf : tmessageinf;
dispid : longint;
@@ -665,50 +700,28 @@ interface
funcretsymderef : tderef;
struct : tabstractrecorddef;
structderef : tderef;
-{$if defined(powerpc) or defined(m68k)}
- { library symbol for AmigaOS/MorphOS }
- libsym : tsym;
- libsymderef : tderef;
-{$endif powerpc or m68k}
+ implprocoptions: timplprocoptions;
{ import info }
import_dll,
import_name : pshortstring;
{ info for inlining the subroutine, if this pointer is nil,
the procedure can't be inlined }
inlininginfo : pinlininginfo;
-{$ifdef jvm}
- { generated assembler code; used by JVM backend so it can afterwards
- easily write out all methods grouped per class }
- exprasmlist : TAsmList;
-{$endif jvm}
{$ifdef oldregvars}
regvarinfo: pregvarinfo;
{$endif oldregvars}
import_nr : word;
extnumber : word;
-{$if defined(i386) or defined(i8086)}
- fpu_used : byte;
-{$endif i386 or i8086}
-{$if defined(arm)}
- { the arm paramanager might need to know the total size of the stackframe
- to avoid cyclic unit dependencies or global variables, this infomatation is
- stored in total_stackframe_size }
- total_stackframe_size : aint;
-{$endif defined(arm)}
-{$ifdef mips}
- { needed for stabs debugging }
- total_local_size : longint;
-{$endif mips}
visibility : tvisibility;
{ set to a value different from tsk_none in case this procdef is for
a routine that has to be internally generated by the compiler }
synthetickind : tsynthetickind;
- { true, if the procedure contains no code }
- isempty: boolean;
- constructor create(level:byte);
+ constructor create(level:byte);virtual;
constructor ppuload(ppufile:tcompilerppufile);
destructor destroy;override;
- procedure ppuwrite(ppufile:tcompilerppufile);override;
+ { do not override this routine in platform-specific subclasses,
+ override ppuwrite_platform instead }
+ procedure ppuwrite(ppufile:tcompilerppufile);override;final;
procedure buildderef;override;
procedure buildderefimpl;override;
procedure deref;override;
@@ -724,16 +737,13 @@ interface
function getcopyas(newtyp:tdeftyp;copytyp:tproccopytyp): tstoreddef; override;
function getcopy: tstoreddef; override;
function GetTypeName : string;override;
- function mangledname : TSymStr;
+ function mangledname : TSymStr; virtual;
procedure setmangledname(const s : TSymStr);
function fullprocname(showhidden:boolean):string;
function customprocname(pno: tprocnameoptions):ansistring;
function defaultmangledname: TSymStr;
function cplusplusmangledname : TSymStr;
function objcmangledname : TSymStr;
-{$ifdef jvm}
- function jvmmangledbasename(signature: boolean): TSymStr;
-{$endif}
function is_methodpointer:boolean;override;
function is_addressonly:boolean;override;
procedure make_external;
@@ -768,7 +778,12 @@ interface
property interfacedef: boolean read Getinterfacedef write Setinterfacedef;
{ true if the procedure has a forward declaration }
property hasforward: boolean read Gethasforward write Sethasforward;
+ { true if the routine's body is empty }
+ property isempty: boolean read GetIsEmpty write SetIsEmpty;
+ { true if all information required to inline this routine is available }
+ property has_inlininginfo: boolean read GetHasInliningInfo write SetHasInliningInfo;
end;
+ tprocdefclass = class of tprocdef;
{ single linked list of overloaded procs }
pprocdeflist = ^tprocdeflist;
@@ -782,26 +797,30 @@ interface
encoding : tstringencoding;
stringtype : tstringtype;
len : asizeint;
- constructor createshort(l : byte);
+ constructor createshort(l : byte);virtual;
constructor loadshort(ppufile:tcompilerppufile);
- constructor createlong(l : asizeint);
+ constructor createlong(l : asizeint);virtual;
constructor loadlong(ppufile:tcompilerppufile);
- constructor createansi(aencoding:tstringencoding);
+ constructor createansi(aencoding:tstringencoding);virtual;
constructor loadansi(ppufile:tcompilerppufile);
- constructor createwide;
+ constructor createwide;virtual;
constructor loadwide(ppufile:tcompilerppufile);
- constructor createunicode;
- constructor loadunicode(ppufile:tcompilerppufile);
+ constructor createunicode;virtual;
+ constructor loadunicode(ppufile:tcompilerppufile);virtual;
function getcopy : tstoreddef;override;
function stringtypname:string;
- procedure ppuwrite(ppufile:tcompilerppufile);override;
+ { do not override this routine in platform-specific subclasses,
+ override ppuwrite_platform instead }
+ procedure ppuwrite(ppufile:tcompilerppufile);override;final;
function GetTypeName:string;override;
function getmangledparaname:TSymStr;override;
function is_publishable : boolean;override;
+ function size:asizeint;override;
function alignment : shortint;override;
function needs_inittable : boolean;override;
function getvardef:longint;override;
end;
+ tstringdefclass = class of tstringdef;
{ tenumdef }
@@ -811,18 +830,15 @@ interface
basedef : tenumdef;
basedefderef : tderef;
symtable : TSymtable;
-{$ifdef jvm}
- { class representing this enum on the Java side }
- classdef : tobjectdef;
- classdefderef : tderef;
-{$endif}
has_jumps : boolean;
- constructor create;
- constructor create_subrange(_basedef:tenumdef;_min,_max:asizeint);
+ constructor create;virtual;
+ constructor create_subrange(_basedef:tenumdef;_min,_max:asizeint);virtual;
constructor ppuload(ppufile:tcompilerppufile);
destructor destroy;override;
function getcopy : tstoreddef;override;
- procedure ppuwrite(ppufile:tcompilerppufile);override;
+ { do not override this routine in platform-specific subclasses,
+ override ppuwrite_platform instead }
+ procedure ppuwrite(ppufile:tcompilerppufile);override;final;
procedure buildderef;override;
procedure deref;override;
function GetTypeName:string;override;
@@ -838,21 +854,25 @@ interface
{ returns basedef if assigned, otherwise self }
function getbasedef: tenumdef;
end;
+ tenumdefclass = class of tenumdef;
tsetdef = class(tstoreddef)
elementdef : tdef;
elementdefderef : tderef;
setbase,
setmax : aword;
- constructor create(def:tdef;low, high : asizeint);
+ constructor create(def:tdef;low, high : asizeint);virtual;
constructor ppuload(ppufile:tcompilerppufile);
function getcopy : tstoreddef;override;
- procedure ppuwrite(ppufile:tcompilerppufile);override;
+ { do not override this routine in platform-specific subclasses,
+ override ppuwrite_platform instead }
+ procedure ppuwrite(ppufile:tcompilerppufile);override;final;
procedure buildderef;override;
procedure deref;override;
function GetTypeName:string;override;
function is_publishable : boolean;override;
end;
+ tsetdefclass = class of tsetdef;
tgenericdummyentry = class
@@ -880,11 +900,34 @@ interface
current_genericdef: tstoreddef; { used to reject declaration of generic class inside generic class }
current_specializedef: tstoreddef; { used to implement usage of generic class in itself }
+ cfiledef: tfiledefclass;
+ cvariantdef: tvariantdefclass;
+ cformaldef: tformaldefclass;
+ cforwarddef: tforwarddefclass;
+ cundefineddef: tundefineddefclass;
+ cerrordef: terrordefclass;
+ cpointerdef: tpointerdefclass;
+ crecorddef: trecorddefclass;
+ cimplementedinterface: timplementedinterfaceclass;
+ cobjectdef: tobjectdefclass;
+ cclassrefdef: tclassrefdefclass;
+ carraydef: tarraydefclass;
+ corddef: torddefclass;
+ cfloatdef: tfloatdefclass;
+ cprocvardef: tprocvardefclass;
+ cprocdef: tprocdefclass;
+ cstringdef: tstringdefclass;
+ cenumdef: tenumdefclass;
+ csetdef: tsetdefclass;
+
+
{ default types }
generrordef, { error in definition }
voidpointertype, { pointer for Void-pointeddef }
charpointertype, { pointer for Char-pointeddef }
widecharpointertype, { pointer for WideChar-pointeddef }
+ voidcodepointertype, { pointer to code; corresponds to System.CodePointer }
+ voidstackpointertype, { the pointer type used for accessing parameters and local vars on the stack }
parentfpvoidpointertype, { void pointer with the size of the hidden parentfp parameter, passed to nested functions }
{$ifdef x86}
voidnearpointertype,
@@ -897,6 +940,8 @@ interface
{$ifdef i8086}
voidfarpointertype,
voidhugepointertype,
+ charnearpointertype,
+ charfarpointertype,
bytefarpointertype, { used for Mem[] }
wordfarpointertype, { used for MemW[] }
longintfarpointertype, { used for MemL[] }
@@ -1006,52 +1051,6 @@ interface
{ FPC java procvar base class }
java_procvarbase : tobjectdef;
- const
-{$ifdef i8086}
- pbestrealtype : ^tdef = @s80floattype;
-{$endif}
-{$ifdef i386}
- pbestrealtype : ^tdef = @s80floattype;
-{$endif}
-{$ifdef x86_64}
- pbestrealtype : ^tdef = @s80floattype;
-{$endif}
-{$ifdef m68k}
- pbestrealtype : ^tdef = @s64floattype;
-{$endif}
-{$ifdef alpha}
- pbestrealtype : ^tdef = @s64floattype;
-{$endif}
-{$ifdef powerpc}
- pbestrealtype : ^tdef = @s64floattype;
-{$endif}
-{$ifdef POWERPC64}
- pbestrealtype : ^tdef = @s64floattype;
-{$endif}
-{$ifdef ia64}
- pbestrealtype : ^tdef = @s64floattype;
-{$endif}
-{$ifdef SPARC}
- pbestrealtype : ^tdef = @s64floattype;
-{$endif SPARC}
-{$ifdef vis}
- pbestrealtype : ^tdef = @s64floattype;
-{$endif vis}
-{$ifdef ARM}
- pbestrealtype : ^tdef = @s64floattype;
-{$endif ARM}
-{$ifdef MIPS}
- pbestrealtype : ^tdef = @s64floattype;
-{$endif MIPS}
-{$ifdef AVR}
- pbestrealtype : ^tdef = @s64floattype;
-{$endif AVR}
-{$ifdef JVM}
- pbestrealtype : ^tdef = @s64floattype;
-{$endif JVM}
-{$ifdef AARCH64}
- pbestrealtype : ^tdef = @s64floattype;
-{$endif AARCH64}
function make_mangledname(const typeprefix:TSymStr;st:TSymtable;const suffix:TSymStr):TSymStr;
function make_dllmangledname(const dllname,importname:TSymStr;
@@ -1109,10 +1108,6 @@ interface
function getansistringdef:tstringdef;
function getparaencoding(def:tdef):tstringencoding; inline;
-{$ifdef x86}
- function default_x86_data_pointer_type: tx86pointertyp;
-{$endif x86}
-
implementation
uses
@@ -1124,9 +1119,6 @@ implementation
systems,paramgr,
{ symtable }
symsym,symtable,defutil,objcdef,
-{$ifdef jvm}
- jvmdef,
-{$endif}
{ parser }
pgenutil,
{ module }
@@ -1168,7 +1160,7 @@ implementation
else
symtable:=current_module.localsymtable;
symtablestack.push(symtable);
- current_module.ansistrdef:=tstringdef.createansi(current_settings.sourcecodepage);
+ current_module.ansistrdef:=cstringdef.createansi(current_settings.sourcecodepage);
symtablestack.pop(symtable);
end;
result:=tstringdef(current_module.ansistrdef);
@@ -1616,6 +1608,13 @@ implementation
end;
+ procedure tstoreddef.writeentry(ppufile: tcompilerppufile; ibnr: byte);
+ begin
+ ppuwrite_platform(ppufile);
+ ppufile.writeentry(ibnr);
+ end;
+
+
procedure tstoreddef.fillgenericparas(symtable: tsymtable);
var
sym : tsym;
@@ -1637,6 +1636,19 @@ implementation
end;
end;
+
+ procedure tstoreddef.ppuwrite_platform(ppufile: tcompilerppufile);
+ begin
+ { by default: do nothing }
+ end;
+
+
+ procedure tstoreddef.ppuload_platform(ppufile: tcompilerppufile);
+ begin
+ { by default: do nothing }
+ end;
+
+
constructor tstoreddef.create(dt:tdeftyp);
var
insertstack : psymtablestackitem;
@@ -1820,7 +1832,7 @@ implementation
function tstoreddef.getcopy : tstoreddef;
begin
Message(sym_e_cant_create_unique_type);
- getcopy:=terrordef.create;
+ getcopy:=cerrordef.create;
end;
@@ -2025,7 +2037,6 @@ implementation
stringtype:=st_shortstring;
encoding:=0;
len:=l;
- savesize:=len+1;
end;
@@ -2035,7 +2046,7 @@ implementation
stringtype:=st_shortstring;
encoding:=0;
len:=ppufile.getbyte;
- savesize:=len+1;
+ ppuload_platform(ppufile);
end;
@@ -2045,7 +2056,6 @@ implementation
stringtype:=st_longstring;
encoding:=0;
len:=l;
- savesize:=sizeof(pint);
end;
@@ -2055,7 +2065,7 @@ implementation
stringtype:=st_longstring;
encoding:=0;
len:=ppufile.getasizeint;
- savesize:=sizeof(pint);
+ ppuload_platform(ppufile);
end;
@@ -2065,7 +2075,6 @@ implementation
stringtype:=st_ansistring;
encoding:=aencoding;
len:=-1;
- savesize:=sizeof(pint);
end;
@@ -2075,7 +2084,7 @@ implementation
stringtype:=st_ansistring;
len:=ppufile.getaint;
encoding:=ppufile.getword;
- savesize:=sizeof(pint);
+ ppuload_platform(ppufile);
end;
@@ -2088,7 +2097,6 @@ implementation
else
encoding:=CP_UTF16BE;
len:=-1;
- savesize:=sizeof(pint);
end;
@@ -2101,7 +2109,7 @@ implementation
else
encoding:=CP_UTF16BE;
len:=ppufile.getaint;
- savesize:=sizeof(pint);
+ ppuload_platform(ppufile);
end;
@@ -2114,7 +2122,6 @@ implementation
else
encoding:=CP_UTF16BE;
len:=-1;
- savesize:=sizeof(pint);
end;
@@ -2124,18 +2131,17 @@ implementation
stringtype:=st_unicodestring;
len:=ppufile.getaint;
encoding:=ppufile.getword;
- savesize:=sizeof(pint);
+ ppuload_platform(ppufile);
end;
function tstringdef.getcopy : tstoreddef;
begin
- result:=tstringdef.create(typ);
+ result:=cstringdef.create(typ);
result.typ:=stringdef;
tstringdef(result).stringtype:=stringtype;
tstringdef(result).encoding:=encoding;
tstringdef(result).len:=len;
- tstringdef(result).savesize:=savesize;
end;
@@ -2164,11 +2170,11 @@ implementation
if stringtype in [st_ansistring,st_unicodestring] then
ppufile.putword(encoding);
case stringtype of
- st_shortstring : ppufile.writeentry(ibshortstringdef);
- st_longstring : ppufile.writeentry(iblongstringdef);
- st_ansistring : ppufile.writeentry(ibansistringdef);
- st_widestring : ppufile.writeentry(ibwidestringdef);
- st_unicodestring : ppufile.writeentry(ibunicodestringdef);
+ st_shortstring : writeentry(ppufile,ibshortstringdef);
+ st_longstring : writeentry(ppufile,iblongstringdef);
+ st_ansistring : writeentry(ppufile,ibansistringdef);
+ st_widestring : writeentry(ppufile,ibwidestringdef);
+ st_unicodestring : writeentry(ppufile,ibunicodestringdef);
end;
end;
@@ -2203,7 +2209,7 @@ implementation
st_unicodestring,
st_widestring,
st_ansistring:
- alignment:=size_2_align(savesize);
+ alignment:=size_2_align(size);
st_longstring,
st_shortstring:
{ char to string accesses byte 0 and 1 with one word access }
@@ -2231,6 +2237,22 @@ implementation
end;
+ function tstringdef.size: asizeint;
+ begin
+ case stringtype of
+ st_shortstring:
+ Result:=len+1;
+ st_longstring,
+ st_ansistring,
+ st_widestring,
+ st_unicodestring:
+ Result:=voidpointertype.size;
+ else
+ internalerror(2014032301);
+ end;
+ end;
+
+
{****************************************************************************
TENUMDEF
****************************************************************************}
@@ -2267,16 +2289,15 @@ implementation
maxval:=ppufile.getaint;
savesize:=ppufile.getaint;
has_jumps:=false;
-{$ifdef jvm}
- ppufile.getderef(classdefderef);
-{$endif}
if df_copied_def in defoptions then
begin
symtable:=nil;
ppufile.getderef(basedefderef);
+ ppuload_platform(ppufile);
end
else
begin
+ ppuload_platform(ppufile);
// create with nil defowner first to prevent values changes on insert
symtable:=tenumsymtable.create(nil);
tenumsymtable(symtable).ppuload(ppufile);
@@ -2295,19 +2316,16 @@ implementation
function tenumdef.getcopy : tstoreddef;
begin
if assigned(basedef) then
- result:=tenumdef.create_subrange(basedef,minval,maxval)
+ result:=cenumdef.create_subrange(basedef,minval,maxval)
else
begin
- result:=tenumdef.create;
+ result:=cenumdef.create;
tenumdef(result).minval:=minval;
tenumdef(result).maxval:=maxval;
tenumdef(result).symtable.free;
tenumdef(result).symtable:=symtable.getcopy;
tenumdef(result).basedef:=self;
end;
-{$ifdef jvm}
- tenumdef(result).classdef:=classdef;
-{$endif}
tenumdef(result).has_jumps:=has_jumps;
tenumdef(result).basedefderef:=basedefderef;
include(tenumdef(result).defoptions,df_copied_def);
@@ -2433,9 +2451,6 @@ implementation
basedefderef.build(basedef)
else
tenumsymtable(symtable).buildderef;
-{$ifdef jvm}
- classdefderef.build(classdef);
-{$endif}
end;
@@ -2449,9 +2464,6 @@ implementation
end
else
tenumsymtable(symtable).deref;
-{$ifdef jvm}
- classdef:=tobjectdef(classdefderef.resolve);
-{$endif}
end;
@@ -2461,12 +2473,9 @@ implementation
ppufile.putaint(min);
ppufile.putaint(max);
ppufile.putaint(savesize);
-{$ifdef jvm}
- ppufile.putderef(classdefderef);
-{$endif}
if df_copied_def in defoptions then
ppufile.putderef(basedefderef);
- ppufile.writeentry(ibenumdef);
+ writeentry(ppufile,ibenumdef);
if not (df_copied_def in defoptions) then
tenumsymtable(symtable).ppuwrite(ppufile);
end;
@@ -2505,12 +2514,13 @@ implementation
low:=ppufile.getexprint;
high:=ppufile.getexprint;
setsize;
+ ppuload_platform(ppufile);
end;
function torddef.getcopy : tstoreddef;
begin
- result:=torddef.create(ordtype,low,high);
+ result:=corddef.create(ordtype,low,high);
result.typ:=orddef;
torddef(result).low:=low;
torddef(result).high:=high;
@@ -2599,7 +2609,7 @@ implementation
ppufile.putbyte(byte(ordtype));
ppufile.putexprint(low);
ppufile.putexprint(high);
- ppufile.writeentry(iborddef);
+ writeentry(ppufile,iborddef);
end;
@@ -2641,12 +2651,13 @@ implementation
inherited ppuload(floatdef,ppufile);
floattype:=tfloattype(ppufile.getbyte);
setsize;
+ ppuload_platform(ppufile);
end;
function tfloatdef.getcopy : tstoreddef;
begin
- result:=tfloatdef.create(floattype);
+ result:=cfloatdef.create(floattype);
result.typ:=floatdef;
tfloatdef(result).savesize:=savesize;
end;
@@ -2724,7 +2735,7 @@ implementation
begin
inherited ppuwrite(ppufile);
ppufile.putbyte(byte(floattype));
- ppufile.writeentry(ibfloatdef);
+ writeentry(ppufile,ibfloatdef);
end;
@@ -2779,6 +2790,7 @@ implementation
ppufile.getderef(typedfiledefderef)
else
typedfiledef:=nil;
+ ppuload_platform(ppufile);
end;
@@ -2786,11 +2798,11 @@ implementation
begin
case filetyp of
ft_typed:
- result:=tfiledef.createtyped(typedfiledef);
+ result:=cfiledef.createtyped(typedfiledef);
ft_untyped:
- result:=tfiledef.createuntyped;
+ result:=cfiledef.createuntyped;
ft_text:
- result:=tfiledef.createtext;
+ result:=cfiledef.createtext;
else
internalerror(2004121201);
end;
@@ -2847,7 +2859,7 @@ implementation
ppufile.putbyte(byte(filetyp));
if filetyp=ft_typed then
ppufile.putderef(typedfiledefderef);
- ppufile.writeentry(ibfiledef);
+ writeentry(ppufile,ibfiledef);
end;
@@ -2898,12 +2910,13 @@ implementation
inherited ppuload(variantdef,ppufile);
varianttype:=tvarianttype(ppufile.getbyte);
setsize;
+ ppuload_platform(ppufile);
end;
function tvariantdef.getcopy : tstoreddef;
begin
- result:=tvariantdef.create(varianttype);
+ result:=cvariantdef.create(varianttype);
end;
@@ -2911,7 +2924,7 @@ implementation
begin
inherited ppuwrite(ppufile);
ppufile.putbyte(byte(varianttype));
- ppufile.writeentry(ibvariantdef);
+ writeentry(ppufile,ibvariantdef);
end;
@@ -2964,7 +2977,6 @@ implementation
begin
inherited create(dt);
pointeddef:=def;
- savesize:=sizeof(pint);
end;
@@ -2972,7 +2984,6 @@ implementation
begin
inherited ppuload(dt,ppufile);
ppufile.getderef(pointeddefderef);
- savesize:=sizeof(pint);
end;
@@ -2990,6 +3001,18 @@ implementation
end;
+ function tabstractpointerdef.size: asizeint;
+ begin
+ Result:=voidpointertype.size;
+ end;
+
+
+ function tabstractpointerdef.alignment: shortint;
+ begin
+ alignment:=size_2_align(voidpointertype.size);
+ end;
+
+
procedure tabstractpointerdef.ppuwrite(ppufile:tcompilerppufile);
begin
inherited ppuwrite(ppufile);
@@ -3004,41 +3027,21 @@ implementation
constructor tpointerdef.create(def:tdef);
begin
inherited create(pointerdef,def);
-{$ifdef x86}
- x86pointertyp := default_x86_data_pointer_type;
-{$endif x86}
- has_pointer_math:=cs_pointermath in current_settings.localswitches;
- end;
-
-
-{$ifdef x86}
- constructor tpointerdef.createx86(def: tdef; x86typ: tx86pointertyp);
- begin
- inherited create(pointerdef,def);
- x86pointertyp := x86typ;
has_pointer_math:=cs_pointermath in current_settings.localswitches;
end;
-{$endif x86}
function tpointerdef.size: asizeint;
begin
-{$ifdef x86}
- if x86pointertyp in [x86pt_far,x86pt_huge] then
- result:=sizeof(pint)+2
- else
-{$endif x86}
- result:=sizeof(pint);
+ result:=sizeof(pint);
end;
constructor tpointerdef.ppuload(ppufile:tcompilerppufile);
begin
inherited ppuload(pointerdef,ppufile);
-{$ifdef x86}
- x86pointertyp:=tx86pointertyp(ppufile.getbyte);
-{$endif x86}
has_pointer_math:=(ppufile.getbyte<>0);
+ ppuload_platform(ppufile);
end;
@@ -3048,12 +3051,9 @@ implementation
one of them will be destroyed on forward type resolve and the second will
point to garbage }
if pointeddef.typ=forwarddef then
- result:=tpointerdef.create(tforwarddef(pointeddef).getcopy)
+ result:=cpointerdef.create(tforwarddef(pointeddef).getcopy)
else
- result:=tpointerdef.create(pointeddef);
-{$ifdef x86}
- tpointerdef(result).x86pointertyp:=x86pointertyp;
-{$endif x86}
+ result:=cpointerdef.create(pointeddef);
tpointerdef(result).has_pointer_math:=has_pointer_math;
tpointerdef(result).savesize:=savesize;
end;
@@ -3062,11 +3062,8 @@ implementation
procedure tpointerdef.ppuwrite(ppufile:tcompilerppufile);
begin
inherited ppuwrite(ppufile);
-{$ifdef x86}
- ppufile.putbyte(byte(x86pointertyp));
-{$endif x86}
ppufile.putbyte(byte(has_pointer_math));
- ppufile.writeentry(ibpointerdef);
+ writeentry(ppufile,ibpointerdef);
end;
@@ -3082,33 +3079,6 @@ implementation
GetTypeName:='^'+pointeddef.typename
else
GetTypeName:='^'+pointeddef.typesym.realname;
-{$ifdef x86}
- if x86pointertyp<>default_x86_data_pointer_type then
- begin
- case x86pointertyp of
- x86pt_near:
- GetTypeName:=Result+';near';
- x86pt_near_cs:
- GetTypeName:=Result+';near ''CS''';
- x86pt_near_ds:
- GetTypeName:=Result+';near ''DS''';
- x86pt_near_ss:
- GetTypeName:=Result+';near ''SS''';
- x86pt_near_es:
- GetTypeName:=Result+';near ''ES''';
- x86pt_near_fs:
- GetTypeName:=Result+';near ''FS''';
- x86pt_near_gs:
- GetTypeName:=Result+';near ''GS''';
- x86pt_far:
- GetTypeName:=Result+';far';
- x86pt_huge:
- GetTypeName:=Result+';huge';
- else
- internalerror(2013050301);
- end;
- end;
-{$endif x86}
end;
@@ -3125,23 +3095,23 @@ implementation
constructor tclassrefdef.ppuload(ppufile:tcompilerppufile);
begin
inherited ppuload(classrefdef,ppufile);
+ ppuload_platform(ppufile);
end;
procedure tclassrefdef.ppuwrite(ppufile:tcompilerppufile);
begin
inherited ppuwrite(ppufile);
- ppufile.writeentry(ibclassrefdef);
+ writeentry(ppufile,ibclassrefdef);
end;
function tclassrefdef.getcopy:tstoreddef;
begin
if pointeddef.typ=forwarddef then
- result:=tclassrefdef.create(tforwarddef(pointeddef).getcopy)
+ result:=cclassrefdef.create(tforwarddef(pointeddef).getcopy)
else
- result:=tclassrefdef.create(pointeddef);
- tclassrefdef(result).savesize:=savesize;
+ result:=cclassrefdef.create(pointeddef);
end;
@@ -3179,11 +3149,17 @@ implementation
var
setallocbits: aint;
packedsavesize: aint;
+ actual_setalloc: ShortInt;
begin
inherited create(setdef);
elementdef:=def;
setmax:=high;
- if (current_settings.setalloc=0) then
+ actual_setalloc:=current_settings.setalloc;
+{$if defined(cpu8bitalu) or defined(cpu16bitalu)}
+ if actual_setalloc=0 then
+ actual_setalloc:=1;
+{$endif}
+ if (actual_setalloc=0) then
begin
setbase:=0;
if (high<32) then
@@ -3195,12 +3171,14 @@ implementation
end
else
begin
- setallocbits:=current_settings.setalloc*8;
+ setallocbits:=actual_setalloc*8;
setbase:=low and not(setallocbits-1);
- packedsavesize:=current_settings.setalloc*((((high+setallocbits)-setbase)) DIV setallocbits);
+ packedsavesize:=actual_setalloc*((((high+setallocbits)-setbase)) DIV setallocbits);
savesize:=packedsavesize;
+{$if not defined(cpu8bitalu) and not defined(cpu16bitalu)}
if savesize=3 then
savesize:=4;
+{$endif}
end;
end;
@@ -3212,12 +3190,13 @@ implementation
savesize:=ppufile.getaint;
setbase:=ppufile.getaint;
setmax:=ppufile.getaint;
+ ppuload_platform(ppufile);
end;
function tsetdef.getcopy : tstoreddef;
begin
- result:=tsetdef.create(elementdef,setbase,setmax);
+ result:=csetdef.create(elementdef,setbase,setmax);
{ the copy might have been created with a different setalloc setting }
tsetdef(result).savesize:=savesize;
end;
@@ -3230,7 +3209,7 @@ implementation
ppufile.putaint(savesize);
ppufile.putaint(setbase);
ppufile.putaint(setmax);
- ppufile.writeentry(ibsetdef);
+ writeentry(ppufile,ibsetdef);
end;
@@ -3280,6 +3259,7 @@ implementation
inherited ppuload(formaldef,ppufile);
typed:=boolean(ppufile.getbyte);
savesize:=0;
+ ppuload_platform(ppufile);
end;
@@ -3287,7 +3267,7 @@ implementation
begin
inherited ppuwrite(ppufile);
ppufile.putbyte(byte(typed));
- ppufile.writeentry(ibformaldef);
+ writeentry(ppufile,ibformaldef);
end;
@@ -3340,6 +3320,7 @@ implementation
lowrange:=ppufile.getasizeint;
highrange:=ppufile.getasizeint;
ppufile.getsmallset(arrayoptions);
+ ppuload_platform(ppufile);
symtable:=tarraysymtable.create(self);
tarraysymtable(symtable).ppuload(ppufile)
end;
@@ -3347,7 +3328,7 @@ implementation
function tarraydef.getcopy : tstoreddef;
begin
- result:=tarraydef.create(lowrange,highrange,rangedef);
+ result:=carraydef.create(lowrange,highrange,rangedef);
tarraydef(result).arrayoptions:=arrayoptions;
tarraydef(result)._elementdef:=_elementdef;
end;
@@ -3380,7 +3361,7 @@ implementation
ppufile.putasizeint(lowrange);
ppufile.putasizeint(highrange);
ppufile.putsmallset(arrayoptions);
- ppufile.writeentry(ibarraydef);
+ writeentry(ppufile,ibarraydef);
tarraysymtable(symtable).ppuwrite(ppufile);
end;
@@ -3438,7 +3419,7 @@ implementation
begin
if ado_IsDynamicArray in arrayoptions then
begin
- size:=sizeof(pint);
+ size:=voidpointertype.size;
exit;
end;
@@ -3499,7 +3480,7 @@ implementation
begin
{ alignment of dyn. arrays doesn't depend on the element size }
if (ado_IsDynamicArray in arrayoptions) then
- alignment:=size_2_align(sizeof(pint))
+ alignment:=size_2_align(voidpointertype.size)
{ alignment is the target alignment for the used load size }
else if (ado_IsBitPacked in arrayoptions) and
(elementdef.typ in [enumdef,orddef]) then
@@ -3859,9 +3840,13 @@ implementation
begin
inherited ppuload(recorddef,ppufile);
if df_copied_def in defoptions then
- ppufile.getderef(cloneddefderef)
+ begin
+ ppufile.getderef(cloneddefderef);
+ ppuload_platform(ppufile);
+ end
else
begin
+ ppuload_platform(ppufile);
symtable:=trecordsymtable.create(objrealname^,0);
trecordsymtable(symtable).fieldalignment:=shortint(ppufile.getbyte);
trecordsymtable(symtable).recordalignment:=shortint(ppufile.getbyte);
@@ -3895,7 +3880,7 @@ implementation
function trecorddef.getcopy : tstoreddef;
begin
- result:=trecorddef.create(objrealname^,symtable.getcopy);
+ result:=crecorddef.create(objrealname^,symtable.getcopy);
trecorddef(result).isunion:=isunion;
include(trecorddef(result).defoptions,df_copied_def);
if assigned(tcinitcode) then
@@ -4008,7 +3993,7 @@ implementation
// writevariantrecdesc(variantrecdesc);
end;
- ppufile.writeentry(ibrecorddef);
+ writeentry(ppufile,ibrecorddef);
if not(df_copied_def in defoptions) then
trecordsymtable(symtable).ppuwrite(ppufile);
@@ -4053,10 +4038,6 @@ implementation
proctypeoption:=potype_none;
proccalloption:=pocall_none;
procoptions:=[];
-{$ifdef i8086}
- if current_settings.x86memorymodel in x86_far_code_models then
- procoptions:=procoptions+[po_far];
-{$endif i8086}
returndef:=voidtype;
savesize:=sizeof(pint);
callerargareasize:=0;
@@ -4189,8 +4170,6 @@ implementation
minparacount:=0;
maxparacount:=0;
ppufile.getderef(returndefderef);
-{ TODO: remove fpu_used loading}
- ppufile.getbyte;
proctypeoption:=tproctypeoption(ppufile.getbyte);
proccalloption:=tproccalloption(ppufile.getbyte);
ppufile.getnormalset(procoptions);
@@ -4216,7 +4195,6 @@ implementation
ppufile.putderef(returndefderef);
oldintfcrc:=ppufile.do_interface_crc;
ppufile.do_interface_crc:=false;
- ppufile.putbyte(0);
ppufile.putbyte(ord(proctypeoption));
ppufile.putbyte(ord(proccalloption));
ppufile.putnormalset(procoptions);
@@ -4363,14 +4341,14 @@ implementation
if newtyp=procdef then
begin
if (copytyp<>pc_bareproc) then
- result:=tprocdef.create(nestinglevel)
+ result:=cprocdef.create(nestinglevel)
else
- result:=tprocdef.create(normal_function_level);
+ result:=cprocdef.create(normal_function_level);
tprocdef(result).visibility:=vis_public;
end
else
begin
- result:=tprocvardef.create(nestinglevel);
+ result:=cprocvardef.create(nestinglevel);
end;
tabstractprocdef(result).returndef:=returndef;
tabstractprocdef(result).returndefderef:=returndefderef;
@@ -4387,7 +4365,7 @@ implementation
if (copytyp=pc_bareproc) and
(([vo_is_self,vo_is_vmt,vo_is_parentfp,vo_is_result]*pvs.varoptions)<>[]) then
continue;
- npvs:=tparavarsym.create(pvs.realname,pvs.paranr,pvs.varspez,
+ npvs:=cparavarsym.create(pvs.realname,pvs.paranr,pvs.varspez,
pvs.vardef,pvs.varoptions);
npvs.defaultconstsym:=pvs.defaultconstsym;
tabstractprocdef(result).parast.insert(npvs);
@@ -4499,23 +4477,24 @@ implementation
function tabstractprocdef.is_pushleftright: boolean;
begin
-{$if defined(i8086) or defined(i386)}
- result:=proccalloption in pushleftright_pocalls;
-{$else}
result:=false;
-{$endif}
end;
function tabstractprocdef.address_type: tdef;
begin
-{$ifdef i8086}
- if po_far in procoptions then
- result:=voidfarpointertype
- else
- result:=voidnearpointertype;
-{$else i8086}
- result:=voidpointertype;
-{$endif i8086}
+ result:=voidcodepointertype;
+ end;
+
+
+ procedure tabstractprocdef.declared_far;
+ begin
+ Message1(parser_w_proc_directive_ignored,'FAR');
+ end;
+
+
+ procedure tabstractprocdef.declared_near;
+ begin
+ Message1(parser_w_proc_directive_ignored,'NEAR');
end;
@@ -4651,6 +4630,36 @@ implementation
end;
+ function tprocdef.GetIsEmpty: boolean;
+ begin
+ result:=pio_empty in implprocoptions;
+ end;
+
+
+ procedure tprocdef.SetIsEmpty(AValue: boolean);
+ begin
+ if AValue then
+ include(implprocoptions,pio_empty)
+ else
+ include(implprocoptions,pio_empty);
+ end;
+
+
+ function tprocdef.GetHasInliningInfo: boolean;
+ begin
+ result:=pio_has_inlininginfo in implprocoptions;
+ end;
+
+
+ procedure tprocdef.SetHasInliningInfo(AValue: boolean);
+ begin
+ if AValue then
+ include(implprocoptions,pio_has_inlininginfo)
+ else
+ exclude(implprocoptions,pio_has_inlininginfo);
+ end;
+
+
procedure tprocdef.Setinterfacedef(AValue: boolean);
begin
if not assigned(implprocdefinfo) then
@@ -4706,9 +4715,6 @@ implementation
import_nr:=0;
inlininginfo:=nil;
deprecatedmsg:=nil;
-{$if defined(i386) or defined(i8086)}
- fpu_used:=maxfpuregs;
-{$endif i386 or i8086}
end;
@@ -4741,10 +4747,6 @@ implementation
else
deprecatedmsg:=nil;
synthetickind:=tsynthetickind(ppufile.getbyte);
-{$ifdef powerpc}
- { library symbol for AmigaOS/MorphOS }
- ppufile.getderef(libsymderef);
-{$endif powerpc}
{ import stuff }
if po_has_importdll in procoptions then
import_dll:=stringdup(ppufile.getstring)
@@ -4762,7 +4764,8 @@ implementation
if (po_dispid in procoptions) then
dispid:=ppufile.getlongint;
{ inline stuff }
- if (po_has_inlininginfo in procoptions) then
+ ppufile.getsmallset(implprocoptions);
+ if has_inlininginfo then
begin
ppufile.getderef(funcretsymderef);
new(inlininginfo);
@@ -4780,13 +4783,13 @@ implementation
for i:=1 to aliasnamescount do
aliasnames.insert(ppufile.getstring);
- isempty:=ppufile.getbyte<>0;
+ ppuload_platform(ppufile);
{ load para symtable }
parast:=tparasymtable.create(self,level);
tparasymtable(parast).ppuload(ppufile);
{ load local symtable }
- if (po_has_inlininginfo in procoptions) then
+ if has_inlininginfo then
begin
localst:=tlocalsymtable.create(self,level);
tlocalsymtable(localst).ppuload(ppufile);
@@ -4794,7 +4797,7 @@ implementation
else
localst:=nil;
{ inline stuff }
- if (po_has_inlininginfo in procoptions) then
+ if has_inlininginfo then
inlininginfo^.code:=ppuloadnodetree(ppufile);
{ default values for no persistent data }
if (cs_link_deffile in current_settings.globalswitches) and
@@ -4802,10 +4805,7 @@ implementation
(po_exports in procoptions) then
deffile.AddExport(mangledname);
{ Disable po_has_inlining until the derefimpl is done }
- exclude(procoptions,po_has_inlininginfo);
-{$ifdef i386}
- fpu_used:=maxfpuregs;
-{$endif i386}
+ has_inlininginfo:=false;
end;
@@ -4837,9 +4837,6 @@ implementation
dispose(inlininginfo);
inlininginfo:=nil;
end;
-{$ifdef jvm}
- exprasmlist.free;
-{$endif}
if assigned(implprocdefinfo) then
begin
stringdispose(implprocdefinfo^.resultname);
@@ -4896,10 +4893,6 @@ implementation
if sp_has_deprecated_msg in symoptions then
ppufile.putstring(deprecatedmsg^);
ppufile.putbyte(byte(synthetickind));
-{$ifdef powerpc}
- { library symbol for AmigaOS/MorphOS }
- ppufile.putderef(libsymderef);
-{$endif powerpc}
{ import }
if po_has_importdll in procoptions then
ppufile.putstring(import_dll^);
@@ -4915,7 +4908,8 @@ implementation
{ inline stuff }
oldintfcrc:=ppufile.do_crc;
ppufile.do_crc:=false;
- if (po_has_inlininginfo in procoptions) then
+ ppufile.putsmallset(implprocoptions);
+ if has_inlininginfo then
begin
ppufile.putderef(funcretsymderef);
ppufile.putsmallset(inlininginfo^.flags);
@@ -4939,19 +4933,17 @@ implementation
item:=TCmdStrListItem(item.next);
end;
- ppufile.putbyte(ord(isempty));
-
ppufile.do_crc:=oldintfcrc;
{ write this entry }
- ppufile.writeentry(ibprocdef);
+ writeentry(ppufile,ibprocdef);
{ Save the para symtable, this is taken from the interface }
tparasymtable(parast).ppuwrite(ppufile);
{ save localsymtable for inline procedures or when local
browser info is requested, this has no influence on the crc }
- if (po_has_inlininginfo in procoptions) then
+ if has_inlininginfo then
begin
oldintfcrc:=ppufile.do_crc;
ppufile.do_crc:=false;
@@ -4962,7 +4954,7 @@ implementation
{ node tree for inlining }
oldintfcrc:=ppufile.do_crc;
ppufile.do_crc:=false;
- if (po_has_inlininginfo in procoptions) then
+ if has_inlininginfo then
ppuwritenodetree(ppufile,inlininginfo^.code);
ppufile.do_crc:=oldintfcrc;
end;
@@ -5046,6 +5038,8 @@ implementation
if (po_staticmethod in procoptions) and
not (proctypeoption in [potype_class_constructor,potype_class_destructor]) then
s:=s+' Static;';
+ if pno_mangledname in pno then
+ s:=s+' -- mangled name: '+mangledname;
customprocname:=s;
end;
@@ -5125,9 +5119,6 @@ implementation
end;
{ will have to be associated with a new struct }
tprocdef(result).struct:=nil;
-{$if defined(powerpc) or defined(m68k)}
- tprocdef(result).libsym:=libsym;
-{$endif powerpc or m68k}
if assigned(implprocdefinfo) then
begin
if assigned(resultname) then
@@ -5139,9 +5130,6 @@ implementation
tprocdef(result).import_name:=stringdup(import_name^);
tprocdef(result).import_nr:=import_nr;
tprocdef(result).extnumber:=$ffff;
-{$if defined(i386) or defined(i8086)}
- tprocdef(result).fpu_used:=fpu_used;
-{$endif i386 or i8086}
tprocdef(result).visibility:=visibility;
tprocdef(result).synthetickind:=synthetickind;
{ we need a separate implementation for the copied def }
@@ -5166,10 +5154,6 @@ implementation
{ procsym that originaly defined this definition, should be in the
same symtable }
procsymderef.build(procsym);
-{$ifdef powerpc}
- { library symbol for AmigaOS/MorphOS }
- libsymderef.build(libsym);
-{$endif powerpc}
end;
@@ -5178,7 +5162,7 @@ implementation
inherited buildderefimpl;
{ inline tree }
- if (po_has_inlininginfo in procoptions) then
+ if has_inlininginfo then
begin
{ Localst is not available for main/unit init }
if assigned(localst) then
@@ -5200,10 +5184,6 @@ implementation
{ procsym that originaly defined this definition, should be in the
same symtable }
procsym:=tprocsym(procsymderef.resolve);
-{$ifdef powerpc}
- { library symbol for AmigaOS/MorphOS }
- libsym:=tsym(libsymderef.resolve);
-{$endif powerpc}
end;
@@ -5213,10 +5193,10 @@ implementation
structure is available. The has_inlininginfo was disabled
after the load, since the data was invalid }
if assigned(inlininginfo) then
- include(procoptions,po_has_inlininginfo);
+ has_inlininginfo:=true;
{ Inline }
- if (po_has_inlininginfo in procoptions) then
+ if has_inlininginfo then
begin
{ Locals }
if assigned(localst) then
@@ -5249,48 +5229,22 @@ implementation
function tprocdef.mangledname : TSymStr;
begin
{$ifdef symansistr}
- if _mangledname<>'' then
-{$else symansistr}
- if assigned(_mangledname) then
-{$endif symansistr}
+ if _mangledname='' then
begin
-{$ifdef compress}
- {$error add support for ansistrings in case of symansistr}
- mangledname:=minilzw_decode(_mangledname^);
-{$else}
- {$ifdef symansistr}
- mangledname:=_mangledname;
- {$else symansistr}
- mangledname:=_mangledname^;
- {$endif symansistr}
-{$endif}
- exit;
- end;
-{$ifndef jvm}
- mangledname:=globalsymbolmangleprefix+defaultmangledname+globalsymbolmanglesuffix;
-{$else not jvm}
- mangledname:=jvmmangledbasename(false);
- if (po_has_importdll in procoptions) then
+ result:=globalsymbolmangleprefix+defaultmangledname+globalsymbolmanglesuffix;
+ _mangledname:=result;
+ end
+ else
+ result:=_mangledname;
+{$else symansistr}
+ if not assigned(_mangledname) then
begin
- { import_dll comes from "external 'import_dll_name' name 'external_name'" }
- if assigned(import_dll) then
- mangledname:=import_dll^+'/'+mangledname
- else
- internalerror(2010122607);
+ result:=globalsymbolmangleprefix+defaultmangledname+globalsymbolmanglesuffix;
+ _mangledname:=stringdup(mangledname);
end
else
- jvmaddtypeownerprefix(owner,mangledname);
-{$endif not jvm}
-{$ifdef compress}
- {$error add support for ansistrings in case of symansistr}
- _mangledname:=stringdup(minilzw_encode(mangledname));
-{$else}
- {$ifdef symansistr}
- _mangledname:=mangledname;
- {$else symansistr}
- _mangledname:=stringdup(mangledname);
- {$endif symansistr}
-{$endif}
+ result:=_mangledname^;
+{$endif symansistr}
end;
@@ -5516,99 +5470,6 @@ implementation
result:=result+' '+messageinf.str^+']"';
end;
-{$ifdef jvm}
- function tprocdef.jvmmangledbasename(signature: boolean): TSymStr;
- var
- vs: tparavarsym;
- i: longint;
- founderror: tdef;
- tmpresult: TSymStr;
- container: tsymtable;
- begin
- { format:
- * method definition (in Jasmin):
- (private|protected|public) [static] method(parametertypes)returntype
- * method invocation
- package/class/method(parametertypes)returntype
- -> store common part: method(parametertypes)returntype and
- adorn as required when using it.
- }
- if not signature then
- begin
- { method name }
- { special names for constructors and class constructors }
- if proctypeoption=potype_constructor then
- tmpresult:='<init>'
- else if proctypeoption in [potype_class_constructor,potype_unitinit] then
- tmpresult:='<clinit>'
- else if po_has_importname in procoptions then
- begin
- if assigned(import_name) then
- tmpresult:=import_name^
- else
- internalerror(2010122608);
- end
- else
- begin
- tmpresult:=procsym.realname;
- if tmpresult[1]='$' then
- tmpresult:=copy(tmpresult,2,length(tmpresult)-1);
- { nested functions }
- container:=owner;
- while container.symtabletype=localsymtable do
- begin
- tmpresult:='$'+tprocdef(owner.defowner).procsym.realname+'$'+tostr(tprocdef(owner.defowner).procsym.symid)+'$'+tmpresult;
- container:=container.defowner.owner;
- end;
- end;
- end
- else
- tmpresult:='';
- { parameter types }
- tmpresult:=tmpresult+'(';
- { not the case for the main program (not required for defaultmangledname
- because setmangledname() is called for the main program; in case of
- the JVM, this only sets the importname, however) }
- if assigned(paras) then
- begin
- init_paraloc_info(callerside);
- for i:=0 to paras.count-1 do
- begin
- vs:=tparavarsym(paras[i]);
- { function result is not part of the mangled name }
- if vo_is_funcret in vs.varoptions then
- continue;
- { self pointer neither, except for class methods (the JVM only
- supports static class methods natively, so the self pointer
- here is a regular parameter as far as the JVM is concerned }
- if not(po_classmethod in procoptions) and
- (vo_is_self in vs.varoptions) then
- continue;
- { passing by reference is emulated by passing an array of one
- element containing the value; for types that aren't pointers
- in regular Pascal, simply passing the underlying pointer type
- does achieve regular call-by-reference semantics though;
- formaldefs always have to be passed like that because their
- contents can be replaced }
- if paramanager.push_copyout_param(vs.varspez,vs.vardef,proccalloption) then
- tmpresult:=tmpresult+'[';
- { Add the parameter type. }
- if not jvmaddencodedtype(vs.vardef,false,tmpresult,signature,founderror) then
- { an internalerror here is also triggered in case of errors in the source code }
- tmpresult:='<error>';
- end;
- end;
- tmpresult:=tmpresult+')';
- { And the type of the function result (void in case of a procedure and
- constructor). }
- if (proctypeoption in [potype_constructor,potype_class_constructor]) then
- jvmaddencodedtype(voidtype,false,tmpresult,signature,founderror)
- else if not jvmaddencodedtype(returndef,false,tmpresult,signature,founderror) then
- { an internalerror here is also triggered in case of errors in the source code }
- tmpresult:='<error>';
- result:=tmpresult;
- end;
-{$endif jvm}
procedure tprocdef.setmangledname(const s : TSymStr);
begin
@@ -5640,16 +5501,11 @@ implementation
include(procoptions,po_has_importname);
include(procoptions,po_has_mangledname);
{$else}
- {$ifdef compress}
- {$error add support for symansistr}
- _mangledname:=stringdup(minilzw_encode(s));
- {$else}
- {$ifdef symansistr}
- _mangledname:=llvmglobalprefix+s+llvmglobalsuffix;
- {$else symansistr}
+ {$ifdef symansistr}
+ _mangledname:=globalsymbolmangleprefix+s+globalsymbolmanglesuffix;
+ {$else symansistr}
_mangledname:=stringdup(globalsymbolmangleprefix+s+globalsymbolmanglesuffix);
- {$endif symansistr}
- {$endif}
+ {$endif symansistr}
{$endif jvm}
include(procoptions,po_has_mangledname);
end;
@@ -5670,9 +5526,7 @@ implementation
inherited ppuload(procvardef,ppufile);
{ load para symtable }
parast:=tparasymtable.create(self,ppufile.getbyte);
-{$ifdef jvm}
- ppufile.getderef(classdefderef);
-{$endif}
+ ppuload_platform(ppufile);
tparasymtable(parast).ppuload(ppufile);
end;
@@ -5682,7 +5536,7 @@ implementation
i : tcallercallee;
j : longint;
begin
- result:=tprocvardef.create(parast.symtablelevel);
+ result:=cprocvardef.create(parast.symtablelevel);
tprocvardef(result).returndef:=returndef;
tprocvardef(result).returndefderef:=returndefderef;
tprocvardef(result).parast:=parast.getcopy;
@@ -5708,9 +5562,6 @@ implementation
{$ifdef m68k}
tprocvardef(result).exp_funcretloc:=exp_funcretloc;
{$endif}
-{$ifdef jvm}
- tprocvardef(result).classdef:=classdef;
-{$endif}
end;
@@ -5722,30 +5573,13 @@ implementation
procvars) }
ppufile.putbyte(parast.symtablelevel);
-{$ifdef jvm}
- ppufile.putderef(classdefderef);
-{$endif}
{ Write this entry }
- ppufile.writeentry(ibprocvardef);
+ writeentry(ppufile,ibprocvardef);
{ Save the para symtable, this is taken from the interface }
tparasymtable(parast).ppuwrite(ppufile);
end;
-{$ifdef jvm}
- procedure tprocvardef.buildderef;
- begin
- inherited buildderef;
- classdefderef.build(classdef);
- end;
-
- procedure tprocvardef.deref;
- begin
- inherited deref;
- classdef:=tobjectdef(classdefderef.resolve);
- end;
-{$endif}
-
function tprocvardef.GetSymtable(t:tGetSymtable):TSymtable;
begin
@@ -5759,22 +5593,13 @@ implementation
function tprocvardef.size : asizeint;
- var
- far_code_extra_bytes: integer = 0;
- far_data_extra_bytes: integer = 0;
- begin
-{$ifdef i8086}
- if po_far in procoptions then
- far_code_extra_bytes:=2;
- if current_settings.x86memorymodel in x86_far_data_models then
- far_data_extra_bytes:=2;
-{$endif i8086}
+ begin
if ((po_methodpointer in procoptions) or
is_nested_pd(self)) and
not(po_addressonly in procoptions) then
- size:=2*sizeof(pint)+far_code_extra_bytes+far_data_extra_bytes
+ size:=voidcodepointertype.size+voidpointertype.size
else
- size:=sizeof(pint)+far_code_extra_bytes;
+ size:=voidcodepointertype.size;
end;
@@ -5935,9 +5760,15 @@ implementation
ImplementedInterfaces:=nil;
if df_copied_def in defoptions then
- ppufile.getderef(cloneddefderef)
+ begin
+ ppufile.getderef(cloneddefderef);
+ ppuload_platform(ppufile);
+ end
else
- tObjectSymtable(symtable).ppuload(ppufile);
+ begin
+ ppuload_platform(ppufile);
+ tObjectSymtable(symtable).ppuload(ppufile);
+ end;
{ handles the predefined class tobject }
{ the last TOBJECT which is loaded gets }
@@ -6023,7 +5854,7 @@ implementation
var
i : longint;
begin
- result:=tobjectdef.create(objecttype,objrealname^,childof);
+ result:=cobjectdef.create(objecttype,objrealname^,childof);
{ the constructor allocates a symtable which we release to avoid memory leaks }
tobjectdef(result).symtable.free;
tobjectdef(result).symtable:=symtable.getcopy;
@@ -6120,7 +5951,7 @@ implementation
if df_copied_def in defoptions then
ppufile.putderef(cloneddefderef);
- ppufile.writeentry(ibobjectdef);
+ writeentry(ppufile,ibobjectdef);
if not(df_copied_def in defoptions) then
tObjectSymtable(symtable).ppuwrite(ppufile);
@@ -6219,7 +6050,7 @@ implementation
psym:=tsym(st.find(nname));
if not assigned(psym) then
begin
- psym:=tprocsym.create(nname);
+ psym:=cprocsym.create(nname);
{ avoid warning about this symbol being unused }
psym.IncRefCount;
{ don't check for duplicates:
@@ -6373,7 +6204,7 @@ implementation
tObjectSymtable(symtable).datasize:=align(tObjectSymtable(symtable).datasize,sizeof(pint));
tObjectSymtable(symtable).alignrecord(tObjectSymtable(symtable).datasize,sizeof(pint));
end;
- vs:=tfieldvarsym.create('_vptr$'+objname^,vs_value,voidpointertype,[]);
+ vs:=cfieldvarsym.create('_vptr$'+objname^,vs_value,voidpointertype,[]);
hidesym(vs);
tObjectSymtable(symtable).insert(vs);
tObjectSymtable(symtable).addfield(vs,vis_hidden);
@@ -6424,7 +6255,7 @@ implementation
function tobjectdef.size : asizeint;
begin
if objecttype in [odt_class,odt_interfacecom,odt_interfacecorba,odt_dispinterface,odt_objcclass,odt_objcprotocol,odt_helper,odt_javaclass,odt_interfacejava] then
- result:=sizeof(pint)
+ result:=voidpointertype.size
else
result:=tObjectSymtable(symtable).datasize;
end;
@@ -6433,44 +6264,35 @@ implementation
function tobjectdef.alignment:shortint;
begin
if objecttype in [odt_class,odt_interfacecom,odt_interfacecorba,odt_dispinterface,odt_objcclass,odt_objcprotocol,odt_helper,odt_javaclass,odt_interfacejava] then
- alignment:=sizeof(pint)
+ alignment:=voidpointertype.size
else
alignment:=tObjectSymtable(symtable).recordalignment;
end;
function tobjectdef.vmtmethodoffset(index:longint):longint;
- var
- codeptrsize: Integer;
begin
-{$ifdef i8086}
- if current_settings.x86memorymodel in x86_far_code_models then
- codeptrsize:=4
- else
- codeptrsize:=2;
-{$else i8086}
- codeptrsize:=sizeof(pint);
-{$endif i8086}
{ for offset of methods for classes, see rtl/inc/objpash.inc }
case objecttype of
odt_class:
{ the +2*sizeof(pint) is size and -size }
- vmtmethodoffset:=index*codeptrsize+10*sizeof(pint)+2*sizeof(pint);
+ vmtmethodoffset:=index*voidcodepointertype.size+10*voidpointertype.size+2*sizeof(pint);
odt_helper,
odt_objcclass,
odt_objcprotocol:
vmtmethodoffset:=0;
odt_interfacecom,odt_interfacecorba,odt_dispinterface:
- vmtmethodoffset:=index*codeptrsize;
+ vmtmethodoffset:=index*voidcodepointertype.size;
odt_javaclass,
odt_interfacejava:
{ invalid }
vmtmethodoffset:=-1;
else
+ { the +2*sizeof(pint) is size and -size }
{$ifdef WITHDMT}
- vmtmethodoffset:=index*codeptrsize+4*sizeof(pint);
+ vmtmethodoffset:=index*voidcodepointertype.size+2*voidpointertype.size+2*sizeof(pint);
{$else WITHDMT}
- vmtmethodoffset:=index*codeptrsize+3*sizeof(pint);
+ vmtmethodoffset:=index*voidcodepointertype.size+1*voidpointertype.size+2*sizeof(pint);
{$endif WITHDMT}
end;
end;
@@ -7039,7 +6861,7 @@ implementation
function tforwarddef.getcopy:tstoreddef;
begin
- result:=tforwarddef.create(tosymname^, forwardpos);
+ result:=cforwarddef.create(tosymname^, forwardpos);
end;
{****************************************************************************
@@ -7055,6 +6877,7 @@ implementation
constructor tundefineddef.ppuload(ppufile:tcompilerppufile);
begin
inherited ppuload(undefineddef,ppufile);
+ ppuload_platform(ppufile);
end;
function tundefineddef.GetTypeName:string;
@@ -7066,7 +6889,7 @@ implementation
procedure tundefineddef.ppuwrite(ppufile:tcompilerppufile);
begin
inherited ppuwrite(ppufile);
- ppufile.writeentry(ibundefineddef);
+ writeentry(ppufile,ibundefineddef);
end;
@@ -7440,7 +7263,7 @@ implementation
{ do not simply push/pop current_module.localsymtable, because
that can have side-effects (e.g., it removes helpers) }
symtablestack:=nil;
- res^.Data:=tpointerdef.create(def);
+ res^.Data:=cpointerdef.create(def);
if assigned(current_module.localsymtable) then
current_module.localsymtable.insertdef(tdef(res^.Data))
else
@@ -7477,7 +7300,7 @@ implementation
unit, add them to the global/staticsymtable }
oldsymtablestack:=symtablestack;
symtablestack:=nil;
- res^.Data:=tarraydef.create(0,elecount-1,ptrsinttype);
+ res^.Data:=carraydef.create(0,elecount-1,ptrsinttype);
tarraydef(res^.Data).elementdef:=def;
if assigned(current_module.localsymtable) then
current_module.localsymtable.insertdef(tdef(res^.Data))
@@ -7489,16 +7312,4 @@ implementation
end;
-{$ifdef x86}
- function default_x86_data_pointer_type: tx86pointertyp;
- begin
-{$ifdef i8086}
- if current_settings.x86memorymodel in x86_far_data_models then
- result:=x86pt_far
- else
-{$endif i8086}
- result:=x86pt_near;
- end;
-{$endif x86}
-
end.
diff --git a/compiler/symsym.pas b/compiler/symsym.pas
index 76beadeeae..6d8c3e758b 100644
--- a/compiler/symsym.pas
+++ b/compiler/symsym.pas
@@ -42,6 +42,11 @@ interface
type
{ this class is the base for all symbol objects }
tstoredsym = class(tsym)
+ private
+ procedure writeentry(ppufile: tcompilerppufile; ibnr: byte);
+ protected
+ procedure ppuwrite_platform(ppufile: tcompilerppufile);virtual;
+ procedure ppuload_platform(ppufile: tcompilerppufile);virtual;
public
constructor create(st:tsymtyp;const n : string);
constructor ppuload(st:tsymtyp;ppufile:tcompilerppufile);
@@ -64,29 +69,38 @@ interface
{ when the label is defined in an asm block, this points to the
generated asmlabel }
asmblocklabel : tasmlabel;
- constructor create(const n : string);
+ constructor create(const n : string);virtual;
constructor ppuload(ppufile:tcompilerppufile);
- procedure ppuwrite(ppufile:tcompilerppufile);override;
+ { do not override this routine in platform-specific subclasses,
+ override ppuwrite_platform instead }
+ procedure ppuwrite(ppufile:tcompilerppufile);override;final;
function mangledname:TSymStr;override;
end;
+ tlabelsymclass = class of tlabelsym;
tunitsym = class(Tstoredsym)
module : tobject; { tmodule }
- constructor create(const n : string;amodule : tobject);
+ constructor create(const n : string;amodule : tobject);virtual;
constructor ppuload(ppufile:tcompilerppufile);
destructor destroy;override;
- procedure ppuwrite(ppufile:tcompilerppufile);override;
+ { do not override this routine in platform-specific subclasses,
+ override ppuwrite_platform instead }
+ procedure ppuwrite(ppufile:tcompilerppufile);override;final;
end;
+ tunitsymclass = class of tunitsym;
tnamespacesym = class(Tstoredsym)
unitsym:tsym;
unitsymderef:tderef;
- constructor create(const n : string);
+ constructor create(const n : string);virtual;
constructor ppuload(ppufile:tcompilerppufile);
- procedure ppuwrite(ppufile:tcompilerppufile);override;
+ { do not override this routine in platform-specific subclasses,
+ override ppuwrite_platform instead }
+ procedure ppuwrite(ppufile:tcompilerppufile);override;final;
procedure buildderef;override;
procedure deref;override;
end;
+ tnamespacesymclass = class of tnamespacesym;
terrorsym = class(Tsym)
constructor create;
@@ -99,15 +113,17 @@ interface
FProcdefList : TFPObjectList;
FProcdefDerefList : TFPList;
public
- constructor create(const n : string);
+ constructor create(const n : string);virtual;
constructor ppuload(ppufile:tcompilerppufile);
destructor destroy;override;
{ writes all declarations except the specified one }
procedure write_parameter_lists(skipdef:tprocdef);
{ tests, if all procedures definitions are defined and not }
{ only forward }
- procedure check_forward;
- procedure ppuwrite(ppufile:tcompilerppufile);override;
+ procedure check_forward; virtual;
+ { do not override this routine in platform-specific subclasses,
+ override ppuwrite_platform instead }
+ procedure ppuwrite(ppufile:tcompilerppufile);override;final;
procedure buildderef;override;
procedure deref;override;
function find_procdef_bytype(pt:Tproctypeoption):Tprocdef;
@@ -120,20 +136,24 @@ interface
function find_procdef_enumerator_operator(fromdef,todef:tdef;var besteq:tequaltype):Tprocdef;
property ProcdefList:TFPObjectList read FProcdefList;
end;
+ tprocsymclass = class of tprocsym;
ttypesym = class(Tstoredsym)
public
typedef : tdef;
typedefderef : tderef;
fprettyname : ansistring;
- constructor create(const n : string;def:tdef);
+ constructor create(const n : string;def:tdef);virtual;
destructor destroy;override;
constructor ppuload(ppufile:tcompilerppufile);
- procedure ppuwrite(ppufile:tcompilerppufile);override;
+ { do not override this routine in platform-specific subclasses,
+ override ppuwrite_platform instead }
+ procedure ppuwrite(ppufile:tcompilerppufile);override;final;
procedure buildderef;override;
procedure deref;override;
function prettyname : string;override;
end;
+ ttypesymclass = class of ttypesym;
tabstractvarsym = class(tstoredsym)
varoptions : tvaroptions;
@@ -187,13 +207,16 @@ interface
{$else symansistr}
cachedmangledname: pshortstring; { mangled name for ObjC or Java }
{$endif symansistr}
- constructor create(const n : string;vsp:tvarspez;def:tdef;vopts:tvaroptions);
+ constructor create(const n : string;vsp:tvarspez;def:tdef;vopts:tvaroptions);virtual;
constructor ppuload(ppufile:tcompilerppufile);
- procedure ppuwrite(ppufile:tcompilerppufile);override;
- procedure set_externalname(const s:string);
+ { do not override this routine in platform-specific subclasses,
+ override ppuwrite_platform instead }
+ procedure ppuwrite(ppufile:tcompilerppufile);override;final;
+ procedure set_externalname(const s:string);virtual;
function mangledname:TSymStr;override;
destructor destroy;override;
end;
+ tfieldvarsymclass = class of tfieldvarsym;
tabstractnormalvarsym = class(tabstractvarsym)
defaultconstsym : tsym;
@@ -215,10 +238,13 @@ interface
end;
tlocalvarsym = class(tabstractnormalvarsym)
- constructor create(const n : string;vsp:tvarspez;def:tdef;vopts:tvaroptions);
+ constructor create(const n : string;vsp:tvarspez;def:tdef;vopts:tvaroptions);virtual;
constructor ppuload(ppufile:tcompilerppufile);
- procedure ppuwrite(ppufile:tcompilerppufile);override;
+ { do not override this routine in platform-specific subclasses,
+ override ppuwrite_platform instead }
+ procedure ppuwrite(ppufile:tcompilerppufile);override;final;
end;
+ tlocalvarsymclass = class of tlocalvarsym;
tparavarsym = class(tabstractnormalvarsym)
paraloc : array[tcallercallee] of TCGPara;
@@ -230,15 +256,18 @@ interface
{$ifdef EXTDEBUG}
eqval : tequaltype;
{$endif EXTDEBUG}
- constructor create(const n : string;nr:word;vsp:tvarspez;def:tdef;vopts:tvaroptions);
+ constructor create(const n : string;nr:word;vsp:tvarspez;def:tdef;vopts:tvaroptions);virtual;
constructor ppuload(ppufile:tcompilerppufile);
destructor destroy;override;
- procedure ppuwrite(ppufile:tcompilerppufile);override;
+ { do not override this routine in platform-specific subclasses,
+ override ppuwrite_platform instead }
+ procedure ppuwrite(ppufile:tcompilerppufile);override;final;
function needs_finalization: boolean;
end;
+ tparavarsymclass = class of tparavarsym;
tstaticvarsym = class(tabstractnormalvarsym)
- private
+ protected
{$ifdef symansistr}
_mangledbasename,
_mangledname : TSymStr;
@@ -252,40 +281,47 @@ interface
parameters as it is done by iso pascal with the program symbols,
isoindex contains the parameter number }
isoindex : dword;
- constructor create(const n : string;vsp:tvarspez;def:tdef;vopts:tvaroptions);
- constructor create_dll(const n : string;vsp:tvarspez;def:tdef);
- constructor create_C(const n: string; const mangled : TSymStr;vsp:tvarspez;def:tdef);
+ { if this static variable was created based on a class field variable then this is set
+ to the symbol of the corresponding class field }
+ fieldvarsym : tfieldvarsym;
+ fieldvarsymderef : tderef;
+ constructor create(const n : string;vsp:tvarspez;def:tdef;vopts:tvaroptions);virtual;
+ constructor create_dll(const n : string;vsp:tvarspez;def:tdef);virtual;
+ constructor create_C(const n: string; const mangled : TSymStr;vsp:tvarspez;def:tdef);virtual;
+ constructor create_from_fieldvar(const n:string;fieldvar:tfieldvarsym);virtual;
constructor ppuload(ppufile:tcompilerppufile);
destructor destroy;override;
- procedure ppuwrite(ppufile:tcompilerppufile);override;
+ { do not override this routine in platform-specific subclasses,
+ override ppuwrite_platform instead }
+ procedure ppuwrite(ppufile:tcompilerppufile);override;final;
+ procedure buildderef;override;
+ procedure deref;override;
function mangledname:TSymStr;override;
procedure set_mangledbasename(const s: TSymStr);
function mangledbasename: TSymStr;
- procedure set_mangledname(const s:TSymStr);
+ procedure set_mangledname(const s:TSymStr);virtual;
procedure set_raw_mangledname(const s:TSymStr);
end;
+ tstaticvarsymclass = class of tstaticvarsym;
tabsolutevarsym = class(tabstractvarsym)
public
abstyp : absolutetyp;
-{$if defined(i386) or defined(i8086)}
- absseg : boolean;
-{$endif defined(i386) or defined(i8086)}
asmname : pshortstring;
addroffset : aword;
-{$if defined(i8086)}
- addrsegment : aword;
-{$endif defined(i8086)}
ref : tpropaccesslist;
- constructor create(const n : string;def:tdef);
- constructor create_ref(const n : string;def:tdef;_ref:tpropaccesslist);
+ constructor create(const n : string;def:tdef);virtual;
+ constructor create_ref(const n : string;def:tdef;_ref:tpropaccesslist);virtual;
destructor destroy;override;
constructor ppuload(ppufile:tcompilerppufile);
procedure buildderef;override;
procedure deref;override;
function mangledname : TSymStr;override;
- procedure ppuwrite(ppufile:tcompilerppufile);override;
+ { do not override this routine in platform-specific subclasses,
+ override ppuwrite_platform instead }
+ procedure ppuwrite(ppufile:tcompilerppufile);override;final;
end;
+ tabsolutevarsymclass = class of tabsolutevarsym;
tpropaccesslisttypes=(palt_none,palt_read,palt_write,palt_stored);
@@ -302,11 +338,13 @@ interface
dispid : longint;
propaccesslist: array[tpropaccesslisttypes] of tpropaccesslist;
parast : tsymtable;
- constructor create(const n : string);
+ constructor create(const n : string);virtual;
destructor destroy;override;
constructor ppuload(ppufile:tcompilerppufile);
function getsize : asizeint;
- procedure ppuwrite(ppufile:tcompilerppufile);override;
+ { do not override this routine in platform-specific subclasses,
+ override ppuwrite_platform instead }
+ procedure ppuwrite(ppufile:tcompilerppufile);override;final;
procedure buildderef;override;
procedure deref;override;
function getpropaccesslist(pap:tpropaccesslisttypes;out plist:tpropaccesslist):boolean;
@@ -316,6 +354,7 @@ interface
procedure add_accessor_parameters(readprocdef, writeprocdef: tprocdef);
procedure add_index_parameter(var paranr: word; readprocdef, writeprocdef: tprocdef);
end;
+ tpropertysymclass = class of tpropertysym;
tconstvalue = record
case integer of
@@ -329,36 +368,45 @@ interface
constdefderef : tderef;
consttyp : tconsttyp;
value : tconstvalue;
- constructor create_ord(const n : string;t : tconsttyp;v : tconstexprint;def:tdef);
- constructor create_ordptr(const n : string;t : tconsttyp;v : tconstptruint;def:tdef);
- constructor create_ptr(const n : string;t : tconsttyp;v : pointer;def:tdef);
- constructor create_string(const n : string;t : tconsttyp;str:pchar;l:longint;def:tdef);
- constructor create_wstring(const n : string;t : tconsttyp;pw:pcompilerwidestring);
+ constructor create_ord(const n : string;t : tconsttyp;v : tconstexprint;def:tdef);virtual;
+ constructor create_ordptr(const n : string;t : tconsttyp;v : tconstptruint;def:tdef);virtual;
+ constructor create_ptr(const n : string;t : tconsttyp;v : pointer;def:tdef);virtual;
+ constructor create_string(const n : string;t : tconsttyp;str:pchar;l:longint;def:tdef);virtual;
+ constructor create_wstring(const n : string;t : tconsttyp;pw:pcompilerwidestring);virtual;
constructor ppuload(ppufile:tcompilerppufile);
destructor destroy;override;
procedure buildderef;override;
procedure deref;override;
- procedure ppuwrite(ppufile:tcompilerppufile);override;
+ { do not override this routine in platform-specific subclasses,
+ override ppuwrite_platform instead }
+ procedure ppuwrite(ppufile:tcompilerppufile);override;final;
end;
+ tconstsymclass = class of tconstsym;
tenumsym = class(Tstoredsym)
value : longint;
definition : tenumdef;
definitionderef : tderef;
- constructor create(const n : string;def : tenumdef;v : longint);
+ constructor create(const n : string;def : tenumdef;v : longint);virtual;
constructor ppuload(ppufile:tcompilerppufile);
- procedure ppuwrite(ppufile:tcompilerppufile);override;
+ { do not override this routine in platform-specific subclasses,
+ override ppuwrite_platform instead }
+ procedure ppuwrite(ppufile:tcompilerppufile);override;final;
procedure buildderef;override;
procedure deref;override;
end;
+ tenumsymclass = class of tenumsym;
tsyssym = class(Tstoredsym)
number : longint;
- constructor create(const n : string;l : longint);
+ constructor create(const n : string;l : longint);virtual;
constructor ppuload(ppufile:tcompilerppufile);
destructor destroy;override;
- procedure ppuwrite(ppufile:tcompilerppufile);override;
+ { do not override this routine in platform-specific subclasses,
+ override ppuwrite_platform instead }
+ procedure ppuwrite(ppufile:tcompilerppufile);override;final;
end;
+ tsyssymclass = class of tsyssym;
const
maxmacrolen=16*1024;
@@ -381,7 +429,9 @@ interface
buflen : longint;
constructor create(const n : string);
constructor ppuload(ppufile:tcompilerppufile);
- procedure ppuwrite(ppufile:tcompilerppufile);override;
+ { do not override this routine in platform-specific subclasses,
+ override ppuwrite_platform instead }
+ procedure ppuwrite(ppufile:tcompilerppufile);override;final;
destructor destroy;override;
function GetCopy:tmacro;
end;
@@ -389,6 +439,21 @@ interface
var
generrorsym : tsym;
+ clabelsym: tlabelsymclass;
+ cunitsym: tunitsymclass;
+ cnamespacesym: tnamespacesymclass;
+ cprocsym: tprocsymclass;
+ ctypesym: ttypesymclass;
+ cfieldvarsym: tfieldvarsymclass;
+ clocalvarsym: tlocalvarsymclass;
+ cparavarsym: tparavarsymclass;
+ cstaticvarsym: tstaticvarsymclass;
+ cabsolutevarsym: tabsolutevarsymclass;
+ cpropertysym: tpropertysymclass;
+ cconstsym: tconstsymclass;
+ cenumsym: tenumsymclass;
+ csyssym: tsyssymclass;
+
{ generate internal static field name based on regular field name }
function internal_static_field_name(const fieldname: TSymStr): TSymStr;
function get_high_value_sym(vs: tparavarsym):tsym; { marking it as inline causes IE 200311075 during loading from ppu file }
@@ -404,9 +469,6 @@ implementation
systems,
{ symtable }
defutil,symtable,
-{$ifdef jvm}
- jvmdef,
-{$endif}
fmodule,
{ tree }
node,
@@ -432,6 +494,7 @@ implementation
result := tsym(vs.owner.Find('high'+vs.name));
end;
+
procedure check_hints(const srsym: tsym; const symoptions: tsymoptions; const deprecatedmsg : pshortstring);
begin
if not assigned(srsym) then
@@ -452,7 +515,6 @@ implementation
end;
-
{****************************************************************************
TSYM (base for all symtypes)
****************************************************************************}
@@ -509,6 +571,24 @@ implementation
end;
+ procedure tstoredsym.writeentry(ppufile: tcompilerppufile; ibnr: byte);
+ begin
+ ppuwrite_platform(ppufile);
+ ppufile.writeentry(ibnr);
+ end;
+
+
+ procedure tstoredsym.ppuwrite_platform(ppufile: tcompilerppufile);
+ begin
+ { by default: do nothing }
+ end;
+
+ procedure tstoredsym.ppuload_platform(ppufile: tcompilerppufile);
+ begin
+ { by default: do nothing }
+ end;
+
+
destructor tstoredsym.destroy;
begin
inherited destroy;
@@ -536,6 +616,7 @@ implementation
used:=false;
nonlocal:=false;
defined:=true;
+ ppuload_platform(ppufile);
end;
@@ -546,16 +627,15 @@ implementation
else
begin
inherited ppuwrite(ppufile);
- ppufile.writeentry(iblabelsym);
+ writeentry(ppufile,iblabelsym);
end;
end;
function tlabelsym.mangledname:TSymStr;
begin
- if not(defined) then
+ if (asmblocklabel=nil) then
begin
- defined:=true;
if nonlocal then
current_asmdata.getglobaljumplabel(asmblocklabel)
else
@@ -579,6 +659,7 @@ implementation
begin
inherited ppuload(unitsym,ppufile);
module:=nil;
+ ppuload_platform(ppufile);
end;
destructor tunitsym.destroy;
@@ -589,7 +670,7 @@ implementation
procedure tunitsym.ppuwrite(ppufile:tcompilerppufile);
begin
inherited ppuwrite(ppufile);
- ppufile.writeentry(ibunitsym);
+ writeentry(ppufile,ibunitsym);
end;
{****************************************************************************
@@ -606,13 +687,14 @@ implementation
begin
inherited ppuload(namespacesym,ppufile);
ppufile.getderef(unitsymderef);
+ ppuload_platform(ppufile);
end;
procedure tnamespacesym.ppuwrite(ppufile:tcompilerppufile);
begin
inherited ppuwrite(ppufile);
ppufile.putderef(unitsymderef);
- ppufile.writeentry(ibnamespacesym);
+ writeentry(ppufile,ibnamespacesym);
end;
procedure tnamespacesym.buildderef;
@@ -682,6 +764,7 @@ implementation
ppufile.getderef(pdderef);
FProcdefDerefList.Add(Pointer(PtrInt(pdderef.dataidx)));
end;
+ ppuload_platform(ppufile);
end;
@@ -708,7 +791,7 @@ implementation
d.dataidx:=PtrInt(FProcdefDerefList[i]);
ppufile.putderef(d);
end;
- ppufile.writeentry(ibprocsym);
+ writeentry(ppufile,ibprocsym);
end;
@@ -721,7 +804,7 @@ implementation
begin
pd:=tprocdef(ProcdefList[i]);
if pd<>skipdef then
- MessagePos1(pd.fileinfo,sym_h_param_list,pd.fullprocname(false));
+ MessagePos1(pd.fileinfo,sym_e_param_list,pd.fullprocname(false));
end;
end;
@@ -1184,6 +1267,7 @@ implementation
ppufile.getderef(indexdefderef);
for pap:=low(tpropaccesslisttypes) to high(tpropaccesslisttypes) do
propaccesslist[pap]:=ppufile.getpropaccesslist;
+ ppuload_platform(ppufile);
if [ppo_hasparameters,ppo_overrides]*propoptions=[ppo_hasparameters] then
begin
parast:=tparasymtable.create(nil,0);
@@ -1271,12 +1355,12 @@ implementation
orig:=tparavarsym(parast.SymList[i]);
if assigned(readprocdef) then
begin
- hparavs:=tparavarsym.create(orig.RealName,orig.paranr,orig.varspez,orig.vardef,[]);
+ hparavs:=cparavarsym.create(orig.RealName,orig.paranr,orig.varspez,orig.vardef,[]);
readprocdef.parast.insert(hparavs);
end;
if assigned(writeprocdef) then
begin
- hparavs:=tparavarsym.create(orig.RealName,orig.paranr,orig.varspez,orig.vardef,[]);
+ hparavs:=cparavarsym.create(orig.RealName,orig.paranr,orig.varspez,orig.vardef,[]);
writeprocdef.parast.insert(hparavs);
end;
end;
@@ -1290,12 +1374,12 @@ implementation
inc(paranr);
if assigned(readprocdef) then
begin
- hparavs:=tparavarsym.create('$index',10*paranr,vs_value,indexdef,[]);
+ hparavs:=cparavarsym.create('$index',10*paranr,vs_value,indexdef,[]);
readprocdef.parast.insert(hparavs);
end;
if assigned(writeprocdef) then
begin
- hparavs:=tparavarsym.create('$index',10*paranr,vs_value,indexdef,[]);
+ hparavs:=cparavarsym.create('$index',10*paranr,vs_value,indexdef,[]);
writeprocdef.parast.insert(hparavs);
end;
end;
@@ -1342,7 +1426,7 @@ implementation
ppufile.putderef(indexdefderef);
for pap:=low(tpropaccesslisttypes) to high(tpropaccesslisttypes) do
ppufile.putpropaccesslist(propaccesslist[pap]);
- ppufile.writeentry(ibpropertysym);
+ writeentry(ppufile,ibpropertysym);
if [ppo_hasparameters,ppo_overrides]*propoptions=[ppo_hasparameters] then
tparasymtable(parast).ppuwrite(ppufile);
end;
@@ -1583,6 +1667,7 @@ implementation
externalname:=stringdup(ppufile.getstring)
else
externalname:=nil;
+ ppuload_platform(ppufile);
end;
@@ -1592,27 +1677,13 @@ implementation
ppufile.putaint(fieldoffset);
if (vo_has_mangledname in varoptions) then
ppufile.putstring(externalname^);
- ppufile.writeentry(ibfieldvarsym);
+ writeentry(ppufile,ibfieldvarsym);
end;
procedure tfieldvarsym.set_externalname(const s: string);
begin
- { make sure it is recalculated }
-{$ifdef symansistr}
- cachedmangledname:='';
-{$else symansistr}
- stringdispose(cachedmangledname);
-{$endif symansistr}
-{$ifdef jvm}
- if is_java_class_or_interface(tdef(owner.defowner)) then
- begin
- externalname:=stringdup(s);
- include(varoptions,vo_has_mangledname);
- end
- else
-{$endif jvm}
- internalerror(2011031201);
+ internalerror(2014033001);
end;
@@ -1621,21 +1692,6 @@ implementation
srsym : tsym;
srsymtable : tsymtable;
begin
-{$ifdef jvm}
- if is_java_class_or_interface(tdef(owner.defowner)) or
- (tdef(owner.defowner).typ=recorddef) then
- begin
- if cachedmangledname<>'' then
- result:=cachedmangledname
- else
- begin
- result:=jvmmangledbasename(self,false);
- jvmaddtypeownerprefix(owner,result);
- cachedmangledname:=result;
- end;
- end
- else
-{$endif jvm}
if sp_static in symoptions then
begin
if searchsym(lower(owner.name^)+'_'+name,srsym,srsymtable) then
@@ -1772,6 +1828,13 @@ implementation
end;
+ constructor tstaticvarsym.create_from_fieldvar(const n: string;fieldvar:tfieldvarsym);
+ begin
+ create(internal_static_field_name(n),vs_value,fieldvar.vardef,[]);
+ fieldvarsym:=fieldvar;
+ end;
+
+
constructor tstaticvarsym.ppuload(ppufile:tcompilerppufile);
begin
inherited ppuload(staticvarsym,ppufile);
@@ -1785,9 +1848,11 @@ implementation
_mangledname:=stringdup(ppufile.getstring)
else
_mangledname:=nil;
+{$endif symansistr}
if vo_has_section in varoptions then
section:=ppufile.getansistring;
-{$endif symansistr}
+ ppufile.getderef(defaultconstsymderef);
+ ppuload_platform(ppufile);
end;
@@ -1824,16 +1889,28 @@ implementation
{$endif symansistr}
if vo_has_section in varoptions then
ppufile.putansistring(section);
- ppufile.writeentry(ibstaticvarsym);
+ ppufile.putderef(fieldvarsymderef);
+ writeentry(ppufile,ibstaticvarsym);
end;
+ procedure tstaticvarsym.buildderef;
+ begin
+ inherited buildderef;
+ fieldvarsymderef.build(fieldvarsym);
+ end;
+
+
+ procedure tstaticvarsym.deref;
+ begin
+ inherited deref;
+ fieldvarsym:=tfieldvarsym(fieldvarsymderef.resolve);
+ end;
+
function tstaticvarsym.mangledname:TSymStr;
-{$ifndef jvm}
var
usename,
prefix : TSymStr;
-{$endif jvm}
begin
{$ifdef symansistr}
if _mangledname='' then
@@ -1841,39 +1918,23 @@ implementation
if not assigned(_mangledname) then
{$endif symansistr}
begin
-{$ifdef jvm}
- if _mangledbasename='' then
- _mangledname:=jvmmangledbasename(self,false)
- else
- _mangledname:=jvmmangledbasename(self,_mangledbasename,false);
- jvmaddtypeownerprefix(owner,_mangledname);
-{$else jvm}
if (vo_is_typed_const in varoptions) then
prefix:='TC'
else
prefix:='U';
- {$ifdef symansistr}
+{$ifdef symansistr}
if _mangledbasename='' then
usename:=name
else
usename:=_mangledbasename;
- {$else symansistr}
+ _mangledname:=globalsymbolmangleprefix+make_mangledname(prefix,owner,usename)+globalsymbolmanglesuffix;
+{$else symansistr}
if not assigned(_mangledbasename) then
usename:=name
else
usename:=_mangledbasename^;
- {$endif symansistr}
-{$ifdef compress}
- {$error add ansistring support for symansistr}
- _mangledname:=stringdup(minilzw_encode(llvmglobalprefix+make_mangledname(prefix,owner,usename)+llvmglobalsuffix));
-{$else compress}
- {$ifdef symansistr}
- _mangledname:=llvmglobalprefix+make_mangledname(prefix,owner,usename)+llvmglobalsuffix;
- {$else symansistr}
- _mangledname:=stringdup(globalsymbolmangleprefix+make_mangledname(prefix,owner,usename)+globalsymbolmanglesuffix);
- {$endif symansistr}
-{$endif compress}
-{$endif jvm}
+ _mangledname:=stringdup(globalsymbolmangleprefix+make_mangledname(prefix,owner,usename)+globalsymbolmanglesuffix);
+{$endif symansistr}
end;
{$ifdef symansistr}
result:=_mangledname;
@@ -1912,21 +1973,12 @@ implementation
procedure tstaticvarsym.set_mangledname(const s:TSymStr);
begin
-{$ifndef symansistr}
+{$ifdef symansistr}
+ _mangledname:=globalsymbolmangleprefix+s+globalsymbolmanglesuffix;
+{$else symansistr}
stringdispose(_mangledname);
-{$endif}
-{$if defined(jvm)}
- _mangledname:=jvmmangledbasename(self,s,false);
- jvmaddtypeownerprefix(owner,_mangledname);
-{$elseif defined(compress)}
- _mangledname:=stringdup(minilzw_encode(s));
-{$else}
- {$ifdef symansistr}
- _mangledname:=llvmglobalprefix+s+llvmglobalsuffix;
- {$else symansistr}
_mangledname:=stringdup(globalsymbolmangleprefix+s+globalsymbolmanglesuffix);
- {$endif symansistr}
-{$endif}
+{$endif symansistr}
include(varoptions,vo_has_mangledname);
end;
@@ -1956,13 +2008,14 @@ implementation
constructor tlocalvarsym.ppuload(ppufile:tcompilerppufile);
begin
inherited ppuload(localvarsym,ppufile);
+ ppuload_platform(ppufile);
end;
procedure tlocalvarsym.ppuwrite(ppufile:tcompilerppufile);
begin
inherited ppuwrite(ppufile);
- ppufile.writeentry(iblocalvarsym);
+ writeentry(ppufile,iblocalvarsym);
end;
@@ -2019,6 +2072,7 @@ implementation
paraloc[callerside].size:=paraloc[callerside].location^.size;
paraloc[callerside].intsize:=tcgsize2size[paraloc[callerside].size];
end;
+ ppuload_platform(ppufile);
end;
@@ -2049,7 +2103,7 @@ implementation
ppufile.putbyte(sizeof(paraloc[callerside].location^));
ppufile.putdata(paraloc[callerside].location^,sizeof(paraloc[callerside].location^));
end;
- ppufile.writeentry(ibparavarsym);
+ writeentry(ppufile,ibparavarsym);
end;
function tparavarsym.needs_finalization:boolean;
@@ -2096,26 +2150,15 @@ implementation
ref:=nil;
asmname:=nil;
abstyp:=absolutetyp(ppufile.getbyte);
-{$if defined(i386) or defined(i8086)}
- absseg:=false;
-{$endif i386 or i8086}
case abstyp of
tovar :
ref:=ppufile.getpropaccesslist;
toasm :
asmname:=stringdup(ppufile.getstring);
toaddr :
- begin
- addroffset:=ppufile.getaword;
-{$if defined(i386)}
- absseg:=boolean(ppufile.getbyte);
-{$elseif defined(i8086)}
- absseg:=boolean(ppufile.getbyte);
- if absseg then
- addrsegment:=ppufile.getaword;
-{$endif}
- end;
+ addroffset:=ppufile.getaword;
end;
+ ppuload_platform(ppufile);
end;
@@ -2129,18 +2172,9 @@ implementation
toasm :
ppufile.putstring(asmname^);
toaddr :
- begin
- ppufile.putaword(addroffset);
-{$if defined(i386)}
- ppufile.putbyte(byte(absseg));
-{$elseif defined(i8086)}
- ppufile.putbyte(byte(absseg));
- if absseg then
- ppufile.putaword(addrsegment);
-{$endif}
- end;
+ ppufile.putaword(addroffset);
end;
- ppufile.writeentry(ibabsolutevarsym);
+ writeentry(ppufile,ibabsolutevarsym);
end;
@@ -2306,6 +2340,7 @@ implementation
else
Message1(unit_f_ppu_invalid_entry,tostr(ord(consttyp)));
end;
+ ppuload_platform(ppufile);
end;
@@ -2384,7 +2419,7 @@ implementation
else
internalerror(13);
end;
- ppufile.writeentry(ibconstsym);
+ writeentry(ppufile,ibconstsym);
end;
@@ -2405,6 +2440,7 @@ implementation
inherited ppuload(enumsym,ppufile);
ppufile.getderef(definitionderef);
value:=ppufile.getlongint;
+ ppuload_platform(ppufile);
end;
@@ -2424,7 +2460,7 @@ implementation
inherited ppuwrite(ppufile);
ppufile.putderef(definitionderef);
ppufile.putlongint(value);
- ppufile.writeentry(ibenumsym);
+ writeentry(ppufile,ibenumsym);
end;
@@ -2456,6 +2492,7 @@ implementation
inherited ppuload(typesym,ppufile);
ppufile.getderef(typedefderef);
fprettyname:=ppufile.getansistring;
+ ppuload_platform(ppufile);
end;
@@ -2476,7 +2513,7 @@ implementation
inherited ppuwrite(ppufile);
ppufile.putderef(typedefderef);
ppufile.putansistring(fprettyname);
- ppufile.writeentry(ibtypesym);
+ writeentry(ppufile,ibtypesym);
end;
@@ -2503,6 +2540,7 @@ implementation
begin
inherited ppuload(syssym,ppufile);
number:=ppufile.getlongint;
+ ppuload_platform(ppufile);
end;
destructor tsyssym.destroy;
@@ -2514,7 +2552,7 @@ implementation
begin
inherited ppuwrite(ppufile);
ppufile.putlongint(number);
- ppufile.writeentry(ibsyssym);
+ writeentry(ppufile,ibsyssym);
end;
@@ -2564,7 +2602,7 @@ implementation
ppufile.putlongint(buflen);
if buflen > 0 then
ppufile.putdata(buftext^,buflen);
- ppufile.writeentry(ibmacrosym);
+ writeentry(ppufile,ibmacrosym);
end;
diff --git a/compiler/symtable.pas b/compiler/symtable.pas
index fa113909b5..abbb9d3304 100644
--- a/compiler/symtable.pas
+++ b/compiler/symtable.pas
@@ -486,26 +486,26 @@ implementation
repeat
b:=ppufile.readentry;
case b of
- ibpointerdef : def:=tpointerdef.ppuload(ppufile);
- ibarraydef : def:=tarraydef.ppuload(ppufile);
- iborddef : def:=torddef.ppuload(ppufile);
- ibfloatdef : def:=tfloatdef.ppuload(ppufile);
- ibprocdef : def:=tprocdef.ppuload(ppufile);
- ibshortstringdef : def:=tstringdef.loadshort(ppufile);
- iblongstringdef : def:=tstringdef.loadlong(ppufile);
- ibansistringdef : def:=tstringdef.loadansi(ppufile);
- ibwidestringdef : def:=tstringdef.loadwide(ppufile);
- ibunicodestringdef : def:=tstringdef.loadunicode(ppufile);
- ibrecorddef : def:=trecorddef.ppuload(ppufile);
- ibobjectdef : def:=tobjectdef.ppuload(ppufile);
- ibenumdef : def:=tenumdef.ppuload(ppufile);
- ibsetdef : def:=tsetdef.ppuload(ppufile);
- ibprocvardef : def:=tprocvardef.ppuload(ppufile);
- ibfiledef : def:=tfiledef.ppuload(ppufile);
- ibclassrefdef : def:=tclassrefdef.ppuload(ppufile);
- ibformaldef : def:=tformaldef.ppuload(ppufile);
- ibvariantdef : def:=tvariantdef.ppuload(ppufile);
- ibundefineddef : def:=tundefineddef.ppuload(ppufile);
+ ibpointerdef : def:=cpointerdef.ppuload(ppufile);
+ ibarraydef : def:=carraydef.ppuload(ppufile);
+ iborddef : def:=corddef.ppuload(ppufile);
+ ibfloatdef : def:=cfloatdef.ppuload(ppufile);
+ ibprocdef : def:=cprocdef.ppuload(ppufile);
+ ibshortstringdef : def:=cstringdef.loadshort(ppufile);
+ iblongstringdef : def:=cstringdef.loadlong(ppufile);
+ ibansistringdef : def:=cstringdef.loadansi(ppufile);
+ ibwidestringdef : def:=cstringdef.loadwide(ppufile);
+ ibunicodestringdef : def:=cstringdef.loadunicode(ppufile);
+ ibrecorddef : def:=crecorddef.ppuload(ppufile);
+ ibobjectdef : def:=cobjectdef.ppuload(ppufile);
+ ibenumdef : def:=cenumdef.ppuload(ppufile);
+ ibsetdef : def:=csetdef.ppuload(ppufile);
+ ibprocvardef : def:=cprocvardef.ppuload(ppufile);
+ ibfiledef : def:=cfiledef.ppuload(ppufile);
+ ibclassrefdef : def:=cclassrefdef.ppuload(ppufile);
+ ibformaldef : def:=cformaldef.ppuload(ppufile);
+ ibvariantdef : def:=cvariantdef.ppuload(ppufile);
+ ibundefineddef : def:=cundefineddef.ppuload(ppufile);
ibenddefs : break;
ibend : Message(unit_f_ppu_read_error);
else
@@ -529,21 +529,21 @@ implementation
repeat
b:=ppufile.readentry;
case b of
- ibtypesym : sym:=ttypesym.ppuload(ppufile);
- ibprocsym : sym:=tprocsym.ppuload(ppufile);
- ibconstsym : sym:=tconstsym.ppuload(ppufile);
- ibstaticvarsym : sym:=tstaticvarsym.ppuload(ppufile);
- iblocalvarsym : sym:=tlocalvarsym.ppuload(ppufile);
- ibparavarsym : sym:=tparavarsym.ppuload(ppufile);
- ibfieldvarsym : sym:=tfieldvarsym.ppuload(ppufile);
- ibabsolutevarsym : sym:=tabsolutevarsym.ppuload(ppufile);
- ibenumsym : sym:=tenumsym.ppuload(ppufile);
- ibpropertysym : sym:=tpropertysym.ppuload(ppufile);
- ibunitsym : sym:=tunitsym.ppuload(ppufile);
- iblabelsym : sym:=tlabelsym.ppuload(ppufile);
- ibsyssym : sym:=tsyssym.ppuload(ppufile);
+ ibtypesym : sym:=ctypesym.ppuload(ppufile);
+ ibprocsym : sym:=cprocsym.ppuload(ppufile);
+ ibconstsym : sym:=cconstsym.ppuload(ppufile);
+ ibstaticvarsym : sym:=cstaticvarsym.ppuload(ppufile);
+ iblocalvarsym : sym:=clocalvarsym.ppuload(ppufile);
+ ibparavarsym : sym:=cparavarsym.ppuload(ppufile);
+ ibfieldvarsym : sym:=cfieldvarsym.ppuload(ppufile);
+ ibabsolutevarsym : sym:=cabsolutevarsym.ppuload(ppufile);
+ ibenumsym : sym:=cenumsym.ppuload(ppufile);
+ ibpropertysym : sym:=cpropertysym.ppuload(ppufile);
+ ibunitsym : sym:=cunitsym.ppuload(ppufile);
+ iblabelsym : sym:=clabelsym.ppuload(ppufile);
+ ibsyssym : sym:=csyssym.ppuload(ppufile);
ibmacrosym : sym:=tmacro.ppuload(ppufile);
- ibnamespacesym : sym:=tnamespacesym.ppuload(ppufile);
+ ibnamespacesym : sym:=cnamespacesym.ppuload(ppufile);
ibendsyms : break;
ibend : Message(unit_f_ppu_read_error);
else
@@ -2135,7 +2135,7 @@ implementation
system.delete(n,1,p);
oldsym:=findnamespace(upper(ns));
if not assigned(oldsym) then
- insert(tnamespacesym.create(ns));
+ insert(cnamespacesym.create(ns));
p:=pos('.',n);
end;
end;
@@ -3592,29 +3592,42 @@ implementation
if srsym<>nil then
begin
- if srsym.typ=propertysym then
- begin
- result:=true;
- exit;
- end;
- for i:=0 to tprocsym(srsym).procdeflist.count-1 do
- begin
- pdef:=tprocdef(tprocsym(srsym).procdeflist[i]);
- if not is_visible_for_object(pdef.owner,pdef.visibility,contextclassh) then
- continue;
- { we need to know if a procedure references symbols
- in the static symtable, because then it can't be
- inlined from outside this unit }
- if assigned(current_procinfo) and
- (srsym.owner.symtabletype=staticsymtable) then
- include(current_procinfo.flags,pi_uses_static_symtable);
- { the first found method wins }
- srsym:=tprocdef(tprocsym(srsym).procdeflist[i]).procsym;
- srsymtable:=srsym.owner;
- addsymref(srsym);
- result:=true;
- exit;
- end;
+ case srsym.typ of
+ procsym:
+ begin
+ for i:=0 to tprocsym(srsym).procdeflist.count-1 do
+ begin
+ pdef:=tprocdef(tprocsym(srsym).procdeflist[i]);
+ if not is_visible_for_object(pdef.owner,pdef.visibility,contextclassh) then
+ continue;
+ { we need to know if a procedure references symbols
+ in the static symtable, because then it can't be
+ inlined from outside this unit }
+ if assigned(current_procinfo) and
+ (srsym.owner.symtabletype=staticsymtable) then
+ include(current_procinfo.flags,pi_uses_static_symtable);
+ { the first found method wins }
+ srsym:=tprocdef(tprocsym(srsym).procdeflist[i]).procsym;
+ srsymtable:=srsym.owner;
+ addsymref(srsym);
+ result:=true;
+ exit;
+ end;
+ end;
+ typesym,
+ fieldvarsym,
+ constsym,
+ enumsym,
+ undefinedsym,
+ propertysym:
+ begin
+ addsymref(srsym);
+ result:=true;
+ exit;
+ end;
+ else
+ internalerror(2014041101);
+ end;
end;
{ try the helper parent if available }
@@ -4044,7 +4057,7 @@ implementation
systemunit:=nil;
{ create error syms and def }
generrorsym:=terrorsym.create;
- generrordef:=terrordef.create;
+ generrordef:=cerrordef.create;
{ macros }
initialmacrosymtable:=tmacrosymtable.create(false);
macrosymtablestack:=TSymtablestack.create;
diff --git a/compiler/systems.inc b/compiler/systems.inc
index f67c389af0..c1ffc4de19 100644
--- a/compiler/systems.inc
+++ b/compiler/systems.inc
@@ -160,7 +160,9 @@
system_arm_android, { 77 }
system_i386_android, { 78 }
system_i8086_msdos, { 79 }
- system_mipsel_android { 80 }
+ system_mipsel_android, { 80 }
+ system_mipseb_embedded, { 81 }
+ system_mipsel_embedded { 82 }
);
type
@@ -205,6 +207,7 @@
,as_x86_64_nasmdarwin
,as_i8086_nasm
,as_i8086_nasmobj
+ ,as_gas_powerpc_xcoff
,as_llvm
);
diff --git a/compiler/systems.pas b/compiler/systems.pas
index ef87bedd9a..e49fb47a02 100644
--- a/compiler/systems.pas
+++ b/compiler/systems.pas
@@ -260,7 +260,7 @@ interface
system_iA64_embedded,system_x86_64_embedded,
system_mips_embedded,system_arm_embedded,
system_powerpc64_embedded,system_avr_embedded,
- system_jvm_java32];
+ system_jvm_java32,system_mipseb_embedded,system_mipsel_embedded];
{ all systems that allow section directive }
systems_allow_section = systems_embedded;
@@ -344,6 +344,17 @@ interface
{$endif not llvm}
];
+ { pointer checking (requires special code in FPC_CHECKPOINTER,
+ and can never work for libc-based targets or any other program
+ linking to an external library)
+ }
+ systems_support_checkpointer = [system_i386_linux,system_powerpc_linux]
+ + [system_i386_win32]
+ + [system_i386_GO32V2]
+ + [system_i386_os2]
+ + [system_i386_beos,system_i386_haiku]
+ + [system_powerpc_morphos];
+
cpu2str : array[TSystemCpu] of string[10] =
('','i386','m68k','alpha','powerpc','sparc','vm','ia64','x86_64',
'mips','arm', 'powerpc64', 'avr', 'mipsel','jvm', 'i8086');
@@ -355,7 +366,7 @@ interface
(name: 'EABI' ; supported:{$ifdef FPC_ARMEL}true{$else}false{$endif}),
(name: 'ARMEB' ; supported:{$ifdef FPC_ARMEB}true{$else}false{$endif}),
(name: 'EABIHF' ; supported:{$ifdef FPC_ARMHF}true{$else}false{$endif}),
- (name: 'OLDWIN32GNU'; supported:{$ifdef CPUI386}true{$else}false{$endif})
+ (name: 'OLDWIN32GNU'; supported:{$ifdef I386}true{$else}false{$endif})
);
var
diff --git a/compiler/systems/i_embed.pas b/compiler/systems/i_embed.pas
index 0dc34be25d..1ae584ac06 100644
--- a/compiler/systems/i_embed.pas
+++ b/compiler/systems/i_embed.pas
@@ -156,6 +156,70 @@ unit i_embed;
llvmdatalayout : 'todo';
);
+ system_mipsel_embedded_info : tsysteminfo =
+ (
+ system : system_mipsel_embedded;
+ name : 'Embedded';
+ shortname : 'embedded';
+ flags : [tf_needs_symbol_size,tf_needs_symbol_type,tf_files_case_sensitive,
+ tf_smartlink_sections];
+ cpu : cpu_mipsel;
+ unit_env : '';
+ extradefines : '';
+ exeext : '';
+ defext : '.def';
+ scriptext : '.sh';
+ smartext : '.sl';
+ unitext : '.ppu';
+ unitlibext : '.ppl';
+ asmext : '.s';
+ objext : '.o';
+ resext : '.res';
+ resobjext : '.or';
+ sharedlibext : '.so';
+ staticlibext : '.a';
+ staticlibprefix : 'libp';
+ sharedlibprefix : 'lib';
+ sharedClibext : '.so';
+ staticClibext : '.a';
+ staticClibprefix : 'lib';
+ sharedClibprefix : 'lib';
+ importlibprefix : 'libimp';
+ importlibext : '.a';
+ Cprefix : '';
+ newline : #10;
+ dirsep : '/';
+ assem : as_gas;
+ assemextern : as_gas;
+ link : ld_none;
+ linkextern : ld_embedded;
+ ar : ar_gnu_ar;
+ res : res_none;
+ dbg : dbg_dwarf2;
+ script : script_unix;
+ endian : endian_little;
+ alignment :
+ (
+ procalign : 4;
+ loopalign : 4;
+ jumpalign : 0;
+ constalignmin : 0;
+ constalignmax : 4;
+ varalignmin : 0;
+ varalignmax : 4;
+ localalignmin : 4;
+ localalignmax : 8;
+ recordalignmin : 0;
+ recordalignmax : 8;
+ maxCrecordalign : 4
+ );
+ first_parm_offset : 0;
+ stacksize : 262144;
+ stackalign : 8;
+ abi : abi_default;
+ llvmdatalayout : 'todo';
+ );
+
system_i386_embedded_info : tsysteminfo =
(
system : system_i386_embedded;
@@ -233,6 +297,11 @@ initialization
set_source_info(system_avr_embedded_info);
{$endif embedded}
{$endif CPUAVR}
+{$ifdef CPUMIPSEL}
+ {$ifdef embedded}
+ set_source_info(system_mipsel_embedded_info);
+ {$endif embedded}
+{$endif CPUMIPSEL}
{$ifdef CPUI386}
{$ifdef embedded}
set_source_info(system_i386_embedded_info);
diff --git a/compiler/systems/i_go32v2.pas b/compiler/systems/i_go32v2.pas
index 6d5415ee45..8ff9a323ba 100644
--- a/compiler/systems/i_go32v2.pas
+++ b/compiler/systems/i_go32v2.pas
@@ -65,7 +65,7 @@ unit i_go32v2;
assemextern : as_gas;
link : ld_int_go32v2;
linkextern : ld_go32v2;
- ar : ar_gnu_ar;
+ ar : ar_gnu_ar_scripted;
res : res_none;
dbg : dbg_stabs;
script : script_dos;
diff --git a/compiler/systems/i_sunos.pas b/compiler/systems/i_sunos.pas
index 58d6566176..9315e97a9f 100644
--- a/compiler/systems/i_sunos.pas
+++ b/compiler/systems/i_sunos.pas
@@ -136,7 +136,7 @@ unit i_sunos;
assemextern : as_ggas;
link : ld_none;
linkextern : ld_solaris;
- ar : ar_gnu_ar;
+ ar : ar_gnu_gar;
res : res_elf;
dbg : dbg_dwarf2;
script : script_unix;
diff --git a/compiler/systems/i_win.pas b/compiler/systems/i_win.pas
index 944466c9f7..3d9122ef9f 100644
--- a/compiler/systems/i_win.pas
+++ b/compiler/systems/i_win.pas
@@ -139,7 +139,7 @@ unit i_win;
link : ld_int_windows;
linkextern : ld_windows;
ar : ar_gnu_ar;
- res : res_win64_gorc;
+ res : res_gnu_windres;
dbg : dbg_dwarf2;
script : script_dos;
endian : endian_little;
diff --git a/compiler/systems/t_embed.pas b/compiler/systems/t_embed.pas
index cbbf6df4ab..aad7226fba 100644
--- a/compiler/systems/t_embed.pas
+++ b/compiler/systems/t_embed.pas
@@ -61,10 +61,20 @@ end;
procedure TlinkerEmbedded.SetDefaultInfo;
+const
+{$ifdef mips}
+ {$ifdef mipsel}
+ platform_select='-EL';
+ {$else}
+ platform_select='-EB';
+ {$endif}
+{$else}
+ platform_select='';
+{$endif}
begin
with Info do
begin
- ExeCmd[1]:='ld -g $OPT $DYNLINK $STATIC $GCSECTIONS $STRIP -L. -o $EXE -T $RES';
+ ExeCmd[1]:='ld -g '+platform_select+' $OPT $DYNLINK $STATIC $GCSECTIONS $STRIP -L. -o $EXE -T $RES';
end;
end;
@@ -80,13 +90,13 @@ Var
linklibc : boolean;
found1,
found2 : boolean;
-{$ifdef ARM}
+{$if defined(ARM) or defined(MIPSEL)}
LinkStr : string;
{$endif}
begin
WriteResponseFile:=False;
linklibc:=(SharedLibFiles.Find('c')<>nil);
-{$if defined(ARM) or defined(i386) or defined(AVR)}
+{$if defined(ARM) or defined(i386) or defined(AVR) or defined(MIPSEL)}
prtobj:='';
{$else}
prtobj:='prt0';
@@ -125,6 +135,7 @@ begin
s:=FindObjectFile(prtobj,'',false);
LinkRes.AddFileName(s);
end;
+
{ try to add crti and crtbegin if linking to C }
if linklibc then
begin
@@ -793,6 +804,197 @@ begin
end;
{$endif AVR}
+{$ifdef MIPSEL}
+ case current_settings.controllertype of
+ ct_none:
+ begin
+ end;
+ ct_pic32mx110f016b,
+ ct_pic32mx110f016c,
+ ct_pic32mx110f016d,
+ ct_pic32mx120f032b,
+ ct_pic32mx120f032c,
+ ct_pic32mx120f032d,
+ ct_pic32mx130f064b,
+ ct_pic32mx130f064c,
+ ct_pic32mx130f064d,
+ ct_pic32mx150f128b,
+ ct_pic32mx150f128c,
+ ct_pic32mx150f128d,
+ ct_pic32mx210f016b,
+ ct_pic32mx210f016c,
+ ct_pic32mx210f016d,
+ ct_pic32mx220f032b,
+ ct_pic32mx220f032c,
+ ct_pic32mx220f032d,
+ ct_pic32mx230f064b,
+ ct_pic32mx230f064c,
+ ct_pic32mx230f064d,
+ ct_pic32mx250f128b,
+ ct_pic32mx250f128c,
+ ct_pic32mx250f128d,
+ ct_pic32mx775f256h,
+ ct_pic32mx775f256l,
+ ct_pic32mx775f512h,
+ ct_pic32mx775f512l,
+ ct_pic32mx795f512h,
+ ct_pic32mx795f512l:
+ begin
+ with embedded_controllers[current_settings.controllertype] do
+ with linkres do
+ begin
+ Add('OUTPUT_FORMAT("elf32-tradlittlemips")');
+ Add('OUTPUT_ARCH(pic32mx)');
+ Add('ENTRY(_reset)');
+ Add('PROVIDE(_vector_spacing = 0x00000001);');
+ Add('_ebase_address = 0x'+IntToHex(flashbase,8)+';');
+ Add('_RESET_ADDR = 0xBFC00000;');
+ Add('_BEV_EXCPT_ADDR = 0xBFC00380;');
+ Add('_DBG_EXCPT_ADDR = 0xBFC00480;');
+ Add('_GEN_EXCPT_ADDR = _ebase_address + 0x180;');
+ Add('MEMORY');
+ Add('{');
+ if flashsize<>0 then
+ begin
+ Add(' kseg0_program_mem : ORIGIN = 0x'+IntToHex(flashbase,8)+', LENGTH = 0x'+IntToHex(flashsize,8));
+ //TODO This should better be placed into the controllertype records
+ Add(' kseg1_boot_mem : ORIGIN = 0xBFC00000, LENGTH = 0xbef');
+ Add(' config3 : ORIGIN = 0xBFC00BF0, LENGTH = 0x4');
+ Add(' config2 : ORIGIN = 0xBFC00BF4, LENGTH = 0x4');
+ Add(' config1 : ORIGIN = 0xBFC00BF8, LENGTH = 0x4');
+ Add(' config0 : ORIGIN = 0xBFC00BFC, LENGTH = 0x4');
+ end;
+
+ Add(' ram : ORIGIN = 0x' + IntToHex(srambase,8)
+ + ', LENGTH = 0x' + IntToHex(sramsize,8));
+
+ Add('}');
+ Add('_stack_top = 0x' + IntToHex(sramsize+srambase,8) + ';');
+ end;
+ end
+ else
+ if not (cs_link_nolink in current_settings.globalswitches) then
+ internalerror(200902011);
+ end;
+
+ with linkres do
+ begin
+ Add('SECTIONS');
+ Add('{');
+ Add(' .reset _RESET_ADDR :');
+ Add(' {');
+ Add(' KEEP(*(.reset .reset.*))');
+ Add(' KEEP(*(.startup .startup.*))');
+ Add(' } > kseg1_boot_mem');
+ Add(' .bev_excpt _BEV_EXCPT_ADDR :');
+ Add(' {');
+ Add(' KEEP(*(.bev_handler))');
+ Add(' } > kseg1_boot_mem');
+
+ Add(' .text :');
+ Add(' {');
+ Add(' _text_start = .;');
+ Add(' . = _text_start + 0x180;');
+ Add(' KEEP(*(.gen_handler))');
+ Add(' . = _text_start + 0x200;');
+ Add(' KEEP(*(.init .init.*))');
+ Add(' *(.text .text.*)');
+ Add(' *(.strings)');
+ Add(' *(.rodata .rodata.*)');
+ Add(' *(.comment)');
+ Add(' _etext = .;');
+ if embedded_controllers[current_settings.controllertype].flashsize<>0 then
+ begin
+ Add(' } >kseg0_program_mem');
+ end
+ else
+ begin
+ Add(' } >ram');
+ end;
+ Add(' .note.gnu.build-id : { *(.note.gnu.build-id) }');
+
+ Add(' .data :');
+ Add(' {');
+ Add(' _data = .;');
+ Add(' *(.data .data.*)');
+ Add(' KEEP (*(.fpc .fpc.n_version .fpc.n_links))');
+ Add(' . = .;');
+ Add(' _gp = ALIGN(16) + 0x7ff0;');
+ Add(' _edata = .;');
+ if embedded_controllers[current_settings.controllertype].flashsize<>0 then
+ begin
+ Add(' } >ram AT >kseg0_program_mem');
+ end
+ else
+ begin
+ Add(' } >ram');
+ end;
+ Add(' .config_BFC00BF0 : {');
+ Add(' KEEP(*(.config_BFC00BF0))');
+ Add(' } > config3');
+ Add(' .config_BFC00BF4 : {');
+ Add(' KEEP(*(.config_BFC00BF4))');
+ Add(' } > config2');
+ Add(' .config_BFC00BF8 : {');
+ Add(' KEEP(*(.config_BFC00BF8))');
+ Add(' } > config1');
+ Add(' .config_BFC00BFC : {');
+ Add(' KEEP(*(.config_BFC00BFC))');
+ Add(' } > config0');
+ Add(' .bss :');
+ Add(' {');
+ Add(' _bss_start = .;');
+ Add(' *(.bss, .bss.*)');
+ Add(' *(COMMON)');
+ Add(' } >ram');
+ Add('. = ALIGN(4);');
+ Add('_bss_end = . ;');
+ Add(' .comment 0 : { *(.comment) }');
+ Add(' /* DWARF debug sections.');
+ Add(' Symbols in the DWARF debugging sections are relative to the beginning');
+ Add(' of the section so we begin them at 0. */');
+ Add(' /* DWARF 1 */');
+ Add(' .debug 0 : { *(.debug) }');
+ Add(' .line 0 : { *(.line) }');
+ Add(' /* GNU DWARF 1 extensions */');
+ Add(' .debug_srcinfo 0 : { *(.debug_srcinfo) }');
+ Add(' .debug_sfnames 0 : { *(.debug_sfnames) }');
+ Add(' /* DWARF 1.1 and DWARF 2 */');
+ Add(' .debug_aranges 0 : { *(.debug_aranges) }');
+ Add(' .debug_pubnames 0 : { *(.debug_pubnames) }');
+ Add(' /* DWARF 2 */');
+ Add(' .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }');
+ Add(' .debug_abbrev 0 : { *(.debug_abbrev) }');
+ Add(' /DISCARD/ : { *(.debug_line) }');
+ Add(' .debug_frame 0 : { *(.debug_frame) }');
+ Add(' .debug_str 0 : { *(.debug_str) }');
+ Add(' /DISCARD/ : { *(.debug_loc) }');
+ Add(' .debug_macinfo 0 : { *(.debug_macinfo) }');
+ Add(' /* SGI/MIPS DWARF 2 extensions */');
+ Add(' .debug_weaknames 0 : { *(.debug_weaknames) }');
+ Add(' .debug_funcnames 0 : { *(.debug_funcnames) }');
+ Add(' .debug_typenames 0 : { *(.debug_typenames) }');
+ Add(' .debug_varnames 0 : { *(.debug_varnames) }');
+ Add(' /* DWARF 3 */');
+ Add(' .debug_pubtypes 0 : { *(.debug_pubtypes) }');
+ Add(' .debug_ranges 0 : { *(.debug_ranges) }');
+ Add(' .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }');
+ Add(' .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }');
+ Add(' .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }');
+ Add(' .mdebug.abi32 : { KEEP(*(.mdebug.abi32)) }');
+ Add(' .mdebug.abiN32 : { KEEP(*(.mdebug.abiN32)) }');
+ Add(' .mdebug.abi64 : { KEEP(*(.mdebug.abi64)) }');
+ Add(' .mdebug.abiO64 : { KEEP(*(.mdebug.abiO64)) }');
+ Add(' .mdebug.eabi32 : { KEEP(*(.mdebug.eabi32)) }');
+ Add(' .mdebug.eabi64 : { KEEP(*(.mdebug.eabi64)) }');
+ Add(' /DISCARD/ : { *(.rel.dyn) }');
+ Add(' /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) }');
+ Add('}');
+ Add('_end = .;');
+ end;
+{$endif MIPSEL}
+
+
{ Write and Close response }
linkres.writetodisk;
linkres.free;
@@ -856,7 +1058,7 @@ begin
if success and not(cs_link_nolink in current_settings.globalswitches) then
success:=PostProcessExecutable(current_module.exefilename+'.elf',false);
- if success and (target_info.system in [system_arm_embedded,system_avr_embedded]) then
+ if success and (target_info.system in [system_arm_embedded,system_avr_embedded,system_mipsel_embedded]) then
begin
success:=DoExec(FindUtil(utilsprefix+'objcopy'),'-O ihex '+
ChangeFileExt(current_module.exefilename,'.elf')+' '+
@@ -1047,4 +1249,10 @@ initialization
RegisterLinker(ld_embedded,TLinkerEmbedded);
RegisterTarget(system_i386_embedded_info);
{$endif i386}
+
+{$ifdef mipsel}
+ RegisterLinker(ld_embedded,TLinkerEmbedded);
+ RegisterTarget(system_mipsel_embedded_info);
+{$endif mipsel}
+
end.
diff --git a/compiler/systems/t_go32v2.pas b/compiler/systems/t_go32v2.pas
index f443ec3c59..6516515be5 100644
--- a/compiler/systems/t_go32v2.pas
+++ b/compiler/systems/t_go32v2.pas
@@ -208,9 +208,11 @@ begin
{ Add all options to link.res instead of passing them via command line:
DOS command line is limited to 126 characters! }
- LinkRes.Add('--script='+maybequoted(outputexedir+Info.ScriptName));
+ { Newer or cross GNU ld do not like \ in path names,
+ so we use bstoslash }
+ LinkRes.Add('--script='+maybequoted(bstoslash(outputexedir+Info.ScriptName)));
if (cs_link_map in current_settings.globalswitches) then
- LinkRes.Add('-Map '+maybequoted(ChangeFileExt(current_module.exefilename,'.map')));
+ LinkRes.Add('-Map '+maybequoted(bstoslash(ChangeFileExt(current_module.exefilename,'.map'))));
if create_smartlink_sections then
LinkRes.Add('--gc-sections');
if info.ExtraOptions<>'' then
@@ -218,7 +220,7 @@ begin
(* Potential issues with older ld version??? *)
if (cs_link_strip in current_settings.globalswitches) then
LinkRes.Add('-s');
- LinkRes.Add('-o '+maybequoted(current_module.exefilename));
+ LinkRes.Add('-o '+maybequoted(bstoslash(current_module.exefilename)));
{ Write staticlibraries }
if not StaticLibFiles.Empty then
@@ -227,7 +229,7 @@ begin
While not StaticLibFiles.Empty do
begin
S:=StaticLibFiles.GetFirst;
- LinkRes.AddFileName(GetShortName(s))
+ LinkRes.AddFileName(bstoslash(GetShortName(s)))
end;
LinkRes.Add('-)');
end;
diff --git a/compiler/systems/t_msdos.pas b/compiler/systems/t_msdos.pas
index ab77e206a8..433fc0e883 100644
--- a/compiler/systems/t_msdos.pas
+++ b/compiler/systems/t_msdos.pas
@@ -247,6 +247,8 @@ begin
{ Add all options to link.res instead of passing them via command line:
DOS command line is limited to 126 characters! }
+ LinkRes.Add('option quiet');
+
if paratargetdbg in [dbg_dwarf2,dbg_dwarf3,dbg_dwarf4] then
LinkRes.Add('debug dwarf');
diff --git a/compiler/systems/t_win.pas b/compiler/systems/t_win.pas
index 7fce266e0d..32e88ff5fc 100644
--- a/compiler/systems/t_win.pas
+++ b/compiler/systems/t_win.pas
@@ -101,7 +101,6 @@ implementation
const
-{$ifndef x86_64}
res_gnu_windres_info : tresinfo =
(
id : res_gnu_windres;
@@ -112,7 +111,6 @@ implementation
resourcefileclass : nil;
resflags : [];
);
-{$else x86_64}
res_win64_gorc_info : tresinfo =
(
id : res_win64_gorc;
@@ -123,7 +121,6 @@ implementation
resourcefileclass : nil;
resflags : [];
);
-{$endif x86_64}
Procedure GlobalInitSysInitUnitName(Linker : TLinker);
@@ -1837,6 +1834,7 @@ initialization
RegisterImport(system_x86_64_win64,TImportLibWin);
RegisterExport(system_x86_64_win64,TExportLibWin);
RegisterDLLScanner(system_x86_64_win64,TDLLScannerWin);
+ RegisterRes(res_gnu_windres_info,TWinLikeResourceFile);
RegisterRes(res_win64_gorc_info,TWinLikeResourceFile);
RegisterTarget(system_x64_win64_info);
{$endif x86_64}
diff --git a/compiler/utils/Makefile b/compiler/utils/Makefile
index 226fa9efb2..72d50d224c 100644
--- a/compiler/utils/Makefile
+++ b/compiler/utils/Makefile
@@ -1,8 +1,8 @@
#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-03-19 rev 27188]
#
default: all
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos
BSDs = freebsd netbsd openbsd darwin
UNIXs = linux $(BSDs) solaris qnx haiku aix
LIMIT83fs = go32v2 os2 emx watcom msdos
@@ -184,6 +184,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t
endif
override FPCOPT+=-Cp$(SUBARCH)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+ifeq ($(SUBARCH),)
+$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined)
+endif
+override FPCOPT+=-Cp$(SUBARCH)
+endif
ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
TARGETSUFFIX=$(OS_TARGET)
SOURCESUFFIX=$(OS_SOURCE)
@@ -320,448 +326,454 @@ FPCFPMAKE=$(FPC)
endif
endif
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove mkarmins mkx86ins
endif
ifeq ($(FULL_TARGET),i386-linux)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),i386-win32)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),i386-os2)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),i386-beos)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),i386-netware)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),i386-emx)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),i386-wince)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),i386-android)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),arm-linux)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),arm-wince)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),arm-gba)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),arm-nds)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),arm-android)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),mips-linux)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),jvm-java)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),jvm-android)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override CLEAN_UNITS+=ppu crc usubst
+override CLEAN_UNITS+=ppu crc
endif
override INSTALL_FPCPACKAGE=y
ifeq ($(FULL_TARGET),i386-linux)
@@ -974,6 +986,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_UNITDIR+=..
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_UNITDIR+=..
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_UNITDIR+=..
endif
@@ -1196,6 +1211,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_SOURCEDIR+=..
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_SOURCEDIR+=..
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_SOURCEDIR+=..
endif
@@ -2059,6 +2077,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
REQUIRE_PACKAGES_RTL=1
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+REQUIRE_PACKAGES_RTL=1
+endif
ifeq ($(FULL_TARGET),mipsel-android)
REQUIRE_PACKAGES_RTL=1
endif
diff --git a/compiler/utils/Makefile.fpc b/compiler/utils/Makefile.fpc
index e2e72ff319..9c4ce7ac94 100644
--- a/compiler/utils/Makefile.fpc
+++ b/compiler/utils/Makefile.fpc
@@ -3,11 +3,11 @@
#
[target]
-programs=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+programs=fpc ppufiles ppudump ppumove mkarmins mkx86ins
rst=fpcsubst
[clean]
-units=ppu crc usubst
+units=ppu crc
[compiler]
unitdir=..
diff --git a/compiler/utils/ppuutils/ppudump.pp b/compiler/utils/ppuutils/ppudump.pp
index a78f3638f9..1038d5c542 100644
--- a/compiler/utils/ppuutils/ppudump.pp
+++ b/compiler/utils/ppuutils/ppudump.pp
@@ -162,7 +162,9 @@ const
{ 77 } 'Android-arm',
{ 78 } 'Android-i386',
{ 79 } 'MSDOS-i8086',
- { 79 } 'Android-MIPSel'
+ { 80 } 'Android-MIPSel',
+ { 81 } 'Embedded-mipseb',
+ { 82 } 'Embedded-mipsel'
);
const
@@ -473,7 +475,7 @@ type
str : string[30];
end;
const
- flagopts=27;
+ flagopts=28;
flagopt : array[1..flagopts] of tflagopt=(
(mask: $1 ;str:'init'),
(mask: $2 ;str:'final'),
@@ -503,7 +505,8 @@ const
(mask: $1000000 ;str:'has_resstrinits'),
(mask: $2000000 ;str:'i8086_far_code'),
(mask: $4000000 ;str:'i8086_far_data'),
- (mask: $8000000 ;str:'i8086_huge_data')
+ (mask: $8000000 ;str:'i8086_huge_data'),
+ (mask: $10000000;str:'i8086_cs_equals_ds')
);
var
i,ntflags : longint;
@@ -1097,9 +1100,9 @@ end;
disabledircache : boolean;
{ CPU targets with microcontroller support can add a controller specific unit }
-{$if defined(ARM) or defined(AVR)}
+{$if defined(ARM) or defined(AVR) or defined(MIPSEL)}
controllertype : tcontrollertype;
-{$endif defined(ARM) or defined(AVR)}
+{$endif defined(ARM) or defined(AVR) or defined(MIPSEL)}
{ WARNING: this pointer cannot be written as such in record token }
pmessage : pmessagestaterecord;
end;
@@ -1194,8 +1197,9 @@ const
(mask:pi_has_nested_exit;
str:' subroutine contains a nested subroutine which calls the exit of the current one '),
(mask:pi_has_stack_allocs;
- str:' allocates memory on stack, so stack may be unbalanced on exit ')
-
+ str:' allocates memory on stack, so stack may be unbalanced on exit '),
+ (mask:pi_estimatestacksize;
+ str:' stack size is estimated before subroutine is compiled ')
);
var
procinfooptions : tprocinfoflags;
@@ -1715,7 +1719,6 @@ const
(mask:po_has_public_name; str:'HasPublicName'),
(mask:po_forward; str:'Forward'),
(mask:po_global; str:'Global'),
- (mask:po_has_inlininginfo;str:'HasInliningInfo'),
(mask:po_syscall_legacy; str:'SyscallLegacy'),
(mask:po_syscall_sysv; str:'SyscallSysV'),
(mask:po_syscall_basesysv;str:'SyscallBaseSysV'),
@@ -1747,7 +1750,6 @@ var
begin
write([space,' Return type : ']);
readderef('', ProcDef.ReturnType);
- writeln([space,' Fpu used : ',ppufile.getbyte]);
proctypeoption:=tproctypeoption(ppufile.getbyte);
case proctypeoption of
potype_function: Include(ProcDef.Options, poFunction);
@@ -1881,8 +1883,6 @@ begin
else
write(', ');
write(varopt[i].str);
- if varopt[i].mask = vo_has_section then
- writeln(['Section name:',ppufile.getansistring]);
end;
writeln;
end;
@@ -1950,6 +1950,41 @@ begin
end;
+procedure readprocimploptions(const space: string; out implprocoptions: timplprocoptions);
+type
+ tpiopt=record
+ mask : timplprocoption;
+ str : string[30];
+ end;
+const
+ piopt : array[low(timplprocoption)..high(timplprocoption)] of tpiopt=(
+ (mask:pio_empty; str:'IsEmpty'),
+ (mask:pio_has_inlininginfo; str:'HasInliningInfo')
+ );
+var
+ i: timplprocoption;
+ first: boolean;
+begin
+ ppufile.getsmallset(implprocoptions);
+ if implprocoptions<>[] then
+ begin
+ first:=true;
+ write([space,' Options : ']);
+ for i:=low(piopt) to high(piopt) do
+ begin
+ if i in implprocoptions then
+ begin
+ if first then
+ first:=false
+ else
+ write(', ');
+ write(piopt[i].str);
+ end;
+ end;
+ writeln;
+ end;
+end;
+
procedure readarraydefoptions(ArrayDef: TPpuArrayDef);
{ type tarraydefoption is in unit symconst }
const
@@ -2442,6 +2477,10 @@ begin
{$else symansistr}
writeln([space,' Mangledname : ',getstring]);
{$endif symansistr}
+ if vo_has_section in varoptions then
+ writeln(['Section name:',ppufile.getansistring]);
+ write ([space,' FieldVarSymDeref: ']);
+ readderef('');
end;
iblocalvarsym :
@@ -2583,6 +2622,7 @@ var
l,j : longint;
calloption : tproccalloption;
procoptions : tprocoptions;
+ implprocoptions: timplprocoptions;
defoptions: tdefoptions;
iexpr: Tconstexprint;
def: TPpuDef;
@@ -2612,6 +2652,7 @@ begin
readcommondef('Pointer definition',defoptions,def);
write ([space,' Pointed Type : ']);
readderef('',TPpuPointerDef(def).Ptr);
+ writeln([space,' Has Pointer Math : ',(getbyte<>0)]);
if tsystemcpu(ppufile.header.cpu) in [cpu_i8086,cpu_i386,cpu_x86_64] then
begin
write([space,' X86 Pointer Type : ']);
@@ -2630,7 +2671,6 @@ begin
WriteWarning('Invalid x86 pointer type: ' + IntToStr(b));
end;
end;
- writeln([space,' Has Pointer Math : ',(getbyte<>0)]);
end;
iborddef :
@@ -2851,7 +2891,7 @@ begin
readvisibility(def);
write ([space,' SymOptions : ']);
readsymoptions(space+' ');
- write ([space,' Synthetic kind : ',Synthetic2Str(ppufile.getbyte)]);
+ writeln ([space,' Synthetic kind : ',Synthetic2Str(ppufile.getbyte)]);
if tsystemcpu(ppufile.header.cpu)=cpu_powerpc then
begin
{ library symbol for AmigaOS/MorphOS }
@@ -2869,7 +2909,8 @@ begin
writeln([space,' MsgStr : ',getstring]);
if (po_dispid in procoptions) then
writeln([space,' DispID: ',ppufile.getlongint]);
- if (po_has_inlininginfo in procoptions) then
+ readprocimploptions(space,implprocoptions);
+ if (pio_has_inlininginfo in implprocoptions) then
begin
write ([space,' FuncretSym : ']);
readderef('');
@@ -2878,7 +2919,7 @@ begin
b:=ppufile.getbyte;
if b<>0 then
begin
- write ([space,' Alias names : ']);
+ write ([space,' Alias names : ']);
for j:=1 to b do
begin
write(ppufile.getstring);
@@ -2887,16 +2928,15 @@ begin
end;
writeln;
end;
- writeln([space,' Empty : ',getbyte<>0]);
if not EndOfEntry then
HasMoreInfos;
space:=' '+space;
{ parast }
readsymtable('parast', TPpuProcDef(def));
{ localst }
- if (po_has_inlininginfo in procoptions) then
+ if (pio_has_inlininginfo in implprocoptions) then
readsymtable('localst');
- if (po_has_inlininginfo in procoptions) then
+ if (pio_has_inlininginfo in implprocoptions) then
readnodetree;
delete(space,1,4);
end;
@@ -2940,6 +2980,7 @@ begin
readcommondef('UnicodeString definition',defoptions,strdef);
strdef.Len:=getaint;
writeln([space,' Length : ',strdef.Len]);
+ writeln([space,' Encoding : ',getword]);
end;
ibansistringdef :
@@ -2949,6 +2990,7 @@ begin
readcommondef('AnsiString definition',defoptions,strdef);
strdef.Len:=getaint;
writeln([space,' Length : ',strdef.Len]);
+ writeln([space,' Encoding : ',getword]);
end;
iblongstringdef :
diff --git a/compiler/vis/cpunode.pas b/compiler/vis/cpunode.pas
index 010879c0e5..db4bd3cb3c 100644
--- a/compiler/vis/cpunode.pas
+++ b/compiler/vis/cpunode.pas
@@ -41,7 +41,9 @@ unit cpunode;
// nvismem,
// nvisinl,
// nvismat,
-// nviscnv
+// nviscnv,
+ { symtable }
+ symcpu
;
end.
diff --git a/compiler/widestr.pas b/compiler/widestr.pas
index 214fdd0bb6..da20059859 100644
--- a/compiler/widestr.pas
+++ b/compiler/widestr.pas
@@ -77,7 +77,7 @@ unit widestr;
cp1253,
{ other code pages }
cp8859_1,cp850,cp437,cp1252,cp646,
- cp874, cp856,
+ cp874, cp856,cp852,cp8859_2,
cp1250,cp1254,cp1255,cp1256,cp1257,cp1258,
{$endif}
globals,cutils;
diff --git a/compiler/wpobase.pas b/compiler/wpobase.pas
index ad4ad3ad44..e0c1b88b97 100644
--- a/compiler/wpobase.pas
+++ b/compiler/wpobase.pas
@@ -254,12 +254,12 @@ type
a static call when it's called as objdef.procdef, and if so returns the
mangled name in staticname.
}
- function staticnameforcallingvirtualmethod(objdef, procdef: tdef; out staticname: string): boolean; virtual; abstract;
+ function staticnameforcallingvirtualmethod(objdef, procdef: tdef; out staticname: TSymStr): boolean; virtual; abstract;
{ checks whether procdef (a procdef for a virtual method) can be replaced with
a different procname in the vmt of objdef, and if so returns the new
mangledname in staticname
}
- function staticnameforvmtentry(objdef, procdef: tdef; out staticname: string): boolean; virtual; abstract;
+ function staticnameforvmtentry(objdef, procdef: tdef; out staticname: TSymStr): boolean; virtual; abstract;
end;
twpodeadcodehandler = class(twpocomponentbase)
@@ -325,9 +325,9 @@ type
{ routines accessing the optimizer information }
{ 1) devirtualization at the symbol name level }
- function can_be_devirtualized(objdef, procdef: tdef; out name: shortstring): boolean; virtual; abstract;
+ function can_be_devirtualized(objdef, procdef: tdef; out name: TSymStr): boolean; virtual; abstract;
{ 2) optimal replacement method name in vmt }
- function optimized_name_for_vmt(objdef, procdef: tdef; out name: shortstring): boolean; virtual; abstract;
+ function optimized_name_for_vmt(objdef, procdef: tdef; out name: TSymStr): boolean; virtual; abstract;
{ 3) does a symbol appear in the final binary (i.e., not removed by dead code stripping/smart linking).
WARNING: do *not* call for inline functions/procedures/methods/...
}
diff --git a/compiler/wpoinfo.pas b/compiler/wpoinfo.pas
index d43da1bf63..15ea2c2b01 100644
--- a/compiler/wpoinfo.pas
+++ b/compiler/wpoinfo.pas
@@ -26,7 +26,7 @@ unit wpoinfo;
interface
uses
- cclasses,
+ globtype,cclasses,
symtype,
wpobase,
ppu;
@@ -62,8 +62,8 @@ type
{ twpoinfomanager }
twpoinfomanager = class(twpoinfomanagerbase)
- function can_be_devirtualized(objdef, procdef: tdef; out name: shortstring): boolean; override;
- function optimized_name_for_vmt(objdef, procdef: tdef; out name: shortstring): boolean; override;
+ function can_be_devirtualized(objdef, procdef: tdef; out name: TSymStr): boolean; override;
+ function optimized_name_for_vmt(objdef, procdef: tdef; out name: TSymStr): boolean; override;
function symbol_live(const name: shortstring): boolean; override;
end;
@@ -71,7 +71,6 @@ type
implementation
uses
- globtype,
globals,
symdef,
verbose;
@@ -287,7 +286,7 @@ implementation
{ devirtualisation }
- function twpoinfomanager.can_be_devirtualized(objdef, procdef: tdef; out name: shortstring): boolean;
+ function twpoinfomanager.can_be_devirtualized(objdef, procdef: tdef; out name: TSymStr): boolean;
begin
if not assigned(wpoinfouse[wpo_devirtualization_context_insensitive]) or
not(cs_wpo_devirtualize_calls in current_settings.dowpoptimizerswitches) then
@@ -299,7 +298,7 @@ implementation
end;
- function twpoinfomanager.optimized_name_for_vmt(objdef, procdef: tdef; out name: shortstring): boolean;
+ function twpoinfomanager.optimized_name_for_vmt(objdef, procdef: tdef; out name: TSymStr): boolean;
begin
if not assigned(wpoinfouse[wpo_devirtualization_context_insensitive]) or
not(cs_wpo_optimize_vmts in current_settings.dowpoptimizerswitches) then
diff --git a/compiler/x86/aasmcpu.pas b/compiler/x86/aasmcpu.pas
index 1dab3a9d18..2d26eb3e47 100644
--- a/compiler/x86/aasmcpu.pas
+++ b/compiler/x86/aasmcpu.pas
@@ -227,7 +227,7 @@ interface
TMemRefSizeInfo = (msiUnkown, msiUnsupported, msiNoSize,
msiMultiple, msiMultiple8, msiMultiple16, msiMultiple32,
msiMultiple64, msiMultiple128, msiMultiple256,
- msiMemRegSize, msiMemRegx64y128, msiMemRegx64y256,
+ msiMemRegSize, msiMemRegx16y32, msiMemRegx32y64, msiMemRegx64y128, msiMemRegx64y256,
msiMem8, msiMem16, msiMem32, msiMem64, msiMem128, msiMem256);
TConstSizeInfo = (csiUnkown, csiMultiple, csiNoSize, csiMem8, csiMem16, csiMem32, csiMem64);
@@ -427,9 +427,12 @@ implementation
IF_SSE41 = $00200000;
IF_SSE42 = $00200000;
IF_AVX = $00200000;
+ IF_AVX2 = $00200000;
IF_BMI1 = $00200000;
IF_BMI2 = $00200000;
IF_16BITONLY = $00200000;
+ IF_FMA = $00200000;
+ IF_FMA4 = $00200000;
IF_PLEVEL = $0F000000; { mask for processor level }
IF_8086 = $00000000; { 8086 instruction }
@@ -1946,7 +1949,7 @@ implementation
len : shortint;
ea_data : ea;
exists_vex: boolean;
- exists_vex_extention: boolean;
+ exists_vex_extension: boolean;
exists_prefix_66: boolean;
exists_prefix_F2: boolean;
exists_prefix_F3: boolean;
@@ -1957,7 +1960,7 @@ implementation
len:=0;
codes:=@p^.code[0];
exists_vex := false;
- exists_vex_extention := false;
+ exists_vex_extension := false;
exists_prefix_66 := false;
exists_prefix_F2 := false;
exists_prefix_F3 := false;
@@ -2113,24 +2116,25 @@ implementation
243: // REX.W = 1
// =>> VEX prefix length = 3
begin
- if not(exists_vex_extention) then
+ if not(exists_vex_extension) then
begin
inc(len);
- exists_vex_extention := true;
+ exists_vex_extension := true;
end;
end;
244: ; // VEX length bit
+ 246, // operand 2 (ymmreg) encoded immediate byte (bit 4-7)
247: inc(len); // operand 3 (ymmreg) encoded immediate byte (bit 4-7)
- 248: // VEX-Extention prefix $0F
+ 248: // VEX-Extension prefix $0F
// ignore for calculating length
;
- 249, // VEX-Extention prefix $0F38
- 250: // VEX-Extention prefix $0F3A
+ 249, // VEX-Extension prefix $0F38
+ 250: // VEX-Extension prefix $0F3A
begin
- if not(exists_vex_extention) then
+ if not(exists_vex_extension) then
begin
inc(len);
- exists_vex_extention := true;
+ exists_vex_extension := true;
end;
end;
192,193,194:
@@ -2168,8 +2172,8 @@ implementation
if exists_prefix_F3 then dec(len);
{$ifdef x86_64}
- if not(exists_vex_extention) then
- if rex and $0B <> 0 then inc(len); // REX.WXB <> 0 =>> needed VEX-Extention
+ if not(exists_vex_extension) then
+ if rex and $0B <> 0 then inc(len); // REX.WXB <> 0 =>> needed VEX-Extension
{$endif x86_64}
end;
@@ -2236,6 +2240,7 @@ implementation
* \362 - VEX prefix for AVX instructions
* \363 - VEX W1
* \364 - VEX Vector length 256
+ * \366 - operand 2 (ymmreg) encoded in bit 4-7 of the immediate byte
* \367 - operand 3 (ymmreg) encoded in bit 4-7 of the immediate byte
* \370 - VEX 0F-FLAG
@@ -2352,7 +2357,7 @@ implementation
data,s,opidx : longint;
ea_data : ea;
relsym : TObjSymbol;
- needed_VEX_Extention: boolean;
+ needed_VEX_Extension: boolean;
needed_VEX: boolean;
opmode: integer;
VEXvvvv: byte;
@@ -2385,7 +2390,7 @@ implementation
// needed VEX Prefix (for AVX etc.)
needed_VEX := false;
- needed_VEX_Extention := false;
+ needed_VEX_Extension := false;
opmode := -1;
VEXvvvv := 0;
VEXmmmmm := 0;
@@ -2406,17 +2411,17 @@ implementation
241: VEXvvvv := VEXvvvv OR $01; // set SIMD-prefix $66
242: needed_VEX := true;
243: begin
- needed_VEX_Extention := true;
+ needed_VEX_Extension := true;
VEXvvvv := VEXvvvv OR (1 shl 7); // set REX.W
end;
244: VEXvvvv := VEXvvvv OR $04; // vectorlength = 256 bits AND no scalar
248: VEXmmmmm := VEXmmmmm OR $01; // set leading opcode byte $0F
249: begin
- needed_VEX_Extention := true;
+ needed_VEX_Extension := true;
VEXmmmmm := VEXmmmmm OR $02; // set leading opcode byte $0F38
end;
250: begin
- needed_VEX_Extention := true;
+ needed_VEX_Extension := true;
VEXmmmmm := VEXmmmmm OR $03; // set leading opcode byte $0F3A
end;
@@ -2446,14 +2451,14 @@ implementation
end
else Internalerror(777101);
- if not(needed_VEX_Extention) then
+ if not(needed_VEX_Extension) then
begin
{$ifdef x86_64}
- if rex and $0B <> 0 then needed_VEX_Extention := true;
+ if rex and $0B <> 0 then needed_VEX_Extension := true;
{$endif x86_64}
end;
- if needed_VEX_Extention then
+ if needed_VEX_Extension then
begin
// VEX-Prefix-Length = 3 Bytes
bytes[0]:=$C4;
@@ -2493,7 +2498,7 @@ implementation
end
else
begin
- needed_VEX_Extention := false;
+ needed_VEX_Extension := false;
opmode := -1;
end;
@@ -2790,27 +2795,48 @@ implementation
are not needed }
end;
242..244: ; // VEX flags =>> nothing todo
- 247: begin
- if needed_VEX then
- begin
- if ops = 4 then
- begin
- if (oper[3]^.typ=top_reg) then
- begin
- if (oper[3]^.ot and otf_reg_xmm <> 0) or
- (oper[3]^.ot and otf_reg_ymm <> 0) then
- begin
- bytes[0] := ((getsupreg(oper[3]^.reg) and 15) shl 4);
- objdata.writebytes(bytes,1);
- end
- else Internalerror(777102);
- end
- else Internalerror(777103);
- end
- else Internalerror(777104);
- end
- else Internalerror(777105);
- end;
+ 246: begin
+ if needed_VEX then
+ begin
+ if ops = 4 then
+ begin
+ if (oper[2]^.typ=top_reg) then
+ begin
+ if (oper[2]^.ot and otf_reg_xmm <> 0) or
+ (oper[2]^.ot and otf_reg_ymm <> 0) then
+ begin
+ bytes[0] := ((getsupreg(oper[2]^.reg) and 15) shl 4);
+ objdata.writebytes(bytes,1);
+ end
+ else Internalerror(2014032001);
+ end
+ else Internalerror(2014032002);
+ end
+ else Internalerror(2014032003);
+ end
+ else Internalerror(2014032004);
+ end;
+ 247: begin
+ if needed_VEX then
+ begin
+ if ops = 4 then
+ begin
+ if (oper[3]^.typ=top_reg) then
+ begin
+ if (oper[3]^.ot and otf_reg_xmm <> 0) or
+ (oper[3]^.ot and otf_reg_ymm <> 0) then
+ begin
+ bytes[0] := ((getsupreg(oper[3]^.reg) and 15) shl 4);
+ objdata.writebytes(bytes,1);
+ end
+ else Internalerror(2014032005);
+ end
+ else Internalerror(2014032006);
+ end
+ else Internalerror(2014032007);
+ end
+ else Internalerror(2014032008);
+ end;
248..250: ; // VEX flags =>> nothing todo
31,
48,49,50 :
@@ -3058,10 +3084,14 @@ implementation
var
tmpref: treference;
begin
+ tmpref:=ref;
+{$ifdef i8086}
+ if tmpref.segment=NR_SS then
+ tmpref.segment:=NR_NO;
+{$endif i8086}
case getregtype(r) of
R_INTREGISTER :
begin
- tmpref:=ref;
if getsubreg(r)=R_SUBH then
inc(tmpref.offset);
{ we don't need special code here for 32 bit loads on x86_64, since
@@ -3072,24 +3102,24 @@ implementation
if current_settings.fputype in fpu_avx_instructionsets then
case getsubreg(r) of
R_SUBMMD:
- result:=taicpu.op_ref_reg(A_VMOVSD,reg2opsize(r),ref,r);
+ result:=taicpu.op_ref_reg(A_VMOVSD,reg2opsize(r),tmpref,r);
R_SUBMMS:
- result:=taicpu.op_ref_reg(A_VMOVSS,reg2opsize(r),ref,r);
+ result:=taicpu.op_ref_reg(A_VMOVSS,reg2opsize(r),tmpref,r);
R_SUBQ,
R_SUBMMWHOLE:
- result:=taicpu.op_ref_reg(A_VMOVQ,S_NO,ref,r);
+ result:=taicpu.op_ref_reg(A_VMOVQ,S_NO,tmpref,r);
else
internalerror(200506043);
end
else
case getsubreg(r) of
R_SUBMMD:
- result:=taicpu.op_ref_reg(A_MOVSD,reg2opsize(r),ref,r);
+ result:=taicpu.op_ref_reg(A_MOVSD,reg2opsize(r),tmpref,r);
R_SUBMMS:
- result:=taicpu.op_ref_reg(A_MOVSS,reg2opsize(r),ref,r);
+ result:=taicpu.op_ref_reg(A_MOVSS,reg2opsize(r),tmpref,r);
R_SUBQ,
R_SUBMMWHOLE:
- result:=taicpu.op_ref_reg(A_MOVQ,S_NO,ref,r);
+ result:=taicpu.op_ref_reg(A_MOVQ,S_NO,tmpref,r);
else
internalerror(200506043);
end;
@@ -3104,10 +3134,14 @@ implementation
size: topsize;
tmpref: treference;
begin
+ tmpref:=ref;
+{$ifdef i8086}
+ if tmpref.segment=NR_SS then
+ tmpref.segment:=NR_NO;
+{$endif i8086}
case getregtype(r) of
R_INTREGISTER :
begin
- tmpref:=ref;
if getsubreg(r)=R_SUBH then
inc(tmpref.offset);
size:=reg2opsize(r);
@@ -3126,24 +3160,24 @@ implementation
if current_settings.fputype in fpu_avx_instructionsets then
case getsubreg(r) of
R_SUBMMD:
- result:=taicpu.op_reg_ref(A_VMOVSD,reg2opsize(r),r,ref);
+ result:=taicpu.op_reg_ref(A_VMOVSD,reg2opsize(r),r,tmpref);
R_SUBMMS:
- result:=taicpu.op_reg_ref(A_VMOVSS,reg2opsize(r),r,ref);
+ result:=taicpu.op_reg_ref(A_VMOVSS,reg2opsize(r),r,tmpref);
R_SUBQ,
R_SUBMMWHOLE:
- result:=taicpu.op_reg_ref(A_VMOVQ,S_NO,r,ref);
+ result:=taicpu.op_reg_ref(A_VMOVQ,S_NO,r,tmpref);
else
internalerror(200506042);
end
else
case getsubreg(r) of
R_SUBMMD:
- result:=taicpu.op_reg_ref(A_MOVSD,reg2opsize(r),r,ref);
+ result:=taicpu.op_reg_ref(A_MOVSD,reg2opsize(r),r,tmpref);
R_SUBMMS:
- result:=taicpu.op_reg_ref(A_MOVSS,reg2opsize(r),r,ref);
+ result:=taicpu.op_reg_ref(A_MOVSS,reg2opsize(r),r,tmpref);
R_SUBQ,
R_SUBMMWHOLE:
- result:=taicpu.op_reg_ref(A_MOVQ,S_NO,r,ref);
+ result:=taicpu.op_reg_ref(A_MOVQ,S_NO,r,tmpref);
else
internalerror(200506042);
end;
@@ -3247,7 +3281,7 @@ implementation
actConstSize := 0;
actConstCount := 0;
- if asmop = a_movups then
+ if asmop = a_vpmovzxbq then
begin
RegXMMSizeMask := RegXMMSizeMask;
end;
@@ -3397,6 +3431,12 @@ implementation
(InsTabMemRefSizeInfoCache^[AsmOp].ExistsSSEAVX)then
begin
case RegXMMSizeMask of
+ OT_BITS16: case RegYMMSizeMask of
+ OT_BITS32: InsTabMemRefSizeInfoCache^[AsmOp].MemRefSize := msiMemRegx16y32;
+ end;
+ OT_BITS32: case RegYMMSizeMask of
+ OT_BITS64: InsTabMemRefSizeInfoCache^[AsmOp].MemRefSize := msiMemRegx32y64;
+ end;
OT_BITS64: case RegYMMSizeMask of
OT_BITS128: InsTabMemRefSizeInfoCache^[AsmOp].MemRefSize := msiMemRegx64y128;
OT_BITS256: InsTabMemRefSizeInfoCache^[AsmOp].MemRefSize := msiMemRegx64y256;
diff --git a/compiler/x86/agx86nsm.pas b/compiler/x86/agx86nsm.pas
index 4e72aee7e4..dba802d224 100644
--- a/compiler/x86/agx86nsm.pas
+++ b/compiler/x86/agx86nsm.pas
@@ -37,10 +37,10 @@ interface
TX86NasmAssembler = class(texternalassembler)
private
using_relative : boolean;
- function CodeSectionName: string;
+ function CodeSectionName(const aname:string): string;
procedure WriteReference(var ref : treference);
procedure WriteOper(const o:toper;s : topsize; opcode: tasmop;ops:longint;dest : boolean);
- procedure WriteOper_jmp(const o:toper; op : tasmop);
+ procedure WriteOper_jmp(const o:toper; ai : taicpu);
procedure WriteSection(atype:TAsmSectiontype;const aname:string);
public
procedure WriteTree(p:TAsmList);override;
@@ -312,11 +312,16 @@ interface
****************************************************************************}
- function TX86NasmAssembler.CodeSectionName: string;
+ function TX86NasmAssembler.CodeSectionName(const aname:string): string;
begin
{$ifdef i8086}
if current_settings.x86memorymodel in x86_far_code_models then
- result:=current_module.modulename^ + '_TEXT'
+ begin
+ if cs_huge_code in current_settings.moduleswitches then
+ result:=aname + '_TEXT use16 class=code'
+ else
+ result:=current_module.modulename^ + '_TEXT';
+ end
else
{$endif}
result:='.text';
@@ -428,9 +433,7 @@ interface
asmwrite('dword ');
{$endif i386}
{$ifdef i8086}
- if o.ref^.refaddr=addr_far then
- asmwrite('far ')
- else if o.ref^.refaddr=addr_seg then
+ if o.ref^.refaddr=addr_seg then
asmwrite('SEG ')
else
asmwrite('word ');
@@ -454,39 +457,39 @@ interface
end;
- procedure TX86NasmAssembler.WriteOper_jmp(const o:toper; op : tasmop);
+ procedure TX86NasmAssembler.WriteOper_jmp(const o:toper; ai : taicpu);
begin
case o.typ of
top_reg :
AsmWrite(nasm_regname(o.reg));
top_ref :
- if o.ref^.refaddr in [addr_no{$ifdef i8086},addr_far_ref{$endif}] then
+ if o.ref^.refaddr=addr_no then
begin
-{$ifdef i8086}
- if o.ref^.refaddr=addr_far_ref then
+ if ai.opsize=S_FAR then
AsmWrite('far ');
-{$endif i8086}
WriteReference(o.ref^);
end
else
begin
+ if ai.opsize=S_FAR then
+ AsmWrite('far ')
+ else
+ begin
{ NEAR forces NASM to emit near jumps, which are 386+ }
{$ifndef i8086}
if not(
- (op=A_JCXZ) or (op=A_JECXZ) or
+ (ai.opcode=A_JCXZ) or (ai.opcode=A_JECXZ) or
{$ifdef x86_64}
- (op=A_JRCXZ) or
+ (ai.opcode=A_JRCXZ) or
{$endif x86_64}
- (op=A_LOOP) or (op=A_LOOPE) or
- (op=A_LOOPNE) or (op=A_LOOPNZ) or
- (op=A_LOOPZ)
+ (ai.opcode=A_LOOP) or (ai.opcode=A_LOOPE) or
+ (ai.opcode=A_LOOPNE) or (ai.opcode=A_LOOPNZ) or
+ (ai.opcode=A_LOOPZ)
) then
AsmWrite('NEAR ');
{$endif i8086}
-{$ifdef i8086}
- if o.ref^.refaddr=addr_far then
- AsmWrite('far ');
-{$endif i8086}
+ end;
+
AsmWrite(o.ref^.symbol.name);
if SmartAsm then
AddSymbol(o.ref^.symbol.name,false);
@@ -583,7 +586,7 @@ interface
(target_info.system in (systems_windows+systems_wince)) then
AsmWrite('.tls'#9'bss')
else if secnames[atype]='.text' then
- AsmWrite(CodeSectionName)
+ AsmWrite(CodeSectionName(aname))
else
AsmWrite(secnames[atype]);
if create_smartlink_sections and
@@ -594,7 +597,7 @@ interface
AsmWrite(aname);
end;
AsmLn;
- LasTSecType:=atype;
+ LastSecType:=atype;
end;
procedure TX86NasmAssembler.WriteTree(p:TAsmList);
@@ -610,7 +613,7 @@ interface
i,j,l : longint;
InlineLevel : longint;
consttype : taiconst_type;
- do_line,
+ do_line, SkipNewLine,
quoted : boolean;
co : comp;
sin : single;
@@ -619,7 +622,7 @@ interface
e : extended;
{$endif cpuextended}
fixed_opcode: TAsmOp;
- prefix : string;
+ prefix, LastSecName : string;
begin
if not assigned(p) then
exit;
@@ -665,15 +668,15 @@ interface
begin
if tai_section(hp).sectype<>sec_none then
WriteSection(tai_section(hp).sectype,tai_section(hp).name^);
- LasTSecType:=tai_section(hp).sectype;
+ LastSecType:=tai_section(hp).sectype;
end;
ait_align :
begin
if (tai_align(hp).aligntype>1) then
begin
- if (lastsectype=sec_bss) or (
- (lastsectype=sec_threadvar) and
+ if (LastSecType=sec_bss) or (
+ (LastSecType=sec_threadvar) and
(target_info.system in (systems_windows+systems_wince))
) then
AsmWriteLn(#9'ALIGNB '+tostr(tai_align(hp).aligntype))
@@ -1002,6 +1005,13 @@ interface
fixed_opcode:=taicpu(hp).FixNonCommutativeOpcodes;
{ We need intel order, no At&t }
taicpu(hp).SetOperandOrder(op_intel);
+ { LOCK must be on same line as opcode }
+ if (taicpu(hp).ops = 0) and
+ (fixed_opcode = A_LOCK) then
+ SkipNewLine:=true
+ else
+ SkipNewLine:=false;
+
s:='';
if ((fixed_opcode=A_FADDP) or
(fixed_opcode=A_FMULP))
@@ -1057,7 +1067,7 @@ interface
if is_calljmp(fixed_opcode) then
begin
AsmWrite(#9);
- WriteOper_jmp(taicpu(hp).oper[0]^,fixed_opcode);
+ WriteOper_jmp(taicpu(hp).oper[0]^,taicpu(hp));
end
else
begin
@@ -1071,7 +1081,8 @@ interface
end;
end;
end;
- AsmLn;
+ if not SkipNewLine then
+ AsmLn;
end;
end;
@@ -1099,14 +1110,19 @@ interface
WriteHeader;
end;
{ avoid empty files }
+ LastSecType:=sec_none;
+ LastSecName:='';
while assigned(hp.next) and (tai(hp.next).typ in [ait_cutobject,ait_section,ait_comment]) do
begin
if tai(hp.next).typ=ait_section then
- lasTSectype:=tai_section(hp.next).sectype;
+ begin
+ LastSecType:=tai_section(hp.next).sectype;
+ LastSecName:=tai_section(hp.next).name^;
+ end;
hp:=tai(hp.next);
end;
- if lasTSectype<>sec_none then
- WriteSection(lasTSectype,'');
+ if LastSecType<>sec_none then
+ WriteSection(LastSecType,LastSecName);
AsmStartSize:=AsmSize;
end;
end;
@@ -1200,22 +1216,20 @@ interface
internalerror(2013050101);
end;
- AsmWriteLn('SECTION ' + CodeSectionName + ' use16 class=code');
- if current_settings.x86memorymodel in x86_near_data_models then
- begin
- { NASM complains if you put a missing section in the GROUP directive, so }
- { we add empty declarations to make sure they exist, even if empty }
- AsmWriteLn('SECTION .rodata');
- AsmWriteLn('SECTION .data');
- AsmWriteLn('SECTION .fpc');
- { WLINK requires class=bss in order to leave the BSS section out of the executable }
- AsmWriteLn('SECTION .bss class=bss');
- { group these sections in the same segment }
- if current_settings.x86memorymodel=mm_tiny then
- AsmWriteLn('GROUP dgroup text rodata data fpc bss')
- else
- AsmWriteLn('GROUP dgroup rodata data fpc bss');
- end;
+ if not (cs_huge_code in current_settings.moduleswitches) then
+ AsmWriteLn('SECTION ' + CodeSectionName(current_module.modulename^) + ' use16 class=code');
+ { NASM complains if you put a missing section in the GROUP directive, so }
+ { we add empty declarations to make sure they exist, even if empty }
+ AsmWriteLn('SECTION .rodata');
+ AsmWriteLn('SECTION .data');
+ AsmWriteLn('SECTION .fpc');
+ { WLINK requires class=bss in order to leave the BSS section out of the executable }
+ AsmWriteLn('SECTION .bss class=bss');
+ { group these sections in the same segment }
+ if current_settings.x86memorymodel=mm_tiny then
+ AsmWriteLn('GROUP dgroup text rodata data fpc bss')
+ else
+ AsmWriteLn('GROUP dgroup rodata data fpc bss');
if paratargetdbg in [dbg_dwarf2,dbg_dwarf3,dbg_dwarf4] then
begin
AsmWriteLn('SECTION .debug_frame use32 class=DWARF');
@@ -1223,7 +1237,8 @@ interface
AsmWriteLn('SECTION .debug_line use32 class=DWARF');
AsmWriteLn('SECTION .debug_abbrev use32 class=DWARF');
end;
- AsmWriteLn('SECTION ' + CodeSectionName);
+ if not (cs_huge_code in current_settings.moduleswitches) then
+ AsmWriteLn('SECTION ' + CodeSectionName(current_module.modulename^));
{$else i8086}
{$ifdef i386}
AsmWriteLn('BITS 32');
@@ -1425,6 +1440,7 @@ interface
flags : [af_needar,af_no_debug];
labelprefix : '..@';
comment : '; ';
+ dollarsign: '$';
);
as_i386_nasmbeos_info : tasminfo =
diff --git a/compiler/x86/cga.pas b/compiler/x86/cga.pas
index 5eb62b49e4..a039e703b9 100644
--- a/compiler/x86/cga.pas
+++ b/compiler/x86/cga.pas
@@ -44,6 +44,7 @@ interface
procedure emit_const_reg_reg(i : tasmop;s : topsize;c : longint;reg1,reg2 : tregister);
procedure emit_reg_reg_reg(i : tasmop;s : topsize;reg1,reg2,reg3 : tregister);
+ procedure emit_ref_reg_reg(i : tasmop;s : topsize;ref : treference;reg1,reg2 : tregister);
procedure emit_sym(i : tasmop;s : topsize;op : tasmsymbol);
@@ -124,6 +125,12 @@ implementation
current_asmdata.CurrAsmList.concat(Taicpu.Op_reg_reg_reg(i,s,reg1,reg2,reg3));
end;
+ procedure emit_ref_reg_reg(i : tasmop;s : topsize;ref : treference;reg1,reg2 : tregister);
+ begin
+ tcgx86(cg).make_simple_ref(current_asmdata.CurrAsmList,ref);
+ current_asmdata.CurrAsmList.concat(Taicpu.Op_ref_reg_reg(i,s,ref,reg1,reg2));
+ end;
+
procedure emit_sym(i : tasmop;s : topsize;op : tasmsymbol);
begin
current_asmdata.CurrAsmList.concat(Taicpu.Op_sym(i,s,op));
diff --git a/compiler/x86/cgx86.pas b/compiler/x86/cgx86.pas
index ed8cd48943..29f3e9e171 100644
--- a/compiler/x86/cgx86.pas
+++ b/compiler/x86/cgx86.pas
@@ -185,7 +185,7 @@ unit cgx86;
function UseAVX: boolean;
begin
- Result:=current_settings.fputype in fpu_avx_instructionsets;
+ Result:=(current_settings.fputype in fpu_avx_instructionsets) {$ifndef i8086}or (CPUX86_HAS_AVXUNIT in cpu_capabilities[current_settings.cputype]){$endif i8086};
end;
@@ -607,6 +607,9 @@ unit cgx86;
href.base:=getaddressregister(list);
{ let the register allocator find a suitable register for the reference }
list.Concat(Taicpu.op_reg_reg(A_MOV, S_W, NR_SP, href.base));
+ { if DS<>SS in the current memory model, we need to add an SS: segment override as well }
+ if (ref.segment=NR_NO) and not segment_regs_equal(NR_DS,NR_SS) then
+ href.segment:=NR_SS;
ref:=href;
end;
@@ -616,6 +619,15 @@ unit cgx86;
list.concat(taicpu.op_reg_reg(A_MOV,S_W,ref.segment,NR_ES));
ref.segment:=NR_ES;
end;
+
+ { can the segment override be dropped? }
+ if ref.segment<>NR_NO then
+ begin
+ if (ref.base=NR_BP) and segment_regs_equal(ref.segment,NR_SS) then
+ ref.segment:=NR_NO;
+ if (ref.base<>NR_BP) and segment_regs_equal(ref.segment,NR_DS) then
+ ref.segment:=NR_NO;
+ end;
{$endif}
end;
@@ -1554,7 +1566,7 @@ unit cgx86;
procedure tcgx86.a_op_const_reg_reg(list:TAsmList;op:Topcg;size:Tcgsize;
a:tcgint;src,dst:Tregister);
var
- power : longint;
+ power,al : longint;
href : treference;
begin
power:=0;
@@ -1592,7 +1604,13 @@ unit cgx86;
) and
not(cs_check_overflow in current_settings.localswitches) then
begin
- reference_reset_base(href,src,a,0);
+ { a might still be in the range 0x80000000 to 0xffffffff
+ which might trigger a range check error as
+ reference_reset_base expects a longint value. }
+{$push} {$R-}{$Q-}
+ al := longint (a);
+{$pop}
+ reference_reset_base(href,src,al,0);
list.concat(taicpu.op_ref_reg(A_LEA,TCgSize2OpSize[size],href,dst));
end
else if (op=OP_SUB) and
@@ -2107,23 +2125,75 @@ unit cgx86;
procedure tcgx86.a_jmp_flags(list : TAsmList;const f : TResFlags;l: tasmlabel);
var
ai : taicpu;
+ hl : tasmlabel;
+ f2 : tresflags;
begin
+ hl:=nil;
+ f2:=f;
+ case f of
+ F_FNE:
+ begin
+ ai:=Taicpu.op_sym(A_Jcc,S_NO,l);
+ ai.SetCondition(C_P);
+ ai.is_jmp:=true;
+ list.concat(ai);
+ f2:=F_NE;
+ end;
+ F_FE,F_FA,F_FAE,F_FB,F_FBE:
+ begin
+ { JP before JA/JAE is redundant, but it must be generated here
+ and left for peephole optimizer to remove. }
+ current_asmdata.getjumplabel(hl);
+ ai:=Taicpu.op_sym(A_Jcc,S_NO,hl);
+ ai.SetCondition(C_P);
+ ai.is_jmp:=true;
+ list.concat(ai);
+ f2:=FPUFlags2Flags[f];
+ end;
+ end;
ai := Taicpu.op_sym(A_Jcc,S_NO,l);
- ai.SetCondition(flags_to_cond(f));
+ ai.SetCondition(flags_to_cond(f2));
ai.is_jmp := true;
list.concat(ai);
+ if assigned(hl) then
+ a_label(list,hl);
end;
procedure tcgx86.g_flags2reg(list: TAsmList; size: TCgSize; const f: tresflags; reg: TRegister);
var
ai : taicpu;
- hreg : tregister;
+ f2 : tresflags;
+ hreg,hreg2 : tregister;
+ op: tasmop;
begin
+ hreg2:=NR_NO;
+ op:=A_AND;
+ f2:=f;
+ case f of
+ F_FE,F_FNE,F_FB,F_FBE:
+ begin
+ hreg2:=getintregister(list,OS_8);
+ ai:=Taicpu.op_reg(A_SETcc,S_B,hreg2);
+ if (f=F_FNE) then { F_FNE means "PF or (not ZF)" }
+ begin
+ ai.setcondition(C_P);
+ op:=A_OR;
+ end
+ else
+ ai.setcondition(C_NP);
+ list.concat(ai);
+ f2:=FPUFlags2Flags[f];
+ end;
+ F_FA,F_FAE: { These do not need PF check }
+ f2:=FPUFlags2Flags[f];
+ end;
hreg:=makeregsize(list,reg,OS_8);
ai:=Taicpu.op_reg(A_SETcc,S_B,hreg);
- ai.setcondition(flags_to_cond(f));
+ ai.setcondition(flags_to_cond(f2));
list.concat(ai);
+ if (hreg2<>NR_NO) then
+ list.concat(taicpu.op_reg_reg(op,S_B,hreg2,hreg));
if reg<>hreg then
a_load_reg_reg(list,OS_8,size,hreg,reg);
end;
@@ -2133,13 +2203,24 @@ unit cgx86;
var
ai : taicpu;
tmpref : treference;
+ f2 : tresflags;
begin
+ f2:=f;
+ case f of
+ F_FE,F_FNE,F_FB,F_FBE:
+ begin
+ inherited g_flags2ref(list,size,f,ref);
+ exit;
+ end;
+ F_FA,F_FAE:
+ f2:=FPUFlags2Flags[f];
+ end;
tmpref:=ref;
make_simple_ref(list,tmpref);
if not(size in [OS_8,OS_S8]) then
a_load_const_ref(list,size,0,tmpref);
ai:=Taicpu.op_ref(A_SETcc,S_B,tmpref);
- ai.setcondition(flags_to_cond(f));
+ ai.setcondition(flags_to_cond(f2));
list.concat(ai);
{$ifndef cpu64bitalu}
if size in [OS_S64,OS_64] then
@@ -2184,6 +2265,7 @@ unit cgx86;
copysize:byte;
cgsize:Tcgsize;
cm:copymode;
+ saved_ds,saved_es: Boolean;
begin
cm:=copy_move;
@@ -2440,9 +2522,11 @@ unit cgx86;
else {copy_string, should be a good fallback in case of unhandled}
begin
getcpuregister(list,REGDI);
- if (dest.segment=NR_NO) then
+ if (dest.segment=NR_NO) and
+ (segment_regs_equal(NR_SS,NR_DS) or ((dest.base<>NR_BP) and (dest.base<>NR_SP))) then
begin
a_loadaddr_ref_reg(list,dest,REGDI);
+ saved_es:=false;
{$ifdef volatile_es}
list.concat(taicpu.op_reg(A_PUSH,push_segment_size,NR_DS));
list.concat(taicpu.op_reg(A_POP,push_segment_size,NR_ES));
@@ -2453,23 +2537,43 @@ unit cgx86;
dstref:=dest;
dstref.segment:=NR_NO;
a_loadaddr_ref_reg(list,dstref,REGDI);
-{$ifndef volatile_es}
+{$ifdef volatile_es}
+ saved_es:=false;
+{$else volatile_es}
list.concat(taicpu.op_reg(A_PUSH,push_segment_size,NR_ES));
-{$endif not volatile_es}
- list.concat(taicpu.op_reg(A_PUSH,push_segment_size,dest.segment));
+ saved_es:=true;
+{$endif volatile_es}
+ if dest.segment<>NR_NO then
+ list.concat(taicpu.op_reg(A_PUSH,push_segment_size,dest.segment))
+ else if (dest.base=NR_BP) or (dest.base=NR_SP) then
+ list.concat(taicpu.op_reg(A_PUSH,push_segment_size,NR_SS))
+ else
+ internalerror(2014040401);
list.concat(taicpu.op_reg(A_POP,push_segment_size,NR_ES));
end;
getcpuregister(list,REGSI);
- if (source.segment=NR_NO) then
- a_loadaddr_ref_reg(list,source,REGSI)
+ if ((source.segment=NR_NO) and (segment_regs_equal(NR_SS,NR_DS) or ((source.base<>NR_BP) and (source.base<>NR_SP)))) or
+ (is_segment_reg(source.segment) and segment_regs_equal(source.segment,NR_DS)) then
+ begin
+ srcref:=source;
+ srcref.segment:=NR_NO;
+ a_loadaddr_ref_reg(list,srcref,REGSI);
+ saved_ds:=false;
+ end
else
begin
srcref:=source;
srcref.segment:=NR_NO;
a_loadaddr_ref_reg(list,srcref,REGSI);
- list.concat(taicpu.op_reg(A_PUSH,S_L,NR_DS));
- list.concat(taicpu.op_reg(A_PUSH,S_L,source.segment));
- list.concat(taicpu.op_reg(A_POP,S_L,NR_DS));
+ list.concat(taicpu.op_reg(A_PUSH,push_segment_size,NR_DS));
+ saved_ds:=true;
+ if source.segment<>NR_NO then
+ list.concat(taicpu.op_reg(A_PUSH,push_segment_size,source.segment))
+ else if (source.base=NR_BP) or (source.base=NR_SP) then
+ list.concat(taicpu.op_reg(A_PUSH,push_segment_size,NR_SS))
+ else
+ internalerror(2014040402);
+ list.concat(taicpu.op_reg(A_POP,push_segment_size,NR_DS));
end;
getcpuregister(list,REGCX);
@@ -2517,12 +2621,10 @@ unit cgx86;
ungetcpuregister(list,REGCX);
ungetcpuregister(list,REGSI);
ungetcpuregister(list,REGDI);
- if (source.segment<>NR_NO) then
+ if saved_ds then
list.concat(taicpu.op_reg(A_POP,push_segment_size,NR_DS));
-{$ifndef volatile_es}
- if (dest.segment<>NR_NO) then
+ if saved_es then
list.concat(taicpu.op_reg(A_POP,push_segment_size,NR_ES));
-{$endif not volatile_es}
end;
end;
end;
@@ -2726,10 +2828,30 @@ unit cgx86;
list.concat(Taicpu.Op_reg(A_PUSH,S_W,NR_DI));
list.concat(Taicpu.Op_reg(A_PUSH,S_W,NR_DS));
list.concat(Taicpu.Op_reg(A_PUSH,S_W,NR_ES));
- reference_reset(dgroup,0);
- dgroup.refaddr:=addr_dgroup;
- list.concat(Taicpu.Op_ref_reg(A_MOV,S_W,dgroup,NR_AX));
- list.concat(Taicpu.Op_reg_reg(A_MOV,S_W,NR_AX,NR_DS));
+ if current_settings.x86memorymodel=mm_tiny then
+ begin
+ { in the tiny memory model, we can't use dgroup, because that
+ adds a relocation entry to the .exe and we can't produce a
+ .com file (because they don't support relactions), so instead
+ we initialize DS from CS. }
+ if cs_opt_size in current_settings.optimizerswitches then
+ begin
+ list.concat(Taicpu.Op_reg(A_PUSH,S_W,NR_CS));
+ list.concat(Taicpu.Op_reg(A_POP,S_W,NR_DS));
+ end
+ else
+ begin
+ list.concat(Taicpu.Op_reg_reg(A_MOV,S_W,NR_CS,NR_AX));
+ list.concat(Taicpu.Op_reg_reg(A_MOV,S_W,NR_AX,NR_DS));
+ end;
+ end
+ else
+ begin
+ reference_reset(dgroup,0);
+ dgroup.refaddr:=addr_dgroup;
+ list.concat(Taicpu.Op_ref_reg(A_MOV,S_W,dgroup,NR_AX));
+ list.concat(Taicpu.Op_reg_reg(A_MOV,S_W,NR_AX,NR_DS));
+ end;
end;
{$endif i8086}
{$ifdef i386}
diff --git a/compiler/x86/cpubase.pas b/compiler/x86/cpubase.pas
index 91f981b430..4c49d507f4 100644
--- a/compiler/x86/cpubase.pas
+++ b/compiler/x86/cpubase.pas
@@ -247,8 +247,16 @@ uses
type
TResFlags = (F_E,F_NE,F_G,F_L,F_GE,F_LE,F_C,F_NC,
F_A,F_AE,F_B,F_BE,
- F_S,F_NS,F_O,F_NO);
+ F_S,F_NS,F_O,F_NO,
+ { For IEEE-compliant floating-point compares,
+ same as normal counterparts but additionally check PF }
+ F_FE,F_FNE,F_FA,F_FAE,F_FB,F_FBE);
+ const
+ FPUFlags = [F_FE,F_FNE,F_FA,F_FAE,F_FB,F_FBE];
+ FPUFlags2Flags: array[F_FE..F_FBE] of TResFlags = (
+ F_E,F_NE,F_A,F_AE,F_B,F_BE
+ );
{*****************************************************************************
Constants
@@ -478,7 +486,8 @@ implementation
inv_flags: array[TResFlags] of TResFlags =
(F_NE,F_E,F_LE,F_GE,F_L,F_G,F_NC,F_C,
F_BE,F_B,F_AE,F_A,
- F_NS,F_S,F_NO,F_O);
+ F_NS,F_S,F_NO,F_O,
+ F_FNE,F_FE,F_FBE,F_FB,F_FAE,F_FA);
begin
f:=inv_flags[f];
end;
@@ -487,9 +496,12 @@ implementation
function flags_to_cond(const f: TResFlags) : TAsmCond;
const
flags_2_cond : array[TResFlags] of TAsmCond =
- (C_E,C_NE,C_G,C_L,C_GE,C_LE,C_C,C_NC,C_A,C_AE,C_B,C_BE,C_S,C_NS,C_O,C_NO);
+ (C_E,C_NE,C_G,C_L,C_GE,C_LE,C_C,C_NC,C_A,C_AE,C_B,C_BE,C_S,C_NS,C_O,C_NO,
+ C_None,C_None,C_None,C_None,C_None,C_None);
begin
result := flags_2_cond[f];
+ if (result=C_None) then
+ InternalError(2014041301);
end;
@@ -590,7 +602,9 @@ implementation
{ the remaining are distinct from each other }
exit(false);
end;
- mm_compact,mm_large,mm_huge: internalerror(2013062303);
+ mm_compact,mm_large,mm_huge:
+ { all segment registers are different in these models }
+ exit(false);
else
internalerror(2013062302);
end;
diff --git a/compiler/x86/ni86mem.pas b/compiler/x86/ni86mem.pas
new file mode 100644
index 0000000000..1ac6561cb9
--- /dev/null
+++ b/compiler/x86/ni86mem.pas
@@ -0,0 +1,69 @@
+{
+ Copyright (c) 1998-2002 by Florian Klaempfl
+
+ Generate i386/i8086 assembler for memory related nodes
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+ ****************************************************************************
+}
+unit ni86mem;
+
+{$i fpcdefs.inc}
+
+interface
+ uses
+ globtype,
+ cgbase,cpuinfo,cpubase,
+ node,nmem,ncgmem,nx86mem;
+
+ type
+ ti86addrnode = class(tcgaddrnode)
+ protected
+ procedure set_absvarsym_resultdef; virtual; abstract;
+ function typecheck_non_proc(realsource: tnode; out res: tnode): boolean; override;
+ end;
+
+implementation
+
+ uses
+ cutils,verbose,
+ aasmtai,aasmdata,
+ cgutils,cgobj,
+ nld,
+ symconst,symdef,symcpu;
+
+{*****************************************************************************
+ TI86ADDRNODE
+*****************************************************************************}
+
+ function ti86addrnode.typecheck_non_proc(realsource: tnode; out res: tnode): boolean;
+ begin
+ res:=nil;
+ { if we are getting the address of an absolute sym, check whether it's
+ a near or a far pointer }
+ if (realsource.nodetype=loadn) and
+ ((tloadnode(realsource).symtableentry.typ=absolutevarsym) and
+ tcpuabsolutevarsym(tloadnode(realsource).symtableentry).absseg) then
+ begin
+ set_absvarsym_resultdef;
+ result:=true;
+ end
+ else
+ result:=inherited;
+ end;
+
+
+end.
diff --git a/compiler/x86/nx86add.pas b/compiler/x86/nx86add.pas
index a70ceb5033..1f147bec76 100644
--- a/compiler/x86/nx86add.pas
+++ b/compiler/x86/nx86add.pas
@@ -35,13 +35,14 @@ unit nx86add;
tx86addnode = class(tcgaddnode)
protected
function getresflags(unsigned : boolean) : tresflags;
+ function getfpuresflags : tresflags;
procedure left_must_be_reg(opdef: tdef; opsize:TCGSize;noswap:boolean);
- procedure check_left_and_right_fpureg(force_fpureg: boolean);
+ procedure force_left_and_right_fpureg;
+ procedure prepare_x87_locations(out refnode: tnode);
procedure emit_op_right_left(op:TAsmOp;opsize:TCgSize);
procedure emit_generic_code(op:TAsmOp;opsize:TCgSize;unsigned,extra_not,mboverflow:boolean);
- procedure second_cmpfloatsse;
- procedure second_cmpfloatavx;
+ procedure second_cmpfloatvector;
procedure second_addfloatsse;
procedure second_addfloatavx;
@@ -65,7 +66,7 @@ unit nx86add;
implementation
uses
- globtype,globals,
+ globtype,globals,systems,
verbose,cutils,
cpuinfo,
aasmbase,aasmtai,aasmdata,aasmcpu,
@@ -130,7 +131,14 @@ unit nx86add;
(right.location.loc=LOC_CONSTANT) and
(right.location.value=0) then
begin
- emit_reg_reg(A_TEST,TCGSize2Opsize[opsize],left.location.register,left.location.register);
+ { 'test $-1,%reg' is transformable into 'test $-1,spilltemp' if %reg needs
+ spilling, while 'test %reg,%reg' still requires loading into register.
+ If spilling is not necessary, it is changed back into 'test %reg,%reg' by
+ peephole optimizer (this optimization is currently available only for i386). }
+ if (target_info.cpu=cpu_i386) then
+ emit_const_reg(A_TEST,TCGSize2Opsize[opsize],aint(-1),left.location.register)
+ else
+ emit_reg_reg(A_TEST,TCGSize2Opsize[opsize],left.location.register,left.location.register);
end
else
if (op=A_ADD) and
@@ -235,25 +243,21 @@ unit nx86add;
end;
- procedure tx86addnode.check_left_and_right_fpureg(force_fpureg: boolean);
+ procedure tx86addnode.force_left_and_right_fpureg;
begin
if (right.location.loc<>LOC_FPUREGISTER) then
- begin
- if (force_fpureg) then
- begin
- location_force_fpureg(current_asmdata.CurrAsmList,right.location,false);
- if (left.location.loc<>LOC_FPUREGISTER) then
- location_force_fpureg(current_asmdata.CurrAsmList,left.location,false)
- else
- { left was on the stack => swap }
- toggleflag(nf_swapped);
- end
- end
+ begin
+ hlcg.location_force_fpureg(current_asmdata.CurrAsmList,right.location,right.resultdef,false);
+ if (left.location.loc<>LOC_FPUREGISTER) then
+ hlcg.location_force_fpureg(current_asmdata.CurrAsmList,left.location,left.resultdef,false)
+ else
+ { left was on the stack => swap }
+ toggleflag(nf_swapped);
+ end
{ the nominator in st0 }
else if (left.location.loc<>LOC_FPUREGISTER) then
begin
- if (force_fpureg) then
- location_force_fpureg(current_asmdata.CurrAsmList,left.location,false)
+ hlcg.location_force_fpureg(current_asmdata.CurrAsmList,left.location,left.resultdef,false)
end
else
begin
@@ -263,6 +267,55 @@ unit nx86add;
end;
+ { Makes sides suitable for executing an x87 instruction:
+ if either side is OS_F32/OS_F64-sized LOC_REFERENCE, it is returned in 'refnode'
+ everything else is loaded to FPU stack. }
+ procedure tx86addnode.prepare_x87_locations(out refnode: tnode);
+ begin
+ refnode:=nil;
+ case ord(left.location.loc=LOC_FPUREGISTER)+ord(right.location.loc=LOC_FPUREGISTER) of
+ 0:
+ begin
+ hlcg.location_force_fpureg(current_asmdata.CurrAsmList,right.location,right.resultdef,false);
+ if not(left.location.loc in [LOC_REFERENCE,LOC_CREFERENCE]) then
+ InternalError(2013090803);
+ if (left.location.size in [OS_F32,OS_F64]) then
+ begin
+ refnode:=left;
+ toggleflag(nf_swapped);
+ end
+ else
+ hlcg.location_force_fpureg(current_asmdata.CurrAsmList,left.location,left.resultdef,false);
+ end;
+ 1:
+ begin { if left is on the stack then swap. }
+ if (left.location.loc=LOC_FPUREGISTER) then
+ refnode:=right
+ else
+ refnode:=left;
+ if not(refnode.location.loc in [LOC_REFERENCE,LOC_CREFERENCE]) then
+ InternalError(2013090801);
+ if not (refnode.location.size in [OS_F32,OS_F64]) then
+ begin
+ hlcg.location_force_fpureg(current_asmdata.CurrAsmList,refnode.location,refnode.resultdef,false);
+ if (refnode=right) then
+ toggleflag(nf_swapped);
+ refnode:=nil;
+ end
+ else
+ begin
+ if (refnode=left) then
+ toggleflag(nf_swapped);
+ end;
+ end;
+ 2: { fpu operands are always in the wrong order on the stack }
+ toggleflag(nf_swapped);
+ else
+ InternalError(2013090802);
+ end;
+ end;
+
+
procedure tx86addnode.emit_op_right_left(op:TAsmOp;opsize:TCgsize);
{$ifdef x86_64}
var
@@ -355,6 +408,32 @@ unit nx86add;
end;
+ function tx86addnode.getfpuresflags : tresflags;
+ begin
+ if (nodetype=equaln) then
+ result:=F_FE
+ else if (nodetype=unequaln) then
+ result:=F_FNE
+ else if (nf_swapped in flags) then
+ case nodetype of
+ ltn : result:=F_FA;
+ lten : result:=F_FAE;
+ gtn : result:=F_FB;
+ gten : result:=F_FBE;
+ else
+ internalerror(2014031402);
+ end
+ else
+ case nodetype of
+ ltn : result:=F_FB;
+ lten : result:=F_FBE;
+ gtn : result:=F_FA;
+ gten : result:=F_FAE;
+ else
+ internalerror(2014031403);
+ end;
+ end;
+
{*****************************************************************************
AddSmallSet
*****************************************************************************}
@@ -720,7 +799,9 @@ unit nx86add;
end;
pass_left_right;
- check_left_and_right_fpureg(false);
+ { fpu operands are always in reversed order on the stack }
+ if (left.location.loc=LOC_FPUREGISTER) and (right.location.loc=LOC_FPUREGISTER) then
+ toggleflag(nf_swapped);
if (nf_swapped in flags) then
{ can't use swapleftright if both are on the fpu stack, since then }
@@ -859,7 +940,9 @@ unit nx86add;
{$endif dummy}
pass_left_right;
- check_left_and_right_fpureg(false);
+ { fpu operands are always in reversed order on the stack }
+ if (left.location.loc=LOC_FPUREGISTER) and (right.location.loc=LOC_FPUREGISTER) then
+ toggleflag(nf_swapped);
if (nf_swapped in flags) then
{ can't use swapleftright if both are on the fpu stack, since then }
@@ -989,94 +1072,33 @@ unit nx86add;
end;
- procedure tx86addnode.second_cmpfloatsse;
+ procedure tx86addnode.second_cmpfloatvector;
var
op : tasmop;
+ const
+ ops_single: array[boolean] of tasmop = (A_COMISS,A_VCOMISS);
+ ops_double: array[boolean] of tasmop = (A_COMISD,A_VCOMISD);
begin
if is_single(left.resultdef) then
- op:=A_COMISS
+ op:=ops_single[UseAVX]
else if is_double(left.resultdef) then
- op:=A_COMISD
+ op:=ops_double[UseAVX]
else
internalerror(200402222);
pass_left_right;
- location_reset(location,LOC_FLAGS,def_cgsize(resultdef));
- { we can use only right as left operand if the operation is commutative }
- if (right.location.loc=LOC_MMREGISTER) then
- begin
- { force floating point reg. location to be written to memory,
- we don't force it to mm register because writing to memory
- allows probably shorter code because there is no direct fpu->mm register
- copy instruction
- }
- if left.location.loc in [LOC_FPUREGISTER,LOC_CFPUREGISTER] then
- hlcg.location_force_mem(current_asmdata.CurrAsmList,left.location,left.resultdef);
- case left.location.loc of
- LOC_REFERENCE,LOC_CREFERENCE:
- begin
- tcgx86(cg).make_simple_ref(current_asmdata.CurrAsmList,left.location.reference);
- current_asmdata.CurrAsmList.concat(taicpu.op_ref_reg(op,S_NO,left.location.reference,right.location.register));
- end;
- LOC_MMREGISTER,LOC_CMMREGISTER:
- current_asmdata.CurrAsmList.concat(taicpu.op_reg_reg(op,S_NO,left.location.register,right.location.register));
- else
- internalerror(200402221);
- end;
- if nf_swapped in flags then
- exclude(flags,nf_swapped)
- else
- include(flags,nf_swapped)
- end
- else
- begin
- hlcg.location_force_mmregscalar(current_asmdata.CurrAsmList,left.location,left.resultdef,false);
- { force floating point reg. location to be written to memory,
- we don't force it to mm register because writing to memory
- allows probably shorter code because there is no direct fpu->mm register
- copy instruction
- }
- if right.location.loc in [LOC_FPUREGISTER,LOC_CFPUREGISTER] then
- hlcg.location_force_mem(current_asmdata.CurrAsmList,right.location,right.resultdef);
- case right.location.loc of
- LOC_REFERENCE,LOC_CREFERENCE:
- begin
- tcgx86(cg).make_simple_ref(current_asmdata.CurrAsmList,right.location.reference);
- current_asmdata.CurrAsmList.concat(taicpu.op_ref_reg(op,S_NO,right.location.reference,left.location.register));
- end;
- LOC_MMREGISTER,LOC_CMMREGISTER:
- current_asmdata.CurrAsmList.concat(taicpu.op_reg_reg(op,S_NO,right.location.register,left.location.register));
- else
- internalerror(200402223);
- end;
- end;
- location.resflags:=getresflags(true);
- end;
-
+ location_reset(location,LOC_FLAGS,OS_NO);
- procedure tx86addnode.second_cmpfloatavx;
- var
- op : tasmop;
- begin
- if is_single(left.resultdef) then
- op:=A_VCOMISS
- else if is_double(left.resultdef) then
- op:=A_VCOMISD
- else
- internalerror(200402222);
- pass_left_right;
+ { Direct move fpu->mm register is not possible, so force any fpu operands to
+ memory (not to mm registers because one of the memory locations can be used
+ directly in compare instruction, yielding shorter code) }
+ if left.location.loc in [LOC_FPUREGISTER,LOC_CFPUREGISTER] then
+ hlcg.location_force_mem(current_asmdata.CurrAsmList,left.location,left.resultdef);
+ if right.location.loc in [LOC_FPUREGISTER,LOC_CFPUREGISTER] then
+ hlcg.location_force_mem(current_asmdata.CurrAsmList,right.location,right.resultdef);
- location_reset(location,LOC_FLAGS,def_cgsize(resultdef));
- { we can use only right as left operand if the operation is commutative }
- if (right.location.loc=LOC_MMREGISTER) then
+ if (right.location.loc in [LOC_MMREGISTER,LOC_CMMREGISTER]) then
begin
- { force floating point reg. location to be written to memory,
- we don't force it to mm register because writing to memory
- allows probably shorter code because there is no direct fpu->mm register
- copy instruction
- }
- if left.location.loc in [LOC_FPUREGISTER,LOC_CFPUREGISTER] then
- hlcg.location_force_mem(current_asmdata.CurrAsmList,left.location,left.resultdef);
case left.location.loc of
LOC_REFERENCE,LOC_CREFERENCE:
begin
@@ -1088,21 +1110,11 @@ unit nx86add;
else
internalerror(200402221);
end;
- if nf_swapped in flags then
- exclude(flags,nf_swapped)
- else
- include(flags,nf_swapped)
+ toggleflag(nf_swapped);
end
else
begin
hlcg.location_force_mmregscalar(current_asmdata.CurrAsmList,left.location,left.resultdef,true);
- { force floating point reg. location to be written to memory,
- we don't force it to mm register because writing to memory
- allows probably shorter code because there is no direct fpu->mm register
- copy instruction
- }
- if right.location.loc in [LOC_FPUREGISTER,LOC_CFPUREGISTER] then
- hlcg.location_force_mem(current_asmdata.CurrAsmList,right.location,right.resultdef);
case right.location.loc of
LOC_REFERENCE,LOC_CREFERENCE:
begin
@@ -1115,7 +1127,9 @@ unit nx86add;
internalerror(200402223);
end;
end;
- location.resflags:=getresflags(true);
+ location.resflags:=getfpuresflags;
+ location_freetemp(current_asmdata.CurrAsmList,left.location);
+ location_freetemp(current_asmdata.CurrAsmList,right.location);
end;
@@ -1166,8 +1180,17 @@ unit nx86add;
procedure tx86addnode.second_addfloat;
+ const
+ ops_add: array[boolean] of TAsmOp = (A_FADDP,A_FADD);
+ ops_mul: array[boolean] of TAsmOp = (A_FMULP,A_FMUL);
+ ops_sub: array[boolean] of TAsmOp = (A_FSUBP,A_FSUB);
+ ops_rsub: array[boolean] of TAsmOp = (A_FSUBRP,A_FSUBR);
+ ops_div: array[boolean] of TAsmOp = (A_FDIVP,A_FDIV);
+ ops_rdiv: array[boolean] of TAsmOp = (A_FDIVRP,A_FDIVR);
var
op : TAsmOp;
+ refnode : tnode;
+ hasref : boolean;
begin
if use_vectorfpu(resultdef) then
begin
@@ -1179,34 +1202,36 @@ unit nx86add;
end;
pass_left_right;
+ prepare_x87_locations(refnode);
+ hasref:=assigned(refnode);
case nodetype of
addn :
- op:=A_FADDP;
+ op:=ops_add[hasref];
muln :
- op:=A_FMULP;
+ op:=ops_mul[hasref];
subn :
- op:=A_FSUBP;
+ if (nf_swapped in flags) then
+ op:=ops_rsub[hasref]
+ else
+ op:=ops_sub[hasref];
slashn :
- op:=A_FDIVP;
+ if (nf_swapped in flags) then
+ op:=ops_rdiv[hasref]
+ else
+ op:=ops_div[hasref];
else
internalerror(2003042214);
end;
- check_left_and_right_fpureg(true);
-
- { if we swaped the tree nodes, then use the reverse operator }
- if nf_swapped in flags then
+ if hasref then
+ emit_ref(op,tcgsize2opsize[refnode.location.size],refnode.location.reference)
+ else
begin
- if (nodetype=slashn) then
- op:=A_FDIVRP
- else if (nodetype=subn) then
- op:=A_FSUBRP;
+ emit_reg_reg(op,S_NO,NR_ST,NR_ST1);
+ tcgx86(cg).dec_fpu_stack;
end;
- emit_reg_reg(op,S_NO,NR_ST,NR_ST1);
- tcgx86(cg).dec_fpu_stack;
-
location_reset(location,LOC_FPUREGISTER,def_cgsize(resultdef));
location.register:=NR_ST;
end;
@@ -1220,15 +1245,12 @@ unit nx86add;
begin
if use_vectorfpu(left.resultdef) or use_vectorfpu(right.resultdef) then
begin
- if UseAVX then
- second_cmpfloatavx
- else
- second_cmpfloatsse;
+ second_cmpfloatvector;
exit;
end;
pass_left_right;
- check_left_and_right_fpureg(true);
+ force_left_and_right_fpureg;
{$ifndef x86_64}
if current_settings.cputype<cpu_Pentium2 then
@@ -1271,7 +1293,7 @@ unit nx86add;
end;
location_reset(location,LOC_FLAGS,OS_NO);
- location.resflags:=getresflags(true);
+ location.resflags:=getfpuresflags;
end;
diff --git a/compiler/x86/nx86inl.pas b/compiler/x86/nx86inl.pas
index 8ba4486fc5..1ca925bd57 100644
--- a/compiler/x86/nx86inl.pas
+++ b/compiler/x86/nx86inl.pas
@@ -45,6 +45,7 @@ interface
function first_round_real: tnode; override;
function first_trunc_real: tnode; override;
function first_popcnt: tnode; override;
+ function first_fma: tnode; override;
{ second pass override to generate these nodes }
procedure second_IncludeExclude;override;
procedure second_pi; override;
@@ -64,6 +65,7 @@ interface
procedure second_abs_long;override;
{$endif not i8086}
procedure second_popcnt;override;
+ procedure second_fma;override;
private
procedure load_fpu_location(lnode: tnode);
end;
@@ -77,7 +79,7 @@ implementation
symconst,
defutil,
aasmbase,aasmtai,aasmdata,aasmcpu,
- symtype,symdef,
+ symtype,symdef,symcpu,
cgbase,pass_2,
cpuinfo,cpubase,paramgr,
nbas,ncon,ncal,ncnv,nld,ncgutil,
@@ -234,23 +236,35 @@ implementation
function tx86inlinenode.first_popcnt: tnode;
begin
Result:=nil;
- if
-{$ifdef i8086}
- true
-{$else i8086}
- not(CPUX86_HAS_POPCNT in cpu_capabilities[current_settings.cputype])
-{$endif i8086}
-{$ifdef i386}
- or is_64bit(left.resultdef)
-{$endif i386}
+{$ifndef i8086}
+ if (CPUX86_HAS_POPCNT in cpu_capabilities[current_settings.cputype])
+ {$ifdef i386}
+ and not is_64bit(left.resultdef)
+ {$endif i386}
then
+ expectloc:=LOC_REGISTER
+ else
+{$endif not i8086}
Result:=inherited first_popcnt
+ end;
+
+
+ function tx86inlinenode.first_fma : tnode;
+ begin
+{$ifndef i8086}
+ if ((cpu_capabilities[current_settings.cputype]*[CPUX86_HAS_FMA,CPUX86_HAS_FMA4])<>[]) and
+ ((is_double(resultdef)) or (is_single(resultdef))) then
+ begin
+ expectloc:=LOC_MMREGISTER;
+ Result:=nil;
+ end
else
- expectloc:=LOC_REGISTER;
+{$endif i8086}
+ Result:=inherited first_fma;
end;
- procedure tx86inlinenode.second_Pi;
+ procedure tx86inlinenode.second_pi;
begin
location_reset(location,LOC_FPUREGISTER,def_cgsize(resultdef));
emit_none(A_FLDPI,S_NO);
@@ -281,7 +295,7 @@ implementation
LOC_MMREGISTER,LOC_CMMREGISTER:
begin
location:=lnode.location;
- location_force_fpureg(current_asmdata.CurrAsmList,location,false);
+ hlcg.location_force_fpureg(current_asmdata.CurrAsmList,location,resultdef,false);
end;
else
internalerror(309991);
@@ -316,7 +330,7 @@ implementation
case tfloatdef(resultdef).floattype of
s32real:
begin
- reference_reset_symbol(href,current_asmdata.RefAsmSymbol('FPC_ABSMASK_SINGLE'),0,4);
+ reference_reset_symbol(href,current_asmdata.RefAsmSymbol(target_info.cprefix+'FPC_ABSMASK_SINGLE'),0,4);
tcgx86(cg).make_simple_ref(current_asmdata.CurrAsmList, href);
if UseAVX then
current_asmdata.CurrAsmList.concat(taicpu.op_ref_reg_reg(
@@ -326,7 +340,7 @@ implementation
end;
s64real:
begin
- reference_reset_symbol(href,current_asmdata.RefAsmSymbol('FPC_ABSMASK_DOUBLE'),0,4);
+ reference_reset_symbol(href,current_asmdata.RefAsmSymbol(target_info.cprefix+'FPC_ABSMASK_DOUBLE'),0,4);
tcgx86(cg).make_simple_ref(current_asmdata.CurrAsmList, href);
if UseAVX then
current_asmdata.CurrAsmList.concat(taicpu.op_ref_reg_reg(
@@ -744,4 +758,164 @@ implementation
else
emit_ref_reg(A_POPCNT,TCGSize2OpSize[opsize],left.location.reference,location.register);
end;
+
+
+ procedure tx86inlinenode.second_fma;
+ const
+ op : array[false..true,false..true,s32real..s64real,0..3] of TAsmOp =
+ (
+ { positive product }
+ (
+ { positive third operand }
+ ((A_VFMADD231SS,A_VFMADD231SS,A_VFMADD231SS,A_VFMADD213SS),
+ (A_VFMADD231SD,A_VFMADD231SD,A_VFMADD231SD,A_VFMADD213SD)
+ ),
+ { negative third operand }
+ ((A_VFMSUB231SS,A_VFMSUB231SS,A_VFMSUB231SS,A_VFMSUB213SS),
+ (A_VFMSUB231SD,A_VFMSUB231SD,A_VFMSUB231SD,A_VFMSUB213SD)
+ )
+ ),
+ { negative product }
+ (
+ { positive third operand }
+ ((A_VFNMADD231SS,A_VFNMADD231SS,A_VFNMADD231SS,A_VFNMADD213SS),
+ (A_VFNMADD231SD,A_VFNMADD231SD,A_VFNMADD231SD,A_VFNMADD213SD)
+ ),
+ { negative third operand }
+ ((A_VFNMSUB231SS,A_VFNMSUB231SS,A_VFNMSUB231SS,A_VFNMSUB213SS),
+ (A_VFNMSUB231SD,A_VFNMSUB231SD,A_VFNMSUB231SD,A_VFNMSUB213SD)
+ )
+ )
+ );
+
+ var
+ paraarray : array[1..3] of tnode;
+ memop,
+ i : integer;
+ negop3,
+ negproduct,
+ gotmem : boolean;
+ hp : tnode;
+ begin
+{$ifndef i8086}
+ if (cpu_capabilities[current_settings.cputype]*[CPUX86_HAS_FMA,CPUX86_HAS_FMA4])<>[] then
+ begin
+ negop3:=false;
+ negproduct:=false;
+ paraarray[1]:=tcallparanode(tcallparanode(tcallparanode(parameters).nextpara).nextpara).paravalue;
+ paraarray[2]:=tcallparanode(tcallparanode(parameters).nextpara).paravalue;
+ paraarray[3]:=tcallparanode(parameters).paravalue;
+
+ { check if a neg. node can be removed
+ this is possible because changing the sign of
+ a floating point number does not affect its absolute
+ value in any way
+ }
+ if paraarray[1].nodetype=unaryminusn then
+ begin
+ paraarray[1]:=tunarynode(paraarray[1]).left;
+ { do not release the unused unary minus node, it is kept and release together with the other nodes,
+ only no code is generated for it }
+ negproduct:=not(negproduct);
+ end;
+
+ if paraarray[2].nodetype=unaryminusn then
+ begin
+ paraarray[2]:=tunarynode(paraarray[2]).left;
+ { do not release the unused unary minus node, it is kept and release together with the other nodes,
+ only no code is generated for it }
+ negproduct:=not(negproduct);
+ end;
+
+ if paraarray[3].nodetype=unaryminusn then
+ begin
+ paraarray[3]:=tunarynode(paraarray[3]).left;
+ { do not release the unused unary minus node, it is kept and release together with the other nodes,
+ only no code is generated for it }
+ negop3:=true;
+ end;
+
+ for i:=1 to 3 do
+ secondpass(paraarray[i]);
+
+ { only one memory operand is allowed }
+ gotmem:=false;
+ memop:=0;
+ for i:=1 to 3 do
+ begin
+ if not(paraarray[i].location.loc in [LOC_MMREGISTER,LOC_CMMREGISTER]) then
+ begin
+ if (paraarray[i].location.loc in [LOC_REFERENCE,LOC_CREFERENCE]) and not(gotmem) then
+ begin
+ memop:=i;
+ gotmem:=true;
+ end
+ else
+ hlcg.location_force_mmregscalar(current_asmdata.CurrAsmList,paraarray[i].location,paraarray[i].resultdef,true);
+ end;
+ end;
+
+ location_reset(location,LOC_MMREGISTER,paraarray[1].location.size);
+ location.register:=cg.getmmregister(current_asmdata.CurrAsmList,location.size);
+
+ if gotmem then
+ begin
+ case memop of
+ 1:
+ begin
+ hlcg.a_loadmm_reg_reg(current_asmdata.CurrAsmList,paraarray[3].resultdef,resultdef,
+ paraarray[3].location.register,location.register,mms_movescalar);
+ emit_ref_reg_reg(op[negproduct,negop3,tfloatdef(resultdef).floattype,memop],S_NO,
+ paraarray[1].location.reference,paraarray[2].location.register,location.register);
+ end;
+ 2:
+ begin
+ hlcg.a_loadmm_reg_reg(current_asmdata.CurrAsmList,paraarray[3].resultdef,resultdef,
+ paraarray[3].location.register,location.register,mms_movescalar);
+ emit_ref_reg_reg(op[negproduct,negop3,tfloatdef(resultdef).floattype,memop],S_NO,
+ paraarray[2].location.reference,paraarray[1].location.register,location.register);
+ end;
+ 3:
+ begin
+ hlcg.a_loadmm_reg_reg(current_asmdata.CurrAsmList,paraarray[1].resultdef,resultdef,
+ paraarray[1].location.register,location.register,mms_movescalar);
+ emit_ref_reg_reg(op[negproduct,negop3,tfloatdef(resultdef).floattype,memop],S_NO,
+ paraarray[3].location.reference,paraarray[2].location.register,location.register);
+ end
+ else
+ internalerror(2014041301);
+ end;
+ end
+ else
+ begin
+ { try to use the location which is already in a temp. mm register as destination,
+ so the compiler might be able to re-use the register }
+ if paraarray[1].location.loc=LOC_MMREGISTER then
+ begin
+ hlcg.a_loadmm_reg_reg(current_asmdata.CurrAsmList,paraarray[1].resultdef,resultdef,
+ paraarray[1].location.register,location.register,mms_movescalar);
+ emit_reg_reg_reg(op[negproduct,negop3,tfloatdef(resultdef).floattype,3],S_NO,
+ paraarray[3].location.register,paraarray[2].location.register,location.register);
+ end
+ else if paraarray[2].location.loc=LOC_MMREGISTER then
+ begin
+ hlcg.a_loadmm_reg_reg(current_asmdata.CurrAsmList,paraarray[2].resultdef,resultdef,
+ paraarray[2].location.register,location.register,mms_movescalar);
+ emit_reg_reg_reg(op[negproduct,negop3,tfloatdef(resultdef).floattype,3],S_NO,
+ paraarray[3].location.register,paraarray[1].location.register,location.register);
+ end
+ else
+ begin
+ hlcg.a_loadmm_reg_reg(current_asmdata.CurrAsmList,paraarray[3].resultdef,resultdef,
+ paraarray[3].location.register,location.register,mms_movescalar);
+ emit_reg_reg_reg(op[negproduct,negop3,tfloatdef(resultdef).floattype,0],S_NO,
+ paraarray[1].location.register,paraarray[2].location.register,location.register);
+ end;
+ end;
+ end
+ else
+{$endif i8086}
+ internalerror(2014032301);
+ end;
+
end.
diff --git a/compiler/x86/nx86mat.pas b/compiler/x86/nx86mat.pas
index 2555ba3e5a..ed560e36cd 100644
--- a/compiler/x86/nx86mat.pas
+++ b/compiler/x86/nx86mat.pas
@@ -176,13 +176,13 @@ interface
end;
reference_reset_symbol(href,l1,0,resultdef.alignment);
- reg:=cg.getmmregister(current_asmdata.CurrAsmList,def_cgsize(resultdef));
- cg.a_loadmm_ref_reg(current_asmdata.CurrAsmList,def_cgsize(resultdef),def_cgsize(resultdef),href,reg,mms_movescalar);
if UseAVX then
- cg.a_opmm_reg_reg_reg(current_asmdata.CurrAsmList,OP_XOR,left.location.size,reg,left.location.register,location.register,nil)
+ cg.a_opmm_ref_reg_reg(current_asmdata.CurrAsmList,OP_XOR,left.location.size,href,left.location.register,location.register,nil)
else
begin
+ reg:=cg.getmmregister(current_asmdata.CurrAsmList,def_cgsize(resultdef));
+ cg.a_loadmm_ref_reg(current_asmdata.CurrAsmList,def_cgsize(resultdef),def_cgsize(resultdef),href,reg,mms_movescalar);
cg.a_loadmm_reg_reg(current_asmdata.CurrAsmList,def_cgsize(resultdef),def_cgsize(resultdef),left.location.register,location.register,mms_movescalar);
cg.a_opmm_reg_reg(current_asmdata.CurrAsmList,OP_XOR,left.location.size,reg,location.register,nil);
end;
diff --git a/compiler/x86/nx86mem.pas b/compiler/x86/nx86mem.pas
index 912f4e95d7..f4a371e11d 100644
--- a/compiler/x86/nx86mem.pas
+++ b/compiler/x86/nx86mem.pas
@@ -36,9 +36,7 @@ interface
end;
tx86vecnode = class(tcgvecnode)
-{$ifndef i8086}
procedure update_reference_reg_mul(maybe_const_reg: tregister; regsize: tdef; l: aint);override;
-{$endif not i8086}
end;
implementation
@@ -47,7 +45,7 @@ implementation
cutils,verbose,
aasmtai,aasmdata,
cgutils,cgobj,
- symconst,symdef;
+ symconst,symdef,symcpu;
{*****************************************************************************
TX86DEREFNODE
@@ -56,7 +54,7 @@ implementation
procedure tx86derefnode.pass_generate_code;
begin
inherited pass_generate_code;
- case tpointerdef(left.resultdef).x86pointertyp of
+ case tcpupointerdef(left.resultdef).x86pointertyp of
x86pt_near: ;
x86pt_near_cs: location.reference.segment:=NR_CS;
x86pt_near_ds: location.reference.segment:=NR_DS;
@@ -81,7 +79,6 @@ implementation
TX86VECNODE
*****************************************************************************}
-{$ifndef i8086}
{ this routine must, like any other routine, not change the contents }
{ of base/index registers of references, as these may be regvars. }
{ The register allocator can coalesce one LOC_REGISTER being moved }
@@ -94,6 +91,7 @@ implementation
var
l2 : integer;
hreg : tregister;
+ saveseg: TRegister;
begin
{ Optimized for x86 to use the index register and scalefactor }
if location.reference.index=NR_NO then
@@ -120,7 +118,10 @@ implementation
begin
hreg:=cg.getaddressregister(current_asmdata.CurrAsmList);
cg.a_loadaddr_ref_reg(current_asmdata.CurrAsmList,location.reference,hreg);
+ { reference_reset_base kills the segment, so make sure we preserve it }
+ saveseg:=location.reference.segment;
reference_reset_base(location.reference,hreg,0,location.reference.alignment);
+ location.reference.segment:=saveseg;
end;
{ insert the new index register and scalefactor or
do the multiplication manual }
@@ -141,7 +142,6 @@ implementation
end;
location.reference.index:=hreg;
end;
-{$endif not i8086}
begin
cderefnode:=tx86derefnode;
diff --git a/compiler/x86/rax86.pas b/compiler/x86/rax86.pas
index 63302cc99c..391ed7ad05 100644
--- a/compiler/x86/rax86.pas
+++ b/compiler/x86/rax86.pas
@@ -591,6 +591,51 @@ begin
end;
end;
end;
+ msiMemRegx16y32:
+ begin
+ for j := 1 to ops do
+ begin
+ if operands[j].Opr.Typ = OPR_REGISTER then
+ begin
+ case getsubreg(operands[j].opr.reg) of
+ R_SUBMMX: begin
+ tx86operand(operands[i]).opsize := S_L;
+ tx86operand(operands[i]).size := OS_M16;
+ break;
+ end;
+ R_SUBMMY: begin
+ tx86operand(operands[i]).opsize := S_Q;
+ tx86operand(operands[i]).size := OS_M32;
+ break;
+ end;
+ else Message(asmr_e_unable_to_determine_reference_size);
+ end;
+ end;
+ end;
+ end;
+
+ msiMemRegx32y64:
+ begin
+ for j := 1 to ops do
+ begin
+ if operands[j].Opr.Typ = OPR_REGISTER then
+ begin
+ case getsubreg(operands[j].opr.reg) of
+ R_SUBMMX: begin
+ tx86operand(operands[i]).opsize := S_L;
+ tx86operand(operands[i]).size := OS_M32;
+ break;
+ end;
+ R_SUBMMY: begin
+ tx86operand(operands[i]).opsize := S_Q;
+ tx86operand(operands[i]).size := OS_M64;
+ break;
+ end;
+ else Message(asmr_e_unable_to_determine_reference_size);
+ end;
+ end;
+ end;
+ end;
msiMemRegx64y128:
begin
for j := 1 to ops do
@@ -1139,7 +1184,7 @@ begin
case operands[i].size of
OS_8,OS_S8 :
asize:=OT_BITS8;
- OS_16,OS_S16 :
+ OS_16,OS_S16, OS_M16:
asize:=OT_BITS16;
OS_32,OS_S32,OS_F32,OS_M32 :
asize:=OT_BITS32;
diff --git a/compiler/x86/rax86int.pas b/compiler/x86/rax86int.pas
index 1998755088..413a496f42 100644
--- a/compiler/x86/rax86int.pas
+++ b/compiler/x86/rax86int.pas
@@ -2135,8 +2135,7 @@ Unit Rax86int;
if (instr.opcode=A_CALL) and (typ=OPR_SYMBOL) and (symbol<>nil) and (symbol.typ<>AT_DATA) then
if current_settings.x86memorymodel in x86_far_code_models then
begin
- instr.operands[i].InitRef;
- ref.refaddr:=addr_far;
+ instr.opsize:=S_FAR;
end;
{$endif i8086}
end;
@@ -2228,8 +2227,6 @@ Unit Rax86int;
end;
}
curlist:=TAsmList.Create;
- { setup label linked list }
- LocalLabelList:=TLocalLabelList.Create;
{ we might need to know which parameters are passed in registers }
if not parse_generic then
current_procinfo.generate_parameter_info;
@@ -2330,9 +2327,8 @@ Unit Rax86int;
end;
end; { end case }
until false;
- { Check LocalLabelList }
- LocalLabelList.CheckEmitted;
- LocalLabelList.Free;
+ { check that all referenced local labels are defined }
+ checklocallabels;
{ Return the list in an asmnode }
assemble:=curlist;
Message1(asmr_d_finish_reading,'intel');
diff --git a/compiler/x86/symi86.pas b/compiler/x86/symi86.pas
new file mode 100644
index 0000000000..37fdd34dba
--- /dev/null
+++ b/compiler/x86/symi86.pas
@@ -0,0 +1,94 @@
+{
+ Copyright (c) 2014 by Florian Klaempfl
+
+ Symbol table overrides for i386 and i8086
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+ ****************************************************************************
+}
+unit symi86;
+
+{$i fpcdefs.inc}
+
+interface
+
+uses
+ symtype,symdef,symsym;
+
+type
+
+ { ti86procvardef }
+
+ ti86procvardef = class(tprocvardef)
+ function is_pushleftright: boolean; override;
+ end;
+
+ { ti86procdef }
+
+ ti86procdef = class(tprocdef)
+ function is_pushleftright: boolean; override;
+ end;
+
+ { ti86absolutevarsym }
+
+ ti86absolutevarsym = class(tabsolutevarsym)
+ protected
+ procedure ppuload_platform(ppufile: tcompilerppufile); override;
+ procedure ppuwrite_platform(ppufile: tcompilerppufile); override;
+ public
+ absseg : boolean;
+ end;
+
+implementation
+
+uses
+ symconst;
+
+{ ti86procvardef }
+
+function ti86procvardef.is_pushleftright: boolean;
+ begin
+ result:=proccalloption in pushleftright_pocalls;
+ end;
+
+{ ti86procdef }
+
+function ti86procdef.is_pushleftright: boolean;
+ begin
+ result:=proccalloption in pushleftright_pocalls;
+ end;
+
+{ ti86absolutevarsym }
+
+procedure ti86absolutevarsym.ppuload_platform(ppufile: tcompilerppufile);
+ begin
+ inherited;
+ if abstyp=toaddr then
+ absseg:=boolean(ppufile.getbyte)
+ else
+ absseg:=false;
+ end;
+
+
+procedure ti86absolutevarsym.ppuwrite_platform(ppufile: tcompilerppufile);
+ begin
+ inherited;
+ if abstyp=toaddr then
+ ppufile.putbyte(byte(absseg));
+ end;
+
+end.
+
diff --git a/compiler/x86/symx86.pas b/compiler/x86/symx86.pas
new file mode 100644
index 0000000000..45c93a8cd3
--- /dev/null
+++ b/compiler/x86/symx86.pas
@@ -0,0 +1,140 @@
+{
+ Copyright (c) 2014 by Florian Klaempfl
+
+ Symbol table overrides for x86
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+ ****************************************************************************
+}
+unit symx86;
+
+{$i fpcdefs.inc}
+
+interface
+
+uses
+ globtype,
+ symconst, symtype,symdef,symsym;
+
+type
+ tx86pointerdef = class(tpointerdef)
+ protected
+ procedure ppuload_platform(ppufile: tcompilerppufile); override;
+ procedure ppuwrite_platform(ppufile: tcompilerppufile); override;
+ public
+ x86pointertyp : tx86pointertyp;
+ constructor create(def: tdef); override;
+ constructor createx86(def:tdef;x86typ:tx86pointertyp);virtual;
+ function size: asizeint; override;
+ function getcopy: tstoreddef; override;
+ function GetTypeName: string; override;
+ class function default_x86_data_pointer_type: tx86pointertyp; virtual;
+ end;
+ tx86pointerdefclass = class of tx86pointerdef;
+
+implementation
+
+ uses
+ globals, verbose;
+
+{****************************************************************************
+ tx86pointerdef
+****************************************************************************}
+
+ procedure tx86pointerdef.ppuload_platform(ppufile: tcompilerppufile);
+ begin
+ inherited;
+ x86pointertyp:=tx86pointertyp(ppufile.getbyte);
+ end;
+
+
+ procedure tx86pointerdef.ppuwrite_platform(ppufile: tcompilerppufile);
+ begin
+ inherited;
+ ppufile.putbyte(byte(x86pointertyp));
+ end;
+
+
+ constructor tx86pointerdef.create(def: tdef);
+ begin
+ inherited create(def);
+ x86pointertyp := default_x86_data_pointer_type;
+ end;
+
+
+ constructor tx86pointerdef.createx86(def: tdef; x86typ: tx86pointertyp);
+ begin
+ tabstractpointerdef(self).create(pointerdef,def);
+ x86pointertyp := x86typ;
+ has_pointer_math:=cs_pointermath in current_settings.localswitches;
+ end;
+
+
+ function tx86pointerdef.size: asizeint;
+ begin
+ if x86pointertyp in [x86pt_far,x86pt_huge] then
+ result:=sizeof(pint)+2
+ else
+ result:=inherited;
+ end;
+
+
+ function tx86pointerdef.getcopy: tstoreddef;
+ begin
+ result:=inherited;
+ tx86pointerdef(result).x86pointertyp:=x86pointertyp;
+ end;
+
+
+ function tx86pointerdef.GetTypeName: string;
+ begin
+ result:=inherited;
+ if x86pointertyp<>default_x86_data_pointer_type then
+ begin
+ case x86pointertyp of
+ x86pt_near:
+ result:=result+';near';
+ x86pt_near_cs:
+ result:=result+';near ''CS''';
+ x86pt_near_ds:
+ result:=result+';near ''DS''';
+ x86pt_near_ss:
+ result:=result+';near ''SS''';
+ x86pt_near_es:
+ result:=result+';near ''ES''';
+ x86pt_near_fs:
+ result:=result+';near ''FS''';
+ x86pt_near_gs:
+ result:=result+';near ''GS''';
+ x86pt_far:
+ result:=result+';far';
+ x86pt_huge:
+ result:=result+';huge';
+ else
+ internalerror(2013050301);
+ end;
+ end;
+ end;
+
+
+ class function tx86pointerdef.default_x86_data_pointer_type: tx86pointertyp;
+ begin
+ result:=x86pt_near;
+ end;
+
+
+end.
+
diff --git a/compiler/x86/x86ins.dat b/compiler/x86/x86ins.dat
index d4ba5cbab5..46f0e2203f 100644
--- a/compiler/x86/x86ins.dat
+++ b/compiler/x86/x86ins.dat
@@ -3552,11 +3552,14 @@ ymmreg,mem128 \361\362\364\371\1\x1A\110 AVX,SA
[VBROADCASTSD]
(Ch_All, Ch_None, Ch_None)
ymmreg,mem64 \361\362\364\371\1\x19\110 AVX,SANDYBRIDGE
+ymmreg,xmmreg \361\362\364\371\1\x19\110 AVX2
[VBROADCASTSS]
(Ch_All, Ch_None, Ch_None)
ymmreg,mem32 \361\362\364\371\1\x18\110 AVX,SANDYBRIDGE
xmmreg,mem32 \361\362\371\1\x18\110 AVX,SANDYBRIDGE
+ymmreg,xmmreg \361\362\364\371\1\x18\110 AVX2
+xmmreg,xmmreg \361\362\371\1\x18\110 AVX2
[VCMPPD]
(Ch_All, Ch_None, Ch_None)
@@ -3592,7 +3595,7 @@ xmmreg,xmmreg \362\370\1\x2F\110 AVX,SA
(Ch_All, Ch_None, Ch_None)
xmmreg,mem64 \333\362\370\1\xE6\110 AVX,SANDYBRIDGE
xmmreg,xmmreg \333\362\370\1\xE6\110 AVX,SANDYBRIDGE
-ymmreg,ymmreg \333\362\364\370\1\xE6\110 AVX,SANDYBRIDGE
+ymmreg,xmmreg \333\362\364\370\1\xE6\110 AVX,SANDYBRIDGE
ymmreg,mem128 \333\362\364\370\1\xE6\110 AVX,SANDYBRIDGE
[VCVTDQ2PS]
@@ -3901,6 +3904,7 @@ mem256,ymmreg \361\362\364\370\1\xE7\101 AVX,SA
[VMOVNTDQA]
(Ch_Wop2, Ch_Rop1, Ch_None)
xmmreg,mem128 \361\362\371\1\x2A\110 AVX,SANDYBRIDGE
+ymmreg,mem256 \361\362\364\371\1\x2A\110 AVX2
[VMOVNTPD]
(Ch_Wop2, Ch_Rop1, Ch_None)
@@ -3960,6 +3964,7 @@ ymmrm,ymmreg \362\364\370\1\x11\101 AVX,SA
[VMPSADBW]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmreg,xmmrm,imm8 \361\362\372\1\x42\75\120\27 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm,imm8 \361\362\364\372\1\x42\75\120\27 AVX2
[VMULPD]
(Ch_Wop3, Ch_Rop2, Ch_Rop1)
@@ -3993,90 +3998,112 @@ ymmreg,ymmreg,ymmrm \362\364\370\1\x56\75\120 AVX,SA
[VPABSB]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmrm \361\362\371\1\x1C\110 AVX,SANDYBRIDGE
+ymmreg,ymmrm \361\362\364\371\1\x1C\110 AVX2
[VPABSD]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmrm \361\362\371\1\x1E\110 AVX,SANDYBRIDGE
+ymmreg,ymmrm \361\362\364\371\1\x1E\110 AVX2
[VPABSW]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmrm \361\362\371\1\x1D\110 AVX,SANDYBRIDGE
+ymmreg,ymmrm \361\362\364\371\1\x1D\110 AVX2
[VPACKSSDW]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmreg,xmmrm \361\362\370\1\x6B\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\370\1\x6B\75\120 AVX2
[VPACKSSWB]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmreg,xmmrm \361\362\370\1\x63\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\370\1\x63\75\120 AVX2
[VPACKUSDW]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmreg,xmmrm \361\362\371\1\x2B\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\371\1\x2B\75\120 AVX2
[VPACKUSWB]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmreg,xmmrm \361\362\370\1\x67\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\370\1\x67\75\120 AVX2
[VPADDB]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmreg,xmmrm \361\362\370\1\xFC\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\370\1\xFC\75\120 AVX2
[VPADDD]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmreg,xmmrm \361\362\370\1\xFE\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\370\1\xFE\75\120 AVX2
[VPADDQ]
(Ch_Rop1, Ch_Rop2, Ch_Wop3)
xmmreg,xmmreg,xmmrm \361\362\370\1\xD4\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\370\1\xD4\75\120 AVX2
[VPADDSB]
(Ch_Rop1, Ch_Rop2, Ch_Wop3)
xmmreg,xmmreg,xmmrm \361\362\370\1\xEC\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\370\1\xEC\75\120 AVX2
[VPADDSW]
(Ch_Rop1, Ch_Rop2, Ch_Wop3)
xmmreg,xmmreg,xmmrm \361\362\370\1\xED\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\370\1\xED\75\120 AVX2
[VPADDUSB]
(Ch_Rop1, Ch_Rop2, Ch_Wop3)
xmmreg,xmmreg,xmmrm \361\362\370\1\xDC\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\370\1\xDC\75\120 AVX2
[VPADDUSW]
(Ch_Rop1, Ch_Rop2, Ch_Wop3)
xmmreg,xmmreg,xmmrm \361\362\370\1\xDD\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\370\1\xDD\75\120 AVX2
[VPADDW]
(Ch_Rop1, Ch_Rop2, Ch_Wop3)
xmmreg,xmmreg,xmmrm \361\362\370\1\xFD\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\370\1\xFD\75\120 AVX2
[VPALIGNR]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmreg,xmmrm,imm8 \361\362\372\1\x0F\75\120\27 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm,imm8 \361\362\364\372\1\x0F\75\120\27 AVX2
[VPAND]
(Ch_Rop1, Ch_Rop2, Ch_Wop3)
xmmreg,xmmreg,xmmrm \361\362\370\1\xDB\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\370\1\xDB\75\120 AVX2
[VPANDN]
(Ch_Rop1, Ch_Rop2, Ch_Wop3)
xmmreg,xmmreg,xmmrm \361\362\370\1\xDF\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\370\1\xDF\75\120 AVX2
[VPAVGB]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmreg,xmmrm \361\362\370\1\xE0\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\370\1\xE0\75\120 AVX2
[VPAVGW]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmreg,xmmrm \361\362\370\1\xE3\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\370\1\xE3\75\120 AVX2
[VPBLENDVB]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmreg,xmmrm,xmmreg \361\362\372\1\x4C\75\120\367 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm,ymmreg \361\362\364\372\1\x4C\75\120\367 AVX2
[VPBLENDW]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmreg,xmmrm,imm8 \361\362\372\1\x0E\75\120\27 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm,imm8 \361\362\364\372\1\x0E\75\120\27 AVX2
[VPCLMULQDQ]
(Ch_All, Ch_None, Ch_None)
@@ -4085,18 +4112,22 @@ xmmreg,xmmreg,xmmrm,imm8 \361\362\372\1\x44\75\120\27 AVX,SA
[VPCMPEQB]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmreg,xmmrm \361\362\370\1\x74\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\370\1\x74\75\120 AVX2
[VPCMPEQD]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmreg,xmmrm \361\362\370\1\x76\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\370\1\x76\75\120 AVX2
[VPCMPEQQ]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmreg,xmmrm \361\362\371\1\x29\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\371\1\x29\75\120 AVX2
[VPCMPEQW]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmreg,xmmrm \361\362\370\1\x75\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\370\1\x75\75\120 AVX2
[VPCMPESTRI]
(Ch_All, Ch_None, Ch_None)
@@ -4109,18 +4140,22 @@ xmmreg,xmmrm,imm8 \361\362\372\1\x60\110\26 AVX,SA
[VPCMPGTB]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmreg,xmmrm \361\362\370\1\x64\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\370\1\x64\75\120 AVX2
[VPCMPGTD]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmreg,xmmrm \361\362\370\1\x66\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\370\1\x66\75\120 AVX2
[VPCMPGTQ]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmreg,xmmrm \361\362\371\1\x37\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\371\1\x37\75\120 AVX2
[VPCMPGTW]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmreg,xmmrm \361\362\370\1\x65\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\370\1\x65\75\120 AVX2
[VPCMPISTRI]
(Ch_All, Ch_None, Ch_None)
@@ -4174,14 +4209,17 @@ mem16,xmmreg,imm8 \361\362\372\1\x15\101\26 AVX,SA
[VPHADDD]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmreg,xmmrm \361\362\371\1\x02\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\371\1\x02\75\120 AVX2
[VPHADDSW]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmreg,xmmrm \361\362\371\1\x03\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\371\1\x03\75\120 AVX2
[VPHADDW]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmreg,xmmrm \361\362\371\1\x01\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\371\1\x01\75\120 AVX2
[VPHMINPOSUW]
(Ch_All, Ch_None, Ch_None)
@@ -4190,14 +4228,17 @@ xmmreg,xmmrm \361\362\371\1\x41\110 AVX,SA
[VPHSUBD]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmreg,xmmrm \361\362\371\1\x06\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\371\1\x06\75\120 AVX2
[VPHSUBSW]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmreg,xmmrm \361\362\371\1\x07\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\371\1\x07\75\120 AVX2
[VPHSUBW]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmreg,xmmrm \361\362\371\1\x05\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\371\1\x05\75\120 AVX2
[VPINSRB]
(Ch_All, Ch_None, Ch_None)
@@ -4220,267 +4261,347 @@ xmmreg,xmmreg,mem16,imm8 \361\362\370\1\xC4\75\120\27 AVX,SA
[VPMADDUBSW]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmreg,xmmrm \361\362\371\1\x04\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\371\1\x04\75\120 AVX2
[VPMADDWD]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmreg,xmmrm \361\362\370\1\xF5\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\370\1\xF5\75\120 AVX2
[VPMAXSB]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmreg,xmmrm \361\362\371\1\x3C\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\371\1\x3C\75\120 AVX2
[VPMAXSD]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmreg,xmmrm \361\362\371\1\x3D\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\371\1\x3D\75\120 AVX2
[VPMAXSW]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmreg,xmmrm \361\362\370\1\xEE\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\370\1\xEE\75\120 AVX2
[VPMAXUB]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmreg,xmmrm \361\362\370\1\xDE\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\370\1\xDE\75\120 AVX2
[VPMAXUD]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmreg,xmmrm \361\362\371\1\x3F\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\371\1\x3F\75\120 AVX2
[VPMAXUW]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmreg,xmmrm \361\362\371\1\x3E\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\371\1\x3E\75\120 AVX2
[VPMINSB]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmreg,xmmrm \361\362\371\1\x38\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\371\1\x38\75\120 AVX2
[VPMINSD]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmreg,xmmrm \361\362\371\1\x39\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\371\1\x39\75\120 AVX2
[VPMINSW]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmreg,xmmrm \361\362\370\1\xEA\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\370\1\xEA\75\120 AVX2
[VPMINUB]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmreg,xmmrm \361\362\370\1\xDA\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\370\1\xDA\75\120 AVX2
[VPMINUD]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmreg,xmmrm \361\362\371\1\x3B\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\371\1\x3B\75\120 AVX2
[VPMINUW]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmreg,xmmrm \361\362\371\1\x3A\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\371\1\x3A\75\120 AVX2
[VPMOVMSKB]
(Ch_All, Ch_None, Ch_None)
reg64,xmmreg \361\362\370\1\xD7\110 AVX,SANDYBRIDGE
reg32,xmmreg \361\362\370\1\xD7\110 AVX,SANDYBRIDGE
+reg32,ymmreg \361\362\364\370\1\xD7\110 AVX2
+reg64,ymmreg \361\362\364\370\1\xD7\110 AVX2
[VPMOVSXBD]
(Ch_All, Ch_None, Ch_None)
xmmreg,mem32 \361\362\371\1\x21\110 AVX,SANDYBRIDGE
xmmreg,xmmreg \361\362\371\1\x21\110 AVX,SANDYBRIDGE
+ymmreg,xmmreg \361\362\364\371\1\x21\110 AVX2
+ymmreg,mem64 \361\362\364\371\1\x21\110 AVX2
[VPMOVSXBQ]
(Ch_All, Ch_None, Ch_None)
xmmreg,mem16 \361\362\371\1\x22\110 AVX,SANDYBRIDGE
xmmreg,xmmreg \361\362\371\1\x22\110 AVX,SANDYBRIDGE
+ymmreg,mem32 \361\362\364\371\1\x22\110 AVX2
+ymmreg,xmmreg \361\362\364\371\1\x22\110 AVX2
[VPMOVSXBW]
(Ch_All, Ch_None, Ch_None)
xmmreg,mem64 \361\362\371\1\x20\110 AVX,SANDYBRIDGE
xmmreg,xmmreg \361\362\371\1\x20\110 AVX,SANDYBRIDGE
+ymmreg,xmmrm \361\362\364\371\1\x20\110 AVX2
[VPMOVSXDQ]
(Ch_All, Ch_None, Ch_None)
xmmreg,mem64 \361\362\371\1\x25\110 AVX,SANDYBRIDGE
xmmreg,xmmreg \361\362\371\1\x25\110 AVX,SANDYBRIDGE
+ymmreg,xmmrm \361\362\364\371\1\x25\110 AVX2
[VPMOVSXWD]
(Ch_All, Ch_None, Ch_None)
xmmreg,mem64 \361\362\371\1\x23\110 AVX,SANDYBRIDGE
xmmreg,xmmreg \361\362\371\1\x23\110 AVX,SANDYBRIDGE
+ymmreg,xmmrm \361\362\364\371\1\x23\110 AVX2
[VPMOVSXWQ]
(Ch_All, Ch_None, Ch_None)
xmmreg,mem32 \361\362\371\1\x24\110 AVX,SANDYBRIDGE
xmmreg,xmmreg \361\362\371\1\x24\110 AVX,SANDYBRIDGE
+ymmreg,mem64 \361\362\364\371\1\x24\110 AVX2
+ymmreg,xmmreg \361\362\364\371\1\x24\110 AVX2
[VPMOVZXBD]
(Ch_All, Ch_None, Ch_None)
xmmreg,mem32 \361\362\371\1\x31\110 AVX,SANDYBRIDGE
xmmreg,xmmreg \361\362\371\1\x31\110 AVX,SANDYBRIDGE
+ymmreg,mem64 \361\362\364\371\1\x31\110 AVX2
+ymmreg,xmmreg \361\362\364\371\1\x31\110 AVX2
[VPMOVZXBQ]
(Ch_All, Ch_None, Ch_None)
xmmreg,mem16 \361\362\371\1\x32\110 AVX,SANDYBRIDGE
xmmreg,xmmreg \361\362\371\1\x32\110 AVX,SANDYBRIDGE
+ymmreg,mem32 \361\362\364\371\1\x32\110 AVX2
+ymmreg,xmmreg \361\362\364\371\1\x32\110 AVX2
[VPMOVZXBW]
(Ch_All, Ch_None, Ch_None)
xmmreg,mem64 \361\362\371\1\x30\110 AVX,SANDYBRIDGE
xmmreg,xmmreg \361\362\371\1\x30\110 AVX,SANDYBRIDGE
+ymmreg,xmmrm \361\362\364\371\1\x30\110 AVX2
[VPMOVZXDQ]
(Ch_All, Ch_None, Ch_None)
xmmreg,mem64 \361\362\371\1\x35\110 AVX,SANDYBRIDGE
xmmreg,xmmreg \361\362\371\1\x35\110 AVX,SANDYBRIDGE
+ymmreg,xmmrm \361\362\364\371\1\x35\110 AVX2
[VPMOVZXWD]
(Ch_All, Ch_None, Ch_None)
xmmreg,mem64 \361\362\371\1\x33\110 AVX,SANDYBRIDGE
xmmreg,xmmreg \361\362\371\1\x33\110 AVX,SANDYBRIDGE
+ymmreg,xmmrm \361\362\364\371\1\x33\110 AVX2
[VPMOVZXWQ]
(Ch_All, Ch_None, Ch_None)
xmmreg,mem32 \361\362\371\1\x34\110 AVX,SANDYBRIDGE
xmmreg,xmmreg \361\362\371\1\x34\110 AVX,SANDYBRIDGE
+ymmreg,mem64 \361\362\364\371\1\x34\110 AVX2
+ymmreg,xmmreg \361\362\364\371\1\x34\110 AVX2
+
[VPMULDQ]
(Ch_Rop1, Ch_Rop2, Ch_Wop3)
xmmreg,xmmreg,xmmrm \361\362\371\1\x28\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\371\1\x28\75\120 AVX2
[VPMULHRSW]
(Ch_Rop1, Ch_Rop2, Ch_Wop3)
xmmreg,xmmreg,xmmrm \361\362\371\1\x0B\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\371\1\x0B\75\120 AVX2
[VPMULHUW]
(Ch_Rop1, Ch_Rop2, Ch_Wop3)
xmmreg,xmmreg,xmmrm \361\362\370\1\xE4\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\370\1\xE4\75\120 AVX2
[VPMULHW]
(Ch_Rop1, Ch_Rop2, Ch_Wop3)
xmmreg,xmmreg,xmmrm \361\362\370\1\xE5\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\370\1\xE5\75\120 AVX2
[VPMULLD]
(Ch_Rop1, Ch_Rop2, Ch_Wop3)
xmmreg,xmmreg,xmmrm \361\362\371\1\x40\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\371\1\x40\75\120 AVX2
[VPMULLW]
(Ch_Rop1, Ch_Rop2, Ch_Wop3)
xmmreg,xmmreg,xmmrm \361\362\370\1\xD5\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\370\1\xD5\75\120 AVX2
[VPMULUDQ]
(Ch_Rop1, Ch_Rop2, Ch_Wop3)
xmmreg,xmmreg,xmmrm \361\362\370\1\xF4\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\370\1\xF4\75\120 AVX2
[VPOR]
(Ch_Rop1, Ch_Rop2, Ch_Wop3)
xmmreg,xmmreg,xmmrm \361\362\370\1\xEB\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\370\1\xEB\75\120 AVX2
[VPSADBW]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmreg,xmmrm \361\362\370\1\xF6\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\370\1\xF6\75\120 AVX2
[VPSHUFB]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmreg,xmmrm \361\362\371\1\x00\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\371\1\x00\75\120 AVX2
[VPSHUFD]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmrm,imm8 \361\362\370\1\x70\110\26 AVX,SANDYBRIDGE
+ymmreg,ymmrm,imm8 \361\362\364\370\1\x70\110\26 AVX2
[VPSHUFHW]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmrm,imm8 \333\362\370\1\x70\110\26 AVX,SANDYBRIDGE
+ymmreg,ymmrm,imm8 \333\362\364\370\1\x70\110\26 AVX2
[VPSHUFLW]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmrm,imm8 \334\362\370\1\x70\110\26 AVX,SANDYBRIDGE
+ymmreg,ymmrm,imm8 \334\362\364\370\1\x70\110\26 AVX2
[VPSIGNB]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmreg,xmmrm \361\362\371\1\x08\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\371\1\x08\75\120 AVX2
[VPSIGND]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmreg,xmmrm \361\362\371\1\x0A\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\371\1\x0A\75\120 AVX2
[VPSIGNW]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmreg,xmmrm \361\362\371\1\x09\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\371\1\x09\75\120 AVX2
[VPSLLD]
(Ch_Rop1, Ch_Rop2, Ch_Wop3)
xmmreg,xmmreg,imm8 \361\362\370\1\x72\74\216\26 AVX,SANDYBRIDGE
xmmreg,xmmreg,xmmrm \361\362\370\1\xF2\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,imm8 \361\362\364\370\1\x72\74\216\26 AVX2
+ymmreg,ymmreg,xmmrm \361\362\364\370\1\xF2\75\120 AVX2
[VPSLLDQ]
(Ch_Rop1, Ch_Rop2, Ch_Wop3)
xmmreg,xmmreg,imm8 \361\362\370\1\x73\74\217\26 AVX,SANDYBRIDGE
+ymmreg,ymmreg,imm8 \361\362\364\370\1\x73\74\217\26 AVX2
+
[VPSLLQ]
(Ch_Rop1, Ch_Rop2, Ch_Wop3)
xmmreg,xmmreg,xmmrm \361\362\370\1\xF3\75\120 AVX,SANDYBRIDGE
xmmreg,xmmreg,imm8 \361\362\370\1\x73\74\216\26 AVX,SANDYBRIDGE
+ymmreg,ymmreg,xmmrm \361\362\364\370\1\xF3\75\120 AVX2
+ymmreg,ymmreg,imm8 \361\362\364\370\1\x73\74\216\26 AVX2
[VPSLLW]
(Ch_Rop1, Ch_Rop2, Ch_Wop3)
xmmreg,xmmreg,imm8 \361\362\370\1\x71\74\216\26 AVX,SANDYBRIDGE
xmmreg,xmmreg,xmmrm \361\362\370\1\xF1\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,imm8 \361\362\364\370\1\x71\74\216\26 AVX2
+ymmreg,ymmreg,xmmrm \361\362\364\370\1\xF1\75\120 AVX2
+
[VPSRAD]
(Ch_Rop1, Ch_Rop2, Ch_Wop3)
xmmreg,xmmreg,imm8 \361\362\370\1\x72\74\214\26 AVX,SANDYBRIDGE
xmmreg,xmmreg,xmmrm \361\362\370\1\xE2\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,imm8 \361\362\364\370\1\x72\74\214\26 AVX2
+ymmreg,ymmreg,xmmrm \361\362\364\370\1\xE2\75\120 AVX2
[VPSRAW]
(Ch_Rop1, Ch_Rop2, Ch_Wop3)
xmmreg,xmmreg,imm8 \361\362\370\1\x71\74\214\26 AVX,SANDYBRIDGE
xmmreg,xmmreg,xmmrm \361\362\370\1\xE1\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,imm8 \361\362\364\370\1\x71\74\214\26 AVX2
+ymmreg,ymmreg,xmmrm \361\362\364\370\1\xE1\75\120 AVX2
[VPSRLD]
(Ch_Rop1, Ch_Rop2, Ch_Wop3)
xmmreg,xmmreg,imm8 \361\362\370\1\x72\74\212\26 AVX,SANDYBRIDGE
xmmreg,xmmreg,xmmrm \361\362\370\1\xD2\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,imm8 \361\362\364\370\1\x72\74\212\26 AVX2
+ymmreg,ymmreg,xmmrm \361\362\364\370\1\xD2\75\120 AVX2
+
[VPSRLDQ]
(Ch_Rop1, Ch_Rop2, Ch_Wop3)
xmmreg,xmmreg,imm8 \361\362\370\1\x73\74\213\26 AVX,SANDYBRIDGE
+ymmreg,ymmreg,imm8 \361\362\364\370\1\x73\74\213\26 AVX2
[VPSRLQ]
(Ch_Rop1, Ch_Rop2, Ch_Wop3)
xmmreg,xmmreg,imm8 \361\362\370\1\x73\74\212\26 AVX,SANDYBRIDGE
xmmreg,xmmreg,xmmrm \361\362\370\1\xD3\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,imm8 \361\362\364\370\1\x73\74\212\26 AVX2
+ymmreg,ymmreg,xmmrm \361\362\364\370\1\xD3\75\120 AVX2
[VPSRLW]
(Ch_Rop1, Ch_Rop2, Ch_Wop3)
xmmreg,xmmreg,imm8 \361\362\370\1\x71\74\212\26 AVX,SANDYBRIDGE
xmmreg,xmmreg,xmmrm \361\362\370\1\xD1\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,imm8 \361\362\364\370\1\x71\74\212\26 AVX2
+ymmreg,ymmreg,xmmrm \361\362\364\370\1\xD1\75\120 AVX2
[VPSUBB]
(Ch_Rop1, Ch_Rop2, Ch_Wop3)
xmmreg,xmmreg,xmmrm \361\362\370\1\xF8\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\370\1\xF8\75\120 AVX2
[VPSUBD]
(Ch_Rop1, Ch_Rop2, Ch_Wop3)
xmmreg,xmmreg,xmmrm \361\362\370\1\xFA\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\370\1\xFA\75\120 AVX2
[VPSUBQ]
(Ch_Rop1, Ch_Rop2, Ch_Wop3)
xmmreg,xmmreg,xmmrm \361\362\370\1\xFB\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\370\1\xFB\75\120 AVX2
[VPSUBSB]
(Ch_Rop1, Ch_Rop2, Ch_Wop3)
xmmreg,xmmreg,xmmrm \361\362\370\1\xE8\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\370\1\xE8\75\120 AVX2
[VPSUBSW]
(Ch_Rop1, Ch_Rop2, Ch_Wop3)
xmmreg,xmmreg,xmmrm \361\362\370\1\xE9\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\370\1\xE9\75\120 AVX2
[VPSUBUSB]
(Ch_Rop1, Ch_Rop2, Ch_Wop3)
xmmreg,xmmreg,xmmrm \361\362\370\1\xD8\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\370\1\xD8\75\120 AVX2
[VPSUBUSW]
(Ch_Rop1, Ch_Rop2, Ch_Wop3)
xmmreg,xmmreg,xmmrm \361\362\370\1\xD9\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\370\1\xD9\75\120 AVX2
[VPSUBW]
(Ch_Rop1, Ch_Rop2, Ch_Wop3)
xmmreg,xmmreg,xmmrm \361\362\370\1\xF9\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\370\1\xF9\75\120 AVX2
[VPTEST]
(Ch_All, Ch_None, Ch_None)
@@ -4490,38 +4611,47 @@ xmmreg,xmmrm \361\362\371\1\x17\110 AVX,SA
[VPUNPCKHBW]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmreg,xmmrm \361\362\370\1\x68\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\370\1\x68\75\120 AVX2
[VPUNPCKHDQ]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmreg,xmmrm \361\362\370\1\x6A\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\370\1\x6A\75\120 AVX2
[VPUNPCKHQDQ]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmreg,xmmrm \361\362\370\1\x6D\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\370\1\x6D\75\120 AVX2
[VPUNPCKHWD]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmreg,xmmrm \361\362\370\1\x69\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\370\1\x69\75\120 AVX2
[VPUNPCKLBW]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmreg,xmmrm \361\362\370\1\x60\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\370\1\x60\75\120 AVX2
[VPUNPCKLDQ]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmreg,xmmrm \361\362\370\1\x62\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\370\1\x62\75\120 AVX2
[VPUNPCKLQDQ]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmreg,xmmrm \361\362\370\1\x6C\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\370\1\x6C\75\120 AVX2
[VPUNPCKLWD]
(Ch_All, Ch_None, Ch_None)
xmmreg,xmmreg,xmmrm \361\362\370\1\x61\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\370\1\x61\75\120 AVX2
[VPXOR]
(Ch_Rop1, Ch_Rop2, Ch_Wop3)
xmmreg,xmmreg,xmmrm \361\362\370\1\xEF\75\120 AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm \361\362\364\370\1\xEF\75\120 AVX2
[VRCPPS]
(Ch_All, Ch_None, Ch_None)
@@ -4717,6 +4847,115 @@ reg64,rm64,reg64 \361\362\363\371\1\xf7\76\110 BMI2,X
reg32,rm32,reg32 \334\362\371\1\xf7\76\110 BMI2
reg64,rm64,reg64 \334\362\363\371\1\xf7\76\110 BMI2,X86_64
+
+;*******************************************************************************
+;********** AVX2 ***************************************************************
+;*******************************************************************************
+
+[VBROADCASTI128]
+(Ch_All, Ch_None, Ch_None)
+ymmreg,mem128 \361\362\364\371\1\x5A\110 AVX2
+
+[VEXTRACTI128]
+(Ch_All, Ch_None, Ch_None)
+xmmrm,ymmreg,imm8 \361\362\364\372\1\x39\101\26 AVX2
+
+[VINSERTI128]
+(Ch_All, Ch_None, Ch_None)
+ymmreg,ymmreg,xmmrm,imm8 \361\362\364\372\1\x38\75\120\27 AVX2
+
+[VPBLENDD]
+(Ch_All, Ch_None, Ch_None)
+ymmreg,ymmreg,ymmrm,imm8 \361\362\364\372\1\x02\75\120\27 AVX2
+xmmreg,xmmreg,xmmrm,imm8 \361\362\372\1\x02\75\120\27 AVX2
+
+[VPBROADCASTB]
+(Ch_All, Ch_None, Ch_None)
+xmmreg,xmmreg \361\362\371\1\x78\110 AVX2
+ymmreg,xmmreg \361\362\364\371\1\x78\110 AVX2
+xmmreg,mem8 \361\362\371\1\x78\110 AVX2
+ymmreg,mem8 \361\362\364\371\1\x78\110 AVX2
+
+[VPBROADCASTD]
+(Ch_All, Ch_None, Ch_None)
+ymmreg,xmmreg \361\362\364\371\1\x58\110 AVX2
+xmmreg,mem32 \361\362\371\1\x58\110 AVX2
+xmmreg,xmmreg \361\362\371\1\x58\110 AVX2
+ymmreg,mem32 \361\362\364\371\1\x58\110 AVX2
+
+[VPBROADCASTQ]
+(Ch_All, Ch_None, Ch_None)
+ymmreg,mem64 \361\362\364\371\1\x59\110 AVX2
+xmmreg,mem64 \361\362\371\1\x59\110 AVX2
+xmmreg,xmmreg \361\362\371\1\x59\110 AVX2
+ymmreg,xmmreg \361\362\364\371\1\x59\110 AVX2
+
+[VPBROADCASTW]
+(Ch_All, Ch_None, Ch_None)
+xmmreg,mem16 \361\362\371\1\x79\110 AVX2
+xmmreg,xmmreg \361\362\371\1\x79\110 AVX2
+ymmreg,mem16 \361\362\364\371\1\x79\110 AVX2
+ymmreg,xmmreg \361\362\364\371\1\x79\110 AVX2
+
+[VPERM2I128]
+(Ch_All, Ch_None, Ch_None)
+ymmreg,ymmreg,ymmrm,imm8 \361\362\364\372\1\x46\75\120\27 AVX2
+
+[VPERMD]
+(Ch_All, Ch_None, Ch_None)
+ymmreg,ymmreg,ymmrm \361\362\364\371\1\x36\75\120 AVX2
+
+[VPERMPD]
+(Ch_All, Ch_None, Ch_None)
+ymmreg,ymmrm,imm8 \361\362\363\364\372\1\x01\110\26 AVX2
+
+[VPERMPS]
+(Ch_All, Ch_None, Ch_None)
+ymmreg,ymmreg,ymmrm \361\362\364\371\1\x16\75\120 AVX2
+
+[VPERMQ]
+(Ch_All, Ch_None, Ch_None)
+ymmreg,ymmrm,imm8 \361\362\363\364\372\1\x00\110\26 AVX2
+
+[VPMASKMOVD]
+(Ch_All, Ch_None, Ch_None)
+xmmreg,xmmreg,mem128 \361\362\371\1\x8C\75\120 AVX2
+mem128,xmmreg,xmmreg \361\362\371\1\x8E\75\102 AVX2
+ymmreg,ymmreg,mem256 \361\362\364\371\1\x8C\75\120 AVX2
+mem256,ymmreg,ymmreg \361\362\364\371\1\x8E\75\102 AVX2
+
+[VPMASKMOVQ]
+(Ch_All, Ch_None, Ch_None)
+xmmreg,xmmreg,mem128 \361\362\363\371\1\x8C\75\120 AVX2
+mem128,xmmreg,xmmreg \361\362\363\371\1\x8E\75\102 AVX2
+mem256,ymmreg,ymmreg \361\362\363\364\371\1\x8E\75\102 AVX2
+ymmreg,ymmreg,mem256 \361\362\363\364\371\1\x8C\75\120 AVX2
+
+[VPSLLVD]
+(Ch_All, Ch_None, Ch_None)
+ymmreg,ymmreg,ymmrm \361\362\364\371\1\x47\75\120 AVX2
+xmmreg,xmmreg,xmmrm \361\362\371\1\x47\75\120 AVX2
+
+[VPSLLVQ]
+(Ch_All, Ch_None, Ch_None)
+xmmreg,xmmreg,xmmrm \361\362\363\371\1\x47\75\120 AVX2
+ymmreg,ymmreg,ymmrm \361\362\363\364\371\1\x47\75\120 AVX2
+
+[VPSRAVD]
+(Ch_All, Ch_None, Ch_None)
+ymmreg,ymmreg,ymmrm \361\362\364\371\1\x46\75\120 AVX2
+xmmreg,xmmreg,xmmrm \361\362\371\1\x46\75\120 AVX2
+
+[VPSRLVD]
+(Ch_All, Ch_None, Ch_None)
+ymmreg,ymmreg,ymmrm \361\362\364\371\1\x45\75\120 AVX2
+xmmreg,xmmreg,xmmrm \361\362\371\1\x45\75\120 AVX2
+
+[VPSRLVQ]
+(Ch_All, Ch_None, Ch_None)
+ymmreg,ymmreg,ymmrm \361\362\363\364\371\1\x45\75\120 AVX2
+xmmreg,xmmreg,xmmrm \361\362\363\371\1\x45\75\120 AVX2
+
;*******************************************************************************
;********** NEC V20/V30 ********************************************************
;*******************************************************************************
@@ -4792,3 +5031,288 @@ rm8,reg_cl \2\x0F\x10\200 NEC,16
rm16,reg_cl \2\x0F\x11\200 NEC,16BITONLY
rm8,imm \2\x0F\x18\200\25 NEC,SB,16BITONLY
rm16,imm \2\x0F\x19\200\25 NEC,SW,16BITONLY
+
+;*******************************************************************************
+;********** FMA ****************************************************************
+;*******************************************************************************
+[VFMADD132PD]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\363\1\x98\75\120 FMA
+ymmreg,ymmreg,ymmrm \361\362\364\371\363\1\x98\75\120 FMA
+
+[VFMADD213PD]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\363\1\xA8\75\120 FMA
+ymmreg,ymmreg,ymmrm \361\362\364\371\363\1\xA8\75\120 FMA
+
+[VFMADD231PD]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\363\1\xB8\75\120 FMA
+ymmreg,ymmreg,ymmrm \361\362\364\371\363\1\xB8\75\120 FMA
+
+[VFMADDPD]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm,xmmreg \361\362\372\1\x69\75\120\367 FMA4
+xmmreg,xmmreg,xmmreg,xmmrm \361\362\372\363\1\x69\75\130\366 FMA4
+
+[VFMADD132PS]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\1\x98\75\120 FMA
+ymmreg,ymmreg,ymmrm \361\362\364\371\1\x98\75\120 FMA
+
+[VFMADD213PS]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\1\xA8\75\120 FMA
+ymmreg,ymmreg,ymmrm \361\362\364\371\1\xA8\75\120 FMA
+
+[VFMADD231PS]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\1\xB8\75\120 FMA
+ymmreg,ymmreg,ymmrm \361\362\364\371\1\xB8\75\120 FMA
+
+[VFMADD132SD]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\363\1\x99\75\120 FMA
+
+[VFMADD213SD]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\363\1\xa9\75\120 FMA
+
+[VFMADD231SD]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\363\1\xb9\75\120 FMA
+
+[VFMADD132SS]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\1\x99\75\120 FMA
+
+[VFMADD213SS]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\1\xA9\75\120 FMA
+
+[VFMADD231SS]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\1\xb9\75\120 FMA
+
+[VFMADDSUB132PD]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\363\1\x96\75\120 FMA
+ymmreg,ymmreg,ymmrm \361\362\364\371\363\1\x96\75\120 FMA
+
+[VFMADDSUB213PD]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\363\1\xA6\75\120 FMA
+ymmreg,ymmreg,ymmrm \361\362\364\371\363\1\xA6\75\120 FMA
+
+[VFMADDSUB231PD]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\363\1\xB6\75\120 FMA
+ymmreg,ymmreg,ymmrm \361\362\364\371\363\1\xB6\75\120 FMA
+
+[VFMADDSUB132PS]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\1\x96\75\120 FMA
+ymmreg,ymmreg,ymmrm \361\362\364\371\1\x96\75\120 FMA
+
+[VFMADDSUB213PS]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\1\xA6\75\120 FMA
+ymmreg,ymmreg,ymmrm \361\362\364\371\1\xA6\75\120 FMA
+
+[VFMADDSUB231PS]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\1\xB6\75\120 FMA
+ymmreg,ymmreg,ymmrm \361\362\364\371\1\xB6\75\120 FMA
+
+[VFMSUBADD132PD]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\363\1\x97\75\120 FMA
+ymmreg,ymmreg,ymmrm \361\362\364\371\363\1\x97\75\120 FMA
+
+[VFMSUBADD213PD]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\363\1\xA7\75\120 FMA
+ymmreg,ymmreg,ymmrm \361\362\364\371\363\1\xA7\75\120 FMA
+
+[VFMSUBADD231PD]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\363\1\xB7\75\120 FMA
+ymmreg,ymmreg,ymmrm \361\362\364\371\363\1\xB7\75\120 FMA
+
+[VFMSUBADD132PS]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\1\x97\75\120 FMA
+ymmreg,ymmreg,ymmrm \361\362\364\371\1\x97\75\120 FMA
+
+[VFMSUBADD213PS]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\1\xA7\75\120 FMA
+ymmreg,ymmreg,ymmrm \361\362\364\371\1\xA7\75\120 FMA
+
+[VFMSUBADD231PS]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\1\xB7\75\120 FMA
+ymmreg,ymmreg,ymmrm \361\362\364\371\1\xB7\75\120 FMA
+
+[VFMSUB132PD]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\363\1\x9A\75\120 FMA
+ymmreg,ymmreg,ymmrm \361\362\364\371\363\1\x9A\75\120 FMA
+
+[VFMSUB213PD]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\363\1\xAA\75\120 FMA
+ymmreg,ymmreg,ymmrm \361\362\364\371\363\1\xAA\75\120 FMA
+
+[VFMSUB231PD]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\363\1\xBA\75\120 FMA
+ymmreg,ymmreg,ymmrm \361\362\364\371\363\1\xBA\75\120 FMA
+
+[VFMSUB132PS]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\1\x9A\75\120 FMA
+ymmreg,ymmreg,ymmrm \361\362\364\371\1\x9A\75\120 FMA
+
+[VFMSUB213PS]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\1\xAA\75\120 FMA
+ymmreg,ymmreg,ymmrm \361\362\364\371\1\xAA\75\120 FMA
+
+[VFMSUB231PS]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\1\xBA\75\120 FMA
+ymmreg,ymmreg,ymmrm \361\362\364\371\1\xBA\75\120 FMA
+
+[VFMSUB132SD]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\363\1\x9B\75\120 FMA
+
+[VFMSUB213SD]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\363\1\xAB\75\120 FMA
+
+[VFMSUB231SD]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\363\1\xBB\75\120 FMA
+
+[VFMSUB132SS]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\1\x9B\75\120 FMA
+
+[VFMSUB213SS]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\1\xAB\75\120 FMA
+
+[VFMSUB231SS]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\1\xBB\75\120 FMA
+
+[VFNMADD132PD]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\363\1\x9C\75\120 FMA
+ymmreg,ymmreg,ymmrm \361\362\364\371\363\1\x9C\75\120 FMA
+
+[VFNMADD213PD]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\363\1\xAC\75\120 FMA
+ymmreg,ymmreg,ymmrm \361\362\364\371\363\1\xAC\75\120 FMA
+
+[VFNMADD231PD]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\363\1\xBC\75\120 FMA
+ymmreg,ymmreg,ymmrm \361\362\364\371\363\1\xBC\75\120 FMA
+
+[VFNMADD132PS]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\1\x9C\75\120 FMA
+ymmreg,ymmreg,ymmrm \361\362\364\371\1\x9C\75\120 FMA
+
+[VFNMADD213PS]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\1\xAC\75\120 FMA
+ymmreg,ymmreg,ymmrm \361\362\364\371\1\xAC\75\120 FMA
+
+[VFNMADD231PS]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\1\xBC\75\120 FMA
+ymmreg,ymmreg,ymmrm \361\362\364\371\1\xBC\75\120 FMA
+
+[VFNMADD132SD]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\363\1\x9D\75\120 FMA
+
+[VFNMADD213SD]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\363\1\xAD\75\120 FMA
+
+[VFNMADD231SD]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\363\1\xBD\75\120 FMA
+
+[VFNMADD132SS]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\1\x9D\75\120 FMA
+
+[VFNMADD213SS]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\1\xAD\75\120 FMA
+
+[VFNMADD231SS]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\1\xBD\75\120 FMA
+
+[VFNMSUB132PD]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\363\1\x9E\75\120 FMA
+ymmreg,ymmreg,ymmrm \361\362\364\371\363\1\x9E\75\120 FMA
+
+[VFNMSUB213PD]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\363\1\xAE\75\120 FMA
+ymmreg,ymmreg,ymmrm \361\362\364\371\363\1\xAE\75\120 FMA
+
+[VFNMSUB231PD]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\363\1\xBE\75\120 FMA
+ymmreg,ymmreg,ymmrm \361\362\364\371\363\1\xBE\75\120 FMA
+
+[VFNMSUB132PS]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\1\x9E\75\120 FMA
+ymmreg,ymmreg,ymmrm \361\362\364\371\1\x9E\75\120 FMA
+
+[VFNMSUB213PS]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\1\xAE\75\120 FMA
+ymmreg,ymmreg,ymmrm \361\362\364\371\1\xAE\75\120 FMA
+
+[VFNMSUB231PS]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\1\xBE\75\120 FMA
+ymmreg,ymmreg,ymmrm \361\362\364\371\1\xBE\75\120 FMA
+
+[VFNMSUB132SD]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\363\1\x9F\75\120 FMA
+
+[VFNMSUB213SD]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\363\1\xAF\75\120 FMA
+
+[VFNMSUB231SD]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\363\1\xBF\75\120 FMA
+
+[VFNMSUB132SS]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\1\x9F\75\120 FMA
+
+[VFNMSUB213SS]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\1\xAF\75\120 FMA
+
+[VFNMSUB231SS]
+(Ch_Mop3, Ch_Rop2, Ch_Rop1)
+xmmreg,xmmreg,xmmrm \361\362\371\1\xBF\75\120 FMA
+
diff --git a/compiler/x86_64/aoptcpu.pas b/compiler/x86_64/aoptcpu.pas
index b11af7d1dc..65871df430 100644
--- a/compiler/x86_64/aoptcpu.pas
+++ b/compiler/x86_64/aoptcpu.pas
@@ -63,6 +63,94 @@ begin
end;
end;
+
+function MatchInstruction(const instr: tai; const op: TAsmOp; const opsize: topsizes): boolean;
+ begin
+ result :=
+ (instr.typ = ait_instruction) and
+ (taicpu(instr).opcode = op) and
+ ((opsize = []) or (taicpu(instr).opsize in opsize));
+ end;
+
+
+function MatchInstruction(const instr: tai; const op1,op2: TAsmOp; const opsize: topsizes): boolean;
+ begin
+ result :=
+ (instr.typ = ait_instruction) and
+ ((taicpu(instr).opcode = op1) or
+ (taicpu(instr).opcode = op2)
+ ) and
+ ((opsize = []) or (taicpu(instr).opsize in opsize));
+ end;
+
+
+function MatchInstruction(const instr: tai; const op1,op2,op3: TAsmOp; const opsize: topsizes): boolean;
+ begin
+ result :=
+ (instr.typ = ait_instruction) and
+ ((taicpu(instr).opcode = op1) or
+ (taicpu(instr).opcode = op2) or
+ (taicpu(instr).opcode = op3)
+ ) and
+ ((opsize = []) or (taicpu(instr).opsize in opsize));
+ end;
+
+
+function MatchOperand(const oper: TOper; const reg: TRegister): boolean; inline;
+ begin
+ result := (oper.typ = top_reg) and (oper.reg = reg);
+ end;
+
+
+function MatchOperand(const oper: TOper; const a: tcgint): boolean; inline;
+ begin
+ result := (oper.typ = top_const) and (oper.val = a);
+ end;
+
+function refsequal(const r1, r2: treference): boolean;
+ begin
+ refsequal :=
+ (r1.offset = r2.offset) and
+ (r1.segment = r2.segment) and (r1.base = r2.base) and
+ (r1.index = r2.index) and (r1.scalefactor = r2.scalefactor) and
+ (r1.symbol=r2.symbol) and (r1.refaddr = r2.refaddr) and
+ (r1.relsymbol = r2.relsymbol);
+ end;
+
+
+function MatchOperand(const oper1: TOper; const oper2: TOper): boolean; inline;
+ begin
+ result := oper1.typ = oper2.typ;
+
+ if result then
+ case oper1.typ of
+ top_const:
+ Result:=oper1.val = oper2.val;
+ top_reg:
+ Result:=oper1.reg = oper2.reg;
+ top_ref:
+ Result:=RefsEqual(oper1.ref^, oper2.ref^);
+ else
+ internalerror(2013102801);
+ end
+ end;
+
+
+function MatchReference(const ref : treference;base,index : TRegister) : Boolean;
+ begin
+ Result:=(ref.offset=0) and
+ (ref.scalefactor in [0,1]) and
+ (ref.segment=NR_NO) and
+ (ref.symbol=nil) and
+ (ref.relsymbol=nil) and
+ ((base=NR_INVALID) or
+ (ref.base=base)) and
+ ((index=NR_INVALID) or
+ (ref.index=index));
+ end;
+
+
+
function TCpuAsmOptimizer.PeepHoleOptPass1Cpu(var p: tai): boolean;
var
next1: tai;
@@ -99,7 +187,66 @@ begin
asml.remove(p);
p.Free;
p:=hp1;
- end;
+ end
+ else if (taicpu(p).oper[0]^.typ = top_const) and
+ (taicpu(p).oper[1]^.typ = top_reg) and
+ GetNextInstruction(p, hp1) and
+ MatchInstruction(hp1,A_MOVZX,[]) and
+ (taicpu(hp1).oper[0]^.typ = top_reg) and
+ MatchOperand(taicpu(p).oper[1]^,taicpu(hp1).oper[1]^) and
+ (getsubreg(taicpu(hp1).oper[0]^.reg)=getsubreg(taicpu(hp1).oper[1]^.reg)) and
+ (((taicpu(p).opsize=S_W) and
+ (taicpu(hp1).opsize=S_BW)) or
+ ((taicpu(p).opsize=S_L) and
+ (taicpu(hp1).opsize in [S_WL,S_BL])) or
+ ((taicpu(p).opsize=S_Q) and
+ (taicpu(hp1).opsize in [S_BQ,S_WQ,S_LQ]))
+ ) then
+ begin
+ if (((taicpu(hp1).opsize) in [S_BW,S_BL,S_BQ]) and
+ ((taicpu(p).oper[0]^.val and $ff)=taicpu(p).oper[0]^.val)) or
+ (((taicpu(hp1).opsize) in [S_WL,S_WQ]) and
+ ((taicpu(p).oper[0]^.val and $ffff)=taicpu(p).oper[0]^.val)) or
+ (((taicpu(hp1).opsize)=S_LQ) and
+ ((taicpu(p).oper[0]^.val and $ffffffff)=taicpu(p).oper[0]^.val)
+ ) then
+ begin
+ if (cs_asm_source in current_settings.globalswitches) then
+ asml.insertbefore(tai_comment.create(strpnew('PeepHole Optimization,AndMovzToAnd')),p);
+ asml.remove(hp1);
+ hp1.free;
+ end;
+ end
+ else if (taicpu(p).oper[0]^.typ = top_const) and
+ (taicpu(p).oper[1]^.typ = top_reg) and
+ GetNextInstruction(p, hp1) and
+ MatchInstruction(hp1,A_MOVSX,A_MOVSXD,[]) and
+ (taicpu(hp1).oper[0]^.typ = top_reg) and
+ MatchOperand(taicpu(p).oper[1]^,taicpu(hp1).oper[1]^) and
+ (getsupreg(taicpu(hp1).oper[0]^.reg)=getsupreg(taicpu(hp1).oper[1]^.reg)) and
+ (((taicpu(p).opsize=S_W) and
+ (taicpu(hp1).opsize=S_BW)) or
+ ((taicpu(p).opsize=S_L) and
+ (taicpu(hp1).opsize in [S_WL,S_BL])) or
+ ((taicpu(p).opsize=S_Q) and
+ (taicpu(hp1).opsize in [S_BQ,S_WQ,S_LQ]))
+ ) then
+ begin
+ if (((taicpu(hp1).opsize) in [S_BW,S_BL,S_BQ]) and
+ ((taicpu(p).oper[0]^.val and $7f)=taicpu(p).oper[0]^.val)) or
+ (((taicpu(hp1).opsize) in [S_WL,S_WQ]) and
+ ((taicpu(p).oper[0]^.val and $7fff)=taicpu(p).oper[0]^.val)) or
+ (((taicpu(hp1).opsize)=S_LQ) and
+ ((taicpu(p).oper[0]^.val and $7fffffff)=taicpu(p).oper[0]^.val)
+ ) then
+ begin
+ if (cs_asm_source in current_settings.globalswitches) then
+ asml.insertbefore(tai_comment.create(strpnew('PeepHole Optimization,AndMovsxToAnd')),p);
+ asml.remove(hp1);
+ hp1.free;
+ end;
+ end;
+
(* else
{change "and x, reg; jxx" to "test x, reg", if reg is deallocated before the
jump, but only if it's a conditional jump (PFV) }
@@ -134,6 +281,41 @@ begin
hp1.free;
end;
end
+ { Next instruction is also a MOV ? }
+ else if GetNextIntruction_p and
+ MatchInstruction(hp1,A_MOV,[taicpu(p).opsize]) then
+ begin
+ if (taicpu(hp1).oper[0]^.typ = taicpu(p).oper[1]^.typ) and
+ (taicpu(hp1).oper[1]^.typ = taicpu(p).oper[0]^.typ) then
+ {mov reg1, mem1 or mov mem1, reg1
+ mov mem2, reg2 mov reg2, mem2}
+ begin
+ if OpsEqual(taicpu(hp1).oper[1]^,taicpu(p).oper[0]^) then
+ {mov reg1, mem1 or mov mem1, reg1
+ mov mem2, reg1 mov reg2, mem1}
+ begin
+ if OpsEqual(taicpu(hp1).oper[0]^,taicpu(p).oper[1]^) then
+ { Removes the second statement from
+ mov reg1, mem1/reg2
+ mov mem1/reg2, reg1 }
+ begin
+ { if (taicpu(p).oper[0]^.typ = top_reg) then
+ AllocRegBetween(asmL,taicpu(p).oper[0]^.reg,p,hp1,usedregs); }
+ if (cs_asm_source in current_settings.globalswitches) then
+ asml.insertbefore(tai_comment.create(strpnew('PeepHole Optimization,MovMov2Mov1')),p);
+ asml.remove(hp1);
+ hp1.free;
+ end;
+ end
+ else if (taicpu(p).oper[1]^.typ=top_ref) and
+ OpsEqual(taicpu(hp1).oper[0]^,taicpu(p).oper[1]^) then
+ begin
+ taicpu(hp1).loadreg(0,taicpu(p).oper[0]^.reg);
+ if (cs_asm_source in current_settings.globalswitches) then
+ asml.insertbefore(tai_comment.create(strpnew('PeepHole Optimization,MovMov2MovMov1')),p);
+ end;
+ end
+ end
else if (taicpu(p).oper[1]^.typ = top_reg) and
GetNextIntruction_p and
(hp1.typ = ait_instruction) and
@@ -482,6 +664,32 @@ begin
end;
end;
end;
+ A_VDIVSD,
+ A_VDIVSS,
+ A_VSUBSD,
+ A_VSUBSS,
+ A_VMULSD,
+ A_VMULSS,
+ A_VADDSD,
+ A_VADDSS:
+ begin
+ if GetNextInstruction(p,hp1) and
+ { we mix single and double opperations here because we assume that the compiler
+ generates vmovapd only after double operations and vmovaps only after single operations }
+ MatchInstruction(hp1,A_VMOVAPD,A_VMOVAPS,[S_NO]) and
+ MatchOperand(taicpu(p).oper[2]^,taicpu(hp1).oper[0]^) and
+ (taicpu(hp1).oper[1]^.typ=top_reg) then
+ begin
+ CopyUsedRegs(TmpUsedRegs);
+ UpdateUsedRegs(TmpUsedRegs, tai(p.next));
+ If not(RegUsedAfterInstruction(taicpu(hp1).oper[0]^.reg,hp1,TmpUsedRegs)) then
+ begin
+ taicpu(p).loadoper(2,taicpu(hp1).oper[1]^);
+ asml.Remove(hp1);
+ hp1.Free;
+ end;
+ end;
+ end;
end;
end;
end;
diff --git a/compiler/x86_64/cpuinfo.pas b/compiler/x86_64/cpuinfo.pas
index 1a55c455e0..cbf64867c9 100644
--- a/compiler/x86_64/cpuinfo.pas
+++ b/compiler/x86_64/cpuinfo.pas
@@ -125,7 +125,9 @@ type
CPUX86_HAS_POPCNT,
CPUX86_HAS_AVXUNIT,
CPUX86_HAS_LZCNT,
- CPUX86_HAS_MOVBE
+ CPUX86_HAS_MOVBE,
+ CPUX86_HAS_FMA,
+ CPUX86_HAS_FMA4
);
const
@@ -134,7 +136,7 @@ type
{ Athlon64 } [CPUX86_HAS_SSEUNIT],
{ cpu_core_i } [CPUX86_HAS_SSEUNIT,CPUX86_HAS_POPCNT],
{ cpu_core_avx } [CPUX86_HAS_SSEUNIT,CPUX86_HAS_POPCNT,CPUX86_HAS_AVXUNIT],
- { cpu_core_avx2 } [CPUX86_HAS_SSEUNIT,CPUX86_HAS_POPCNT,CPUX86_HAS_AVXUNIT,CPUX86_HAS_BMI1,CPUX86_HAS_BMI2,CPUX86_HAS_LZCNT,CPUX86_HAS_MOVBE]
+ { cpu_core_avx2 } [CPUX86_HAS_SSEUNIT,CPUX86_HAS_POPCNT,CPUX86_HAS_AVXUNIT,CPUX86_HAS_BMI1,CPUX86_HAS_BMI2,CPUX86_HAS_LZCNT,CPUX86_HAS_MOVBE,CPUX86_HAS_FMA]
);
Implementation
diff --git a/compiler/x86_64/cpunode.pas b/compiler/x86_64/cpunode.pas
index 6dade470c3..b9ee0b9a1c 100644
--- a/compiler/x86_64/cpunode.pas
+++ b/compiler/x86_64/cpunode.pas
@@ -43,6 +43,8 @@ unit cpunode;
ncgset,
ncgopt,
ncgobjc,
+ { symtable }
+ symcpu,
{$ifndef llvm}
{ the cpu specific node units must be used after the generic ones to
get the correct class pointer }
diff --git a/compiler/x86_64/cpupara.pas b/compiler/x86_64/cpupara.pas
index fc8fb3cad1..34a76e8f61 100644
--- a/compiler/x86_64/cpupara.pas
+++ b/compiler/x86_64/cpupara.pas
@@ -1046,6 +1046,7 @@ unit cpupara;
i,
varalign,
paraalign : longint;
+ sym: tfieldvarsym;
begin
paraalign:=get_para_align(p.proccalloption);
{ Register parameters are assigned from left to right }
@@ -1053,6 +1054,16 @@ unit cpupara;
begin
hp:=tparavarsym(paras[i]);
paradef:=hp.vardef;
+ { on win64, if a record has only one field and that field is a
+ single or double, it has to be handled like a single/double }
+ if (target_info.system=system_x86_64_win64) and
+ ((paradef.typ=recorddef) {or
+ is_object(paradef)}) and
+ tabstractrecordsymtable(tabstractrecorddef(paradef).symtable).has_single_field(sym) and
+ (sym.vardef.typ=floatdef) and
+ (tfloatdef(sym.vardef).floattype in [s32real,s64real]) then
+ paradef:=sym.vardef;
+
pushaddr:=push_addr_param(hp.varspez,paradef,p.proccalloption);
if pushaddr then
begin
diff --git a/compiler/x86_64/nx64flw.pas b/compiler/x86_64/nx64flw.pas
index 3b1eac9380..ff2665ddac 100644
--- a/compiler/x86_64/nx64flw.pas
+++ b/compiler/x86_64/nx64flw.pas
@@ -323,22 +323,13 @@ procedure tx64tryfinallynode.pass_generate_code;
encode everything into a single scope record. }
if catch_frame then
begin
- flowcontrol:=[fc_inflowcontrol];
- secondpass(t1);
- { note 1: this is not a 'finally' block, no flow restrictions apply
- note 2: it contains autogenerated sequential code, flow away is impossible }
- if flowcontrol<>[fc_inflowcontrol] then
- CGMessage(cg_e_control_flow_outside_finally);
- if codegenerror then
- exit;
-
if (current_procinfo.procdef.proccalloption=pocall_safecall) then
begin
handle_safecall_exception;
cg.a_jmp_always(current_asmdata.CurrAsmList,endfinallylabel);
end
else
- cg.a_call_name(current_asmdata.CurrAsmList,'FPC_RERAISE_IMPLICIT',false);
+ InternalError(2014031601);
end;
flowcontrol:=[fc_inflowcontrol];
diff --git a/compiler/x86_64/symcpu.pas b/compiler/x86_64/symcpu.pas
new file mode 100644
index 0000000000..4e33d0ceb9
--- /dev/null
+++ b/compiler/x86_64/symcpu.pas
@@ -0,0 +1,211 @@
+{
+ Copyright (c) 2014 by Florian Klaempfl
+
+ Symbol table overrides for x86_64
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+ ****************************************************************************
+}
+unit symcpu;
+
+{$i fpcdefs.inc}
+
+interface
+
+uses
+ symtype,symdef,symsym,symx86;
+
+type
+ { defs }
+ tcpufiledef = class(tfiledef)
+ end;
+ tcpufiledefclass = class of tcpufiledef;
+
+ tcpuvariantdef = class(tvariantdef)
+ end;
+ tcpuvariantdefclass = class of tcpuvariantdef;
+
+ tcpuformaldef = class(tformaldef)
+ end;
+ tcpuformaldefclass = class of tcpuformaldef;
+
+ tcpuforwarddef = class(tforwarddef)
+ end;
+ tcpuforwarddefclass = class of tcpuforwarddef;
+
+ tcpuundefineddef = class(tundefineddef)
+ end;
+ tcpuundefineddefclass = class of tcpuundefineddef;
+
+ tcpuerrordef = class(terrordef)
+ end;
+ tcpuerrordefclass = class of tcpuerrordef;
+
+ tcpupointerdef = class(tx86pointerdef)
+ end;
+ tcpupointerdefclass = class of tcpupointerdef;
+
+ tcpurecorddef = class(trecorddef)
+ end;
+ tcpurecorddefclass = class of tcpurecorddef;
+
+ tcpuimplementedinterface = class(timplementedinterface)
+ end;
+ tcpuimplementedinterfaceclass = class of tcpuimplementedinterface;
+
+ tcpuobjectdef = class(tobjectdef)
+ end;
+ tcpuobjectdefclass = class of tcpuobjectdef;
+
+ tcpuclassrefdef = class(tclassrefdef)
+ end;
+ tcpuclassrefdefclass = class of tcpuclassrefdef;
+
+ tcpuarraydef = class(tarraydef)
+ end;
+ tcpuarraydefclass = class of tcpuarraydef;
+
+ tcpuorddef = class(torddef)
+ end;
+ tcpuorddefclass = class of tcpuorddef;
+
+ tcpufloatdef = class(tfloatdef)
+ end;
+ tcpufloatdefclass = class of tcpufloatdef;
+
+ tcpuprocvardef = class(tprocvardef)
+ end;
+ tcpuprocvardefclass = class of tcpuprocvardef;
+
+ tcpuprocdef = class(tprocdef)
+ end;
+ tcpuprocdefclass = class of tcpuprocdef;
+
+ tcpustringdef = class(tstringdef)
+ end;
+ tcpustringdefclass = class of tcpustringdef;
+
+ tcpuenumdef = class(tenumdef)
+ end;
+ tcpuenumdefclass = class of tcpuenumdef;
+
+ tcpusetdef = class(tsetdef)
+ end;
+ tcpusetdefclass = class of tcpusetdef;
+
+ { syms }
+ tcpulabelsym = class(tlabelsym)
+ end;
+ tcpulabelsymclass = class of tcpulabelsym;
+
+ tcpuunitsym = class(tunitsym)
+ end;
+ tcpuunitsymclass = class of tcpuunitsym;
+
+ tcpunamespacesym = class(tnamespacesym)
+ end;
+ tcpunamespacesymclass = class of tcpunamespacesym;
+
+ tcpuprocsym = class(tprocsym)
+ end;
+ tcpuprocsymclass = class of tcpuprocsym;
+
+ tcputypesym = class(ttypesym)
+ end;
+ tcpuypesymclass = class of tcputypesym;
+
+ tcpufieldvarsym = class(tfieldvarsym)
+ end;
+ tcpufieldvarsymclass = class of tcpufieldvarsym;
+
+ tcpulocalvarsym = class(tlocalvarsym)
+ end;
+ tcpulocalvarsymclass = class of tcpulocalvarsym;
+
+ tcpuparavarsym = class(tparavarsym)
+ end;
+ tcpuparavarsymclass = class of tcpuparavarsym;
+
+ tcpustaticvarsym = class(tstaticvarsym)
+ end;
+ tcpustaticvarsymclass = class of tcpustaticvarsym;
+
+ tcpuabsolutevarsym = class(tabsolutevarsym)
+ end;
+ tcpuabsolutevarsymclass = class of tcpuabsolutevarsym;
+
+ tcpupropertysym = class(tpropertysym)
+ end;
+ tcpupropertysymclass = class of tcpupropertysym;
+
+ tcpuconstsym = class(tconstsym)
+ end;
+ tcpuconstsymclass = class of tcpuconstsym;
+
+ tcpuenumsym = class(tenumsym)
+ end;
+ tcpuenumsymclass = class of tcpuenumsym;
+
+ tcpusyssym = class(tsyssym)
+ end;
+ tcpusyssymclass = class of tcpusyssym;
+
+
+const
+ pbestrealtype : ^tdef = @s80floattype;
+
+
+implementation
+
+begin
+ { used tdef classes }
+ cfiledef:=tcpufiledef;
+ cvariantdef:=tcpuvariantdef;
+ cformaldef:=tcpuformaldef;
+ cforwarddef:=tcpuforwarddef;
+ cundefineddef:=tcpuundefineddef;
+ cerrordef:=tcpuerrordef;
+ cpointerdef:=tcpupointerdef;
+ crecorddef:=tcpurecorddef;
+ cimplementedinterface:=tcpuimplementedinterface;
+ cobjectdef:=tcpuobjectdef;
+ cclassrefdef:=tcpuclassrefdef;
+ carraydef:=tcpuarraydef;
+ corddef:=tcpuorddef;
+ cfloatdef:=tcpufloatdef;
+ cprocvardef:=tcpuprocvardef;
+ cprocdef:=tcpuprocdef;
+ cstringdef:=tcpustringdef;
+ cenumdef:=tcpuenumdef;
+ csetdef:=tcpusetdef;
+
+ { used tsym classes }
+ clabelsym:=tcpulabelsym;
+ cunitsym:=tcpuunitsym;
+ cnamespacesym:=tcpunamespacesym;
+ cprocsym:=tcpuprocsym;
+ ctypesym:=tcputypesym;
+ cfieldvarsym:=tcpufieldvarsym;
+ clocalvarsym:=tcpulocalvarsym;
+ cparavarsym:=tcpuparavarsym;
+ cstaticvarsym:=tcpustaticvarsym;
+ cabsolutevarsym:=tcpuabsolutevarsym;
+ cpropertysym:=tcpupropertysym;
+ cconstsym:=tcpuconstsym;
+ cenumsym:=tcpuenumsym;
+ csyssym:=tcpusyssym;
+end.
+
diff --git a/compiler/x86_64/x8664ats.inc b/compiler/x86_64/x8664ats.inc
index 5a53788dd6..c0c039b318 100644
--- a/compiler/x86_64/x8664ats.inc
+++ b/compiler/x86_64/x8664ats.inc
@@ -964,5 +964,86 @@ attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
attsufNONE
);
diff --git a/compiler/x86_64/x8664att.inc b/compiler/x86_64/x8664att.inc
index ed2f7848a1..3611f09fd0 100644
--- a/compiler/x86_64/x8664att.inc
+++ b/compiler/x86_64/x8664att.inc
@@ -951,6 +951,26 @@
'sarx',
'shlx',
'shrx',
+'vbroadcasti128',
+'vextracti128',
+'vinserti128',
+'vpblendd',
+'vpbroadcastb',
+'vpbroadcastd',
+'vpbroadcastq',
+'vpbroadcastw',
+'vperm2i128',
+'vpermd',
+'vpermpd',
+'vpermps',
+'vpermq',
+'vpmaskmovd',
+'vpmaskmovq',
+'vpsllvd',
+'vpsllvq',
+'vpsravd',
+'vpsrlvd',
+'vpsrlvq',
'add4s',
'brkem',
'clr1',
@@ -964,5 +984,66 @@
'ror4',
'set1',
'sub4s',
-'test1'
+'test1',
+'vfmadd132pd',
+'vfmadd213pd',
+'vfmadd231pd',
+'vfmaddpd',
+'vfmadd132ps',
+'vfmadd213ps',
+'vfmadd231ps',
+'vfmadd132sd',
+'vfmadd213sd',
+'vfmadd231sd',
+'vfmadd132ss',
+'vfmadd213ss',
+'vfmadd231ss',
+'vfmaddsub132pd',
+'vfmaddsub213pd',
+'vfmaddsub231pd',
+'vfmaddsub132ps',
+'vfmaddsub213ps',
+'vfmaddsub231ps',
+'vfmsubadd132pd',
+'vfmsubadd213pd',
+'vfmsubadd231pd',
+'vfmsubadd132ps',
+'vfmsubadd213ps',
+'vfmsubadd231ps',
+'vfmsub132pd',
+'vfmsub213pd',
+'vfmsub231pd',
+'vfmsub132ps',
+'vfmsub213ps',
+'vfmsub231ps',
+'vfmsub132sd',
+'vfmsub213sd',
+'vfmsub231sd',
+'vfmsub132ss',
+'vfmsub213ss',
+'vfmsub231ss',
+'vfnmadd132pd',
+'vfnmadd213pd',
+'vfnmadd231pd',
+'vfnmadd132ps',
+'vfnmadd213ps',
+'vfnmadd231ps',
+'vfnmadd132sd',
+'vfnmadd213sd',
+'vfnmadd231sd',
+'vfnmadd132ss',
+'vfnmadd213ss',
+'vfnmadd231ss',
+'vfnmsub132pd',
+'vfnmsub213pd',
+'vfnmsub231pd',
+'vfnmsub132ps',
+'vfnmsub213ps',
+'vfnmsub231ps',
+'vfnmsub132sd',
+'vfnmsub213sd',
+'vfnmsub231sd',
+'vfnmsub132ss',
+'vfnmsub213ss',
+'vfnmsub231ss'
);
diff --git a/compiler/x86_64/x8664int.inc b/compiler/x86_64/x8664int.inc
index dc4ebb3dd2..5070c54d44 100644
--- a/compiler/x86_64/x8664int.inc
+++ b/compiler/x86_64/x8664int.inc
@@ -951,6 +951,26 @@
'sarx',
'shlx',
'shrx',
+'vbroadcasti128',
+'vextracti128',
+'vinserti128',
+'vpblendd',
+'vpbroadcastb',
+'vpbroadcastd',
+'vpbroadcastq',
+'vpbroadcastw',
+'vperm2i128',
+'vpermd',
+'vpermpd',
+'vpermps',
+'vpermq',
+'vpmaskmovd',
+'vpmaskmovq',
+'vpsllvd',
+'vpsllvq',
+'vpsravd',
+'vpsrlvd',
+'vpsrlvq',
'add4s',
'brkem',
'clr1',
@@ -964,5 +984,66 @@
'ror4',
'set1',
'sub4s',
-'test1'
+'test1',
+'vfmadd132pd',
+'vfmadd213pd',
+'vfmadd231pd',
+'vfmaddpd',
+'vfmadd132ps',
+'vfmadd213ps',
+'vfmadd231ps',
+'vfmadd132sd',
+'vfmadd213sd',
+'vfmadd231sd',
+'vfmadd132ss',
+'vfmadd213ss',
+'vfmadd231ss',
+'vfmaddsub132pd',
+'vfmaddsub213pd',
+'vfmaddsub231pd',
+'vfmaddsub132ps',
+'vfmaddsub213ps',
+'vfmaddsub231ps',
+'vfmsubadd132pd',
+'vfmsubadd213pd',
+'vfmsubadd231pd',
+'vfmsubadd132ps',
+'vfmsubadd213ps',
+'vfmsubadd231ps',
+'vfmsub132pd',
+'vfmsub213pd',
+'vfmsub231pd',
+'vfmsub132ps',
+'vfmsub213ps',
+'vfmsub231ps',
+'vfmsub132sd',
+'vfmsub213sd',
+'vfmsub231sd',
+'vfmsub132ss',
+'vfmsub213ss',
+'vfmsub231ss',
+'vfnmadd132pd',
+'vfnmadd213pd',
+'vfnmadd231pd',
+'vfnmadd132ps',
+'vfnmadd213ps',
+'vfnmadd231ps',
+'vfnmadd132sd',
+'vfnmadd213sd',
+'vfnmadd231sd',
+'vfnmadd132ss',
+'vfnmadd213ss',
+'vfnmadd231ss',
+'vfnmsub132pd',
+'vfnmsub213pd',
+'vfnmsub231pd',
+'vfnmsub132ps',
+'vfnmsub213ps',
+'vfnmsub231ps',
+'vfnmsub132sd',
+'vfnmsub213sd',
+'vfnmsub231sd',
+'vfnmsub132ss',
+'vfnmsub213ss',
+'vfnmsub231ss'
);
diff --git a/compiler/x86_64/x8664nop.inc b/compiler/x86_64/x8664nop.inc
index 24830769e7..803abd8da7 100644
--- a/compiler/x86_64/x8664nop.inc
+++ b/compiler/x86_64/x8664nop.inc
@@ -1,2 +1,2 @@
{ don't edit, this file is generated from x86ins.dat }
-1679;
+1947;
diff --git a/compiler/x86_64/x8664op.inc b/compiler/x86_64/x8664op.inc
index 48dbdd334d..4bdf54716e 100644
--- a/compiler/x86_64/x8664op.inc
+++ b/compiler/x86_64/x8664op.inc
@@ -951,6 +951,26 @@ A_RORX,
A_SARX,
A_SHLX,
A_SHRX,
+A_VBROADCASTI128,
+A_VEXTRACTI128,
+A_VINSERTI128,
+A_VPBLENDD,
+A_VPBROADCASTB,
+A_VPBROADCASTD,
+A_VPBROADCASTQ,
+A_VPBROADCASTW,
+A_VPERM2I128,
+A_VPERMD,
+A_VPERMPD,
+A_VPERMPS,
+A_VPERMQ,
+A_VPMASKMOVD,
+A_VPMASKMOVQ,
+A_VPSLLVD,
+A_VPSLLVQ,
+A_VPSRAVD,
+A_VPSRLVD,
+A_VPSRLVQ,
A_ADD4S,
A_BRKEM,
A_CLR1,
@@ -964,5 +984,66 @@ A_ROL4,
A_ROR4,
A_SET1,
A_SUB4S,
-A_TEST1
+A_TEST1,
+A_VFMADD132PD,
+A_VFMADD213PD,
+A_VFMADD231PD,
+A_VFMADDPD,
+A_VFMADD132PS,
+A_VFMADD213PS,
+A_VFMADD231PS,
+A_VFMADD132SD,
+A_VFMADD213SD,
+A_VFMADD231SD,
+A_VFMADD132SS,
+A_VFMADD213SS,
+A_VFMADD231SS,
+A_VFMADDSUB132PD,
+A_VFMADDSUB213PD,
+A_VFMADDSUB231PD,
+A_VFMADDSUB132PS,
+A_VFMADDSUB213PS,
+A_VFMADDSUB231PS,
+A_VFMSUBADD132PD,
+A_VFMSUBADD213PD,
+A_VFMSUBADD231PD,
+A_VFMSUBADD132PS,
+A_VFMSUBADD213PS,
+A_VFMSUBADD231PS,
+A_VFMSUB132PD,
+A_VFMSUB213PD,
+A_VFMSUB231PD,
+A_VFMSUB132PS,
+A_VFMSUB213PS,
+A_VFMSUB231PS,
+A_VFMSUB132SD,
+A_VFMSUB213SD,
+A_VFMSUB231SD,
+A_VFMSUB132SS,
+A_VFMSUB213SS,
+A_VFMSUB231SS,
+A_VFNMADD132PD,
+A_VFNMADD213PD,
+A_VFNMADD231PD,
+A_VFNMADD132PS,
+A_VFNMADD213PS,
+A_VFNMADD231PS,
+A_VFNMADD132SD,
+A_VFNMADD213SD,
+A_VFNMADD231SD,
+A_VFNMADD132SS,
+A_VFNMADD213SS,
+A_VFNMADD231SS,
+A_VFNMSUB132PD,
+A_VFNMSUB213PD,
+A_VFNMSUB231PD,
+A_VFNMSUB132PS,
+A_VFNMSUB213PS,
+A_VFNMSUB231PS,
+A_VFNMSUB132SD,
+A_VFNMSUB213SD,
+A_VFNMSUB231SD,
+A_VFNMSUB132SS,
+A_VFNMSUB213SS,
+A_VFNMSUB231SS
);
diff --git a/compiler/x86_64/x8664pro.inc b/compiler/x86_64/x8664pro.inc
index 47e1495c0d..ce6c618d3c 100644
--- a/compiler/x86_64/x8664pro.inc
+++ b/compiler/x86_64/x8664pro.inc
@@ -953,6 +953,26 @@
(Ch: (Ch_Rop1, Ch_Rop2, Ch_Wop3)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
@@ -964,5 +984,66 @@
(Ch: (Ch_Mop1, Ch_RWEAX, Ch_None)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
-(Ch: (Ch_WFlags, Ch_Rop1, Ch_Rop2))
+(Ch: (Ch_WFlags, Ch_Rop1, Ch_Rop2)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1)),
+(Ch: (Ch_Mop3, Ch_Rop2, Ch_Rop1))
);
diff --git a/compiler/x86_64/x8664tab.inc b/compiler/x86_64/x8664tab.inc
index cfd0430494..d23e1f00cf 100644
--- a/compiler/x86_64/x8664tab.inc
+++ b/compiler/x86_64/x8664tab.inc
@@ -8807,6 +8807,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VBROADCASTSD;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none);
+ code : #241#242#244#249#1#25#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VBROADCASTSS;
ops : 2;
optypes : (ot_ymmreg,ot_memory or ot_bits32,ot_none,ot_none);
@@ -8821,6 +8828,20 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VBROADCASTSS;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none);
+ code : #241#242#244#249#1#24#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VBROADCASTSS;
+ ops : 2;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_none,ot_none);
+ code : #241#242#249#1#24#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VCMPPD;
ops : 4;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8);
@@ -8921,7 +8942,7 @@
(
opcode : A_VCVTDQ2PD;
ops : 2;
- optypes : (ot_ymmreg,ot_ymmreg,ot_none,ot_none);
+ optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none);
code : #219#242#244#248#1#230#72;
flags : if_avx or if_sandybridge
),
@@ -9864,6 +9885,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VMOVNTDQA;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_memory or ot_bits256,ot_none,ot_none);
+ code : #241#242#244#249#1#42#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VMOVNTPD;
ops : 2;
optypes : (ot_memory or ot_bits256,ot_ymmreg,ot_none,ot_none);
@@ -10053,6 +10081,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VMPSADBW;
+ ops : 4;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8);
+ code : #241#242#244#250#1#66#61#80#23;
+ flags : if_avx2
+ ),
+ (
opcode : A_VMULPD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10137,6 +10172,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPABSB;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_ymmrm,ot_none,ot_none);
+ code : #241#242#244#249#1#28#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPABSD;
ops : 2;
optypes : (ot_xmmreg,ot_xmmrm,ot_none,ot_none);
@@ -10144,6 +10186,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPABSD;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_ymmrm,ot_none,ot_none);
+ code : #241#242#244#249#1#30#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPABSW;
ops : 2;
optypes : (ot_xmmreg,ot_xmmrm,ot_none,ot_none);
@@ -10151,6 +10200,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPABSW;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_ymmrm,ot_none,ot_none);
+ code : #241#242#244#249#1#29#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPACKSSDW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10158,6 +10214,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPACKSSDW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#107#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPACKSSWB;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10165,6 +10228,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPACKSSWB;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#99#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPACKUSDW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10172,6 +10242,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPACKUSDW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#43#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPACKUSWB;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10179,6 +10256,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPACKUSWB;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#103#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPADDB;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10186,6 +10270,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPADDB;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#252#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPADDD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10193,6 +10284,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPADDD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#254#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPADDQ;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10200,6 +10298,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPADDQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#212#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPADDSB;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10207,6 +10312,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPADDSB;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#236#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPADDSW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10214,6 +10326,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPADDSW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#237#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPADDUSB;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10221,6 +10340,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPADDUSB;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#220#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPADDUSW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10228,6 +10354,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPADDUSW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#221#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPADDW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10235,6 +10368,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPADDW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#253#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPALIGNR;
ops : 4;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8);
@@ -10242,6 +10382,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPALIGNR;
+ ops : 4;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8);
+ code : #241#242#244#250#1#15#61#80#23;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPAND;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10249,6 +10396,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPAND;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#219#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPANDN;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10256,6 +10410,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPANDN;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#223#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPAVGB;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10263,6 +10424,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPAVGB;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#224#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPAVGW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10270,6 +10438,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPAVGW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#227#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPBLENDVB;
ops : 4;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_xmmreg);
@@ -10277,6 +10452,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPBLENDVB;
+ ops : 4;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_ymmreg);
+ code : #241#242#244#250#1#76#61#80#247;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPBLENDW;
ops : 4;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8);
@@ -10284,6 +10466,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPBLENDW;
+ ops : 4;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8);
+ code : #241#242#244#250#1#14#61#80#23;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPCLMULQDQ;
ops : 4;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8);
@@ -10298,6 +10487,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPCMPEQB;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#116#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPCMPEQD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10305,6 +10501,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPCMPEQD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#118#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPCMPEQQ;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10312,6 +10515,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPCMPEQQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#41#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPCMPEQW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10319,6 +10529,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPCMPEQW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#117#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPCMPESTRI;
ops : 3;
optypes : (ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8,ot_none);
@@ -10340,6 +10557,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPCMPGTB;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#100#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPCMPGTD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10347,6 +10571,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPCMPGTD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#102#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPCMPGTQ;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10354,6 +10585,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPCMPGTQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#55#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPCMPGTW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10361,6 +10599,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPCMPGTW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#101#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPCMPISTRI;
ops : 3;
optypes : (ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8,ot_none);
@@ -10515,6 +10760,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPHADDD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#2#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPHADDSW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10522,6 +10774,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPHADDSW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#3#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPHADDW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10529,6 +10788,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPHADDW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#1#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPHMINPOSUW;
ops : 2;
optypes : (ot_xmmreg,ot_xmmrm,ot_none,ot_none);
@@ -10543,6 +10809,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPHSUBD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#6#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPHSUBSW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10550,6 +10823,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPHSUBSW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#7#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPHSUBW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10557,6 +10837,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPHSUBW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#5#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPINSRB;
ops : 4;
optypes : (ot_xmmreg,ot_xmmreg,ot_reg32,ot_immediate or ot_bits8);
@@ -10606,6 +10893,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMADDUBSW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#4#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMADDWD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10613,6 +10907,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMADDWD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#245#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMAXSB;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10620,6 +10921,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMAXSB;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#60#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMAXSD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10627,6 +10935,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMAXSD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#61#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMAXSW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10634,6 +10949,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMAXSW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#238#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMAXUB;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10641,6 +10963,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMAXUB;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#222#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMAXUD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10648,6 +10977,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMAXUD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#63#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMAXUW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10655,6 +10991,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMAXUW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#62#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMINSB;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10662,6 +11005,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMINSB;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#56#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMINSD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10669,6 +11019,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMINSD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#57#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMINSW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10676,6 +11033,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMINSW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#234#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMINUB;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10683,6 +11047,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMINUB;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#218#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMINUD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10690,6 +11061,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMINUD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#59#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMINUW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10697,6 +11075,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMINUW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#58#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMOVMSKB;
ops : 2;
optypes : (ot_reg64,ot_xmmreg,ot_none,ot_none);
@@ -10711,6 +11096,20 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMOVMSKB;
+ ops : 2;
+ optypes : (ot_reg32,ot_ymmreg,ot_none,ot_none);
+ code : #241#242#244#248#1#215#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPMOVMSKB;
+ ops : 2;
+ optypes : (ot_reg64,ot_ymmreg,ot_none,ot_none);
+ code : #241#242#244#248#1#215#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMOVSXBD;
ops : 2;
optypes : (ot_xmmreg,ot_memory or ot_bits32,ot_none,ot_none);
@@ -10725,6 +11124,20 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMOVSXBD;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none);
+ code : #241#242#244#249#1#33#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPMOVSXBD;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_memory or ot_bits64,ot_none,ot_none);
+ code : #241#242#244#249#1#33#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMOVSXBQ;
ops : 2;
optypes : (ot_xmmreg,ot_memory or ot_bits16,ot_none,ot_none);
@@ -10739,6 +11152,20 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMOVSXBQ;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_memory or ot_bits32,ot_none,ot_none);
+ code : #241#242#244#249#1#34#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPMOVSXBQ;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none);
+ code : #241#242#244#249#1#34#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMOVSXBW;
ops : 2;
optypes : (ot_xmmreg,ot_memory or ot_bits64,ot_none,ot_none);
@@ -10753,6 +11180,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMOVSXBW;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_xmmrm,ot_none,ot_none);
+ code : #241#242#244#249#1#32#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMOVSXDQ;
ops : 2;
optypes : (ot_xmmreg,ot_memory or ot_bits64,ot_none,ot_none);
@@ -10767,6 +11201,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMOVSXDQ;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_xmmrm,ot_none,ot_none);
+ code : #241#242#244#249#1#37#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMOVSXWD;
ops : 2;
optypes : (ot_xmmreg,ot_memory or ot_bits64,ot_none,ot_none);
@@ -10781,6 +11222,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMOVSXWD;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_xmmrm,ot_none,ot_none);
+ code : #241#242#244#249#1#35#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMOVSXWQ;
ops : 2;
optypes : (ot_xmmreg,ot_memory or ot_bits32,ot_none,ot_none);
@@ -10795,6 +11243,20 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMOVSXWQ;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_memory or ot_bits64,ot_none,ot_none);
+ code : #241#242#244#249#1#36#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPMOVSXWQ;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none);
+ code : #241#242#244#249#1#36#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMOVZXBD;
ops : 2;
optypes : (ot_xmmreg,ot_memory or ot_bits32,ot_none,ot_none);
@@ -10809,6 +11271,20 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMOVZXBD;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_memory or ot_bits64,ot_none,ot_none);
+ code : #241#242#244#249#1#49#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPMOVZXBD;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none);
+ code : #241#242#244#249#1#49#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMOVZXBQ;
ops : 2;
optypes : (ot_xmmreg,ot_memory or ot_bits16,ot_none,ot_none);
@@ -10823,6 +11299,20 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMOVZXBQ;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_memory or ot_bits32,ot_none,ot_none);
+ code : #241#242#244#249#1#50#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPMOVZXBQ;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none);
+ code : #241#242#244#249#1#50#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMOVZXBW;
ops : 2;
optypes : (ot_xmmreg,ot_memory or ot_bits64,ot_none,ot_none);
@@ -10837,6 +11327,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMOVZXBW;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_xmmrm,ot_none,ot_none);
+ code : #241#242#244#249#1#48#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMOVZXDQ;
ops : 2;
optypes : (ot_xmmreg,ot_memory or ot_bits64,ot_none,ot_none);
@@ -10851,6 +11348,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMOVZXDQ;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_xmmrm,ot_none,ot_none);
+ code : #241#242#244#249#1#53#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMOVZXWD;
ops : 2;
optypes : (ot_xmmreg,ot_memory or ot_bits64,ot_none,ot_none);
@@ -10865,6 +11369,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMOVZXWD;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_xmmrm,ot_none,ot_none);
+ code : #241#242#244#249#1#51#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMOVZXWQ;
ops : 2;
optypes : (ot_xmmreg,ot_memory or ot_bits32,ot_none,ot_none);
@@ -10879,6 +11390,20 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMOVZXWQ;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_memory or ot_bits64,ot_none,ot_none);
+ code : #241#242#244#249#1#52#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPMOVZXWQ;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none);
+ code : #241#242#244#249#1#52#72;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMULDQ;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10886,6 +11411,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMULDQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#40#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMULHRSW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10893,6 +11425,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMULHRSW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#11#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMULHUW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10900,6 +11439,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMULHUW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#228#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMULHW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10907,6 +11453,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMULHW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#229#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMULLD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10914,6 +11467,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMULLD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#64#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMULLW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10921,6 +11481,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMULLW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#213#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPMULUDQ;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10928,6 +11495,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPMULUDQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#244#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPOR;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10935,6 +11509,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPOR;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#235#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSADBW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10942,6 +11523,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSADBW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#246#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSHUFB;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10949,6 +11537,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSHUFB;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#0#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSHUFD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8,ot_none);
@@ -10956,6 +11551,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSHUFD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8,ot_none);
+ code : #241#242#244#248#1#112#72#22;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSHUFHW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8,ot_none);
@@ -10963,6 +11565,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSHUFHW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8,ot_none);
+ code : #219#242#244#248#1#112#72#22;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSHUFLW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8,ot_none);
@@ -10970,6 +11579,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSHUFLW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8,ot_none);
+ code : #220#242#244#248#1#112#72#22;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSIGNB;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10977,6 +11593,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSIGNB;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#8#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSIGND;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10984,6 +11607,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSIGND;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#10#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSIGNW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -10991,6 +11621,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSIGNW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#9#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSLLD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_bits8,ot_none);
@@ -11005,6 +11642,20 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSLLD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+ code : #241#242#244#248#1#114#60#142#22;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPSLLD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_xmmrm,ot_none);
+ code : #241#242#244#248#1#242#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSLLDQ;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_bits8,ot_none);
@@ -11012,6 +11663,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSLLDQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+ code : #241#242#244#248#1#115#60#143#22;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSLLQ;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -11026,6 +11684,20 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSLLQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_xmmrm,ot_none);
+ code : #241#242#244#248#1#243#61#80;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPSLLQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+ code : #241#242#244#248#1#115#60#142#22;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSLLW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_bits8,ot_none);
@@ -11040,6 +11712,20 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSLLW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+ code : #241#242#244#248#1#113#60#142#22;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPSLLW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_xmmrm,ot_none);
+ code : #241#242#244#248#1#241#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSRAD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_bits8,ot_none);
@@ -11054,6 +11740,20 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSRAD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+ code : #241#242#244#248#1#114#60#140#22;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPSRAD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_xmmrm,ot_none);
+ code : #241#242#244#248#1#226#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSRAW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_bits8,ot_none);
@@ -11068,6 +11768,20 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSRAW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+ code : #241#242#244#248#1#113#60#140#22;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPSRAW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_xmmrm,ot_none);
+ code : #241#242#244#248#1#225#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSRLD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_bits8,ot_none);
@@ -11082,6 +11796,20 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSRLD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+ code : #241#242#244#248#1#114#60#138#22;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPSRLD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_xmmrm,ot_none);
+ code : #241#242#244#248#1#210#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSRLDQ;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_bits8,ot_none);
@@ -11089,6 +11817,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSRLDQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+ code : #241#242#244#248#1#115#60#139#22;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSRLQ;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_bits8,ot_none);
@@ -11103,6 +11838,20 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSRLQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+ code : #241#242#244#248#1#115#60#138#22;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPSRLQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_xmmrm,ot_none);
+ code : #241#242#244#248#1#211#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSRLW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_bits8,ot_none);
@@ -11117,6 +11866,20 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSRLW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+ code : #241#242#244#248#1#113#60#138#22;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPSRLW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_xmmrm,ot_none);
+ code : #241#242#244#248#1#209#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSUBB;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -11124,6 +11887,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSUBB;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#248#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSUBD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -11131,6 +11901,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSUBD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#250#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSUBQ;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -11138,6 +11915,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSUBQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#251#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSUBSB;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -11145,6 +11929,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSUBSB;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#232#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSUBSW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -11152,6 +11943,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSUBSW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#233#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSUBUSB;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -11159,6 +11957,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSUBUSB;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#216#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSUBUSW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -11166,6 +11971,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSUBUSW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#217#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPSUBW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -11173,6 +11985,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPSUBW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#249#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPTEST;
ops : 2;
optypes : (ot_ymmreg,ot_ymmrm,ot_none,ot_none);
@@ -11194,6 +12013,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPUNPCKHBW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#104#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPUNPCKHDQ;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -11201,6 +12027,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPUNPCKHDQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#106#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPUNPCKHQDQ;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -11208,6 +12041,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPUNPCKHQDQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#109#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPUNPCKHWD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -11215,6 +12055,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPUNPCKHWD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#105#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPUNPCKLBW;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -11222,6 +12069,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPUNPCKLBW;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#96#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPUNPCKLDQ;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -11229,6 +12083,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPUNPCKLDQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#98#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPUNPCKLQDQ;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -11236,6 +12097,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPUNPCKLQDQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#108#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPUNPCKLWD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -11243,6 +12111,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPUNPCKLWD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#97#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VPXOR;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
@@ -11250,6 +12125,13 @@
flags : if_avx or if_sandybridge
),
(
+ opcode : A_VPXOR;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#248#1#239#61#80;
+ flags : if_avx2
+ ),
+ (
opcode : A_VRCPPS;
ops : 2;
optypes : (ot_xmmreg,ot_xmmrm,ot_none,ot_none);
@@ -11752,5 +12634,999 @@
optypes : (ot_reg64,ot_rm_gpr or ot_bits64,ot_reg64,ot_none);
code : #220#242#243#249#1#247#62#72;
flags : if_bmi2 or if_x86_64
+ ),
+ (
+ opcode : A_VBROADCASTI128;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_memory or ot_bits128,ot_none,ot_none);
+ code : #241#242#244#249#1#90#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VEXTRACTI128;
+ ops : 3;
+ optypes : (ot_xmmrm,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+ code : #241#242#244#250#1#57#65#22;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VINSERTI128;
+ ops : 4;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_xmmrm,ot_immediate or ot_bits8);
+ code : #241#242#244#250#1#56#61#80#23;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPBLENDD;
+ ops : 4;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8);
+ code : #241#242#244#250#1#2#61#80#23;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPBLENDD;
+ ops : 4;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8);
+ code : #241#242#250#1#2#61#80#23;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPBROADCASTB;
+ ops : 2;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_none,ot_none);
+ code : #241#242#249#1#120#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPBROADCASTB;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none);
+ code : #241#242#244#249#1#120#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPBROADCASTB;
+ ops : 2;
+ optypes : (ot_xmmreg,ot_memory or ot_bits8,ot_none,ot_none);
+ code : #241#242#249#1#120#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPBROADCASTB;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_memory or ot_bits8,ot_none,ot_none);
+ code : #241#242#244#249#1#120#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPBROADCASTD;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none);
+ code : #241#242#244#249#1#88#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPBROADCASTD;
+ ops : 2;
+ optypes : (ot_xmmreg,ot_memory or ot_bits32,ot_none,ot_none);
+ code : #241#242#249#1#88#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPBROADCASTD;
+ ops : 2;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_none,ot_none);
+ code : #241#242#249#1#88#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPBROADCASTD;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_memory or ot_bits32,ot_none,ot_none);
+ code : #241#242#244#249#1#88#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPBROADCASTQ;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_memory or ot_bits64,ot_none,ot_none);
+ code : #241#242#244#249#1#89#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPBROADCASTQ;
+ ops : 2;
+ optypes : (ot_xmmreg,ot_memory or ot_bits64,ot_none,ot_none);
+ code : #241#242#249#1#89#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPBROADCASTQ;
+ ops : 2;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_none,ot_none);
+ code : #241#242#249#1#89#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPBROADCASTQ;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none);
+ code : #241#242#244#249#1#89#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPBROADCASTW;
+ ops : 2;
+ optypes : (ot_xmmreg,ot_memory or ot_bits16,ot_none,ot_none);
+ code : #241#242#249#1#121#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPBROADCASTW;
+ ops : 2;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_none,ot_none);
+ code : #241#242#249#1#121#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPBROADCASTW;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_memory or ot_bits16,ot_none,ot_none);
+ code : #241#242#244#249#1#121#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPBROADCASTW;
+ ops : 2;
+ optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none);
+ code : #241#242#244#249#1#121#72;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPERM2I128;
+ ops : 4;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8);
+ code : #241#242#244#250#1#70#61#80#23;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPERMD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#54#61#80;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPERMPD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8,ot_none);
+ code : #241#242#243#244#250#1#1#72#22;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPERMPS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#22#61#80;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPERMQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8,ot_none);
+ code : #241#242#243#244#250#1#0#72#22;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPMASKMOVD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_memory or ot_bits128,ot_none);
+ code : #241#242#249#1#140#61#80;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPMASKMOVD;
+ ops : 3;
+ optypes : (ot_memory or ot_bits128,ot_xmmreg,ot_xmmreg,ot_none);
+ code : #241#242#249#1#142#61#66;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPMASKMOVD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_memory or ot_bits256,ot_none);
+ code : #241#242#244#249#1#140#61#80;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPMASKMOVD;
+ ops : 3;
+ optypes : (ot_memory or ot_bits256,ot_ymmreg,ot_ymmreg,ot_none);
+ code : #241#242#244#249#1#142#61#66;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPMASKMOVQ;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_memory or ot_bits128,ot_none);
+ code : #241#242#243#249#1#140#61#80;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPMASKMOVQ;
+ ops : 3;
+ optypes : (ot_memory or ot_bits128,ot_xmmreg,ot_xmmreg,ot_none);
+ code : #241#242#243#249#1#142#61#66;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPMASKMOVQ;
+ ops : 3;
+ optypes : (ot_memory or ot_bits256,ot_ymmreg,ot_ymmreg,ot_none);
+ code : #241#242#243#244#249#1#142#61#66;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPMASKMOVQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_memory or ot_bits256,ot_none);
+ code : #241#242#243#244#249#1#140#61#80;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPSLLVD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#71#61#80;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPSLLVD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#71#61#80;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPSLLVQ;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#243#249#1#71#61#80;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPSLLVQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#243#244#249#1#71#61#80;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPSRAVD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#70#61#80;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPSRAVD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#70#61#80;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPSRLVD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#69#61#80;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPSRLVD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#69#61#80;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPSRLVQ;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#243#244#249#1#69#61#80;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VPSRLVQ;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#243#249#1#69#61#80;
+ flags : if_avx2
+ ),
+ (
+ opcode : A_VFMADD132PD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#152#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADD132PD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#243#1#152#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADD213PD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#168#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADD213PD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#243#1#168#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADD231PD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#184#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADD231PD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#243#1#184#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADDPD;
+ ops : 4;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_xmmreg);
+ code : #241#242#250#1#105#61#80#247;
+ flags : if_fma4
+ ),
+ (
+ opcode : A_VFMADDPD;
+ ops : 4;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmreg,ot_xmmrm);
+ code : #241#242#250#243#1#105#61#88#246;
+ flags : if_fma4
+ ),
+ (
+ opcode : A_VFMADD132PS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#152#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADD132PS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#152#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADD213PS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#168#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADD213PS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#168#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADD231PS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#184#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADD231PS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#184#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADD132SD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#153#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADD213SD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#169#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADD231SD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#185#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADD132SS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#153#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADD213SS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#169#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADD231SS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#185#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADDSUB132PD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#150#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADDSUB132PD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#243#1#150#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADDSUB213PD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#166#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADDSUB213PD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#243#1#166#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADDSUB231PD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#182#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADDSUB231PD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#243#1#182#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADDSUB132PS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#150#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADDSUB132PS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#150#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADDSUB213PS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#166#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADDSUB213PS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#166#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADDSUB231PS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#182#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMADDSUB231PS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#182#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUBADD132PD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#151#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUBADD132PD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#243#1#151#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUBADD213PD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#167#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUBADD213PD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#243#1#167#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUBADD231PD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#183#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUBADD231PD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#243#1#183#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUBADD132PS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#151#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUBADD132PS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#151#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUBADD213PS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#167#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUBADD213PS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#167#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUBADD231PS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#183#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUBADD231PS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#183#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUB132PD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#154#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUB132PD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#243#1#154#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUB213PD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#170#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUB213PD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#243#1#170#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUB231PD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#186#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUB231PD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#243#1#186#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUB132PS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#154#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUB132PS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#154#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUB213PS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#170#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUB213PS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#170#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUB231PS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#186#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUB231PS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#186#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUB132SD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#155#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUB213SD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#171#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUB231SD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#187#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUB132SS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#155#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUB213SS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#171#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFMSUB231SS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#187#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMADD132PD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#156#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMADD132PD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#243#1#156#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMADD213PD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#172#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMADD213PD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#243#1#172#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMADD231PD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#188#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMADD231PD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#243#1#188#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMADD132PS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#156#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMADD132PS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#156#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMADD213PS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#172#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMADD213PS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#172#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMADD231PS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#188#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMADD231PS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#188#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMADD132SD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#157#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMADD213SD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#173#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMADD231SD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#189#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMADD132SS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#157#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMADD213SS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#173#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMADD231SS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#189#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMSUB132PD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#158#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMSUB132PD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#243#1#158#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMSUB213PD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#174#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMSUB213PD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#243#1#174#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMSUB231PD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#190#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMSUB231PD;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#243#1#190#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMSUB132PS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#158#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMSUB132PS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#158#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMSUB213PS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#174#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMSUB213PS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#174#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMSUB231PS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#190#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMSUB231PS;
+ ops : 3;
+ optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+ code : #241#242#244#249#1#190#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMSUB132SD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#159#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMSUB213SD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#175#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMSUB231SD;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#243#1#191#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMSUB132SS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#159#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMSUB213SS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#175#61#80;
+ flags : if_fma
+ ),
+ (
+ opcode : A_VFNMSUB231SS;
+ ops : 3;
+ optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+ code : #241#242#249#1#191#61#80;
+ flags : if_fma
)
);
diff --git a/ide/Makefile.fpc.fpcmake b/ide/Makefile.fpc.fpcmake
index 203fe6c4a2..3ab4ec31d8 100644
--- a/ide/Makefile.fpc.fpcmake
+++ b/ide/Makefile.fpc.fpcmake
@@ -66,6 +66,9 @@ endif
ifeq ($(OS_TARGET),netbsd)
neednostdlib=1
endif
+ifeq ($(OS_TARGET),aix)
+neednostdlib=1
+endif
ifdef needlinkparam
override SPECIALLINK=-Xe -k--allow-multiple-definition
@@ -80,6 +83,11 @@ endif
ifdef neednostdlib
override SPECIALLINK+=-Xd
endif
+
+ifeq ($(OS_TARGET),aix)
+override SPECIALLINK+=6fl/opt/freeware/lib -k-bbigtoc
+endif
+
# Try to find GDB library
# Look for a valid GDBLIBDIR environment variable
ifdef GDBLIBDIR
diff --git a/ide/fpmake.pp b/ide/fpmake.pp
index e08749b4b5..34594b201d 100644
--- a/ide/fpmake.pp
+++ b/ide/fpmake.pp
@@ -107,6 +107,11 @@ begin
end;
netbsd : P.Options.Add('-Xd');
linux : P.Options.Add('-Xd');
+ aix : begin
+ P.Options.Add('-Xd');
+ P.Options.Add('-Fl/opt/freeware/lib');
+ P.Options.Add('-k-bbigtoc');
+ end;
end; {case}
P.NeedLibc := true;
diff --git a/ide/fpmwnd.inc b/ide/fpmwnd.inc
index fdc9fb5e32..dce4085732 100644
--- a/ide/fpmwnd.inc
+++ b/ide/fpmwnd.inc
@@ -78,7 +78,7 @@ begin
hcCalcWindow : S:=PCalculator(P)^.GetTitle(MaxLen);
hcBrowserWindow: S:=PBrowserWindow(P)^.GetTitle(MaxLen);
hcCompilerMessagesWindow,
- hcMessagesWindow:S:=PMessagesWindow(P)^.GetTitle(MaxLen);
+ hcMessagesWindow:S:=PFPWindow(P)^.GetTitle(MaxLen);
hcGDBWindow,
hcDisassemblyWindow,
hcWatchesWindow,
diff --git a/ide/fpsymbol.pas b/ide/fpsymbol.pas
index e1bf8d8c62..67e7aebc25 100644
--- a/ide/fpsymbol.pas
+++ b/ide/fpsymbol.pas
@@ -551,11 +551,12 @@ begin
DisposeStr(St);
if assigned(Expr) then
begin
+ { avoid infinite recursion here }
+ GDBI:=Debugger^.RunCount;
p:=Debugger^.GetValue(Expr^);
St:=NewStr(GetPChar(p));
if assigned(p) then
StrDispose(p);
- GDBI:=Debugger^.RunCount;
end;
{$endif ndef NODEBUG}
{$endif BROWSERCOL}
diff --git a/ide/fpviews.pas b/ide/fpviews.pas
index 8918c41bdf..3319a882c4 100644
--- a/ide/fpviews.pas
+++ b/ide/fpviews.pas
@@ -954,10 +954,18 @@ end;
{$ifdef powerpc}
{$define USE_TasmCondFlag}
+ { powerpc only has A_B prefix }
+ const
+ CondAsmOps = 1;
+ CondAsmOpStr : array [0..CondAsmOps-1] of string[2] = ('b');
{$define Use_gas_op2str}
{$endif}
{$ifdef powerpc64}
{$define USE_TasmCondFlag}
+ { powerpc64 only has A_B prefix }
+ const
+ CondAsmOps = 1;
+ CondAsmOpStr : array [0..CondAsmOps-1] of string[2] = ('b');
{$define Use_gas_op2str}
{$endif}
{$ifdef i386}
@@ -4251,7 +4259,7 @@ begin
else
{$endif NODEBUG}
R2.Move(0,2);
- Insert(New(PStaticText, Init(R2, ^C'Copyright (C) 1998-2012 by')));
+ Insert(New(PStaticText, Init(R2, ^C'Copyright (C) 1998-2014 by')));
R2.Move(0,2);
Insert(New(PStaticText, Init(R2, ^C'B‚rczi G bor')));
R2.Move(0,1);
diff --git a/installer/install.dat b/installer/install.dat
index e0d36eeccb..17ab576884 100644
--- a/installer/install.dat
+++ b/installer/install.dat
@@ -93,6 +93,8 @@ package=ufcl-jsdos.zip[ufcjsdos.zip],Free Component Library (FCL)-Javascript sup
package=uhermesdos.zip[uhermdos.zip],Port of Hermes graphics library
# Dos 33
package=ufppkgdos.zip[ufppkdos.zip],Units for FPPkg packaging support
+# Dos 34
+package=ufcl-sounddos.zip[ufsnddos.zip],Free Component Library (FCL)-sound files
#
# Win32 packages
@@ -220,7 +222,8 @@ package=units-fcl-res.i386-win32.zip,Free Component Library (FCL)-resources
package=units-bzip2.i386-win32.zip,Units for bzip2 decompression
# Win32-2 30
package=units-fcl-js.i386-win32.zip,Free Component Library (FCL)-Javascript support
-
+# Win32-2 31
+package=units-fcl-sound.i386-win32.zip,Free Component Library (FCL)-sound files
#
# OS/2 packages
@@ -278,6 +281,8 @@ package=ufcl-xmlos2.zip[ufclxos2.zip],Free Component Library (FCL)-XML
package=uhermesos2.zip[uhermos2.zip],Port of Hermes graphics library
# OS/2 22
package=ufppkgos2.zip[ufppkos2.zip],Units for FPPkg packaging support
+# OS/2 23
+package=uopensslos2.zip[uosslos2.zip],OpenSSL interface units
#
# OS/2 packages 2nd part
@@ -334,6 +339,8 @@ package=ufcl-resos2.zip[ufcleos2.zip],Free Component Library (FCL)-resources
package=ubzip2os2.zip[ubz2os2.zip],Units for bzip2 decompression
# OS/2-2 25
package=ufcl-jsos2.zip[ufcjsos2.zip],Free Component Library (FCL)-Javascript support
+# OS/2-2 26
+package=ufcl-soundos2.zip[ufsndos2.zip],Free Component Library (FCL)-sound files
@@ -394,6 +401,8 @@ package=ufcl-xmlemx.zip[ufclxemx.zip],Free Component Library (FCL)-XML
package=uhermesemx.zip[uhermemx.zip],Port of Hermes graphics library
# EMX 22
package=ufppkgemx.zip[ufppkemx.zip],Units for FPPkg packaging support
+# EMX 23
+package=uopensslemx.zip[uosslemx.zip],OpenSSL interface units
#
# EMX packages 2nd part
@@ -450,6 +459,8 @@ package=ufcl-resemx.zip[ufcleemx.zip],Free Component Library (FCL)-resources
package=ubzip2emx.zip[ubz2emx.zip],Units for bzip2 decompression
# EMX-2 25
package=ufcl-jsemx.zip[ufcjsemx.zip],Free Component Library (FCL)-Javascript support
+# EMX-2 26
+package=ufcl-soundemx.zip[ufsndemx.zip],Free Component Library (FCL)-sound files
#
@@ -615,6 +626,8 @@ package=oggvorbis.source.zip[uoggvsrc.zip],OGG Vorbis interface units sources
package=openal.source.zip[uoalsrc.zip],OpenAL interface units sources
# Source-3 20
package=openssl.source.zip[uosslsrc.zip],OpenSSL interface units sources
+# Source-3 21
+package=fcl-sound.source.zip[ufsndsrc.zip],Free Component Library (FCL)-sound files sources
defaultcfg=
#
diff --git a/packages/amunits/src/otherlibs/mui.pas b/packages/amunits/src/otherlibs/mui.pas
index d66624b441..81ecba9896 100644
--- a/packages/amunits/src/otherlibs/mui.pas
+++ b/packages/amunits/src/otherlibs/mui.pas
@@ -3493,7 +3493,7 @@ PROCEDURE MUI_RejectIDCMP(obj : pObject_; flags : ULONG);
PROCEDURE MUI_Redraw(obj : pObject_; flags : ULONG);
FUNCTION MUI_CreateCustomClass(base : pLibrary; supername : pChar; supermcc : pMUI_CustomClass; datasize : LONGINT; dispatcher : POINTER) : pMUI_CustomClass;
FUNCTION MUI_DeleteCustomClass(mcc : pMUI_CustomClass) : BOOLEAN;
-FUNCTION MUI_MakeObjectA(typ: LONGINT; params : pULONG) : pULONG;
+FUNCTION MUI_MakeObjectA(typ: LONGINT; params : pULONG) : pObject_;
FUNCTION MUI_Layout(obj : pObject_; l : LONGINT; t : LONGINT; w : LONGINT; h : LONGINT; flags : ULONG) : BOOLEAN;
FUNCTION MUI_ObtainPen(mri : pMUI_RenderInfo; spec : pMUI_PenSpec; flags : ULONG) : LONGINT;
PROCEDURE MUI_ReleasePen(mri : pMUI_RenderInfo; pen : LONGINT);
diff --git a/packages/amunits/src/utilunits/linklist.pas b/packages/amunits/src/utilunits/linklist.pas
index 1ffbee3fc2..4e7fbe8a83 100644
--- a/packages/amunits/src/utilunits/linklist.pas
+++ b/packages/amunits/src/utilunits/linklist.pas
@@ -759,9 +759,9 @@ begin
{ I don't want end of lines here (for use with amiga listviews)
just change this if you need newline characters.
}
- Read(Inf, buffer);
+ Read(Inf, buf);
tempnode := AddNewNode(thelist,buffer);
- Readln(inf, buffer);
+ Readln(inf, buf);
end;
CLose(Inf);
FileToList := true;
diff --git a/packages/dblib/src/dblib.pp b/packages/dblib/src/dblib.pp
index 2beafd689f..098a10bfe1 100644
--- a/packages/dblib/src/dblib.pp
+++ b/packages/dblib/src/dblib.pp
@@ -69,26 +69,26 @@ const
DBTDS_72 = 10; // Microsoft SQL Server 2005
DBTDS_73 = 11; // Microsoft SQL Server 2008
- //from sqlfront.h , sybdb.h for freetds
+ //from sqlfront.h , sybdb.h for FreeTDS
DBSETHOST=1;
DBSETUSER=2;
- DBSETPWD=3;
- DBSETAPP={$IFDEF freetds}5{$ELSE}4{$ENDIF};
+ DBSETPWD =3;
+ DBSETAPP ={$IFDEF freetds}5{$ELSE}4{$ENDIF};
{$IFDEF freetds}
- DBSETHID= 4;
- DBSETBCP= 6;
- DBSETNATLANG= 7;
- DBSETNOSHORT= 8;
- DBSETHIER= 9;
- DBSETCHARSET= 10;
- DBSETPACKET= 11;
- DBSETENCRYPT= 12;
- DBSETLABELED= 13;
- DBSETDBNAME= 14;
- {$ELSE}
- DBSETID=5;
- DBSETLANG=6;
- DBSETSECURE=7;
+ DBSETHID = 4;
+ DBSETBCP = 6;
+ DBSETNATLANG= 7;
+ DBSETNOSHORT= 8;
+ DBSETHIER = 9;
+ DBSETCHARSET= 10;
+ DBSETPACKET = 11;
+ DBSETENCRYPT= 12;
+ DBSETLABELED= 13;
+ DBSETDBNAME = 14;
+ {$ELSE}
+ DBSETID = 5;
+ DBSETLANG = 6;
+ DBSETSECURE = 7;
DBSET_LOGINTIME=10;
DBSETFALLBACK=12;
{$ENDIF}
@@ -184,6 +184,7 @@ type
ULONG=longword;
// DB-Library datatypes
+ DBBOOL=byte; // unsigned char
DBCHAR=shortint;
DBBIT=byte;
DBTINYINT=byte;
@@ -313,6 +314,8 @@ var
function dbiscount(dbproc:PDBPROCESS):BOOL; cdecl; external DBLIBDLL;
function dbcancel(dbproc:PDBPROCESS):RETCODE; cdecl; external DBLIBDLL;
function dbcanquery(dbproc:PDBPROCESS):RETCODE; cdecl; external DBLIBDLL;
+ function dbhasretstat(dbproc:PDBPROCESS):DBBOOL; cdecl; external DBLIBDLL;
+ function dbretstatus(dbproc:PDBPROCESS):DBINT; cdecl; external DBLIBDLL;
procedure dbfreelogin(login:PLOGINREC); cdecl; external DBLIBDLL {$IFDEF freetds}name 'dbloginfree'{$ENDIF};
procedure dbexit(); cdecl; external DBLIBDLL;
{$IFDEF ntwdblib}
@@ -359,6 +362,8 @@ var
dbiscount: function(dbproc:PDBPROCESS):BOOL; cdecl;
dbcancel: function(dbproc:PDBPROCESS):RETCODE; cdecl;
dbcanquery: function(dbproc:PDBPROCESS):RETCODE; cdecl;
+ dbhasretstat: function(dbproc:PDBPROCESS):DBBOOL; cdecl;
+ dbretstatus: function(dbproc:PDBPROCESS):DBINT; cdecl;
dbexit: procedure(); cdecl;
dbfreelogin: procedure(login:PLOGINREC); cdecl;
{$IFDEF ntwdblib}
@@ -453,6 +458,8 @@ begin
pointer(dbiscount) := GetProcedureAddress(DBLibLibraryHandle,'dbiscount');
pointer(dbcancel) := GetProcedureAddress(DBLibLibraryHandle,'dbcancel');
pointer(dbcanquery) := GetProcedureAddress(DBLibLibraryHandle,'dbcanquery');
+ pointer(dbhasretstat) := GetProcedureAddress(DBLibLibraryHandle,'dbhasretstat');
+ pointer(dbretstatus) := GetProcedureAddress(DBLibLibraryHandle,'dbretstatus');
pointer(dbexit) := GetProcedureAddress(DBLibLibraryHandle,'dbexit');
pointer(dbfreelogin) := GetProcedureAddress(DBLibLibraryHandle,{$IFDEF freetds}'dbloginfree'{$ELSE}'dbfreelogin'{$ENDIF});
pointer(dbclose) := GetProcedureAddress(DBLibLibraryHandle,'dbclose');
diff --git a/packages/fcl-base/src/fpmimetypes.pp b/packages/fcl-base/src/fpmimetypes.pp
index 0e20bb6aff..2cabe4ca76 100644
--- a/packages/fcl-base/src/fpmimetypes.pp
+++ b/packages/fcl-base/src/fpmimetypes.pp
@@ -28,13 +28,12 @@ Type
TMimeType = Class(TObject)
private
FExtensions: String;
- FExtentions: String;
FMimeType: String;
Public
Constructor Create(Const AMimeType,AExtensions : String);
Procedure MergeExtensions(AExtensions : String);
Property MimeType : String Read FMimeType Write FMimeType;
- Property Extensions : String Read FExtensions Write FExtentions;
+ Property Extensions : String Read FExtensions Write FExtensions;
end;
{ TFPMimeTypes }
diff --git a/packages/fcl-db/examples/dbftool.lpr b/packages/fcl-db/examples/dbftool.lpr
index 3eaa1f63b6..a6327ab3c8 100644
--- a/packages/fcl-db/examples/dbftool.lpr
+++ b/packages/fcl-db/examples/dbftool.lpr
@@ -261,21 +261,30 @@ type
end;
end;
- procedure PrintRecord(DBf: TDBf; RecordNumber: integer);
- // Prints contents of a record to screen
+ procedure PrintRecords(DBf: TDBf);
+ // Prints contents of available records to screen
var
i: integer;
+ RecordCount: integer;
begin
- writeln('Record ' + IntToStr(RecordNumber));
- for i := 0 to DBf.Fields.Count - 1 do
+ Dbf.First;
+ RecordCount:=0;
+ while not (Dbf.EOF) do
begin
- if DBF.fields[i].IsNull then
- writeln('Field ', DBf.Fields[i].FieldName, ' is ***NULL***')
- else
- if DBF.Fields[i].DataType in [ftVarBytes, ftBytes] then
- writeln('Field ', DBF.Fields[i].FieldName, ' has value: binary ' + BinFieldToHex(DBF.Fields[i]))
- else
- writeln('Field ', DBf.Fields[i].FieldName, ' has value: ' + DBf.fields[i].AsString);
+ RecordCount := RecordCount + 1;
+ writeln('Record ' + IntToStr(RecordCount));
+ for i := 0 to DBf.Fields.Count - 1 do
+ begin
+ if DBF.fields[i].IsNull then
+ writeln('Field ', DBf.Fields[i].FieldName, ' is ***NULL***')
+ else
+ if DBF.Fields[i].DataType in [ftVarBytes, ftBytes] then
+ writeln('Field ', DBF.Fields[i].FieldName, ' has value: binary ' + BinFieldToHex(DBF.Fields[i]))
+ else
+ writeln('Field ', DBf.Fields[i].FieldName, ' has value: ' + DBf.fields[i].AsString);
+ end;
+ DBF.Next;
+ writeln('');
end;
end;
@@ -415,8 +424,7 @@ type
ErrorMsg: string;
FileNo: integer;
MyDbf: TDbf;
- RecCount: integer;
- TableLevel: integer; //todo: use it
+ TableLevel: integer;
begin
// quick check parameters
ErrorMsg := CheckOptions('h', 'createdemo exportformat: help tablelevel:');
@@ -485,14 +493,7 @@ type
writeln('Database tablelevel: ' + IntToStr(MyDbf.TableLevel));
writeln('Database codepage: ' + IntToStr(MyDBF.CodePage));
- RecCount := 1;
- while not (MyDbf.EOF) do
- begin
- PrintRecord(MyDBF, RecCount);
- MyDBF.Next;
- RecCount := RecCount + 1;
- writeln('');
- end;
+ PrintRecords(MyDBF);
if HasOption('exportformat') then
begin
diff --git a/packages/fcl-db/examples/sqlite3loadlib.lpr b/packages/fcl-db/examples/sqlite3loadlib.lpr
new file mode 100644
index 0000000000..dce5e10d57
--- /dev/null
+++ b/packages/fcl-db/examples/sqlite3loadlib.lpr
@@ -0,0 +1,60 @@
+program sqlite3loadlib;
+
+{$mode objfpc}{$H+}
+
+uses
+ {$IFDEF UNIX}{$IFDEF UseCThreads}
+ cthreads,
+ {$ENDIF}{$ENDIF}
+ Classes, sysutils,
+ sqldb,
+ sqldblib, sqlite3conn;
+
+var
+ LibLoader: TSQLDBLibraryLoader;
+ Conn: TSQlite3Connection;
+ Tran: TSQLTransaction;
+ Q: TSQLQuery;
+ Existed: boolean;
+begin
+ LibLoader:=TSQLDBLibraryLoader.Create(nil);
+ try
+ LibLoader.ConnectionType:='SQLite3';
+ LibLoader.LibraryName:='d:\auxinst\sqlite\sqlite3.dll';
+ LibLoader.Enabled := true;
+ LibLoader.LoadLibrary;
+ finally
+ LibLoader.Free;
+ end;
+
+ Conn:=TSQlite3Connection.create(nil);
+ try
+ Tran:=TSQLTransaction.create(nil);
+ Q:=TSQLQuery.Create(nil);
+ Conn.DatabaseName:='test.sqlite';
+ existed:=fileexists(conn.databasename);
+ Conn.Transaction:=Tran;
+ Q.DataBase:=Conn;
+ Conn.Open;
+ Tran.StartTransaction;
+ if not(existed) then
+ begin
+ // create test table
+ Conn.ExecuteDirect('create table test (id integer, name varchar(255))');
+ end;
+ Q.SQL.Text:='select id,name from test ';
+ Q.Open;
+ Q.Last; //force recordcount update
+ writeln('recordcount: '+inttostr(q.RecordCount));
+ Tran.Commit;
+ Q.Close;
+ Conn.Close;
+ finally
+ Q.Free;
+ Tran.Free;
+ Conn.Free;
+ //LibLoader.Free;
+ end;
+ writeln('Program complete. Press a key to continue.');
+ readln;
+end.
diff --git a/packages/fcl-db/fpmake.pp b/packages/fcl-db/fpmake.pp
index be49247b94..398be1ca4b 100644
--- a/packages/fcl-db/fpmake.pp
+++ b/packages/fcl-db/fpmake.pp
@@ -69,6 +69,7 @@ begin
P.Dependencies.Add('fcl-base');
P.Dependencies.Add('fcl-xml');
P.Dependencies.Add('rtl-objpas');
+ P.Dependencies.Add('rtl-extra'); // clocale
P.Dependencies.Add('ibase', SqldbConnectionOSes);
P.Dependencies.Add('mysql', SqldbConnectionOSes);
P.Dependencies.Add('odbc', SqldbConnectionOSes);
diff --git a/packages/fcl-db/src/base/bufdataset.pas b/packages/fcl-db/src/base/bufdataset.pas
index 642d521410..2f484fcbb8 100644
--- a/packages/fcl-db/src/base/bufdataset.pas
+++ b/packages/fcl-db/src/base/bufdataset.pas
@@ -100,15 +100,14 @@ type
end;
TRecordsUpdateBuffer = array of TRecUpdateBuffer;
- TCompareFunc = function(subValue, aValue: pointer; options: TLocateOptions): int64;
+ TCompareFunc = function(subValue, aValue: pointer; size: integer; options: TLocateOptions): int64;
TDBCompareRec = record
- Comparefunc : TCompareFunc;
- Off1,Off2 : PtrInt;
- FieldInd1,
- FieldInd2 : longint;
- NullBOff1,
- NullBOff2 : PtrInt;
+ CompareFunc : TCompareFunc;
+ Off : PtrInt;
+ NullBOff : PtrInt;
+ FieldInd : longint;
+ Size : integer;
Options : TLocateOptions;
Desc : Boolean;
end;
@@ -525,6 +524,7 @@ type
function GetCanModify: Boolean; override;
function GetRecord(Buffer: TRecordBuffer; GetMode: TGetMode; DoCheck: Boolean): TGetResult; override;
procedure DoBeforeClose; override;
+ procedure InternalInitFieldDefs; override;
procedure InternalOpen; override;
procedure InternalClose; override;
function GetRecordSize: Word; override;
@@ -681,7 +681,7 @@ begin
end;
end;
-function DBCompareText(subValue, aValue: pointer; options: TLocateOptions): LargeInt;
+function DBCompareText(subValue, aValue: pointer; size: integer; options: TLocateOptions): LargeInt;
begin
if [loCaseInsensitive,loPartialKey]=options then
Result := AnsiStrLIComp(pchar(subValue),pchar(aValue),length(pchar(subValue)))
@@ -693,7 +693,7 @@ begin
Result := AnsiCompareStr(pchar(subValue),pchar(aValue));
end;
-function DBCompareWideText(subValue, aValue: pointer; options: TLocateOptions): LargeInt;
+function DBCompareWideText(subValue, aValue: pointer; size: integer; options: TLocateOptions): LargeInt;
begin
if [loCaseInsensitive,loPartialKey]=options then
Result := WideCompareText(pwidechar(subValue),LeftStr(pwidechar(aValue), Length(pwidechar(subValue))))
@@ -705,25 +705,25 @@ begin
Result := WideCompareStr(pwidechar(subValue),pwidechar(aValue));
end;
-function DBCompareByte(subValue, aValue: pointer; options: TLocateOptions): LargeInt;
+function DBCompareByte(subValue, aValue: pointer; size: integer; options: TLocateOptions): LargeInt;
begin
Result := PByte(subValue)^-PByte(aValue)^;
end;
-function DBCompareSmallInt(subValue, aValue: pointer; options: TLocateOptions): LargeInt;
+function DBCompareSmallInt(subValue, aValue: pointer; size: integer; options: TLocateOptions): LargeInt;
begin
Result := PSmallInt(subValue)^-PSmallInt(aValue)^;
end;
-function DBCompareInt(subValue, aValue: pointer; options: TLocateOptions): LargeInt;
+function DBCompareInt(subValue, aValue: pointer; size: integer; options: TLocateOptions): LargeInt;
begin
Result := PInteger(subValue)^-PInteger(aValue)^;
end;
-function DBCompareLargeInt(subValue, aValue: pointer; options: TLocateOptions): LargeInt;
+function DBCompareLargeInt(subValue, aValue: pointer; size: integer; options: TLocateOptions): LargeInt;
begin
// A simple subtraction doesn't work, since it could be that the result
@@ -736,13 +736,13 @@ begin
result := 0;
end;
-function DBCompareWord(subValue, aValue: pointer; options: TLocateOptions): LargeInt;
+function DBCompareWord(subValue, aValue: pointer; size: integer; options: TLocateOptions): LargeInt;
begin
Result := PWord(subValue)^-PWord(aValue)^;
end;
-function DBCompareQWord(subValue, aValue: pointer; options: TLocateOptions): LargeInt;
+function DBCompareQWord(subValue, aValue: pointer; size: integer; options: TLocateOptions): LargeInt;
begin
// A simple subtraction doesn't work, since it could be that the result
@@ -755,7 +755,7 @@ begin
result := 0;
end;
-function DBCompareDouble(subValue, aValue: pointer; options: TLocateOptions): LargeInt;
+function DBCompareDouble(subValue, aValue: pointer; size: integer; options: TLocateOptions): LargeInt;
begin
// A simple subtraction doesn't work, since it could be that the result
// doesn't fit into a LargeInt
@@ -767,11 +767,31 @@ begin
result := 0;
end;
-function DBCompareBCD(subValue, aValue: pointer; options: TLocateOptions): LargeInt;
+function DBCompareBCD(subValue, aValue: pointer; size: integer; options: TLocateOptions): LargeInt;
begin
result:=BCDCompare(PBCD(subValue)^, PBCD(aValue)^);
end;
+function DBCompareBytes(subValue, aValue: pointer; size: integer; options: TLocateOptions): LargeInt;
+begin
+ Result := CompareByte(subValue^, aValue^, size);
+end;
+
+function DBCompareVarBytes(subValue, aValue: pointer; size: integer; options: TLocateOptions): LargeInt;
+var len1, len2: LongInt;
+begin
+ len1 := PWord(subValue)^;
+ len2 := PWord(aValue)^;
+ inc(subValue, sizeof(Word));
+ inc(aValue, sizeof(Word));
+ if len1 > len2 then
+ Result := CompareByte(subValue^, aValue^, len2)
+ else
+ Result := CompareByte(subValue^, aValue^, len1);
+ if Result = 0 then
+ Result := len1 - len2;
+end;
+
procedure unSetFieldIsNull(NullMask : pbyte;x : longint); //inline;
begin
NullMask[x div 8] := (NullMask[x div 8]) and not (1 shl (x mod 8));
@@ -793,16 +813,16 @@ var IndexFieldNr : Integer;
begin
for IndexFieldNr:=0 to length(ADBCompareRecs)-1 do with ADBCompareRecs[IndexFieldNr] do
begin
- IsNull1:=GetFieldIsNull(rec1+NullBOff1,FieldInd1);
- IsNull2:=GetFieldIsNull(rec2+NullBOff2,FieldInd2);
+ IsNull1:=GetFieldIsNull(rec1+NullBOff,FieldInd);
+ IsNull2:=GetFieldIsNull(rec2+NullBOff,FieldInd);
if IsNull1 and IsNull2 then
- result := 0
+ Result := 0
else if IsNull1 then
- result := -1
+ Result := -1
else if IsNull2 then
- result := 1
+ Result := 1
else
- Result := Comparefunc(Rec1+Off1,Rec2+Off2,Options);
+ Result := CompareFunc(Rec1+Off, Rec2+Off, Size, Options);
if Result <> 0 then
begin
@@ -1116,7 +1136,7 @@ var
begin
CheckInactive;
For I:=0 to Length(FIndexes)-1 do
- FreeAndNil(Findexes[I]);
+ FreeAndNil(FIndexes[I]);
SetLength(FIndexes,0);
FIndexesCount:=0;
end;
@@ -1185,22 +1205,24 @@ begin
FillByte((Buffer+RecordSize)^,CalcFieldsSize,0);
end;
+procedure TCustomBufDataset.InternalInitFieldDefs;
+begin
+ if FileName<>'' then
+ begin
+ IntLoadFieldDefsFromFile;
+ FreeAndNil(FDatasetReader);
+ FreeAndNil(FFileStream);
+ end;
+end;
+
procedure TCustomBufDataset.InternalOpen;
var IndexNr : integer;
i : integer;
begin
- if not Assigned(FDatasetReader) and (FileName<>'') then
- begin
- FFileStream := TFileStream.Create(FileName,fmOpenRead);
- FDatasetReader := GetPacketReader(dfAny, FFileStream);
- end;
- if assigned(FDatasetReader) then
- begin
- FReadFromFile := True;
- IntLoadFielddefsFromFile;
- end;
+ if assigned(FDatasetReader) or (FileName<>'') then
+ IntLoadFieldDefsFromFile;
// This checks if the dataset is actually created (by calling CreateDataset,
// or reading from a stream in some other way implemented by a descendent)
@@ -1244,6 +1266,13 @@ begin
if assigned(FDatasetReader) then IntLoadRecordsFromFile;
end;
+procedure TCustomBufDataset.DoBeforeClose;
+begin
+ inherited DoBeforeClose;
+ if FFileName<>'' then
+ SaveToFile(FFileName);
+end;
+
procedure TCustomBufDataset.InternalClose;
var r : integer;
@@ -1252,6 +1281,8 @@ var r : integer;
begin
FOpen:=False;
+ FReadFromFile:=False;
+
if FIndexesCount>0 then with FIndexes[0] do if IsInitialized then
begin
iGetResult:=ScrollFirst;
@@ -1295,7 +1326,6 @@ begin
if FAutoIncValue>-1 then FAutoIncValue:=1;
if assigned(FParser) then FreeAndNil(FParser);
- FReadFromFile:=false;
end;
procedure TCustomBufDataset.InternalFirst;
@@ -1328,7 +1358,10 @@ end;
function TBufIndex.CompareBookmarks(const ABookmark1, ABookmark2: PBufBookmark): boolean;
begin
- Result := (ABookmark1^.BookmarkData=ABookmark2^.BookmarkData);
+ if assigned(ABookmark1) and assigned(ABookmark2) then
+ Result := (ABookmark1^.BookmarkData=ABookmark2^.BookmarkData)
+ else
+ Result := False;
end;
function TBufIndex.GetRecord(ABookmark: PBufBookmark; GetMode: TGetMode): TGetResult;
@@ -1707,13 +1740,6 @@ begin
until Acceptable;
end;
-procedure TCustomBufDataset.DoBeforeClose;
-begin
- inherited DoBeforeClose;
- if FFileName<>'' then
- SaveToFile(FFileName);
-end;
-
function TCustomBufDataset.GetActiveRecordUpdateBuffer : boolean;
var ABookmark : TBufBookmark;
@@ -1735,30 +1761,38 @@ begin
AField := TField(AFields[i]);
case AField.DataType of
- ftString, ftFixedChar : ACompareRec.Comparefunc := @DBCompareText;
- ftWideString, ftFixedWideChar: ACompareRec.Comparefunc := @DBCompareWideText;
- ftSmallint : ACompareRec.Comparefunc := @DBCompareSmallInt;
- ftInteger, ftBCD, ftAutoInc : ACompareRec.Comparefunc :=
- @DBCompareInt;
- ftWord : ACompareRec.Comparefunc := @DBCompareWord;
- ftBoolean : ACompareRec.Comparefunc := @DBCompareByte;
- ftFloat, ftCurrency : ACompareRec.Comparefunc := @DBCompareDouble;
- ftDateTime, ftDate, ftTime : ACompareRec.Comparefunc :=
- @DBCompareDouble;
- ftLargeint : ACompareRec.Comparefunc := @DBCompareLargeInt;
- ftFmtBCD : ACompareRec.Comparefunc := @DBCompareBCD;
+ ftString, ftFixedChar, ftGuid:
+ ACompareRec.CompareFunc := @DBCompareText;
+ ftWideString, ftFixedWideChar:
+ ACompareRec.CompareFunc := @DBCompareWideText;
+ ftSmallint:
+ ACompareRec.CompareFunc := @DBCompareSmallInt;
+ ftInteger, ftAutoInc:
+ ACompareRec.CompareFunc := @DBCompareInt;
+ ftLargeint, ftBCD:
+ ACompareRec.CompareFunc := @DBCompareLargeInt;
+ ftWord:
+ ACompareRec.CompareFunc := @DBCompareWord;
+ ftBoolean:
+ ACompareRec.CompareFunc := @DBCompareByte;
+ ftDate, ftTime, ftDateTime,
+ ftFloat, ftCurrency:
+ ACompareRec.CompareFunc := @DBCompareDouble;
+ ftFmtBCD:
+ ACompareRec.CompareFunc := @DBCompareBCD;
+ ftVarBytes:
+ ACompareRec.CompareFunc := @DBCompareVarBytes;
+ ftBytes:
+ ACompareRec.CompareFunc := @DBCompareBytes;
else
DatabaseErrorFmt(SErrIndexBasedOnInvField, [AField.FieldName,Fieldtypenames[AField.DataType]]);
end;
- ACompareRec.Off1:=BufferOffset + FFieldBufPositions[AField.FieldNo-1];
- ACompareRec.Off2:=ACompareRec.Off1;
-
- ACompareRec.FieldInd1:=AField.FieldNo-1;
- ACompareRec.FieldInd2:=ACompareRec.FieldInd1;
+ ACompareRec.Off:=BufferOffset + FFieldBufPositions[AField.FieldNo-1];
+ ACompareRec.NullBOff:=BufferOffset;
- ACompareRec.NullBOff1:=BufferOffset;
- ACompareRec.NullBOff2:=ACompareRec.NullBOff1;
+ ACompareRec.FieldInd:=AField.FieldNo-1;
+ ACompareRec.Size:=GetFieldSize(FieldDefs[ACompareRec.FieldInd]);
ACompareRec.Desc := ixDescending in AIndexOptions;
if assigned(ADescFields) then
@@ -2084,7 +2118,8 @@ end;
function TCustomBufDataset.GetFieldData(Field: TField; Buffer: Pointer): Boolean;
-var CurrBuff : TRecordBuffer;
+var
+ CurrBuff : TRecordBuffer;
begin
Result := False;
@@ -2102,7 +2137,7 @@ begin
else
CurrBuff := GetCurrentBuffer;
- if not assigned(CurrBuff) then Exit;
+ if not assigned(CurrBuff) then Exit; //Null value
If Field.FieldNo > 0 then // If =-1, then calculated/lookup field or =0 unbound field
begin
@@ -2140,7 +2175,7 @@ var CurrBuff : pointer;
begin
if not (State in dsWriteModes) then
- DatabaseError(SNotEditing, Self);
+ DatabaseErrorFmt(SNotEditing, [Name], Self);
CurrBuff := GetCurrentBuffer;
If Field.FieldNo > 0 then // If =-1, then calculated/lookup field or =0 unbound field
begin
@@ -2418,7 +2453,7 @@ procedure TCustomBufDataset.InternalCancel;
Var i : integer;
begin
- if assigned(FUpdateBlobBuffers) then for i:=0 to length(FUpdateBlobBuffers)-1 do
+ if assigned(FUpdateBlobBuffers) then for i:=0 to high(FUpdateBlobBuffers) do
if assigned(FUpdateBlobBuffers[i]) and (FUpdateBlobBuffers[i]^.FieldNo>0) then
FreeBlobBuffer(FUpdateBlobBuffers[i]);
end;
@@ -2427,26 +2462,14 @@ procedure TCustomBufDataset.InternalPost;
Var ABuff : TRecordBuffer;
i : integer;
- bufblob : TBufBlobField;
- NullMask : pbyte;
ABookmark : PBufBookmark;
begin
inherited InternalPost;
- if assigned(FUpdateBlobBuffers) then for i:=0 to length(FUpdateBlobBuffers)-1 do
+ if assigned(FUpdateBlobBuffers) then for i:=0 to high(FUpdateBlobBuffers) do
if assigned(FUpdateBlobBuffers[i]) and (FUpdateBlobBuffers[i]^.FieldNo>0) then
- begin
- bufblob.BlobBuffer := FUpdateBlobBuffers[i];
- NullMask := PByte(ActiveBuffer);
-
- if bufblob.BlobBuffer^.Size = 0 then
- SetFieldIsNull(NullMask, bufblob.BlobBuffer^.FieldNo-1)
- else
- unSetFieldIsNull(NullMask, bufblob.BlobBuffer^.FieldNo-1);
-
- bufblob.BlobBuffer^.FieldNo := -1;
- end;
+ FUpdateBlobBuffers[i]^.FieldNo := -1;
if State = dsInsert then
begin
@@ -2760,8 +2783,11 @@ begin
else
FBlobBuffer^.OrgBufID := -1;
bufblob.BlobBuffer := FBlobBuffer;
- // redirect pointer in current record buffer to new write blob buffer
+
CurrBuff := GetCurrentBuffer;
+ // unset null flag for blob field
+ unSetFieldIsNull(PByte(CurrBuff), Field.FieldNo-1);
+ // redirect pointer in current record buffer to new write blob buffer
inc(CurrBuff, FDataSet.FFieldBufPositions[Field.FieldNo-1]);
Move(bufblob, CurrBuff^, FDataSet.GetFieldSize(FDataSet.FieldDefs[Field.FieldNo-1]));
FModified := True;
@@ -2773,11 +2799,16 @@ begin
if FModified then
begin
// if TBufBlobStream was requested, but no data was written, then Size = 0;
- // used by TBlobField.Clear, so in this case set Field to null in InternalPost
+ // used by TBlobField.Clear, so in this case set Field to null
//FField.Modified := True; // should be set to True, but TBlobField.Modified is never reset
if not (FDataSet.State in [dsFilter, dsCalcFields, dsNewValue]) then
+ begin
+ if FBlobBuffer^.Size = 0 then // empty blob = IsNull
+ // blob stream should be destroyed while DataSet is in write state
+ SetFieldIsNull(PByte(FDataSet.GetCurrentBuffer), FField.FieldNo-1);
FDataSet.DataEvent(deFieldChange, PtrInt(FField));
+ end;
end;
inherited Destroy;
end;
@@ -2798,7 +2829,7 @@ begin
else if Mode = bmWrite then
begin
if not (State in [dsEdit, dsInsert, dsFilter, dsCalcFields]) then
- DatabaseErrorFmt(SNotEditing,[Name],self);
+ DatabaseErrorFmt(SNotEditing, [Name], Self);
if Field.ReadOnly and not (State in [dsSetKey, dsFilter]) then
DatabaseErrorFmt(SReadOnlyField, [Field.DisplayName]);
@@ -2976,7 +3007,7 @@ procedure TCustomBufDataset.CreateDataset;
var AStoreFileName: string;
begin
CheckInactive;
- if ((FieldCount=0) or (FieldDefs.Count=0)) then
+ if ((Fields.Count=0) or (FieldDefs.Count=0)) then
begin
if (FieldDefs.Count>0) then
CreateFields
@@ -2989,7 +3020,7 @@ begin
raise Exception.Create(SErrNoFieldsDefined);
FAutoIncValue:=1;
end;
- // When a FileName is set, do not read from this file
+ // When a FileName is set, do not read from this file; we want empty dataset
AStoreFileName:=FFileName;
FFileName := '';
try
@@ -3007,7 +3038,9 @@ end;
function TCustomBufDataset.CompareBookmarks(Bookmark1, Bookmark2: TBookmark
): Longint;
begin
- if Assigned(FCurrentIndex) and FCurrentIndex.CompareBookmarks(pointer(Bookmark1),pointer(Bookmark2)) then
+ if not assigned(Bookmark1) or not assigned(Bookmark2) then
+ Result := 0
+ else if Assigned(FCurrentIndex) and FCurrentIndex.CompareBookmarks(pointer(Bookmark1),pointer(Bookmark2)) then
Result := 0
else
Result := -1;
@@ -3016,6 +3049,13 @@ end;
procedure TCustomBufDataset.IntLoadFieldDefsFromFile;
begin
+ FReadFromFile := True;
+ if not assigned(FDatasetReader) then
+ begin
+ FFileStream := TFileStream.Create(FileName, fmOpenRead);
+ FDatasetReader := GetPacketReader(dfAny, FFileStream);
+ end;
+
FieldDefs.Clear;
FDatasetReader.LoadFieldDefs(FAutoIncValue);
if DefaultFields then
diff --git a/packages/fcl-db/src/base/dataset.inc b/packages/fcl-db/src/base/dataset.inc
index a7350959db..31beabb0db 100644
--- a/packages/fcl-db/src/base/dataset.inc
+++ b/packages/fcl-db/src/base/dataset.inc
@@ -220,7 +220,7 @@ begin
If DataType<>ftUnknown then
begin
{$ifdef DSDebug}
- Writeln('About to create field',FieldDefs.Items[i].Name);
+ Writeln('About to create field ',FieldDefs.Items[i].Name);
{$endif}
CreateField(self);
end;
@@ -955,8 +955,8 @@ procedure TDataSet.OpenCursor(InfoQuery: Boolean);
begin
if InfoQuery then
- InternalInitfieldDefs
- else if state <> dsOpening then
+ InternalInitFieldDefs
+ else if State <> dsOpening then
DoInternalOpen;
end;
@@ -1065,6 +1065,16 @@ begin
FIsUniDirectional := Value;
end;
+class function TDataSet.FieldDefsClass: TFieldDefsClass;
+begin
+ Result:=TFieldDefs;
+end;
+
+class function TDataSet.FieldsClass: TFieldsClass;
+begin
+ Result:=TFields;
+end;
+
procedure TDataSet.SetActive(Value: Boolean);
begin
@@ -1195,18 +1205,18 @@ begin
Writeln (' Filling memory :',(Value+1-FBufferCount)*SizeOf(TRecordBuffer));
{$endif}
inc(FBufferCount); // Cause FBuffers[FBufferCount] is already allocated
- FillChar(FBuffers[FBufferCount],(Value+1-FBufferCount)*SizeOF(TRecordBuffer),#0);
+ FillChar(FBuffers[FBufferCount],(Value+1-FBufferCount)*SizeOf(TRecordBuffer),#0);
{$ifdef dsdebug}
- Writeln (' Filled memory :');
+ Writeln (' Filled memory');
{$endif}
Try
{$ifdef dsdebug}
- Writeln (' Assigning buffers :',(Value)*SizeOf(TRecordBuffer));
+ Writeln (' Assigning buffers : ',(Value)*SizeOf(TRecordBuffer));
{$endif}
For I:=FBufferCount to Value do
FBuffers[i]:=AllocRecordBuffer;
{$ifdef dsdebug}
- Writeln (' Assigned buffers ',FBufferCount,' :',(Value)*SizeOf(TRecordBuffer));
+ Writeln (' Assigned buffers (FBufferCount:',FBufferCount,') : ',(Value)*SizeOf(TRecordBuffer));
{$endif}
except
I:=FBufferCount;
@@ -1269,7 +1279,7 @@ begin
If FCurrentRecord<>Index then
begin
{$ifdef DSdebug}
- Writeln ('Setting current record to',index);
+ Writeln ('Setting current record to: ',index);
{$endif}
if not FIsUniDirectional then Case GetBookMarkFlag(FBuffers[Index]) of
bfCurrent : InternalSetToRecord(FBuffers[Index]);
@@ -1383,7 +1393,7 @@ begin
end;
end;
-function TDataSet.Tempbuffer: TRecordBuffer;
+function TDataSet.TempBuffer: TRecordBuffer;
begin
Result := FBuffers[FRecordCount];
@@ -1425,7 +1435,7 @@ function TDataSet.ActiveBuffer: TRecordBuffer;
begin
{$ifdef dsdebug}
- Writeln ('Active buffer requested. Returning:',ActiveRecord);
+ Writeln ('Active buffer requested. Returning record number:',ActiveRecord);
{$endif}
Result:=FBuffers[FActiveRecord];
end;
@@ -1933,7 +1943,7 @@ Var
begin
Result:=0;
{$ifdef dsdebug}
- Writeln('Scrolling forward :',Distance);
+ Writeln('Scrolling forward : ',Distance);
Writeln('Active buffer : ',FActiveRecord);
Writeln('RecordCount : ',FRecordCount);
WriteLn('BufferCount : ',FBufferCount);
@@ -1969,7 +1979,7 @@ Var
CheckBiDirectional;
Result:=0;
{$ifdef dsdebug}
- Writeln('Scrolling backward:',Abs(Distance));
+ Writeln('Scrolling backward : ',Abs(Distance));
Writeln('Active buffer : ',FActiveRecord);
Writeln('RecordCunt : ',FRecordCount);
WriteLn('BufferCount : ',FBufferCount);
@@ -2276,7 +2286,7 @@ begin
FBuffers[0]:=TempBuf;
end;
-function TDataSet.GetFieldValues(const fieldname: string): Variant;
+function TDataSet.GetFieldValues(const FieldName: string): Variant;
var i: Integer;
FieldList: TList;
@@ -2295,7 +2305,7 @@ begin
end;
end;
-procedure TDataSet.SetFieldValues(const fieldname: string; Value: Variant);
+procedure TDataSet.SetFieldValues(const FieldName: string; Value: Variant);
var
i, l, h : Integer;
@@ -2463,16 +2473,6 @@ begin
DatabaseError('Provider support not available', Self);
end;
-class function TDataSet.FieldDefsClass: TFieldDefsClass;
-begin
- Result:=TFieldDefs;
-end;
-
-class function TDataSet.FieldsClass: TFieldsClass;
-begin
- Result:=TFields;
-end;
-
function TDataSet.PSUpdateRecord(UpdateKind: TUpdateKind; Delta: TDataSet
): Boolean;
begin
diff --git a/packages/fcl-db/src/base/datasource.inc b/packages/fcl-db/src/base/datasource.inc
index d0414b7569..c63afb518b 100644
--- a/packages/fcl-db/src/base/datasource.inc
+++ b/packages/fcl-db/src/base/datasource.inc
@@ -463,6 +463,8 @@ Var
DS : TDataset;
F : TField;
I : Integer;
+ P : TParam;
+
begin
FN:='';
@@ -472,13 +474,17 @@ begin
F:=Nil;
For I:=0 to FParams.Count-1 do
begin
- If Assigned(DS) then
- F:=DS.FindField(FParams[i].Name);
- If (Not Assigned(DS)) or (not DS.Active) or (F<>Nil) then
+ P:=FParams[i];
+ if not P.Bound then
begin
- If (FN<>'') then
- FN:=FN+';';
- FN:=FN+FParams[i].Name;
+ If Assigned(DS) then
+ F:=DS.FindField(P.Name);
+ If (Not Assigned(DS)) or (not DS.Active) or (F<>Nil) then
+ begin
+ If (FN<>'') then
+ FN:=FN+';';
+ FN:=FN+P.Name;
+ end;
end;
end;
end;
diff --git a/packages/fcl-db/src/base/db.pas b/packages/fcl-db/src/base/db.pas
index 943b249ff9..df30266e22 100644
--- a/packages/fcl-db/src/base/db.pas
+++ b/packages/fcl-db/src/base/db.pas
@@ -1,6 +1,6 @@
{
This file is part of the Free Pascal run time library.
- Copyright (c) 1999-2000 by Michael Van Canneyt, member of the
+ Copyright (c) 1999-2014 by Michael Van Canneyt, member of the
Free Pascal development team
@@ -100,13 +100,8 @@ type
TFieldClass = class of TField;
-{
- TFieldType = (ftUnknown, ftString, ftSmallint, ftInteger, ftWord,
- ftBoolean, ftFloat, ftDate, ftTime, ftDateTime,
- ftBytes, ftVarBytes, ftAutoInc, ftBlob, ftMemo, ftGraphic,
- ftFmtMemo, ftParadoxOle, ftDBaseOle, ftTypedBinary, ftCursor);
-}
-
+ // Data type for field.
+ // The order is determined by Delphi compatibility
TFieldType = (ftUnknown, ftString, ftSmallint, ftInteger, ftWord,
ftBoolean, ftFloat, ftCurrency, ftBCD, ftDate, ftTime, ftDateTime,
ftBytes, ftVarBytes, ftAutoInc, ftBlob, ftMemo, ftGraphic, ftFmtMemo,
@@ -115,7 +110,7 @@ type
ftDataSet, ftOraBlob, ftOraClob, ftVariant, ftInterface,
ftIDispatch, ftGuid, ftTimeStamp, ftFMTBcd, ftFixedWideChar, ftWideMemo);
-{ Part of DBCommon, but temporary defined here (bug 8206) }
+{ Part of DBCommon, but temporarily defined here (bug 8206) }
TFieldMap = array[TFieldType] of Byte;
@@ -133,7 +128,7 @@ type
TFieldAttribute = (faHiddenCol, faReadonly, faRequired, faLink, faUnNamed, faFixed);
TFieldAttributes = set of TFieldAttribute;
- { TNamedItem }
+{ TNamedItem }
TNamedItem = class(TCollectionItem)
private
@@ -147,7 +142,7 @@ type
property Name : string read FName write SetDisplayName;
end;
- { TDefCollection }
+{ TDefCollection }
TDefCollection = class(TOwnedCollection)
private
@@ -164,7 +159,7 @@ type
property Updated: boolean read FUpdated write FUpdated;
end;
- { TFieldDef }
+{ TFieldDef }
TFieldDef = class(TNamedItem)
Private
@@ -199,6 +194,7 @@ type
property Size: Integer read FSize write SetSize;
end;
TFieldDefClass = Class of TFieldDef;
+
{ TFieldDefs }
TFieldDefs = class(TDefCollection)
@@ -211,7 +207,7 @@ type
public
constructor Create(ADataSet: TDataSet);
// destructor Destroy; override;
- Function Add(const AName: string; ADataType: TFieldType; ASize: Word; ARequired: Boolean; AFieldNum : Integer) : TFieldDef; overload;
+ Function Add(const AName: string; ADataType: TFieldType; ASize: Word; ARequired: Boolean; AFieldNo : Integer) : TFieldDef; overload;
procedure Add(const AName: string; ADataType: TFieldType; ASize: Word; ARequired: Boolean); overload;
procedure Add(const AName: string; ADataType: TFieldType; ASize: Word); overload;
procedure Add(const AName: string; ADataType: TFieldType); overload;
@@ -245,7 +241,7 @@ type
Value: Variant;
end;
- { TLookupList }
+{ TLookupList }
TLookupList = class(TObject)
private
@@ -260,7 +256,7 @@ type
procedure ValuesToStrings(AStrings: TStrings);
end;
- { TField }
+{ TField }
TField = class(TComponent)
private
@@ -512,8 +508,8 @@ type
property Value: WideString read GetAsWideString write SetAsWideString;
end;
-
{ TNumericField }
+
TNumericField = class(TField)
Private
FDisplayFormat : String;
@@ -860,14 +856,21 @@ type
{ TBlobField }
TBlobStreamMode = (bmRead, bmWrite, bmReadWrite);
- TBlobType = ftBlob..ftWideMemo;
+ // This type is needed for compatibility. While it should contain only blob
+ // types, it actually does not.
+ // Instead of this, please use ftBlobTypes
+ TBlobType = ftBlob..ftWideMemo deprecated
+ 'Warning: Does not contain BLOB types. Please use ftBlobTypes.';
TBlobField = class(TField)
private
- FBlobType : TBlobType;
FModified : Boolean;
FTransliterate : Boolean;
Function GetBlobStream (Mode : TBlobStreamMode) : TStream;
+ // Wrapper that retrieves FDataType as a TBlobType
+ function GetBlobType: TBlobType;
+ // Wrapper that calls SetFieldtype
+ procedure SetBlobType(AValue: TBlobType);
protected
procedure FreeBuffers; override;
function GetAsBytes: TBytes; override;
@@ -896,7 +899,7 @@ type
property Value: string read GetAsString write SetAsString;
property Transliterate: Boolean read FTransliterate write FTransliterate;
published
- property BlobType: TBlobType read FBlobType write FBlobType;
+ property BlobType: TBlobType read GetBlobType write SetBlobType;
property Size default 0;
end;
@@ -1116,7 +1119,7 @@ type
end;
TFieldsClass = Class of TFields;
- { TParam }
+{ TParam }
TBlobData = AnsiString; // Delphi defines it as alias to TBytes
@@ -1158,6 +1161,7 @@ type
Function GetDisplayName: string; override;
Function GetIsNull: Boolean;
Function IsEqual(AValue: TParam): Boolean;
+ Procedure SetAsBCD(const AValue: Currency);
Procedure SetAsBlob(const AValue: TBlobData);
Procedure SetAsBoolean(AValue: Boolean);
Procedure SetAsCurrency(const AValue: Currency);
@@ -1194,6 +1198,7 @@ type
Procedure SetData(Buffer: Pointer);
Property AsBlob : TBlobData read GetAsString write SetAsBlob;
Property AsBoolean : Boolean read GetAsBoolean write SetAsBoolean;
+ Property AsBCD : Currency read GetAsCurrency write SetAsBCD;
Property AsCurrency : Currency read GetAsCurrency write SetAsCurrency;
Property AsDate : TDateTime read GetAsDateTime write SetAsDate;
Property AsDateTime : TDateTime read GetAsDateTime write SetAsDateTime;
@@ -1223,7 +1228,7 @@ type
end;
TParamClass = Class of TParam;
- { TParams }
+{ TParams }
TParams = class(TCollection)
private
@@ -1478,7 +1483,7 @@ type
procedure GetChildren(Proc: TGetChildProc; Root: TComponent); override;
function GetFieldClass(FieldType: TFieldType): TFieldClass; virtual;
Function GetfieldCount : Integer;
- function GetFieldValues(const fieldname : string) : Variant; virtual;
+ function GetFieldValues(const FieldName : string) : Variant; virtual;
function GetIsIndexField(Field: TField): Boolean; virtual;
function GetIndexDefs(IndexDefs : TIndexDefs; IndexTypes : TIndexOptions) : TIndexDefs;
function GetNextRecords: Longint; virtual;
@@ -1507,7 +1512,7 @@ type
procedure SetFiltered(Value: Boolean); virtual;
procedure SetFilterOptions(Value: TFilterOptions); virtual;
procedure SetFilterText(const Value: string); virtual;
- procedure SetFieldValues(const fieldname: string; Value: Variant); virtual;
+ procedure SetFieldValues(const FieldName: string; Value: Variant); virtual;
procedure SetFound(const Value: Boolean); virtual;
procedure SetModified(Value: Boolean);
procedure SetName(const Value: TComponentName); override;
@@ -1515,7 +1520,7 @@ type
procedure SetRecNo(Value: Longint); virtual;
procedure SetState(Value: TDataSetState);
function SetTempState(const Value: TDataSetState): TDataSetState;
- Function Tempbuffer: TRecordBuffer;
+ Function TempBuffer: TRecordBuffer;
procedure UpdateIndexDefs; virtual;
property ActiveRecord: Longint read FActiveRecord;
property CurrentRecord: Longint read FCurrentRecord;
@@ -1545,6 +1550,8 @@ type
procedure SetBookmarkFlag(Buffer: TRecordBuffer; Value: TBookmarkFlag); virtual;
procedure SetBookmarkData(Buffer: TRecordBuffer; Data: Pointer); virtual;
procedure SetUniDirectional(const Value: Boolean);
+ class function FieldDefsClass : TFieldDefsClass; virtual;
+ class function FieldsClass : TFieldsClass; virtual;
protected { abstract methods }
function GetRecord(Buffer: TRecordBuffer; GetMode: TGetMode; DoCheck: Boolean): TGetResult; virtual; abstract;
procedure InternalClose; virtual; abstract;
@@ -1575,8 +1582,6 @@ type
procedure PSSetCommandText(const CommandText: string); virtual;
procedure PSSetParams(AParams: TParams); virtual;
procedure PSStartTransaction; virtual;
- class function FieldDefsClass : TFieldDefsClass; virtual;
- class function FieldsClass : TFieldsClass; virtual;
function PSUpdateRecord(UpdateKind: TUpdateKind; Delta: TDataSet)
: Boolean; virtual;
public
@@ -1654,7 +1659,7 @@ type
property RecordSize: Word read GetRecordSize;
property State: TDataSetState read FState;
property Fields : TFields read FFieldList;
- property FieldValues[fieldname : string] : Variant read GetFieldValues write SetFieldValues; default;
+ property FieldValues[FieldName : string] : Variant read GetFieldValues write SetFieldValues; default;
property Filter: string read FFilterText write SetFilterText;
property Filtered: Boolean read FFiltered write SetFiltered default False;
property FilterOptions: TFilterOptions read FFilterOptions write SetFilterOptions;
@@ -1995,85 +2000,101 @@ type
const
- FieldTypetoVariantMap : array[TFieldType] of Integer = (varError, varOleStr, varSmallint,
- varInteger, varSmallint, varBoolean, varDouble, varCurrency, varCurrency,
- varDate, varDate, varDate, varOleStr, varOleStr, varInteger, varOleStr,
- varOleStr, varOleStr, varOleStr, varOleStr, varOleStr, varOleStr, varError,
- varOleStr, varOleStr, varError, varError, varError, varError, varError,
- varOleStr, varOleStr, varVariant, varUnknown, varDispatch, varOleStr,
- varOleStr, varDouble, varOleStr,varOleStr);
+ FieldTypetoVariantMap : array[TFieldType] of Integer =
+ (
+ {ftUnknown} varError,
+ {ftString} varOleStr,
+ {ftSmallint} varSmallint,
+ {ftInteger} varInteger,
+ {ftWord} varSmallint,
+ {ftBoolean} varBoolean,
+ {ftFloat} varDouble,
+ {ftCurrency} varCurrency,
+ {ftBCD} varCurrency,
+ {ftDate} varDate,
+ {ftTime} varDate,
+ {ftDateTime} varDate,
+ {ftBytes} varOleStr,
+ {ftVarBytes} varOleStr,
+ {ftAutoInc} varInteger,
+ {ftBlob} varOleStr,
+ {ftMemo} varOleStr,
+ {ftGraphic} varOleStr,
+ {ftFmtMemo} varOleStr,
+ {ftParadoxOle} varOleStr,
+ {ftDBaseOle} varOleStr,
+ {ftTypedBinary} varOleStr,
+ {ftCursor} varError,
+ {ftFixedChar} varOleStr,
+ {ftWideString} varOleStr,
+ {ftLargeint} varError,
+ {ftADT} varError,
+ {ftArray} varError,
+ {ftReference} varError,
+ {ftDataSet} varError,
+ {ftOraBlob} varOleStr,
+ {ftOraClob} varOleStr,
+ {ftVariant} varVariant,
+ {ftInterface} varUnknown,
+ {ftIDispatch} varDispatch,
+ {ftGuid} varOleStr,
+ {ftTimeStamp} varOleStr,
+ {ftFMTBcd} varDouble,
+ {ftFixedWideChar} varOleStr,
+ {ftWideMemo} varOleStr
+ );
Const
Fieldtypenames : Array [TFieldType] of String[15] =
(
- 'Unknown',
- 'String',
- 'Smallint',
- 'Integer',
- 'Word',
- 'Boolean',
- 'Float',
- 'Currency',
- 'BCD',
- 'Date',
- 'Time',
- 'DateTime',
- 'Bytes',
- 'VarBytes',
- 'AutoInc',
- 'Blob',
- 'Memo',
- 'Graphic',
- 'FmtMemo',
- 'ParadoxOle',
- 'DBaseOle',
- 'TypedBinary',
- 'Cursor',
- 'FixedChar',
- 'WideString',
- 'Largeint',
- 'ADT',
- 'Array',
- 'Reference',
- 'DataSet',
- 'OraBlob',
- 'OraClob',
- 'Variant',
- 'Interface',
- 'IDispatch',
- 'Guid',
- 'TimeStamp',
- 'FMTBcd',
- 'FixedWideChar',
- 'WideMemo'
+ {ftUnknown} 'Unknown',
+ {ftString} 'String',
+ {ftSmallint} 'Smallint',
+ {ftInteger} 'Integer',
+ {ftWord} 'Word',
+ {ftBoolean} 'Boolean',
+ {ftFloat} 'Float',
+ {ftCurrency} 'Currency',
+ {ftBCD} 'BCD',
+ {ftDate} 'Date',
+ {ftTime} 'Time',
+ {ftDateTime} 'DateTime',
+ {ftBytes} 'Bytes',
+ {ftVarBytes} 'VarBytes',
+ {ftAutoInc} 'AutoInc',
+ {ftBlob} 'Blob',
+ {ftMemo} 'Memo',
+ {ftGraphic} 'Graphic',
+ {ftFmtMemo} 'FmtMemo',
+ {ftParadoxOle} 'ParadoxOle',
+ {ftDBaseOle} 'DBaseOle',
+ {ftTypedBinary} 'TypedBinary',
+ {ftCursor} 'Cursor',
+ {ftFixedChar} 'FixedChar',
+ {ftWideString} 'WideString',
+ {ftLargeint} 'Largeint',
+ {ftADT} 'ADT',
+ {ftArray} 'Array',
+ {ftReference} 'Reference',
+ {ftDataSet} 'DataSet',
+ {ftOraBlob} 'OraBlob',
+ {ftOraClob} 'OraClob',
+ {ftVariant} 'Variant',
+ {ftInterface} 'Interface',
+ {ftIDispatch} 'IDispatch',
+ {ftGuid} 'Guid',
+ {ftTimeStamp} 'TimeStamp',
+ {ftFMTBcd} 'FMTBcd',
+ {ftFixedWideChar} 'FixedWideChar',
+ {ftWideMemo} 'WideMemo'
);
- { 'Unknown',
- 'String',
- 'Smallint',
- 'Integer',
- 'Word',
- 'Boolean',
- 'Float',
- 'Date',
- 'Time',
- 'DateTime',
- 'Bytes',
- 'VarBytes',
- 'AutoInc',
- 'Blob',
- 'Memo',
- 'Graphic',
- 'FmtMemo',
- 'ParadoxOle',
- 'DBaseOle',
- 'TypedBinary',
- 'Cursor'
- );}
+
const
DefaultFieldClasses : Array [TFieldType] of TFieldClass =
- ( { ftUnknown} Tfield,
+ (
+ { ftUnknown} Tfield,
{ ftString} TStringField,
{ ftSmallint} TSmallIntField,
{ ftInteger} TLongintField,
@@ -2118,6 +2139,11 @@ const
dsEditModes = [dsEdit, dsInsert, dsSetKey];
dsWriteModes = [dsEdit, dsInsert, dsSetKey, dsCalcFields, dsFilter,
dsNewValue, dsInternalCalc];
+ // Correct list of all field types that are BLOB types.
+ // Please use this instead of checking TBlobType which will give
+ // incorrect results
+ ftBlobTypes = [ftBlob, ftMemo, ftGraphic, ftFmtMemo, ftParadoxOle,
+ ftDBaseOle, ftTypedBinary, ftOraBlob, ftOraClob, ftWideMemo];
{ Auxiliary functions }
diff --git a/packages/fcl-db/src/base/dbcoll.pp b/packages/fcl-db/src/base/dbcoll.pp
index c3f2dcc371..18b0fbb8da 100644
--- a/packages/fcl-db/src/base/dbcoll.pp
+++ b/packages/fcl-db/src/base/dbcoll.pp
@@ -57,7 +57,7 @@ type
implementation
resourcestring
- SErrNoDatasetForField = '%s: Geen dataset om veld %s in te zoeken.';
+ SErrNoDatasetForField = '%s: no dataset to search field %s in.';
{ TFieldMap }
diff --git a/packages/fcl-db/src/base/dsparams.inc b/packages/fcl-db/src/base/dsparams.inc
index 28ad53a49e..53f7a5530e 100644
--- a/packages/fcl-db/src/base/dsparams.inc
+++ b/packages/fcl-db/src/base/dsparams.inc
@@ -617,6 +617,12 @@ begin
and (FValue=AValue.FValue);
end;
+procedure TParam.SetAsBCD(const AValue: Currency);
+begin
+ FDataType:=ftBCD;
+ Value:=AValue;
+end;
+
Procedure TParam.SetAsBlob(const AValue: TBlobData);
begin
FDataType:=ftBlob;
diff --git a/packages/fcl-db/src/base/fields.inc b/packages/fcl-db/src/base/fields.inc
index e92aad4dae..def9b0b8d0 100644
--- a/packages/fcl-db/src/base/fields.inc
+++ b/packages/fcl-db/src/base/fields.inc
@@ -1,6 +1,6 @@
{
This file is part of the Free Pascal run time library.
- Copyright (c) 1999-2000 by Michael Van Canneyt, member of the
+ Copyright (c) 1999-2014 by Michael Van Canneyt, member of the
Free Pascal development team
TFields and related components implementations.
@@ -15,7 +15,7 @@
**********************************************************************}
{Procedure DumpMem (P : Pointer;Size : Longint);
-Var i : longint;
+var i : longint;
begin
Write ('Memory dump : ');
@@ -31,7 +31,7 @@ end;}
Constructor TFieldDef.Create(ACollection : TCollection);
begin
- Inherited create(ACollection);
+ Inherited Create(ACollection);
FFieldNo:=Index+1;
end;
@@ -80,7 +80,7 @@ end;
Function TFieldDef.CreateField(AOwner: TComponent): TField;
-Var TheField : TFieldClass;
+var TheField : TFieldClass;
begin
{$ifdef dsdebug}
@@ -89,7 +89,7 @@ begin
TheField:=GetFieldClass;
if TheField=Nil then
DatabaseErrorFmt(SUnknownFieldType,[FName]);
- Result:=Thefield.Create(AOwner);
+ Result:=TheField.Create(AOwner);
Try
Result.FFieldDef:=Self;
Result.Size:=FSize;
@@ -98,12 +98,12 @@ begin
Result.FDisplayLabel:=DisplayName;
Result.FFieldNo:=Self.FieldNo;
Result.SetFieldType(DataType);
- Result.FReadOnly:= (faReadOnly in Attributes);
+ Result.FReadOnly:=(faReadOnly in Attributes);
{$ifdef dsdebug}
- Writeln ('TFieldDef.CReateField : Trying to set dataset');
+ Writeln ('TFieldDef.CreateField : Trying to set dataset');
{$endif dsdebug}
{$ifdef dsdebug}
- Writeln ('TFieldDef.CReateField : Result Fieldno : ',Result.FieldNo,' Self : ',FieldNo);
+ Writeln ('TFieldDef.CreateField : Result Fieldno : ',Result.FieldNo,'; Self : ',FieldNo);
{$endif dsdebug}
Result.Dataset:=TFieldDefs(Collection).Dataset;
If (Result is TFloatField) then
@@ -116,7 +116,6 @@ begin
Result.Free;
Raise;
end;
-
end;
procedure TFieldDef.SetAttributes(AValue: TFieldAttributes);
@@ -194,7 +193,7 @@ procedure TFieldDefs.Add(const AName: string; ADataType: TFieldType; ASize: Word
begin
If Length(AName)=0 Then
DatabaseError(SNeedFieldName);
- // the fielddef will register itself here as a owned component.
+ // the fielddef will register itself here as an owned component.
// fieldno is 1 based !
BeginUpdate;
try
@@ -225,14 +224,14 @@ begin
Inherited Create(ADataset, Owner, FieldDefClass);
end;
-function TFieldDefs.Add(const AName: string; ADataType: TFieldType; ASize: Word; ARequired: Boolean; AFieldNum: Integer): TFieldDef;
+function TFieldDefs.Add(const AName: string; ADataType: TFieldType; ASize: Word; ARequired: Boolean; AFieldNo: Integer): TFieldDef;
begin
- Result:=FieldDefClass.create(Self,AName,ADataType,ASize,ARequired,AFieldNum);
+ Result:=FieldDefClass.create(Self,AName,ADataType,ASize,ARequired,AFieldNo);
end;
procedure TFieldDefs.Assign(FieldDefs: TFieldDefs);
-Var I : longint;
+var I : longint;
begin
Clear;
@@ -250,7 +249,7 @@ end;
{
procedure TFieldDefs.Clear;
-Var I : longint;
+var I : longint;
begin
For I:=FItems.Count-1 downto 0 do
@@ -579,7 +578,7 @@ function TField.GetData(Buffer: Pointer; NativeFormat : Boolean): Boolean;
begin
IF FDataset=Nil then
DatabaseErrorFmt(SNoDataset,[FieldName]);
- If FVAlidating then
+ If FValidating then
begin
result:=assigned(FValueBuffer);
If Result and assigned(Buffer) then
@@ -806,13 +805,11 @@ end;
procedure TField.SetAsLongint(AValue: Longint);
-
begin
SetAsInteger(AValue);
end;
procedure TField.SetAsInteger(AValue: Longint);
-
begin
raise AccessError(SInteger);
end;
@@ -823,7 +820,6 @@ begin
end;
procedure TField.SetAsString(const AValue: string);
-
begin
Raise AccessError(SString);
end;
@@ -1047,7 +1043,7 @@ end;
function TStringField.GetAsBoolean: Boolean;
-Var S : String;
+var S : String;
begin
S:=GetAsString;
@@ -1081,7 +1077,7 @@ end;
function TStringField.GetAsVariant: Variant;
-Var s : string;
+var s : string;
begin
If GetValue(s) then
@@ -1111,7 +1107,7 @@ end;
function TStringField.GetValue(var AValue: string): Boolean;
-Var Buf, TBuf : TStringFieldBuffer;
+var Buf, TBuf : TStringFieldBuffer;
DynBuf, TDynBuf : Array of char;
begin
@@ -1194,9 +1190,9 @@ begin
else
// The data is copied into the buffer, since some TDataset descendents copy
// the whole buffer-length in SetData. (See bug 8477)
- Buf := AValue;
- // If length(AValue) > DataSize the buffer isn't terminated properly
- Buf[DataSize-1] := #0;
+ StrPLCopy(PChar(Buf), AValue, Size);
+ // If length(AValue) > Size the buffer isn't terminated properly ?
+ Buf[Size] := #0;
SetData(@Buf);
end
else
@@ -1205,7 +1201,7 @@ begin
if FTransliterate then
DataSet.Translate(@AValue[1],@DynBuf[0],True)
else
- StrPLCopy(@DynBuf[0], AValue, DataSize);
+ StrPLCopy(PChar(DynBuf), AValue, Size);
SetData(@DynBuf[0]);
end
end;
@@ -1403,7 +1399,7 @@ end;
function TLongintField.GetAsVariant: Variant;
-Var L : Longint;
+var L : Longint;
begin
If GetValue(L) then
@@ -1414,7 +1410,7 @@ end;
function TLongintField.GetAsString: string;
-Var L : Longint;
+var L : Longint;
begin
If GetValue(L) then
@@ -1449,7 +1445,7 @@ end;
function TLongintField.GetValue(var AValue: Longint): Boolean;
-Var L : Longint;
+var L : Longint;
P : PLongint;
begin
@@ -1493,7 +1489,7 @@ end;
procedure TLongintField.SetAsString(const AValue: string);
-Var L,Code : longint;
+var L,Code : longint;
begin
If length(AValue)=0 then
@@ -1575,7 +1571,7 @@ end;
function TLargeIntField.GetAsVariant: Variant;
-Var L : Largeint;
+var L : Largeint;
begin
If GetValue(L) then
@@ -1592,7 +1588,7 @@ end;
function TLargeintField.GetAsString: string;
-Var L : Largeint;
+var L : Largeint;
begin
If GetValue(L) then
@@ -1630,7 +1626,7 @@ function TLargeintField.GetValue(var AValue: Largeint): Boolean;
type
PLargeint = ^Largeint;
-Var P : PLargeint;
+var P : PLargeint;
begin
P:=@AValue;
@@ -1660,7 +1656,7 @@ end;
procedure TLargeintField.SetAsString(const AValue: string);
-Var L : largeint;
+var L : largeint;
code : longint;
begin
@@ -1799,7 +1795,7 @@ end;
function TFloatField.GetAsVariant: Variant;
-Var f : Double;
+var f : Double;
begin
If GetData(@f) then
@@ -1821,7 +1817,7 @@ end;
function TFloatField.GetAsString: string;
-Var R : Double;
+var R : Double;
begin
If GetData(@R) then
@@ -1893,7 +1889,7 @@ end;
procedure TFloatField.SetAsString(const AValue: string);
-Var R : Double;
+var R : Double;
begin
If (AValue='') then
@@ -1916,7 +1912,7 @@ constructor TFloatField.Create(AOwner: TComponent);
begin
Inherited Create(AOwner);
- SetDatatype(ftfloat);
+ SetDatatype(ftFloat);
FPrecision:=15;
FValidChars := [DecimalSeparator, '+', '-', '0'..'9', 'E', 'e'];
end;
@@ -1955,7 +1951,7 @@ end;
function TBooleanField.GetAsVariant: Variant;
-Var b : wordbool;
+var b : wordbool;
begin
If GetData(@b) then
@@ -1966,7 +1962,7 @@ end;
function TBooleanField.GetAsString: string;
-Var B : wordbool;
+var B : wordbool;
begin
If GetData(@B) then
@@ -2010,7 +2006,7 @@ end;
procedure TBooleanField.SetAsString(const AValue: string);
-Var Temp : string;
+var Temp : string;
begin
Temp:=UpperCase(AValue);
@@ -2039,7 +2035,7 @@ end;
Procedure TBooleanField.SetDisplayValues(const AValue : String);
-Var I : longint;
+var I : longint;
begin
If FDisplayValues<>AValue then
@@ -2081,7 +2077,7 @@ end;
function TDateTimeField.GetAsVariant: Variant;
-Var d : tDateTime;
+var d : tDateTime;
begin
If GetData(@d,False) then
@@ -2113,7 +2109,7 @@ end;
procedure TDateTimeField.GetText(var TheText: string; ADisplayText: Boolean);
-Var R : TDateTime;
+var R : TDateTime;
F : String;
begin
@@ -2151,7 +2147,7 @@ end;
procedure TDateTimeField.SetAsString(const AValue: string);
-Var R : TDateTime;
+var R : TDateTime;
begin
if AValue<>'' then
@@ -2192,7 +2188,7 @@ begin
end;
procedure TTimeField.SetAsString(const AValue: string);
-Var R : TDateTime;
+var R : TDateTime;
begin
if AValue='' then
Clear // set to NULL
@@ -2387,7 +2383,7 @@ constructor TVarBytesField.Create(AOwner: TComponent);
begin
INherited Create(AOwner);
- SetDataType(ftvarbytes);
+ SetDataType(ftVarBytes);
Size:=16;
end;
@@ -2420,7 +2416,7 @@ end;
function TBCDField.GetAsVariant: Variant;
-Var c : system.Currency;
+var c : system.Currency;
begin
If GetData(@c) then
@@ -2754,6 +2750,16 @@ begin
Result:=FDataset.CreateBlobStream(Self,Mode);
end;
+function TBlobField.GetBlobType: TBlobType;
+begin
+ result:= TBlobType(DataType);
+end;
+
+procedure TBlobField.SetBlobType(AValue: TBlobType);
+begin
+ SetFieldType(TFieldType(BlobType));
+end;
+
procedure TBlobField.FreeBuffers;
begin
@@ -2819,9 +2825,7 @@ begin
end;
function TBlobField.GetAsVariant: Variant;
-
-Var s : string;
-
+var s : string;
begin
if not GetIsNull then
begin
@@ -2900,7 +2904,6 @@ begin
end;
end;
-
procedure TBlobField.SetAsWideString(const AValue: WideString);
var
Len : Integer;
@@ -2951,11 +2954,9 @@ end;
procedure TBlobField.LoadFromFile(const FileName: string);
-
-Var S : TFileStream;
-
+var S : TFileStream;
begin
- S:=TFileStream.Create(FileName,fmOpenRead);
+ S:=TFileStream.Create(FileName,fmOpenRead or fmShareDenyWrite);
try
LoadFromStream(S);
finally
@@ -2977,9 +2978,7 @@ end;
procedure TBlobField.SaveToFile(const FileName: string);
-
-Var S : TFileStream;
-
+var S : TFileStream;
begin
S:=TFileStream.Create(FileName,fmCreate);
try
@@ -2991,9 +2990,7 @@ end;
procedure TBlobField.SaveToStream(Stream: TStream);
-
-Var S : TStream;
-
+var S : TStream;
begin
S:=GetBlobStream(bmRead);
Try
@@ -3005,9 +3002,8 @@ begin
end;
procedure TBlobField.SetFieldType(AValue: TFieldType);
-
begin
- If AValue in [Low(TBlobType)..High(TBlobType)] then
+ if AValue in ftBlobTypes then
SetDatatype(AValue);
end;
@@ -3049,9 +3045,7 @@ begin
end;
function TWideMemoField.GetAsVariant: Variant;
-
-Var s : string;
-
+var s : string;
begin
if not GetIsNull then
begin
@@ -3286,9 +3280,7 @@ begin
end;
procedure TFields.SetFieldIndex(Field: TField; Value: Integer);
-
-Var Old : Longint;
-
+var Old : Longint;
begin
Old := FFieldList.indexOf(Field);
If Old=-1 then
@@ -3353,10 +3345,8 @@ begin
end;
function TFields.FindField(const Value: String): TField;
-
-Var S : String;
+var S : String;
I : longint;
-
begin
S:=UpperCase(Value);
For I:=0 To FFieldList.Count-1 do
@@ -3382,9 +3372,7 @@ begin
end;
function TFields.FieldByNumber(FieldNo: Integer): TField;
-
-Var i : Longint;
-
+var i : Longint;
begin
For I:=0 to FFieldList.Count-1 do
begin
@@ -3402,9 +3390,7 @@ begin
end;
procedure TFields.GetFieldNames(Values: TStrings);
-
-Var i : longint;
-
+var i : longint;
begin
Values.Clear;
For I:=0 to FFieldList.Count-1 do
diff --git a/packages/fcl-db/src/base/sqlscript.pp b/packages/fcl-db/src/base/sqlscript.pp
index fed2714f60..43d9155f6e 100644
--- a/packages/fcl-db/src/base/sqlscript.pp
+++ b/packages/fcl-db/src/base/sqlscript.pp
@@ -459,9 +459,16 @@ begin
pnt:=FindNextSeparator([FTerminator, '/*', '"', '''']);
if (pnt=FTerminator) then
begin
- FCol:=FCol + length(pnt);
- terminator_found:=True;
- break;
+ if pnt='' then
+ begin
+ // Empty line, only e.g. a ; present:
+ FEmitLine:=False;
+ end
+ else begin
+ FCol:=FCol + length(pnt);
+ terminator_found:=True;
+ break;
+ end;
end
else if pnt = '/*' then
begin
diff --git a/packages/fcl-db/src/export/fpdbexport.pp b/packages/fcl-db/src/export/fpdbexport.pp
index 1f6b49f9df..1e282a815f 100644
--- a/packages/fcl-db/src/export/fpdbexport.pp
+++ b/packages/fcl-db/src/export/fpdbexport.pp
@@ -456,7 +456,8 @@ begin
If (FDataset<>Nil) then
FDataset.RemoveFreeNotification(Self);
FDataset:=AValue;
- FDataset.FreeNotification(Self);
+ if (FDataset<>Nil) then
+ FDataset.FreeNotification(Self);
UnbindFields;
end;
end;
diff --git a/packages/fcl-db/src/export/fpfixedexport.pp b/packages/fcl-db/src/export/fpfixedexport.pp
index 785a65687e..bbedecc39b 100644
--- a/packages/fcl-db/src/export/fpfixedexport.pp
+++ b/packages/fcl-db/src/export/fpfixedexport.pp
@@ -88,23 +88,51 @@ end;
procedure TCustomFixedLengthExporter.BuildDefaultFieldMap(AMap: TExportFields);
-{ TFieldType = (ftUnknown, ftString, ftSmallint, ftInteger, ftWord,
- ftBoolean, ftFloat, ftCurrency, ftBCD, ftDate, ftTime, ftDateTime,
- ftBytes, ftVarBytes, ftAutoInc, ftBlob, ftMemo, ftGraphic, ftFmtMemo,
- ftParadoxOle, ftDBaseOle, ftTypedBinary, ftCursor, ftFixedChar,
- ftWideString, ftLargeint, ftADT, ftArray, ftReference,
- ftDataSet, ftOraBlob, ftOraClob, ftVariant, ftInterface,
- ftIDispatch, ftGuid, ftTimeStamp, ftFMTBcd, ftFixedWideChar, ftWideMemo);
-}
Const
- FieldWidths : Array[TFieldType] of integer
- = (-1,0,3,10,5,
- 1,20,20,20,10,8,20,
- 0,0,10,0,0,0,0,
- 0,0,0,0,0,
- 0,0,0,0,0,
- 0,0,0,0,0,
- 0,0,0,0,0,0);
+ // Mapping to TFieldType
+ FieldWidths : Array[TFieldType] of integer =
+ (
+ {ftUnknown} -1,
+ {ftString} 0,
+ {ftSmallint} 3,
+ {ftInteger} 10,
+ {ftWord} 5,
+ {ftBoolean} 1,
+ {ftFloat} 20,
+ {ftCurrency} 20,
+ {ftBCD} 20,
+ {ftDate} 10,
+ {ftTime} 8,
+ {ftDateTime} 20,
+ {ftBytes} 0,
+ {ftVarBytes} 0,
+ {ftAutoInc} 10,
+ {ftBlob} 0,
+ {ftMemo} 0,
+ {ftGraphic} 0,
+ {ftFmtMemo} 0,
+ {ftParadoxOle} 0,
+ {ftDBaseOle} 0,
+ {ftTypedBinary} 0,
+ {ftCursor} 0,
+ {ftFixedChar} 0,
+ {ftWideString} 0,
+ {ftLargeint} 0,
+ {ftADT} 0,
+ {ftArray} 0,
+ {ftReference} 0,
+ {ftDataSet} 0,
+ {ftOraBlob} 0,
+ {ftOraClob} 0,
+ {ftVariant} 0,
+ {ftInterface} 0,
+ {ftIDispatch} 0,
+ {ftGuid} 0,
+ {ftTimeStamp} 0,
+ {ftFMTBcd} 0,
+ {ftFixedWideChar} 0,
+ {ftWideMemo} 0
+ );
Var
I,W : Integer;
diff --git a/packages/fcl-db/src/sdf/sdfdata.pp b/packages/fcl-db/src/sdf/sdfdata.pp
index 452682196a..42832082af 100644
--- a/packages/fcl-db/src/sdf/sdfdata.pp
+++ b/packages/fcl-db/src/sdf/sdfdata.pp
@@ -626,7 +626,7 @@ end;
function TFixedFormatDataSet.GetFieldData(Field: TField; Buffer: Pointer): Boolean;
var
- TempPos, recbuf : PChar;
+ TempPos, RecBuf : PChar;
begin
Result := GetActiveRecBuf(TRecordBuffer(RecBuf));
if Result then
@@ -668,7 +668,7 @@ var
p : Integer;
begin
if not (State in dsWriteModes) then
- DatabaseError(SNotEditing, Self);
+ DatabaseErrorFmt(SNotEditing, [Name], Self);
GetActiveRecBuf(TRecordBuffer(RecBuf));
if Field.FieldNo > 0 then
begin
diff --git a/packages/fcl-db/src/sqldb/interbase/ibconnection.pp b/packages/fcl-db/src/sqldb/interbase/ibconnection.pp
index d9dcd3d66c..1c2d5ed4e8 100644
--- a/packages/fcl-db/src/sqldb/interbase/ibconnection.pp
+++ b/packages/fcl-db/src/sqldb/interbase/ibconnection.pp
@@ -719,7 +719,7 @@ begin
IBStatementType:=isc_vax_integer(@resbuf[3],blockSize);
assert(resbuf[3+blockSize]=isc_info_end);
// If the statementtype is isc_info_sql_stmt_exec_procedure then
- // override the statement type derrived by parsing the query.
+ // override the statement type derived by parsing the query.
// This to recognize statements like 'insert into .. returning' correctly
case IBStatementType of
isc_info_sql_stmt_select: FStatementType := stSelect;
diff --git a/packages/fcl-db/src/sqldb/mssql/mssqlconn.pp b/packages/fcl-db/src/sqldb/mssql/mssqlconn.pp
index ac06cbe982..a30532d7a5 100644
--- a/packages/fcl-db/src/sqldb/mssql/mssqlconn.pp
+++ b/packages/fcl-db/src/sqldb/mssql/mssqlconn.pp
@@ -66,6 +66,7 @@ type
function CheckError(const Ret: RETCODE): RETCODE;
procedure Execute(const cmd: string); overload;
procedure ExecuteDirectSQL(const Query: string);
+ procedure GetParameters(cursor: TSQLCursor; AParams: TParams);
function TranslateFldType(SQLDataType: integer): TFieldType;
function ClientCharset: TClientCharset;
function AutoCommit: boolean;
@@ -467,7 +468,7 @@ begin
try
Prepare(format('SELECT cast(%s as varchar), @@version, user_name()', [VERSION_NUMBER[IsSybase]]), nil);
Execute(nil);
- if Fetch then
+ while Fetch do
begin
Put(1, FServerInfo.ServerVersion);
Put(2, FServerInfo.ServerVersionString);
@@ -620,6 +621,9 @@ begin
begin
repeat until dbnextrow(FDBProc) = NO_MORE_ROWS;
res := CheckError( dbresults(FDBProc) );
+ // stored procedure information (return status and output parameters)
+ // are available only after normal results are processed
+ //if res = NO_MORE_RESULTS then GetParameters(cursor, AParams);
end;
until c.FSelectable or (res = NO_MORE_RESULTS) or (res = FAIL);
@@ -629,6 +633,21 @@ begin
Fstatus := MORE_ROWS;
end;
+procedure TMSSQLConnection.GetParameters(cursor: TSQLCursor; AParams: TParams);
+var Param: TParam;
+begin
+ // Microsoft SQL Server no more returns OUTPUT parameters as a special result row
+ // so we can not use dbret*() functions, but instead we must use dbrpc*() functions
+ // only procedure return status number is returned
+ if dbhasretstat(FDBProc) = 1 then
+ begin
+ Param := AParams.FindParam('RETURN_STATUS');
+ if not assigned(Param) then
+ Param := AParams.CreateParam(ftInteger, 'RETURN_STATUS', ptOutput);
+ Param.AsInteger := dbretstatus(FDBProc);
+ end;
+end;
+
function TMSSQLConnection.RowsAffected(cursor: TSQLCursor): TRowsCount;
begin
if assigned(cursor) then
diff --git a/packages/fcl-db/src/sqldb/mssql/readme.txt b/packages/fcl-db/src/sqldb/mssql/readme.txt
index 3b1f143ee1..9c4f63a8c6 100644
--- a/packages/fcl-db/src/sqldb/mssql/readme.txt
+++ b/packages/fcl-db/src/sqldb/mssql/readme.txt
@@ -41,7 +41,7 @@ Compiling FreeTDS with iconv support:
Using in Lazarus:
=================
-1. Put on the form TSQLConnector and set property ConnectorType=MSSQLServer
+1. Put on the form TMSSQLConnection or TSQLConnector and set property ConnectorType=MSSQLServer
2. Put into uses clause mssqlconn unit
@@ -49,6 +49,7 @@ Known problems:
===============
- CHAR/VARCHAR data truncated to column length when encoding to UTF-8 (use NCHAR/NVARCHAR instead or CAST char/varchar to nchar/nvarchar)
- Multiple result sets (for example when SP returns more than 1 result set only 1st is processed)
+- Output parameters of stored procedure are not returned. See FreeTDS FAQ: "I'm not getting my output parameters returned, but I seem to be doing everything right!"
- DB-Library error 10038 "Results Pending" - set TSQLQuery.PacketRecords=-1 to fetch all pendings rows
- BLOB data (IMAGE/TEXT columns) larger than 16MB are truncated to 16MB - (set TMSSQLConnection.Params: 'TEXTSIZE=2147483647' or execute 'SET TEXTSIZE 2147483647')
(create temporary stored procedures for prepared statements)
diff --git a/packages/fcl-db/src/sqldb/mysql/mysqlconn.inc b/packages/fcl-db/src/sqldb/mysql/mysqlconn.inc
index 31de3bf724..648227e822 100644
--- a/packages/fcl-db/src/sqldb/mysql/mysqlconn.inc
+++ b/packages/fcl-db/src/sqldb/mysql/mysqlconn.inc
@@ -89,7 +89,7 @@ Type
FMySQL : PMySQL;
function GetClientInfo: string;
function GetServerStatus: String;
- procedure ConnectMySQL(var HMySQL : PMySQL;H,U,P : pchar);
+ procedure ConnectMySQL(var HMySQL: PMySQL);
procedure ExecuteDirectMySQL(const query : string);
function EscapeString(const Str : string) : string;
protected
@@ -242,7 +242,8 @@ const
Resourcestring
SErrServerConnectFailed = 'Server connect failed.';
- SErrDatabaseSelectFailed = 'failed to select database: %s';
+ SErrSetCharsetFailed = 'Failed to set connection character set: %s';
+ SErrDatabaseSelectFailed = 'Failed to select database: %s';
SErrDatabaseCreate = 'Failed to create database: %s';
SErrDatabaseDrop = 'Failed to drop database: %s';
SErrNoData = 'No data for record';
@@ -328,7 +329,7 @@ begin
Result:=mysql_insert_id(GetHandle);
end;
-procedure TConnectionName.ConnectMySQL(var HMySQL : PMySQL;H,U,P : pchar);
+procedure TConnectionName.ConnectMySQL(var HMySQL: PMySQL);
Var
APort : Cardinal;
@@ -344,32 +345,34 @@ begin
for i := 0 to Params.Count-1 do
begin
- if MysqlOption(params.Names[i],AMysql_Option) then
+ if MysqlOption(Params.Names[i],AMysql_Option) then
begin
- OptStr:=params.ValueFromIndex[i];
+ OptStr:=Params.ValueFromIndex[i];
val(OptStr,OptInt,e);
if e=0 then
Opt := @OptInt
else
Opt := pchar(OptStr);
if mysql_options(HMySQL,AMysql_Option,Opt) <> 0 then
- MySQLError(HMySQL,Format(SErrSettingParameter,[params.Names[i]]),Self);
+ MySQLError(HMySQL,Format(SErrSettingParameter,[Params.Names[i]]),Self);
end;
end;
- HMySQL:=mysql_real_connect(HMySQL,PChar(H),PChar(U),Pchar(P),Nil,APort,Nil,CLIENT_MULTI_RESULTS); //CLIENT_MULTI_RESULTS is required by CALL SQL statement(executes stored procedure), that produces result sets
+ HMySQL:=mysql_real_connect(HMySQL,PChar(HostName),PChar(UserName),PChar(Password),Nil,APort,Nil,CLIENT_MULTI_RESULTS); //CLIENT_MULTI_RESULTS is required by CALL SQL statement(executes stored procedure), that produces result sets
If (HMySQL=Nil) then
MySQLError(Nil,SErrServerConnectFailed,Self);
- // MySQL _Server_ version 4.1 and later
- // major_version*10000 + minor_version *100 + sub_version
- if (trim(CharSet) <> '') and (4*10000 + 1*100 <= mysql_get_server_version(HMySQL)) then
- begin
- // Only available for mysql 5.0.7 and later...
- // if (mysql_set_character_set(HMySQL, PChar(CharSet)) <> 0) then
- if mysql_query(FMySQL,PChar('SET CHARACTER SET ''' + EscapeString(CharSet) +''''))<>0 then
- MySQLError(HMySQL,SErrExecuting,Self);
- end;
+ if (trim(CharSet) <> '') then
+ // major_version*10000 + minor_version *100 + sub_version
+ if (50007 <= mysql_get_server_version(HMySQL)) then
+ begin
+ // Only available for MySQL 5.0.7 and later...
+ if mysql_set_character_set(HMySQL, PChar(CharSet)) <> 0 then
+ MySQLError(HMySQL,SErrSetCharsetFailed,Self);
+ end
+ else
+ if mysql_query(HMySQL,PChar('SET NAMES ''' + EscapeString(CharSet) +'''')) <> 0 then
+ MySQLError(HMySQL,SErrExecuting,Self);
end;
function TConnectionName.GetAsSQLText(Field : TField) : string;
@@ -396,15 +399,8 @@ end;
procedure TConnectionName.ConnectToServer;
-
-Var
- H,U,P : String;
-
begin
- H:=HostName;
- U:=UserName;
- P:=Password;
- ConnectMySQL(FMySQL,pchar(H),pchar(U),pchar(P));
+ ConnectMySQL(FMySQL);
FServerInfo := strpas(mysql_get_server_info(FMYSQL));
FHostInfo := strpas(mysql_get_host_info(FMYSQL));
end;
@@ -430,8 +426,7 @@ end;
procedure TConnectionName.ExecuteDirectMySQL(const query : string);
-var H,U,P : String;
- AMySQL : PMySQL;
+var AMySQL : PMySQL;
begin
CheckDisConnected;
@@ -439,11 +434,8 @@ begin
InitialiseMysql;
try
- H:=HostName;
- U:=UserName;
- P:=Password;
AMySQL := nil;
- ConnectMySQL(AMySQL,pchar(H),pchar(U),pchar(P));
+ ConnectMySQL(AMySQL);
try
if mysql_query(AMySQL,pchar(query))<>0 then
MySQLError(AMySQL,SErrExecuting,Self);
@@ -597,6 +589,7 @@ begin
// paramreplacestring kan een probleem geven bij postgres als hij niet meer gewoon $ is?
C.FStatement := stringsreplace(C.FStatement,ParamNames,ParamValues,[rfReplaceAll]);
end;
+ Log(detExecute, C.FStatement);
if mysql_query(FMySQL,Pchar(C.FStatement))<>0 then
begin
if not ForcedClose then
@@ -697,23 +690,18 @@ begin
begin
// Since mysql server version 5.0.3 string-fields with a length of more
// then 256 characters are suported
- if ASize>dsMaxStringSize then
- NewType := ftMemo
+ if AField^.ftype = FIELD_TYPE_STRING then
+ NewType := ftFixedChar
else
- begin
- if AField^.ftype = FIELD_TYPE_STRING then
- NewType := ftFixedChar
- else
- NewType := ftString;
+ NewType := ftString;
{$IFDEF MYSQL50_UP}
- if AField^.charsetnr = 63 then //BINARY vs. CHAR, VARBINARY vs. VARCHAR
- if NewType = ftFixedChar then
- NewType := ftBytes
- else
- NewType := ftVarBytes;
+ if AField^.charsetnr = 63 then //BINARY vs. CHAR, VARBINARY vs. VARCHAR
+ if NewType = ftFixedChar then
+ NewType := ftBytes
+ else
+ NewType := ftVarBytes;
{$ENDIF}
- NewSize := ASize;
- end;
+ NewSize := ASize;
end;
FIELD_TYPE_TINY_BLOB..FIELD_TYPE_BLOB:
begin
diff --git a/packages/fcl-db/src/sqldb/postgres/pqconnection.pp b/packages/fcl-db/src/sqldb/postgres/pqconnection.pp
index d17cc602ba..48c24e8b58 100644
--- a/packages/fcl-db/src/sqldb/postgres/pqconnection.pp
+++ b/packages/fcl-db/src/sqldb/postgres/pqconnection.pp
@@ -30,7 +30,6 @@ type
Destructor Destroy; override;
end;
- { TPQCursor }
// TField and TFieldDef only support a limited amount of fields.
// TFieldBinding and TExtendedFieldType can be used to map PQ types
// on standard fields and retain mapping info.
@@ -40,12 +39,14 @@ type
FieldDef : TSQLDBFieldDef; // FieldDef this is associated with
Index : Integer; // Tuple index
TypeOID : oid; // Filled with type OID if it is not standard.
- TypeName : String; // Filled with type name by getextendedfieldInfo
+ TypeName : String; // Filled with type name by GetExtendedFieldInfo
ExtendedFieldType: TExtendedFieldType; //
end;
PFieldBinding = ^TFieldBinding;
TFieldBindings = Array of TFieldBinding;
+ { TPQCursor }
+
TPQCursor = Class(TSQLCursor)
protected
Statement : string;
@@ -328,10 +329,8 @@ Var
I,J : Integer;
Res : PPGResult;
toid : oid;
- O : Array of integer;
begin
- SetLength(O,Length(Bindings));
For I:=0 to Length(Bindings)-1 do
if (Bindings[i].TypeOID>0) then
begin
@@ -453,7 +452,6 @@ function TPQConnection.Commit(trans : TSQLHandle) : boolean;
var
res : PPGresult;
tr : TPQTrans;
- i : Integer;
begin
result := false;
tr := trans as TPQTrans;
@@ -618,7 +616,6 @@ end;
procedure TPQConnection.CheckConnectionStatus(var conn: PPGconn);
var sErr: string;
- i: integer;
begin
if (PQstatus(conn) = CONNECTION_BAD) then
begin
@@ -651,7 +648,6 @@ var
MESSAGE_DETAIL: string;
MESSAGE_HINT: string;
STATEMENT_POSITION: string;
- i:Integer;
begin
if (PQresultStatus(res) <> PGRES_COMMAND_OK) then
begin
@@ -944,6 +940,13 @@ var ar : array of pchar;
ParamValues : array of string;
cash: int64;
+ function FormatTimeInterval(Time: TDateTime): string; // supports Time >= '24:00:00'
+ var hour, minute, second, millisecond: word;
+ begin
+ DecodeTime(Time, hour, minute, second, millisecond);
+ Result := Format('%.2d:%.2d:%.2d.%.3d',[Trunc(Time)*24+hour,minute,second,millisecond]);
+ end;
+
begin
with cursor as TPQCursor do
begin
@@ -964,7 +967,7 @@ begin
ftDate:
s := FormatDateTime('yyyy-mm-dd', AParams[i].AsDateTime);
ftTime:
- s := FormatDateTime('hh:nn:ss.zzz', AParams[i].AsDateTime);
+ s := FormatTimeInterval(AParams[i].AsDateTime);
ftFloat, ftBCD:
Str(AParams[i].AsFloat, s);
ftCurrency:
@@ -979,7 +982,7 @@ begin
s := AParams[i].AsString;
end; {case}
GetMem(ar[i],length(s)+1);
- StrMove(PChar(ar[i]),Pchar(s),Length(S)+1);
+ StrMove(PChar(ar[i]),PChar(s),Length(S)+1);
lengths[i]:=Length(s);
if (AParams[i].DataType in [ftBlob,ftMemo,ftGraphic,ftCurrency]) then
Formats[i]:=1
@@ -1038,7 +1041,6 @@ procedure TPQConnection.AddFieldDefs(cursor: TSQLCursor; FieldDefs : TfieldDefs)
var
i : integer;
size : integer;
- eft : TExtendedFieldType;
aoid : oid;
fieldtype : tfieldtype;
nFields : integer;
@@ -1046,7 +1048,6 @@ var
Q : TPQCursor;
FD : TSQLDBFieldDef;
FB : PFieldBinding;
- C : TFieldDefClass;
begin
B:=False;
diff --git a/packages/fcl-db/src/sqldb/sqldb.pp b/packages/fcl-db/src/sqldb/sqldb.pp
index f9c47cf010..096c9d2660 100644
--- a/packages/fcl-db/src/sqldb/sqldb.pp
+++ b/packages/fcl-db/src/sqldb/sqldb.pp
@@ -1,5 +1,5 @@
{
- Copyright (c) 2004-2013 by Joost van der Sluis, FPC contributors
+ Copyright (c) 2004-2014 by Joost van der Sluis, FPC contributors
SQL database & dataset
@@ -52,7 +52,7 @@ type
TSQLScript = class;
- TDBEventType = (detCustom, detPrepare, detExecute, detFetch, detCommit,detRollBack);
+ TDBEventType = (detCustom, detPrepare, detExecute, detFetch, detCommit, detRollBack);
TDBEventTypes = set of TDBEventType;
TDBLogNotifyEvent = Procedure (Sender : TSQLConnection; EventType : TDBEventType; Const Msg : String) of object;
@@ -144,8 +144,6 @@ type
TSQLConnection = class (TDatabase)
private
FFieldNameQuoteChars : TQuoteChars;
- FLogEvents: TDBEventTypes;
- FOnLog: TDBLogNotifyEvent;
FPassword : string;
FTransaction : TSQLTransaction;
FUserName : string;
@@ -153,11 +151,13 @@ type
FCharSet : string;
FRole : String;
FStatements : TFPList;
+ FLogEvents: TDBEventTypes;
+ FOnLog: TDBLogNotifyEvent;
function GetPort: cardinal;
procedure SetPort(const AValue: cardinal);
protected
FConnOptions : TConnOptions;
- FSQLFormatSettings : TFormatSettings;
+ FSQLFormatSettings : TFormatSettings;
// Updating of DB records is moved out of TSQLQuery.
// It is done here, so descendents can override it and implement DB-specific.
// One day, this may be factored out to a TSQLResolver class.
@@ -403,9 +403,11 @@ type
procedure ApplyFilter;
Function AddFilter(SQLstr : string) : string;
protected
+ Function Cursor : TSQLCursor;
+ Function LogEvent(EventType : TDBEventType) : Boolean;
+ Procedure Log(EventType : TDBEventType; Const Msg : String); virtual;
// abstract & virtual methods of TBufDataset
function Fetch : boolean; override;
- Function Cursor : TSQLCursor;
function LoadField(FieldDef : TFieldDef;buffer : pointer; out CreateBlob : boolean) : boolean; override;
procedure LoadBlobIntoBuffer(FieldDef: TFieldDef;ABlobBuf: PBufBlobField); override;
procedure ApplyRecUpdate(UpdateKind : TUpdateKind); override;
@@ -430,9 +432,8 @@ type
class function FieldDefsClass : TFieldDefsClass; override;
// IProviderSupport methods
function PSGetUpdateException(E: Exception; Prev: EUpdateError): EUpdateError; override;
-
- Function LogEvent(EventType : TDBEventType) : Boolean;
- Procedure Log(EventType : TDBEventType; Const Msg : String); virtual;
+ function PSGetTableName: string; override;
+ Property TableName : String Read FTableName Write FTableName; // alternative: procedure DoGetTableName
public
constructor Create(AOwner : TComponent); override;
destructor Destroy; override;
@@ -692,8 +693,8 @@ var
hour : word;
begin
DecodeTime(Time,hour,minute,second,millisecond);
- hour := hour + (trunc(Time) * 24);
- result := Format('%.2d:%.2d:%.2d.%.3d',[hour,minute,second,millisecond]);
+ hour := hour + trunc(Time)*24;
+ Result := Format('%.2d:%.2d:%.2d.%.3d',[hour,minute,second,millisecond]);
end;
{ TSQLDBFieldDefs }
@@ -1032,10 +1033,24 @@ end;
{ TSQLConnection }
-function TSQLConnection.StrToStatementType(s : string) : TStatementType;
+constructor TSQLConnection.Create(AOwner: TComponent);
+begin
+ inherited Create(AOwner);
+ FSQLFormatSettings:=DefaultSQLFormatSettings;
+ FFieldNameQuoteChars:=DoubleQuotes;
+ FLogEvents:=LogAllEvents; //match Property LogEvents...Default LogAllEvents
+ FStatements:=TFPList.Create;
+end;
-var T : TStatementType;
+destructor TSQLConnection.Destroy;
+begin
+ Connected:=False; // needed because we want to de-allocate statements
+ FreeAndNil(FStatements);
+ inherited Destroy;
+end;
+function TSQLConnection.StrToStatementType(s : string) : TStatementType;
+var T : TStatementType;
begin
S:=Lowercase(s);
for T:=stSelect to stRollback do
@@ -1059,9 +1074,8 @@ begin
end;
procedure TSQLConnection.UpdateIndexDefs(IndexDefs : TIndexDefs; TableName : string);
-
begin
-// Empty abstract
+ // Empty abstract
end;
procedure TSQLConnection.DoInternalConnect;
@@ -1081,13 +1095,6 @@ begin
FStatements.Clear;
end;
-destructor TSQLConnection.Destroy;
-begin
- Connected:=False; // needed because we want to de-allocate statements
- FreeAndNil(FStatements);
- inherited Destroy;
-end;
-
procedure TSQLConnection.StartTransaction;
begin
if not assigned(Transaction) then
@@ -1129,7 +1136,11 @@ begin
Cursor := AllocateCursorHandle;
Cursor.FStatementType := stUnknown;
+ If LogEvent(detPrepare) then
+ Log(detPrepare,SQL);
PrepareStatement(Cursor,ATransaction,SQL,Nil);
+ If LogEvent(detExecute) then
+ Log(detExecute,SQL);
Execute(Cursor,ATransaction, Nil);
UnPrepareStatement(Cursor);
finally;
@@ -1185,14 +1196,6 @@ begin
end;
-constructor TSQLConnection.Create(AOwner: TComponent);
-begin
- inherited Create(AOwner);
- FSQLFormatSettings:=DefaultSQLFormatSettings;
- FFieldNameQuoteChars:=DoubleQuotes;
- FStatements:=TFPList.Create;
-end;
-
procedure TSQLConnection.GetTableNames(List: TStrings; SystemTables: Boolean);
begin
if not SystemTables then
@@ -1400,23 +1403,22 @@ begin
end;
function TSQLConnection.GetAsSQLText(Field : TField) : string;
-
begin
- if (not assigned(field)) or field.IsNull then Result := 'Null'
+ if (not assigned(Field)) or Field.IsNull then Result := 'Null'
else case field.DataType of
ftString : Result := QuotedStr(Field.AsString);
ftDate : Result := '''' + FormatDateTime('yyyy-mm-dd',Field.AsDateTime,FSqlFormatSettings) + '''';
ftDateTime : Result := '''' + FormatDateTime('yyyy-mm-dd hh:nn:ss.zzz',Field.AsDateTime,FSqlFormatSettings) + '''';
ftTime : Result := QuotedStr(TimeIntervalToString(Field.AsDateTime));
else
- Result := field.asstring;
+ Result := Field.AsString;
end; {case}
end;
function TSQLConnection.GetAsSQLText(Param: TParam) : string;
begin
- if (not assigned(param)) or param.IsNull then Result := 'Null'
- else case param.DataType of
+ if (not assigned(Param)) or Param.IsNull then Result := 'Null'
+ else case Param.DataType of
ftGuid,
ftMemo,
ftFixedChar,
@@ -1429,7 +1431,7 @@ begin
ftFloat : Result := FloatToStr(Param.AsFloat, FSQLFormatSettings);
ftFMTBcd : Result := stringreplace(Param.AsString, DefaultFormatSettings.DecimalSeparator, FSQLFormatSettings.DecimalSeparator, []);
else
- Result := Param.asstring;
+ Result := Param.AsString;
end; {case}
end;
@@ -1508,7 +1510,7 @@ begin
end;
end;
-Function TSQLConnection.ConstructUpdateSQL(Query: TCustomSQLQuery) : string;
+function TSQLConnection.ConstructUpdateSQL(Query: TCustomSQLQuery): string;
var x : integer;
F : TField;
@@ -1663,15 +1665,11 @@ procedure TSQLTransaction.EndTransaction;
begin
Case Action of
- caCommit :
+ caCommit, caCommitRetaining :
Commit;
- caCommitRetaining :
- CommitRetaining;
caNone,
- caRollback :
+ caRollback, caRollbackRetaining :
RollBack;
- caRollbackRetaining :
- RollbackRetaining;
end;
end;
@@ -1697,14 +1695,14 @@ end;
procedure TSQLTransaction.Commit;
begin
- if active then
+ if Active then
begin
- closedatasets;
+ CloseDataSets;
If LogEvent(detCommit) then
Log(detCommit,SCommitting);
- if SQLConnection.commit(FTrans) then
+ if SQLConnection.Commit(FTrans) then
begin
- closeTrans;
+ CloseTrans;
FreeAndNil(FTrans);
end;
end;
@@ -1712,19 +1710,19 @@ end;
procedure TSQLTransaction.CommitRetaining;
begin
- if active then
+ if Active then
begin
If LogEvent(detCommit) then
Log(detCommit,SCommitRetaining);
- SQLConnection.commitRetaining(FTrans);
+ SQLConnection.CommitRetaining(FTrans);
end;
end;
procedure TSQLTransaction.Rollback;
begin
- if active then
+ if Active then
begin
- closedatasets;
+ CloseDataSets;
If LogEvent(detRollback) then
Log(detRollback,SRollingBack);
if SQLConnection.RollBack(FTrans) then
@@ -1737,7 +1735,7 @@ end;
procedure TSQLTransaction.RollbackRetaining;
begin
- if active then
+ if Active then
begin
If LogEvent(detRollback) then
Log(detRollback,SRollBackRetaining);
@@ -1769,7 +1767,7 @@ constructor TSQLTransaction.Create(AOwner : TComponent);
begin
inherited Create(AOwner);
FParams := TStringList.Create;
- Action:=caRollBack;
+ Action := caRollBack;
end;
destructor TSQLTransaction.Destroy;
@@ -1809,7 +1807,7 @@ Var
M : String;
begin
- If LogEVent(EventType) then
+ If LogEvent(EventType) then
begin
If (Name<>'') then
M:=Name+' : '+Msg
@@ -2063,9 +2061,9 @@ procedure TCustomSQLQuery.Prepare;
begin
FStatement.Prepare;
- If Assigned(Fstatement.FCursor) then
- With FStatement.FCursor do
- FInitFieldDef:=FSelectable;
+ if Assigned(FStatement.FCursor) then
+ with FStatement.FCursor do
+ FInitFieldDef := FSelectable;
end;
procedure TCustomSQLQuery.UnPrepare;
@@ -2117,6 +2115,11 @@ begin
Result:=Transaction as TSQLTransaction;
end;
+function TCustomSQLQuery.Cursor: TSQLCursor;
+begin
+ Result:=FStatement.Cursor;
+end;
+
function TCustomSQLQuery.Fetch : boolean;
begin
if Not Assigned(Cursor) then
@@ -2129,11 +2132,6 @@ begin
Result := not FIsEOF;
end;
-function TCustomSQLQuery.Cursor: TSQLCursor;
-begin
- Result:=FStatement.Cursor;
-end;
-
procedure TCustomSQLQuery.Execute;
begin
FStatement.Execute;
@@ -2170,13 +2168,16 @@ begin
// so let them do cleanup f.e. cancel pending queries and/or free resultset
if not Prepared then FStatement.DoUnprepare;
end;
+
if DefaultFields then
DestroyFields;
+
FIsEOF := False;
if assigned(FUpdateQry) then FreeAndNil(FUpdateQry);
if assigned(FInsertQry) then FreeAndNil(FInsertQry);
if assigned(FDeleteQry) then FreeAndNil(FDeleteQry);
// FRecordSize := 0;
+
inherited InternalClose;
end;
@@ -2189,18 +2190,18 @@ begin
try
FieldDefs.Clear;
- if not Assigned(Database) then DatabaseError(SErrDatabasenAssigned);
+ Prepare;
SQLConnection.AddFieldDefs(Cursor,FieldDefs);
finally
FLoadingFieldDefs := False;
- if Assigned(Cursor) then Cursor.FInitFieldDef := false;
+ if assigned(Cursor) then Cursor.FInitFieldDef := False;
end;
end;
procedure TCustomSQLQuery.InternalOpen;
var counter, fieldc : integer;
- f : TField;
+ F : TField;
IndexFields : TStrings;
begin
if IsReadFromPacket then
@@ -2247,7 +2248,7 @@ begin
ExtractStrings([';'],[' '],pchar(ServerIndexDefs[counter].fields),IndexFields);
for fieldc := 0 to IndexFields.Count-1 do
begin
- F := Findfield(IndexFields[fieldc]);
+ F := FindField(IndexFields[fieldc]);
if F <> nil then
F.ProviderFlags := F.ProviderFlags + [pfInKey];
end;
@@ -2488,6 +2489,11 @@ begin
Result := EUpdateError.Create(SOnUpdateError, E.Message, ErrorCode, PrevErrorCode, E);
end;
+function TCustomSQLQuery.PSGetTableName: string;
+begin
+ Result := FTableName;
+end;
+
{ TSQLScript }
procedure TSQLScript.ExecuteStatement(SQLStatement: TStrings;
@@ -2686,11 +2692,12 @@ begin
inherited DoInternalConnect;
CreateProxy;
FProxy.CharSet:=Self.CharSet;
- FProxy.Role:=Self.Role;
FProxy.DatabaseName:=Self.DatabaseName;
FProxy.HostName:=Self.HostName;
- FProxy.UserName:=Self.UserName;
+ FProxy.LogEvents:=Self.LogEvents;
FProxy.Password:=Self.Password;
+ FProxy.Role:=Self.Role;
+ FProxy.UserName:=Self.UserName;
FProxy.FTransaction:=Self.Transaction;
D:=GetConnectionDef(ConnectorType);
D.ApplyParams(Params,FProxy);
@@ -2877,8 +2884,7 @@ function TSQLConnector.GetSchemaInfoSQL(SchemaType: TSchemaType;
SchemaObjectName, SchemaPattern: string): string;
begin
CheckProxy;
- Result:=FProxy.GetSchemaInfoSQL(SchemaType, SchemaObjectName, SchemaPattern
- );
+ Result:=FProxy.GetSchemaInfoSQL(SchemaType, SchemaObjectName, SchemaPattern);
end;
diff --git a/packages/fcl-db/src/sqldb/sqlite/sqlite3conn.pp b/packages/fcl-db/src/sqldb/sqlite/sqlite3conn.pp
index 3845a015c5..4984a8fe29 100644
--- a/packages/fcl-db/src/sqldb/sqlite/sqlite3conn.pp
+++ b/packages/fcl-db/src/sqldb/sqlite/sqlite3conn.pp
@@ -111,6 +111,9 @@ type
class function TypeName: string; override;
class function ConnectionClass: TSQLConnectionClass; override;
class function Description: string; override;
+ class Function DefaultLibraryName : String; override;
+ class Function LoadFunction : TLibraryLoadFunction; override;
+ class Function UnLoadFunction : TLibraryUnLoadFunction; override;
class function LoadedLibraryName: string; override;
end;
@@ -735,7 +738,8 @@ begin
Inherited;
if Length(databasename)=0 then
DatabaseError(SErrNoDatabaseName,self);
- InitializeSqlite(SQLiteDefaultLibrary);
+ if (SQLiteLoadedLibrary='') then
+ InitializeSqlite(SQLiteDefaultLibrary);
str1:= databasename;
checkerror(sqlite3_open(pchar(str1),@fhandle));
if (Length(Password)>0) and assigned(sqlite3_key) then
@@ -1027,11 +1031,26 @@ begin
Result := 'Connect to a SQLite3 database directly via the client library';
end;
+class function TSQLite3ConnectionDef.DefaultLibraryName: string;
+begin
+ Result := SQLiteDefaultLibrary;
+end;
+
class function TSQLite3ConnectionDef.LoadedLibraryName: string;
begin
Result := SQLiteLoadedLibrary;
end;
+class function TSQLite3ConnectionDef.LoadFunction: TLibraryLoadFunction;
+begin
+ Result:=@InitializeSqliteANSI; //the function taking the filename argument
+end;
+
+class function TSQLite3ConnectionDef.UnLoadFunction: TLibraryUnLoadFunction;
+begin
+ Result:=@ReleaseSQLite;
+end;
+
initialization
RegisterConnection(TSQLite3ConnectionDef);
diff --git a/packages/fcl-db/src/sqlite/customsqliteds.pas b/packages/fcl-db/src/sqlite/customsqliteds.pas
index 1388d9809b..6ee6dc3c53 100644
--- a/packages/fcl-db/src/sqlite/customsqliteds.pas
+++ b/packages/fcl-db/src/sqlite/customsqliteds.pas
@@ -68,16 +68,19 @@ type
FFieldRow: PChar;
FField: TField;
FFieldOffset: Integer;
- FRowSize: Integer;
- FPosition: LongInt;
+ FRowSize: Int64;
+ FPosition: Int64;
FWriteMode: Boolean;
+ protected
+ function GetPosition: Int64; override;
+ function GetSize: Int64; override;
public
constructor Create(Dataset: TCustomSqliteDataset; Field: TField;
FieldOffset: Integer; EditItem: PDataRecord; WriteMode: Boolean);
destructor Destroy; override;
function Write(const Buffer; Count: LongInt): LongInt; override;
function Read(var Buffer; Count: LongInt): LongInt; override;
- function Seek(Offset: LongInt; Origin: Word): LongInt; override;
+ function Seek(const Offset: int64; Origin: TSeekOrigin): int64; override;
end;
//callback types
@@ -345,6 +348,16 @@ end;
// TDSStream
+function TDSStream.GetPosition: Int64;
+begin
+ Result:=FPosition;
+end;
+
+function TDSStream.GetSize: Int64;
+begin
+ Result:=FRowSize;
+end;
+
constructor TDSStream.Create(Dataset: TCustomSqliteDataset; Field: TField;
FieldOffset: Integer; EditItem: PDataRecord; WriteMode: Boolean);
begin
@@ -369,12 +382,12 @@ begin
inherited Destroy;
end;
-function TDSStream.Seek(Offset: LongInt; Origin: Word): LongInt;
+function TDSStream.Seek(const Offset: int64; Origin: TSeekOrigin): int64;
begin
Case Origin of
- soFromBeginning : FPosition := Offset;
- soFromEnd : FPosition := FRowSize + Offset;
- soFromCurrent : FPosition := FPosition + Offset;
+ soBeginning : FPosition := Offset;
+ soEnd : FPosition := FRowSize + Offset;
+ soCurrent : FPosition := FPosition + Offset;
end;
Result := FPosition;
end;
diff --git a/packages/fcl-db/tests/database.ini.txt b/packages/fcl-db/tests/database.ini.txt
index 9f9c85fd7b..7bc1d15f1f 100644
--- a/packages/fcl-db/tests/database.ini.txt
+++ b/packages/fcl-db/tests/database.ini.txt
@@ -1,39 +1,65 @@
; This file contains several sections, one for each database type.
-; Select here which section has to be used currently,
+; Select here which section is to be used currently,
; i.e. which database you want to use
[Database]
type=bufdataset
+; These sections are for the various types of databases:
-; These sections are for the several SQLDB-types of databases:
+[interbase]
+; Interbase or Firebird database:
-; PostgreSQL database:
-[postgresql]
-; The connector specifies the DB-component that has to be used. The 'sql'
+; The connector specifies the DB component that has to be used. The 'sql'
; connector tests the SQLDB components
connector=sql
-
; Here you can give some parameters, which are specific for each connector. The
; SQL connector uses this parameter to specify the connection that should be
-; used;
-connectorparams=postgresql
+; used - i.e. the database server;
+connectorparams=interbase
; The name of the database. The database could be empty. You only need read and
; write rights.
-name=testdb
+name=/opt/firebird/data/testdb.fdb
; user to log in with
-user=
+; Default username/password for Interbase/Firebird
+; is sysdba/masterkey. Change to your situation.
+user=sysdba
; password to log in with
-password=
+; masterke or masterkey is default for Interbase/Firebird
+password=masterkey
-; hostname of the database-server
-hostname=127.0.0.1
+; hostname or IP address
+; of the database server
+hostname=localhost
+
+; SQL command log file (for sqldb databases)
+; will be appended to each run
+; uncomment to use
+;logfile=sql.log
+
+
+[firebirdembedded]
+; Firebird embedded
+; Same as Firebird, except we leave the host name blank
+; and specify a db without path.
+; Make sure your Firebird embedded library files (.dll/.so/.dylib)
+; are installed; e.g. on Windows, you can put them in this
+; directory.
+; Test code will create db if it doesn't exist; you can
+; delete an existing db file before the test to start
+; fresh.
+connector=sql
+connectorparams=interbase
+name=fbembedtest.fdb
+user=sysdba
+password=masterkey
+hostname=
-; MySQL 4.0 database:
[mysql40]
+; MySQL 4.0 database:
connector=sql
connectorparams=mysql40
name=testdb
@@ -41,8 +67,8 @@ user=root
password=
hostname=127.0.0.1
-; MySQL 4.1 database:
[mysql41]
+; MySQL 4.1 database:
connector=sql
connectorparams=mysql41
name=testdb
@@ -50,8 +76,8 @@ user=root
password=
hostname=127.0.0.1
-; MySQL 5.0 database:
[mysql50]
+; MySQL 5.0 database:
connector=sql
connectorparams=mysql50
name=testdb
@@ -59,8 +85,8 @@ user=root
password=
hostname=127.0.0.1
-; MySQL 5.1 database:
[mysql51]
+; MySQL 5.1 database:
connector=sql
connectorparams=mysql51
name=testdb
@@ -68,8 +94,8 @@ user=root
password=
hostname=127.0.0.1
-; MySQL 5.5 database:
[mysql55]
+; MySQL 5.5 database:
connector=sql
connectorparams=mysql55
name=testdb
@@ -77,60 +103,17 @@ user=root
password=
hostname=127.0.0.1
-; Oracle database:
-[oracle]
-connector=sql
-connectorparams=oracle
-name=xe
-user=system
-password=
-hostname=127.0.0.1
-
-; Interbase or Firebird database:
-[interbase]
+[mysql56]
+; MySQL 5.6 database:
connector=sql
-connectorparams=interbase
-name=/opt/firebird/data/testdb.fdb
-; Default username/password for Interbase/Firebird
-; is sysdba/masterkey. Change to your situation.
-user=sysdba
-password=masterkey
-hostname=localhost
-
-; Firebird embedded
-; Same as Firebird, except we leave the host name blank
-; and specify a db without path.
-; Make sure your Firebird embedded library files (.dll/.so/.dylib)
-; are installed; e.g. on Windows, you can put them in this
-; directory.
-; Test code will create db if it doesn't exist; you can
-; delete an existing db file before the test to start
-; fresh.
-[firebirdembedded]
-connector=sql
-connectorparams=interbase
-name=fbembedtest.fdb
-user=sysdba
-password=masterkey
-hostname=
-
-; ODBC database:
-[odbc]
-connector=sql
-connectorparams=odbc
+connectorparams=mysql56
name=testdb
user=root
password=
hostname=127.0.0.1
-; SQLite database:
-[sqlite]
-connector=sql
-connectorparams=sqlite3
-name=test.db
-
-; MS SQL Server database:
[mssql]
+; MS SQL Server database:
connector=sql
connectorparams=mssql
name=pubs
@@ -145,8 +128,42 @@ password=
; See mssqlconn documentation
hostname=127.0.0.1
-; Sybase ASE database
+[odbc]
+; ODBC database:
+connector=sql
+connectorparams=odbc
+name=testdb
+user=root
+password=
+hostname=127.0.0.1
+
+[oracle]
+; Oracle database:
+connector=sql
+connectorparams=oracle
+; SID or instance name:
+name=xe
+user=system
+password=
+hostname=127.0.0.1
+
+[postgresql]
+; PostgreSQL database:
+connector=sql
+connectorparams=postgresql
+name=testdb
+user=
+password=
+hostname=127.0.0.1
+
+[sqlite]
+; SQLite database:
+connector=sql
+connectorparams=sqlite3
+name=test.db
+
[sybase]
+; Sybase ASE database
connector=sql
connectorparams=sybase
name=testdb
@@ -157,6 +174,9 @@ password=
; See mssqlconn documentation
hostname=127.0.0.1
+; end of sqldb relational databases
+; next are file/memory-based databases:
+
[dbf]
; TDBf: DBase/FoxPro database:
connector=dbf
@@ -168,7 +188,6 @@ connector=dbf
; 30=Visual FoxPro
connectorparams=4
-
[dbase3]
; TDBf: DBase/FoxPro database:
connector=dbf
@@ -197,16 +216,16 @@ connector=dbf
; 30=Visual FoxPro
connectorparams=25
-; MemDS in memory dataset:
[memds]
+; MemDS simple in memory dataset:
connector=memds
-; BufDataset in memory dataset:
[bufdataset]
+; BufDataset in memory dataset:
connector=bufdataset
-; sdfdataset file-based dataset:
[sdfdataset]
+; sdfdataset file-based dataset:
connector=sdfds
; subdirectory for the sdf files:
name=sdftest \ No newline at end of file
diff --git a/packages/fcl-db/tests/sdfdstoolsunit.pas b/packages/fcl-db/tests/sdfdstoolsunit.pas
index 6632a4621e..d99fe172f3 100644
--- a/packages/fcl-db/tests/sdfdstoolsunit.pas
+++ b/packages/fcl-db/tests/sdfdstoolsunit.pas
@@ -7,7 +7,8 @@ interface
uses
Classes, SysUtils, toolsunit,
db,
- SdfData;
+ SdfData
+ ;
type
diff --git a/packages/fcl-db/tests/sqldbtoolsunit.pas b/packages/fcl-db/tests/sqldbtoolsunit.pas
index 329c730184..0451e5155f 100644
--- a/packages/fcl-db/tests/sqldbtoolsunit.pas
+++ b/packages/fcl-db/tests/sqldbtoolsunit.pas
@@ -40,13 +40,16 @@ type
FQuery : TSQLQuery;
FUniDirectional: boolean;
procedure CreateFConnection;
- procedure CreateFTransaction;
Function CreateQuery : TSQLQuery;
protected
procedure SetTestUniDirectional(const AValue: boolean); override;
function GetTestUniDirectional: boolean; override;
procedure CreateNDatasets; override;
procedure CreateFieldDataset; override;
+ // If logging is enabled, this procedure will receive the event
+ // from the SQLDB logging system
+ // For custom logging call with sender nil and eventtype detCustom
+ procedure DoLogEvent(Sender: TSQLConnection; EventType: TDBEventType; Const Msg : String);
procedure DropNDatasets; override;
procedure DropFieldDataset; override;
Function InternalGetNDataset(n : integer) : TDataset; override;
@@ -56,6 +59,7 @@ type
destructor Destroy; override;
constructor Create; override;
procedure ExecuteDirect(const SQL: string);
+ // Issue a commit(retaining) for databases that need it (e.g. in DDL)
procedure CommitDDL;
property Connection : TSQLConnection read FConnection;
property Transaction : TSQLTransaction read FTransaction;
@@ -65,7 +69,9 @@ type
var SQLConnType : TSQLConnType;
SQLServerType : TSQLServerType;
FieldtypeDefinitions : Array [TFieldType] of String[20];
-
+
+function IdentifierCase(const s: string): string;
+
implementation
uses StrUtils;
@@ -79,46 +85,46 @@ type
const
FieldtypeDefinitionsConst : Array [TFieldType] of String[20] =
(
- '',
- 'VARCHAR(10)',
- 'SMALLINT',
- 'INTEGER',
- '', // ftWord
- 'BOOLEAN',
- 'DOUBLE PRECISION', // ftFloat
- '', // ftCurrency
- 'DECIMAL(18,4)',// ftBCD
- 'DATE',
- 'TIME',
- 'TIMESTAMP', // ftDateTime
- '', // ftBytes
- '', // ftVarBytes
- '', // ftAutoInc
- 'BLOB', // ftBlob
- 'BLOB', // ftMemo
- 'BLOB', // ftGraphic
- '',
- '',
- '',
- '',
- '',
- 'CHAR(10)', // ftFixedChar
- '', // ftWideString
- 'BIGINT', // ftLargeInt
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '', // ftGuid
- 'TIMESTAMP', // ftTimestamp
- 'NUMERIC(18,6)',// ftFmtBCD
- '', // ftFixedWideChar
- '' // ftWideMemo
+ {ftUnknown} '',
+ {ftString} 'VARCHAR(10)',
+ {ftSmallint} 'SMALLINT',
+ {ftInteger} 'INTEGER',
+ {ftWord} '',
+ {ftBoolean} 'BOOLEAN',
+ {ftFloat} 'DOUBLE PRECISION',
+ {ftCurrency} '',
+ {ftBCD} 'DECIMAL(18,4)',
+ {ftDate} 'DATE',
+ {ftTime} 'TIME',
+ {ftDateTime} 'TIMESTAMP',
+ {ftBytes} '',
+ {ftVarBytes} '',
+ {ftAutoInc} '',
+ {ftBlob} 'BLOB',
+ {ftMemo} 'BLOB',
+ {ftGraphic} 'BLOB',
+ {ftFmtMemo} '',
+ {ftParadoxOle} '',
+ {ftDBaseOle} '',
+ {ftTypedBinary} '',
+ {ftCursor} '',
+ {ftFixedChar} 'CHAR(10)',
+ {ftWideString} '',
+ {ftLargeint} 'BIGINT',
+ {ftADT} '',
+ {ftArray} '',
+ {ftReference} '',
+ {ftDataSet} '',
+ {ftOraBlob} '',
+ {ftOraClob} '',
+ {ftVariant} '',
+ {ftInterface} '',
+ {ftIDispatch} '',
+ {ftGuid} '',
+ {ftTimeStamp} 'TIMESTAMP',
+ {ftFMTBcd} 'NUMERIC(18,6)',
+ {ftFixedWideChar} '',
+ {ftWideMemo} ''
);
// names as returned by ODBC SQLGetInfo(..., SQL_DBMS_NAME, ...) and GetConnectionInfo(citServerType)
@@ -138,13 +144,24 @@ const
(ssMySQL,ssMySQL,ssMySQL,ssMySQL,ssMySQL,ssMySQL,ssPostgreSQL,ssFirebird,ssUnknown,ssOracle,ssSQLite,ssMSSQL,ssSybase);
+function IdentifierCase(const s: string): string;
+begin
+ // format unquoted identifier name as required by SQL servers
+ case SQLServerType of
+ ssPostgreSQL: Result := LowerCase(s); // PostgreSQL stores unquoted identifiers in lowercase (incompatible with the SQL standard)
+ ssInterbase,
+ ssFirebird : Result := UpperCase(s); // Dialect 1 requires uppercase; dialect 3 is case agnostic
+ else
+ Result := s; // mixed case
+ end;
+end;
+
{ TSQLDBConnector }
procedure TSQLDBConnector.CreateFConnection;
var t : TSQLConnType;
i : integer;
s : string;
- TempTrans: TSQLTransaction;
begin
for t := low(SQLConnTypesNames) to high(SQLConnTypesNames) do
if UpperCase(dbconnectorparams) = SQLConnTypesNames[t] then SQLConnType := t;
@@ -167,12 +184,21 @@ begin
if not assigned(Fconnection) then writeln('Invalid database type, check if a valid database type for your achitecture was provided in the file ''database.ini''');
+ FTransaction := TSQLTransaction.Create(nil);
+
with Fconnection do
begin
+ Transaction := FTransaction;
DatabaseName := dbname;
UserName := dbuser;
Password := dbpassword;
HostName := dbhostname;
+ if dblogfilename<>'' then
+ begin
+ LogEvents:=[detCustom,detCommit,detExecute,detRollBack];
+ OnLog:=@DoLogEvent;
+ end;
+
if (dbhostname='') and (SQLConnType=interbase) then
begin
// Firebird embedded: create database file if it doesn't yet exist
@@ -214,6 +240,9 @@ begin
end;
ssMSSQL, ssSybase:
// todo: Sybase: copied over MSSQL; verify correctness
+ // note: test database should have case-insensitive collation
+ // todo: SQL Server 2008 and later supports DATE, TIME and DATETIME2 data types,
+ // but these are not supported by FreeTDS yet
begin
FieldtypeDefinitions[ftBoolean] := 'BIT';
FieldtypeDefinitions[ftFloat] := 'FLOAT';
@@ -230,33 +259,58 @@ begin
FieldtypeDefinitions[ftFixedWideChar] := 'NCHAR(10)';
//FieldtypeDefinitions[ftWideMemo] := 'NTEXT'; // Sybase has UNITEXT?
- TempTrans:=TSQLTransaction.Create(nil);
- FConnection.Transaction:=TempTrans;
- TempTrans.StartTransaction;
// Proper blob support:
FConnection.ExecuteDirect('SET TEXTSIZE 2147483647');
- // When running CREATE TABLE statements, allow NULLs by default - without
- // having to specify NULL all the time:
- // http://msdn.microsoft.com/en-us/library/ms174979.aspx
- FConnection.ExecuteDirect('SET ANSI_NULL_DFLT_ON ON');
- TempTrans.Commit;
- TempTrans.Free;
- FConnection.Transaction:=nil;
-
+ if SQLServerType=ssMSSQL then
+ begin
+ // When running CREATE TABLE statements, allow NULLs by default - without
+ // having to specify NULL all the time:
+ // http://msdn.microsoft.com/en-us/library/ms174979.aspx
+ //
+ // Padding character fields is expected by ANSI and sqldb, as well as
+ // recommended by Microsoft:
+ // http://msdn.microsoft.com/en-us/library/ms187403.aspx
+ FConnection.ExecuteDirect('SET ANSI_NULL_DFLT_ON ON; SET ANSI_PADDING ON; SET ANSI_WARNINGS OFF');
+ end;
+ if SQLServerType=ssSybase then
+ begin
+ // Evaluate NULL expressions according to ANSI SQL:
+ // http://infocenter.sybase.com/archive/index.jsp?topic=/com.sybase.help.ase_15.0.commands/html/commands/commands85.htm
+ FConnection.ExecuteDirect('SET ANSINULL ON');
+
+ { Tests require these database options set
+ 1) with ddl in tran; e.g.
+ use master
+ go
+ sp_dboption pubs3, 'ddl in tran', true
+ go
+ Avoid errors like
+ The 'CREATE TABLE' command is not allowed within a multi-statement transaction in the 'test' database.
+ 2) allow nulls by default, e.g.
+ use master
+ go
+ sp_dboption pubs3, 'allow nulls by default', true
+ go
+ }
+ end;
+ FTransaction.Commit;
end;
- ssMySQL:
+ ssMySQL:
begin
- // Add into my.ini: sql-mode="...,PAD_CHAR_TO_FULL_LENGTH,ANSI_QUOTES"
FieldtypeDefinitions[ftWord] := 'SMALLINT UNSIGNED';
// MySQL recognizes BOOLEAN, but as synonym for TINYINT, not true sql boolean datatype
FieldtypeDefinitions[ftBoolean] := '';
- // Use 'DATETIME' for datetime-fields instead of timestamp, because
+ // Use 'DATETIME' for datetime fields instead of timestamp, because
// mysql's timestamps are only valid in the range 1970-2038.
// Downside is that fields defined as 'TIMESTAMP' aren't tested
FieldtypeDefinitions[ftDateTime] := 'DATETIME';
FieldtypeDefinitions[ftBytes] := 'BINARY(5)';
FieldtypeDefinitions[ftVarBytes] := 'VARBINARY(10)';
FieldtypeDefinitions[ftMemo] := 'TEXT';
+ // Add into my.ini: sql-mode="...,PAD_CHAR_TO_FULL_LENGTH,ANSI_QUOTES" or set it explicitly by:
+ // PAD_CHAR_TO_FULL_LENGTH to avoid trimming trailing spaces contrary to SQL standard (MySQL 5.1.20+)
+ FConnection.ExecuteDirect('SET SESSION sql_mode=''STRICT_ALL_TABLES,PAD_CHAR_TO_FULL_LENGTH,ANSI_QUOTES''');
+ FTransaction.Commit;
end;
ssOracle:
begin
@@ -276,6 +330,8 @@ begin
end;
ssSQLite:
begin
+ // SQLite stores all values with decimal point as 8 byte (double) IEEE floating point numbers
+ // (it causes that some tests (for BCD, FmtBCD fields) fails for exact numeric values, which can't be lossless expressed as 8 byte floating point values)
FieldtypeDefinitions[ftWord] := 'WORD';
FieldtypeDefinitions[ftCurrency] := 'CURRENCY';
FieldtypeDefinitions[ftBytes] := 'BINARY(5)';
@@ -312,11 +368,12 @@ begin
// Some db's do not support times > 24:00:00
testTimeValues[3]:='13:25:15.000';
testValues[ftTime,3]:='13:25:15.000';
- if SQLServerType in [ssFirebird, ssInterbase, ssOracle] then
+ if SQLServerType in [ssFirebird, ssInterbase, ssMSSQL, ssOracle] then
begin
- // Firebird, Oracle do not support time = 24:00:00
- testTimeValues[2]:='23:00:00.000';
- testValues[ftTime,2]:='23:00:00.000';
+ // Firebird, Oracle, MS SQL Server do not support time = 24:00:00
+ // MS SQL Server "datetime" supports only time up to 23:59:59.997
+ testTimeValues[2]:='23:59:59.997';
+ testValues[ftTime,2]:='23:59:59.997';
end;
end;
@@ -335,22 +392,11 @@ begin
testValues[ftCurrency,i] := QuotedStr(CurrToStr(testCurrencyValues[i]));
// SQLite does not support fixed length CHAR datatype
- // MySQL by default trimms trailing spaces on retrieval; so set sql-mode="PAD_CHAR_TO_FULL_LENGTH" - supported from MySQL 5.1.20
- // MSSQL set SET ANSI_PADDING ON
- // todo: verify Sybase behaviour
if SQLServerType in [ssSQLite] then
for i := 0 to testValuesCount-1 do
testValues[ftFixedChar,i] := PadRight(testValues[ftFixedChar,i], 10);
end;
-procedure TSQLDBConnector.CreateFTransaction;
-
-begin
- Ftransaction := tsqltransaction.create(nil);
- with Ftransaction do
- database := Fconnection;
-end;
-
function TSQLDBConnector.CreateQuery: TSQLQuery;
begin
@@ -363,6 +409,8 @@ begin
end;
end;
+
+
procedure TSQLDBConnector.SetTestUniDirectional(const AValue: boolean);
begin
FUniDirectional:=avalue;
@@ -389,12 +437,17 @@ begin
FTransaction.CommitRetaining;
for countID := 1 to MaxDataSet do
- Fconnection.ExecuteDirect('insert into FPDEV (ID,NAME)' +
+ Fconnection.ExecuteDirect('insert into FPDEV (ID,NAME) ' +
'values ('+inttostr(countID)+',''TestName'+inttostr(countID)+''')');
Ftransaction.Commit;
except
- if Ftransaction.Active then Ftransaction.Rollback
+ on E: Exception do begin
+ if dblogfilename<>'' then
+ DoLogEvent(nil,detCustom,'Exception running CreateNDatasets: '+E.Message);
+ if Ftransaction.Active then
+ Ftransaction.Rollback
+ end;
end;
end;
@@ -491,12 +544,30 @@ begin
Ftransaction.Commit;
except
on E: Exception do begin
- //writeln(E.Message);
+ if dblogfilename<>'' then
+ DoLogEvent(nil,detCustom,'Exception running CreateFieldDataset: '+E.Message);
if Ftransaction.Active then Ftransaction.Rollback;
end;
end;
end;
+procedure TSQLDBConnector.DoLogEvent(Sender: TSQLConnection;
+ EventType: TDBEventType; const Msg: String);
+var
+ Category: string;
+begin
+ case EventType of
+ detCustom: Category:='Custom';
+ detPrepare: Category:='Prepare';
+ detExecute: Category:='Execute';
+ detFetch: Category:='Fetch';
+ detCommit: Category:='Commit';
+ detRollBack: Category:='Rollback';
+ else Category:='Unknown event. Please fix program code.';
+ end;
+ LogMessage(Category,Msg);
+end;
+
procedure TSQLDBConnector.DropNDatasets;
begin
if assigned(FTransaction) then
@@ -507,7 +578,11 @@ begin
Fconnection.ExecuteDirect('DROP TABLE FPDEV');
Ftransaction.Commit;
Except
- if Ftransaction.Active then Ftransaction.Rollback
+ on E: Exception do begin
+ if dblogfilename<>'' then
+ DoLogEvent(nil,detCustom,'Exception running DropNDatasets: '+E.Message);
+ if Ftransaction.Active then Ftransaction.Rollback
+ end;
end;
end;
end;
@@ -522,7 +597,11 @@ begin
Fconnection.ExecuteDirect('DROP TABLE FPDEV_FIELD');
Ftransaction.Commit;
Except
- if Ftransaction.Active then Ftransaction.Rollback
+ on E: Exception do begin
+ if dblogfilename<>'' then
+ DoLogEvent(nil,detCustom,'Exception running DropFieldDataset: '+E.Message);
+ if Ftransaction.Active then Ftransaction.Rollback
+ end;
end;
end;
end;
@@ -643,9 +722,7 @@ constructor TSQLDBConnector.Create;
begin
FConnection := nil;
CreateFConnection;
- CreateFTransaction;
FQuery := CreateQuery;
- FConnection.Transaction := FTransaction;
Inherited;
end;
diff --git a/packages/fcl-db/tests/testbufdatasetstreams.pas b/packages/fcl-db/tests/testbufdatasetstreams.pas
index bc07bc898a..97da51ad13 100644
--- a/packages/fcl-db/tests/testbufdatasetstreams.pas
+++ b/packages/fcl-db/tests/testbufdatasetstreams.pas
@@ -760,12 +760,12 @@ end;
procedure TTestBufDatasetStreams.SetUp;
begin
- DBConnector.StartTest;
+ DBConnector.StartTest(TestName);
end;
procedure TTestBufDatasetStreams.TearDown;
begin
- DBConnector.StopTest;
+ DBConnector.StopTest(TestName);
end;
diff --git a/packages/fcl-db/tests/testdatasources.pas b/packages/fcl-db/tests/testdatasources.pas
index 4f99dc7dfb..cb5de0df6b 100644
--- a/packages/fcl-db/tests/testdatasources.pas
+++ b/packages/fcl-db/tests/testdatasources.pas
@@ -58,12 +58,12 @@ end;
procedure TTestDatasources.SetUp;
begin
- DBConnector.StartTest;
+ DBConnector.StartTest(TestName);
end;
procedure TTestDatasources.TearDown;
begin
- DBConnector.StopTest;
+ DBConnector.StopTest(TestName);
end;
{procedure TTestDatasources.TestDataEventsResync;
diff --git a/packages/fcl-db/tests/testdbbasics.pas b/packages/fcl-db/tests/testdbbasics.pas
index b4eaf58d4d..760806727a 100644
--- a/packages/fcl-db/tests/testdbbasics.pas
+++ b/packages/fcl-db/tests/testdbbasics.pas
@@ -24,6 +24,7 @@ type
procedure TestcalculatedField_OnCalcfields(DataSet: TDataSet);
published
+ // fields
procedure TestSetFieldValues;
procedure TestGetFieldValues;
@@ -38,13 +39,19 @@ type
procedure TestSupportTimeFields;
procedure TestSupportCurrencyFields;
procedure TestSupportBCDFields;
- procedure TestSupportfmtBCDFields;
+ procedure TestSupportFmtBCDFields;
procedure TestSupportFixedStringFields;
procedure TestSupportBlobFields;
procedure TestSupportMemoFields;
- procedure TestDoubleClose;
+ procedure TestBlobBlobType; //bug 26064
+
procedure TestCalculatedField;
+ procedure TestCanModifySpecialFields;
+
+ // dataset
+ procedure TestDoubleClose;
+ procedure TestFieldDefsUpdate;
procedure TestAssignFieldftString;
procedure TestAssignFieldftFixedChar;
procedure TestSelectQueryBasics;
@@ -52,13 +59,13 @@ type
procedure TestMove; // bug 5048
procedure TestActiveBufferWhenClosed;
procedure TestEOFBOFClosedDataset;
- procedure TestLayoutChangedEvents;
- procedure TestDataEventsResync;
procedure TestRecordcountAfterReopen; // partly bug 8228
- procedure TestdeFieldListChange;
procedure TestExceptionLocateClosed; // bug 13938
- procedure TestCanModifySpecialFields;
procedure TestDetectionNonMatchingDataset;
+ // events
+ procedure TestLayoutChangedEvents;
+ procedure TestDataEventsResync;
+ procedure TestdeFieldListChange;
end;
{ TTestBufDatasetDBBasics }
@@ -68,16 +75,16 @@ type
procedure FTestXMLDatasetDefinition(ADataset : TDataset);
procedure TestAddIndexFieldType(AFieldType : TFieldType; ActiveDS : boolean);
published
- procedure TestClosedIndexFieldNames; // bug 16695
procedure TestFileNameProperty;
procedure TestClientDatasetAsMemDataset;
procedure TestSaveAsXML;
procedure TestIsEmpty;
+ procedure TestReadOnly;
+ // cached updates
procedure TestBufDatasetCancelUpd; //bug 6938
procedure TestBufDatasetCancelUpd1;
procedure TestMultipleDeleteUpdateBuffer;
procedure TestDoubleDelete;
- procedure TestReadOnly;
procedure TestMergeChangeLog;
// index tests
procedure TestAddIndexInteger;
@@ -88,6 +95,7 @@ type
procedure TestAddIndexDateTime;
procedure TestAddIndexCurrency;
procedure TestAddIndexBCD;
+ procedure TestAddIndexFmtBCD;
procedure TestAddIndex;
procedure TestAddDescIndex;
@@ -98,7 +106,8 @@ type
procedure TestAddIndexEditDS;
procedure TestIndexFieldNames;
- procedure TestIndexFieldNamesAct;
+ procedure TestIndexFieldNamesActive;
+ procedure TestIndexFieldNamesClosed; // bug 16695
procedure TestIndexCurRecord;
@@ -154,9 +163,11 @@ type
procedure TestBug7007;
procedure TestBug6893;
procedure TestRequired;
- procedure TestOldValueObsolete;
- procedure TestOldValue;
procedure TestModified;
+ // fields
+ procedure TestFieldOldValueObsolete;
+ procedure TestFieldOldValue;
+ procedure TestChangeBlobFieldBeforePost; //bug 15376
end;
@@ -310,34 +321,6 @@ begin
end;
end;
-procedure TTestDBBasics.TestdeFieldListChange;
-
-var i,count : integer;
- aDatasource : TDataSource;
- aDatalink : TDataLink;
- ds : TDataset;
-
-begin
- aDatasource := TDataSource.Create(nil);
- aDatalink := TTestDataLink.Create;
- aDatalink.DataSource := aDatasource;
- ds := DBConnector.GetNDataset(1);
- with ds do
- begin
- aDatasource.DataSet := ds;
- DataEvents := '';
- Open;
- Fields.Add(TField.Create(ds));
- CheckEquals('deUpdateState:0;deFieldListChange:0;',DataEvents);
- DataEvents := '';
- Fields.Clear;
- CheckEquals('deFieldListChange:0;',DataEvents)
- end;
- aDatasource.Free;
- aDatalink.Free;
-end;
-
-
procedure TTestDBBasics.TestActiveBufferWhenClosed;
begin
with DBConnector.GetNDataset(0) do
@@ -434,6 +417,33 @@ begin
end;
end;
+procedure TTestDBBasics.TestdeFieldListChange;
+
+var i,count : integer;
+ aDatasource : TDataSource;
+ aDatalink : TDataLink;
+ ds : TDataset;
+
+begin
+ aDatasource := TDataSource.Create(nil);
+ aDatalink := TTestDataLink.Create;
+ aDatalink.DataSource := aDatasource;
+ ds := DBConnector.GetNDataset(1);
+ with ds do
+ begin
+ aDatasource.DataSet := ds;
+ DataEvents := '';
+ Open;
+ Fields.Add(TField.Create(ds));
+ CheckEquals('deUpdateState:0;deFieldListChange:0;',DataEvents);
+ DataEvents := '';
+ Fields.Clear;
+ CheckEquals('deFieldListChange:0;',DataEvents)
+ end;
+ aDatasource.Free;
+ aDatalink.Free;
+end;
+
procedure TTestDBBasics.TestRecordcountAfterReopen;
var
datalink1: tdatalink;
@@ -629,72 +639,6 @@ begin
end;
end;
-
-procedure TTestCursorDBBasics.TestOldValueObsolete;
-var v : variant;
- bufds: TDataset;
-begin
- // this test was created as reaction to AV bug found in TCustomBufDataset.GetFieldData
- // when retrieving OldValue (State=dsOldValue) of newly inserted or appended record.
- // In this case was CurrBuff set to nil (and not checked),
- // because OldValuesBuffer for just inserted record is nil. See rev.17704
- // (So purpose of this test isn't test InsertRecord on empty dataset or so)
- // Later was this test replaced by more complex TestOldValue (superset of old test),
- // but next to it was restored back also original test.
- // So now we have two tests which test same thing, where this 'old' one is subset of 'new' one
- // Ideal solution would be remove this 'old' test as it does not test anything what is not tested elsewhere ...
- bufds := DBConnector.GetNDataset(0) as TDataset;
- bufds.Open;
- bufds.InsertRecord([0,'name']);
- v := VarToStr(bufds.fields[1].OldValue);
-end;
-
-procedure TTestCursorDBBasics.TestOldValue;
-var OldValue: string;
- Fmemo: TField;
-begin
- with DBConnector.GetFieldDataset as TCustomBufDataset do
- begin;
- Open;
- First;
- Next;
- OldValue := Fields[0].AsString;
-
- CheckEquals(OldValue, VarToStr(Fields[0].OldValue), 'Original value'); // unmodified original value
- CheckTrue(UpdateStatus=usUnmodified, 'Unmodified');
-
- Edit;
- Fields[0].AsInteger := -1;
- CheckEquals(OldValue, VarToStr(Fields[0].OldValue), 'Editing'); // dsEdit, there is no update-buffer yet
- Post;
- CheckEquals(OldValue, VarToStr(Fields[0].OldValue), 'Edited'); // there is already update-buffer
- CheckTrue(UpdateStatus=usModified, 'Modified');
-
- Append;
- Fields[0].AsInteger := -2;
- CheckTrue(VarIsNull(Fields[0].OldValue), 'Inserting'); // dsInsert, there is no update-buffer yet
- Post;
- CheckTrue(VarIsNull(Fields[0].OldValue), 'Inserted'); // there is already update-buffer
- CheckTrue(UpdateStatus=usInserted, 'Inserted');
-
- // Blobs are stored in a special way
- // Use TMemoField because it implements AsVariant as AsString
- First;
- Next;
- Fmemo := FieldByName('F'+FieldTypeNames[ftMemo]);
- OldValue := Fmemo.AsString;
-
- CheckEquals(OldValue, Fmemo.OldValue, 'Memo.OldValue');
- Edit;
- Fmemo.AsString := 'Changed Memo value';
- CheckEquals(OldValue, Fmemo.OldValue, 'Memo.OldValue before Post');
- Post;
- CheckEquals(OldValue, Fmemo.OldValue, 'Memo.OldValue after Post');
- MergeChangeLog;
- CheckEquals('Changed Memo value', Fmemo.OldValue, 'Memo.OldValue after MergeChangeLog');
- end;
-end;
-
procedure TTestCursorDBBasics.TestModified;
begin
// Tests TDataSet.Modified property
@@ -721,58 +665,6 @@ begin
end;
end;
-procedure TTestDBBasics.TestCanModifySpecialFields;
-var ds : TDataset;
- lds : TDataset;
- fld : TField;
-begin
- lds := DBConnector.GetNDataset(10);
- ds := DBConnector.GetNDataset(5);
- with ds do
- begin
- Fld := TIntegerField.Create(ds);
- Fld.FieldName:='ID';
- Fld.DataSet:=ds;
-
- Fld := TStringField.Create(ds);
- Fld.FieldName:='LookupFld';
- Fld.FieldKind:=fkLookup;
- Fld.DataSet:=ds;
- Fld.LookupDataSet:=lds;
- Fld.LookupResultField:='NAME';
- Fld.LookupKeyFields:='ID';
- Fld.KeyFields:='ID';
-
- lds.Open;
- Open;
- if IsUniDirectional then
- // The CanModify property is always False for UniDirectional datasets
- CheckFalse(FieldByName('ID').CanModify)
- else
- CheckTrue(FieldByName('ID').CanModify);
- CheckFalse(FieldByName('LookupFld').CanModify);
- CheckFalse(FieldByName('ID').ReadOnly);
- CheckFalse(FieldByName('LookupFld').ReadOnly);
-
- CheckEquals(1,FieldByName('ID').AsInteger);
- if IsUniDirectional then
- // Lookup fields are not supported by UniDirectional datasets
- CheckTrue(FieldByName('LookupFld').IsNull)
- else
- CheckEquals('TestName1',FieldByName('LookupFld').AsString);
- Next;
- Next;
- CheckEquals(3,FieldByName('ID').AsInteger);
- if IsUniDirectional then
- CheckTrue(FieldByName('LookupFld').IsNull)
- else
- CheckEquals('TestName3',FieldByName('LookupFld').AsString);
-
- Close;
- lds.Close;
- end;
-end;
-
procedure TTestDBBasics.TestDetectionNonMatchingDataset;
var
F: TField;
@@ -1030,6 +922,114 @@ begin
end;
end;
+procedure TTestCursorDBBasics.TestFieldOldValueObsolete;
+var v : variant;
+ ds: TDataset;
+begin
+ // this test was created as reaction to AV bug found in TCustomBufDataset.GetFieldData
+ // when retrieving OldValue (State=dsOldValue) of newly inserted or appended record.
+ // In this case was CurrBuff set to nil (and not checked),
+ // because OldValuesBuffer for just inserted record is nil. See rev.17704
+ // (So purpose of this test isn't test InsertRecord on empty dataset or so)
+ // Later was this test replaced by more complex TestOldValue (superset of old test),
+ // but next to it was restored back also original test.
+ // So now we have two tests which test same thing, where this 'old' one is subset of 'new' one
+ // Ideal solution would be remove this 'old' test as it does not test anything what is not tested elsewhere ...
+ ds := DBConnector.GetNDataset(0) as TDataset;
+ ds.Open;
+ ds.InsertRecord([0,'name']);
+ v := VarToStr(ds.Fields[1].OldValue);
+end;
+
+procedure TTestCursorDBBasics.TestFieldOldValue;
+var ds: TDataSet;
+ OldValue: string;
+ Fmemo: TField;
+begin
+ ds := DBConnector.GetFieldDataset;
+ with ds do
+ begin;
+ Open;
+ First;
+ Next;
+ OldValue := Fields[0].AsString;
+
+ CheckEquals(OldValue, VarToStr(Fields[0].OldValue), 'Original value'); // unmodified original value
+ CheckTrue(UpdateStatus=usUnmodified, 'Unmodified');
+
+ Edit;
+ Fields[0].AsInteger := -1;
+ CheckEquals(OldValue, VarToStr(Fields[0].OldValue), 'Editing'); // dsEdit, there is no update-buffer yet
+ Post;
+ CheckEquals(OldValue, VarToStr(Fields[0].OldValue), 'Edited'); // there is already update-buffer
+ CheckTrue(UpdateStatus=usModified, 'Modified');
+
+ Append;
+ Fields[0].AsInteger := -2;
+ CheckTrue(VarIsNull(Fields[0].OldValue), 'Inserting'); // dsInsert, there is no update-buffer yet
+ Post;
+ CheckTrue(VarIsNull(Fields[0].OldValue), 'Inserted'); // there is already update-buffer
+ CheckTrue(UpdateStatus=usInserted, 'Inserted');
+
+ // Blobs are stored in a special way
+ // Use TMemoField because it implements AsVariant as AsString
+ First;
+ Next;
+ Fmemo := FieldByName('F'+FieldTypeNames[ftMemo]);
+ OldValue := Fmemo.AsString;
+
+ CheckEquals(OldValue, Fmemo.OldValue, 'Memo.OldValue');
+ Edit;
+ Fmemo.AsString := 'Changed Memo value';
+ CheckEquals(OldValue, Fmemo.OldValue, 'Memo.OldValue before Post');
+ Post;
+ CheckEquals(OldValue, Fmemo.OldValue, 'Memo.OldValue after Post');
+ end;
+ if ds is TCustomBufDataset then
+ with ds as TCustomBufDataset do
+ begin
+ MergeChangeLog;
+ CheckEquals('Changed Memo value', Fmemo.OldValue, 'Memo.OldValue after MergeChangeLog');
+ end;
+end;
+
+procedure TTestCursorDBBasics.TestChangeBlobFieldBeforePost;
+// Edit memo fields should read back new contents even before post
+// Bug 15376
+// See also TTestFieldTypes.TestChangeBlob
+var
+ Fmemo: TField;
+begin
+ with DBConnector.GetFieldDataset do
+ begin
+ Open;
+ Append;
+ FieldByName('ID').AsInteger := -1; // Required - not null
+
+ Fmemo := FieldByName('FMEMO');
+ CheckTrue(Fmemo.IsNull, 'IsNull after Append');
+
+ Fmemo.AsString:='MEMO1';
+ CheckFalse(Fmemo.IsNull, 'IsNull after change');
+ CheckEquals('MEMO1', Fmemo.AsString);
+
+ Fmemo.Clear;
+ CheckTrue(Fmemo.IsNull, 'IsNull after Clear');
+
+ Fmemo.AsString:='MEMO2';
+ CheckEquals('MEMO2', Fmemo.AsString);
+
+ Fmemo.AsString:='';
+ CheckTrue(Fmemo.IsNull, 'IsNull');
+
+ Fmemo.AsString:='MEMO3';
+ CheckEquals('MEMO3', Fmemo.AsString);
+ Post;
+ CheckEquals('MEMO3', Fmemo.AsString);
+ Close;
+ end;
+end;
+
procedure TTestDBBasics.TestSetFieldValues;
var PassException : boolean;
begin
@@ -1475,16 +1475,6 @@ begin
end;
end;
-procedure TTestBufDatasetDBBasics.TestClosedIndexFieldNames;
-var s : string;
- bufds: TCustomBufDataset;
-begin
- bufds := DBConnector.GetNDataset(5) as TCustomBufDataset;
- s := bufds.IndexFieldNames;
- s := bufds.IndexName;
- bufds.CompareBookmarks(nil,nil);
-end;
-
procedure TTestBufDatasetDBBasics.TestSaveAsXML;
var ds : TDataset;
LoadDs: TCustomBufDataset;
@@ -1856,6 +1846,11 @@ begin
TestAddIndexFieldType(ftBCD,False);
end;
+procedure TTestBufDatasetDBBasics.TestAddIndexFmtBCD;
+begin
+ TestAddIndexFieldType(ftFmtBCD,False);
+end;
+
procedure TTestBufDatasetDBBasics.TestAddIndex;
var ds : TCustomBufDataset;
AFieldType : TFieldType;
@@ -2069,7 +2064,7 @@ begin
end;
end;
-procedure TTestBufDatasetDBBasics.TestIndexFieldNamesAct;
+procedure TTestBufDatasetDBBasics.TestIndexFieldNamesActive;
var ds : TCustomBufDataset;
AFieldType : TFieldType;
FList : TStringList;
@@ -2367,69 +2362,17 @@ begin
end;
end;
-{$endif fpc}
-procedure TTestDBBasics.TestcalculatedField_OnCalcfields(DataSet: TDataSet);
-begin
- case dataset.fieldbyname('ID').asinteger of
- 1 : dataset.fieldbyname('CALCFLD').AsInteger := 5;
- 2 : dataset.fieldbyname('CALCFLD').AsInteger := 70000;
- 3 : dataset.fieldbyname('CALCFLD').Clear;
- 4 : dataset.fieldbyname('CALCFLD').AsInteger := 1234;
- 10 : dataset.fieldbyname('CALCFLD').Clear;
- else
- dataset.fieldbyname('CALCFLD').AsInteger := 1;
- end;
- CheckTrue(DataSet.State=dsCalcFields, 'State');
-end;
-
-procedure TTestDBBasics.TestCalculatedField;
-var ds : TDataset;
- AFld1, AFld2, AFld3 : Tfield;
+procedure TTestBufDatasetDBBasics.TestIndexFieldNamesClosed;
+var s : string;
+ bufds: TCustomBufDataset;
begin
- ds := DBConnector.GetNDataset(5);
- with ds do
- begin
- AFld1 := TIntegerField.Create(ds);
- AFld1.FieldName := 'ID';
- AFld1.DataSet := ds;
-
- AFld2 := TStringField.Create(ds);
- AFld2.FieldName := 'NAME';
- AFld2.DataSet := ds;
-
- AFld3 := TIntegerField.Create(ds);
- AFld3.FieldName := 'CALCFLD';
- AFld3.DataSet := ds;
- Afld3.FieldKind := fkCalculated;
-
- CheckEquals(3,FieldCount);
- ds.OnCalcFields := TestcalculatedField_OnCalcfields;
- open;
- CheckEquals(1,FieldByName('ID').asinteger);
- CheckEquals(5,FieldByName('CALCFLD').asinteger);
- next;
- CheckEquals(70000,FieldByName('CALCFLD').asinteger);
- next;
- CheckTrue(FieldByName('CALCFLD').IsNull, '#3 Null');
- next;
- CheckEquals(1234,FieldByName('CALCFLD').AsInteger);
- if IsUniDirectional then
- // The CanModify property is always False, so attempts to put the dataset into edit mode always fail
- CheckException(Edit, EDatabaseError)
- else
- begin
- Edit;
- FieldByName('ID').AsInteger := 10;
- Post;
- CheckTrue(FieldByName('CALCFLD').IsNull, '#10 Null');
- end;
- close;
- AFld1.Free;
- AFld2.Free;
- AFld3.Free;
- end;
+ bufds := DBConnector.GetNDataset(5) as TCustomBufDataset;
+ s := bufds.IndexFieldNames;
+ s := bufds.IndexName;
+ bufds.CompareBookmarks(nil,nil);
end;
+{$endif fpc}
procedure TTestCursorDBBasics.TestFirst;
var i : integer;
@@ -2689,7 +2632,7 @@ begin
ds.close;
end;
-procedure TTestDBBasics.TestSupportfmtBCDFields;
+procedure TTestDBBasics.TestSupportFmtBCDFields;
var i : byte;
ds : TDataset;
Fld : TField;
@@ -2699,8 +2642,8 @@ begin
for i := 0 to testValuesCount-1 do
begin
- CheckEquals(testFmtBCDValues[i], BCDToStr(Fld.AsBCD,DBConnector.FormatSettings));
- CheckEquals(StrToFloat(testFmtBCDValues[i],DBConnector.FormatSettings), Fld.AsFloat);
+ CheckEquals(testFmtBCDValues[i], BCDToStr(Fld.AsBCD,DBConnector.FormatSettings), 'AsBCD');
+ CheckEquals(StrToFloat(testFmtBCDValues[i],DBConnector.FormatSettings), Fld.AsFloat, 1e-12, 'AsFloat');
ds.Next;
end;
ds.close;
@@ -2759,6 +2702,152 @@ begin
ds.close;
end;
+procedure TTestDBBasics.TestBlobBlobType;
+// Verifies whether all created blob types actually have blobtypes that fall
+// into the blobtype range (subset of datatype enumeration)
+var
+ ds: TDataSet;
+ i:integer;
+begin
+ ds := DBConnector.GetFieldDataset;
+ with ds do
+ begin;
+ Open;
+ for i:=0 to Fields.Count-1 do
+ begin
+ // This should only apply to blob types
+ if Fields[i].DataType in ftBlobTypes then
+ begin
+ // Type should certainly fall into wider old style, imprecise TBlobType
+ if not(TBlobField(Fields[i]).BlobType in [Low(TBlobType)..High(TBlobType)]) then
+ fail('BlobType for field '+
+ Fields[i].FieldName+' is not in old wide incorrect TBlobType range. Actual value: '+
+ inttostr(word(TBlobField(Fields[i]).BlobType)));
+ //.. it should also fall into the narrow ftBlobTypes
+ if not(TBlobField(Fields[i]).BlobType in ftBlobTypes) then
+ fail('BlobType for field '+
+ Fields[i].FieldName+' is not in ftBlobType range. Actual value: '+
+ inttostr(word(TBlobField(Fields[i]).BlobType)));
+ end;
+ end;
+ Close;
+ end;
+end;
+
+procedure TTestDBBasics.TestcalculatedField_OnCalcfields(DataSet: TDataSet);
+begin
+ case dataset.fieldbyname('ID').asinteger of
+ 1 : dataset.fieldbyname('CALCFLD').AsInteger := 5;
+ 2 : dataset.fieldbyname('CALCFLD').AsInteger := 70000;
+ 3 : dataset.fieldbyname('CALCFLD').Clear;
+ 4 : dataset.fieldbyname('CALCFLD').AsInteger := 1234;
+ 10 : dataset.fieldbyname('CALCFLD').Clear;
+ else
+ dataset.fieldbyname('CALCFLD').AsInteger := 1;
+ end;
+ CheckTrue(DataSet.State=dsCalcFields, 'State');
+end;
+
+procedure TTestDBBasics.TestCalculatedField;
+var ds : TDataset;
+ AFld1, AFld2, AFld3 : Tfield;
+begin
+ ds := DBConnector.GetNDataset(5);
+ with ds do
+ begin
+ AFld1 := TIntegerField.Create(ds);
+ AFld1.FieldName := 'ID';
+ AFld1.DataSet := ds;
+
+ AFld2 := TStringField.Create(ds);
+ AFld2.FieldName := 'NAME';
+ AFld2.DataSet := ds;
+
+ AFld3 := TIntegerField.Create(ds);
+ AFld3.FieldName := 'CALCFLD';
+ AFld3.DataSet := ds;
+ Afld3.FieldKind := fkCalculated;
+
+ CheckEquals(3,FieldCount);
+ ds.OnCalcFields := TestcalculatedField_OnCalcfields;
+ open;
+ CheckEquals(1,FieldByName('ID').asinteger);
+ CheckEquals(5,FieldByName('CALCFLD').asinteger);
+ next;
+ CheckEquals(70000,FieldByName('CALCFLD').asinteger);
+ next;
+ CheckTrue(FieldByName('CALCFLD').IsNull, '#3 Null');
+ next;
+ CheckEquals(1234,FieldByName('CALCFLD').AsInteger);
+ if IsUniDirectional then
+ // The CanModify property is always False, so attempts to put the dataset into edit mode always fail
+ CheckException(Edit, EDatabaseError)
+ else
+ begin
+ Edit;
+ FieldByName('ID').AsInteger := 10;
+ Post;
+ CheckTrue(FieldByName('CALCFLD').IsNull, '#10 Null');
+ end;
+ close;
+ AFld1.Free;
+ AFld2.Free;
+ AFld3.Free;
+ end;
+end;
+
+procedure TTestDBBasics.TestCanModifySpecialFields;
+var ds : TDataset;
+ lds : TDataset;
+ fld : TField;
+begin
+ lds := DBConnector.GetNDataset(10);
+ ds := DBConnector.GetNDataset(5);
+ with ds do
+ begin
+ Fld := TIntegerField.Create(ds);
+ Fld.FieldName:='ID';
+ Fld.DataSet:=ds;
+
+ Fld := TStringField.Create(ds);
+ Fld.FieldName:='LookupFld';
+ Fld.FieldKind:=fkLookup;
+ Fld.DataSet:=ds;
+ Fld.LookupDataSet:=lds;
+ Fld.LookupResultField:='NAME';
+ Fld.LookupKeyFields:='ID';
+ Fld.KeyFields:='ID';
+
+ lds.Open;
+ Open;
+ if IsUniDirectional then
+ // The CanModify property is always False for UniDirectional datasets
+ CheckFalse(FieldByName('ID').CanModify)
+ else
+ CheckTrue(FieldByName('ID').CanModify);
+ CheckFalse(FieldByName('LookupFld').CanModify);
+ CheckFalse(FieldByName('ID').ReadOnly);
+ CheckFalse(FieldByName('LookupFld').ReadOnly);
+
+ CheckEquals(1,FieldByName('ID').AsInteger);
+ if IsUniDirectional then
+ // Lookup fields are not supported by UniDirectional datasets
+ CheckTrue(FieldByName('LookupFld').IsNull)
+ else
+ CheckEquals('TestName1',FieldByName('LookupFld').AsString);
+ Next;
+ Next;
+ CheckEquals(3,FieldByName('ID').AsInteger);
+ if IsUniDirectional then
+ CheckTrue(FieldByName('LookupFld').IsNull)
+ else
+ CheckEquals('TestName3',FieldByName('LookupFld').AsString);
+
+ Close;
+ lds.Close;
+ end;
+end;
+
procedure TTestDBBasics.TestDoubleClose;
begin
with DBConnector.GetNDataset(1) do
@@ -2771,6 +2860,17 @@ begin
end;
end;
+procedure TTestDBBasics.TestFieldDefsUpdate;
+begin
+ // FieldDefs.Update is called also by Lazarus IDE Fields editor
+ with DBConnector.GetNDataset(0) do
+ begin
+ // call Update on closed unprepared dataset
+ FieldDefs.Update;
+ CheckEquals(2, FieldDefs.Count);
+ end;
+end;
+
procedure TTestDBBasics.TestAssignFieldftString;
var AParam : TParam;
AField : TField;
diff --git a/packages/fcl-db/tests/testdbexport.pas b/packages/fcl-db/tests/testdbexport.pas
index 44319da25a..a7a40952fb 100644
--- a/packages/fcl-db/tests/testdbexport.pas
+++ b/packages/fcl-db/tests/testdbexport.pas
@@ -163,7 +163,7 @@ procedure TTestDBExport.SetUp;
begin
inherited SetUp;
InitialiseDBConnector;
- DBConnector.StartTest; //is this needed?
+ DBConnector.StartTest(TestName);
FExportTempDir:=IncludeTrailingPathDelimiter(ExpandFileName(''))+'exporttests'+PathDelim; //Store output in subdirectory
ForceDirectories(FExportTempDir);
FKeepFilesAfterTest:=true; //keep test files; consistent with other units right now
@@ -172,7 +172,7 @@ end;
procedure TTestDBExport.TearDown;
begin
inherited TearDown;
- DBConnector.StopTest; //is this needed?
+ DBConnector.StopTest(TestName);
FreeDBConnector;
end;
diff --git a/packages/fcl-db/tests/testfieldtypes.pas b/packages/fcl-db/tests/testfieldtypes.pas
index bb0993a45f..c9ee630553 100644
--- a/packages/fcl-db/tests/testfieldtypes.pas
+++ b/packages/fcl-db/tests/testfieldtypes.pas
@@ -84,6 +84,7 @@ type
procedure TestDateTimeParamQuery;
procedure TestFmtBCDParamQuery;
procedure TestFloatParamQuery;
+ procedure TestCurrencyParamQuery;
procedure TestBCDParamQuery;
procedure TestBytesParamQuery;
procedure TestVarBytesParamQuery;
@@ -299,7 +300,7 @@ const
testValues4 : Array[0..testValuesCount-1] of currency = (-99.99,-12.34,-10.2,-10,-0.5,-0.01,0,0.01,0.5,10,10.2,12.34,99.99);
testValues9 : Array[0..testValuesCount-1] of currency = (-123456.789,-10000,-1875.25,-10,-0.5,-0.001,0,0.001,0.5,10,1875.25,10000,123456.789);
FieldTypes: array [0..7] of TFieldType = (ftBCD, ftBCD, ftBCD, ftFmtBCD, ftLargeInt, ftFmtBCD, ftFmtBCD, ftFmtBCD);
- FieldSizes: array [0..7] of integer = (4,2,3,5,0,3,5,0); //scale
+ FieldSizes: array [0..7] of integer = (4,2,3,5,0,3,5,0); //scale for FieldTypes
var
i,d : integer;
@@ -477,7 +478,7 @@ var
i : byte;
begin
- if SQLConnType<>postgresql then Ignore('This test does only apply to Postgres, since others don''t support varchars without length given');
+ if SQLServerType<>ssPostgreSQL then Ignore('This test does only apply to Postgres, since others don''t support varchars without length given');
CreateTableWithFieldType(ftString,'VARCHAR');
TestFieldDeclaration(ftString,dsMaxStringSize+1);
@@ -597,20 +598,18 @@ begin
CreateTableWithFieldType(ftBlob,FieldtypeDefinitions[ftBlob]);
TestFieldDeclaration(ftBlob,0);
- TSQLDBConnector(DBConnector).Connection.ExecuteDirect('insert into FPDEV2 (FT) values (''Test deze blob'')');
+ TSQLDBConnector(DBConnector).Connection.ExecuteDirect('insert into FPDEV2 (FT) values (''Test this blob'')');
with TSQLDBConnector(DBConnector).Query do
begin
Open;
- AssertEquals('Test deze blob',fields[0].AsString);
+ AssertEquals('Test this blob',fields[0].AsString);
close;
end;
end;
procedure TTestFieldTypes.TestChangeBlob;
-
var s : string;
-
begin
TSQLDBConnector(DBConnector).Connection.ExecuteDirect('create table FPDEV2 (ID int,FT '+FieldtypeDefinitions[ftblob]+')');
TSQLDBConnector(DBConnector).CommitDDL;
@@ -633,6 +632,13 @@ begin
Cancel;
AssertEquals('After Cancel', 'Test this blob', Fields[1].AsString); // original value
+ Append; // Blob is null
+ Fields[1].AsString := s; // Null flag must be unset
+ AssertEquals(s, Fields[1].AsString);
+ Fields[1].Clear;
+ AssertTrue('Clear', Fields[1].IsNull);
+ Cancel;
+
Edit;
With CreateBlobStream(Fields[1], bmWrite) do
begin
@@ -658,7 +664,7 @@ begin
CreateTableWithFieldType(ftBlob,FieldtypeDefinitions[ftBlob]);
TestFieldDeclaration(ftBlob,0);
- TSQLDBConnector(DBConnector).Connection.ExecuteDirect('insert into FPDEV2 (FT) values (''Test deze blob'')');
+ TSQLDBConnector(DBConnector).Connection.ExecuteDirect('insert into FPDEV2 (FT) values (''Test this blob'')');
TSQLDBConnector(DBConnector).Connection.ExecuteDirect('insert into FPDEV2 (FT) values (Null)');
with TSQLDBConnector(DBConnector).Query do
@@ -666,7 +672,7 @@ begin
Open;
AssertFalse(fields[0].IsNull);
AssertEquals('(BLOB)',fields[0].DisplayText);
- AssertEquals('Test deze blob',fields[0].AsString);
+ AssertEquals('Test this blob',fields[0].AsString);
Next;
AssertTrue(fields[0].IsNull);
AssertEquals('(blob)',fields[0].Text);
@@ -676,21 +682,22 @@ begin
end;
procedure TTestFieldTypes.TestBlobSize;
+const
+ TestValue: string = 'Test this blob';
begin
CreateTableWithFieldType(ftBlob,FieldtypeDefinitions[ftBlob]);
- TSQLDBConnector(DBConnector).Connection.ExecuteDirect('insert into FPDEV2 (FT) values (''Test deze blob'')');
+ TSQLDBConnector(DBConnector).Connection.ExecuteDirect('insert into FPDEV2 (FT) values ('''+TestValue+''')');
with TSQLDBConnector(DBConnector).Query do
begin
sql.text := 'select * from FPDEV2';
Open;
- AssertEquals(14,TBlobField(fields[0]).BlobSize);
+ AssertEquals(length(TestValue),TBlobField(fields[0]).BlobSize);
close;
end;
end;
-
procedure TTestFieldTypes.TestSQLFieldType(ADatatype : TFieldType; ASQLTypeDecl : string; ADataSize: integer; AGetSQLTextProc: TGetSQLTextProc; ACheckFieldValueProc: TCheckFieldValueProc);
var
i : byte;
@@ -925,40 +932,52 @@ begin
with TSQLDBConnector(DBConnector).Query do
begin
Open;
- AssertEquals(s,fields[0].AsString);
- close;
+ AssertEquals(s,Fields[0].AsString);
+ Close;
end;
end;
procedure TTestFieldTypes.TestInsertLargeStrFields;
// See also: TestStringLargerThen8192
-const
- FieldValue1='test1';
var
- FieldValue2: string;
+ FieldValues: array [1..4] of string;
+ i,l1,l2: integer;
begin
- FieldValue2:=StringOfChar('t', 16000);
+ FieldValues[1] := 'test1'; // string length < 8192 (dsMaxStringSize)
+ FieldValues[2] := StringOfChar('a', 8192); // string length = 8192 (dsMaxStringSize)
+ FieldValues[3] := StringOfChar('b', 16000); // string length > 8192 (dsMaxStringSize)
+ FieldValues[4] := StringOfChar('c', 17000); // string length > Field.Size
+
with TSQLDBConnector(DBConnector) do
begin
- Connection.ExecuteDirect('create table FPDEV2 ( ' +
- ' ID INT NOT NULL , ' +
- ' NAME VARCHAR(16000),' +
- ' PRIMARY KEY (ID) ' +
- ') ');
+ Connection.ExecuteDirect( 'create table FPDEV2 (' +
+ ' ID INT NOT NULL , ' +
+ ' F1 VARCHAR(8192), ' +
+ ' F2 VARCHAR(16000),' +
+ 'primary key (ID) )');
// Firebird/Interbase need a commit after a DDL statement. Not necessary for the other connections
TSQLDBConnector(DBConnector).CommitDDL;
query.sql.Text:='select * from FPDEV2';
Query.Open;
- Query.InsertRecord([1,FieldValue1]); // string length <= 8192 (dsMaxStringSize)
- Query.InsertRecord([2,FieldValue2]); // string length > 8192 (dsMaxStringSize)
+ for i:=1 to high(FieldValues) do
+ Query.InsertRecord([i, FieldValues[i], FieldValues[i]]);
Query.ApplyUpdates;
Query.Close;
Query.Open;
- AssertEquals(FieldValue1, Query.FieldByName('NAME').AsString);
- Query.Next;
- AssertEquals(length(FieldValue2), length(Query.FieldByName('NAME').AsString));
- AssertEquals(FieldValue2, Query.FieldByName('NAME').AsString);
+ for i:=1 to high(FieldValues) do
+ begin
+ l1:=length(FieldValues[i]);
+ if l1 > 8192 then l1 := 8192;
+ l2:=length(FieldValues[i]);
+ if l2 > 16000 then l2 := 16000;
+
+ AssertEquals(l1, length(Query.FieldByName('F1').AsString));
+ AssertEquals(l2, length(Query.FieldByName('F2').AsString));
+ AssertEquals(copy(FieldValues[i],1,l1), Query.FieldByName('F1').AsString);
+ AssertEquals(copy(FieldValues[i],1,l2), Query.FieldByName('F2').AsString);
+ Query.Next;
+ end;
Query.Close;
end;
end;
@@ -1191,8 +1210,8 @@ begin
with query do
begin
SQL.Text:='select NAME from FPDEV where ID<5';
- sql.Add('union');
- sql.Add('select NAME from FPDEV where ID>5');
+ SQL.Add('union');
+ SQL.Add('select NAME from FPDEV where ID>5');
Open;
close;
end;
@@ -1223,7 +1242,6 @@ procedure TTestFieldTypes.TestReadOnlyParseSQL;
begin
with TSQLDBConnector(DBConnector) do
begin
-
GetFieldDataset(True);
with query do
begin
@@ -1255,7 +1273,7 @@ begin
edit;
FieldByName('ID').AsInteger:=321;
post;
- Applyupdates;
+ ApplyUpdates;
close;
// If ParseSQL is true, but the supplied query isn't updateable, then
@@ -1284,7 +1302,7 @@ begin
AssertTrue(CanModify);
edit;
post;
- Applyupdates;
+ ApplyUpdates;
close;
// Also if ParseSQL is False, the query should be updateable if a update-
@@ -1298,9 +1316,9 @@ begin
AssertFalse(ReadOnly);
AssertTrue(CanModify);
edit;
- FieldByName('ID').AsInteger:=1;
+ FieldByName('ID').AsInteger:=1; // field "ID" from UNION can be marked as ReadOnly
post;
- Applyupdates;
+ ApplyUpdates;
close;
// But if ReadOnly is true, then CanModify should always be false
@@ -1322,9 +1340,9 @@ begin
with TSQLDBConnector(DBConnector).Query do
begin
SQL.Clear;
- SQL.Add('select * from FPDEV where name=''test '''' and :ThisIsNotAParameter ''');
- open;
- close;
+ SQL.Add('select * from FPDEV where NAME=''test '''' and :ThisIsNotAParameter ''');
+ Open;
+ Close;
end;
end;
@@ -1336,12 +1354,12 @@ begin
with ds do
begin
AFld1 := TIntegerField.Create(ds);
- AFld1.FieldName := 'ID';
+ AFld1.FieldName := IdentifierCase('ID');
AFld1.DataSet := ds;
AFld1.ProviderFlags := AFld1.ProviderFlags + [pfInKey];
AFld2 := TStringField.Create(ds);
- AFld2.FieldName := 'NAME';
+ AFld2.FieldName := IdentifierCase('NAME');
AFld2.DataSet := ds;
AFld3 := TIntegerField.Create(ds);
@@ -1381,33 +1399,33 @@ begin
with TSQLDBConnector(DBConnector).Query do
begin
sql.clear;
- sql.append('insert into FPDEV2 (field1) values (:field1)');
+ sql.append('insert into FPDEV2 (FIELD1) values (:field1)');
Params.ParamByName('field1').AsInteger := 1;
ExecSQL;
sql.clear;
- sql.append('insert into FPDEV2 (field1,field2,decoy) values (:field1,:field2,'''+DecoyFieldData1+''')');
+ sql.append('insert into FPDEV2 (FIELD1,FIELD2,DECOY) values (:field1,:field2,'''+DecoyFieldData1+''')');
Params.ParamByName('field1').AsInteger := 2;
Params.ParamByName('field2').DataType := ftInteger;
Params.ParamByName('field2').Value := Null;
ExecSQL;
sql.clear;
- sql.append('insert into FPDEV2 (field1,field2,field3) values (:field1,:field2,:field3)');
+ sql.append('insert into FPDEV2 (FIELD1,FIELD2,FIELD3) values (:field1,:field2,:field3)');
Params.ParamByName('field1').AsInteger := 3;
Params.ParamByName('field2').AsInteger := 2;
Params.ParamByName('field3').AsInteger := 3;
ExecSQL;
sql.clear;
- sql.append('insert into FPDEV2 (field1,field2,field3,decoy) values (:field1,:field2,:field3,'''+DecoyFieldData2+''')');
+ sql.append('insert into FPDEV2 (FIELD1,FIELD2,FIELD3,DECOY) values (:field1,:field2,:field3,'''+DecoyFieldData2+''')');
Params.ParamByName('field1').AsInteger := 4;
Params.ParamByName('field2').AsInteger := 2;
Params.ParamByName('field3').AsInteger := 3;
ExecSQL;
sql.clear;
- sql.append('insert into FPDEV2 (field1,field2,field3) values (:field1,:field2,:field1)');
+ sql.append('insert into FPDEV2 (FIELD1,FIELD2,FIELD3) values (:field1,:field2,:field1)');
Params.ParamByName('field1').AsInteger := 5;
Params.ParamByName('field2').AsInteger := 2;
ExecSQL;
@@ -1491,6 +1509,11 @@ begin
TestXXParamQuery(ftFloat,FieldtypeDefinitions[ftFloat],testFloatValuesCount);
end;
+procedure TTestFieldTypes.TestCurrencyParamQuery;
+begin
+ TestXXParamQuery(ftCurrency,FieldtypeDefinitions[ftCurrency],testValuesCount);
+end;
+
procedure TTestFieldTypes.TestBCDParamQuery;
begin
TestXXParamQuery(ftBCD,'NUMERIC(10,4)',testBCDValuesCount);
@@ -1542,7 +1565,7 @@ begin
sql.append('insert into FPDEV2 (ID,FIELD1) values (:id,:field1)');
// There is no Param.AsFixedChar, so the datatype has to be set manually
- if ADatatype=ftFixedChar then
+ if ADataType=ftFixedChar then
Params.ParamByName('field1').DataType := ftFixedChar;
for i := 0 to testValuesCount -1 do
@@ -1550,28 +1573,29 @@ begin
Params.ParamByName('id').AsInteger := i;
case ADataType of
ftSmallInt: Params.ParamByName('field1').AsSmallInt := testSmallIntValues[i];
- ftInteger: Params.ParamByName('field1').AsInteger := testIntValues[i];
+ ftInteger : Params.ParamByName('field1').AsInteger := testIntValues[i];
ftLargeInt: Params.ParamByName('field1').AsLargeInt := testLargeIntValues[i];
- ftBoolean: Params.ParamByName('field1').AsBoolean := testBooleanValues[i];
- ftFloat : Params.ParamByName('field1').AsFloat := testFloatValues[i];
- ftBCD : Params.ParamByName('field1').AsCurrency:= testBCDValues[i];
+ ftBoolean : Params.ParamByName('field1').AsBoolean := testBooleanValues[i];
+ ftFloat : Params.ParamByName('field1').AsFloat := testFloatValues[i];
+ ftCurrency: Params.ParamByName('field1').AsCurrency:= testCurrencyValues[i];
+ ftBCD : Params.ParamByName('field1').AsBCD := testBCDValues[i];
ftFixedChar,
- ftString : Params.ParamByName('field1').AsString := testValues[ADataType,i];
- ftTime : Params.ParamByName('field1').AsTime := TimeStringToDateTime(testTimeValues[i]);
- ftDate : if cross then
- Params.ParamByName('field1').AsString:= testDateValues[i]
- else
- Params.ParamByName('field1').AsDate := StrToDate(testDateValues[i],'yyyy/mm/dd','-');
- ftDateTime:Params.ParamByName('field1').AsDateTime := StrToDateTime(testValues[ADataType,i], DBConnector.FormatSettings);
- ftFMTBcd : Params.ParamByName('field1').AsFMTBCD := StrToBCD(testFmtBCDValues[i],DBConnector.FormatSettings);
- ftBytes : if cross then
- Params.ParamByName('field1').Value := StringToByteArray(testBytesValues[i])
- else
- Params.ParamByName('field1').AsBlob := testBytesValues[i];
- ftVarBytes:if cross then
- Params.ParamByName('field1').AsString := testBytesValues[i]
+ ftString : Params.ParamByName('field1').AsString := testValues[ADataType,i];
+ ftTime : Params.ParamByName('field1').AsTime := TimeStringToDateTime(testTimeValues[i]);
+ ftDate : if cross then
+ Params.ParamByName('field1').AsString:= testDateValues[i]
else
- Params.ParamByName('field1').AsBlob := testBytesValues[i];
+ Params.ParamByName('field1').AsDate := StrToDate(testDateValues[i],'yyyy/mm/dd','-');
+ ftDateTime: Params.ParamByName('field1').AsDateTime := StrToDateTime(testValues[ADataType,i], DBConnector.FormatSettings);
+ ftFMTBcd : Params.ParamByName('field1').AsFMTBCD := StrToBCD(testFmtBCDValues[i], DBConnector.FormatSettings);
+ ftBytes : if cross then
+ Params.ParamByName('field1').Value := StringToByteArray(testBytesValues[i])
+ else
+ Params.ParamByName('field1').AsBlob := testBytesValues[i];
+ ftVarBytes: if cross then
+ Params.ParamByName('field1').AsString := testBytesValues[i]
+ else
+ Params.ParamByName('field1').AsBlob := testBytesValues[i];
else
AssertTrue('no test for paramtype available',False);
end;
@@ -1597,6 +1621,7 @@ begin
ftLargeInt : AssertEquals(testLargeIntValues[i],FieldByName('FIELD1').AsLargeInt);
ftBoolean : AssertEquals(testBooleanValues[i],FieldByName('FIELD1').AsBoolean);
ftFloat : AssertEquals(testFloatValues[i],FieldByName('FIELD1').AsFloat);
+ ftCurrency : AssertEquals(testCurrencyValues[i],FieldByName('FIELD1').AsFloat,0); // TCurrencyField uses double data type (not currency) to store values!
ftBCD : AssertEquals(testBCDValues[i],FieldByName('FIELD1').AsCurrency);
ftFixedChar : AssertEquals(PadRight(testStringValues[i],10),FieldByName('FIELD1').AsString);
ftString : AssertEquals(testStringValues[i],FieldByName('FIELD1').AsString);
@@ -1654,7 +1679,7 @@ end;
procedure TTestFieldTypes.TestSetBlobAsMemoParam;
begin
- // Firebird/Interbase ODBC driver : if parameter of ValueType=SQL_C_CHAR is bind to BLOB column
+ // Firebird/Interbase ODBC driver : if parameter of ValueType=SQL_C_CHAR is bound to BLOB column
// driver interprets character data as hexadecimal string and performs conversion ('FF10'=#255#16)
TestSetBlobAsParam(0);
end;
@@ -1723,20 +1748,20 @@ begin
// for the parameter was used.
// To make sure that any changes are cancelled in the case the test fails
- TSQLDBConnector(DBConnector).GetNDataset(true,5);
+ TSQLDBConnector(DBConnector).GetNDataset(True,1);
ASQLQuery := TSQLDBConnector(DBConnector).Query;
- ASQLQuery.SQL.text := 'update fpdev set ID=:ID1 where id = :ID2';
+ ASQLQuery.SQL.Text := 'update fpdev set ID=:ID1 where id = :ID2';
ASQLQuery.Params[0].Clear;
ASQLQuery.Params[1].AsInteger := 1;
AssertTrue(ASQLQuery.Params[0].IsNull);
- Passed:=False;
+ Passed := False;
try
- @ASQLQuery.ExecSQL;
+ ASQLQuery.ExecSQL;
except
on E: Exception do
if E.ClassType.InheritsFrom(EDatabaseError) then
- Passed := true;
+ Passed := True;
end;
AssertTrue(Passed);
end;
@@ -1982,8 +2007,8 @@ begin
Close;
// tests parsing SELECT with quoted identifiers (MySQL requires sql-mode=ANSI_QUOTES)
- SQL.Text:='SELECT"ID"FROM"FPDEV"ORDER BY"ID"';
- if SQLServerType in [ssPostgreSQL] then SQL.Text:=lowercase(SQL.Text); // The folding of unquoted names to lower case in PostgreSQL is incompatible with the SQL standard
+ // The folding of unquoted names to lower case in PostgreSQL is incompatible with the SQL standard
+ SQL.Text:=IdentifierCase('SELECT"ID"FROM"FPDEV"ORDER BY"ID"');
Open;
CheckTrue(CanModify, SQL.Text);
Close;
@@ -2255,7 +2280,7 @@ end;
procedure TTestFieldTypes.TestEmptyUpdateQuery;
begin
- TSQLDBConnector(DBConnector).Connection.ExecuteDirect('update FPDEV set name=''nothing'' where (1=0)');
+ TSQLDBConnector(DBConnector).Connection.ExecuteDirect('update FPDEV set NAME=''nothing'' where (1=0)');
end;
procedure TTestFieldTypes.TestTemporaryTable;
@@ -2341,12 +2366,12 @@ end;
procedure TTestFieldTypes.SetUp;
begin
InitialiseDBConnector;
- DBConnector.StartTest;
+ DBConnector.StartTest(TestName);
end;
procedure TTestFieldTypes.TearDown;
begin
- DBConnector.StopTest;
+ DBConnector.StopTest(TestName);
if assigned(DBConnector) then
TSQLDBConnector(DBConnector).Transaction.Rollback;
FreeDBConnector;
@@ -2360,5 +2385,7 @@ end;
initialization
- if uppercase(dbconnectorname)='SQL' then RegisterTest(TTestFieldTypes);
+ // Only test if using sqldb
+ if uppercase(dbconnectorname)='SQL' then
+ RegisterTest(TTestFieldTypes);
end.
diff --git a/packages/fcl-db/tests/testspecifictbufdataset.pas b/packages/fcl-db/tests/testspecifictbufdataset.pas
index 49866cb224..11b8449910 100644
--- a/packages/fcl-db/tests/testspecifictbufdataset.pas
+++ b/packages/fcl-db/tests/testspecifictbufdataset.pas
@@ -124,12 +124,12 @@ end;
procedure TTestSpecificTBufDataset.SetUp;
begin
- DBConnector.StartTest;
+ DBConnector.StartTest(TestName);
end;
procedure TTestSpecificTBufDataset.TearDown;
begin
- DBConnector.StopTest;
+ DBConnector.StopTest(TestName);
end;
procedure TTestSpecificTBufDataset.CreateDatasetFromFielddefs;
diff --git a/packages/fcl-db/tests/testspecifictdbf.pas b/packages/fcl-db/tests/testspecifictdbf.pas
index d7e4faafd0..6631999535 100644
--- a/packages/fcl-db/tests/testspecifictdbf.pas
+++ b/packages/fcl-db/tests/testspecifictdbf.pas
@@ -108,12 +108,12 @@ end;
procedure TTestSpecificTDBF.SetUp;
begin
- DBConnector.StartTest;
+ DBConnector.StartTest(TestName);
end;
procedure TTestSpecificTDBF.TearDown;
begin
- DBConnector.StopTest;
+ DBConnector.StopTest(TestName);
end;
procedure TTestSpecificTDBF.TestTableLevel;
diff --git a/packages/fcl-db/tests/testsqldb.pas b/packages/fcl-db/tests/testsqldb.pas
index ac5b2a7cf0..3d97dca39e 100644
--- a/packages/fcl-db/tests/testsqldb.pas
+++ b/packages/fcl-db/tests/testsqldb.pas
@@ -266,12 +266,12 @@ procedure TSQLDBTestCase.SetUp;
begin
inherited SetUp;
InitialiseDBConnector;
- DBConnector.StartTest;
+ DBConnector.StartTest(TestName);
end;
procedure TSQLDBTestCase.TearDown;
begin
- DBConnector.StopTest;
+ DBConnector.StopTest(TestName);
if assigned(DBConnector) then
with TSQLDBConnector(DBConnector) do
Transaction.Rollback;
diff --git a/packages/fcl-db/tests/toolsunit.pas b/packages/fcl-db/tests/toolsunit.pas
index 80e544acdf..51b4a90168 100644
--- a/packages/fcl-db/tests/toolsunit.pas
+++ b/packages/fcl-db/tests/toolsunit.pas
@@ -23,6 +23,7 @@ type
TDBConnectorClass = class of TDBConnector;
TDBConnector = class(TPersistent)
private
+ FLogTimeFormat: TFormatSettings; //for error logging only
FFormatSettings: TFormatSettings;
FChangedFieldDataset : boolean;
protected
@@ -53,6 +54,10 @@ type
// They should clean up all mess, like tables on disk or on a DB server
procedure DropNDatasets; virtual; abstract;
procedure DropFieldDataset; virtual; abstract;
+
+ // If logging is enabled, writes Message to log file and flushes
+ // Logging uses tab-separated columns
+ procedure LogMessage(Category,Message: string);
public
constructor Create; virtual;
destructor Destroy; override;
@@ -67,8 +72,10 @@ type
// Gets a dataset that tracks calculation of calculated fields etc.
Function GetTraceDataset(AChange : Boolean) : TDataset; virtual;
- procedure StartTest;
- procedure StopTest;
+ // Run before a test is started
+ procedure StartTest(TestName: string);
+ // Run after a test is stopped
+ procedure StopTest(TestName: string);
property TestUniDirectional: boolean read GetTestUniDirectional write SetTestUniDirectional;
property FormatSettings: TFormatSettings read FFormatSettings;
end;
@@ -117,12 +124,12 @@ const
const
testValuesCount = 25;
testFloatValues : Array[0..testValuesCount-1] of double = (-maxSmallint-1,-maxSmallint,-256,-255,-128,-127,-1,0,1,127,128,255,256,maxSmallint,maxSmallint+1,0.123456,-0.123456,4.35,12.434E7,9.876e-5,123.45678,2.4,3.2,0.4,23);
- testCurrencyValues : Array[0..testValuesCount-1] of currency = (-100,-65.5,-54.34,-43.34,-2.50,-0.2,45.40,0.3,45.4,127,128,255,256,45,0.3,45.4,127,128,255,256,45,1234.56,43.23,43.43,99.88);
+ testCurrencyValues : Array[0..testValuesCount-1] of currency = (-MaxLongInt-1,-MaxSmallint-1,-256,-255,-43.34,-2.5,-0.21,0,0.32,45.45,256,45,1234.56,12.34,0.12,MaxSmallInt+1,MaxLongInt+1,-6871947.67,68719476736,2748779069.44,922337203685.47,-92233720368547,99999999999999,-9223372036854.25,-9223372036854.7);
testFmtBCDValues : Array[0..testValuesCount-1] of string = ('-100','-65.5','-54.3333','-43.3334','-2.5','-0.234567','45.4','0.3','45.414585','127','128','255','256','45','0.3','45.4','127','128','255','256','45','1234.56789','43.23','43.500001','99.88');
testIntValues : Array[0..testValuesCount-1] of integer = (-maxInt,-maxInt+1,-maxSmallint-1,-maxSmallint,-256,-255,-128,-127,-1,0,1,127,128,255,256,maxSmallint,maxSmallint+1,MaxInt-1,MaxInt,100,130,150,-150,-132,234);
testWordValues : Array[0..testValuesCount-1] of Word = (1,2,3,4,5,6,7,8,0,1,127,128,255,256,maxSmallint,maxSmallint+1,maxSmallInt-1,maxSmallInt,65535,100,130,150,151,132,234);
testSmallIntValues : Array[0..testValuesCount-1] of smallint = (-maxSmallint,-maxSmallint+1,-256,-255,-128,-127,-1,0,1,127,128,255,256,maxSmallint,maxSmallint-1,100,110,120,130,150,-150,-132,234,231,42);
- testLargeIntValues : Array[0..testValuesCount-1] of LargeInt = ( -$7fffffffffffffff,-$7ffffffffffffffe,-maxInt-1,-maxInt+1,-maxSmallint,-maxSmallint+1,-256,-255,-128,-127,-1,0,1,127,128,255,256,maxSmallint,maxSmallint-1,maxSmallint+1,MaxInt-1,MaxInt,$7fffffffffffffff-1,$7fffffffffffffff,235253244);
+ testLargeIntValues : Array[0..testValuesCount-1] of LargeInt = (-$7fffffffffffffff,-$7ffffffffffffffe,-maxInt-1,-maxInt+1,-maxSmallint,-maxSmallint+1,-256,-255,-128,-127,-1,0,1,127,128,255,256,maxSmallint,maxSmallint-1,maxSmallint+1,MaxInt-1,MaxInt,$7fffffffffffffff-1,$7fffffffffffffff,235253244);
testBooleanValues : Array[0..testValuesCount-1] of boolean = (true,false,false,true,true,false,false,true,false,true,true,true,false,false,false,false,true,true,true,true,false,true,true,false,false);
testStringValues : Array[0..testValuesCount-1] of string = (
'',
@@ -188,15 +195,15 @@ const
'33:25:15.000',
'04:59:16.000',
'05:45:59.000',
- '16:35:42.000',
- '14:45:52.000',
+ '11:45:12.000',
'12:45:12.000',
- '18:45:22.000',
- '19:45:12.000',
'14:45:14.000',
- '16:45:12.000',
- '11:45:12.000',
+ '14:45:52.000',
'15:35:12.000',
+ '16:35:42.000',
+ '16:45:12.000',
+ '18:45:22.000',
+ '19:45:12.000',
'16:45:12.010',
'13:55:12.200',
'13:46:12.543',
@@ -206,7 +213,7 @@ const
'10:54:12.999',
'12:25:12.000',
'20:15:12.758',
- '12:25:12.000'
+ '23:59:59.000'
);
@@ -217,7 +224,9 @@ var dbtype,
dbuser,
dbhostname,
dbpassword,
+ dblogfilename,
dbQuoteChars : string;
+ dblogfile : TextFile;
DataEvents : string;
DBConnector : TDBConnector;
testValues : Array [TFieldType,0..testvaluescount -1] of string;
@@ -247,6 +256,17 @@ begin
FFormatSettings.TimeSeparator:=':';
FFormatSettings.ShortDateFormat:='yyyy/mm/dd';
FFormatSettings.LongTimeFormat:='hh:nn:ss.zzz';
+
+ // Set up time format for logging output:
+ // ISO 8601 type date string so logging is uniform across machines
+ FLogTimeFormat.DecimalSeparator:='.';
+ FLogTimeFormat.ThousandSeparator:=#0;
+ FLogTimeFormat.DateSeparator:='-';
+ FLogTimeFormat.TimeSeparator:=':';
+ FLogTimeFormat.ShortDateFormat:='yyyy-mm-dd';
+ FLogTimeFormat.LongTimeFormat:='hh:nn:ss';
+
+
FUsedDatasets := TFPList.Create;
CreateFieldDataset;
CreateNDatasets;
@@ -316,15 +336,17 @@ begin
result := GetNDataset(AChange,NForTraceDataset);
end;
-procedure TDBConnector.StartTest;
+procedure TDBConnector.StartTest(TestName: string);
begin
- // Do nothing?
+ // Log if necessary
+ LogMessage('Test','Starting test '+TestName);
end;
-procedure TDBConnector.StopTest;
+procedure TDBConnector.StopTest(TestName: string);
var i : integer;
ds : TDataset;
begin
+ LogMessage('Test','Stopping test '+TestName);
for i := 0 to FUsedDatasets.Count -1 do
begin
ds := tdataset(FUsedDatasets[i]);
@@ -341,6 +363,23 @@ begin
end;
end;
+procedure TDBConnector.LogMessage(Category,Message: string);
+begin
+ if dblogfilename<>'' then //double check: only if logging enabled
+ begin
+ try
+ Message:=StringReplace(Message, #9, '\t', [rfReplaceAll, rfIgnoreCase]);
+ Message:=StringReplace(Message, LineEnding, '\n', [rfReplaceAll, rfIgnoreCase]);
+ writeln(dbLogFile, TimeToStr(Now(), FLogTimeFormat) + #9 +
+ Category + #9 +
+ Message);
+ Flush(dbLogFile); //in case tests crash
+ except
+ // ignore log file errors
+ end;
+ end;
+end;
+
{ TTestDataLink }
@@ -387,12 +426,12 @@ end;
procedure TDBBasicsTestCase.SetUp;
begin
inherited SetUp;
- DBConnector.StartTest;
+ DBConnector.StartTest(TestName);
end;
procedure TDBBasicsTestCase.TearDown;
begin
- DBConnector.StopTest;
+ DBConnector.StopTest(TestName);
inherited TearDown;
end;
@@ -448,11 +487,42 @@ begin
dbhostname := IniFile.ReadString(dbtype,'Hostname','');
dbpassword := IniFile.ReadString(dbtype,'Password','');
dbconnectorparams := IniFile.ReadString(dbtype,'ConnectorParams','');
+ dblogfilename := IniFile.ReadString(dbtype,'LogFile','');
dbquotechars := IniFile.ReadString(dbtype,'QuoteChars','"');
IniFile.Free;
end;
+procedure SetupLog;
+begin
+ if dblogfilename<>'' then
+ begin
+ try
+ AssignFile(dblogfile,dblogfilename);
+ if not(FileExists(dblogfilename)) then
+ begin
+ ReWrite(dblogfile);
+ CloseFile(dblogfile);
+ end;
+ Append(dblogfile);
+ except
+ dblogfilename:=''; //rest of code relies on this as a log switch
+ end;
+ end;
+end;
+
+procedure CloseLog;
+begin
+ if dblogfilename<>'' then
+ begin
+ try
+ CloseFile(dbLogFile);
+ except
+ // Ignore log file errors
+ end;
+ end;
+end;
+
procedure InitialiseDBConnector;
const B: array[boolean] of char=('0','1'); // should be exported from some main db unit, as SQL true/false?
@@ -557,6 +627,10 @@ end;
initialization
ReadIniFile;
+ SetupLog;
DBConnectorRefCount:=0;
+
+finalization
+ CloseLog;
end.
diff --git a/packages/fcl-fpcunit/src/DUnitCompatibleInterface.inc b/packages/fcl-fpcunit/src/DUnitCompatibleInterface.inc
index 124553798f..ce9ee7d68e 100644
--- a/packages/fcl-fpcunit/src/DUnitCompatibleInterface.inc
+++ b/packages/fcl-fpcunit/src/DUnitCompatibleInterface.inc
@@ -5,11 +5,13 @@
class procedure Check(pValue: boolean; pMessage: string = '');
class procedure CheckEquals(expected, actual: extended; msg: string = ''); overload;
class procedure CheckEquals(expected, actual: string; msg: string = ''); overload;
+ class procedure CheckEquals(expected, actual: unicodestring; msg: string = ''); overload;
class procedure CheckEquals(expected, actual: extended; delta: extended; msg: string = ''); overload;
class procedure CheckEquals(expected, actual: integer; msg: string = ''); overload;
class procedure CheckEquals(expected, actual: boolean; msg: string = ''); overload;
class procedure CheckEquals(expected, actual: TClass; msg: string = ''); overload;
class procedure CheckNotEquals(expected, actual: string; msg: string = ''); overload;
+ class procedure CheckNotEquals(expected, actual: unicodestring; msg: string = ''); overload;
class procedure CheckNotEquals(expected, actual: integer; msg: string = ''); overload; virtual;
class procedure CheckNotEquals(expected, actual: boolean; msg: string = ''); overload; virtual;
class procedure CheckNotEquals(expected: extended; actual: extended; delta: extended = 0; msg: string = ''); overload; virtual;
@@ -60,6 +62,10 @@ class procedure TAssert.CheckEquals(expected, actual: string; msg: string);
begin
AssertEquals(msg, expected, actual);
end;
+class procedure TAssert.CheckEquals(expected, actual: unicodestring; msg: string);
+begin
+ AssertEquals(msg, expected, actual);
+end;
class procedure TAssert.CheckEquals(expected, actual: extended;
delta: extended; msg: string);
@@ -88,6 +94,12 @@ begin
Fail(msg + ComparisonMsg(Expected, Actual, false));
end;
+class procedure TAssert.CheckNotEquals(expected, actual: unicodestring; msg: string);
+begin
+ if (Expected=Actual) then
+ Fail(msg + ComparisonMsg(Expected, Actual, false));
+end;
+
class procedure TAssert.CheckNotEquals(expected, actual: integer; msg: string);
begin
if (expected = actual) then
diff --git a/packages/fcl-fpcunit/src/fpcunit.pp b/packages/fcl-fpcunit/src/fpcunit.pp
index e0ce5c463a..9992bfc7f2 100644
--- a/packages/fcl-fpcunit/src/fpcunit.pp
+++ b/packages/fcl-fpcunit/src/fpcunit.pp
@@ -87,6 +87,8 @@ type
class procedure AssertFalse(ACondition: boolean); overload;
class procedure AssertEquals(const AMessage: string; Expected, Actual: string); overload;
class procedure AssertEquals(Expected, Actual: string); overload;
+ class procedure AssertEquals(const AMessage: string; Expected, Actual: UnicodeString); overload;
+ class procedure AssertEquals(Expected, Actual: UnicodeString); overload;
class procedure AssertEquals(const AMessage: string; Expected, Actual: integer); overload;
class procedure AssertEquals(Expected, Actual: integer); overload;
class procedure AssertEquals(const AMessage: string; Expected, Actual: int64); overload;
@@ -287,6 +289,7 @@ type
end;
function ComparisonMsg(const aExpected: string; const aActual: string; const aCheckEqual: boolean=true): string;
+ function ComparisonMsg(const aExpected: UnicodeString; const aActual: UnicodeString; const aCheckEqual: boolean=true): string;
Resourcestring
@@ -344,6 +347,16 @@ begin
end;
+function ComparisonMsg(const aExpected: UnicodeString; const aActual: UnicodeString; const aCheckEqual: boolean=true): string;
+// aCheckEqual=false gives the error message if the test does *not* expect the results to be the same.
+begin
+ if aCheckEqual then
+ Result := format(UnicodeString(SCompare), [aExpected, aActual])
+ else {check unequal requires opposite error message}
+ Result := format(UnicodeString(SCompareNotEqual), [aExpected, aActual]);
+end;
+
+
constructor EAssertionFailedError.Create;
begin
inherited Create('');
@@ -498,6 +511,17 @@ begin
AssertEquals('', Expected, Actual);
end;
+class procedure TAssert.AssertEquals(const AMessage: string; Expected, Actual: Unicodestring);
+begin
+ AssertTrue(AMessage + ComparisonMsg(Expected, Actual), (Expected=Actual));
+end;
+
+
+class procedure TAssert.AssertEquals(Expected, Actual: UnicodeString);
+begin
+ AssertEquals('', Expected, Actual);
+end;
+
class procedure TAssert.AssertNotNull(const AString: string);
begin
diff --git a/packages/fcl-js/fpmake.pp b/packages/fcl-js/fpmake.pp
index 69b4226782..0aea4e70a7 100644
--- a/packages/fcl-js/fpmake.pp
+++ b/packages/fcl-js/fpmake.pp
@@ -28,11 +28,14 @@ begin
P.IncludePath.Add('src');
T:=P.Targets.AddUnit('jsbase.pp');
+ T:=P.Targets.AddUnit('jstoken.pp');
T:=P.Targets.AddUnit('jstree.pp');
T:=P.Targets.AddUnit('jsscanner.pp');
T.ResourceStrings:=true;
T:=P.Targets.AddUnit('jsparser.pp');
T.ResourceStrings:=true;
+ T:=P.Targets.AddUnit('jswriter.pp');
+ T.ResourceStrings:=true;
{$ifndef ALLPACKAGES}
Run;
end;
diff --git a/packages/fcl-js/src/jsparser.pp b/packages/fcl-js/src/jsparser.pp
index c17d83d279..c231635e6d 100644
--- a/packages/fcl-js/src/jsparser.pp
+++ b/packages/fcl-js/src/jsparser.pp
@@ -6,46 +6,13 @@ unit jsparser;
interface
uses
- Classes, SysUtils, jsscanner, jstree;
+ Classes, SysUtils, jsscanner, jstree, jstoken;
Const
SEmptyLabel = '';
Type
-
- { TJSLabelSet }
-
- TJSLabelSet = Class(TObject)
- private
- FCOnt: Boolean;
- FNext: TJSLabelSet;
- FTarget: Cardinal;
- Public
- Property Target : Cardinal Read FTarget Write FTarget;
- Property Next : TJSLabelSet Read FNext Write FNext; // Linked list
- Property Continuable : Boolean Read FCOnt Write FCont;
- end;
-
- { TJSLabel }
-
- TJSLabel = Class(TObject)
- private
- FLabelSet: TJSLabelSet;
- FLocationLine: Integer;
- FLocationPos: Integer;
- FLocationSource: String;
- FName: String;
- FNext: TJSLabel;
- Public
- Property Name : String Read FName Write FName;
- Property LabelSet : TJSLabelSet Read FLabelSet Write FLabelSet;
- Property LocationSource : String Read FLocationSource Write FLocationSource;
- Property LocationLine : Integer Read FLocationLine Write FLocationLine;
- Property LocationPos : Integer Read FLocationPos Write FLocationPos;
- Property Next : TJSLabel Read FNext Write FNext;
- end;
-
{ TJSParser }
TJSParser = Class(TObject)
@@ -601,7 +568,7 @@ begin
begin
While CurrentToken=tjsComma do
GetNextToken;
- If (CurrentToken in [tjsIdentifier,jsscanner.tjsString,tjsnumber]) then
+ If (CurrentToken in [tjsIdentifier,jstoken.tjsString,tjsnumber]) then
begin
E:=N.Elements.AddElement;
E.Name:=CurrenttokenString;
@@ -724,7 +691,7 @@ begin
GetNextToken;
end;
tjsNumber : Result:=ParseNumericLiteral;
- jsscanner.tjsString : Result:=ParseStringLiteral;
+ jstoken.tjsString : Result:=ParseStringLiteral;
tjsDiv,
tjsDivEq : Result:=ParseRegularExpressionLiteral
else
@@ -777,6 +744,7 @@ function TJSParser.ParseMemberExpression: TJSElement;
Var
M : TJSDotMemberExpression;
+ N : TJSNewMemberExpression;
B : TJSBracketMemberExpression;
C : TJSCallExpression;
Done : Boolean;
@@ -787,7 +755,16 @@ begin
tjsFunction : Result:=ParseFunctionExpression();
tjsNew : begin
GetNextToken;
- Result:=ParseMemberExpression();
+ N:=TJSNewMemberExpression(CreateElement(TJSNewMemberExpression));
+ try
+ Result:=N;
+ N.Mexpr:=ParseMemberExpression();
+ if (CurrentToken=tjsBraceOpen) then
+ N.Args:=ParseArguments;
+ except
+ FreeAndNil(N);
+ Raise;
+ end;
end;
else
Result:=ParsePrimaryExpression()
@@ -1481,7 +1458,7 @@ begin
tjsDo :
begin
GetNextToken;
- W:=TJSWhileStatement(CreateElement(TJSWhileStatement));
+ W:=TJSDoWhileStatement(CreateElement(TJSDoWhileStatement));
Result:=W;
W.Body:=ParseStatement;
Consume(tjsWhile);
@@ -1604,6 +1581,7 @@ begin
end;
Consume(tjsSemicolon,True);
C.Target:=L.Labelset.Target;
+ C.TargetName:=L.Name;
except
FreeAndNil(C);
Raise;
@@ -1631,6 +1609,7 @@ begin
end;
Consume(tjsSemicolon,True);
B.Target:=L.Labelset.Target;
+ B.TargetName:=L.Name;
except
FreeAndNil(B);
Raise;
@@ -1722,7 +1701,9 @@ begin
Consume(tjsCurlyBraceClose);
finally
LeaveLabel;
+ FreeCurrentLabelSet;
end;
+ Result:=N;
except
FreeAndNil(N);
Raise;
@@ -1753,7 +1734,7 @@ function TJSParser.ParseTryStatement : TJSElement;
Var
BO,BC,BF : TJSElement;
- Id : TJSString;
+ Id : jstree.TJSString;
T : TJSTryStatement;
begin
@@ -1913,7 +1894,7 @@ begin
FCurrentLabelSet:=Nil;
LS.target:=CurrentLabelSet.Target;
Repeat
- EnterLabel(CurrentTokenString);
+ LS.TheLabel:=EnterLabel(CurrentTokenString);
Consume(tjsIdentifier);
Consume(tjsColon);
Until (CurrentToken<>tjsIdentifier) or (PeekNextToken<>tjsColon);
@@ -2037,13 +2018,13 @@ function TJSParser.ParseSourceElements : TJSSourceElements;
Const
StatementTokens = [tjsNULL, tjsTRUE, tjsFALSE,
- tjsTHIS, tjsIdentifier,jsscanner.tjsSTRING,tjsNUMBER,
+ tjsTHIS, tjsIdentifier,jstoken.tjsSTRING,tjsNUMBER,
tjsBraceOpen,tjsCurlyBraceOpen,tjsSquaredBraceOpen,
tjsNew,tjsDelete,tjsVoid,tjsTypeOf,
tjsPlusPlus,tjsMinusMinus,
tjsPlus,tjsMinus,tjsNot,tjsNE,tjsSNE,tjsSemicolon,
- tjsVAR,tjsIF,tjsDO,tjsWHILE,tjsFOR,jsscanner.tjsCONTINUE,jsscanner.tjsBREAK,jsscanner.tjsReturn,
- tjsWith,jsscanner.tjsSWITCH,tjsThrow,TjsTry,tjsDIV,tjsDIVEQ];
+ tjsVAR,tjsIF,tjsDO,tjsWHILE,tjsFOR,jstoken.tjsCONTINUE,jstoken.tjsBREAK,jstoken.tjsReturn,
+ tjsWith,jstoken.tjsSWITCH,tjsThrow,TjsTry,tjsDIV,tjsDIVEQ];
Var
F : TJSFunctionDeclarationStatement;
@@ -2060,7 +2041,7 @@ begin
FCurrentVars:=Result.Vars;
Repeat
{$ifdef debugparser} Writeln('Sourceelements start:',GetEnumName(TypeInfo(TJSToken),Ord(CurrentToken)), ' As string: ',CurrentTokenString);{$endif debugparser}
- If (CurrentToken=jsscanner.tjsFunction) then
+ If (CurrentToken=jstoken.tjsFunction) then
begin
If (PeekNextToken<>tjsBraceOpen) then
begin
diff --git a/packages/fcl-js/src/jsscanner.pp b/packages/fcl-js/src/jsscanner.pp
index 5b9f422d2c..884fca6be5 100644
--- a/packages/fcl-js/src/jsscanner.pp
+++ b/packages/fcl-js/src/jsscanner.pp
@@ -19,7 +19,7 @@ unit JSScanner;
interface
-uses SysUtils, Classes;
+uses SysUtils, Classes, jstoken;
resourcestring
SErrInvalidCharacter = 'Invalid character ''%s''';
@@ -29,75 +29,8 @@ resourcestring
SErrInvalidPPElse = '$ELSE without matching $IFxxx';
SErrInvalidPPEndif = '$ENDIF without matching $IFxxx';
SInvalidHexadecimalNumber = 'Invalid decimal number';
- SErrInvalidNonEqual = 'SyntaxError: != or !== expected';
-
-type
-
- TJSToken = (tjsUnknown,
- // Specials
- tjsEOF,tjsWhiteSpace,tjsChar,tjsString, tjsIdentifier,tjsNumber, tjsComment,tjsREGEX, tjsRESERVED,
- tjsANDAND, tjsANDEQ,
- tjsBraceOpen,tjsBraceClose,tjsSQuaredBraceOpen,tjsSQuaredBraceClose,tjsCurlyBraceOpen,tjsCurlyBraceClose,
- tjsCOMMA,tjsCOLON, tjsDOT,tjsSEMICOLON, tjsASSIGN,tjsGT,tjsLT, tjsConditional,
- tjsPLUS,tjsMINUS,tjsMUL,tjsDIV,tjsAnd,tjsOR, tjsInv, tjsMod, tjsXOR, tjsNot,
- tjsEQ,
- tjsGE,
- tjsLE, tjsLSHIFT, tjsLSHIFTEQ,
- tjsMINUSEQ, tjsMINUSMINUS, tjsMODEQ,tjsDIVEQ,tjsXOREq,
- tjsNE,
- tjsOREQ, tjsOROR,
- tjsPLUSEQ, tjsPLUSPLUS,
- tjsURSHIFT, tjsURSHIFTEQ,
- tjsRSHIFT, tjsRSHIFTEQ,
- tjsSEQ, tjsSNE, tjsMULEQ,
- { Reserved words start here. They must be last }
- tjsBREAK,tjsCASE, tjsCATCH, tjsCONTINUE,
- tjsDEFAULT, tjsDELETE, tjsDO,
- tjsELSE,
- tjsFalse, tjsFINALLY, tjsFOR, tjsFUNCTION,
- tjsIF, tjsIN, tjsINSTANCEOF,
- tjsNEW,tjsNULL,
- tjsRETURN,
- tjsSWITCH,
- tjsTHIS, tjsTHROW, tjsTrue, tjsTRY, tjsTYPEOF,
- tjsVAR, tjsVOID,
- tjsWHILE, tjsWITH
- );
-
-const
- FirstKeyword = tjsBreak;
- LastKeyWord = tJSWith;
-
- TokenInfos: array[TJSToken] of string = ('unknown',
- // Specials
- 'EOF','whitespace','Char','String', 'identifier','number','comment','regular expression', 'reserved word',
- '&&','&=',
- '(',')','[',']','{','}',
- ',',':','.',';','=','>','<','?',
- '+','-','*','/','&','|','~','%','^','!',
- '==',
- '>=',
- '<=', '<<', '<<=',
- '-=', '--', '%=', '/=','^=',
- '!=',
- '|=', '||',
- '+=', '++',
- '>>>', '>>>=',
- '>>', '>>=',
- '===', '!==', '*=',
- // Identifiers last
- 'break','case','catch', 'continue',
- 'default','delete', 'do',
- 'else',
- 'false','finally', 'for', 'function',
- 'if', 'in', 'instanceof',
- 'new','null',
- 'return',
- 'switch',
- 'this', 'throw', 'true', 'try', 'typeof',
- 'var', 'void',
- 'while', 'with'
- );
+ SErrInvalidNonEqual = 'Syntax Error: != or !== expected';
+ SErrInvalidRegularExpression = 'Syntax error in regular expression: / expected, got: %s';
Type
TLineReader = class
@@ -161,6 +94,7 @@ Type
function FetchLine: Boolean;
function GetCurColumn: Integer;
function ReadUnicodeEscape: WideChar;
+ Function ReadRegex : TJSToken;
protected
procedure Error(const Msg: string);overload;
procedure Error(const Msg: string; Args: array of Const);overload;
@@ -169,6 +103,7 @@ Type
constructor Create(AStream : TStream);
destructor Destroy; override;
procedure OpenFile(const AFilename: string);
+ Function FetchRegexprToken: TJSToken;
Function FetchToken: TJSToken;
Function IsEndOfLine : Boolean;
Property WasEndOfLine : Boolean Read FWasEndOfLine;
@@ -238,6 +173,14 @@ begin
FSourceFilename := AFilename;
end;
+Function TJSScanner.FetchRegexprToken: TJSToken;
+begin
+ if (CurToken in [tjsDiv,tjsDivEq]) then
+ Result:=ReadRegEx
+ else
+ Result:=CurToken
+end;
+
procedure TJSScanner.Error(const Msg: string);
begin
@@ -363,7 +306,7 @@ begin
Result:=tjsDiv;
end;
-Function TJSScanner.ReadUnicodeEscape : WideChar;
+function TJSScanner.ReadUnicodeEscape: WideChar;
Var
S : String;
@@ -385,7 +328,51 @@ begin
Result:=WideChar(StrToInt('$'+S));
end;
-Function TJSScanner.DoStringLiteral : TJSToken;
+Function TJSScanner.ReadRegex: TJSToken;
+
+Var
+ CC : Boolean; // Character class
+ Done : Boolean;
+ CL,L : Integer;
+ TokenStart : PChar;
+
+begin
+ if (CurToken<>tjsDivEq) then
+ FCurTokenString := '/'
+ else
+ FCurTokenString := '/=';
+ CL:=Length(FCurTokenString);
+ Inc(TokenStr);
+ TokenStart:=TokenStr;
+ Done:=False;
+ CC:=False;
+ While Not Done do
+ begin
+ Case TokenStr[0] of
+ #0 : Done:=True;
+ '/' : Done:=Not CC;
+ '\' : begin
+ Inc(TokenStr);
+ Done:=TokenStr=#0;
+ end;
+ '[' : CC:=True;
+ ']' : CC:=False;
+ end;
+ if not Done then
+ Inc(TokenStr);
+ end;
+ If (TokenStr[0]<>'/') then
+ Error(SErrInvalidRegularExpression, [TokenStr[0]]);
+ repeat
+ Inc(TokenStr);
+ until not (TokenStr[0] in ['A'..'Z', 'a'..'z', '0'..'9', '_','$']);
+ L:=(TokenStr-TokenStart);
+ SetLength(FCurTokenString,CL+L);
+ Move(TokenStart^,FCurTokenString[CL+1],L);
+ Result:=tjsRegEx;
+end;
+
+function TJSScanner.DoStringLiteral: TJSToken;
Var
Delim : Char;
@@ -533,7 +520,7 @@ begin
end
end;
-function TJSScanner.FetchToken: TJSToken;
+Function TJSScanner.FetchToken: TJSToken;
var
@@ -837,7 +824,7 @@ begin
((Result=tjsWhiteSpace) and ReturnWhiteSpace);
end;
-function TJSScanner.IsEndOfLine: Boolean;
+Function TJSScanner.IsEndOfLine: Boolean;
begin
Result:=(TokenStr=Nil) or (TokenStr[0] in [#0,#10,#13]);
end;
diff --git a/packages/fcl-js/src/jstoken.pp b/packages/fcl-js/src/jstoken.pp
new file mode 100644
index 0000000000..1099f2fd22
--- /dev/null
+++ b/packages/fcl-js/src/jstoken.pp
@@ -0,0 +1,79 @@
+unit jstoken;
+
+{$mode objfpc}{$H+}
+
+interface
+
+type
+
+ TJSToken = (tjsUnknown,
+ // Specials
+ tjsEOF,tjsWhiteSpace,tjsChar,tjsString, tjsIdentifier,tjsNumber, tjsComment,tjsREGEX, tjsRESERVED,
+ tjsANDAND, tjsANDEQ,
+ tjsBraceOpen,tjsBraceClose,tjsSQuaredBraceOpen,tjsSQuaredBraceClose,tjsCurlyBraceOpen,tjsCurlyBraceClose,
+ tjsCOMMA,tjsCOLON, tjsDOT,tjsSEMICOLON, tjsASSIGN,tjsGT,tjsLT, tjsConditional,
+ tjsPLUS,tjsMINUS,tjsMUL,tjsDIV,tjsAnd,tjsOR, tjsInv, tjsMod, tjsXOR, tjsNot,
+ tjsEQ,
+ tjsGE,
+ tjsLE, tjsLSHIFT, tjsLSHIFTEQ,
+ tjsMINUSEQ, tjsMINUSMINUS, tjsMODEQ,tjsDIVEQ,tjsXOREq,
+ tjsNE,
+ tjsOREQ, tjsOROR,
+ tjsPLUSEQ, tjsPLUSPLUS,
+ tjsURSHIFT, tjsURSHIFTEQ,
+ tjsRSHIFT, tjsRSHIFTEQ,
+ tjsSEQ, tjsSNE, tjsMULEQ,
+ { Reserved words start here. They must be last }
+ tjsBREAK,tjsCASE, tjsCATCH, tjsCONTINUE,
+ tjsDEFAULT, tjsDELETE, tjsDO,
+ tjsELSE,
+ tjsFalse, tjsFINALLY, tjsFOR, tjsFUNCTION,
+ tjsIF, tjsIN, tjsINSTANCEOF,
+ tjsNEW,tjsNULL,
+ tjsRETURN,
+ tjsSWITCH,
+ tjsTHIS, tjsTHROW, tjsTrue, tjsTRY, tjsTYPEOF,
+ tjsVAR, tjsVOID,
+ tjsWHILE, tjsWITH
+ );
+
+const
+ FirstKeyword = tjsBreak;
+ LastKeyWord = tJSWith;
+
+ TokenInfos: array[TJSToken] of string = ('unknown',
+ // Specials
+ 'EOF','whitespace','Char','String', 'identifier','number','comment','regular expression', 'reserved word',
+ '&&','&=',
+ '(',')','[',']','{','}',
+ ',',':','.',';','=','>','<','?',
+ '+','-','*','/','&','|','~','%','^','!',
+ '==',
+ '>=',
+ '<=', '<<', '<<=',
+ '-=', '--', '%=', '/=','^=',
+ '!=',
+ '|=', '||',
+ '+=', '++',
+ '>>>', '>>>=',
+ '>>', '>>=',
+ '===', '!==', '*=',
+ // Identifiers last
+ 'break','case','catch', 'continue',
+ 'default','delete', 'do',
+ 'else',
+ 'false','finally', 'for', 'function',
+ 'if', 'in', 'instanceof',
+ 'new','null',
+ 'return',
+ 'switch',
+ 'this', 'throw', 'true', 'try', 'typeof',
+ 'var', 'void',
+ 'while', 'with'
+ );
+
+
+implementation
+
+end.
+
diff --git a/packages/fcl-js/src/jstree.pp b/packages/fcl-js/src/jstree.pp
index 65914a4e7a..74b58c8e19 100644
--- a/packages/fcl-js/src/jstree.pp
+++ b/packages/fcl-js/src/jstree.pp
@@ -1,13 +1,68 @@
unit jstree;
{$mode objfpc}{$H+}
+{ $DEFINE NOCLASSES}
interface
uses
- Classes, SysUtils, jsbase;
+{$IFNDEF NOCLASSES} Classes, {$ENDIF} SysUtils, jsbase, jstoken;
Type
+{$IFDEF NOCLASSES}
+
+ { TStrings }
+{$M+}
+ TStrings = Class(TObject)
+ private
+ FCount: Integer;
+ FStrings : Array of String;
+ function GetCount: Integer;
+ function GetS(AIndex : Integer): String;
+ procedure SetS(AIndex : Integer; AValue: String);
+ Public
+ Function Add(Const S : String) : Integer;
+ Procedure Assign(Source : TStrings);
+ Property Strings[AIndex : Integer] : String Read GetS Write SetS; default;
+ Property Count : Integer Read GetCount;
+ end;
+ TStringList = TStrings;
+ EListError = Class(Exception);
+
+ TCollection = Class;
+
+ { TCollectionItem }
+
+ TCollectionItem = Class
+ Private
+ FCollection : TCollection;
+ Public
+ Constructor Create(ACollection : TCollection);
+ Destructor Destroy; override;
+ end;
+ TCollectionItemClass = Class of TCollectionItem;
+
+ { TCollection }
+
+ TCollection = Class
+ private
+ FCount: Integer;
+ FItems : Array of TCollectionItem;
+ FItemClass : TCollectionItemClass;
+ function GetCount: Integer;
+ function GetI(AIndex : Integer): TCollectionItem;
+ public
+ Constructor Create(AItemClass : TCollectionItemClass);
+ Destructor Destroy; override;
+ Procedure Clear;
+ Procedure Remove(AItem : TCollectionItem);
+ Function Add : TCollectionItem;
+ Property Items[AIndex : Integer] : TCollectionItem Read GetI;default;
+ Property Count : Integer Read GetCount;
+ end;
+
+{$M-}
+{$ENDIF}
TJSElementFlag = (elIsConst,elIsConstValid);
TJSElementFlags = set of TJSElementFlag;
@@ -17,18 +72,47 @@ Type
TJSObject = Class(TObject);
+
+ { TJSLabelSet }
+
+ TJSLabelSet = Class(TJSObject)
+ private
+ FCOnt: Boolean;
+ FNext: TJSLabelSet;
+ FTarget: Cardinal;
+ Public
+ Property Target : Cardinal Read FTarget Write FTarget;
+ Property Next : TJSLabelSet Read FNext Write FNext; // Linked list
+ Property Continuable : Boolean Read FCOnt Write FCont;
+ end;
+
+ { TJSLabel }
+
+ TJSLabel = Class(TJSObject)
+ private
+ FLabelSet: TJSLabelSet;
+ FLocationLine: Integer;
+ FLocationPos: Integer;
+ FLocationSource: String;
+ FName: String;
+ FNext: TJSLabel;
+ Public
+ Property Name : String Read FName Write FName;
+ Property LabelSet : TJSLabelSet Read FLabelSet Write FLabelSet;
+ Property LocationSource : String Read FLocationSource Write FLocationSource;
+ Property LocationLine : Integer Read FLocationLine Write FLocationLine;
+ Property LocationPos : Integer Read FLocationPos Write FLocationPos;
+ Property Next : TJSLabel Read FNext Write FNext;
+ end;
+
{ TJSFuncDef }
TJSFuncDef = Class(TJSObject)
private
FBody: TJSFunctionBody;
- FCache: TJSObject;
- FCommon: TJSObject;
FIsEmpty: Boolean;
FName: String;
- FNext: TJSFuncDef;
FParams: TStrings;
- FSec: TObject;
procedure SetParams(const AValue: TStrings);
Public
Constructor Create;
@@ -36,11 +120,7 @@ Type
Property Params : TStrings Read FParams Write SetParams;
Property Body : TJSFunctionBody Read FBody Write FBody;
Property Name : String Read FName Write FName;
- Property Common : TJSObject Read FCommon Write FCommon;
- Property Cache : TJSObject Read FCache write FCache;
- Property Next : TJSFuncDef Read FNext Write FNext;
Property IsEmpty : Boolean Read FIsEmpty Write FIsEmpty;
- Property SecurityDomain : TObject Read FSec Write FSec;
end;
TJSString = WideString;
@@ -130,10 +210,9 @@ Type
TJSArrayLiteralElements = Class(TCollection)
private
function GetE(AIndex : Integer): TJSArrayLiteralElement;
- procedure SetE(AIndex : Integer; const AValue: TJSArrayLiteralElement);
Public
Function AddElement : TJSArrayLiteralElement;
- Property Elements[AIndex : Integer] : TJSArrayLiteralElement Read GetE Write SetE; default;
+ Property Elements[AIndex : Integer] : TJSArrayLiteralElement Read GetE ; default;
end;
{ TJSArrayLiteral }
@@ -164,10 +243,9 @@ Type
TJSObjectLiteralElements = Class(TCollection)
private
function GetE(AIndex : Integer): TJSObjectLiteralElement;
- procedure SetE(AIndex : Integer; const AValue: TJSObjectLiteralElement);
Public
Function AddElement : TJSObjectLiteralElement;
- Property Elements[AIndex : Integer] : TJSObjectLiteralElement Read GetE Write SetE; default;
+ Property Elements[AIndex : Integer] : TJSObjectLiteralElement Read GetE ; default;
end;
{ TJSObjectLiteral }
@@ -242,26 +320,92 @@ Type
private
FA: TJSElement;
Public
+ Class function PrefixOperatorToken : tjsToken; virtual;
+ Class function PostFixOperatorToken : tjsToken; virtual;
+ Class function PrefixOperator : String;
+ Class function PostFixOperator : String;
Destructor Destroy; override;
Property A : TJSElement Read FA Write FA;
end;
+ TJSUnaryClass = class of TJSUnary;
{ TJSVariableStatement }
TJSVariableStatement = Class(TJSUnary);
TJSExpressionStatement = Class(TJSUnary);
- TJSThrowStatement = Class(TJSUnary);
+
+ { TJSThrowStatement }
+
+ TJSThrowStatement = Class(TJSUnary)
+ Class function PrefixOperatorToken : tjsToken; Override;
+ end;
+
TJSUnaryExpression = Class(TJSUnary);
- TJSUnaryDeleteExpression = Class(TJSUnaryExpression);
- TJSUnaryVoidExpression = Class(TJSUnaryExpression);
- TJSUnaryTypeOfExpression = Class(TJSUnaryExpression);
- TJSUnaryPrePlusPlusExpression = Class(TJSUnaryExpression);
- TJSUnaryPreMinusMinusExpression = Class(TJSUnaryExpression);
- TJSUnaryPlusExpression = Class(TJSUnaryExpression);
- TJSUnaryMinusExpression = Class(TJSUnaryExpression);
- TJSUnaryInvExpression = Class(TJSUnaryExpression);
- TJSUnaryNotExpression = Class(TJSUnaryExpression);
- TJSUnaryPostPlusPlusExpression = Class(TJSUnaryExpression);
- TJSUnaryPostMinusMinusExpression = Class(TJSUnaryExpression);
+
+ { TJSUnaryDeleteExpression }
+
+ TJSUnaryDeleteExpression = Class(TJSUnaryExpression)
+ Class function PrefixOperatorToken : tjsToken; override;
+ end;
+
+ { TJSUnaryVoidExpression }
+
+ TJSUnaryVoidExpression = Class(TJSUnaryExpression)
+ Class function PrefixOperatorToken : tjsToken; override;
+ end;
+
+ { TJSUnaryTypeOfExpression }
+
+ TJSUnaryTypeOfExpression = Class(TJSUnaryExpression)
+ Class function PrefixOperatorToken : tjsToken; override;
+ end;
+
+ { TJSUnaryPrePlusPlusExpression }
+
+ TJSUnaryPrePlusPlusExpression = Class(TJSUnaryExpression)
+ Class function PrefixOperatorToken : tjsToken; override;
+ end;
+
+ { TJSUnaryPreMinusMinusExpression }
+
+ TJSUnaryPreMinusMinusExpression = Class(TJSUnaryExpression)
+ Class function PrefixOperatorToken : tjsToken; override;
+ end;
+
+ { TJSUnaryPlusExpression }
+
+ TJSUnaryPlusExpression = Class(TJSUnaryExpression)
+ Class function PrefixOperatorToken : tjsToken; override;
+ end;
+
+ { TJSUnaryMinusExpression }
+
+ TJSUnaryMinusExpression = Class(TJSUnaryExpression)
+ Class function PrefixOperatorToken : tjsToken; override;
+ end;
+
+ { TJSUnaryInvExpression }
+
+ TJSUnaryInvExpression = Class(TJSUnaryExpression)
+ Class function PrefixOperatorToken : tjsToken; override;
+ end;
+
+ { TJSUnaryNotExpression }
+
+ TJSUnaryNotExpression = Class(TJSUnaryExpression)
+ Class function PrefixOperatorToken : tjsToken; override;
+ end;
+
+ { TJSUnaryPostPlusPlusExpression }
+
+ TJSUnaryPostPlusPlusExpression = Class(TJSUnaryExpression)
+ Class function PostFixOperatorToken : tjsToken; override;
+ end;
+
+ { TJSUnaryPostMinusMinusExpression }
+
+ TJSUnaryPostMinusMinusExpression = Class(TJSUnaryExpression)
+ Class function PostFixOperatorToken : tjsToken; override;
+ end;
@@ -276,41 +420,177 @@ Type
Property A : TJSElement Read FA Write FA;
Property B : TJSElement Read FB Write FB;
end;
+ TJSBinaryClass = Class of TJSBinary;
{ TJSStatementList }
TJSStatementList = Class(TJSBinary); // A->first statement, B->next in list, chained.
TJSVariableDeclarationList = Class(TJSBinary);
TJSWithStatement = Class(TJSBinary); // A-> with expression, B->statement(s)
- TJSLogicalOrExpression = Class (TJSBinary);
- TJSLogicalAndExpression = Class (TJSBinary);
- TJSBitwiseAndExpression = Class (TJSBinary);
- TJSBitwiseOrExpression = Class (TJSBinary);
- TJSBitwiseXOrExpression = Class (TJSBinary);
- TJSEqualityExpression = Class (TJSBinary);
- TJSEqualityExpressionEQ = Class(TJSEqualityExpression);
- TJSEqualityExpressionNE = Class(TJSEqualityExpression);
- TJSEqualityExpressionSEQ = Class(TJSEqualityExpression);
- TJSEqualityExpressionSNE = Class(TJSEqualityExpression);
- TJSRelationalExpression = Class(TJSBinary);
- TJSRelationalExpressionLT = Class(TJSRelationalExpression);
- TJSRelationalExpressionGT = Class(TJSRelationalExpression);
- TJSRelationalExpressionLE = Class(TJSRelationalExpression);
- TJSRelationalExpressionGE = Class(TJSRelationalExpression);
- TJSRelationalExpressionIn = Class(TJSRelationalExpression);
- TJSRelationalExpressionInstanceOf = Class(TJSRelationalExpression);
- TJSShiftExpression = Class(TJSBinary);
- TJSLShiftExpression = Class(TJSShiftExpression);
- TJSRShiftExpression = Class(TJSShiftExpression);
- TJSURShiftExpression = Class(TJSShiftExpression);
- TJSAdditiveExpression = Class(TJSBinary);
- TJSAdditiveExpressionPlus = Class(TJSAdditiveExpression);
- TJSAdditiveExpressionMinus = Class(TJSAdditiveExpression);
- TJSMultiplicativeExpression = Class(TJSBinary);
- TJSMultiplicativeExpressionMul = Class(TJSMultiplicativeExpression);
- TJSMultiplicativeExpressionDiv = Class(TJSMultiplicativeExpression);
- TJSMultiplicativeExpressionMod = Class(TJSMultiplicativeExpression);
- TJSCommaExpression = Class(TJSBinary);
+
+ { TJSBinaryExpression }
+
+ TJSBinaryExpression = Class(TJSBinary)
+ Class function OperatorToken : tjsToken; virtual;
+ Class function OperatorString : string;
+ Class Function AllowCompact : Boolean; virtual;
+ end;
+
+ { TJSLogicalOrExpression }
+
+ TJSLogicalOrExpression = Class (TJSBinaryExpression)
+ Class function OperatorToken : tjsToken; override;
+ end;
+
+ { TJSLogicalAndExpression }
+
+ TJSLogicalAndExpression = Class (TJSBinaryExpression)
+ Class function OperatorToken : tjsToken; override;
+ end;
+
+ { TJSBitwiseAndExpression }
+
+ TJSBitwiseAndExpression = Class (TJSBinaryExpression)
+ Class function OperatorToken : tjsToken; override;
+ end;
+
+ { TJSBitwiseOrExpression }
+
+ TJSBitwiseOrExpression = Class (TJSBinaryExpression)
+ Class function OperatorToken : tjsToken; override;
+ end;
+
+ { TJSBitwiseXOrExpression }
+
+ TJSBitwiseXOrExpression = Class (TJSBinaryExpression)
+ Class function OperatorToken : tjsToken; override;
+ end;
+
+ TJSEqualityExpression = Class (TJSBinaryExpression);
+
+ { TJSEqualityExpressionEQ }
+
+ TJSEqualityExpressionEQ = Class(TJSEqualityExpression)
+ Class function OperatorToken : tjsToken; override;
+ end;
+
+ { TJSEqualityExpressionNE }
+
+ TJSEqualityExpressionNE = Class(TJSEqualityExpression)
+ Class function OperatorToken : tjsToken; override;
+ end;
+
+ { TJSEqualityExpressionSEQ }
+
+ TJSEqualityExpressionSEQ = Class(TJSEqualityExpression)
+ Class function OperatorToken : tjsToken; override;
+ end;
+
+ { TJSEqualityExpressionSNE }
+
+ TJSEqualityExpressionSNE = Class(TJSEqualityExpression)
+ Class function OperatorToken : tjsToken; override;
+ end;
+
+ TJSRelationalExpression = Class(TJSBinaryExpression);
+
+ { TJSRelationalExpressionLT }
+
+ TJSRelationalExpressionLT = Class(TJSRelationalExpression)
+ Class function OperatorToken : tjsToken; override;
+ end;
+
+ { TJSRelationalExpressionGT }
+
+ TJSRelationalExpressionGT = Class(TJSRelationalExpression)
+ Class function OperatorToken : tjsToken; override;
+ end;
+
+ { TJSRelationalExpressionLE }
+
+ TJSRelationalExpressionLE = Class(TJSRelationalExpression)
+ Class function OperatorToken : tjsToken; override;
+ end;
+
+ { TJSRelationalExpressionGE }
+
+ TJSRelationalExpressionGE = Class(TJSRelationalExpression)
+ Class function OperatorToken : tjsToken; override;
+ end;
+
+ { TJSRelationalExpressionIn }
+
+ TJSRelationalExpressionIn = Class(TJSRelationalExpression)
+ Class function OperatorToken : tjsToken; override;
+ Class Function AllowCompact : Boolean; override;
+ end;
+
+ { TJSRelationalExpressionInstanceOf }
+
+ TJSRelationalExpressionInstanceOf = Class(TJSRelationalExpression)
+ Class function OperatorToken : tjsToken; override;
+ Class Function AllowCompact : Boolean; override;
+ end;
+
+ TJSShiftExpression = Class(TJSBinaryExpression);
+
+ { TJSLShiftExpression }
+
+ TJSLShiftExpression = Class(TJSShiftExpression)
+ Class function OperatorToken : tjsToken; override;
+ end;
+
+ { TJSRShiftExpression }
+
+ TJSRShiftExpression = Class(TJSShiftExpression)
+ Class function OperatorToken : tjsToken; override;
+ end;
+
+ { TJSURShiftExpression }
+
+ TJSURShiftExpression = Class(TJSShiftExpression)
+ Class function OperatorToken : tjsToken; override;
+ end;
+
+ TJSAdditiveExpression = Class(TJSBinaryExpression);
+
+ { TJSAdditiveExpressionPlus }
+
+ TJSAdditiveExpressionPlus = Class(TJSAdditiveExpression)
+ Class function OperatorToken : tjsToken; override;
+ end;
+
+ { TJSAdditiveExpressionMinus }
+
+ TJSAdditiveExpressionMinus = Class(TJSAdditiveExpression)
+ Class function OperatorToken : tjsToken; override;
+ end;
+
+ TJSMultiplicativeExpression = Class(TJSBinaryExpression);
+
+ { TJSMultiplicativeExpressionMul }
+
+ TJSMultiplicativeExpressionMul = Class(TJSMultiplicativeExpression)
+ Class function OperatorToken : tjsToken; override;
+ end;
+
+ { TJSMultiplicativeExpressionDiv }
+
+ TJSMultiplicativeExpressionDiv = Class(TJSMultiplicativeExpression)
+ Class function OperatorToken : tjsToken; override;
+ end;
+
+ { TJSMultiplicativeExpressionMod }
+
+ TJSMultiplicativeExpressionMod = Class(TJSMultiplicativeExpression)
+ Class function OperatorToken : tjsToken; override;
+ end;
+
+ { TJSCommaExpression }
+
+ TJSCommaExpression = Class(TJSBinaryExpression)
+ Class function OperatorToken : tjsToken; override;
+ end;
{ TJSConditionalExpression }
@@ -334,22 +614,85 @@ Type
FLHS: TJSElement;
Public
Destructor Destroy; override;
+ Class function OperatorToken : tjsToken; virtual;
+ Class function OperatorString : String;
Property Expr : TJSElement Read FExpr Write FExpr;
Property LHS : TJSElement Read FLHS Write FLHS;
end;
- TJSSimpleAssignStatement = Class(TJSAssignStatement);
- TJSMulEqAssignStatement = Class(TJSAssignStatement);
- TJSDivEqAssignStatement = Class(TJSAssignStatement);
- TJSModEqAssignStatement = Class(TJSAssignStatement);
- TJSAddEqAssignStatement = Class(TJSAssignStatement);
- TJSSubEqAssignStatement = Class(TJSAssignStatement);
- TJSLShiftEqAssignStatement = Class(TJSAssignStatement);
- TJSRShiftEqAssignStatement = Class(TJSAssignStatement);
- TJSURShiftEqAssignStatement = Class(TJSAssignStatement);
- TJSANDEqAssignStatement = Class(TJSAssignStatement);
- TJSOREqAssignStatement = Class(TJSAssignStatement);
- TJSXOREqAssignStatement = Class(TJSAssignStatement);
+ TJSAssignStatementClass = Class of TJSAssignStatement;
+
+ { TJSSimpleAssignStatement }
+
+ TJSSimpleAssignStatement = Class(TJSAssignStatement)
+ Class function OperatorToken : tjsToken; override;
+ end;
+
+ { TJSMulEqAssignStatement }
+
+ TJSMulEqAssignStatement = Class(TJSAssignStatement)
+ Class function OperatorToken : tjsToken; override;
+ end;
+
+ { TJSDivEqAssignStatement }
+
+ TJSDivEqAssignStatement = Class(TJSAssignStatement)
+ Class function OperatorToken : tjsToken; override;
+ end;
+
+ { TJSModEqAssignStatement }
+
+ TJSModEqAssignStatement = Class(TJSAssignStatement)
+ Class function OperatorToken : tjsToken; override;
+ end;
+
+ { TJSAddEqAssignStatement }
+
+ TJSAddEqAssignStatement = Class(TJSAssignStatement)
+ Class function OperatorToken : tjsToken; override;
+ end;
+
+ { TJSSubEqAssignStatement }
+
+ TJSSubEqAssignStatement = Class(TJSAssignStatement)
+ Class function OperatorToken : tjsToken; override;
+ end;
+
+ { TJSLShiftEqAssignStatement }
+
+ TJSLShiftEqAssignStatement = Class(TJSAssignStatement)
+ Class function OperatorToken : tjsToken; override;
+ end;
+
+ { TJSRShiftEqAssignStatement }
+
+ TJSRShiftEqAssignStatement = Class(TJSAssignStatement)
+ Class function OperatorToken : tjsToken; override;
+ end;
+
+ { TJSURShiftEqAssignStatement }
+
+ TJSURShiftEqAssignStatement = Class(TJSAssignStatement)
+ Class function OperatorToken : tjsToken; override;
+ end;
+
+ { TJSANDEqAssignStatement }
+
+ TJSANDEqAssignStatement = Class(TJSAssignStatement)
+ Class function OperatorToken : tjsToken; override;
+ end;
+
+ { TJSOREqAssignStatement }
+
+ TJSOREqAssignStatement = Class(TJSAssignStatement)
+ Class function OperatorToken : tjsToken; override;
+ end;
+
+ { TJSXOREqAssignStatement }
+
+ TJSXOREqAssignStatement = Class(TJSAssignStatement)
+ Class function OperatorToken : tjsToken; override;
+ end;
{ TJSVarDeclaration }
@@ -384,8 +727,10 @@ Type
TJSTargetStatement = Class(TJSElement)
private
FTarget: Cardinal;
+ FTargetName: TJSString;
Public
Property Target : Cardinal Read FTarget Write FTarget;
+ Property TargetName : TJSString Read FTargetName Write FTargetName;
end;
{ TJSBodyStatement }
@@ -408,8 +753,8 @@ Type
Property Cond : TJSElement Read FCond Write FCond;
end;
- TJSWhileStatement = Class(TJSCondLoopStatement)
- end;
+ TJSWhileStatement = Class(TJSCondLoopStatement);
+ TJSDoWhileStatement = Class(TJSWhileStatement);
{ TJSForStatement }
@@ -466,10 +811,9 @@ Type
TJSCaseElements = Class(TCollection)
private
function GetC(AIndex : Integer): TJSCaseElement;
- procedure SetC(AIndex : Integer; const AValue: TJSCaseElement);
Public
Function AddCase : TJSCaseElement;
- Property Cases[AIndex : Integer] : TJSCaseElement Read GetC Write SetC;
+ Property Cases[AIndex : Integer] : TJSCaseElement Read GetC ;default;
end;
{ TJSSwitch }
@@ -491,9 +835,12 @@ Type
TJSLabeledStatement = Class(TJSUnary)
private
+ FLabel: TJSLabel;
FTarget: Integer;
Public
+ Destructor Destroy; override;
Property target: Integer Read FTarget Write FTarget;
+ Property TheLabel : TJSLabel Read FLabel Write Flabel;
end;
{ TJSTryStatement }
@@ -551,10 +898,9 @@ Type
TJSElementNodes = Class(TCollection)
private
function GetN(AIndex : Integer): TJSElementNode;
- procedure SetN(AIndex : Integer; const AValue: TJSElementNode);
Public
Function AddNode : TJSElementNode;
- Property Nodes[AIndex : Integer] : TJSElementNode Read GetN Write SetN; default;
+ Property Nodes[AIndex : Integer] : TJSElementNode Read GetN ; default;
end;
{ TJSSourceElements }
@@ -574,6 +920,528 @@ Type
implementation
+{$IFDEF NOCLASSES}
+{ TCollectionItem }
+
+Constructor TCollectionItem.Create(ACollection: TCollection);
+begin
+ FCollection:=ACollection;
+end;
+
+Destructor TCollectionItem.Destroy;
+begin
+ if Assigned(FCollection) then
+ FCollection.Remove(Self);
+ inherited Destroy;
+end;
+
+{ TCollection }
+
+function TCollection.GetI(AIndex : Integer): TCollectionItem;
+begin
+ if (AIndex>=0) and (AIndex<FCount) then
+ Result:=FItems[AIndex]
+ else
+ Raise EListError.CreateFmt('Collection index (%d) out of bounds.',[AIndex]);
+end;
+
+function TCollection.GetCount: Integer;
+begin
+ Result:=FCount;
+end;
+
+Procedure TCollection.Remove(AItem: TCollectionItem);
+
+Var
+ I,J : Integer;
+
+begin
+ if (AItem=Nil) then exit;
+ I:=Count-1;
+ While (I>=0) and (FItems[I]<>AItem) do
+ Dec(i);
+ For J:=I to Count-2 do
+ FItems[I]:=FItems[i+1];
+ Dec(FCount);
+end;
+
+Constructor TCollection.Create(AItemClass: TCollectionItemClass);
+begin
+ FItemClass:=AItemClass;
+end;
+
+Destructor TCollection.Destroy;
+begin
+ Clear;
+ inherited Destroy;
+end;
+
+Procedure TCollection.Clear;
+
+Var
+ I : Integer;
+
+begin
+ For I:=0 to Count-1 do
+ begin
+ FItems[i].FCollection:=Nil;
+ FItems[i].Destroy;
+ end;
+ FCount:=0;
+ SetLength(Fitems,0);
+end;
+
+Function TCollection.Add: TCollectionItem;
+Var
+ NL : Integer;
+begin
+ If FCount=Length(FItems) then
+ begin
+ NL:=Length(FItems)*3 div 2;
+ if NL=0 then NL:=10;
+ SetLength(FItems,NL);
+ end;
+ Result:=FItemClass.Create(Self);
+ FItems[FCount]:=Result;
+ Inc(FCount);
+end;
+
+{ TStrings }
+
+function TStrings.GetCount: Integer;
+begin
+ Result:=FCount;
+end;
+
+function TStrings.GetS(AIndex : Integer): String;
+begin
+ if (AIndex>=0) and (AIndex<FCount) then
+ Result:=FStrings[AIndex]
+ else
+ Raise EListError.CreateFmt('List index (%d) out of bounds.',[AIndex]);
+end;
+
+procedure TStrings.SetS(AIndex : Integer; AValue: String);
+begin
+ if (AIndex>=0) and (AIndex<=FCount) then
+ begin
+ if (AIndex=FCount) then
+ Add(AValue)
+ else
+ FStrings[AIndex]:=AValue;
+ end
+ else
+ Raise EListError.CreateFmt('List index (%d) out of bounds.',[AIndex]);
+end;
+
+Function TStrings.Add(Const S: String): Integer;
+
+Var
+ NL : Integer;
+begin
+ If FCount=Length(FStrings) then
+ begin
+ NL:=Length(FStrings)*3 div 2;
+ if NL=0 then NL:=10;
+ SetLength(FStrings,NL);
+ end;
+ FStrings[FCount]:=S;
+ Inc(FCount);
+end;
+
+Procedure TStrings.Assign(Source: TStrings);
+
+Var
+ I : Integer;
+
+begin
+ SetLength(FStrings,Length(Source.FStrings));
+ FCount:=Source.FCount;
+ For I:=0 to FCount-1 do
+ FStrings[i]:=Source.FStrings[i];
+end;
+{$ENDIF NOCLASSES}
+
+{ TJSXOREqAssignStatement }
+
+Class function TJSXOREqAssignStatement.OperatorToken: tjsToken;
+begin
+ Result:=tjsXOREq;
+end;
+
+{ TJSOREqAssignStatement }
+
+Class function TJSOREqAssignStatement.OperatorToken: tjsToken;
+begin
+ Result:=tjsOREQ;
+end;
+
+{ TJSANDEqAssignStatement }
+
+Class function TJSANDEqAssignStatement.OperatorToken: tjsToken;
+begin
+ Result:=tjsAndEq;
+end;
+
+{ TJSURShiftEqAssignStatement }
+
+Class function TJSURShiftEqAssignStatement.OperatorToken: tjsToken;
+begin
+ Result:=tjsURSHIFTEQ;
+end;
+
+{ TJSRShiftEqAssignStatement }
+
+Class function TJSRShiftEqAssignStatement.OperatorToken: tjsToken;
+begin
+ Result:=tjsRSHIFTEQ;
+end;
+
+{ TJSLShiftEqAssignStatement }
+
+Class function TJSLShiftEqAssignStatement.OperatorToken: tjsToken;
+begin
+ Result:=tjsLSHIFTEQ;
+end;
+
+{ TJSSubEqAssignStatement }
+
+Class function TJSSubEqAssignStatement.OperatorToken: tjsToken;
+begin
+ Result:=tjsMINUSEQ;
+end;
+
+{ TJSAddEqAssignStatement }
+
+Class function TJSAddEqAssignStatement.OperatorToken: tjsToken;
+begin
+ Result:=tjsPLUSEQ;
+end;
+
+{ TJSModEqAssignStatement }
+
+Class function TJSModEqAssignStatement.OperatorToken: tjsToken;
+begin
+ Result:=tjsMODEQ;
+end;
+
+{ TJSDivEqAssignStatement }
+
+Class function TJSDivEqAssignStatement.OperatorToken: tjsToken;
+begin
+ Result:=tjsDIVEQ;
+end;
+
+{ TJSMulEqAssignStatement }
+
+Class function TJSMulEqAssignStatement.OperatorToken: tjsToken;
+begin
+ Result:=tjsMULEQ;
+end;
+
+{ TJSSimpleAssignStatement }
+
+Class function TJSSimpleAssignStatement.OperatorToken: tjsToken;
+begin
+ Result:=tjsAssign;
+end;
+
+{ TJSLabeledStatement }
+
+Destructor TJSLabeledStatement.Destroy;
+begin
+ FreeAndNil(Flabel);
+ inherited Destroy;
+end;
+
+{ TJSCommaExpression }
+
+Class function TJSCommaExpression.OperatorToken: tjsToken;
+begin
+ Result:=tjsComma;
+end;
+
+{ TJSMultiplicativeExpressionMod }
+
+Class function TJSMultiplicativeExpressionMod.OperatorToken: tjsToken;
+begin
+ Result:=tjsMod;
+end;
+
+{ TJSMultiplicativeExpressionDiv }
+
+Class function TJSMultiplicativeExpressionDiv.OperatorToken: tjsToken;
+begin
+ Result:=tjsDiv;
+end;
+
+{ TJSMultiplicativeExpressionMul }
+
+Class function TJSMultiplicativeExpressionMul.OperatorToken: tjsToken;
+begin
+ Result:=tjsMul;
+end;
+
+{ TJSAdditiveExpressionMinus }
+
+Class function TJSAdditiveExpressionMinus.OperatorToken: tjsToken;
+begin
+ Result:=tjsMinus;
+end;
+
+{ TJSAdditiveExpressionPlus }
+
+Class function TJSAdditiveExpressionPlus.OperatorToken: tjsToken;
+begin
+ Result:=tjsPlus;
+end;
+
+{ TJSURShiftExpression }
+
+Class function TJSURShiftExpression.OperatorToken: tjsToken;
+begin
+ Result:=tjsURshift;
+end;
+
+{ TJSRShiftExpression }
+
+Class function TJSRShiftExpression.OperatorToken: tjsToken;
+begin
+ Result:=tjsRSHIFT;
+end;
+
+{ TJSLShiftExpression }
+
+Class function TJSLShiftExpression.OperatorToken: tjsToken;
+begin
+ Result:=tjsLSHIFT;
+end;
+
+{ TJSRelationalExpressionInstanceOf }
+
+Class function TJSRelationalExpressionInstanceOf.OperatorToken: tjsToken;
+begin
+ Result:=tjsInstanceOf;
+end;
+
+Class Function TJSRelationalExpressionInstanceOf.AllowCompact: Boolean;
+begin
+ Result:=False;
+end;
+
+{ TJSRelationalExpressionIn }
+
+Class function TJSRelationalExpressionIn.OperatorToken: tjsToken;
+begin
+ Result:=tjsIn;
+end;
+
+Class Function TJSRelationalExpressionIn.AllowCompact: Boolean;
+begin
+ Result:=False;
+end;
+
+{ TJSRelationalExpressionGE }
+
+Class function TJSRelationalExpressionGE.OperatorToken: tjsToken;
+begin
+ Result:=tjsGE;
+end;
+
+{ TJSRelationalExpressionLE }
+
+Class function TJSRelationalExpressionLE.OperatorToken: tjsToken;
+begin
+ Result:=tjsLE;
+end;
+
+{ TJSRelationalExpressionGT }
+
+Class function TJSRelationalExpressionGT.OperatorToken: tjsToken;
+begin
+ Result:=tjsGT;
+end;
+
+{ TJSRelationalExpressionLT }
+
+Class function TJSRelationalExpressionLT.OperatorToken: tjsToken;
+begin
+ Result:=tjsLT;
+end;
+
+{ TJSEqualityExpressionSNE }
+
+Class function TJSEqualityExpressionSNE.OperatorToken: tjsToken;
+begin
+ Result:=tjsSNE;
+end;
+
+{ TJSEqualityExpressionSEQ }
+
+Class function TJSEqualityExpressionSEQ.OperatorToken: tjsToken;
+begin
+ Result:=tjsSEQ;
+end;
+
+{ TJSEqualityExpressionNE }
+
+Class function TJSEqualityExpressionNE.OperatorToken: tjsToken;
+begin
+ Result:=tjsNE;
+end;
+
+{ TJSEqualityExpressionEQ }
+
+Class function TJSEqualityExpressionEQ.OperatorToken: tjsToken;
+begin
+ Result:=tjsEQ;
+end;
+
+{ TJSBinaryExpression }
+
+Class function TJSBinaryExpression.OperatorToken: tjsToken;
+begin
+ Result:=tjsUnknown
+end;
+
+Class function TJSBinaryExpression.OperatorString: string;
+
+Var
+ T : TJSToken;
+begin
+ T:=OperatorToken;
+ if (T<>tjsUnknown) then
+ begin
+ Result:=TokenInfos[T]
+ end
+ else
+ Result:='';
+end;
+
+Class Function TJSBinaryExpression.AllowCompact: Boolean;
+begin
+ Result:=True
+end;
+
+{ TJSBitwiseXOrExpression }
+
+Class function TJSBitwiseXOrExpression.OperatorToken : tjsToken;
+begin
+ Result:=tjsXor
+end;
+
+{ TJSBitwiseOrExpression }
+
+Class function TJSBitwiseOrExpression.OperatorToken : tjsToken;
+begin
+ Result:=tjsOr
+end;
+
+{ TJSBitwiseAndExpression }
+
+Class function TJSBitwiseAndExpression.OperatorToken : tjsToken;
+begin
+ Result:=tjsAnd
+end;
+
+{ TJSLogicalAndExpression }
+
+Class function TJSLogicalAndExpression.OperatorToken : tjsToken;
+begin
+ Result:=tjsAndAnd
+end;
+
+{ TJSLogicalOrExpression }
+
+Class function TJSLogicalOrExpression.OperatorToken : tjsToken;
+begin
+ Result:=tjsOrOr
+end;
+
+{ TJSUnaryVoidExpression }
+
+Class function TJSUnaryVoidExpression.PrefixOperatorToken : tjsToken;
+begin
+ Result:=tjsvoid;
+end;
+
+{ TJSThrowStatement }
+
+Class function TJSThrowStatement.PrefixOperatorToken: tjsToken;
+begin
+ Result:=tjsThrow;
+end;
+
+{ TJSUnaryPostMinusMinusExpression }
+
+Class function TJSUnaryPostMinusMinusExpression.PostFixOperatorToken : tjsToken;
+begin
+ Result:=tjsMinusMinus;
+end;
+
+{ TJSUnaryPostPlusPlusExpression }
+
+Class function TJSUnaryPostPlusPlusExpression.PostFixOperatorToken : tjsToken;
+begin
+ Result:=tjsPlusPlus;
+end;
+
+{ TJSUnaryNotExpression }
+
+Class function TJSUnaryNotExpression.PrefixOperatorToken : tjsToken;
+begin
+ Result:=tjsNot;
+end;
+
+{ TJSUnaryInvExpression }
+
+Class function TJSUnaryInvExpression.PrefixOperatorToken : tjsToken;
+begin
+ Result:=tjsinv;
+end;
+
+{ TJSUnaryMinusExpression }
+
+Class function TJSUnaryMinusExpression.PrefixOperatorToken : tjsToken;
+begin
+ Result:=tjsMinus;
+end;
+
+{ TJSUnaryPlusExpression }
+
+Class function TJSUnaryPlusExpression.PrefixOperatorToken : tjsToken;
+begin
+ Result:=tjsPlus;
+end;
+
+{ TJSUnaryPreMinusMinusExpression }
+
+Class function TJSUnaryPreMinusMinusExpression.PrefixOperatorToken : tjsToken;
+begin
+ Result:=tjsMinusMinus;
+end;
+
+{ TJSUnaryPrePlusPlusExpression }
+
+Class function TJSUnaryPrePlusPlusExpression.PrefixOperatorToken : tjsToken;
+begin
+ Result:=tjsPlusPlus;
+end;
+
+{ TJSUnaryTypeOfExpression }
+
+Class function TJSUnaryTypeOfExpression.PrefixOperatorToken : tjsToken;
+begin
+ Result:=tjsTypeOf;
+end;
+
+{ TJSUnaryDeleteExpression }
+
+Class function TJSUnaryDeleteExpression.PrefixOperatorToken : tjsToken;
+begin
+ Result:=tjsdelete;
+end;
+
{ TJSElement }
constructor TJSElement.Create(ALine, ARow: Integer; Const ASource: String = '');
@@ -618,12 +1486,6 @@ begin
Result:=TJSArrayLiteralElement(Items[AIndex]);
end;
-procedure TJSArrayLiteralElements.SetE(AIndex : Integer;
- const AValue: TJSArrayLiteralElement);
-begin
- Items[AIndex]:=AValue;
-end;
-
function TJSArrayLiteralElements.AddElement: TJSArrayLiteralElement;
begin
Result:=TJSArrayLiteralElement(Add);
@@ -651,11 +1513,6 @@ begin
Result:=TJSObjectLiteralElement(Items[AIndex]);
end;
-procedure TJSObjectLiteralElements.SetE(AIndex : Integer;
- const AValue: TJSObjectLiteralElement);
-begin
- Items[AIndex]:=AValue;
-end;
function TJSObjectLiteralElements.AddElement: TJSObjectLiteralElement;
begin
@@ -719,7 +1576,47 @@ end;
{ TJSUnary }
-destructor TJSUnary.Destroy;
+Class function TJSUnary.PrefixOperatorToken: tjsToken;
+begin
+ Result:=tjsUnknown;
+end;
+
+Class function TJSUnary.PostFixOperatorToken: tjsToken;
+begin
+ Result:=tjsUnknown;
+end;
+
+Class function TJSUnary.PrefixOperator: String;
+
+Var
+ T : TJSToken;
+
+begin
+ T:=PrefixOperatorToken;
+ if (T=tjsUnknown) then
+ Result:=''
+ else
+ begin
+ Result:=TokenInfos[t];
+ if t in [tjsTypeOf,tjsVoid,tjsDelete,tjsThrow] then
+ Result:=Result+' ';
+ end;
+end;
+
+Class function TJSUnary.PostFixOperator: String;
+
+Var
+ T : TJSToken;
+
+begin
+ T:=PostFixOperatorToken;
+ if (T=tjsUnknown) then
+ Result:=''
+ else
+ Result:=TokenInfos[t];
+end;
+
+Destructor TJSUnary.Destroy;
begin
FreeAndNil(FA);
inherited Destroy;
@@ -746,13 +1643,30 @@ end;
{ TJSAssign }
-destructor TJSAssignStatement.Destroy;
+Destructor TJSAssignStatement.Destroy;
begin
FreeAndNil(FLHS);
FreeAndNil(FExpr);
inherited Destroy;
end;
+Class function TJSAssignStatement.OperatorToken: tjsToken;
+begin
+ Result:=tjsUNknown;
+end;
+
+Class function TJSAssignStatement.OperatorString: String;
+
+Var
+ t : TJSToken;
+begin
+ T:=OperatorToken;
+ if (tjsUNknown<>t) then
+ Result:=TokenInfos[t]
+ else
+ Result:='';
+end;
+
{ TJSVarDeclaration }
@@ -835,7 +1749,6 @@ end;
destructor TJSSwitchStatement.Destroy;
begin
FreeAndNil(FCases);
- FreeAndNil(FDefault);
FreeAndNil(FCond);
inherited Destroy;
end;
@@ -847,10 +1760,6 @@ begin
Result:=TJSCaseElement(Items[AIndex]);
end;
-procedure TJSCaseElements.SetC(AIndex : Integer; const AValue: TJSCaseElement);
-begin
- Items[AIndex]:=AValue;
-end;
function TJSCaseElements.AddCase: TJSCaseElement;
begin
@@ -900,10 +1809,6 @@ begin
Result:=TJSElementNode(Items[Aindex])
end;
-procedure TJSElementNodes.SetN(AIndex : Integer; const AValue: TJSElementNode);
-begin
- Items[AIndex]:=Avalue;
-end;
function TJSElementNodes.AddNode: TJSElementNode;
begin
diff --git a/packages/fcl-js/src/jswriter.pp b/packages/fcl-js/src/jswriter.pp
new file mode 100644
index 0000000000..0386fe0d80
--- /dev/null
+++ b/packages/fcl-js/src/jswriter.pp
@@ -0,0 +1,1263 @@
+unit jswriter;
+
+{$mode objfpc}{$H+}
+{ $DEFINE DEBUGJSWRITER}
+
+interface
+
+uses
+ {Classes, } SysUtils, jstoken, jsbase, jstree;
+
+Type
+
+ { TTextWriter }
+
+ TTextWriter = Class(TObject)
+ protected
+ Function DoWrite(Const S : AnsiString) : Integer; virtual; abstract;
+ Function DoWrite(Const S : UnicodeString) : Integer; virtual; abstract;
+ Public
+ // All functions return the numberof bytes copied to output stream.
+ Function Write(Const S : UnicodeString) : Integer;
+ Function Write(Const S : AnsiString) : Integer;
+ Function WriteLn(Const S : AnsiString) : Integer;
+ Function Write(Const Fmt : AnsiString; Args : Array of const) : Integer;
+ Function WriteLn(Const Fmt : AnsiString; Args : Array of const) : Integer;
+ Function Write(Const Args : Array of const) : Integer;
+ Function WriteLn(Const Args : Array of const) : Integer;
+ end;
+
+ { TFileWriter }
+
+ TFileWriter = Class(TTextWriter)
+ Protected
+ FFile : Text;
+ FFileName : String;
+ Function DoWrite(Const S : AnsiString) : Integer; override;
+ Function DoWrite(Const S : UnicodeString) : Integer; override;
+ Public
+ Constructor Create(Const AFileNAme : String);
+ Destructor Destroy; override;
+ Procedure Flush;
+ Procedure Close;
+ Property FileName : String Read FFileName;
+ end;
+
+ { TBufferWriter }
+ TBytes = Array of byte;
+ TBufferWriter = Class(TTextWriter)
+ private
+ FBufPos,
+ FCapacity: Cardinal;
+ FBuffer : TBytes;
+ function GetAsAnsistring: AnsiString;
+ function GetBuffer: Pointer;
+ function GetBufferLength: Integer;
+ function GetCapacity: Cardinal;
+ function GetUnicodeString: UnicodeString;
+ procedure SetCapacity(AValue: Cardinal);
+ Protected
+ Function DoWrite(Const S : AnsiString) : integer; override;
+ Function DoWrite(Const S : UnicodeString) : integer; override;
+ Public
+ Constructor Create(Const ACapacity : Cardinal);
+ Procedure SaveToFile(Const AFileName : String);
+ Property Buffer : Pointer Read GetBuffer;
+ Property BufferLength : Integer Read GetBufferLength;
+ Property Capacity : Cardinal Read GetCapacity Write SetCapacity;
+ Property AsAnsistring : AnsiString Read GetAsAnsistring;
+ Property AsUnicodeString : UnicodeString Read GetUnicodeString;
+ end;
+
+
+ { TJSWriter }
+ TWriteOption = (woCompact,
+ woUseUTF8,
+ woTabIndent,
+ woEmptyStatementAsComment,
+ woQuoteElementNames,
+ woCompactArrayLiterals,
+ woCompactObjectLiterals,
+ woCompactArguments);
+ TWriteOptions = Set of TWriteOption;
+
+ TJSWriter = Class
+ private
+ FCurIndent : Integer;
+ FLinePos : Integer;
+ FIndentSize: Byte;
+ FIndentChar : Char;
+ FOptions: TWriteOptions;
+ FWriter: TTextWriter;
+ FFreeWriter : Boolean;
+ FSkipBrackets : Boolean;
+ function GetUseUTF8: Boolean;
+ procedure SetOptions(AValue: TWriteOptions);
+ Protected
+ // Helper routines
+ Procedure Error(Const Msg : String);
+ Procedure Error(Const Fmt : String; Args : Array of const);
+ Procedure WriteIndent; // inline;
+ Procedure Write(Const U : UnicodeString);
+ Procedure Write(Const S : AnsiString);
+ Procedure WriteLn(Const S : AnsiString);
+ Procedure WriteLn(Const U : UnicodeString);
+ // one per type of statement
+ Procedure WriteValue(V : TJSValue); virtual;
+ Procedure WriteRegularExpressionLiteral(El: TJSRegularExpressionLiteral);
+ Procedure WriteVariableStatement(el: TJSVariableStatement);
+ Procedure WriteEmptyBlockStatement(El: TJSEmptyBlockStatement); virtual;
+ Procedure WriteEmptyStatement(El: TJSEmptyStatement);virtual;
+ Procedure WriteLiteral(El: TJSLiteral);virtual;
+ Procedure WriteArrayLiteral(El: TJSArrayLiteral);virtual;
+ Procedure WriteObjectLiteral(El: TJSObjectLiteral);virtual;
+ Procedure WriteMemberExpression(el: TJSMemberExpression);virtual;
+ Procedure WriteCallExpression(El: TJSCallExpression);virtual;
+ Procedure WriteSwitchStatement(El: TJSSwitchStatement);virtual;
+ Procedure WriteUnary(El: TJSUnary);virtual;
+ Procedure WriteAssignStatement(El: TJSAssignStatement);virtual;
+ Procedure WriteForInStatement(El: TJSForInStatement);virtual;
+ Procedure WriteWhileStatement(El: TJSWhileStatement);virtual;
+ Procedure WriteForStatement(El: TJSForStatement);virtual;
+ Procedure WriteIfStatement(El: TJSIfStatement);virtual;
+ Procedure WriteSourceElements(El: TJSSourceElements);virtual;
+ Procedure WriteStatementList(El: TJSStatementList);virtual;
+ Procedure WriteTryStatement(el: TJSTryStatement);virtual;
+ Procedure WriteVarDeclaration(El: TJSVarDeclaration);virtual;
+ Procedure WriteWithStatement(El: TJSWithStatement);virtual;
+ Procedure WriteVarDeclarationList(El: TJSVariableDeclarationList);virtual;
+ Procedure WriteConditionalExpression(El: TJSConditionalExpression);virtual;
+ Procedure WriteFunctionBody(el: TJSFunctionBody);virtual;
+ Procedure WriteFunctionDeclarationStatement(El: TJSFunctionDeclarationStatement);virtual;
+ Procedure WriteLabeledStatement(El: TJSLabeledStatement);virtual;
+ Procedure WriteReturnStatement(EL: TJSReturnStatement);virtual;
+ Procedure WriteTargetStatement(El: TJSTargetStatement);virtual;
+ Procedure WriteFuncDef(FD: TJSFuncDef);virtual;
+ Procedure WritePrimaryExpression(El: TJSPrimaryExpression);virtual;
+ Procedure WriteBinary(El: TJSBinary);virtual;
+ Public
+ Class Function EscapeString(const S: TJSString): TJSString;
+ Constructor Create(AWriter : TTextWriter);
+ Constructor Create(Const AFileName : String);
+ Destructor Destroy; override;
+ Procedure WriteJS(El : TJSElement);
+ Procedure Indent;
+ Procedure Undent;
+ Property Writer : TTextWriter Read FWriter;
+ Property options : TWriteOptions Read FOptions Write SetOptions;
+ Property IndentSize : Byte Read FIndentSize Write FIndentSize;
+ Property UseUTF8 : Boolean Read GetUseUTF8;
+ end;
+ EJSWriter = CLass(Exception);
+
+implementation
+
+Resourcestring
+ SErrUnknownJSClass = 'Unknown javascript element class : %s';
+ SErrNilNode = 'Nil node in Javascript';
+
+{ TBufferWriter }
+
+function TBufferWriter.GetBufferLength: Integer;
+begin
+ Result:=FBufPos;
+end;
+
+function TBufferWriter.GetAsAnsistring: AnsiString;
+begin
+ SetLength(Result,BufferLength);
+ if (BufferLength>0) then
+ Move(FBuffer[0],Result[1],BufferLength);
+end;
+
+function TBufferWriter.GetBuffer: Pointer;
+begin
+ Result:=Pointer(FBuffer);
+end;
+
+function TBufferWriter.GetCapacity: Cardinal;
+begin
+ Result:=Length(FBuffer);
+end;
+
+function TBufferWriter.GetUnicodeString: UnicodeString;
+
+Var
+ SL : Integer;
+
+begin
+ SL:=BufferLength div SizeOf(UnicodeChar); // Silently ignores last byte
+ SetLength(Result,SL);
+ if (SL>0) then
+ Move(FBuffer[0],Result[1],SL*SizeOf(UnicodeChar));
+end;
+
+procedure TBufferWriter.SetCapacity(AValue: Cardinal);
+begin
+ if FCapacity=AValue then Exit;
+ SetLength(FBuffer,AValue);
+ if (FBufPos>Capacity) then
+ FBufPos:=Capacity;
+end;
+
+Function TBufferWriter.DoWrite(Const S: AnsiString): integer;
+
+Var
+ DesLen,MinLen : Integer;
+
+begin
+ Result:=Length(S)*SizeOf(Char);
+ MinLen:=Result+FBufPos;
+ If (MinLen>Capacity) then
+ begin
+ DesLen:=Round(FCapacity*1.25);
+ if DesLen>MinLen then
+ MinLen:=DesLen;
+ Capacity:=MinLen;
+ end;
+ Move(S[1],FBuffer[FBufPos],Result);
+ FBufPos:=FBufPos+Result;
+end;
+
+Function TBufferWriter.DoWrite(Const S: UnicodeString): integer;
+
+Var
+ DesLen,MinLen : Integer;
+
+begin
+ Result:=Length(S)*SizeOf(UnicodeChar);
+ MinLen:=Result+FBufPos;
+ If (MinLen>Capacity) then
+ begin
+ DesLen:=Round(FCapacity*1.25);
+ if DesLen>MinLen then
+ MinLen:=DesLen;
+ Capacity:=MinLen;
+ end;
+ Move(S[1],FBuffer[FBufPos],Result);
+ FBufPos:=FBufPos+Result;
+end;
+
+Constructor TBufferWriter.Create(Const ACapacity: Cardinal);
+begin
+ Capacity:=ACapacity;
+end;
+
+Procedure TBufferWriter.SaveToFile(Const AFileName: String);
+
+Var
+ F : File;
+
+begin
+ Assign(F,AFileName);
+ Rewrite(F,1);
+ try
+ BlockWrite(F,FBuffer[0],FBufPos);
+ finally
+ Close(F);
+ end;
+end;
+
+{ TJSWriter }
+
+procedure TJSWriter.SetOptions(AValue: TWriteOptions);
+begin
+ if FOptions=AValue then Exit;
+ FOptions:=AValue;
+ If woTabIndent in Foptions then
+ FIndentChar:=#9
+ else
+ FIndentChar:=' ';
+end;
+
+function TJSWriter.GetUseUTF8: Boolean;
+begin
+ Result:=(woUseUTF8 in Options)
+end;
+
+Procedure TJSWriter.Error(Const Msg: String);
+begin
+ Raise EJSWriter.Create(Msg);
+end;
+
+Procedure TJSWriter.Error(Const Fmt: String; Args: Array of const);
+begin
+ Raise EJSWriter.CreateFmt(Fmt,Args);
+end;
+
+Procedure TJSWriter.WriteIndent;
+
+begin
+ If (FLinePos=0) then
+ FLinePos:=Writer.Write(StringOfChar(FIndentChar,FCurIndent));
+end;
+
+Procedure TJSWriter.Indent;
+begin
+ Inc(FCurIndent,FIndentSIze);
+end;
+
+Procedure TJSWriter.Undent;
+begin
+ if (FCurIndent>=FIndentSIze) then
+ Dec(FCurIndent,FIndentSIze)
+ else
+ FCurIndent:=0;
+end;
+
+Procedure TJSWriter.Write(Const U: UnicodeString);
+
+Var
+ S : UTF8String;
+
+begin
+ WriteIndent;
+ if UseUTF8 then
+ begin
+ S:=UTF8Encode(U);
+ FLinePos:=FLinePos+Writer.Write(S);
+ end
+ else
+ FLinePos:=FLinePos+Writer.Write(U);
+end;
+
+Procedure TJSWriter.Write(Const S: AnsiString);
+begin
+ if Not (woUseUTF8 in Options) then
+ Write(UnicodeString(S))
+ else
+ begin
+ WriteIndent;
+ FLinePos:=FLinePos+Writer.Write(S);
+ end;
+end;
+
+Procedure TJSWriter.WriteLn(Const S: AnsiString);
+begin
+ if Not (woUseUTF8 in Options) then
+ Writeln(UnicodeString(S))
+ else
+ begin
+ WriteIndent;
+ Writer.WriteLn(S);
+ FLinePos:=0;
+ end;
+end;
+
+Procedure TJSWriter.WriteLn(Const U: UnicodeString);
+Var
+ S : UTF8String;
+
+begin
+ if UseUTF8 then
+ begin
+ S:=UTF8Encode(U);
+ Writeln(S);
+ end
+ else
+ begin
+ WriteIndent;
+ FLinePos:=FLinePos+Writer.Write(U);
+ FLinePos:=0;
+ end;
+end;
+
+Class Function TJSWriter.EscapeString(const S : TJSString) : TJSString;
+
+Var
+ I,J,L : Integer;
+ P : PWideChar;
+
+begin
+ I:=1;
+ J:=1;
+ Result:='';
+ L:=Length(S);
+ P:=PWideChar(S);
+ While I<=L do
+ begin
+ if (AnsiChar(P^) in ['"','/','\',#8,#9,#10,#12,#13]) then
+ begin
+ Result:=Result+Copy(S,J,I-J);
+ Case P^ of
+ '\' : Result:=Result+'\\';
+ '/' : Result:=Result+'\/';
+ '"' : Result:=Result+'\"';
+ #8 : Result:=Result+'\b';
+ #9 : Result:=Result+'\t';
+ #10 : Result:=Result+'\n';
+ #12 : Result:=Result+'\f';
+ #13 : Result:=Result+'\r';
+ end;
+ J:=I+1;
+ end;
+ Inc(I);
+ Inc(P);
+ end;
+ Result:=Result+Copy(S,J,I-1);
+end;
+
+Procedure TJSWriter.WriteValue(V: TJSValue);
+
+Var
+ S : String;
+begin
+ Case V.ValueType of
+ jstUNDEFINED : S:='undefined';
+ jstNull : s:='null';
+ jstBoolean : if V.AsBoolean then s:='true' else s:='false';
+ jstString : S:='"'+EscapeString(V.AsString)+'"';
+ jstNumber :
+ if Frac(V.AsNumber)=0 then // this needs to be improved
+ Str(Round(V.AsNumber),S)
+ else
+ Str(V.AsNumber,S);
+ jstObject : ;
+ jstReference : ;
+ JSTCompletion : ;
+ end;
+ Write(S);
+end;
+
+Constructor TJSWriter.Create(AWriter: TTextWriter);
+begin
+ FWriter:=AWriter;
+ FIndentChar:=' ';
+ FOptions:=[woUseUTF8];
+end;
+
+Constructor TJSWriter.Create(Const AFileName: String);
+begin
+ Create(TFileWriter.Create(AFileName));
+ FFreeWriter:=True;
+end;
+
+Destructor TJSWriter.Destroy;
+begin
+ If FFreeWriter then
+ begin
+ FWriter.Free;
+ FWriter:=Nil;
+ end;
+ inherited Destroy;
+end;
+
+Procedure TJSWriter.WriteFuncDef(FD: TJSFuncDef);
+
+Var
+ C : Boolean;
+ I : Integer;
+
+begin
+ C:=(woCompact in Options);
+ Write('function ');
+ If (FD.Name<>'') then
+ Write(FD.Name);
+ Write('(');
+ if Assigned(FD.Params) then
+ For I:=0 to FD.Params.Count-1 do
+ begin
+ write(FD.Params[i]);
+ if I<FD.Params.Count-1 then
+ if C then Write(',') else Write (', ');
+ end;
+ Write(') {');
+ if Not (C or FD.IsEmpty) then
+ begin
+ Writeln('');
+ indent;
+ end;
+ if Assigned(FD.Body) then
+ begin
+ FSkipBrackets:=True;
+ WriteJS(FD.Body);
+ If not (FD.Body.A is TJSStatementList) then
+ if C then
+ Write('; ')
+ else
+ Writeln(';');
+ end;
+ if C then
+ Write('}')
+ else
+ begin
+ undent;
+ Writeln('}');
+ end;
+end;
+
+Procedure TJSWriter.WriteEmptyBlockStatement(El: TJSEmptyBlockStatement);
+begin
+ if woCompact in Options then
+ Write('{}')
+ else
+ begin
+ Writeln('{');
+ Write('}');
+ end;
+end;
+
+Procedure TJSWriter.WriteEmptyStatement(El: TJSEmptyStatement);
+begin
+ if woEmptyStatementAsComment in options then
+ Write('/* Empty statement */')
+end;
+
+Procedure TJSWriter.WriteRegularExpressionLiteral(El: TJSRegularExpressionLiteral);
+
+begin
+ Write('/');
+ Write(EscapeString(EL.Pattern.AsString));
+ Write('/');
+ If Assigned(EL.PatternFlags) then
+ Write(EscapeString(EL.PatternFlags.AsString));
+end;
+
+Procedure TJSWriter.WriteLiteral(El: TJSLiteral);
+begin
+ WriteValue(el.Value);
+end;
+
+Procedure TJSWriter.WritePrimaryExpression(El: TJSPrimaryExpression);
+
+begin
+ if El is TJSPrimaryExpressionThis then
+ Write('this')
+ else if el is TJSPrimaryExpressionIdent then
+ Write(TJSPrimaryExpressionIdent(El).Name);
+end;
+
+Procedure TJSWriter.WriteArrayLiteral(El : TJSArrayLiteral);
+
+
+
+Var
+ Chars : Array[Boolean] of string[2] = ('[]','()');
+
+Var
+ i,C : Integer;
+ isArgs,WC : Boolean;
+ BC : String[2];
+
+begin
+ isArgs:=el is TJSArguments;
+ BC:=Chars[isArgs];
+ C:=EL.Elements.Count-1;
+ if C=-1 then
+ begin
+ if isArgs then
+ Write(bc)
+ else
+ Write(bc);
+ Exit;
+ end;
+ WC:=(woCompact in Options) or
+ ((Not isArgs) and (woCompactArrayLiterals in Options)) or
+ (isArgs and (woCompactArguments in Options)) ;
+ if WC then
+ Write(Copy(BC,1,1))
+ else
+ begin
+ Writeln(Copy(BC,1,1));
+ Indent;
+ end;
+ For I:=0 to C do
+ begin
+ WriteJS(EL.Elements[i].Expr);
+ if I<C then
+ if WC then Write(', ') else Writeln(',')
+ end;
+ if not WC then
+ begin
+ Writeln('');
+ Undent;
+ end;
+ Write(Copy(BC,2,1));
+end;
+
+
+Procedure TJSWriter.WriteObjectLiteral(El : TJSObjectLiteral);
+
+
+Var
+ i,C : Integer;
+ QE,WC : Boolean;
+ S : TJSString;
+
+begin
+ C:=EL.Elements.Count-1;
+ QE:=(woQuoteElementNames in Options);
+ if C=-1 then
+ begin
+ Write('{}');
+ Exit;
+ end;
+ WC:=(woCompact in Options) or (woCompactObjectLiterals in Options);
+ if WC then
+ Write('{')
+ else
+ begin
+ Writeln('{');
+ Indent;
+ end;
+ For I:=0 to C do
+ begin
+ S:=EL.Elements[i].Name;
+ if QE then
+ S:='"'+S+'"';
+ Write(S+': ');
+ Indent;
+ WriteJS(EL.Elements[i].Expr);
+ if I<C then
+ if WC then Write(', ') else Writeln(',');
+ Undent;
+ end;
+ if not WC then
+ begin
+ Writeln('');
+ Undent;
+ end;
+ Write('}');
+end;
+
+Procedure TJSWriter.WriteMemberExpression(el : TJSMemberExpression);
+
+Var
+ I : integer;
+ A : TJSArguments;
+begin
+ if el is TJSNewMemberExpression then
+ Write('new ');
+ WriteJS(el.mexpr);
+ if el is TJSDotMemberExpression then
+ begin
+ write('.');
+ Write(TJSDotMemberExpression(el).Name);
+ end
+ else if el is TJSBracketMemberExpression then
+ begin
+ write('[');
+ WriteJS(TJSBracketMemberExpression(el).Name);
+ write(']');
+ end
+ else if (el is TJSNewMemberExpression) then
+ begin
+ if (Assigned(TJSNewMemberExpression(el).Args)) then
+ WriteArrayLiteral(TJSNewMemberExpression(el).Args)
+ else
+ Write('()');
+ end;
+end;
+
+Procedure TJSWriter.WriteCallExpression(El : TJSCallExpression);
+
+Var
+ I : integer;
+ A : TJSArguments;
+begin
+ WriteJS(El.Expr);
+ if Assigned(El.Args) then
+ WriteArrayLiteral(EL.Args)
+ else
+ Write('()');
+end;
+
+Procedure TJSWriter.WriteUnary(El : TJSUnary);
+
+Var
+ S : String;
+
+begin
+ S:=El.PreFixOperator;
+ if (S<>'') then
+ Write(S);
+ WriteJS(El.A);
+ if (S='') then
+ begin
+ S:=El.PostFixOperator;
+ if (S<>'') then
+ Write(S);
+ end;
+end;
+
+Procedure TJSWriter.WriteStatementList(El : TJSStatementList);
+
+Var
+ C : Boolean;
+ B : Boolean;
+
+begin
+ C:=(woCompact in Options);
+ B:= Not FSkipBrackets;
+ if B then
+ begin
+ Write('{');
+ if not C then writeln('');
+ end;
+ if Assigned(EL.A) then
+ begin
+ WriteJS(EL.A);
+ if Assigned(EL.B) then
+ begin
+ if C then
+ Write('; ')
+ else
+ Writeln(';');
+ FSkipBrackets:=True;
+ WriteJS(EL.B);
+ end;
+ if not C then writeln(';');
+ end;
+ if B then
+ begin
+ Write('}');
+ if not C then writeln('');
+ end;
+end;
+
+Procedure TJSWriter.WriteWithStatement(El : TJSWithStatement);
+begin
+ Write('with (');
+ WriteJS(EL.A);
+ if (woCompact in Options) then
+ Write(') ')
+ else
+ WriteLn(')');
+ Indent;
+ WriteJS(EL.B);
+ Undent;
+end;
+
+Procedure TJSWriter.WriteVarDeclarationList(El : TJSVariableDeclarationList);
+
+begin
+ WriteJS(EL.A);
+ If Assigned(EL.B) then
+ begin
+ Write(', ');
+ WriteJS(EL.B);
+ end;
+end;
+
+Procedure TJSWriter.WriteBinary(El : TJSBinary);
+
+Var
+ S : AnsiString;
+ B : Boolean;
+ T : TJSToken;
+
+begin
+ Write('(');
+ WriteJS(EL.A);
+ B:=False;
+ if (el is TJSBinaryExpression) then
+ begin
+ S:=TJSBinaryExpression(El).OperatorString;
+ B:=TJSBinaryExpression(El).AllowCompact;
+ end;
+ If Not (B and (woCompact in Options)) then
+ S:=' '+S+' ';
+ Write(s);
+ WriteJS(EL.B);
+ Write(')');
+end;
+
+Procedure TJSWriter.WriteConditionalExpression(El : TJSConditionalExpression);
+
+begin
+ write('(');
+ WriteJS(EL.A);
+ write(' ? ');
+ WriteJS(EL.B);
+ write(' : ');
+ WriteJS(EL.C);
+ write(')');
+end;
+
+Procedure TJSWriter.WriteAssignStatement(El : TJSAssignStatement);
+
+Var
+ S : AnsiString;
+ T : TJSToken;
+begin
+ WriteJS(EL.LHS);
+ S:=El.OperatorString;
+ If Not (woCompact in Options) then
+ S:=' '+S+' ';
+ Write(s);
+ WriteJS(EL.Expr);
+end;
+
+Procedure TJSWriter.WriteVarDeclaration(El : TJSVarDeclaration);
+
+begin
+ Write(EL.Name);
+ if Assigned(EL.Init) then
+ begin
+ Write(' = ');
+ WriteJS(EL.Init);
+ end;
+end;
+
+Procedure TJSWriter.WriteIfStatement(El : TJSIfStatement);
+
+begin
+ Write('if (');
+ WriteJS(EL.Cond);
+ Write(') ');
+ WriteJS(El.BTrue);
+ if Assigned(El.BFalse) then
+ begin
+ Write(' else ');
+ WriteJS(El.BFalse)
+ end;
+end;
+
+Procedure TJSWriter.WriteForInStatement(El : TJSForInStatement);
+
+begin
+ Write('for (');
+ if Assigned(El.LHS) then
+ WriteJS(El.LHS);
+ Write(' in ');
+ if Assigned(El.List) then
+ WriteJS(El.List);
+ Write(') ');
+ if Assigned(El.body) then
+ WriteJS(El.Body);
+end;
+
+Procedure TJSWriter.WriteForStatement(El : TJSForStatement);
+
+begin
+ Write('for (');
+ if Assigned(El.Init) then
+ WriteJS(El.Init);
+ Write('; ');
+ if Assigned(El.Cond) then
+ WriteJS(El.Cond);
+ Write('; ');
+ if Assigned(El.Incr) then
+ WriteJS(El.Incr);
+ Write(') ');
+ if Assigned(El.body) then
+ WriteJS(El.Body);
+end;
+
+Procedure TJSWriter.WriteWhileStatement(El : TJSWhileStatement);
+
+
+begin
+ if El is TJSDoWhileStatement then
+ begin
+ Write('do ');
+ if Assigned(El.body) then
+ WriteJS(El.Body);
+ Write(' while (');
+ If Assigned(El.Cond) then
+ WriteJS(EL.Cond);
+ Write(')');
+ end
+ else
+ begin
+ Write('while (');
+ If Assigned(El.Cond) then
+ WriteJS(EL.Cond);
+ Write(') ');
+ if Assigned(El.body) then
+ WriteJS(El.Body);
+ end;
+end;
+
+Procedure TJSWriter.WriteSwitchStatement(El : TJSSwitchStatement);
+
+Var
+ C : Boolean;
+
+ Procedure WriteCaseLabel(L : TJSString);
+
+ begin
+ Write(l);
+ end;
+
+Var
+ I : Integer;
+ EC : TJSCaseElement;
+
+begin
+ C:=(woCompact in Options);
+ Write('switch (');
+ If Assigned(El.Cond) then
+ WriteJS(EL.Cond);
+ if C then
+ Write(') {')
+ else
+ Writeln(') {');
+ For I:=0 to EL.Cases.Count-1 do
+ begin
+ EC:=EL.Cases[i];
+ if EC=EL.TheDefault then
+ Write('default')
+ else
+ begin
+ Write('case ');
+ WriteJS(EC.Expr);
+ end;
+ If C then
+ Write(': ')
+ else
+ Writeln(':');
+ if Assigned(EC.Body) then
+ begin
+ WriteJS(EC.Body);
+ if C then
+ begin
+ if Not ((EC.Body is TJSStatementList) or (EC.Body is TJSEmptyBlockStatement)) then
+ write('; ')
+ end
+ else
+ Writeln('');
+ end;
+ end;
+ Write('}');
+end;
+
+Procedure TJSWriter.WriteTargetStatement(El : TJSTargetStatement);
+
+Var
+ TN : TJSString;
+
+begin
+ TN:=EL.TargetName;
+ if (El is TJSForStatement) then
+ WriteForStatement(TJSForStatement(El))
+ else if (El is TJSSwitchStatement) then
+ WriteSwitchStatement(TJSSwitchStatement(El))
+ else if (El is TJSForInStatement) then
+ WriteForInStatement(TJSForInStatement(El))
+ else if EL is TJSWhileStatement then
+ WriteWhileStatement(TJSWhileStatement(El))
+ else if (EL is TJSContinueStatement) then
+ begin
+ if (TN<>'') then
+ Write('continue '+TN)
+ else
+ Write('continue');
+ end
+ else if (EL is TJSBreakStatement) then
+ begin
+ if (TN<>'') then
+ Write('break '+TN)
+ else
+ Write('break');
+ end
+ else
+ Error('Unknown target statement class: "%s"',[EL.ClassName])
+end;
+
+Procedure TJSWriter.WriteReturnStatement(EL: TJSReturnStatement);
+
+begin
+ Write('return ');
+ WriteJS(EL.Expr);
+end;
+
+Procedure TJSWriter.WriteLabeledStatement(El : TJSLabeledStatement);
+begin
+ if Assigned(EL.TheLabel) then
+ begin
+ Write(EL.TheLabel.Name);
+ if woCompact in Options then
+ Write(': ')
+ else
+ Writeln(':');
+ end;
+ // Target ??
+ WriteJS(EL.A);
+end;
+
+Procedure TJSWriter.WriteTryStatement(el :TJSTryStatement);
+
+Var
+ C : Boolean;
+
+begin
+ C:=woCompact in Options;
+ Write('try {');
+ if Not C then writeln('');
+ FSkipBrackets:=True;
+ Indent;
+ WriteJS(El.Block);
+ Undent;
+ If C then
+ Write('} ')
+ else
+ begin
+ Writeln('');
+ Writeln('}');
+ end;
+ If (El is TJSTryCatchFinallyStatement) or (El is TJSTryCatchStatement) then
+ begin
+ Write('catch ('+El.Ident);
+ If C then
+ Write(') {')
+ else
+ Writeln(') {');
+ Indent;
+ WriteJS(EL.BCatch);
+ Undent;
+ If C then
+ if (El is TJSTryCatchFinallyStatement) then
+ Write('} ')
+ else
+ Write('}')
+ else
+ begin
+ Writeln('');
+ Writeln('}');
+ end;
+ end;
+ If (El is TJSTryCatchFinallyStatement) or (El is TJSTryFinallyStatement) then
+ begin
+ If C then
+ Write('finally {')
+ else
+ Writeln('finally {');
+ Indent;
+ WriteJS(EL.BFinally);
+ Undent;
+ If C then
+ Write('}')
+ else
+ begin
+ Writeln('');
+ Writeln('}');
+ end;
+ end;
+end;
+
+Procedure TJSWriter.WriteFunctionBody(el : TJSFunctionBody);
+
+begin
+ if Assigned(EL.A) then
+ WriteJS(EL.A);
+end;
+
+Procedure TJSWriter.WriteFunctionDeclarationStatement(El : TJSFunctionDeclarationStatement);
+
+begin
+ if Assigned(EL.AFunction) then
+ WriteFuncDef(EL.AFunction);
+end;
+
+Procedure TJSWriter.WriteSourceElements(El :TJSSourceElements);
+
+Var
+ I : Integer;
+ C : Boolean;
+ E : TJSElement;
+
+begin
+ C:=(woCompact in Options);
+ For I:=0 to EL.Statements.Count-1 do
+ begin
+ E:=EL.Statements.Nodes[i].Node;
+ WriteJS(E);
+ if Not C then
+ WriteLn(';')
+ else
+ if I<EL.Statements.Count-1 then
+ Write('; ')
+ else
+ Write(';')
+ end;
+end;
+
+
+Procedure TJSWriter.WriteVariableStatement(el : TJSVariableStatement);
+
+begin
+ Write('var ');
+ WriteJS(EL.A);
+end;
+
+Procedure TJSWriter.WriteJS(El: TJSElement);
+begin
+{$IFDEF DEBUGJSWRITER}
+ if (EL<>Nil) then
+ system.Writeln('WriteJS : ',EL.ClassName)
+ else
+ system.Writeln('WriteJS : El = Nil');
+{$ENDIF}
+ if (El is TJSEmptyBlockStatement ) then
+ WriteEmptyBlockStatement(TJSEmptyBlockStatement(el))
+ else if (El is TJSEmptyStatement) then
+ WriteEmptyStatement(TJSEmptyStatement(el))
+ else if (el is TJSLiteral) then
+ WriteLiteral(TJSLiteral(el))
+ else if (el is TJSPrimaryExpression) then
+ WritePrimaryExpression(TJSPrimaryExpression(el))
+ else if (el is TJSArrayLiteral) then
+ WriteArrayLiteral(TJSArrayLiteral(el))
+ else if (el is TJSObjectLiteral) then
+ WriteObjectLiteral(TJSObjectLiteral(el))
+ else if (el is TJSMemberExpression) then
+ WriteMemberExpression(TJSMemberExpression(el))
+ else if (el is TJSRegularExpressionLiteral) then
+ WriteRegularExpressionLiteral(TJSRegularExpressionLiteral(El))
+ else if (el is TJSCallExpression) then
+ WriteCallExpression(TJSCallExpression(el))
+ else if (el is TJSLabeledStatement) then // Before unary
+ WriteLabeledStatement(TJSLabeledStatement(el))
+ else if (el is TJSFunctionBody) then // Before unary
+ WriteFunctionBody(TJSFunctionBody(el))
+ else if (el is TJSVariableStatement) then // Before unary
+ WriteVariableStatement(TJSVariableStatement(el))
+ else if (el is TJSUNary) then
+ WriteUnary(TJSUnary(el))
+ else if (el is TJSVariableDeclarationList) then
+ WriteVarDeclarationList(TJSVariableDeclarationList(el)) // Must be before binary
+ else if (el is TJSStatementList) then
+ WriteStatementList(TJSStatementList(el)) // Must be before binary
+ else if (el is TJSWithStatement) then
+ WriteWithStatement(TJSWithStatement(El)) // Must be before binary
+ else if (el is TJSBinary) then
+ WriteBinary(TJSBinary(el))
+ else if (el is TJSConditionalExpression) then
+ WriteConditionalExpression(TJSConditionalExpression(el))
+ else if (el is TJSAssignStatement) then
+ WriteAssignStatement(TJSAssignStatement(el))
+ else if (el is TJSVarDeclaration) then
+ WriteVarDeclaration(TJSVarDeclaration(el))
+ else if (el is TJSIfStatement) then
+ WriteIfStatement(TJSIfStatement(el))
+ else if (el is TJSTargetStatement) then
+ WriteTargetStatement(TJSTargetStatement(el))
+ else if (el is TJSReturnStatement) then
+ WriteReturnStatement(TJSReturnStatement(el))
+ else if (el is TJSTryStatement) then
+ WriteTryStatement(TJSTryStatement(el))
+ else if (el is TJSFunctionDeclarationStatement) then
+ WriteFunctionDeclarationStatement(TJSFunctionDeclarationStatement(el))
+ else if (el is TJSSourceElements) then
+ WriteSourceElements(TJSSourceElements(el))
+ else if EL=Nil then
+ Error(SErrNilNode)
+ else
+ Error(SErrUnknownJSClass,[El.ClassName]);
+// Write('/* '+EL.ClassName+' */');
+ FSkipBrackets:=False;
+end;
+
+{ TFileWriter }
+
+Function TFileWriter.DoWrite(Const S: AnsiString) : Integer;
+begin
+ Result:=Length(S);
+ system.Write(FFile,S);
+end;
+
+Function TFileWriter.DoWrite(Const S: UnicodeString) : Integer;
+begin
+ Result:=Length(S)*SizeOf(UnicodeChar);
+ system.Write(FFile,S);
+end;
+
+Constructor TFileWriter.Create(Const AFileNAme: String);
+begin
+ FFileName:=AFileName;
+ Assign(FFile,AFileName);
+ Rewrite(FFile);
+end;
+
+Destructor TFileWriter.Destroy;
+begin
+ Close;
+ Inherited;
+end;
+
+Procedure TFileWriter.Flush;
+begin
+ system.Flush(FFile);
+end;
+
+Procedure TFileWriter.Close;
+begin
+ system.Close(FFile);
+end;
+
+{ TTextWriter }
+
+Function TTextWriter.Write(Const S: UnicodeString) : Integer;
+begin
+ Result:=DoWrite(S);
+end;
+
+Function TTextWriter.Write(Const S: String) : integer;
+begin
+ Result:=DoWrite(S);
+end;
+
+Function TTextWriter.WriteLn(Const S: String) : Integer;
+begin
+ Result:=DoWrite(S)+DoWrite(sLineBreak);
+end;
+
+Function TTextWriter.Write(Const Fmt: String; Args: Array of const) : Integer;
+
+begin
+ Result:=DoWrite(Format(Fmt,Args));
+end;
+
+Function TTextWriter.WriteLn(Const Fmt: String; Args: Array of const) : integer;
+begin
+ Result:=WriteLn(Format(Fmt,Args));
+end;
+
+Function TTextWriter.Write(Const Args: Array of const) : Integer;
+
+Var
+ I : Integer;
+ V : TVarRec;
+ S : String;
+ U : UnicodeString;
+
+
+begin
+ Result:=0;
+ For I:=Low(Args) to High(Args) do
+ begin
+ V:=Args[i];
+ S:='';
+ U:='';
+ case V.VType of
+ vtInteger : Str(V.VInteger,S);
+ vtBoolean : if V.VBoolean then s:='true' else s:='false';
+ vtChar : s:=V.VChar;
+ vtWideChar : U:=V.VWideChar;
+ vtExtended : Str(V.VExtended^,S);
+ vtString : S:=V.VString^;
+ vtPChar : S:=V.VPChar;
+ vtPWideChar : U:=V.VPWideChar;
+ vtAnsiString : S:=PChar(V.VAnsiString);
+ vtCurrency : Str(V.VCurrency^,S);
+ vtVariant : S:=V.VVariant^;
+ vtWideString : U:=PWideChar(V.VWideString);
+ vtInt64 : Str(V.VInt64^,S);
+ vtUnicodeString : U:=PWideChar(V.VUnicodeString);
+ vtQWord : Str(V.VQWord^,S);
+ end;
+ if (U<>'') then
+ Result:=Result+Write(u)
+ else if (S<>'') then
+ Result:=Result+write(s);
+ end;
+end;
+
+Function TTextWriter.WriteLn(Const Args: Array of const) : integer;
+begin
+ Result:=Write(Args)+Writeln('');
+end;
+
+end.
+
diff --git a/packages/fcl-js/tests/tcparser.pp b/packages/fcl-js/tests/tcparser.pp
index 0e8152ece0..67a960f368 100644
--- a/packages/fcl-js/tests/tcparser.pp
+++ b/packages/fcl-js/tests/tcparser.pp
@@ -23,6 +23,7 @@ type
Procedure CreateParser(Const ASource : string);
Procedure CheckClass(E : TJSElement; C : TJSElementClass);
Procedure AssertEquals(Const AMessage : String; Expected, Actual : TJSType); overload;
+ Procedure AssertIdentifier(Msg : String; El : TJSElement; Const AName : TJSString);
Function GetSourceElements : TJSSourceElements;
Function GetVars : TJSElementNodes;
Function GetStatements : TJSElementNodes;
@@ -123,13 +124,24 @@ type
procedure TestTryFinally;
procedure TestThrow;
procedure TestReturn;
+ procedure TestAssignment;
+ procedure TestNew;
+ procedure TestLabeledStatement;
+ procedure TestContinue;
+ procedure TestContinueTarget;
+ procedure TestBreak;
+ procedure TestBreakTarget;
+ procedure TestSwitchEmpty;
+ procedure TestSwitchOne;
+ procedure TestSwitchTwo;
+ procedure TestSwitchTwoDefault;
end;
implementation
uses typinfo;
-procedure TTestJSParser.AssertEquals(const AMessage: String; Expected,
+Procedure TTestJSParser.AssertEquals(Const AMessage: String; Expected,
Actual: TJSType);
Var
@@ -141,7 +153,22 @@ begin
AssertEquals(AMessage,NE,NA);
end;
-function TTestJSParser.GetFirstStatement: TJSElement;
+Procedure TTestJSParser.AssertIdentifier(Msg: String; El: TJSElement;
+ Const AName: TJSString);
+
+Var
+ L : TJSPrimaryExpressionIdent;
+ S1,S2 : String;
+begin
+ AssertNotNull(Msg+' have TJSPrimaryExpressionIdent element',El);
+ CheckClass(El,TJSPrimaryExpressionIdent);
+ L:=TJSPrimaryExpressionIdent(el);
+ S1:=L.Name;
+ S2:=Aname;
+ AssertEquals(Msg+'Identifier has correct name',S2,S1);
+end;
+
+Function TTestJSParser.GetFirstStatement: TJSElement;
Var
E : TJSElementNodes;
@@ -156,7 +183,7 @@ begin
AssertNotNull('First statement assigned',Result);
end;
-function TTestJSParser.GetFirstVar: TJSElement;
+Function TTestJSParser.GetFirstVar: TJSElement;
Var
E : TJSElementNodes;
N : TJSElement;
@@ -171,7 +198,7 @@ begin
AssertNotNull('First variable declaration',Result);
end;
-function TTestJSParser.GetExpressionStatement: TJSExpressionStatement;
+Function TTestJSParser.GetExpressionStatement: TJSExpressionStatement;
Var
N : TJSElement;
@@ -1534,7 +1561,7 @@ begin
AssertEquals('Array name correct','A',TJSPrimaryExpressionIdent(B.Mexpr).Name);
end;
-procedure TTestJSParser.TestVarDeclarationSimple;
+Procedure TTestJSParser.TestVarDeclarationSimple;
Var
X : TJSELement;
@@ -1852,14 +1879,14 @@ procedure TTestJSParser.TestDoWhileSimple;
Var
E : TJSElement;
- W : TJSWhileStatement;
+ W : TJSDoWhileStatement;
// B : TJSBlockStatement;
begin
CreateParser('do b; while (a);');
E:=GetFirstStatement;
- CheckClass(E,TJSWhileStatement);
- W:=TJSWhileStatement(E);
+ CheckClass(E,TJSDoWhileStatement);
+ W:=TJSDoWhileStatement(E);
AssertNotNull('Statement condition assigned',W.Cond);
CheckClass(W.Cond,TJSPrimaryExpressionIdent);
AssertEquals('a',TJSPrimaryExpressionIdent(W.Cond).Name);
@@ -1874,14 +1901,14 @@ procedure TTestJSParser.TestDoWhileBlock;
Var
E : TJSElement;
- W : TJSWhileStatement;
+ W : TJSDoWhileStatement;
// B : TJSBlockStatement;
begin
CreateParser('do {b;} while (a);');
E:=GetFirstStatement;
- CheckClass(E,TJSWhileStatement);
- W:=TJSWhileStatement(E);
+ CheckClass(E,TJSDoWhileStatement);
+ W:=TJSDoWhileStatement(E);
AssertNotNull('Statement condition assigned',W.Cond);
CheckClass(W.Cond,TJSPrimaryExpressionIdent);
AssertEquals('a',TJSPrimaryExpressionIdent(W.Cond).Name);
@@ -2075,6 +2102,252 @@ begin
AssertEquals('1 statement in functionbody elements',1,E.Statements.Count);
end;
+procedure TTestJSParser.TestAssignment;
+Var
+ E : TJSElement;
+ ES : TJSExpressionStatement;
+ A : TJSSimpleAssignStatement;
+
+begin
+ CreateParser('a=b;');
+ E:=GetFirstStatement;
+ CheckClass(E,TJSExpressionStatement);
+ ES:=TJSExpressionStatement(E);
+ CheckClass(ES.A,TJSSimpleAssignStatement);
+ A:=TJSSimpleAssignStatement(ES.A);
+ AssertNotNull('Have LHS',A.LHS);
+ CheckClass(A.LHS,TJSPrimaryExpressionIdent);
+ AssertEquals('Have LHS name','a',TJSPrimaryExpressionIdent(A.LHS).Name);
+ CheckClass(A.Expr,TJSPrimaryExpressionIdent);
+ AssertEquals('Have RHS name','b',TJSPrimaryExpressionIdent(A.Expr).Name);
+end;
+
+procedure TTestJSParser.TestNew;
+Var
+ E : TJSElement;
+ ES : TJSExpressionStatement;
+ A : TJSSimpleAssignStatement;
+ N : TJSNewMemberExpression;
+ L : TJSLiteral;
+
+begin
+ CreateParser('a = new b(123)');
+ E:=GetFirstStatement;
+ CheckClass(E,TJSExpressionStatement);
+ ES:=TJSExpressionStatement(E);
+ CheckClass(ES.A,TJSSimpleAssignStatement);
+ A:=TJSSimpleAssignStatement(ES.A);
+ CheckClass(A.LHS,TJSPrimaryExpressionIdent);
+ AssertEquals('Have LHS name','a',TJSPrimaryExpressionIdent(A.LHS).Name);
+ CheckClass(A.Expr,TJSNewMemberExpression);
+ N:=TJSNewMemberExpression(A.Expr);
+ AssertNotNull('Have LHS name',N.Mexpr);
+ CheckClass(N.Mexpr,TJSPrimaryExpressionIdent);
+ AssertEquals('Have LHS name','b',TJSPrimaryExpressionIdent(N.Mexpr).Name);
+ AssertNotNull('Have arguments',N.Args);
+ AssertEquals('One argument',1,N.Args.Elements.Count);
+ AssertNotNull('Have argument 0',N.Args.Elements[0].Expr);
+ CheckClass(N.Args.Elements[0].Expr,TJSLiteral);
+ L:=TJSLiteral(N.Args.Elements[0].Expr);
+ AssertNotNull('Expression value assigned',L.Value);
+ AssertEquals('Expression value type correct', jstNumber,L.Value.ValueType);
+ AssertEquals('Expression value correct', 123,L.Value.AsNumber);
+
+end;
+
+procedure TTestJSParser.TestLabeledStatement;
+Var
+ E : TJSElement;
+ ES : TJSExpressionStatement;
+ A : TJSSimpleAssignStatement;
+ N : TJSNewMemberExpression;
+ L : TJSLiteral;
+ LS : TJSLabeledStatement;
+
+begin
+ CreateParser('loc: a = new b(123)');
+ E:=GetFirstStatement;
+ CheckClass(E,TJSLabeledStatement);
+ LS:=TJSLabeledStatement(E);
+ AssertNotNull('Have label',LS.TheLabel);
+ AssertEquals('Have correct label','loc',LS.TheLabel.Name);
+ CheckClass(LS.A,TJSExpressionStatement);
+ ES:=TJSExpressionStatement(LS.A);
+ CheckClass(ES.A,TJSSimpleAssignStatement);
+ A:=TJSSimpleAssignStatement(ES.A);
+ CheckClass(A.LHS,TJSPrimaryExpressionIdent);
+ AssertEquals('Have LHS name','a',TJSPrimaryExpressionIdent(A.LHS).Name);
+ CheckClass(A.Expr,TJSNewMemberExpression);
+ N:=TJSNewMemberExpression(A.Expr);
+ AssertNotNull('Have LHS name',N.Mexpr);
+ CheckClass(N.Mexpr,TJSPrimaryExpressionIdent);
+ AssertEquals('Have LHS name','b',TJSPrimaryExpressionIdent(N.Mexpr).Name);
+ AssertNotNull('Have arguments',N.Args);
+ AssertEquals('One argument',1,N.Args.Elements.Count);
+ AssertNotNull('Have argument 0',N.Args.Elements[0].Expr);
+ CheckClass(N.Args.Elements[0].Expr,TJSLiteral);
+ L:=TJSLiteral(N.Args.Elements[0].Expr);
+ AssertNotNull('Expression value assigned',L.Value);
+ AssertEquals('Expression value type correct', jstNumber,L.Value.ValueType);
+ AssertEquals('Expression value correct', 123,L.Value.AsNumber);
+end;
+
+procedure TTestJSParser.TestContinue;
+
+Var
+ E : TJSElement;
+ C : TJSContinueStatement;
+
+begin
+ CreateParser('while (true) continue;');
+ E:=GetFirstStatement;
+ CheckClass(E,TJSWhileStatement);
+ E:=TJSWhileStatement(E).Body;
+ CheckClass(E,TJSContinueStatement);
+ C:=TJSContinueStatement(E);
+ AssertEquals('Have correct (empty) label','',C.TargetName);
+end;
+
+procedure TTestJSParser.TestContinueTarget;
+
+Var
+ E : TJSElement;
+ C : TJSContinueStatement;
+
+begin
+ CreateParser('a: while (true) continue a;');
+ E:=GetFirstStatement;
+ CheckClass(E,TJSLabeledStatement);
+ E:=TJSLabeledStatement(E).A;
+ CheckClass(E,TJSWhileStatement);
+ E:=TJSWhileStatement(E).Body;
+ CheckClass(E,TJSContinueStatement);
+ C:=TJSContinueStatement(E);
+ AssertEquals('Have correct label','a',C.TargetName);
+end;
+
+procedure TTestJSParser.TestBreakTarget;
+Var
+ E : TJSElement;
+ C : TJSBreakStatement;
+
+begin
+ CreateParser('a: while (true) break a;');
+ E:=GetFirstStatement;
+ CheckClass(E,TJSLabeledStatement);
+ E:=TJSLabeledStatement(E).A;
+ CheckClass(E,TJSWhileStatement);
+ E:=TJSWhileStatement(E).Body;
+ CheckClass(E,TJSBreakStatement);
+ C:=TJSBreakStatement(E);
+ AssertEquals('Have correct label','a',C.TargetName);
+end;
+
+procedure TTestJSParser.TestSwitchEmpty;
+Var
+ E : TJSElement;
+ S : TJSSwitchStatement;
+ P : TJSPrimaryExpressionIdent;
+
+begin
+ CreateParser('switch (a) {}');
+ E:=GetFirstStatement;
+ CheckClass(E,TJSSwitchStatement);
+ S:=TJSSwitchStatement(E);
+ AssertNotNull('Have condition',S.Cond);
+ AssertNull('Have no default',S.TheDefault);
+ AssertIdentifier('Case condition',S.Cond,'a');
+ S:=TJSSwitchStatement(E);
+ AssertEquals('No cases',0,S.Cases.Count)
+end;
+
+procedure TTestJSParser.TestSwitchOne;
+Var
+ E : TJSElement;
+ S : TJSSwitchStatement;
+ P : TJSPrimaryExpressionIdent;
+ C : TJSCaseElement;
+begin
+ CreateParser('switch (a) { case c : {}}');
+ E:=GetFirstStatement;
+ CheckClass(E,TJSSwitchStatement);
+ S:=TJSSwitchStatement(E);
+ AssertNotNull('Have condition',S.Cond);
+ AssertNull('Have no default',S.TheDefault);
+ AssertIdentifier('Case condition',S.Cond,'a');
+ S:=TJSSwitchStatement(E);
+ AssertEquals('1 case',1,S.Cases.Count);
+ C:=TJSCaseElement(S.Cases[0]);
+ AssertIdentifier('Case expression',C.Expr,'c');
+ CheckClass(C.Body,TJSEmptyBlockStatement);
+end;
+
+procedure TTestJSParser.TestSwitchTwo;
+Var
+ E : TJSElement;
+ S : TJSSwitchStatement;
+ P : TJSPrimaryExpressionIdent;
+ C : TJSCaseElement;
+begin
+ CreateParser('switch (a) { case c: {}'+sLineBreak+' case d: {}}');
+ E:=GetFirstStatement;
+ CheckClass(E,TJSSwitchStatement);
+ S:=TJSSwitchStatement(E);
+ AssertNotNull('Have condition',S.Cond);
+ AssertNull('Have no default',S.TheDefault);
+ AssertIdentifier('Case condition',S.Cond,'a');
+ S:=TJSSwitchStatement(E);
+ AssertEquals('2 cases',2,S.Cases.Count);
+ C:=TJSCaseElement(S.Cases[0]);
+ AssertIdentifier('Case expression',C.Expr,'c');
+ CheckClass(C.Body,TJSEmptyBlockStatement);
+ C:=TJSCaseElement(S.Cases[1]);
+ AssertIdentifier('Case expression',C.Expr,'d');
+ CheckClass(C.Body,TJSEmptyBlockStatement);
+end;
+
+procedure TTestJSParser.TestSwitchTwoDefault;
+Var
+ E : TJSElement;
+ S : TJSSwitchStatement;
+ P : TJSPrimaryExpressionIdent;
+ C : TJSCaseElement;
+begin
+ CreateParser('switch (a) { case c: {} case d: {} default: {}}');
+ E:=GetFirstStatement;
+ CheckClass(E,TJSSwitchStatement);
+ S:=TJSSwitchStatement(E);
+ AssertNotNull('Have condition',S.Cond);
+ AssertNotNull('Have default',S.TheDefault);
+ AssertIdentifier('Case condition',S.Cond,'a');
+ S:=TJSSwitchStatement(E);
+ AssertEquals('2 cases',3,S.Cases.Count);
+ C:=TJSCaseElement(S.Cases[0]);
+ AssertIdentifier('Case expression',C.Expr,'c');
+ CheckClass(C.Body,TJSEmptyBlockStatement);
+ C:=TJSCaseElement(S.Cases[1]);
+ AssertIdentifier('Case expression',C.Expr,'d');
+ CheckClass(C.Body,TJSEmptyBlockStatement);
+ C:=TJSCaseElement(S.Cases[2]);
+ CheckClass(C.Body,TJSEmptyBlockStatement);
+ AssertSame('Default',C,S.TheDefault);
+end;
+
+procedure TTestJSParser.TestBreak;
+Var
+ E : TJSElement;
+ C : TJSBreakStatement;
+
+begin
+ CreateParser('while (true) break;');
+ E:=GetFirstStatement;
+ CheckClass(E,TJSWhileStatement);
+ E:=TJSWhileStatement(E).Body;
+ CheckClass(E,TJSBreakStatement);
+ C:=TJSBreakStatement(E);
+ AssertEquals('Have correct (empty) label','',C.TargetName);
+end;
+
procedure TTestJSParser.TestIfElseSimple;
Var
@@ -2260,18 +2533,18 @@ begin
FReeAndNil(FSource);
end;
-procedure TTestJSParser.CreateParser(const ASource: string);
+Procedure TTestJSParser.CreateParser(Const ASource: string);
begin
FSource:=TStringStream.Create(ASource);
FParser:=TJSParser.Create(FSource);
end;
-procedure TTestJSParser.CheckClass(E: TJSElement; C: TJSElementClass);
+Procedure TTestJSParser.CheckClass(E: TJSElement; C: TJSElementClass);
begin
AssertEquals(C,E.ClassType);
end;
-function TTestJSParser.GetSourceElements: TJSSourceElements;
+Function TTestJSParser.GetSourceElements: TJSSourceElements;
Var
E : TJSElement;
@@ -2292,17 +2565,17 @@ begin
Result:=FSE;
end;
-function TTestJSParser.GetVars: TJSElementNodes;
+Function TTestJSParser.GetVars: TJSElementNodes;
begin
Result:=GetSourceElements.Vars;
end;
-function TTestJSParser.GetStatements: TJSElementNodes;
+Function TTestJSParser.GetStatements: TJSElementNodes;
begin
Result:=GetSourceElements.Statements;
end;
-function TTestJSParser.GetFunctions: TJSElementNodes;
+Function TTestJSParser.GetFunctions: TJSElementNodes;
begin
Result:=GetSourceElements.Functions;
end;
diff --git a/packages/fcl-js/tests/tcscanner.pp b/packages/fcl-js/tests/tcscanner.pp
index a8397f14ed..292707b44f 100644
--- a/packages/fcl-js/tests/tcscanner.pp
+++ b/packages/fcl-js/tests/tcscanner.pp
@@ -5,7 +5,7 @@ unit tcscanner;
interface
uses
- Classes, SysUtils, Typinfo, fpcunit, testutils, testregistry, jsscanner;
+ Classes, SysUtils, Typinfo, fpcunit, testutils, testregistry, jstoken, jsscanner;
type
diff --git a/packages/fcl-js/tests/tcwriter.pp b/packages/fcl-js/tests/tcwriter.pp
new file mode 100644
index 0000000000..af53781636
--- /dev/null
+++ b/packages/fcl-js/tests/tcwriter.pp
@@ -0,0 +1,2444 @@
+unit tcwriter;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+ Classes, SysUtils, fpcunit, testutils, testregistry, jsbase, jstree, jswriter;
+
+type
+
+ { TTestJSWriter }
+
+ TTestJSWriter = class(TTestCase)
+ private
+ FElement: TJSElement;
+ FTextWriter: TBufferWriter;
+ FWriter: TJSWriter;
+ protected
+ procedure SetUp; override;
+ procedure TearDown; override;
+ Procedure WriteElement(JS : TJSElement); // Set element in Element, write. Freed on teardown
+ Procedure AssertResult(Const Msg, Result : String); // Compare result;
+ Procedure AssertResult(Const Msg : string; Result : UnicodeString); // Compare result;
+ Procedure AssertWrite(Const Msg, Result : String; AElement : TJSElement); // Call writelement, compare result;
+ Procedure AssertWrite(Const Msg : string; Result : UnicodeString; AElement : TJSElement); // Call writelement, compare result;
+ Function CreateIdent(Const AName : String) : TJSPrimaryExpressionIdent;
+ Function CreateLiteral(Const AValue : TJSString) : TJSLiteral;
+ Function CreateLiteral(Const AValue : Integer) : TJSLiteral;
+ Function CreateLiteral(Const AValue : Boolean) : TJSLiteral;
+ Property TextWriter : TBufferWriter Read FTextWriter;
+ Property Writer : TJSWriter Read FWriter;
+ Property Element : TJSElement read FElement;
+ end;
+
+ TTestTestJSWriter = Class(TTestJSWriter)
+ published
+ procedure TestEmpty;
+ end;
+
+ { TTestLiteralWriter }
+
+ TTestLiteralWriter= class(TTestJSWriter)
+ published
+ Procedure TestInteger;
+ Procedure TestBooleanTrue;
+ Procedure TestBooleanFalse;
+ Procedure TestUndefined;
+ Procedure TestNull;
+ Procedure TestString;
+ Procedure TestStringQuote;
+ Procedure TestStringBackslash;
+ Procedure TestStringslash;
+ Procedure TestStringsBack;
+ Procedure TestStringsTab;
+ Procedure TestStringsLineFeed;
+ Procedure TestStringsFormFeed;
+ Procedure TestStringsCarriageReturn;
+ Procedure TestArrayEmpty;
+ Procedure TestArrayEmptyCompact;
+ Procedure TestArrayOneElement;
+ Procedure TestArrayOneElementCompact;
+ Procedure TestArrayOneElementIndent;
+ Procedure TestArrayTwoElements;
+ Procedure TestArrayTwoElementsCompact;
+ Procedure TestArrayTwoElementsCompact2;
+ Procedure TestArrayThreeElementsCompact;
+ Procedure TestObjectEmpty;
+ Procedure TestObjectEmptyCompact;
+ Procedure TestObjectOneElement;
+ Procedure TestObjectOneElementCompact;
+ Procedure TestObjectOneElementIndent;
+ Procedure TestObjectOneElementCompactQuoted;
+ Procedure TestObjectTwoElements;
+ Procedure TestObjectTwoElementCompact;
+ Procedure TestObjectTwoElementCompact2;
+ Procedure TestObjectTwoElementCompactQuoted;
+ Procedure TestObjectThreeElementsCompact;
+ end;
+
+ { TTestStatementWriter }
+
+ TTestStatementWriter = class(TTestJSWriter)
+ Public
+ Procedure TestAssignment(Const Msg : String; AClass : TJSAssignStatementClass; Result : String;ACompact : Boolean);
+ Function CreateAssignment(AClass : TJSAssignStatementClass) : TJSAssignStatement;
+ published
+ Procedure TestEmptyStatement;
+ Procedure TestEmptyStatementComment;
+ Procedure TestEmptyStatementBlock;
+ Procedure TestEmptyStatementBlockIndent;
+ Procedure TestEmptyStatementBlockCompact;
+ Procedure TestVarDeclaration;
+ Procedure TestVarDeclarationInit;
+ Procedure TestVarListDeclaration;
+ Procedure TestVarListDeclarationInit;
+ Procedure TestVarDeclarationStatement;
+ Procedure TestVarListDeclarationStatement;
+ Procedure TestVarListDeclarationStatement2Vars;
+ Procedure TestReturnStatement;
+ Procedure TestLabeledStatement;
+ Procedure TestLabeledStatementCompact;
+ Procedure TestContinueStatement;
+ Procedure TestContinueTargetStatement;
+ Procedure TestBreakStatement;
+ Procedure TestBreakTargetStatement;
+ Procedure TestAssignmentStatementSimple;
+ Procedure TestAssignmentStatementSimpleCompact;
+ Procedure TestAssignmentStatementAdd;
+ Procedure TestAssignmentStatementAddCompact;
+ Procedure TestAssignmentStatementSubtract;
+ Procedure TestAssignmentStatementSubtractCompact;
+ Procedure TestAssignmentStatementMultiply;
+ Procedure TestAssignmentStatementMultiplyCompact;
+ Procedure TestAssignmentStatementDivide;
+ Procedure TestAssignmentStatementDivideCompact;
+ Procedure TestAssignmentStatementShift;
+ Procedure TestAssignmentStatementShiftCompact;
+ Procedure TestAssignmentStatementRShift;
+ Procedure TestAssignmentStatementRShiftCompact;
+ Procedure TestAssignmentStatementURShift;
+ Procedure TestAssignmentStatementURShiftCompact;
+ Procedure TestAssignmentStatementMod;
+ Procedure TestAssignmentStatementModCompact;
+ Procedure TestAssignmentStatementBinaryOr;
+ Procedure TestAssignmentStatementBinaryOrCompact;
+ Procedure TestAssignmentStatementBinaryXOr;
+ Procedure TestAssignmentStatementBinaryXOrCompact;
+ Procedure TestAssignmentStatementBinaryAnd;
+ Procedure TestAssignmentStatementBinaryAndCompact;
+ Procedure TestForStatementEmpty;
+ Procedure TestForStatementFull;
+ Procedure TestForStatementCompact;
+ Procedure TestForInStatement;
+ Procedure TestWhileStatement;
+ Procedure TestDoWhileStatement;
+ Procedure TestSwitchStatementEmpty;
+ Procedure TestSwitchStatementEmptyCompact;
+ Procedure TestSwitchStatementOneElement;
+ Procedure TestSwitchStatementOneElementCompact;
+ Procedure TestSwitchStatementTwoElements;
+ Procedure TestSwitchStatementTwoElementsCompact;
+ Procedure TestSwitchStatementTwoElementsDefault;
+ Procedure TestSwitchStatementTwoElementsDefaultCompact;
+ Procedure TestSwitchStatementTwoElementsOneEmpty;
+ Procedure TestSwitchStatementTwoElementsOneEmptyCompact;
+ Procedure TestIfThen;
+ Procedure TestIfThenElse;
+ Procedure TestStatementListEmpty;
+ Procedure TestStatementListEmptyCompact;
+ Procedure TestStatementListOneStatement;
+ Procedure TestStatementListOneStatementCompact;
+ Procedure TestStatementListTwoStatements;
+ Procedure TestStatementListTwoStatementsCompact;
+ Procedure TestEmptyFunctionDef;
+ Procedure TestEmptyFunctionDefCompact;
+ Procedure TestFunctionDefParams;
+ Procedure TestFunctionDefParamsCompact;
+ Procedure TestFunctionDefBody1;
+ Procedure TestFunctionDefBody1Compact;
+ Procedure TestFunctionDefBody2;
+ Procedure TestFunctionDefBody2Compact;
+ Procedure TestTryCatch;
+ Procedure TestTryCatchCompact;
+ Procedure TestTryFinally;
+ Procedure TestTryFinallyCompact;
+ Procedure TestTryCatchFinally;
+ Procedure TestTryCatchFinallyCompact;
+ Procedure TestWith;
+ Procedure TestWithCompact;
+ Procedure TestSourceElements;
+ Procedure TestSourceElementsCompact;
+ end;
+
+ { TTestExpressionWriter }
+
+ TTestExpressionWriter= class(TTestJSWriter)
+ Protected
+ Procedure TestUnary(Const Msg : String; AClass : TJSUnaryClass; Result : String);
+ Procedure TestBinary(Const Msg : String; AClass : TJSBinaryClass; Result : String;ACompact : Boolean);
+ Published
+ Procedure TestIdent;
+ Procedure TestThis;
+ Procedure TestThrowStatement;
+ Procedure TestUnaryDelete;
+ Procedure TestUnaryVoid;
+ Procedure TestUnaryTypeOf;
+ Procedure TestPrefixPlusPLus;
+ Procedure TestPrefixMinusMinus;
+ Procedure TestUnaryMinus;
+ Procedure TestUnaryPlus;
+ Procedure TestUnaryInv;
+ Procedure TestUnaryNot;
+ Procedure TestPostPlusPLus;
+ Procedure TestPostMinusMinus;
+ Procedure TestBinaryLogicalOr;
+ Procedure TestBinaryLogicalOrCompact;
+ Procedure TestBinaryLogicalAnd;
+ Procedure TestBinaryLogicalAndCompact;
+ Procedure TestBinaryBitwiseOr;
+ Procedure TestBinaryBitwiseOrCompact;
+ Procedure TestBinaryBitwiseAnd;
+ Procedure TestBinaryBitwiseAndCompact;
+ Procedure TestBinaryBitwiseXOr;
+ Procedure TestBinaryBitwiseXOrCompact;
+ Procedure TestBinaryEQ;
+ Procedure TestBinaryEQCompact;
+ Procedure TestBinaryNE;
+ Procedure TestBinaryNECompact;
+ Procedure TestBinarySEQ;
+ Procedure TestBinarySEQCompact;
+ Procedure TestBinarySNE;
+ Procedure TestBinarySNECompact;
+ Procedure TestBinaryLT;
+ Procedure TestBinaryLTCompact;
+ Procedure TestBinaryGT;
+ Procedure TestBinaryGTCompact;
+ Procedure TestBinaryLE;
+ Procedure TestBinaryLECompact;
+ Procedure TestBinaryGE;
+ Procedure TestBinaryGECompact;
+ Procedure TestBinaryIN;
+ Procedure TestBinaryINCompact;
+ Procedure TestBinaryInstanceOf;
+ Procedure TestBinaryInstanceOfCompact;
+ Procedure TestBinaryLShift;
+ Procedure TestBinaryLShiftOfCompact;
+ Procedure TestBinaryRShift;
+ Procedure TestBinaryRShiftOfCompact;
+ Procedure TestBinaryURShift;
+ Procedure TestBinaryURShiftOfCompact;
+ Procedure TestBinaryPlus;
+ Procedure TestBinaryPlusCompact;
+ Procedure TestBinaryMinus;
+ Procedure TestBinaryMinusCompact;
+ Procedure TestBinaryMultiply;
+ Procedure TestBinaryMultiplyCompact;
+ Procedure TestBinaryDivide;
+ Procedure TestBinaryDivideCompact;
+ Procedure TestBinaryMod;
+ Procedure TestBinaryModCompact;
+ Procedure TestBinaryComma;
+ Procedure TestBinaryCommaCompact;
+ Procedure TestDotMember;
+ Procedure TestArgMember;
+ Procedure TestNewMember;
+ Procedure TestNewMemberCompact;
+ Procedure TestNewMemberNoArgs;
+ Procedure TestCall;
+ Procedure TestCallCompact;
+ Procedure TestCallCompact2;
+ Procedure TestCallNoArgs;
+ Procedure TestConditional;
+ Procedure TestRegularExpressionLiteral;
+ Procedure TestRegularExpressionLiteralFlags;
+ end;
+
+implementation
+
+{ TTestExpressionWriter }
+
+Procedure TTestExpressionWriter.TestUnary(Const Msg: String;
+ AClass: TJSUnaryClass; Result: String);
+Var
+ U : TJSUnary;
+
+begin
+ U:=AClass.Create(0,0);
+ U.A:=CreateIdent('a');
+ AssertWrite(Msg,Result,U);
+end;
+
+Procedure TTestExpressionWriter.TestBinary(Const Msg: String;
+ AClass: TJSBinaryClass; Result: String; ACompact: Boolean);
+Var
+ U : TJSBinary;
+
+begin
+ if ACompact then
+ Writer.Options:=Writer.Options+[woCompact];
+ U:=AClass.Create(0,0);
+ U.A:=CreateIdent('a');
+ U.B:=CreateIdent('b');
+ AssertWrite(Msg,Result,U);
+end;
+
+Procedure TTestExpressionWriter.TestIdent;
+
+begin
+ AssertWrite('ABC','ABC',CreateIdent('ABC'));
+end;
+
+Procedure TTestExpressionWriter.TestThis;
+begin
+ AssertWrite('this','this',TJSPrimaryExpressionThis.Create(0,0));
+end;
+
+Procedure TTestExpressionWriter.TestThrowStatement;
+
+begin
+ TestUnary('Throw expresssion',TJSThrowStatement,'throw a');
+end;
+
+Procedure TTestExpressionWriter.TestUnaryDelete;
+begin
+ TestUnary('Delete expresssion',TJSUnaryDeleteExpression,'delete a');
+end;
+
+Procedure TTestExpressionWriter.TestUnaryVoid;
+begin
+ TestUnary('Void expresssion',TJSUnaryVoidExpression,'void a');
+end;
+
+Procedure TTestExpressionWriter.TestUnaryTypeOf;
+begin
+ TestUnary('typeof expresssion',TJSUnaryTypeOfExpression,'typeof a');
+end;
+
+Procedure TTestExpressionWriter.TestPrefixPlusPLus;
+begin
+ TestUnary('prefix ++ expresssion',TJSUnaryPrePlusPlusExpression,'++a');
+end;
+
+Procedure TTestExpressionWriter.TestPrefixMinusMinus;
+begin
+ TestUnary('prefix -- expresssion',TJSUnaryPreMinusMinusExpression,'--a');
+end;
+
+Procedure TTestExpressionWriter.TestUnaryMinus;
+begin
+ TestUnary('unary - expresssion',TJSUnaryMinusExpression,'-a');
+end;
+
+Procedure TTestExpressionWriter.TestUnaryPlus;
+begin
+ TestUnary('unary + expresssion',TJSUnaryPlusExpression,'+a');
+end;
+
+Procedure TTestExpressionWriter.TestUnaryInv;
+begin
+ TestUnary('unary invert expresssion',TJSUnaryInvExpression,'~a');
+end;
+
+Procedure TTestExpressionWriter.TestUnaryNot;
+begin
+ TestUnary('unary not expresssion',TJSUnaryNotExpression,'!a');
+end;
+
+Procedure TTestExpressionWriter.TestPostPlusPLus;
+begin
+ TestUnary('postfix ++ expresssion',TJSUnaryPostPlusPlusExpression,'a++');
+end;
+
+Procedure TTestExpressionWriter.TestPostMinusMinus;
+begin
+ TestUnary('postfix -- expresssion',TJSUnaryPostMinusMinusExpression,'a--');
+end;
+
+Procedure TTestExpressionWriter.TestBinaryLogicalOr;
+begin
+ TestBinary('logical or',TJSLogicalOrExpression,'(a || b)',False);
+end;
+
+Procedure TTestExpressionWriter.TestBinaryLogicalOrCompact;
+begin
+ TestBinary('logical or',TJSLogicalOrExpression,'(a||b)',True);
+end;
+
+Procedure TTestExpressionWriter.TestBinaryLogicalAnd;
+begin
+ TestBinary('logical or',TJSLogicalAndExpression,'(a && b)',False);
+end;
+
+Procedure TTestExpressionWriter.TestBinaryLogicalAndCompact;
+begin
+ TestBinary('logical or',TJSLogicalAndExpression,'(a&&b)',True);
+end;
+
+Procedure TTestExpressionWriter.TestBinaryBitwiseOr;
+begin
+ TestBinary('Bitwise or',TJSBitwiseOrExpression,'(a | b)',False);
+end;
+
+Procedure TTestExpressionWriter.TestBinaryBitwiseOrCompact;
+begin
+ TestBinary('Bitwise or',TJSBitwiseOrExpression,'(a|b)',True);
+end;
+
+Procedure TTestExpressionWriter.TestBinaryBitwiseAnd;
+begin
+ TestBinary('Bitwise and',TJSBitwiseAndExpression,'(a & b)',False);
+end;
+
+Procedure TTestExpressionWriter.TestBinaryBitwiseAndCompact;
+begin
+ TestBinary('Bitwise and',TJSBitwiseAndExpression,'(a&b)',True);
+end;
+
+Procedure TTestExpressionWriter.TestBinaryBitwiseXOr;
+begin
+ TestBinary('Bitwise xor',TJSBitwiseXOrExpression,'(a ^ b)',False);
+end;
+
+Procedure TTestExpressionWriter.TestBinaryBitwiseXOrCompact;
+begin
+ TestBinary('Bitwise xor',TJSBitwiseXOrExpression,'(a^b)',True);
+end;
+
+Procedure TTestExpressionWriter.TestBinaryEQ;
+begin
+ TestBinary('Equal',TJSEqualityExpressionEQ,'(a == b)',False);
+end;
+
+Procedure TTestExpressionWriter.TestBinaryEQCompact;
+begin
+ TestBinary('Equal',TJSEqualityExpressionEQ,'(a==b)',True);
+end;
+
+Procedure TTestExpressionWriter.TestBinaryNE;
+begin
+ TestBinary('Not Equal',TJSEqualityExpressionNE,'(a != b)',False);
+end;
+
+Procedure TTestExpressionWriter.TestBinaryNECompact;
+begin
+ TestBinary('Not Equal',TJSEqualityExpressionNE,'(a!=b)',True);
+end;
+
+Procedure TTestExpressionWriter.TestBinarySEQ;
+begin
+ TestBinary('Strictly Equal',TJSEqualityExpressionSEQ,'(a === b)',False);
+end;
+
+Procedure TTestExpressionWriter.TestBinarySEQCompact;
+begin
+ TestBinary('Strictly Equal',TJSEqualityExpressionSEQ,'(a===b)',True);
+end;
+
+Procedure TTestExpressionWriter.TestBinarySNE;
+begin
+ TestBinary('Strictly Equal',TJSEqualityExpressionSNE,'(a !== b)',False);
+end;
+
+Procedure TTestExpressionWriter.TestBinarySNECompact;
+begin
+ TestBinary('Strictly Equal',TJSEqualityExpressionSNE,'(a!==b)',True);
+end;
+
+Procedure TTestExpressionWriter.TestBinaryLT;
+begin
+ TestBinary('Less than',TJSRelationalExpressionLT,'(a < b)',False);
+end;
+
+Procedure TTestExpressionWriter.TestBinaryLTCompact;
+begin
+ TestBinary('Less than',TJSRelationalExpressionLT,'(a<b)',True);
+end;
+
+Procedure TTestExpressionWriter.TestBinaryGT;
+begin
+ TestBinary('Greater than',TJSRelationalExpressionGT,'(a > b)',False);
+end;
+
+Procedure TTestExpressionWriter.TestBinaryGTCompact;
+begin
+ TestBinary('Greater than',TJSRelationalExpressionGT,'(a>b)',True);
+end;
+
+Procedure TTestExpressionWriter.TestBinaryLE;
+begin
+ TestBinary('Less than or equal',TJSRelationalExpressionLE,'(a <= b)',False);
+end;
+
+Procedure TTestExpressionWriter.TestBinaryLECompact;
+begin
+ TestBinary('Less than or equal',TJSRelationalExpressionLE,'(a<=b)',True);
+end;
+
+Procedure TTestExpressionWriter.TestBinaryGE;
+begin
+ TestBinary('Greater than or equal',TJSRelationalExpressionGE,'(a >= b)',False);
+end;
+
+Procedure TTestExpressionWriter.TestBinaryGECompact;
+begin
+ TestBinary('Greater than or equal',TJSRelationalExpressionGE,'(a>=b)',True);
+end;
+
+Procedure TTestExpressionWriter.TestBinaryIN;
+begin
+ TestBinary('Prop in Object',TJSRelationalExpressionIN,'(a in b)',False);
+end;
+
+Procedure TTestExpressionWriter.TestBinaryINCompact;
+begin
+ TestBinary('Prop in Object',TJSRelationalExpressionIN,'(a in b)',True);
+end;
+
+Procedure TTestExpressionWriter.TestBinaryInstanceOf;
+begin
+ TestBinary('A instanceof Object',TJSRelationalExpressionInStanceOf,'(a instanceof b)',False);
+end;
+
+Procedure TTestExpressionWriter.TestBinaryInstanceOfCompact;
+begin
+ TestBinary('A instanceof Object',TJSRelationalExpressionInStanceOf,'(a instanceof b)',true);
+end;
+
+Procedure TTestExpressionWriter.TestBinaryLShift;
+begin
+ TestBinary('A lshift B',TJSLShiftExpression,'(a << b)',False);
+end;
+
+Procedure TTestExpressionWriter.TestBinaryLShiftOfCompact;
+begin
+ TestBinary('A lshift B',TJSLShiftExpression,'(a<<b)',True);
+end;
+
+Procedure TTestExpressionWriter.TestBinaryRShift;
+begin
+ TestBinary('A rshift B',TJSRShiftExpression,'(a >> b)',False);
+end;
+
+Procedure TTestExpressionWriter.TestBinaryRShiftOfCompact;
+begin
+ TestBinary('A rshift B',TJSRShiftExpression,'(a>>b)',True);
+end;
+
+Procedure TTestExpressionWriter.TestBinaryURShift;
+begin
+ TestBinary('A urshift B',TJSURShiftExpression,'(a >>> b)',False);
+end;
+
+Procedure TTestExpressionWriter.TestBinaryURShiftOfCompact;
+begin
+ TestBinary('A urshift B',TJSURShiftExpression,'(a>>>b)',True);
+end;
+
+Procedure TTestExpressionWriter.TestBinaryPlus;
+begin
+ TestBinary('A plus B',TJSAdditiveExpressionPlus,'(a + b)',False);
+end;
+
+Procedure TTestExpressionWriter.TestBinaryPlusCompact;
+begin
+ TestBinary('A plus B',TJSAdditiveExpressionPlus,'(a+b)',True);
+end;
+
+Procedure TTestExpressionWriter.TestBinaryMinus;
+begin
+ TestBinary('A minus B',TJSAdditiveExpressionMinus,'(a - b)',False);
+end;
+
+Procedure TTestExpressionWriter.TestBinaryMinusCompact;
+begin
+ TestBinary('A minus B',TJSAdditiveExpressionMinus,'(a-b)',True);
+end;
+
+Procedure TTestExpressionWriter.TestBinaryMultiply;
+begin
+ TestBinary('A multiply B',TJSMultiplicativeExpressionMul,'(a * b)',False);
+end;
+
+Procedure TTestExpressionWriter.TestBinaryMultiplyCompact;
+begin
+ TestBinary('A multiply B',TJSMultiplicativeExpressionMul,'(a*b)',True);
+end;
+
+Procedure TTestExpressionWriter.TestBinaryDivide;
+begin
+ TestBinary('A divide B',TJSMultiplicativeExpressionDiv,'(a / b)',False);
+end;
+
+Procedure TTestExpressionWriter.TestBinaryDivideCompact;
+begin
+ TestBinary('A divide B',TJSMultiplicativeExpressionDiv,'(a/b)',True);
+end;
+
+Procedure TTestExpressionWriter.TestBinaryMod;
+begin
+ TestBinary('A mod B',TJSMultiplicativeExpressionMod,'(a % b)',False);
+end;
+
+Procedure TTestExpressionWriter.TestBinaryModCompact;
+begin
+ TestBinary('A mod B',TJSMultiplicativeExpressionMod,'(a%b)',True);
+end;
+
+Procedure TTestExpressionWriter.TestBinaryComma;
+begin
+ TestBinary('A comma B',TJSCommaExpression,'(a , b)',False);
+end;
+
+Procedure TTestExpressionWriter.TestBinaryCommaCompact;
+begin
+ TestBinary('A comma B',TJSCommaExpression,'(a,b)',True);
+end;
+
+Procedure TTestExpressionWriter.TestDotMember;
+Var
+ U : TJSDotMemberExpression;
+
+begin
+ U:=TJSDotMemberExpression.Create(0,0);
+ U.Mexpr:=CreateIdent('a');
+ U.Name:='b';
+ AssertWrite('member b of object a (a.b)','a.b',U);
+end;
+
+Procedure TTestExpressionWriter.TestArgMember;
+Var
+ U : TJSBracketMemberExpression;
+
+begin
+ U:=TJSBracketMemberExpression.Create(0,0);
+ U.Mexpr:=CreateIdent('a');
+ U.Name:=CreateIdent('b');
+ AssertWrite('member b of object a (a[b])','a[b]',U);
+end;
+
+Procedure TTestExpressionWriter.TestNewMember;
+Var
+ U : TJSNewMemberExpression;
+
+begin
+ U:=TJSNewMemberExpression.Create(0,0);
+ U.Mexpr:=CreateIdent('a');;
+ U.Args:=TJSArguments.Create(0,0);
+ U.Args.Elements.AddElement;
+ U.Args.Elements[0].Expr:=CreateLiteral(123);
+ AssertWrite('member b of object a (a[b])','new a('+slinebreak+'123'+sLineBreak+')',U);
+end;
+
+Procedure TTestExpressionWriter.TestNewMemberCompact;
+
+Var
+ U : TJSNewMemberExpression;
+
+begin
+ Writer.Options:=Writer.Options+[woCompact];
+ U:=TJSNewMemberExpression.Create(0,0);
+ U.Mexpr:=CreateIdent('a');
+ U.Args:=TJSArguments.Create(0,0);
+ U.Args.Elements.AddElement;
+ U.Args.Elements[0].Expr:=CreateLiteral(123);
+ AssertWrite('new a(123)','new a(123)',U);
+end;
+
+Procedure TTestExpressionWriter.TestNewMemberNoArgs;
+Var
+ U : TJSNewMemberExpression;
+
+begin
+ U:=TJSNewMemberExpression.Create(0,0);
+ U.Mexpr:=CreateIdent('a');
+ AssertWrite('new a()','new a()',U);
+end;
+
+Procedure TTestExpressionWriter.TestCall;
+Var
+ U : TJSCallExpression;
+
+begin
+ U:=TJSCallExpression.Create(0,0);
+ U.Expr:=CreateIdent('a');
+ U.Args:=TJSArguments.Create(0,0);
+ U.Args.Elements.AddElement;
+ U.Args.Elements[0].Expr:=CreateLiteral(123);
+ AssertWrite('call a(123)','a('+slinebreak+'123'+sLineBreak+')',U);
+end;
+
+Procedure TTestExpressionWriter.TestCallCompact;
+Var
+ U : TJSCallExpression;
+
+begin
+ Writer.Options:=Writer.Options+[woCompact];
+ U:=TJSCallExpression.Create(0,0);
+ U.Expr:=CreateIdent('a');
+ U.Args:=TJSArguments.Create(0,0);
+ U.Args.Elements.AddElement;
+ U.Args.Elements[0].Expr:=CreateLiteral(123);
+ AssertWrite('call a(123)','a(123)',U);
+end;
+
+Procedure TTestExpressionWriter.TestCallCompact2;
+Var
+ U : TJSCallExpression;
+
+begin
+ Writer.Options:=Writer.Options+[woCompactArguments];
+ U:=TJSCallExpression.Create(0,0);
+ U.Expr:=CreateIdent('a');
+ U.Args:=TJSArguments.Create(0,0);
+ U.Args.Elements.AddElement;
+ U.Args.Elements[0].Expr:=CreateLiteral(123);
+ U.Args.Elements.AddElement;
+ U.Args.Elements[1].Expr:=CreateLiteral(456);
+ AssertWrite('call a(123,456)','a(123, 456)',U);
+
+end;
+
+Procedure TTestExpressionWriter.TestCallNoArgs;
+Var
+ U : TJSCallExpression;
+
+begin
+ U:=TJSCallExpression.Create(0,0);
+ U.Expr:=CreateIdent('a');
+ AssertWrite('call a()','a()',U);
+end;
+
+Procedure TTestExpressionWriter.TestConditional;
+Var
+ U : TJSConditionalExpression;
+
+begin
+ U:=TJSConditionalExpression.Create(0,0);
+ U.A:=CreateIdent('a');
+ U.B:=CreateIdent('b');
+ U.C:=CreateIdent('c');
+ AssertWrite('a ? b : c','(a ? b : c)',U);
+end;
+
+Procedure TTestExpressionWriter.TestRegularExpressionLiteral;
+
+Var
+ S : TJSRegularExpressionLiteral;
+begin
+ S:=TJSRegularExpressionLiteral.Create(0,0);
+ S.Pattern.AsString:='a';
+ AssertWrite('/a/','/a/',S);
+end;
+
+Procedure TTestExpressionWriter.TestRegularExpressionLiteralFlags;
+Var
+ S : TJSRegularExpressionLiteral;
+begin
+ S:=TJSRegularExpressionLiteral.Create(0,0);
+ S.Pattern.AsString:='a';
+ S.PatternFlags.AsString:='g';
+ AssertWrite('/a/g','/a/g',S);
+end;
+
+{ ---------------------------------------------------------------------
+ TTestStatementWriter
+ ---------------------------------------------------------------------}
+
+Procedure TTestStatementWriter.TestAssignment(Const Msg: String;
+ AClass: TJSAssignStatementClass; Result: String; ACompact: Boolean);
+Var
+ U : TJSAssignStatement;
+begin
+ if ACompact then
+ Writer.Options:=Writer.Options+[woCompact];
+ U:=CreateAssignment(AClass);
+ AssertWrite(Msg,Result,U);
+end;
+
+Function TTestStatementWriter.CreateAssignment(AClass: TJSAssignStatementClass
+ ): TJSAssignStatement;
+begin
+ if AClass=Nil then
+ AClass := TJSSimpleAssignStatement;
+ Result:=AClass.Create(0,0);
+ Result.LHS:=CreateIdent('a');
+ Result.Expr:=CreateIdent('b');
+end;
+
+Procedure TTestStatementWriter.TestEmptyStatement;
+
+begin
+ AssertWrite('Empty statement','',TJSEmptyStatement.Create(0,0));
+end;
+
+Procedure TTestStatementWriter.TestEmptyStatementComment;
+begin
+ Writer.Options:=[woEmptyStatementAsComment,woUseUTF8];
+ AssertWrite('Empty statement as comment','/* Empty statement */',TJSEmptyStatement.Create(0,0));
+end;
+
+Procedure TTestStatementWriter.TestEmptyStatementBlock;
+begin
+ AssertWrite('Empty statement block','{'+sLineBreak+'}',TJSEmptyBlockStatement.Create(0,0));
+end;
+
+Procedure TTestStatementWriter.TestEmptyStatementBlockIndent;
+begin
+ Writer.IndentSize:=2;
+ Writer.Indent;
+ AssertWrite('Empty statement block',' {'+sLineBreak+' }',TJSEmptyBlockStatement.Create(0,0));
+end;
+
+Procedure TTestStatementWriter.TestEmptyStatementBlockCompact;
+begin
+ Writer.Options:=[woCompact,woUseUTF8];
+ AssertWrite('Empty statement block','{}',TJSEmptyBlockStatement.Create(0,0));
+end;
+
+Procedure TTestStatementWriter.TestVarDeclaration;
+
+Var
+ V : TJSVarDeclaration;
+ L : TJSPrimaryExpressionIdent;
+
+begin
+ V:=TJSVarDeclaration.Create(0,0);
+ V.Name:='a';
+ AssertWrite('simple var','a',V);
+end;
+
+Procedure TTestStatementWriter.TestVarDeclarationInit;
+Var
+ V : TJSVarDeclaration;
+ L : TJSLiteral;
+
+begin
+ V:=TJSVarDeclaration.Create(0,0);
+ V.Name:='a';
+ V.Init:=CreateLiteral(1);
+ AssertWrite('simple var, init ','a = 1',V);
+end;
+
+Procedure TTestStatementWriter.TestVarListDeclaration;
+Var
+ B,L : TJSVariableDeclarationList;
+ V : TJSVarDeclaration;
+
+begin
+ L:=TJSVariableDeclarationList.Create(0,0);
+ V:=TJSVarDeclaration.Create(0,0);
+ V.Name:='a';
+ L.A:=V;
+ B:=TJSVariableDeclarationList.Create(0,0);
+ V:=TJSVarDeclaration.Create(0,0);
+ V.Name:='b';
+ B.A:=V;
+ V.Init:=CreateLiteral(1);
+ L.B:=B;
+ AssertWrite('simple var list ','a, b = 1',L);
+end;
+
+Procedure TTestStatementWriter.TestVarListDeclarationInit;
+Var
+ B,L : TJSVariableDeclarationList;
+ V : TJSVarDeclaration;
+
+
+begin
+ L:=TJSVariableDeclarationList.Create(0,0);
+ V:=TJSVarDeclaration.Create(0,0);;
+ V.Name:='a';
+ L.A:=V;
+ B:=TJSVariableDeclarationList.Create(0,0);
+ V:=TJSVarDeclaration.Create(0,0);;
+ V.Name:='b';
+ B.A:=V;
+ L.B:=B;
+ AssertWrite('simple var list ','a, b',L);
+end;
+
+Procedure TTestStatementWriter.TestVarDeclarationStatement;
+
+Var
+ S : TJSVariableStatement;
+ V : TJSVarDeclaration;
+ L : TJSPrimaryExpressionIdent;
+
+begin
+ S:=TJSVariableStatement.Create(0,0);
+ V:=TJSVarDeclaration.Create(0,0);
+ S.A:=V;
+ V.Name:='a';
+ AssertWrite('simple var','var a',S);
+end;
+
+Procedure TTestStatementWriter.TestVarListDeclarationStatement;
+
+Var
+ S : TJSVariableStatement;
+ V : TJSVarDeclaration;
+ L : TJSVariableDeclarationList;
+
+begin
+ S:=TJSVariableStatement.Create(0,0);
+ L:=TJSVariableDeclarationList.Create(0,0);
+ V:=TJSVarDeclaration.Create(0,0);
+ L.A:=V;
+ S.A:=L;
+ V.Name:='a';
+ AssertWrite('simple var','var a',S);
+end;
+
+Procedure TTestStatementWriter.TestVarListDeclarationStatement2Vars;
+Var
+ S : TJSVariableStatement;
+ V : TJSVarDeclaration;
+ L : TJSVariableDeclarationList;
+
+begin
+ S:=TJSVariableStatement.Create(0,0);
+ L:=TJSVariableDeclarationList.Create(0,0);
+ S.A:=L;
+ V:=TJSVarDeclaration.Create(0,0);
+ L.A:=V;
+ V.Name:='a';
+ L.B:=TJSVariableDeclarationList.Create(0,0);
+ L:=TJSVariableDeclarationList(L.B);
+ V:=TJSVarDeclaration.Create(0,0);
+ L.A:=V;
+ V.Name:='b';
+ AssertWrite('simple 2 vars','var a, b',S);
+end;
+
+Procedure TTestStatementWriter.TestReturnStatement;
+Var
+ S : TJSReturnStatement;
+
+begin
+ S:=TJSReturnStatement.Create(0,0);
+ S.Expr:=CreateIdent('a');
+ AssertWrite('simple return','return a',S);
+end;
+
+Procedure TTestStatementWriter.TestLabeledStatement;
+Var
+ LS : TJSLabeledStatement;
+ S : TJSReturnStatement;
+
+begin
+ LS:=TJSLabeledStatement.Create(0,0);
+ LS.TheLabel:=TJSLabel.Create;
+ LS.TheLabel.Name:='loc';
+ S:=TJSReturnStatement.Create(0,0);
+ S.Expr:=CreateIDent('a');
+ LS.A:=S;
+ AssertWrite('simple return','loc:'+sLineBreak+'return a',LS);
+end;
+
+Procedure TTestStatementWriter.TestLabeledStatementCompact;
+Var
+ LS : TJSLabeledStatement;
+ S : TJSReturnStatement;
+
+begin
+ Writer.Options:=[woCompact,woUseUTF8];
+ LS:=TJSLabeledStatement.Create(0,0);
+ LS.TheLabel:=TJSLabel.Create;
+ LS.TheLabel.Name:='loc';
+ S:=TJSReturnStatement.Create(0,0);
+ S.Expr:=CreateIdent('a');
+ LS.A:=S;
+ AssertWrite('simple return','loc: return a',LS);
+end;
+
+Procedure TTestStatementWriter.TestContinueStatement;
+
+Var
+ S : TJSContinueStatement;
+
+begin
+ S:=TJSContinueStatement.Create(0,0);
+ AssertWrite('simple continue','continue',S);
+end;
+
+Procedure TTestStatementWriter.TestContinueTargetStatement;
+
+Var
+ S : TJSContinueStatement;
+
+begin
+ S:=TJSContinueStatement.Create(0,0);
+ S.TargetName:='a';
+ AssertWrite('continue a','continue a',S);
+end;
+
+Procedure TTestStatementWriter.TestBreakStatement;
+
+Var
+ S : TJSBreakStatement;
+
+begin
+ S:=TJSBreakStatement.Create(0,0);
+ AssertWrite('simple break','break',S);
+end;
+
+Procedure TTestStatementWriter.TestBreakTargetStatement;
+Var
+ S : TJSBreakStatement;
+
+begin
+ S:=TJSBreakStatement.Create(0,0);
+ S.TargetName:='a';
+ AssertWrite('simple break a','break a',S);
+end;
+
+Procedure TTestStatementWriter.TestAssignmentStatementSimple;
+begin
+ TestAssignment('Simple assignment',TJSSimpleAssignStatement,'a = b',False);
+end;
+
+Procedure TTestStatementWriter.TestAssignmentStatementSimpleCompact;
+begin
+ TestAssignment('Simple assignment',TJSSimpleAssignStatement,'a=b',True);
+end;
+
+Procedure TTestStatementWriter.TestAssignmentStatementAdd;
+begin
+ TestAssignment('Add assignment',TJSAddEqAssignStatement,'a += b',False);
+end;
+
+Procedure TTestStatementWriter.TestAssignmentStatementAddCompact;
+begin
+ TestAssignment('Add assignment',TJSAddEqAssignStatement,'a+=b',True);
+end;
+
+Procedure TTestStatementWriter.TestAssignmentStatementSubtract;
+begin
+ TestAssignment('Subtract assignment',TJSSubEqAssignStatement,'a -= b',False);
+end;
+
+Procedure TTestStatementWriter.TestAssignmentStatementSubtractCompact;
+begin
+ TestAssignment('Subtract assignment',TJSSubEqAssignStatement,'a-=b',True);
+end;
+
+Procedure TTestStatementWriter.TestAssignmentStatementMultiply;
+begin
+ TestAssignment('Multiply assignment',TJSMulEqAssignStatement,'a *= b',False);
+end;
+
+Procedure TTestStatementWriter.TestAssignmentStatementMultiplyCompact;
+begin
+ TestAssignment('Multiply assignment',TJSMulEqAssignStatement,'a*=b',True);
+end;
+
+Procedure TTestStatementWriter.TestAssignmentStatementDivide;
+begin
+ TestAssignment('Divide assignment',TJSDivEqAssignStatement,'a /= b',False);
+end;
+
+Procedure TTestStatementWriter.TestAssignmentStatementDivideCompact;
+begin
+ TestAssignment('Divide assignment',TJSDivEqAssignStatement,'a/=b',True);
+end;
+
+Procedure TTestStatementWriter.TestAssignmentStatementShift;
+begin
+ TestAssignment('Shift assignment',TJSLShiftEqAssignStatement,'a <<= b',False);
+end;
+
+Procedure TTestStatementWriter.TestAssignmentStatementShiftCompact;
+begin
+ TestAssignment('Shift assignment',TJSLShiftEqAssignStatement,'a<<=b',True);
+end;
+
+Procedure TTestStatementWriter.TestAssignmentStatementRShift;
+begin
+ TestAssignment('RShift assignment',TJSRShiftEqAssignStatement,'a >>= b',False);
+end;
+
+Procedure TTestStatementWriter.TestAssignmentStatementRShiftCompact;
+begin
+ TestAssignment('RShift assignment',TJSRShiftEqAssignStatement,'a>>=b',True);
+end;
+
+Procedure TTestStatementWriter.TestAssignmentStatementURShift;
+begin
+ TestAssignment('URShift assignment',TJSURShiftEqAssignStatement,'a >>>= b',False);
+end;
+
+Procedure TTestStatementWriter.TestAssignmentStatementURShiftCompact;
+begin
+ TestAssignment('URShift assignment',TJSURShiftEqAssignStatement,'a>>>=b',True);
+end;
+
+Procedure TTestStatementWriter.TestAssignmentStatementMod;
+begin
+ TestAssignment('Mod assignment',TJSModEqAssignStatement,'a %= b',False);
+end;
+
+Procedure TTestStatementWriter.TestAssignmentStatementModCompact;
+begin
+ TestAssignment('Mod assignment',TJSModEqAssignStatement,'a%=b',True);
+end;
+
+Procedure TTestStatementWriter.TestAssignmentStatementBinaryOr;
+begin
+ TestAssignment('Binary or assignment',TJSOrEqAssignStatement,'a |= b',False);
+end;
+
+Procedure TTestStatementWriter.TestAssignmentStatementBinaryOrCompact;
+begin
+ TestAssignment('Binary or assignment',TJSOrEqAssignStatement,'a |= b',False);
+end;
+
+Procedure TTestStatementWriter.TestAssignmentStatementBinaryXOr;
+begin
+ TestAssignment('Binary xor assignment',TJSXOrEqAssignStatement,'a ^= b',False);
+end;
+
+Procedure TTestStatementWriter.TestAssignmentStatementBinaryXOrCompact;
+begin
+ TestAssignment('Binary xor assignment',TJSXOrEqAssignStatement,'a^=b',True);
+end;
+
+Procedure TTestStatementWriter.TestAssignmentStatementBinaryAnd;
+begin
+ TestAssignment('Binary and assignment',TJSAndEqAssignStatement,'a &= b',False);
+end;
+
+Procedure TTestStatementWriter.TestAssignmentStatementBinaryAndCompact;
+begin
+ TestAssignment('Binary and assignment',TJSAndEqAssignStatement,'a&=b',True);
+end;
+
+Procedure TTestStatementWriter.TestForStatementEmpty;
+
+Var
+ S : TJSForStatement;
+begin
+ S:=TJSForStatement.Create(0,0);
+ S.Body:=TJSEmptyBlockStatement.Create(0,0);
+ AssertWrite('neverending for','for (; ; ) {'+sLineBreak+'}',S);
+end;
+
+Procedure TTestStatementWriter.TestForStatementFull;
+
+
+Var
+ S : TJSForStatement;
+ UPP : TJSUnaryPostPlusPlusExpression;
+ CL : TJSRelationalExpressionLT;
+ L : TJSLiteral;
+ sa : TJSSimpleAssignStatement;
+
+begin
+ SA:=TJSSimpleAssignStatement.Create(0,0);
+ SA.LHS:=CreateIdent('i');
+ SA.Expr:=CreateLiteral(0);
+ UPP:=TJSUnaryPostPlusPlusExpression.Create(0,0);
+ UPP.A:=CreateIdent('i');
+ CL:=TJSRelationalExpressionLT.Create(0,0);
+ CL.A:=CreateIdent('i');
+ CL.B:=CreateLiteral(10);
+ S:=TJSForStatement.Create(0,0);
+ S.Init:=SA;
+ S.Incr:=UPP;
+ S.Cond:=CL;
+ S.Body:=TJSEmptyBlockStatement.Create(0,0);
+ AssertWrite('for i:=0 to 9','for (i = 0; (i < 10); i++) {'+sLineBreak+'}',S);
+end;
+
+Procedure TTestStatementWriter.TestForStatementCompact;
+Var
+ S : TJSForStatement;
+ UPP : TJSUnaryPostPlusPlusExpression;
+ CL : TJSRelationalExpressionLT;
+ L : TJSLiteral;
+ sa : TJSSimpleAssignStatement;
+
+begin
+ SA:=TJSSimpleAssignStatement.Create(0,0);
+ SA.LHS:=CreateIdent('i');
+ SA.Expr:=CreateLiteral(0);
+ UPP:=TJSUnaryPostPlusPlusExpression.Create(0,0);
+ UPP.A:=CreateIdent('i');
+ CL:=TJSRelationalExpressionLT.Create(0,0);
+ CL.A:=CreateIdent('i');
+ CL.B:=CreateLiteral(10);
+ S:=TJSForStatement.Create(0,0);
+ S.Init:=SA;
+ S.Incr:=UPP;
+ S.Cond:=CL;
+ S.Body:=TJSEmptyBlockStatement.Create(0,0);
+ Writer.Options:=[woCompact,woUseUTF8];
+ AssertWrite('for i:=0 to 9','for (i=0; (i<10); i++) {}',S);
+end;
+
+Procedure TTestStatementWriter.TestForInStatement;
+
+Var
+ S : TJSForInStatement;
+
+begin
+ S:=TJSForInStatement.Create(0,0);
+ S.LHS:=CreateIdent('a');
+ S.List:=CreateIdent('b');
+ S.Body:=TJSEmptyBlockStatement.Create(0,0);
+ AssertWrite('for a in b','for (a in b) {'+sLineBreak+'}',S);
+end;
+
+Procedure TTestStatementWriter.TestWhileStatement;
+Var
+ S : TJSWhileStatement;
+
+begin
+ S:=TJSWhileStatement.Create(0,0);
+ S.Cond:=CreateIdent('a');
+ S.Body:=TJSEmptyBlockStatement.Create(0,0);
+ AssertWrite('while a ','while (a) {'+sLineBreak+'}',S);
+end;
+
+Procedure TTestStatementWriter.TestDoWhileStatement;
+
+Var
+ S : TJSDoWhileStatement;
+
+begin
+ S:=TJSDoWhileStatement.Create(0,0);
+ S.Cond:=CreateIdent('a');
+ S.Body:=TJSEmptyBlockStatement.Create(0,0);
+ AssertWrite('do while a ','do {'+sLineBreak+'} while (a)',S);
+end;
+
+Procedure TTestStatementWriter.TestSwitchStatementEmpty;
+Var
+ S : TJSSwitchStatement;
+
+begin
+ S:=TJSSwitchStatement.Create(0,0);
+ S.Cond:=CreateIdent('a');
+ AssertWrite('switch ','switch (a) {'+sLineBreak+'}',S);
+end;
+
+Procedure TTestStatementWriter.TestSwitchStatementEmptyCompact;
+
+Var
+ S : TJSSwitchStatement;
+
+begin
+ Writer.Options:=[woCompact,woUseUTF8];
+ S:=TJSSwitchStatement.Create(0,0);
+ S.Cond:=CreateIdent('a');
+ AssertWrite('switch ','switch (a) {}',S);
+end;
+
+Procedure TTestStatementWriter.TestSwitchStatementOneElement;
+
+Var
+ S : TJSSwitchStatement;
+ C : TJSCaseElement;
+begin
+// Writer.Options:=[woCompact,woUseUTF8];
+ S:=TJSSwitchStatement.Create(0,0);
+ S.Cond:=CreateIdent('a');
+ C:=S.Cases.AddCase;
+ C.Body:=TJSEmptyBlockStatement.Create(0,0);;
+ C.Expr:=CreateIdent('c');
+ AssertWrite('switch ','switch (a) {'+sLineBreak+'case c:'+sLineBreak+'{'+sLineBreak+'}'+sLineBreak+'}',S);
+end;
+
+Procedure TTestStatementWriter.TestSwitchStatementOneElementCompact;
+Var
+ S : TJSSwitchStatement;
+ C : TJSCaseElement;
+begin
+ Writer.Options:=[woCompact,woUseUTF8];
+ S:=TJSSwitchStatement.Create(0,0);
+ S.Cond:=CreateIdent('a');
+ C:=S.Cases.AddCase;
+ C.Body:=TJSEmptyBlockStatement.Create(0,0);;
+ C.Expr:=CreateIdent('c');
+ AssertWrite('switch ','switch (a) {case c: {}}',S);
+end;
+
+Procedure TTestStatementWriter.TestSwitchStatementTwoElements;
+Var
+ S : TJSSwitchStatement;
+ C : TJSCaseElement;
+begin
+// Writer.Options:=[woCompact,woUseUTF8];
+ S:=TJSSwitchStatement.Create(0,0);
+ S.Cond:=CreateIdent('a');
+ C:=S.Cases.AddCase;
+ C.Body:=TJSEmptyBlockStatement.Create(0,0);;
+ C.Expr:=CreateIdent('c');
+ C:=S.Cases.AddCase;
+ C.Body:=TJSEmptyBlockStatement.Create(0,0);;
+ C.Expr:=CreateIdent('d');
+ AssertWrite('switch ','switch (a) {'+sLineBreak+'case c:'+sLineBreak+'{'+sLineBreak+'}'+sLineBreak+'case d:'+sLineBreak+'{'+sLineBreak+'}'+sLineBreak+'}',S);
+end;
+
+Procedure TTestStatementWriter.TestSwitchStatementTwoElementsCompact;
+
+Var
+ S : TJSSwitchStatement;
+ C : TJSCaseElement;
+begin
+ Writer.Options:=[woCompact,woUseUTF8];
+ S:=TJSSwitchStatement.Create(0,0);
+ S.Cond:=CreateIdent('a');
+ C:=S.Cases.AddCase;
+ C.Body:=TJSEmptyBlockStatement.Create(0,0);;
+ C.Expr:=CreateIdent('c');
+ C:=S.Cases.AddCase;
+ C.Body:=TJSEmptyBlockStatement.Create(0,0);;
+ C.Expr:=CreateIdent('d');
+ AssertWrite('switch ','switch (a) {case c: {}case d: {}}',S);
+end;
+
+Procedure TTestStatementWriter.TestSwitchStatementTwoElementsDefault;
+Var
+ S : TJSSwitchStatement;
+ C : TJSCaseElement;
+begin
+ S:=TJSSwitchStatement.Create(0,0);
+ S.Cond:=CreateIdent('a');
+ C:=S.Cases.AddCase;
+ C.Body:=TJSEmptyBlockStatement.Create(0,0);;
+ C.Expr:=CreateIdent('c');
+ C:=S.Cases.AddCase;
+ C.Body:=TJSEmptyBlockStatement.Create(0,0);;
+ C.Expr:=CreateIdent('d');
+ C:=S.Cases.AddCase;
+ C.Body:=TJSEmptyBlockStatement.Create(0,0);;
+ S.TheDefault:=C;
+ AssertWrite('switch ','switch (a) {'+sLineBreak+'case c:'+sLineBreak+'{'+sLineBreak+'}'+sLineBreak+'case d:'+sLineBreak+'{'+sLineBreak+'}'+sLineBreak+'default:'+sLineBreak+'{'+sLineBreak+'}'+sLineBreak+'}',S);
+end;
+
+Procedure TTestStatementWriter.TestSwitchStatementTwoElementsDefaultCompact;
+Var
+ S : TJSSwitchStatement;
+ C : TJSCaseElement;
+begin
+ Writer.Options:=[woCompact,woUseUTF8];
+ S:=TJSSwitchStatement.Create(0,0);
+ S.Cond:=CreateIdent('a');
+ C:=S.Cases.AddCase;
+ C.Body:=TJSEmptyBlockStatement.Create(0,0);;
+ C.Expr:=CreateIdent('c');
+ C:=S.Cases.AddCase;
+ C.Body:=TJSEmptyBlockStatement.Create(0,0);;
+ C.Expr:=CreateIdent('d');
+ C:=S.Cases.AddCase;
+ C.Body:=TJSEmptyBlockStatement.Create(0,0);;
+ S.TheDefault:=C;
+ AssertWrite('switch ','switch (a) {case c: {}case d: {}default: {}}',S);
+end;
+
+Procedure TTestStatementWriter.TestSwitchStatementTwoElementsOneEmpty;
+Var
+ S : TJSSwitchStatement;
+ C : TJSCaseElement;
+begin
+ S:=TJSSwitchStatement.Create(0,0);
+ S.Cond:=CreateIdent('a');
+ C:=S.Cases.AddCase;
+ C.Expr:=CreateIdent('c');
+ C:=S.Cases.AddCase;
+ C.Body:=TJSEmptyBlockStatement.Create(0,0);;
+ C.Expr:=CreateIdent('d');
+ C:=S.Cases.AddCase;
+ C.Body:=TJSEmptyBlockStatement.Create(0,0);;
+ S.TheDefault:=C;
+ AssertWrite('switch ','switch (a) {'+sLineBreak+'case c:'+sLineBreak+'case d:'+sLineBreak+'{'+sLineBreak+'}'+sLineBreak+'default:'+sLineBreak+'{'+sLineBreak+'}'+sLineBreak+'}',S);
+end;
+
+Procedure TTestStatementWriter.TestSwitchStatementTwoElementsOneEmptyCompact;
+Var
+ S : TJSSwitchStatement;
+ C : TJSCaseElement;
+begin
+ Writer.Options:=[woCompact,woUseUTF8];
+ S:=TJSSwitchStatement.Create(0,0);
+ S.Cond:=CreateIdent('a');
+ C:=S.Cases.AddCase;
+ C.Expr:=CreateIdent('c');
+ C:=S.Cases.AddCase;
+ C.Body:=TJSEmptyBlockStatement.Create(0,0);;
+ C.Expr:=CreateIdent('d');
+ C:=S.Cases.AddCase;
+ C.Body:=TJSEmptyBlockStatement.Create(0,0);;
+ S.TheDefault:=C;
+ AssertWrite('switch ','switch (a) {case c: case d: {}default: {}}',S);
+end;
+
+Procedure TTestStatementWriter.TestIfThen;
+Var
+ S : TJSIfStatement;
+
+begin
+// Writer.Options:=[woCompact,woUseUTF8];
+ S:=TJSIfStatement.Create(0,0);
+ S.Cond:=CreateIdent('a');
+ S.btrue:=TJSEmptyBlockStatement.Create(0,0);
+ AssertWrite('if then','if (a) {'+sLineBreak+'}',S);
+end;
+
+Procedure TTestStatementWriter.TestIfThenElse;
+Var
+ S : TJSIfStatement;
+
+begin
+// Writer.Options:=[woCompact,woUseUTF8];
+ S:=TJSIfStatement.Create(0,0);
+ S.Cond:=CreateIdent('a');
+ S.btrue:=TJSEmptyBlockStatement.Create(0,0);
+ S.bfalse:=TJSEmptyBlockStatement.Create(0,0);
+ AssertWrite('if then','if (a) {'+sLineBreak+'} else {'+sLineBreak+'}',S);
+end;
+
+Procedure TTestStatementWriter.TestStatementListEmpty;
+Var
+ S : TJSStatementList;
+
+begin
+// Writer.Options:=[woCompact,woUseUTF8];
+ S:=TJSStatementList.Create(0,0);
+ AssertWrite('Statement list','{'+sLineBreak+'}'+sLineBreak,S);
+end;
+
+Procedure TTestStatementWriter.TestStatementListEmptyCompact;
+Var
+ S : TJSStatementList;
+
+begin
+ Writer.Options:=[woCompact,woUseUTF8];
+ S:=TJSStatementList.Create(0,0);
+ AssertWrite('Statement list','{}',S);
+end;
+
+Procedure TTestStatementWriter.TestStatementListOneStatement;
+Var
+ S : TJSStatementList;
+
+begin
+// Writer.Options:=[woCompact,woUseUTF8];
+ S:=TJSStatementList.Create(0,0);
+ S.A:=CreateAssignment(nil);
+ AssertWrite('Statement list','{'+sLineBreak+'a = b;'+sLineBreak+'}'+sLineBreak,S);
+end;
+
+Procedure TTestStatementWriter.TestStatementListOneStatementCompact;
+
+Var
+ S : TJSStatementList;
+
+begin
+ Writer.Options:=[woCompact,woUseUTF8];
+ S:=TJSStatementList.Create(0,0);
+ S.A:=CreateAssignment(nil);
+ AssertWrite('Statement list','{a=b}',S);
+end;
+
+Procedure TTestStatementWriter.TestStatementListTwoStatements;
+Var
+ S : TJSStatementList;
+
+begin
+// Writer.Options:=[woCompact,woUseUTF8];
+ S:=TJSStatementList.Create(0,0);
+ S.A:=CreateAssignment(nil);
+ S.B:=CreateAssignment(nil);
+ AssertWrite('Statement list','{'+sLineBreak+'a = b;'+sLineBreak+'a = b;'+sLineBreak+'}'+sLineBreak,S);
+end;
+
+Procedure TTestStatementWriter.TestStatementListTwoStatementsCompact;
+Var
+ S : TJSStatementList;
+
+begin
+ Writer.Options:=[woCompact,woUseUTF8];
+ S:=TJSStatementList.Create(0,0);
+ S.A:=CreateAssignment(nil);
+ S.B:=CreateAssignment(nil);
+ AssertWrite('Statement list','{a=b; a=b}',S);
+end;
+
+Procedure TTestStatementWriter.TestEmptyFunctionDef;
+
+Var
+ FD : TJSFunctionDeclarationStatement;
+
+begin
+ FD:=TJSFunctionDeclarationStatement.Create(0,0);
+ FD.AFunction:=TJSFuncDef.Create;
+ FD.AFunction.Name:='a';
+ AssertWrite('Empty function','function a() {'+sLineBreak+'}'+sLineBreak,FD);
+end;
+
+Procedure TTestStatementWriter.TestEmptyFunctionDefCompact;
+
+Var
+ FD : TJSFunctionDeclarationStatement;
+
+begin
+ Writer.Options:=[woCompact,woUseUTF8];
+ FD:=TJSFunctionDeclarationStatement.Create(0,0);
+ FD.AFunction:=TJSFuncDef.Create;
+ FD.AFunction.Name:='a';
+ AssertWrite('Empty function, compact','function a() {}',FD);
+end;
+
+Procedure TTestStatementWriter.TestFunctionDefParams;
+Var
+ FD : TJSFunctionDeclarationStatement;
+
+begin
+// Writer.Options:=[woCompact,woUseUTF8];
+ FD:=TJSFunctionDeclarationStatement.Create(0,0);
+ FD.AFunction:=TJSFuncDef.Create;
+ FD.AFunction.Name:='a';
+ FD.AFunction.Params.Add('b');
+ FD.AFunction.Params.Add('c');
+ FD.AFunction.Params.Add('d');
+
+ AssertWrite('Empty function, 3 params','function a(b, c, d) {'+sLineBreak+'}'+sLineBreak,FD);
+end;
+
+Procedure TTestStatementWriter.TestFunctionDefParamsCompact;
+
+Var
+ FD : TJSFunctionDeclarationStatement;
+
+begin
+ Writer.Options:=[woCompact,woUseUTF8];
+ FD:=TJSFunctionDeclarationStatement.Create(0,0);
+ FD.AFunction:=TJSFuncDef.Create;
+ FD.AFunction.Name:='a';
+ FD.AFunction.Params.Add('b');
+ FD.AFunction.Params.Add('c');
+ FD.AFunction.Params.Add('d');
+ AssertWrite('Empty function, 3 params, compact','function a(b,c,d) {}',FD);
+end;
+
+Procedure TTestStatementWriter.TestFunctionDefBody1;
+
+Var
+ FD : TJSFunctionDeclarationStatement;
+ R : TJSReturnStatement;
+
+begin
+ Writer.IndentSize:=2;
+ // Writer.Options:=[woCompact,woUseUTF8];
+ FD:=TJSFunctionDeclarationStatement.Create(0,0);
+ FD.AFunction:=TJSFuncDef.Create;
+ FD.AFunction.Name:='a';
+ FD.AFunction.Body:=TJSFunctionBody.Create(0,0);
+ R:=TJSReturnStatement.Create(0,0);
+ R.Expr:=CreateLiteral(0);
+ FD.AFunction.Body.A:=R;
+ AssertWrite('1 statement, ','function a() {'+sLineBreak+' return 0;'+sLineBreak+'}'+sLineBreak,FD);
+end;
+
+Procedure TTestStatementWriter.TestFunctionDefBody1Compact;
+Var
+ FD : TJSFunctionDeclarationStatement;
+ R : TJSReturnStatement;
+
+begin
+ Writer.IndentSize:=2;
+ Writer.Options:=[woCompact,woUseUTF8];
+ FD:=TJSFunctionDeclarationStatement.Create(0,0);
+ FD.AFunction:=TJSFuncDef.Create;
+ FD.AFunction.Name:='a';
+ FD.AFunction.Body:=TJSFunctionBody.Create(0,0);
+ R:=TJSReturnStatement.Create(0,0);
+ R.Expr:=CreateLiteral(0);
+ FD.AFunction.Body.A:=R;
+ AssertWrite('1 statement, compact','function a() {return 0; }',FD);
+end;
+
+Procedure TTestStatementWriter.TestFunctionDefBody2;
+Var
+ FD : TJSFunctionDeclarationStatement;
+ R : TJSReturnStatement;
+ L : TJSStatementList;
+ A : TJSAssignStatement;
+ M : TJSMultiplicativeExpressionMul;
+
+begin
+ Writer.IndentSize:=2;
+// Writer.Options:=[woCompact,woUseUTF8];
+ FD:=TJSFunctionDeclarationStatement.Create(0,0);
+ FD.AFunction:=TJSFuncDef.Create;
+ FD.AFunction.Name:='a';
+ FD.AFunction.Body:=TJSFunctionBody.Create(0,0);
+ FD.AFunction.Params.Add('b');
+ R:=TJSReturnStatement.Create(0,0);
+ R.Expr:=CreateIdent('b');
+ L:=TJSStatementList.Create(0,0);
+ A:=TJSSimpleAssignStatement.Create(0,0);
+ A.LHS:=CreateIdent('b');
+ M:=TJSMultiplicativeExpressionMul.Create(0,0);
+ M.A:=CreateIdent('b');
+ M.B:=CreateLiteral(10);
+ A.Expr:=M;
+ L.A:=A;
+ L.B:=R;
+ FD.AFunction.Body.A:=L;
+ AssertWrite('Function, 2 statements','function a(b) {'+sLineBreak+' b = (b * 10);'+sLineBreak+' return b;'+sLineBreak+'}'+sLineBreak,FD);
+end;
+
+Procedure TTestStatementWriter.TestFunctionDefBody2Compact;
+Var
+ FD : TJSFunctionDeclarationStatement;
+ R : TJSReturnStatement;
+ L : TJSStatementList;
+ A : TJSAssignStatement;
+ M : TJSMultiplicativeExpressionMul;
+
+begin
+ Writer.IndentSize:=2;
+ Writer.Options:=[woCompact,woUseUTF8];
+ FD:=TJSFunctionDeclarationStatement.Create(0,0);
+ FD.AFunction:=TJSFuncDef.Create;
+ FD.AFunction.Name:='a';
+ FD.AFunction.Body:=TJSFunctionBody.Create(0,0);
+ FD.AFunction.Params.Add('b');
+ R:=TJSReturnStatement.Create(0,0);
+ R.Expr:=CreateIdent('b');
+ L:=TJSStatementList.Create(0,0);
+ A:=TJSSimpleAssignStatement.Create(0,0);
+ A.LHS:=CreateIdent('b');
+ M:=TJSMultiplicativeExpressionMul.Create(0,0);
+ M.A:=CreateIdent('b');
+ M.B:=CreateLiteral(10);
+ A.Expr:=M;
+ L.A:=A;
+ L.B:=R;
+ FD.AFunction.Body.A:=L;
+ AssertWrite('Function, 2 statements, compact','function a(b) {b=(b*10); return b}',FD);
+end;
+
+Procedure TTestStatementWriter.TestTryCatch;
+
+Var
+ T : TJSTryCatchStatement;
+ A : TJSAssignStatement;
+ M : TJSMultiplicativeExpressionMul;
+
+begin
+ Writer.IndentSize:=2;
+ T:=TJSTryCatchStatement.Create(0,0);
+ T.Ident:='e';
+ A:=TJSSimpleAssignStatement.Create(0,0);
+ A.LHS:=CreateIdent('b');
+ M:=TJSMultiplicativeExpressionMul.Create(0,0);
+ M.A:=CreateIdent('b');
+ M.B:=CreateLiteral(10);
+ A.Expr:=M;
+ T.Block:=A;
+ A:=TJSSimpleAssignStatement.Create(0,0);
+ A.LHS:=CreateIdent('b');
+ A.Expr:=CreateLiteral(1);
+ T.BCatch:=A;
+ AssertWrite('Try catch','try {'+sLineBreak+' b = (b * 10)'+sLineBreak+'}'+sLineBreak+'catch (e) {'+sLineBreak+' b = 1'+sLineBreak+'}'+sLineBreak,T);
+end;
+
+Procedure TTestStatementWriter.TestTryCatchCompact;
+Var
+ T : TJSTryCatchStatement;
+ A : TJSAssignStatement;
+ M : TJSMultiplicativeExpressionMul;
+
+begin
+ Writer.IndentSize:=2;
+ Writer.Options:=[woCompact,woUseUTF8];
+ T:=TJSTryCatchStatement.Create(0,0);
+ T.Ident:='e';
+ A:=TJSSimpleAssignStatement.Create(0,0);
+ A.LHS:=CreateIdent('b');
+ M:=TJSMultiplicativeExpressionMul.Create(0,0);
+ M.A:=CreateIdent('b');
+ M.B:=CreateLiteral(10);
+ A.Expr:=M;
+ T.Block:=A;
+ A:=TJSSimpleAssignStatement.Create(0,0);
+ A.LHS:=CreateIdent('b');
+ A.Expr:=CreateLiteral(1);
+ T.BCatch:=A;
+ AssertWrite('Try catch compact','try {b=(b*10)} catch (e) {b=1}',T);
+end;
+
+Procedure TTestStatementWriter.TestTryFinally;
+
+Var
+ T : TJSTryFinallyStatement;
+ A : TJSAssignStatement;
+ M : TJSMultiplicativeExpressionMul;
+
+begin
+ Writer.IndentSize:=2;
+ T:=TJSTryFinallyStatement.Create(0,0);
+ T.Ident:='e';
+ A:=TJSSimpleAssignStatement.Create(0,0);
+ A.LHS:=CreateIdent('b');
+ M:=TJSMultiplicativeExpressionMul.Create(0,0);
+ M.A:=CreateIdent('b');
+ M.B:=CreateLiteral(10);
+ A.Expr:=M;
+ T.Block:=A;
+ A:=TJSSimpleAssignStatement.Create(0,0);
+ A.LHS:=CreateIdent('b');
+ A.Expr:=CreateLiteral(1);
+ T.BFinally:=A;
+ AssertWrite('Try finally ','try {'+sLineBreak+' b = (b * 10)'+sLineBreak+'}'+sLineBreak+'finally {'+sLineBreak+' b = 1'+sLineBreak+'}'+sLineBreak,T);
+end;
+
+Procedure TTestStatementWriter.TestTryFinallyCompact;
+
+Var
+ T : TJSTryFinallyStatement;
+ A : TJSAssignStatement;
+ M : TJSMultiplicativeExpressionMul;
+
+begin
+ Writer.IndentSize:=2;
+ Writer.Options:=[woCompact,woUseUTF8];
+ T:=TJSTryFinallyStatement.Create(0,0);
+ T.Ident:='e';
+ A:=TJSSimpleAssignStatement.Create(0,0);
+ A.LHS:=CreateIdent('b');
+ M:=TJSMultiplicativeExpressionMul.Create(0,0);
+ M.A:=CreateIdent('b');
+ M.B:=CreateLiteral(10);
+ A.Expr:=M;
+ T.Block:=A;
+ A:=TJSSimpleAssignStatement.Create(0,0);
+ A.LHS:=CreateIdent('b');
+ A.Expr:=CreateLiteral(1);
+ T.BFinally:=A;
+ AssertWrite('Try finally compact','try {b=(b*10)} finally {b=1}',T);
+end;
+
+Procedure TTestStatementWriter.TestTryCatchFinally;
+Var
+ T : TJSTryCatchFinallyStatement;
+ A : TJSAssignStatement;
+ M : TJSMultiplicativeExpressionMul;
+
+begin
+ Writer.IndentSize:=2;
+ T:=TJSTryCatchFinallyStatement.Create(0,0);
+ T.Ident:='e';
+ A:=TJSSimpleAssignStatement.Create(0,0);
+ A.LHS:=CreateIdent('b');
+ M:=TJSMultiplicativeExpressionMul.Create(0,0);
+ M.A:=CreateIdent('b');
+ M.B:=CreateLiteral(10);
+ A.Expr:=M;
+ T.Block:=A;
+ A:=TJSSimpleAssignStatement.Create(0,0);
+ A.LHS:=CreateIdent('b');
+ A.Expr:=CreateLiteral(10);
+ T.BCatch:=A;
+ A:=TJSSimpleAssignStatement.Create(0,0);
+ A.LHS:=CreateIdent('b');
+ A.Expr:=CreateLiteral(1);
+ T.BFinally:=A;
+ AssertWrite('Try finally ','try {'+sLineBreak+' b = (b * 10)'+sLineBreak+'}'+sLineBreak+'catch (e) {'+sLineBreak+' b = 10'+sLineBreak+'}'+sLineBreak+'finally {'+sLineBreak+' b = 1'+sLineBreak+'}'+sLineBreak,T);
+end;
+
+Procedure TTestStatementWriter.TestTryCatchFinallyCompact;
+Var
+ T : TJSTryCatchFinallyStatement;
+ A : TJSAssignStatement;
+ M : TJSMultiplicativeExpressionMul;
+
+begin
+ Writer.IndentSize:=2;
+ Writer.Options:=[woCompact,woUseUTF8];
+ T:=TJSTryCatchFinallyStatement.Create(0,0);
+ T.Ident:='e';
+ A:=TJSSimpleAssignStatement.Create(0,0);
+ A.LHS:=CreateIdent('b');
+ M:=TJSMultiplicativeExpressionMul.Create(0,0);
+ M.A:=CreateIdent('b');
+ M.B:=CreateLiteral(10);
+ A.Expr:=M;
+ T.Block:=A;
+ A:=TJSSimpleAssignStatement.Create(0,0);
+ A.LHS:=CreateIdent('b');
+ A.Expr:=CreateLiteral(10);
+ T.BCatch:=A;
+ A:=TJSSimpleAssignStatement.Create(0,0);
+ A.LHS:=CreateIdent('b');
+ A.Expr:=CreateLiteral(1);
+ T.BFinally:=A;
+ AssertWrite('Try finally ','try {b=(b*10)} catch (e) {b=10} finally {b=1}',T);
+end;
+
+Procedure TTestStatementWriter.TestWith;
+Var
+ T : TJSWithStatement;
+ A : TJSAssignStatement;
+ M : TJSMultiplicativeExpressionMul;
+
+begin
+ Writer.IndentSize:=2;
+// Writer.Options:=[woCompact,woUseUTF8];
+ T:=TJSWithStatement.Create(0,0);
+ T.A:=CreateIdent('e');
+ A:=TJSSimpleAssignStatement.Create(0,0);
+ A.LHS:=CreateIdent('b');
+ M:=TJSMultiplicativeExpressionMul.Create(0,0);
+ M.A:=CreateIdent('b');
+ M.B:=CreateLiteral(10);
+ A.Expr:=M;
+ T.B:=A;
+ AssertWrite('With statement ','with (e)'+slineBreak+' b = (b * 10)',T);
+end;
+
+Procedure TTestStatementWriter.TestWithCompact;
+Var
+ T : TJSWithStatement;
+ A : TJSAssignStatement;
+ M : TJSMultiplicativeExpressionMul;
+
+begin
+ Writer.IndentSize:=2;
+ Writer.Options:=[woCompact,woUseUTF8];
+ T:=TJSWithStatement.Create(0,0);
+ T.A:=CreateIdent('e');
+ A:=TJSSimpleAssignStatement.Create(0,0);
+ A.LHS:=CreateIdent('b');
+ M:=TJSMultiplicativeExpressionMul.Create(0,0);
+ M.A:=CreateIdent('b');
+ M.B:=CreateLiteral(10);
+ A.Expr:=M;
+ T.B:=A;
+ AssertWrite('With statement ','with (e) b=(b*10)',T);
+end;
+
+Procedure TTestStatementWriter.TestSourceElements;
+Var
+ T : TJSSourceElements;
+ A : TJSAssignStatement;
+ M : TJSMultiplicativeExpressionMul;
+
+begin
+ Writer.IndentSize:=2;
+ // Writer.Options:=[woCompact,woUseUTF8];
+ T:=TJSSourceElements.Create(0,0);
+ A:=TJSSimpleAssignStatement.Create(0,0);
+ A.LHS:=CreateIdent('b');
+ M:=TJSMultiplicativeExpressionMul.Create(0,0);
+ M.A:=CreateIdent('b');
+ M.B:=CreateLiteral(10);
+ A.Expr:=M;
+ T.Statements.AddNode.Node:=A;
+ A:=TJSSimpleAssignStatement.Create(0,0);
+ A.LHS:=CreateIdent('c');
+ M:=TJSMultiplicativeExpressionMul.Create(0,0);
+ M.A:=CreateIdent('c');
+ M.B:=CreateLiteral(2);
+ A.Expr:=M;
+ T.Statements.AddNode.Node:=A;
+ AssertWrite('Statement lists ','b = (b * 10);'+sLineBreak+'c = (c * 2);'+sLineBreak,T);
+end;
+
+Procedure TTestStatementWriter.TestSourceElementsCompact;
+Var
+ T : TJSSourceElements;
+ A : TJSAssignStatement;
+ M : TJSMultiplicativeExpressionMul;
+
+begin
+ Writer.IndentSize:=2;
+ Writer.Options:=[woCompact,woUseUTF8];
+ T:=TJSSourceElements.Create(0,0);
+ A:=TJSSimpleAssignStatement.Create(0,0);
+ A.LHS:=CreateIdent('b');
+ M:=TJSMultiplicativeExpressionMul.Create(0,0);
+ M.A:=CreateIdent('b');
+ M.B:=CreateLiteral(10);
+ A.Expr:=M;
+ T.Statements.AddNode.Node:=A;
+ A:=TJSSimpleAssignStatement.Create(0,0);
+ A.LHS:=CreateIdent('c');
+ M:=TJSMultiplicativeExpressionMul.Create(0,0);
+ M.A:=CreateIdent('c');
+ M.B:=CreateLiteral(2);
+ A.Expr:=M;
+ T.Statements.AddNode.Node:=A;
+ AssertWrite('Statement lists compact','b=(b*10); c=(c*2);',T);
+end;
+
+{ ---------------------------------------------------------------------
+ TTestLiteralWriter
+ ---------------------------------------------------------------------}
+
+Procedure TTestLiteralWriter.TestInteger;
+
+begin
+ AssertWrite('1','1',CreateLiteral(1));
+end;
+
+Procedure TTestLiteralWriter.TestBooleanTrue;
+
+Var
+ L : TJSLiteral;
+begin
+ L:=TJSLiteral.Create(0,0,'');
+ L.Value.Asboolean:=True;
+ AssertWrite('true','true',L);
+end;
+
+Procedure TTestLiteralWriter.TestBooleanFalse;
+Var
+ L : TJSLiteral;
+begin
+ L:=TJSLiteral.Create(0,0,'');
+ L.Value.Asboolean:=False;
+ AssertWrite('false','false',L);
+end;
+
+Procedure TTestLiteralWriter.TestUndefined;
+Var
+ L : TJSLiteral;
+begin
+ L:=TJSLiteral.Create(0,0,'');
+ AssertWrite('undefined','undefined',L);
+end;
+
+Procedure TTestLiteralWriter.TestNull;
+
+Var
+ L : TJSLiteral;
+begin
+ L:=TJSLiteral.Create(0,0,'');
+ L.Value.IsNull:=True;
+ AssertWrite('null','null',L);
+end;
+
+Procedure TTestLiteralWriter.TestString;
+Var
+ L : TJSLiteral;
+begin
+ L:=TJSLiteral.Create(0,0,'');
+ L.Value.AsString:='abcd';
+ AssertWrite('abcd','"abcd"',L);
+end;
+
+Procedure TTestLiteralWriter.TestStringQuote;
+Var
+ L : TJSLiteral;
+begin
+ L:=TJSLiteral.Create(0,0,'');
+ L.Value.AsString:='ab"cd';
+ AssertWrite('ab"cd','"ab\"cd"',L);
+end;
+
+Procedure TTestLiteralWriter.TestStringBackslash;
+Var
+ L : TJSLiteral;
+begin
+ L:=TJSLiteral.Create(0,0,'');
+ L.Value.AsString:='ab\cd';
+ AssertWrite('ab\cd','"ab\\cd"',L);
+end;
+
+Procedure TTestLiteralWriter.TestStringslash;
+Var
+ L : TJSLiteral;
+begin
+ L:=TJSLiteral.Create(0,0,'');
+ L.Value.AsString:='ab/cd';
+ AssertWrite('ab/cd','"ab\/cd"',L);
+end;
+
+Procedure TTestLiteralWriter.TestStringsBack;
+Var
+ L : TJSLiteral;
+begin
+ L:=TJSLiteral.Create(0,0,'');
+ L.Value.AsString:='ab'#8'cd';
+ AssertWrite('ab'#8'cd','"ab\bcd"',L);
+end;
+
+Procedure TTestLiteralWriter.TestStringsTab;
+Var
+ L : TJSLiteral;
+begin
+ L:=TJSLiteral.Create(0,0,'');
+ L.Value.AsString:='ab'#9'cd';
+ AssertWrite('ab'#9'cd','"ab\tcd"',L);
+end;
+
+Procedure TTestLiteralWriter.TestStringsLineFeed;
+Var
+ L : TJSLiteral;
+begin
+ L:=TJSLiteral.Create(0,0,'');
+ L.Value.AsString:='ab'#10'cd';
+ AssertWrite('ab'#10'cd','"ab\ncd"',L);
+end;
+
+Procedure TTestLiteralWriter.TestStringsFormFeed;
+Var
+ L : TJSLiteral;
+begin
+ L:=TJSLiteral.Create(0,0,'');
+ L.Value.AsString:='ab'#12'cd';
+ AssertWrite('ab'#12'cd','"ab\fcd"',L);
+end;
+
+Procedure TTestLiteralWriter.TestStringsCarriageReturn;
+Var
+ L : TJSLiteral;
+begin
+ L:=TJSLiteral.Create(0,0,'');
+ L.Value.AsString:='ab'#13'cd';
+ AssertWrite('ab'#13'cd','"ab\rcd"',L);
+end;
+
+Procedure TTestLiteralWriter.TestArrayEmpty;
+
+Var
+ L : TJSArrayLiteral;
+
+begin
+ L:=TJSArrayLiteral.Create(0,0);
+ AssertWrite('Empty array ','[]',L); // Always
+end;
+
+Procedure TTestLiteralWriter.TestArrayEmptyCompact;
+Var
+ L : TJSArrayLiteral;
+
+begin
+ Writer.Options:=[woCompact,woUseUTF8];
+ L:=TJSArrayLiteral.Create(0,0);
+ AssertWrite('Empty array ','[]',L);
+end;
+
+Procedure TTestLiteralWriter.TestArrayOneElement;
+Var
+ L : TJSArrayLiteral;
+ I : TJSLiteral;
+
+begin
+ L:=TJSArrayLiteral.Create(0,0);
+ I:=TJSLiteral.Create(0,0);
+ I.Value.AsNumber:=1;
+ L.Elements.AddElement.Expr:=I;
+ AssertWrite('Empty array ','['+sLineBreak+'1'+sLineBreak+']',L);
+end;
+
+Procedure TTestLiteralWriter.TestArrayOneElementCompact;
+
+Var
+ L : TJSArrayLiteral;
+ I : TJSLiteral;
+
+begin
+ Writer.Options:=[woCompact,woUseUTF8];
+ L:=TJSArrayLiteral.Create(0,0);
+ I:=TJSLiteral.Create(0,0);
+ I.Value.AsNumber:=1;
+ L.Elements.AddElement.Expr:=I;
+ AssertWrite('Empty array ','[1]',L);
+end;
+
+Procedure TTestLiteralWriter.TestArrayOneElementIndent;
+Var
+ L : TJSArrayLiteral;
+ I : TJSLiteral;
+
+begin
+ Writer.IndentSize:=2;
+ L:=TJSArrayLiteral.Create(0,0);
+ I:=TJSLiteral.Create(0,0);
+ I.Value.AsNumber:=1;
+ L.Elements.AddElement.Expr:=I;
+ AssertWrite('Empty array ','['+sLineBreak+' 1'+sLineBreak+']',L);
+end;
+
+Procedure TTestLiteralWriter.TestArrayTwoElements;
+
+Var
+ L : TJSArrayLiteral;
+ I : TJSLiteral;
+
+begin
+ L:=TJSArrayLiteral.Create(0,0);
+ I:=TJSLiteral.Create(0,0);
+ I.Value.AsNumber:=1;
+ L.Elements.AddElement.Expr:=I;
+ I:=TJSLiteral.Create(0,0);
+ I.Value.AsNumber:=2;
+ L.Elements.AddElement.Expr:=I;
+ AssertWrite('Empty array ','['+sLineBreak+'1,'+sLineBreak+'2'+sLineBreak+']',L);
+end;
+
+Procedure TTestLiteralWriter.TestArrayTwoElementsCompact;
+Var
+ L : TJSArrayLiteral;
+ I : TJSLiteral;
+
+begin
+ Writer.Options:=[woCompact,woUseUTF8];
+ L:=TJSArrayLiteral.Create(0,0);
+ I:=TJSLiteral.Create(0,0);
+ I.Value.AsNumber:=1;
+ L.Elements.AddElement.Expr:=I;
+ I:=TJSLiteral.Create(0,0);
+ I.Value.AsNumber:=2;
+ L.Elements.AddElement.Expr:=I;
+ AssertWrite('Empty array ','[1, 2]',L);
+end;
+
+Procedure TTestLiteralWriter.TestArrayTwoElementsCompact2;
+Var
+ L : TJSArrayLiteral;
+ I : TJSLiteral;
+
+begin
+ Writer.Options:=[woCompactArrayLiterals,woUseUTF8];
+ L:=TJSArrayLiteral.Create(0,0);
+ I:=TJSLiteral.Create(0,0);
+ I.Value.AsNumber:=1;
+ L.Elements.AddElement.Expr:=I;
+ I:=TJSLiteral.Create(0,0);
+ I.Value.AsNumber:=2;
+ L.Elements.AddElement.Expr:=I;
+ AssertWrite('Empty array ','[1, 2]',L);
+end;
+
+Procedure TTestLiteralWriter.TestArrayThreeElementsCompact;
+Var
+ L : TJSArrayLiteral;
+ I : TJSLiteral;
+
+begin
+ Writer.Options:=[woCompact,woUseUTF8];
+ L:=TJSArrayLiteral.Create(0,0);
+ I:=TJSLiteral.Create(0,0);
+ I.Value.AsNumber:=1;
+ L.Elements.AddElement.Expr:=I;
+ I:=TJSLiteral.Create(0,0);
+ I.Value.AsNumber:=2;
+ L.Elements.AddElement.Expr:=I;
+ I:=TJSLiteral.Create(0,0);
+ I.Value.AsNumber:=3;
+ L.Elements.AddElement.Expr:=I;
+ AssertWrite('Empty array ','[1, 2, 3]',L);
+end;
+
+Procedure TTestLiteralWriter.TestObjectEmpty;
+
+Var
+ L : TJSObjectLiteral;
+
+begin
+ L:=TJSObjectLiteral.Create(0,0);
+ AssertWrite('Empty object ','{}',L); // Always
+end;
+
+Procedure TTestLiteralWriter.TestObjectEmptyCompact;
+Var
+ L : TJSObjectLiteral;
+
+begin
+ Writer.Options:=[woCompact,woUseUTF8];
+ L:=TJSObjectLiteral.Create(0,0);
+ AssertWrite('Empty object ','{}',L); // Always
+end;
+
+Procedure TTestLiteralWriter.TestObjectOneElement;
+
+Var
+ L : TJSObjectLiteral;
+ E : TJSObjectLiteralElement;
+ I : TJSLiteral;
+
+begin
+ L:=TJSObjectLiteral.Create(0,0);
+ E:=L.Elements.AddElement;
+ I:=TJSLiteral.Create(0,0);
+ I.Value.AsNumber:=1;
+ E.Expr:=I;
+ E.Name:='abc';
+ AssertWrite('Empty object ','{'+slineBreak+'abc: 1'+sLineBreak+'}',L);
+end;
+
+Procedure TTestLiteralWriter.TestObjectOneElementCompact;
+
+Var
+ L : TJSObjectLiteral;
+ E : TJSObjectLiteralElement;
+ I : TJSLiteral;
+
+begin
+ L:=TJSObjectLiteral.Create(0,0);
+ E:=L.Elements.AddElement;
+ I:=TJSLiteral.Create(0,0);
+ I.Value.AsNumber:=1;
+ E.Expr:=I;
+ E.Name:='abc';
+ Writer.Options:=[woCompact,woUseUTF8];
+ AssertWrite('Empty object ','{abc: 1}',L);
+end;
+
+Procedure TTestLiteralWriter.TestObjectOneElementIndent;
+
+Var
+ L : TJSObjectLiteral;
+ E : TJSObjectLiteralElement;
+ I : TJSLiteral;
+begin
+ L:=TJSObjectLiteral.Create(0,0);
+ E:=L.Elements.AddElement;
+ I:=TJSLiteral.Create(0,0);
+ I.Value.AsNumber:=1;
+ E.Expr:=I;
+ E.Name:='abc';
+ Writer.IndentSize:=2;
+ AssertWrite('Empty object ','{'+slineBreak+' abc: 1'+sLineBreak+'}',L);
+end;
+
+Procedure TTestLiteralWriter.TestObjectOneElementCompactQuoted;
+Var
+ L : TJSObjectLiteral;
+ E : TJSObjectLiteralElement;
+ I : TJSLiteral;
+
+begin
+ L:=TJSObjectLiteral.Create(0,0);
+ E:=L.Elements.AddElement;
+ I:=TJSLiteral.Create(0,0);
+ I.Value.AsNumber:=1;
+ E.Expr:=I;
+ E.Name:='abc';
+ Writer.Options:=[woCompact,woUseUTF8,woQuoteElementNames];
+ AssertWrite('Empty object ','{"abc": 1}',L);
+end;
+
+Procedure TTestLiteralWriter.TestObjectTwoElements;
+Var
+ L : TJSObjectLiteral;
+ E : TJSObjectLiteralElement;
+ I : TJSLiteral;
+
+begin
+ L:=TJSObjectLiteral.Create(0,0);
+ E:=L.Elements.AddElement;
+ I:=TJSLiteral.Create(0,0);
+ I.Value.AsNumber:=1;
+ E.Expr:=I;
+ E.Name:='abc';
+ E:=L.Elements.AddElement;
+ I:=TJSLiteral.Create(0,0);
+ I.Value.AsNumber:=2;
+ E.Expr:=I;
+ E.Name:='efg';
+ AssertWrite('Empty object ','{'+slineBreak+'abc: 1,'+sLineBreak+'efg: 2'+slineBreak+'}',L);
+end;
+
+Procedure TTestLiteralWriter.TestObjectTwoElementCompact;
+
+Var
+ L : TJSObjectLiteral;
+ E : TJSObjectLiteralElement;
+ I : TJSLiteral;
+
+begin
+ L:=TJSObjectLiteral.Create(0,0);
+ E:=L.Elements.AddElement;
+ I:=TJSLiteral.Create(0,0);
+ I.Value.AsNumber:=1;
+ E.Expr:=I;
+ E.Name:='abc';
+ E:=L.Elements.AddElement;
+ I:=TJSLiteral.Create(0,0);
+ I.Value.AsNumber:=2;
+ E.Expr:=I;
+ E.Name:='efg';
+ Writer.Options:=[woCompact,woUseUTF8];
+ AssertWrite('Empty object ','{abc: 1, efg: 2}',L);
+end;
+
+Procedure TTestLiteralWriter.TestObjectTwoElementCompact2;
+Var
+ L : TJSObjectLiteral;
+ E : TJSObjectLiteralElement;
+ I : TJSLiteral;
+
+begin
+ L:=TJSObjectLiteral.Create(0,0);
+ E:=L.Elements.AddElement;
+ I:=TJSLiteral.Create(0,0);
+ I.Value.AsNumber:=1;
+ E.Expr:=I;
+ E.Name:='abc';
+ E:=L.Elements.AddElement;
+ I:=TJSLiteral.Create(0,0);
+ I.Value.AsNumber:=2;
+ E.Expr:=I;
+ E.Name:='efg';
+ Writer.Options:=[woCompactObjectLiterals,woUseUTF8];
+ AssertWrite('Empty object ','{abc: 1, efg: 2}',L);
+end;
+
+Procedure TTestLiteralWriter.TestObjectTwoElementCompactQuoted;
+Var
+ L : TJSObjectLiteral;
+ E : TJSObjectLiteralElement;
+ I : TJSLiteral;
+
+begin
+ L:=TJSObjectLiteral.Create(0,0);
+ E:=L.Elements.AddElement;
+ I:=TJSLiteral.Create(0,0);
+ I.Value.AsNumber:=1;
+ E.Expr:=I;
+ E.Name:='abc';
+ E:=L.Elements.AddElement;
+ I:=TJSLiteral.Create(0,0);
+ I.Value.AsNumber:=2;
+ E.Expr:=I;
+ E.Name:='efg';
+ Writer.Options:=[woCompact,woUseUTF8,woQuoteElementNames];
+ AssertWrite('Empty object ','{"abc": 1, "efg": 2}',L);
+end;
+
+Procedure TTestLiteralWriter.TestObjectThreeElementsCompact;
+Var
+ L : TJSObjectLiteral;
+ E : TJSObjectLiteralElement;
+ I : TJSLiteral;
+
+begin
+ L:=TJSObjectLiteral.Create(0,0);
+ E:=L.Elements.AddElement;
+ I:=TJSLiteral.Create(0,0);
+ I.Value.AsNumber:=1;
+ E.Expr:=I;
+ E.Name:='abc';
+ E:=L.Elements.AddElement;
+ I:=TJSLiteral.Create(0,0);
+ I.Value.AsNumber:=2;
+ E.Expr:=I;
+ E.Name:='efg';
+ E:=L.Elements.AddElement;
+ I:=TJSLiteral.Create(0,0);
+ I.Value.AsNumber:=3;
+ E.Expr:=I;
+ E.Name:='hij';
+ Writer.Options:=[woCompact,woUseUTF8];
+ AssertWrite('Empty object ','{abc: 1, efg: 2, hij: 3}',L);
+end;
+
+{ ---------------------------------------------------------------------
+ TTestJSWriter
+ ---------------------------------------------------------------------}
+
+procedure TTestJSWriter.SetUp;
+begin
+ FTextWriter:=TBufferWriter.Create(120);
+ FWriter:=TJSWriter.Create(FTextWriter);
+end;
+
+procedure TTestJSWriter.TearDown;
+begin
+ FreeAndNil(FWriter);
+ FreeAndNil(FTextWriter);
+ FreeAndNil(FElement);
+end;
+
+Procedure TTestJSWriter.WriteElement(JS: TJSElement);
+begin
+ FElement:=JS;
+ FWriter.WriteJS(JS);
+end;
+
+Procedure TTestJSWriter.AssertResult(Const Msg, Result: String);
+
+Var
+ S : AnsiString;
+begin
+ S:=FTextWriter.AsAnsistring;
+ AssertEquals(Msg,Result,S);
+end;
+
+Procedure TTestJSWriter.AssertResult(Const Msg: string; Result: UnicodeString);
+
+Var
+ S : UnicodeString;
+begin
+ S:=FTextWriter.AsUnicodeString;
+ AssertEquals(Msg,Result,S);
+end;
+
+Procedure TTestJSWriter.AssertWrite(Const Msg, Result: String;
+ AElement: TJSElement);
+begin
+ WriteElement(AElement);
+ AssertResult(Msg,Result);
+end;
+
+Procedure TTestJSWriter.AssertWrite(Const Msg: string; Result: UnicodeString;
+ AElement: TJSElement);
+begin
+ WriteElement(AElement);
+ AssertResult(Msg,Result);
+end;
+
+Function TTestJSWriter.CreateIdent(Const AName: String): TJSPrimaryExpressionIdent;
+begin
+ Result:=TJSPrimaryExpressionIdent.Create(0,0);
+ Result.Name:=AName;
+end;
+
+Function TTestJSWriter.CreateLiteral(Const AValue: TJSString): TJSLiteral;
+begin
+ Result:=TJSLiteral.Create(0,0);
+ Result.Value.AsString:=Avalue;
+end;
+
+Function TTestJSWriter.CreateLiteral(Const AValue: Integer): TJSLiteral;
+begin
+ Result:=TJSLiteral.Create(0,0);
+ Result.Value.AsNumber:=Avalue;
+end;
+
+Function TTestJSWriter.CreateLiteral(Const AValue: Boolean): TJSLiteral;
+begin
+ Result:=TJSLiteral.Create(0,0);
+ Result.Value.AsBoolean:=Avalue;
+end;
+
+{ ---------------------------------------------------------------------
+ TTestTestJSWriter
+ ---------------------------------------------------------------------}
+
+procedure TTestTestJSWriter.TestEmpty;
+begin
+ AssertNotNull('Have text writer',TextWriter);
+ AssertNotNull('Have JS writer',Writer);
+ AssertNull('Have no element',Element);
+ AssertSame('Correct text writer for js writer',TextWriter,Writer.Writer);
+ AssertEquals('No indent',0,Writer.IndentSize);
+ if not (Writer.Options=[woUseUTF8]) then
+ Fail('Options are not using UTF8');
+end;
+
+
+Initialization
+
+ RegisterTests([TTestTestJSWriter,TTestLiteralWriter,TTestExpressionWriter,TTestStatementWriter]);
+end.
+
diff --git a/packages/fcl-js/tests/testjs.lpi b/packages/fcl-js/tests/testjs.lpi
index 89a707bd17..8f5b6bda2b 100644
--- a/packages/fcl-js/tests/testjs.lpi
+++ b/packages/fcl-js/tests/testjs.lpi
@@ -1,19 +1,21 @@
-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8"?>
<CONFIG>
<ProjectOptions>
- <Version Value="7"/>
+ <Version Value="9"/>
<General>
<MainUnit Value="0"/>
- <TargetFileExt Value=""/>
- <Icon Value="0"/>
<UseXPManifest Value="True"/>
- <ActiveEditorIndexAtStart Value="1"/>
+ <Icon Value="0"/>
+ <ActiveWindowIndexAtStart Value="0"/>
</General>
<VersionInfo>
- <ProjectVersion Value=""/>
<Language Value=""/>
<CharSet Value=""/>
+ <StringTable ProductVersion=""/>
</VersionInfo>
+ <BuildModes Count="1">
+ <Item1 Name="default" Default="True"/>
+ </BuildModes>
<PublishOptions>
<Version Value="2"/>
<IgnoreBinaries Value="False"/>
@@ -23,228 +25,268 @@
<RunParams>
<local>
<FormatVersion Value="1"/>
- <CommandLineParams Value="-a --format=plain"/>
+ <CommandLineParams Value="--suite=TTestStatementWriter"/>
<LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
</local>
</RunParams>
- <RequiredPackages Count="2">
+ <RequiredPackages Count="1">
<Item1>
- <PackageName Value="FPCUnitConsoleRunner"/>
- </Item1>
- <Item2>
<PackageName Value="FCL"/>
- </Item2>
+ </Item1>
</RequiredPackages>
- <Units Count="7">
+ <Units Count="16">
<Unit0>
<Filename Value="testjs.lpr"/>
<IsPartOfProject Value="True"/>
<UnitName Value="testjs"/>
- <CursorPos X="11" Y="7"/>
+ <WindowIndex Value="1"/>
<TopLine Value="1"/>
- <EditorIndex Value="0"/>
+ <CursorPos X="48" Y="3"/>
<UsageCount Value="201"/>
- <Loaded Value="True"/>
</Unit0>
<Unit1>
<Filename Value="tcscanner.pp"/>
<IsPartOfProject Value="True"/>
<UnitName Value="tcscanner"/>
- <CursorPos X="27" Y="427"/>
- <TopLine Value="416"/>
- <EditorIndex Value="2"/>
+ <WindowIndex Value="1"/>
+ <TopLine Value="1"/>
+ <CursorPos X="17" Y="22"/>
<UsageCount Value="201"/>
- <Loaded Value="True"/>
</Unit1>
<Unit2>
<Filename Value="../src/jsbase.pp"/>
<IsPartOfProject Value="True"/>
<UnitName Value="jsbase"/>
- <CursorPos X="1" Y="153"/>
- <TopLine Value="132"/>
- <EditorIndex Value="1"/>
- <UsageCount Value="196"/>
- <Loaded Value="True"/>
+ <WindowIndex Value="1"/>
+ <TopLine Value="1"/>
+ <CursorPos X="1" Y="12"/>
+ <UsageCount Value="200"/>
</Unit2>
<Unit3>
<Filename Value="../src/jsparser.pp"/>
<IsPartOfProject Value="True"/>
<UnitName Value="jsparser"/>
- <CursorPos X="1" Y="1"/>
- <TopLine Value="1"/>
+ <EditorIndex Value="3"/>
+ <WindowIndex Value="1"/>
+ <TopLine Value="67"/>
+ <CursorPos X="14" Y="85"/>
<UsageCount Value="201"/>
+ <Loaded Value="True"/>
</Unit3>
<Unit4>
<Filename Value="../src/jsscanner.pp"/>
<IsPartOfProject Value="True"/>
<UnitName Value="JSScanner"/>
- <CursorPos X="1" Y="1"/>
- <TopLine Value="1"/>
+ <EditorIndex Value="6"/>
+ <WindowIndex Value="1"/>
+ <TopLine Value="342"/>
+ <CursorPos X="76" Y="345"/>
<UsageCount Value="201"/>
+ <Loaded Value="True"/>
</Unit4>
<Unit5>
<Filename Value="../src/jstree.pp"/>
<IsPartOfProject Value="True"/>
<UnitName Value="jstree"/>
- <CursorPos X="1" Y="1"/>
- <TopLine Value="1"/>
+ <EditorIndex Value="5"/>
+ <WindowIndex Value="1"/>
+ <TopLine Value="739"/>
+ <CursorPos X="3" Y="757"/>
<UsageCount Value="200"/>
+ <Loaded Value="True"/>
</Unit5>
<Unit6>
<Filename Value="tcparser.pp"/>
<IsPartOfProject Value="True"/>
<UnitName Value="tcparser"/>
- <CursorPos X="3" Y="2059"/>
- <TopLine Value="2051"/>
<EditorIndex Value="4"/>
- <UsageCount Value="97"/>
+ <WindowIndex Value="1"/>
+ <TopLine Value="1878"/>
+ <CursorPos X="3" Y="1883"/>
+ <UsageCount Value="201"/>
<Loaded Value="True"/>
</Unit6>
+ <Unit7>
+ <Filename Value="../src/jswriter.pp"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="jswriter"/>
+ <EditorIndex Value="0"/>
+ <WindowIndex Value="1"/>
+ <TopLine Value="8"/>
+ <CursorPos X="28" Y="15"/>
+ <UsageCount Value="202"/>
+ <Loaded Value="True"/>
+ </Unit7>
+ <Unit8>
+ <Filename Value="tctextwriter.pp"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="tctextwriter"/>
+ <WindowIndex Value="1"/>
+ <TopLine Value="4"/>
+ <CursorPos X="15" Y="22"/>
+ <UsageCount Value="201"/>
+ </Unit8>
+ <Unit9>
+ <Filename Value="../../../../../projects/lazarus/components/fpcunit/console/consoletestrunner.pas"/>
+ <UnitName Value="consoletestrunner"/>
+ <WindowIndex Value="1"/>
+ <TopLine Value="157"/>
+ <CursorPos X="1" Y="175"/>
+ <UsageCount Value="4"/>
+ </Unit9>
+ <Unit10>
+ <Filename Value="tcwriter.pp"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="tcwriter"/>
+ <IsVisibleTab Value="True"/>
+ <EditorIndex Value="2"/>
+ <WindowIndex Value="1"/>
+ <TopLine Value="668"/>
+ <CursorPos X="45" Y="698"/>
+ <UsageCount Value="220"/>
+ <Loaded Value="True"/>
+ </Unit10>
+ <Unit11>
+ <Filename Value="../../../../released/packages/fcl-json/src/fpjson.pp"/>
+ <UnitName Value="fpjson"/>
+ <WindowIndex Value="1"/>
+ <TopLine Value="558"/>
+ <CursorPos X="21" Y="580"/>
+ <UsageCount Value="61"/>
+ </Unit11>
+ <Unit12>
+ <Filename Value="../src/jstoken.pp"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="jstoken"/>
+ <EditorIndex Value="1"/>
+ <WindowIndex Value="1"/>
+ <TopLine Value="1"/>
+ <CursorPos X="18" Y="8"/>
+ <UsageCount Value="200"/>
+ <Loaded Value="True"/>
+ </Unit12>
+ <Unit13>
+ <Filename Value="../../../../released/packages/fcl-fpcunit/src/testregistry.pp"/>
+ <UnitName Value="testregistry"/>
+ <WindowIndex Value="1"/>
+ <TopLine Value="106"/>
+ <CursorPos X="22" Y="108"/>
+ <UsageCount Value="13"/>
+ </Unit13>
+ <Unit14>
+ <Filename Value="../../../rtl/tests/punit.pp"/>
+ <UnitName Value="punit"/>
+ <WindowIndex Value="1"/>
+ <TopLine Value="405"/>
+ <CursorPos X="41" Y="415"/>
+ <UsageCount Value="18"/>
+ </Unit14>
+ <Unit15>
+ <Filename Value="../../../../released/rtl/inc/mathh.inc"/>
+ <WindowIndex Value="1"/>
+ <TopLine Value="60"/>
+ <CursorPos X="14" Y="78"/>
+ <UsageCount Value="13"/>
+ </Unit15>
</Units>
- <JumpHistory Count="30" HistoryIndex="29">
+ <JumpHistory Count="6" HistoryIndex="5">
<Position1>
<Filename Value="tcparser.pp"/>
- <Caret Line="1752" Column="1" TopLine="1730"/>
+ <Caret Line="1" Column="1" TopLine="1"/>
</Position1>
<Position2>
<Filename Value="tcparser.pp"/>
- <Caret Line="1767" Column="32" TopLine="1733"/>
+ <Caret Line="1732" Column="55" TopLine="1713"/>
</Position2>
<Position3>
<Filename Value="tcparser.pp"/>
- <Caret Line="1790" Column="30" TopLine="1766"/>
+ <Caret Line="1883" Column="3" TopLine="1878"/>
</Position3>
<Position4>
- <Filename Value="tcparser.pp"/>
- <Caret Line="1763" Column="26" TopLine="1736"/>
+ <Filename Value="tcwriter.pp"/>
+ <Caret Line="66" Column="43" TopLine="51"/>
</Position4>
<Position5>
- <Filename Value="tcparser.pp"/>
- <Caret Line="1791" Column="1" TopLine="1758"/>
+ <Filename Value="tcwriter.pp"/>
+ <Caret Line="76" Column="43" TopLine="48"/>
</Position5>
<Position6>
- <Filename Value="tcparser.pp"/>
- <Caret Line="114" Column="30" TopLine="93"/>
+ <Filename Value="tcwriter.pp"/>
+ <Caret Line="251" Column="31" TopLine="232"/>
</Position6>
- <Position7>
- <Filename Value="tcparser.pp"/>
- <Caret Line="1806" Column="23" TopLine="1798"/>
- </Position7>
- <Position8>
- <Filename Value="tcparser.pp"/>
- <Caret Line="1828" Column="3" TopLine="1819"/>
- </Position8>
- <Position9>
- <Filename Value="../../../../source/fcl-js/jsparser.pp"/>
- <Caret Line="515" Column="28" TopLine="507"/>
- </Position9>
- <Position10>
- <Filename Value="tcparser.pp"/>
- <Caret Line="1824" Column="24" TopLine="1803"/>
- </Position10>
- <Position11>
- <Filename Value="tcparser.pp"/>
- <Caret Line="1828" Column="17" TopLine="1803"/>
- </Position11>
- <Position12>
- <Filename Value="tcparser.pp"/>
- <Caret Line="1849" Column="34" TopLine="1820"/>
- </Position12>
- <Position13>
- <Filename Value="tcparser.pp"/>
- <Caret Line="118" Column="27" TopLine="96"/>
- </Position13>
- <Position14>
- <Filename Value="tcparser.pp"/>
- <Caret Line="1900" Column="29" TopLine="1888"/>
- </Position14>
- <Position15>
- <Filename Value="tcparser.pp"/>
- <Caret Line="1898" Column="12" TopLine="1877"/>
- </Position15>
- <Position16>
- <Filename Value="tcparser.pp"/>
- <Caret Line="1904" Column="80" TopLine="1883"/>
- </Position16>
- <Position17>
- <Filename Value="tcparser.pp"/>
- <Caret Line="1914" Column="29" TopLine="1883"/>
- </Position17>
- <Position18>
- <Filename Value="tcparser.pp"/>
- <Caret Line="1948" Column="18" TopLine="1914"/>
- </Position18>
- <Position19>
- <Filename Value="tcparser.pp"/>
- <Caret Line="20" Column="1" TopLine="1"/>
- </Position19>
- <Position20>
- <Filename Value="tcparser.pp"/>
- <Caret Line="2165" Column="1" TopLine="2124"/>
- </Position20>
- <Position21>
- <Filename Value="tcparser.pp"/>
- <Caret Line="121" Column="27" TopLine="99"/>
- </Position21>
- <Position22>
- <Filename Value="tcparser.pp"/>
- <Caret Line="1969" Column="3" TopLine="1960"/>
- </Position22>
- <Position23>
- <Filename Value="tcparser.pp"/>
- <Caret Line="1971" Column="46" TopLine="1950"/>
- </Position23>
- <Position24>
- <Filename Value="tcparser.pp"/>
- <Caret Line="1986" Column="14" TopLine="1961"/>
- </Position24>
- <Position25>
- <Filename Value="tcparser.pp"/>
- <Caret Line="1993" Column="33" TopLine="1960"/>
- </Position25>
- <Position26>
- <Filename Value="../../../../source/fcl-js/jsparser.pp"/>
- <Caret Line="1702" Column="24" TopLine="1685"/>
- </Position26>
- <Position27>
- <Filename Value="tcparser.pp"/>
- <Caret Line="124" Column="25" TopLine="100"/>
- </Position27>
- <Position28>
- <Filename Value="tcparser.pp"/>
- <Caret Line="2038" Column="10" TopLine="2035"/>
- </Position28>
- <Position29>
- <Filename Value="tcparser.pp"/>
- <Caret Line="2075" Column="56" TopLine="2051"/>
- </Position29>
- <Position30>
- <Filename Value="../../../../source/fcl-js/jsparser.pp"/>
- <Caret Line="1747" Column="29" TopLine="1740"/>
- </Position30>
</JumpHistory>
</ProjectOptions>
<CompilerOptions>
- <Version Value="8"/>
+ <Version Value="11"/>
<SearchPaths>
- <IncludeFiles Value="$(ProjOutDir)/"/>
- <OtherUnitFiles Value="/home/michael/source/fcl-js/;../"/>
+ <IncludeFiles Value="$(ProjOutDir)"/>
+ <OtherUnitFiles Value="/home/michael/source/fcl-js/;..;../src"/>
</SearchPaths>
<CodeGeneration>
<Optimizations>
<OptimizationLevel Value="0"/>
</Optimizations>
</CodeGeneration>
+ <Linking>
+ <Debugging>
+ <UseHeaptrc Value="True"/>
+ </Debugging>
+ </Linking>
<Other>
<CompilerPath Value="$(CompPath)"/>
</Other>
</CompilerOptions>
<Debugging>
- <BreakPoints Count="1">
+ <BreakPoints Count="7">
<Item1>
+ <Kind Value="bpkSource"/>
+ <WatchScope Value="wpsGlobal"/>
+ <WatchKind Value="wpkWrite"/>
<Source Value="../jsscanner.pp"/>
<Line Value="717"/>
</Item1>
+ <Item2>
+ <Kind Value="bpkSource"/>
+ <WatchScope Value="wpsLocal"/>
+ <WatchKind Value="wpkWrite"/>
+ <Source Value="tcparser.pp"/>
+ <Line Value="2086"/>
+ </Item2>
+ <Item3>
+ <Kind Value="bpkSource"/>
+ <WatchScope Value="wpsLocal"/>
+ <WatchKind Value="wpkWrite"/>
+ <Source Value="tcparser.pp"/>
+ <Line Value="2566"/>
+ </Item3>
+ <Item4>
+ <Kind Value="bpkSource"/>
+ <WatchScope Value="wpsLocal"/>
+ <WatchKind Value="wpkWrite"/>
+ <Source Value="../src/jsparser.pp"/>
+ <Line Value="845"/>
+ </Item4>
+ <Item5>
+ <Kind Value="bpkSource"/>
+ <WatchScope Value="wpsLocal"/>
+ <WatchKind Value="wpkWrite"/>
+ <Source Value="../src/jsparser.pp"/>
+ <Line Value="754"/>
+ </Item5>
+ <Item6>
+ <Kind Value="bpkSource"/>
+ <WatchScope Value="wpsLocal"/>
+ <WatchKind Value="wpkWrite"/>
+ <Source Value="../src/jsparser.pp"/>
+ <Line Value="1287"/>
+ </Item6>
+ <Item7>
+ <Kind Value="bpkSource"/>
+ <WatchScope Value="wpsLocal"/>
+ <WatchKind Value="wpkWrite"/>
+ <Source Value="tcparser.pp"/>
+ <Line Value="2253"/>
+ </Item7>
</BreakPoints>
<Exceptions Count="3">
<Item1>
@@ -258,4 +300,5 @@
</Item3>
</Exceptions>
</Debugging>
+ <EditorMacros Count="0"/>
</CONFIG>
diff --git a/packages/fcl-js/tests/testjs.lpr b/packages/fcl-js/tests/testjs.lpr
index 081d2af7ca..9ad8bab29a 100644
--- a/packages/fcl-js/tests/testjs.lpr
+++ b/packages/fcl-js/tests/testjs.lpr
@@ -3,27 +3,19 @@ program testjs;
{$mode objfpc}{$H+}
uses
- Classes, consoletestrunner, tcscanner, jsparser, jsscanner, jstree, jsbase,
- tcparser;
-
-type
-
- { TLazTestRunner }
-
- TMyTestRunner = class(TTestRunner)
- protected
- // override the protected methods of TTestRunner to customize its behavior
- end;
+ cwstring,Classes, consoletestrunner, tcscanner, jsparser, jsscanner, jstree, jsbase,
+ tcparser, jswriter, tctextwriter, tcwriter, jstoken;
var
- Application: TMyTestRunner;
+ Application: TTestRunner;
{$IFDEF WINDOWS}{$R testjs.rc}{$ENDIF}
begin
- Application := TMyTestRunner.Create(nil);
+ DefaultFormat:=fplain;
+ DefaultRunAllTests:=True;
+ Application := TTestRunner.Create(nil);
Application.Initialize;
- Application.Title := 'FPCUnit Console test runner';
Application.Run;
Application.Free;
end.
diff --git a/packages/fcl-json/examples/simpledemo.pp b/packages/fcl-json/examples/simpledemo.pp
index 5f53173474..605e61665b 100644
--- a/packages/fcl-json/examples/simpledemo.pp
+++ b/packages/fcl-json/examples/simpledemo.pp
@@ -89,7 +89,7 @@ begin
EndTest('Array value from array of const',TJSONArray.Create([1,'a',2,'b']));
EndTest('Empty Object value',TJSONObject.Create);
// Name, Value, name, value
- EndTest('Object from array of const',TJSONArray.Create(['a',1,'b',True,'C',Nil]));
+ EndTest('Object from array of const',TJSONObject.Create(['a',1,'b',True,'C',Nil]));
end;
diff --git a/packages/fcl-net/fpmake.pp b/packages/fcl-net/fpmake.pp
index eaa04c5a92..55aab09bda 100644
--- a/packages/fcl-net/fpmake.pp
+++ b/packages/fcl-net/fpmake.pp
@@ -18,6 +18,7 @@ begin
{$endif ALLPACKAGES}
P.Version:='2.7.1';
P.Dependencies.Add('fcl-base');
+ P.Dependencies.Add('openssl');
P.Dependencies.Add('fcl-xml');
P.Dependencies.Add('fcl-passrc');
P.Dependencies.Add('fcl-async',[linux,freebsd,netbsd,openbsd]);
@@ -52,6 +53,12 @@ begin
AddUnit('resolve');
end;
T.ResourceStrings := True;
+ T:=P.Targets.AddUnit('sslsockets.pp',AllUnixOSes+AllWindowsOSes);
+ with T.Dependencies do
+ begin
+ AddUnit('ssockets');
+ end;
+ T.ResourceStrings := True;
// HTTP Client
T:=P.Targets.AddUnit('fpsock.pp',[linux,freebsd,netbsd,openbsd]);
diff --git a/packages/fcl-net/src/sslsockets.pp b/packages/fcl-net/src/sslsockets.pp
new file mode 100644
index 0000000000..ab620b34c7
--- /dev/null
+++ b/packages/fcl-net/src/sslsockets.pp
@@ -0,0 +1,461 @@
+{
+ This file is part of the Free Component Library (FCL)
+ Copyright (c) 1999-2000 by the Free Pascal development team
+
+ SSL support for ssockets
+
+ 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.
+
+ **********************************************************************}
+unit sslsockets;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+ Classes, SysUtils, sockets, ssockets, openssl, fpopenssl;
+
+Const
+ SSLDataCount = 4; // 0 based.
+
+Type
+ TVerifyCertificateEvent = Procedure(Sender : TObject; Allow : Boolean) of object;
+ { TSSLSocketHandler }
+
+ TSSLSocketHandler = class(TSocketHandler)
+ private
+ FRemoteHostName: String;
+ FSSLLastErrorString: string;
+ FCipherList: string;
+ FVerifyPeerCert: Boolean;
+ FOnVerifyCertificate: TVerifyCertificateEvent;
+ FSSLType: TSSLType;
+ FKeyPassword: string;
+ FUsername: string;
+ FPassword: string;
+ FCertData : Array[0..4] of TSSLData;
+ FSSL: TSSL;
+ FCTX : TSSLContext;
+ FSSLActive : Boolean;
+ FSendHostAsSNI : Boolean;
+ function GetSSLData(AIndex: Integer): TSSLData;
+ procedure SetSSLData(AIndex: Integer; AValue: TSSLData);
+ procedure SetSSLLastErrorString(AValue: string);
+ protected
+ Function FetchErrorInfo: Boolean;
+ function CheckSSL(SSLResult: Integer): Boolean;
+ function CheckSSL(SSLResult: Pointer): Boolean;
+ function InitContext(NeedCertificate: Boolean): Boolean; virtual;
+ function DoneContext: Boolean; virtual;
+ function InitSslKeys: boolean;virtual;
+ function DoVerifyCert:boolean;
+ public
+ constructor Create; override;
+ Destructor Destroy; override;
+ // Socket methods
+ function Connect : Boolean; override;
+ function Close : Boolean; override;
+ function Accept : Boolean; override;
+ function Shutdown(BiDirectional : Boolean): boolean; override;
+ function Send(Const Buffer; Count: Integer): Integer; override;
+ function Recv(Const Buffer; Count: Integer): Integer; override;
+ function BytesAvailable: Integer; override;
+ Function SSLActive: Boolean;
+ function CreateSelfSignedCertificate(Const AHostName: string): Boolean; virtual;
+ // Result of last CheckSSL call.
+ Function SSLLastError: integer;
+ property SSLLastErrorString: string read FSSLLastErrorString write SetSSLLastErrorString;
+ published
+ property SSLType: TSSLType read FSSLType write FSSLType;
+ {:Password for decrypting of encoded certificate or key.}
+ property Username: string read FUsername write FUsername;
+ property Password: string read FPassword write FPassword;
+ property KeyPassword: string read FKeyPassword write FKeyPassword;
+ property CipherList: string read FCipherList write FCipherList;
+ property Certificate : TSSLData Index 0 Read GetSSLData Write SetSSLData;
+ property TrustedCertificate : TSSLData Index 1 Read GetSSLData Write SetSSLData;
+ property PrivateKey : TSSLData Index 2 Read GetSSLData Write SetSSLData;
+ property PFX: TSSLData Index 3 Read GetSSLData Write SetSSLData;
+ property CertCA: TSSLData Index 4 Read GetSSLData Write SetSSLData;
+ property VerifyPeerCert: Boolean read FVerifyPeerCert Write FVerifyPeerCert;
+ Property SendHostAsSNI : Boolean Read FSendHostAsSNI Write FSendHostAsSNI;
+ // In case a certificate must be generated as server, this is the hostname that will be used.
+ property RemoteHostName : String Read FRemoteHostName Write FRemoteHostName;
+ property OnVerifyCertificate: TVerifyCertificateEvent read FOnVerifyCertificate write FOnVerifyCertificate;
+ end;
+
+
+implementation
+
+{ TSocketHandler }
+Resourcestring
+ SErrNoLibraryInit = 'Could not initialize OpenSSL library';
+
+Procedure MaybeInitSSLInterface;
+
+begin
+ if not IsSSLloaded then
+ if not InitSSLInterface then
+ Raise EInOutError.Create(SErrNoLibraryInit);
+end;
+
+
+{ TSSLSocketHandler }
+
+function TSSLSocketHandler.GetSSLData(AIndex: Integer): TSSLData;
+begin
+ Result:=FCertData[AIndex];
+end;
+
+procedure TSSLSocketHandler.SetSSLData(AIndex: Integer; AValue: TSSLData);
+begin
+ FCertData[AIndex].Assign(AValue);
+end;
+
+procedure TSSLSocketHandler.SetSSLLastErrorString(AValue: string);
+begin
+ if FSSLLastErrorString=AValue then Exit;
+ FSSLLastErrorString:=AValue;
+end;
+
+
+function TSSLSocketHandler.DoVerifyCert: boolean;
+begin
+ Result:=True;
+ If Assigned(OnVerifyCertificate) then
+ OnVerifyCertificate(Self,Result);
+end;
+
+constructor TSSLSocketHandler.Create;
+
+Var
+ I : Integer;
+begin
+ inherited Create;
+ FSendHostAsSNI:=True;
+ MaybeInitSSLInterface;
+ FCipherList:='DEFAULT';
+ For I:=0 to SSLDataCount do
+ FCertData[i]:=TSSLData.Create;
+end;
+
+Destructor TSSLSocketHandler.Destroy;
+
+Var
+ I : Integer;
+
+begin
+ FreeAndNil(FSSL);
+ FreeAndNil(FCTX);
+ inherited Destroy;
+ For I:=0 to SSLDataCount do
+ FreeAndNil(FCertData[i]);
+end;
+
+function TSSLSocketHandler.CreateSelfSignedCertificate(Const AHostName: string): Boolean;
+
+Const
+ OneDay = 60*60*24;
+ SixtyDays = 60*OneDay;
+
+var
+ PK : PEVP_PKEY;
+ X509 : PX509;
+ RSA : PRSA;
+ UTC : PASN1_UTCTIME;
+ SN : PX509_NAME;
+ B : PBIO;
+
+begin
+ Result:=False;
+ PK:=Nil;
+ X509:=Nil;
+ try
+ PK:=EvpPkeynew;
+ X509:=X509New;
+ RSA:=RsaGenerateKey(1024,$10001,nil,nil);
+ EvpPkeyAssign(PK,EVP_PKEY_RSA,RSA);
+ X509SetVersion(X509,2);
+ Asn1IntegerSet(X509getSerialNumber(X509),0);
+ UTC:=Asn1UtctimeNew;
+ try
+ X509GmtimeAdj(UTC,-OneDay);
+ X509SetNotBefore(X509,UTC);
+ X509GmtimeAdj(UTC,SixtyDays);
+ X509SetNotAfter(X509,UTC);
+ finally
+ Asn1UtctimeFree(UTC);
+ end;
+ X509SetPubkey(X509,PK);
+ SN:=X509GetSubjectName(X509);
+ X509NameAddEntryByTxt(SN,'C',$1001,'CZ',-1,-1,0);
+ X509NameAddEntryByTxt(SN,'CN',$1001, AHostName,-1,-1,0);
+ x509SetIssuerName(X509,SN);
+ x509Sign(X509,PK,EvpGetDigestByName('SHA1'));
+ B:=BioNew(BioSMem);
+ try
+ i2dX509Bio(B,X509);
+ Certificate.Value:=BioToString(B);
+ finally
+ BioFreeAll(b);
+ end;
+ B:=BioNew(BioSMem);
+ try
+ i2dPrivatekeyBio(B,PK);
+ Privatekey.Value:=BioToString(B);
+ finally
+ BioFreeAll(b);
+ end;
+ finally
+ X509free(X509);
+ EvpPkeyFree(PK);
+ end;
+end;
+
+function TSSLSocketHandler.Connect: Boolean;
+begin
+ Result:=Inherited Connect;
+ if Result and InitContext(False) then
+ begin
+ Result:=CheckSSL(FSSL.SetFD(FSocket.Handle));
+ if Result then
+ begin
+ if FSendHostAsSNI and (FSocket is TInetSocket) then
+ FSSL.Ctrl(SSL_CTRL_SET_TLSEXT_HOSTNAME,TLSEXT_NAMETYPE_host_name,PAnsiChar(AnsiString((FSocket as TInetSocket).Host)));
+ Result:=CheckSSL(FSSL.Connect);
+ if Result and VerifyPeerCert then
+ Result:=(FSSL.VerifyResult<>0) or (not DoVerifyCert);
+ if Result then
+ FSSLActive:=True;
+ end;
+ end;
+end;
+
+function TSSLSocketHandler.Close: Boolean;
+begin
+ Result:=Shutdown(False);
+end;
+
+Function TSSLSocketHandler.FetchErrorInfo : Boolean;
+
+var
+ S : AnsiString;
+
+begin
+ FSSLLastErrorString:='';
+ FLastError:=ErrGetError;
+ ErrClearError;
+ Result:=(FLastError>=1);
+ if not Result then
+ begin
+ S:=StringOfChar(#0,256);
+ ErrErrorString(FLastError,S,256);
+ FSSLLastErrorString:=s;
+ end;
+end;
+
+function TSSLSocketHandler.CheckSSL(SSLResult : Integer) : Boolean;
+
+begin
+ Result:=SSLResult>=1;
+ if Not Result then
+ begin
+ FLastError:=SSLResult;
+ FetchErrorInfo;
+ end;
+end;
+
+function TSSLSocketHandler.CheckSSL(SSLResult: Pointer): Boolean;
+begin
+ Result:=(SSLResult<>Nil);
+ if not Result then
+ Result:=FetchErrorInfo;
+end;
+
+function TSSLSocketHandler.DoneContext: Boolean;
+
+begin
+ FreeAndNil(FSSL);
+ FreeAndNil(FCTX);
+ ErrRemoveState(0);
+ FSSLActive:=False;
+ Result:=True;
+end;
+
+Function HandleSSLPwd(buf : PAnsiChar; len:Integer; flags:Integer; UD : Pointer):Integer; cdecl;
+
+var
+ Pwd: AnsiString;
+ H : TSSLSocketHandler;
+
+begin
+ if Not Assigned(UD) then
+ PWD:=''
+ else
+ begin
+ H:=TSSLSocketHandler(UD);
+ Pwd:=H.KeyPassword;
+ end;
+ if (len<Length(Pwd)+1) then
+ SetLength(Pwd,len-1);
+ pwd:=pwd+#0;
+ Result:=Length(Pwd);
+ Move(Pointer(Pwd)^,Buf^,Result);
+end;
+
+function TSSLSocketHandler.InitSslKeys: boolean;
+
+begin
+ Result:=(FCTX<>Nil);
+ if not Result then
+ Exit;
+ if not Certificate.Empty then
+ Result:=CheckSSL(FCTX.UseCertificate(Certificate));
+ if Result and not PrivateKey.Empty then
+ Result:=CheckSSL(FCTX.UsePrivateKey(PrivateKey));
+ if Result and (CertCA.FileName<>'') then
+ Result:=CheckSSL(FCTX.LoadVerifyLocations(CertCA.FileName,''));
+ if Result and not PFX.Empty then
+ Result:=CheckSSL(FCTX.LoadPFX(PFX,Self.KeyPassword));
+end;
+
+function TSSLSocketHandler.InitContext(NeedCertificate:Boolean): Boolean;
+
+Const
+ VO : Array[Boolean] of Integer = (SSL_VERIFY_NONE,SSL_VERIFY_PEER);
+
+var
+ s: AnsiString;
+
+begin
+ Result:=DoneContext;
+ if Not Result then
+ Exit;
+ try
+ FCTX:=TSSLContext.Create(SSLType);
+ Except
+ CheckSSL(Nil);
+ Result:=False;
+ Exit;
+ end;
+ S:=FCipherList;
+ FCTX.SetCipherList(S);
+ FCTX.SetVerify(VO[FVerifypeerCert],Nil);
+ FCTX.SetDefaultPasswdCb(@HandleSSLPwd);
+ FCTX.SetDefaultPasswdCbUserdata(self);
+ If NeedCertificate and Certificate.Empty and PFX.Empty then
+ if Not CreateSelfSignedCertificate(RemoteHostName) then
+ begin
+ DoneContext;
+ Exit(False);
+ end;
+ if Not InitSSLKeys then
+ begin
+ DoneContext;
+ Exit(False);
+ end;
+ try
+ FSSL:=TSSL.Create(FCTX);
+ Result:=True;
+ Except
+ CheckSSL(Nil);
+ DoneContext;
+ Result:=False;
+ end;
+end;
+
+function TSSLSocketHandler.Accept: Boolean;
+
+begin
+ Result:=InitContext(True);
+ if Result then
+ begin
+ Result:=CheckSSL(FSSL.setfd(Socket.Handle));
+ if Result then
+ Result:=CheckSSL(FSSL.Accept);
+ end;
+ FSSLActive:=Result;
+end;
+
+function TSSLSocketHandler.Shutdown(BiDirectional : Boolean): boolean;
+
+var
+ r : integer;
+
+begin
+ Result:=assigned(FSsl);
+ if Result then
+ If Not BiDirectional then
+ Result:=CheckSSL(FSSL.Shutdown)
+ else
+ begin
+ r:=FSSL.Shutdown;
+ if r<>0 then
+ Result:=CheckSSL(r)
+ else
+ begin
+ Result:=fpShutdown(FSocket.Handle,1)=0;
+ if Result then
+ Result:=CheckSSL(FSsl.Shutdown);
+ end
+ end;
+ If Result then
+ Result:=DoneContext;
+end;
+
+function TSSLSocketHandler.Send(Const Buffer; Count: Integer): Integer;
+var
+ e: integer;
+begin
+ FLastError := 0;
+ FSSLLastErrorString:='';
+ repeat
+ Result:=FSsl.Write(@Buffer,Count);
+ e:=FSsl.GetError(Result);
+ until Not (e in [SSL_ERROR_WANT_READ,SSL_ERROR_WANT_WRITE]);
+ if (E=SSL_ERROR_ZERO_RETURN) then
+ Result:=0
+ else if (e<>0) then
+ FLastError:=e;
+end;
+
+function TSSLSocketHandler.Recv(Const Buffer; Count: Integer): Integer;
+
+var
+ e: integer;
+begin
+ FLastError:=0;
+ FSSLLastErrorString:= '';
+ repeat
+ Result:=FSSL.Read(@Buffer ,Count);
+ e:=FSSL.GetError(Result);
+ until Not (e in [SSL_ERROR_WANT_READ,SSL_ERROR_WANT_WRITE]);
+ if (E=SSL_ERROR_ZERO_RETURN) then
+ Result:=0
+ else if (e<>0) then
+ FLastError:=e;
+end;
+
+function TSSLSocketHandler.BytesAvailable: Integer;
+begin
+ Result:= FSSL.Pending;
+end;
+
+Function TSSLSocketHandler.SSLActive: Boolean;
+begin
+ Result:=FSSLActive;
+end;
+
+Function TSSLSocketHandler.SSLLastError: integer;
+begin
+ Result:=FLastError;
+end;
+
+end.
+
diff --git a/packages/fcl-net/src/ssockets.pp b/packages/fcl-net/src/ssockets.pp
index a06db72181..599bca1f91 100644
--- a/packages/fcl-net/src/ssockets.pp
+++ b/packages/fcl-net/src/ssockets.pp
@@ -37,10 +37,39 @@ type
ESocketError = class(Exception)
Code: TSocketErrorType;
- constructor Create(ACode: TSocketErrorType; const MsgArgs: array of const);
+ constructor Create(ACode: TSocketErrorType; const MsgArgs: array of const);overload;
end;
TAcceptErrorAction = (aeaRaise,aeaIgnore,aeaStop);
+ TSocketStream = Class;
+
+ // Handles all OS calls
+
+ { TSocketHandler }
+
+ TSocketHandler = Class(TObject)
+ FSocket: TSocketStream;
+ FLastError : integer;
+ Protected
+ Procedure SetSocket(const AStream: TSocketStream); virtual;
+ Procedure CheckSocket;
+ Public
+ constructor Create; virtual;
+ // Called after the connect call succeded. Returns True to continue, false to close connection.
+ function Connect: boolean; virtual;
+ // Called after the accept call succeded.
+ function Accept : Boolean; virtual;
+
+ Function Close : Boolean; virtual;
+ function Shutdown(BiDirectional : Boolean): boolean; virtual;
+ function Recv(Const Buffer; Count: Integer): Integer; virtual;
+ function Send(Const Buffer; Count: Integer): Integer; virtual;
+ function BytesAvailable: Integer; virtual;
+ Property Socket : TSocketStream Read FSocket;
+ Property LastError : Integer Read FLastError;
+ end;
+ TSocketHandlerClass = Class of TSocketHandler;
+
{ TSocketStream }
TSocketStream = class(THandleStream)
@@ -48,14 +77,15 @@ type
FReadFlags: Integer;
FSocketInitialized : Boolean;
FSocketOptions : TSocketOptions;
- FLastError : integer;
FWriteFlags: Integer;
+ FHandler : TSocketHandler;
+ function GetLastError: Integer;
Procedure GetSockOptions;
Procedure SetSocketOptions(Value : TSocketOptions);
function GetLocalAddress: TSockAddr;
function GetRemoteAddress: TSockAddr;
Public
- Constructor Create (AHandle : Longint);virtual;
+ Constructor Create (AHandle : Longint; AHandler : TSocketHandler = Nil);virtual;
destructor Destroy; override;
function Seek(Offset: Longint; Origin: Word): Longint; override;
Function Read (Var Buffer; Count : Longint) : longint; Override;
@@ -64,7 +94,7 @@ type
Write SetSocketOptions;
property LocalAddress: TSockAddr read GetLocalAddress;
property RemoteAddress: TSockAddr read GetRemoteAddress;
- Property LastError : Integer Read FLastError;
+ Property LastError : Integer Read GetLastError;
Property ReadFlags : Integer Read FReadFlags Write FReadFlags;
Property WriteFlags : Integer Read FWriteFlags Write FWriteFlags;
end;
@@ -87,6 +117,7 @@ type
FQueueSize : Longint;
FOnConnect : TConnectEvent;
FOnConnectQuery : TConnectQuery;
+ FHandler : TSocketHandler;
Procedure DoOnIdle;
Function GetReuseAddress: Boolean;
Function GetKeepAlive : Boolean;
@@ -104,10 +135,11 @@ type
Function SockToStream (ASocket : Longint) : TSocketStream;Virtual;Abstract;
Procedure Close; Virtual;
Procedure Abort;
- function GetConnection: TSocketStream;
+ function GetConnection: TSocketStream; virtual; abstract;
Function HandleAcceptError(E : ESocketError) : TAcceptErrorAction;
+ Property Handler : TSocketHandler Read FHandler;
Public
- Constructor Create(ASocket : Longint);
+ Constructor Create(ASocket : Longint; AHandler : TSocketHandler);
Destructor Destroy; Override;
Procedure Listen;
function GetSockopt(ALevel,AOptName : cint; var optval; Var optlen : tsocklen): Boolean;
@@ -135,16 +167,18 @@ type
{ TInetServer }
TInetServer = Class(TSocketServer)
+ private
Protected
FAddr : TINetSockAddr;
FPort : Word;
FHost: string;
- Function SockToStream (ASocket : Longint) : TSocketStream;Override;
+ Function GetConnection: TSocketStream; override;
+ Function SockToStream (ASocket : Longint) : TSocketStream;Override;
Function Accept : Longint;override;
Public
Procedure Bind; Override;
Constructor Create(APort: Word);
- Constructor Create(const aHost: string; const APort: Word);
+ Constructor Create(const aHost: string; const APort: Word; AHAndler : TSocketHandler = Nil);
Property Port : Word Read FPort;
Property Host : string Read FHost;
end;
@@ -163,7 +197,7 @@ type
Function SockToStream (ASocket : Longint) : TSocketStream;Override;
Procedure Close; override;
Public
- Constructor Create(AFileName : String);
+ Constructor Create(AFileName : String; AHandler : TSocketHandler = Nil);
Property FileName : String Read FFileName;
end;
{$endif}
@@ -175,10 +209,9 @@ type
FHost : String;
FPort : Word;
Protected
- Procedure DoConnect(ASocket : longint); Virtual;
Public
- Constructor Create(ASocket : longint); Override; Overload;
- Constructor Create(const AHost: String; APort: Word); Overload;
+ Constructor Create(const AHost: String; APort: Word; AHandler : TSocketHandler = Nil); Overload;
+ Procedure Connect; Virtual;
Property Host : String Read FHost;
Property Port : Word Read FPort;
end;
@@ -220,6 +253,95 @@ resourcestring
strSocketConnectFailed = 'Connect to %s failed.';
strSocketAcceptFailed = 'Could not accept a client connection on socket: %d, error %d';
strSocketAcceptWouldBlock = 'Accept would block on socket: %d';
+ strErrNoStream = 'Socket stream not assigned';
+{ TSocketHandler }
+
+Procedure TSocketHandler.SetSocket(const AStream: TSocketStream);
+begin
+ FSocket:=AStream;
+end;
+
+Procedure TSocketHandler.CheckSocket;
+begin
+ If not Assigned(FSocket) then
+ Raise ESocketError.Create(StrErrNoStream);
+end;
+
+constructor TSocketHandler.Create;
+begin
+ FSocket:=Nil;
+end;
+
+function TSocketHandler.Connect: boolean;
+
+begin
+ // Only descendents can change this
+ Result:=True;
+end;
+
+function TSocketHandler.Accept : Boolean;
+
+
+begin
+ // Only descendents can change this
+ Result:=True;
+end;
+
+function TSocketHandler.Shutdown(BiDirectional: Boolean): boolean;
+begin
+ CheckSocket
+end;
+
+function TSocketHandler.Recv(Const Buffer; Count: Integer): Integer;
+
+Var
+ Flags : longint;
+begin
+ Flags:=Socket.FReadFlags;
+{$ifdef unix}
+ FLastError:=ESysEINTR;
+ While (FlastError=ESysEINTR) do
+{$endif}
+ begin
+ Result:=fprecv(Socket.Handle,@Buffer,count,flags);
+ If (Result<0) then
+ FLastError:=SocketError
+ else
+ FLastError:=0;
+ end;
+end;
+
+function TSocketHandler.Send(Const Buffer; Count: Integer): Integer;
+
+Var
+ Flags : longint;
+
+begin
+ Flags:=FSocket.FWriteFlags;
+{$ifdef unix}
+ FLastError:=ESysEINTR;
+ While (FlastError=ESysEINTR) do
+{$endif}
+ begin
+ Result:=fpsend(Socket.Handle,@Buffer,count,flags);
+ If Result<0 then
+ FLastError:=SocketError
+ else
+ FlastError:=0;
+ end;
+end;
+
+function TSocketHandler.BytesAvailable: Integer;
+begin
+ Result:=0;
+ { we need ioctlsocket here }
+end;
+
+
+Function TSocketHandler.Close: Boolean;
+begin
+ Result:=True;
+end;
constructor ESocketError.Create(ACode: TSocketErrorType; const MsgArgs: array of const);
var
@@ -242,17 +364,23 @@ end;
{ ---------------------------------------------------------------------
TSocketStream
---------------------------------------------------------------------}
-Constructor TSocketStream.Create (AHandle : Longint);
+Constructor TSocketStream.Create (AHandle : Longint; AHandler : TSocketHandler = Nil);
begin
Inherited Create(AHandle);
FSocketInitialized := true;
GetSockOptions;
+ FHandler:=AHandler;
+ If (FHandler=Nil) then
+ FHandler:=TSocketHandler.Create;
+ FHandler.SetSocket(Self);
end;
destructor TSocketStream.Destroy;
begin
if FSocketInitialized then
+ FHandler.Close; // Ignore the result
+ FreeAndNil(FHandler);
CloseSocket(Handle);
inherited Destroy;
end;
@@ -262,12 +390,17 @@ Procedure TSocketStream.GetSockOptions;
begin
end;
+function TSocketStream.GetLastError: Integer;
+begin
+ Result:=FHandler.LastError;
+end;
+
Procedure TSocketStream.SetSocketOptions(Value : TSocketOptions);
begin
end;
-Function TSocketStream.Seek(Offset: Longint; Origin: Word): Longint;
+function TSocketStream.Seek(Offset: Longint; Origin: Word): Longint;
begin
Result:=0;
@@ -275,42 +408,14 @@ end;
Function TSocketStream.Read (Var Buffer; Count : Longint) : longint;
-Var
- Flags : longint;
-
begin
- Flags:=FReadFlags;
-{$ifdef unix}
- Repeat
-{$endif}
- Result:=fprecv(handle,@Buffer,count,flags);
- If Result<0 then
- FLastError:=SocketError
- else
- FLastError:=0;
-{$ifdef unix}
- Until (FlastError<>ESysEINTR);
-{$ENDIF}
+ Result:=FHandler.Recv(Buffer,Count);
end;
Function TSocketStream.Write (Const Buffer; Count : Longint) :Longint;
-Var
- Flags : longint;
-
begin
- Flags:=FWriteFlags;
-{$ifdef unix}
- Repeat
-{$endif}
- Result:=fpsend(handle,@Buffer,count,flags);
- If Result<0 then
- FLastError:=SocketError
- else
- FlastError:=0;
-{$ifdef unix}
- Until (FlastError<>ESysEINTR);
-{$ENDIF}
+ Result:=FHandler.Send(Buffer,Count);
end;
function TSocketStream.GetLocalAddress: TSockAddr;
@@ -336,18 +441,22 @@ end;
TSocketServer
---------------------------------------------------------------------}
-Constructor TSocketServer.Create(ASocket : Longint);
+Constructor TSocketServer.Create(ASocket : Longint; AHandler : TSocketHandler);
begin
FSocket:=ASocket;
FQueueSize :=5;
FMaxConnections:=-1;
+ if (AHandler=Nil) then
+ AHandler:=TSocketHandler.Create;
+ FHandler:=AHandler;
end;
Destructor TSocketServer.Destroy;
begin
Close;
+ FreeAndNil(FHandler);
Inherited;
end;
@@ -396,21 +505,22 @@ begin
Result:=fpSetSockOpt(FSocket,ALevel,AOptName,@optval,optlen)<>-1;
end;
-Function TSocketServer.GetConnection : TSocketStream;
+Function TInetServer.GetConnection : TSocketStream;
var
NewSocket : longint;
+ l : integer;
begin
Result:=Nil;
+ L:=SizeOf(FAddr);
NewSocket:=Accept;
- If NewSocket>=0 then
- begin
- If FAccepting and DoConnectQuery(NewSocket) Then
- Result:=SockToStream(NewSocket)
- else
- CloseSocket(NewSocket);
- end
+ if (NewSocket<0) then
+ Raise ESocketError.Create(seAcceptFailed,[Socket,SocketError]);
+ If FAccepting and DoConnectQuery(NewSocket) Then
+ Result:=SockToStream(NewSocket)
+ else
+ CloseSocket(NewSocket);
end;
function TSocketServer.HandleAcceptError(E: ESocketError): TAcceptErrorAction;
@@ -592,7 +702,7 @@ begin
Create('0.0.0.0', aPort);
end;
-Constructor TInetServer.Create(const aHost: string; const APort: Word);
+Constructor TInetServer.Create(const aHost: string; const APort: Word; AHAndler : TSocketHandler = Nil);
Var S : longint;
@@ -602,7 +712,7 @@ begin
S:=Sockets.FpSocket(AF_INET,SOCK_STREAM,0);
If S=-1 Then
Raise ESocketError.Create(seCreationFailed,[Format('%d',[APort])]);
- Inherited Create(S);
+ Inherited Create(S,AHandler);
end;
Procedure TInetServer.Bind;
@@ -626,28 +736,36 @@ end;
Function TInetServer.Accept : Longint;
-Var l : longint;
-
+Var
+ L : longint;
+ R : integer;
begin
L:=SizeOf(FAddr);
- Result:=Sockets.fpAccept(Socket,@Faddr,@L);
- If Result<0 then
+{$IFDEF UNIX}
+ R:=ESysEINTR;
+ While (R=ESysEINTR) do
+{$ENDIF UNIX}
+ begin
+ Result:=Sockets.fpAccept(Socket,@Faddr,@L);
+ R:=SocketError;
+ end;
{$ifdef Unix}
- If SocketError=ESysEWOULDBLOCK then
- Raise ESocketError.Create(seAcceptWouldBlock,[socket])
- else
+ If (Result<0) then
+ If R=ESysEWOULDBLOCK then
+ Raise ESocketError.Create(seAcceptWouldBlock,[socket]);
{$endif}
- if Not FAccepting then
- Result:=-1
- else
- Raise ESocketError.Create(seAcceptFailed,[Socket,SocketError])
+ if (Result<0) or Not (FAccepting and FHandler.Accept) then
+ begin
+ CloseSocket(Result);
+ Raise ESocketError.Create(seAcceptFailed,[Socket,SocketError])
+ end;
end;
{ ---------------------------------------------------------------------
TUnixServer
---------------------------------------------------------------------}
{$ifdef Unix}
-Constructor TUnixServer.Create(AFileName : String);
+Constructor TUnixServer.Create(AFileName : String; AHandler : TSocketHandler = Nil);
Var S : Longint;
@@ -657,7 +775,7 @@ begin
If S=-1 then
Raise ESocketError.Create(seCreationFailed,[AFileName])
else
- Inherited Create(S);
+ Inherited Create(S,AHandler);
end;
Procedure TUnixServer.Close;
@@ -704,13 +822,8 @@ end;
{ ---------------------------------------------------------------------
TInetSocket
---------------------------------------------------------------------}
-Constructor TInetSocket.Create(ASocket : Longint);
-
-begin
- Inherited Create(ASocket);
-end;
-Constructor TInetSocket.Create(const AHost: String; APort: Word);
+Constructor TInetSocket.Create(const AHost: String; APort: Word;AHandler : TSocketHandler = Nil);
Var
S : Longint;
@@ -719,15 +832,17 @@ begin
FHost:=AHost;
FPort:=APort;
S:=fpSocket(AF_INET,SOCK_STREAM,0);
- DoConnect(S);
- Inherited Create(S);
+ Inherited Create(S,AHandler);
+ if (AHandler=Nil) then // Backwards compatible behaviour.
+ Connect;
end;
-Procedure TInetSocket.DoConnect(ASocket : Longint);
+Procedure TInetSocket.Connect;
Var
A : THostAddr;
addr: TInetSockAddr;
+ Res : Integer;
begin
A := StrToHostAddr(FHost);
@@ -743,9 +858,19 @@ begin
addr.sin_family := AF_INET;
addr.sin_port := ShortHostToNet(FPort);
addr.sin_addr.s_addr := HostToNet(a.s_addr);
-
- If Sockets.fpConnect(ASocket, @addr, sizeof(addr))<>0 then
- raise ESocketError.Create(seConnectFailed, [Format('%s:%d',[FHost, FPort])]);
+ {$ifdef unix}
+ Res:=ESysEINTR;
+ While (Res=ESysEINTR) do
+ {$endif}
+ Res:=fpConnect(Handle, @addr, sizeof(addr));
+ If Not (Res<0) then
+ if not FHandler.Connect then
+ begin
+ Res:=-1;
+ CloseSocket(Handle);
+ end;
+ If (Res<0) then
+ Raise ESocketError.Create(seConnectFailed, [Format('%s:%d',[FHost, FPort])]);
end;
{ ---------------------------------------------------------------------
diff --git a/packages/fcl-passrc/src/pparser.pp b/packages/fcl-passrc/src/pparser.pp
index b1a4b11d99..ed7c908175 100644
--- a/packages/fcl-passrc/src/pparser.pp
+++ b/packages/fcl-passrc/src/pparser.pp
@@ -2993,7 +2993,7 @@ begin
NextToken;
if CurTokenIsIdentifier('DEFAULT') then
begin
- if not isArray then
+ if (Result.VarType<>Nil) and (not isArray) then
ParseExc('The default property must be an array property');
NextToken;
if CurToken = tkSemicolon then
diff --git a/packages/fcl-passrc/tests/tcclasstype.pas b/packages/fcl-passrc/tests/tcclasstype.pas
index 35dc3dbed9..292f3852dd 100644
--- a/packages/fcl-passrc/tests/tcclasstype.pas
+++ b/packages/fcl-passrc/tests/tcclasstype.pas
@@ -84,6 +84,10 @@ type
procedure TestHintFieldUninmplemented;
Procedure TestMethodSimple;
Procedure TestClassMethodSimple;
+ Procedure TestConstructor;
+ Procedure TestClassConstructor;
+ Procedure TestDestructor;
+ Procedure TestClassDestructor;
Procedure TestFunctionMethodSimple;
Procedure TestClassFunctionMethodSimple;
Procedure TestMethodOneArg;
@@ -104,6 +108,7 @@ type
Procedure Test2Methods;
Procedure Test2MethodsDifferentVisibility;
Procedure TestPropertyRedeclare;
+ Procedure TestPropertyRedeclareDefault;
Procedure TestPropertyReadOnly;
Procedure TestPropertyReadWrite;
Procedure TestPropertyWriteOnly;
@@ -649,6 +654,62 @@ begin
AssertEquals('No arguments',0,TPasClassProcedure(Members[0]).ProcType.Args.Count)
end;
+Procedure TTestClassType.TestConstructor;
+begin
+ AddMember('Constructor Create');
+ ParseClass;
+ AssertEquals('1 members',1,TheClass.members.Count);
+ AssertEquals('1 class procedure',TPasConstructor,members[0].ClassType);
+ AssertEquals('Default visibility',visDefault,Members[0].Visibility);
+ AssertMemberName('Create');
+ AssertEquals('No modifiers',[],TPasClassProcedure(Members[0]).Modifiers);
+ AssertEquals('Default calling convention',ccDefault, TPasClassProcedure(Members[0]).ProcType.CallingConvention);
+ AssertNotNull('Method proc type',TPasClassProcedure(Members[0]).ProcType);
+ AssertEquals('No arguments',0,TPasClassProcedure(Members[0]).ProcType.Args.Count)
+end;
+
+Procedure TTestClassType.TestClassConstructor;
+begin
+ AddMember('Class Constructor Create');
+ ParseClass;
+ AssertEquals('1 members',1,TheClass.members.Count);
+ AssertEquals('1 class procedure',TPasClassConstructor,members[0].ClassType);
+ AssertEquals('Default visibility',visDefault,Members[0].Visibility);
+ AssertMemberName('Create');
+ AssertEquals('No modifiers',[],TPasClassProcedure(Members[0]).Modifiers);
+ AssertEquals('Default calling convention',ccDefault, TPasClassProcedure(Members[0]).ProcType.CallingConvention);
+ AssertNotNull('Method proc type',TPasClassProcedure(Members[0]).ProcType);
+ AssertEquals('No arguments',0,TPasClassProcedure(Members[0]).ProcType.Args.Count)
+end;
+
+Procedure TTestClassType.TestDestructor;
+begin
+ AddMember('Destructor Destroy');
+ ParseClass;
+ AssertEquals('1 members',1,TheClass.members.Count);
+ AssertEquals('1 class procedure',TPasDestructor,members[0].ClassType);
+ AssertEquals('Default visibility',visDefault,Members[0].Visibility);
+ AssertMemberName('Destroy');
+ AssertEquals('No modifiers',[],TPasClassProcedure(Members[0]).Modifiers);
+ AssertEquals('Default calling convention',ccDefault, TPasClassProcedure(Members[0]).ProcType.CallingConvention);
+ AssertNotNull('Method proc type',TPasClassProcedure(Members[0]).ProcType);
+ AssertEquals('No arguments',0,TPasClassProcedure(Members[0]).ProcType.Args.Count)
+end;
+
+Procedure TTestClassType.TestClassDestructor;
+begin
+ AddMember('Class Destructor Destroy');
+ ParseClass;
+ AssertEquals('1 members',1,TheClass.members.Count);
+ AssertEquals('1 class procedure',TPasClassDestructor,members[0].ClassType);
+ AssertEquals('Default visibility',visDefault,Members[0].Visibility);
+ AssertMemberName('Destroy');
+ AssertEquals('No modifiers',[],TPasClassProcedure(Members[0]).Modifiers);
+ AssertEquals('Default calling convention',ccDefault, TPasClassProcedure(Members[0]).ProcType.CallingConvention);
+ AssertNotNull('Method proc type',TPasClassProcedure(Members[0]).ProcType);
+ AssertEquals('No arguments',0,TPasClassProcedure(Members[0]).ProcType.Args.Count)
+end;
+
Procedure TTestClassType.TestFunctionMethodSimple;
begin
AddMember('Function DoSomething : integer');
@@ -906,6 +967,21 @@ begin
Assertequals('No default value','',Property1.DefaultValue);
end;
+Procedure TTestClassType.TestPropertyRedeclareDefault;
+begin
+ StartVisibility(visPublic);
+ AddMember('Property Something; default;');
+ ParseClass;
+ AssertProperty(Property1,visPublic,'Something','','','','',0,True,False);
+ AssertNull('No type',Property1.VarType);
+ Assertequals('No index','',Property1.IndexValue);
+ AssertNull('No Index expression',Property1.IndexExpr);
+ AssertNull('No Default expression',Property1.DefaultExpr);
+ Assertequals('No default value','',Property1.DefaultValue);
+ // Actually, already tested in AssertProperty
+ AssertEquals('Is default property',True, Property1.IsDefault);
+end;
+
Procedure TTestClassType.TestPropertyReadOnly;
begin
StartVisibility(visPublished);
diff --git a/packages/fcl-passrc/tests/tctypeparser.pas b/packages/fcl-passrc/tests/tctypeparser.pas
index 0e85efa887..4cbeddfe03 100644
--- a/packages/fcl-passrc/tests/tctypeparser.pas
+++ b/packages/fcl-passrc/tests/tctypeparser.pas
@@ -131,6 +131,7 @@ type
Procedure TestComplexSetDeprecated;
Procedure TestComplexSetPlatform;
Procedure TestRangeSet;
+ Procedure TestSubRangeSet;
Procedure TestRangeSetDeprecated;
Procedure TestRangeSetPlatform;
Procedure TestClassOf;
@@ -2155,8 +2156,8 @@ end;
{ TTestTypeParser }
-procedure TTestTypeParser.DoTestAliasType(const AnAliasType: String;
- const AHint: String);
+Procedure TTestTypeParser.DoTestAliasType(Const AnAliasType: String;
+ Const AHint: String);
begin
ParseType(AnAliasType,TPasAliasType,AHint);
AssertEquals('Unresolved type',TPasUnresolvedTypeRef,TPasAliasType(TheType).DestType.ClassType);
@@ -2176,13 +2177,13 @@ begin
AssertException(AMsg,EParserError,@DoParseError);
end;
-procedure TTestTypeParser.DoParseError;
+Procedure TTestTypeParser.DoParseError;
begin
ParseType(FErrorSource,Nil);
end;
-procedure TTestTypeParser.DoParsePointer(const ASource: String;
- const AHint: String; ADestType: TClass);
+Procedure TTestTypeParser.DoParsePointer(Const ASource: String;
+ Const AHint: String; ADestType: TClass);
begin
ParseType('^'+ASource,TPasPointerType,AHint);
@@ -2191,8 +2192,8 @@ begin
AssertEquals('Destination type '+ADestType.ClassName,ADestType,TPasPointerType(TheType).DestType.ClassType);
end;
-procedure TTestTypeParser.DoParseArray(const ASource: String;
- const AHint: String; ADestType: TClass);
+Procedure TTestTypeParser.DoParseArray(Const ASource: String;
+ Const AHint: String; ADestType: TClass);
begin
ParseType(ASource,TPasArrayType,AHint);
if ADestType = Nil then
@@ -2200,8 +2201,8 @@ begin
AssertEquals('Destination type '+ADestType.ClassName,ADestType,TPasArrayType(TheType).ElType.ClassType);
end;
-procedure TTestTypeParser.DoParseEnumerated(const ASource: String;
- const AHint: String; ACount: integer);
+Procedure TTestTypeParser.DoParseEnumerated(Const ASource: String;
+ Const AHint: String; ACount: integer);
Var
I : Integer;
@@ -2214,8 +2215,8 @@ begin
AssertEquals('Enum value typed element '+IntToStr(I),TPasEnumValue,TObject(TPasEnumType(TheType).Values[i]).ClassType);
end;
-procedure TTestTypeParser.DoTestFileType(const AType: String;
- const AHint: String; ADestType: TClass);
+Procedure TTestTypeParser.DoTestFileType(Const AType: String;
+ Const AHint: String; ADestType: TClass);
begin
ParseType('File of '+AType,TPasFileType,AHint);
AssertNotNull('Have element type',TPasFileType(TheType).ElType);
@@ -2224,23 +2225,23 @@ begin
AssertEquals('Element type '+ADestType.ClassName,ADestType,TPasFileType(TheType).ElType.ClassType);
end;
-procedure TTestTypeParser.DoTestRangeType(const AStart, AStop, AHint: String);
+Procedure TTestTypeParser.DoTestRangeType(Const AStart, AStop, AHint: String);
begin
ParseType(AStart+'..'+AStop,TPasRangeType,AHint);
AssertEquals('Range start',AStart,TPasRangeType(TheType).RangeStart);
AssertEquals('Range start',AStop,TPasRangeType(TheType).RangeEnd);
end;
-procedure TTestTypeParser.DoParseSimpleSet(const ASource: String;
- const AHint: String);
+Procedure TTestTypeParser.DoParseSimpleSet(Const ASource: String;
+ Const AHint: String);
begin
ParseType('Set of '+ASource,TPasSetType,AHint);
AssertNotNull('Have enumtype',TPasSetType(TheType).EnumType);
AssertEquals('Element type ',TPasUnresolvedTypeRef,TPasSetType(TheType).EnumType.ClassType);
end;
-procedure TTestTypeParser.DoParseComplexSet(const ASource: String;
- const AHint: String);
+Procedure TTestTypeParser.DoParseComplexSet(Const ASource: String;
+ Const AHint: String);
begin
ParseType('Set of '+ASource,TPasSetType,AHint);
@@ -2257,7 +2258,7 @@ begin
AssertEquals('Element type ',TPasRangeType,TPasSetType(TheType).EnumType.ClassType);
end;
-procedure TTestTypeParser.DoTestComplexSet;
+Procedure TTestTypeParser.DoTestComplexSet;
Var
I : integer;
@@ -2275,7 +2276,7 @@ begin
AssertEquals('Assigned value third enumerated empty','',TPasEnumValue(TPasEnumType(TPasSetType(TheType).EnumType).Values[2]).AssignedValue);
end;
-procedure TTestTypeParser.DoTestClassOf(const AHint: string);
+Procedure TTestTypeParser.DoTestClassOf(Const AHint: string);
begin
ParseType('Class of TSomeClass',TPasClassOfType,AHint);
@@ -2283,278 +2284,278 @@ begin
AssertEquals('Element type ',TPasUnresolvedTypeRef,TPasClassOfType(TheType).DestType.ClassType);
end;
-procedure TTestTypeParser.TestAliasType;
+Procedure TTestTypeParser.TestAliasType;
begin
DoTestAliasType('othertype','');
AssertEquals('Unresolved type name ','othertype',TPasUnresolvedTypeRef(TPasAliasType(TheType).DestType).name);
end;
-procedure TTestTypeParser.TestCrossUnitAliasType;
+Procedure TTestTypeParser.TestCrossUnitAliasType;
begin
DoTestAliasType('otherunit.othertype','');
end;
-procedure TTestTypeParser.TestAliasTypeDeprecated;
+Procedure TTestTypeParser.TestAliasTypeDeprecated;
begin
DoTestALiasType('othertype','deprecated');
end;
-procedure TTestTypeParser.TestAliasTypePlatform;
+Procedure TTestTypeParser.TestAliasTypePlatform;
begin
DoTestALiasType('othertype','platform');
end;
-procedure TTestTypeParser.TestSimpleTypeByte;
+Procedure TTestTypeParser.TestSimpleTypeByte;
begin
DoTestAliasType('BYTE','');
end;
-procedure TTestTypeParser.TestSimpleTypeByteDeprecated;
+Procedure TTestTypeParser.TestSimpleTypeByteDeprecated;
begin
DoTestAliasType('BYTE','deprecated');
end;
-procedure TTestTypeParser.TestSimpleTypeBytePlatform;
+Procedure TTestTypeParser.TestSimpleTypeBytePlatform;
begin
DoTestAliasType('BYTE','platform');
end;
-procedure TTestTypeParser.TestSimpleTypeBoolean;
+Procedure TTestTypeParser.TestSimpleTypeBoolean;
begin
DoTestAliasType('BOOLEAN','');
end;
-procedure TTestTypeParser.TestSimpleTypeBooleanDeprecated;
+Procedure TTestTypeParser.TestSimpleTypeBooleanDeprecated;
begin
DoTestAliasType('BOOLEAN','deprecated');
end;
-procedure TTestTypeParser.TestSimpleTypeBooleanPlatform;
+Procedure TTestTypeParser.TestSimpleTypeBooleanPlatform;
begin
DoTestAliasType('BOOLEAN','platform');
end;
-procedure TTestTypeParser.TestSimpleTypeChar;
+Procedure TTestTypeParser.TestSimpleTypeChar;
begin
DoTestAliasType('CHAR','');
end;
-procedure TTestTypeParser.TestSimpleTypeCharDeprecated;
+Procedure TTestTypeParser.TestSimpleTypeCharDeprecated;
begin
DoTestAliasType('CHAR','deprecated');
end;
-procedure TTestTypeParser.TestSimpleTypeCharPlatform;
+Procedure TTestTypeParser.TestSimpleTypeCharPlatform;
begin
DoTestAliasType('CHAR','platform');
end;
-procedure TTestTypeParser.TestSimpleTypeInteger;
+Procedure TTestTypeParser.TestSimpleTypeInteger;
begin
DoTestAliasType('INTEGER','');
end;
-procedure TTestTypeParser.TestSimpleTypeIntegerDeprecated;
+Procedure TTestTypeParser.TestSimpleTypeIntegerDeprecated;
begin
DoTestAliasType('INTEGER','deprecated');
end;
-procedure TTestTypeParser.TestSimpleTypeIntegerPlatform;
+Procedure TTestTypeParser.TestSimpleTypeIntegerPlatform;
begin
DoTestAliasType('INTEGER','platform');
end;
-procedure TTestTypeParser.TestSimpleTypeInt64;
+Procedure TTestTypeParser.TestSimpleTypeInt64;
begin
DoTestAliasType('INT64','');
end;
-procedure TTestTypeParser.TestSimpleTypeInt64Deprecated;
+Procedure TTestTypeParser.TestSimpleTypeInt64Deprecated;
begin
DoTestAliasType('INT64','deprecated');
end;
-procedure TTestTypeParser.TestSimpleTypeInt64Platform;
+Procedure TTestTypeParser.TestSimpleTypeInt64Platform;
begin
DoTestAliasType('INT64','platform');
end;
-procedure TTestTypeParser.TestSimpleTypeLongInt;
+Procedure TTestTypeParser.TestSimpleTypeLongInt;
begin
DoTestAliasType('LONGINT','');
end;
-procedure TTestTypeParser.TestSimpleTypeLongIntDeprecated;
+Procedure TTestTypeParser.TestSimpleTypeLongIntDeprecated;
begin
DoTestAliasType('LONGINT','deprecated');
end;
-procedure TTestTypeParser.TestSimpleTypeLongIntPlatform;
+Procedure TTestTypeParser.TestSimpleTypeLongIntPlatform;
begin
DoTestAliasType('LONGINT','platform');
end;
-procedure TTestTypeParser.TestSimpleTypeLongWord;
+Procedure TTestTypeParser.TestSimpleTypeLongWord;
begin
DoTestAliasType('LONGWORD','');
end;
-procedure TTestTypeParser.TestSimpleTypeLongWordDeprecated;
+Procedure TTestTypeParser.TestSimpleTypeLongWordDeprecated;
begin
DoTestAliasType('LONGWORD','deprecated');
end;
-procedure TTestTypeParser.TestSimpleTypeLongWordPlatform;
+Procedure TTestTypeParser.TestSimpleTypeLongWordPlatform;
begin
DoTestAliasType('LONGWORD','platform');
end;
-procedure TTestTypeParser.TestSimpleTypeDouble;
+Procedure TTestTypeParser.TestSimpleTypeDouble;
begin
DoTestAliasType('Double','');
end;
-procedure TTestTypeParser.TestSimpleTypeDoubleDeprecated;
+Procedure TTestTypeParser.TestSimpleTypeDoubleDeprecated;
begin
DoTestAliasType('Double','deprecated');
end;
-procedure TTestTypeParser.TestSimpleTypeDoublePlatform;
+Procedure TTestTypeParser.TestSimpleTypeDoublePlatform;
begin
DoTestAliasType('Double','platform');
end;
-procedure TTestTypeParser.TestSimpleTypeShortInt;
+Procedure TTestTypeParser.TestSimpleTypeShortInt;
begin
DoTestAliasType('SHORTINT','');
end;
-procedure TTestTypeParser.TestSimpleTypeShortIntDeprecated;
+Procedure TTestTypeParser.TestSimpleTypeShortIntDeprecated;
begin
DoTestAliasType('SHORTINT','deprecated');
end;
-procedure TTestTypeParser.TestSimpleTypeShortIntPlatform;
+Procedure TTestTypeParser.TestSimpleTypeShortIntPlatform;
begin
DoTestAliasType('SHORTINT','platform');
end;
-procedure TTestTypeParser.TestSimpleTypeSmallInt;
+Procedure TTestTypeParser.TestSimpleTypeSmallInt;
begin
DoTestAliasType('SMALLINT','');
end;
-procedure TTestTypeParser.TestSimpleTypeSmallIntDeprecated;
+Procedure TTestTypeParser.TestSimpleTypeSmallIntDeprecated;
begin
DoTestAliasType('SMALLINT','deprecated');
end;
-procedure TTestTypeParser.TestSimpleTypeSmallIntPlatform;
+Procedure TTestTypeParser.TestSimpleTypeSmallIntPlatform;
begin
DoTestAliasType('SMALLINT','platform');
end;
-procedure TTestTypeParser.TestSimpleTypeString;
+Procedure TTestTypeParser.TestSimpleTypeString;
begin
DoTestAliasType('STRING','');
end;
-procedure TTestTypeParser.TestSimpleTypeStringDeprecated;
+Procedure TTestTypeParser.TestSimpleTypeStringDeprecated;
begin
DoTestAliasType('STRING','deprecated');
end;
-procedure TTestTypeParser.TestSimpleTypeStringPlatform;
+Procedure TTestTypeParser.TestSimpleTypeStringPlatform;
begin
DoTestAliasType('STRING','platform');
end;
-procedure TTestTypeParser.TestSimpleTypeStringSize;
+Procedure TTestTypeParser.TestSimpleTypeStringSize;
begin
DoTestStringType('String[10]','');
end;
-procedure TTestTypeParser.TestSimpleTypeStringSizeIncomplete;
+Procedure TTestTypeParser.TestSimpleTypeStringSizeIncomplete;
begin
DoTypeError('Incomplete string: missing ]','string[10');
end;
-procedure TTestTypeParser.TestSimpleTypeStringSizeWrong;
+Procedure TTestTypeParser.TestSimpleTypeStringSizeWrong;
begin
DoTypeError('Incomplete string, ) instead of ]','string[10)');
end;
-procedure TTestTypeParser.TestSimpleTypeStringSizeDeprecated;
+Procedure TTestTypeParser.TestSimpleTypeStringSizeDeprecated;
begin
DoTestStringType('String[10]','deprecated');
end;
-procedure TTestTypeParser.TestSimpleTypeStringSizePlatform;
+Procedure TTestTypeParser.TestSimpleTypeStringSizePlatform;
begin
DoTestStringType('String[10]','Platform');
end;
-procedure TTestTypeParser.TestSimpleTypeWord;
+Procedure TTestTypeParser.TestSimpleTypeWord;
BEGIN
DoTestAliasType('WORD','');
end;
-procedure TTestTypeParser.TestSimpleTypeWordDeprecated;
+Procedure TTestTypeParser.TestSimpleTypeWordDeprecated;
begin
DoTestAliasType('WORD','deprecated');
end;
-procedure TTestTypeParser.TestSimpleTypeWordPlatform;
+Procedure TTestTypeParser.TestSimpleTypeWordPlatform;
begin
DoTestAliasType('WORD','platform');
end;
-procedure TTestTypeParser.TestSimpleTypeQWord;
+Procedure TTestTypeParser.TestSimpleTypeQWord;
BEGIN
DoTestAliasType('QWORD','');
end;
-procedure TTestTypeParser.TestSimpleTypeQWordDeprecated;
+Procedure TTestTypeParser.TestSimpleTypeQWordDeprecated;
begin
DoTestAliasType('QWORD','deprecated');
end;
-procedure TTestTypeParser.TestSimpleTypeQWordPlatform;
+Procedure TTestTypeParser.TestSimpleTypeQWordPlatform;
begin
DoTestAliasType('QWORD','platform');
end;
-procedure TTestTypeParser.TestSimpleTypeCardinal;
+Procedure TTestTypeParser.TestSimpleTypeCardinal;
begin
DoTestAliasType('CARDINAL','');
end;
-procedure TTestTypeParser.TestSimpleTypeCardinalDeprecated;
+Procedure TTestTypeParser.TestSimpleTypeCardinalDeprecated;
begin
DoTestAliasType('CARDINAL','deprecated');
end;
-procedure TTestTypeParser.TestSimpleTypeCardinalPlatform;
+Procedure TTestTypeParser.TestSimpleTypeCardinalPlatform;
begin
DoTestAliasType('CARDINAL','platform');
end;
-procedure TTestTypeParser.TestSimpleTypeWideChar;
+Procedure TTestTypeParser.TestSimpleTypeWideChar;
begin
DoTestAliasType('WIDECHAR','');
end;
-procedure TTestTypeParser.TestSimpleTypeWideCharDeprecated;
+Procedure TTestTypeParser.TestSimpleTypeWideCharDeprecated;
begin
DoTestAliasType('WIDECHAR','deprecated');
end;
-procedure TTestTypeParser.TestSimpleTypeWideCharPlatform;
+Procedure TTestTypeParser.TestSimpleTypeWideCharPlatform;
begin
DoTestAliasType('WIDECHAR','platform');
end;
-procedure TTestTypeParser.TestPointerSimple;
+Procedure TTestTypeParser.TestPointerSimple;
begin
DoParsePointer('integer','');
end;
@@ -2569,7 +2570,7 @@ begin
DoParsePointer('integer','platform');
end;
-procedure TTestTypeParser.TestStaticArray;
+Procedure TTestTypeParser.TestStaticArray;
begin
DoParseArray('array [0..2] of integer','',Nil);
AssertEquals('Array type','0..2',TPasArrayType(TheType).IndexRange);
@@ -2587,26 +2588,26 @@ begin
AssertEquals('Array type','0..2',TPasArrayType(TheType).IndexRange);
end;
-procedure TTestTypeParser.TestStaticArrayPacked;
+Procedure TTestTypeParser.TestStaticArrayPacked;
begin
DoParseArray('packed array [0..2] of integer','',Nil);
AssertEquals('Array type','0..2',TPasArrayType(TheType).IndexRange);
AssertEquals('Packed',True,TPasArrayType(TheType).IsPacked);
end;
-procedure TTestTypeParser.TestStaticArrayTypedIndex;
+Procedure TTestTypeParser.TestStaticArrayTypedIndex;
begin
DoParseArray('array [Boolean] of integer','',Nil);
AssertEquals('Array type','Boolean',TPasArrayType(TheType).IndexRange);
end;
-procedure TTestTypeParser.TestDynamicArray;
+Procedure TTestTypeParser.TestDynamicArray;
begin
DoParseArray('array of integer','',Nil);
AssertEquals('Array type','',TPasArrayType(TheType).IndexRange);
end;
-procedure TTestTypeParser.TestSimpleEnumerated;
+Procedure TTestTypeParser.TestSimpleEnumerated;
begin
DoParseEnumerated('(one,two,three)','',3);
@@ -2618,7 +2619,7 @@ begin
AssertEquals('Assigned value third enumerated empty','',TPasEnumValue(TPasEnumType(TheType).Values[2]).AssignedValue);
end;
-procedure TTestTypeParser.TestSimpleEnumeratedDeprecated;
+Procedure TTestTypeParser.TestSimpleEnumeratedDeprecated;
begin
DoParseEnumerated('(one,two,three)','deprecated',3);
AssertEquals('First enumerated value','one',TPasEnumValue(TPasEnumType(TheType).Values[0]).Name);
@@ -2629,7 +2630,7 @@ begin
AssertEquals('Assigned value third enumerated empty','',TPasEnumValue(TPasEnumType(TheType).Values[2]).AssignedValue);
end;
-procedure TTestTypeParser.TestSimpleEnumeratedPlatform;
+Procedure TTestTypeParser.TestSimpleEnumeratedPlatform;
begin
DoParseEnumerated('(one,two,three)','platform',3);
AssertEquals('First enumerated value','one',TPasEnumValue(TPasEnumType(TheType).Values[0]).Name);
@@ -2640,7 +2641,7 @@ begin
AssertEquals('Assigned value third enumerated empty','',TPasEnumValue(TPasEnumType(TheType).Values[2]).AssignedValue);
end;
-procedure TTestTypeParser.TestAssignedEnumerated;
+Procedure TTestTypeParser.TestAssignedEnumerated;
begin
DoParseEnumerated('(one,two:=2,three)','',3);
AssertEquals('First enumerated value','one',TPasEnumValue(TPasEnumType(TheType).Values[0]).Name);
@@ -2651,7 +2652,7 @@ begin
AssertEquals('Assigned value first enumerated empty','',TPasEnumValue(TPasEnumType(TheType).Values[2]).AssignedValue);
end;
-procedure TTestTypeParser.TestAssignedEnumeratedDeprecated;
+Procedure TTestTypeParser.TestAssignedEnumeratedDeprecated;
begin
DoParseEnumerated('(one,two:=2,three)','',3);
AssertEquals('First enumerated value','one',TPasEnumValue(TPasEnumType(TheType).Values[0]).Name);
@@ -2662,7 +2663,7 @@ begin
AssertEquals('Assigned value first enumerated empty','',TPasEnumValue(TPasEnumType(TheType).Values[2]).AssignedValue);
end;
-procedure TTestTypeParser.TestAssignedEnumeratedPlatform;
+Procedure TTestTypeParser.TestAssignedEnumeratedPlatform;
begin
DoParseEnumerated('(one,two:=2,three)','',3);
AssertEquals('First enumerated value','one',TPasEnumValue(TPasEnumType(TheType).Values[0]).Name);
@@ -2673,73 +2674,73 @@ begin
AssertEquals('Assigned value first enumerated empty','',TPasEnumValue(TPasEnumType(TheType).Values[2]).AssignedValue);
end;
-procedure TTestTypeParser.TestFileType;
+Procedure TTestTypeParser.TestFileType;
begin
DoTestFileType('integer','');
end;
-procedure TTestTypeParser.TestFileTypeDeprecated;
+Procedure TTestTypeParser.TestFileTypeDeprecated;
begin
DoTestFileType('integer','deprecated');
end;
-procedure TTestTypeParser.TestFileTypePlatform;
+Procedure TTestTypeParser.TestFileTypePlatform;
begin
DoTestFileType('integer','platform');
end;
-procedure TTestTypeParser.TestRangeType;
+Procedure TTestTypeParser.TestRangeType;
begin
DoTestRangeType('1','4','');
end;
-procedure TTestTypeParser.TestRangeTypeDeprecated;
+Procedure TTestTypeParser.TestRangeTypeDeprecated;
begin
DoTestRangeType('1','4','deprecated');
end;
-procedure TTestTypeParser.TestRangeTypePlatform;
+Procedure TTestTypeParser.TestRangeTypePlatform;
begin
DoTestRangeType('1','4','platform');
end;
-procedure TTestTypeParser.TestIdentifierRangeType;
+Procedure TTestTypeParser.TestIdentifierRangeType;
begin
DoTestRangeType('tkFirst','tkLast','');
end;
-procedure TTestTypeParser.TestIdentifierRangeTypeDeprecated;
+Procedure TTestTypeParser.TestIdentifierRangeTypeDeprecated;
begin
DoTestRangeType('tkFirst','tkLast','deprecated');
end;
-procedure TTestTypeParser.TestIdentifierRangeTypePlatform;
+Procedure TTestTypeParser.TestIdentifierRangeTypePlatform;
begin
DoTestRangeType('tkFirst','tkLast','platform');
end;
-procedure TTestTypeParser.TestNegativeIdentifierRangeType;
+Procedure TTestTypeParser.TestNegativeIdentifierRangeType;
begin
DoTestRangeType('-tkLast','tkLast','');
end;
-procedure TTestTypeParser.TestSimpleSet;
+Procedure TTestTypeParser.TestSimpleSet;
begin
DoParseSimpleSet('Byte','');
end;
-procedure TTestTypeParser.TestSimpleSetDeprecated;
+Procedure TTestTypeParser.TestSimpleSetDeprecated;
begin
DoParseSimpleSet('Byte','deprecated');
end;
-procedure TTestTypeParser.TestSimpleSetPlatform;
+Procedure TTestTypeParser.TestSimpleSetPlatform;
begin
DoParseSimpleSet('Byte','platform');
end;
-procedure TTestTypeParser.TestComplexSet;
+Procedure TTestTypeParser.TestComplexSet;
begin
@@ -2747,51 +2748,57 @@ begin
DoTestComplexSet;
end;
-procedure TTestTypeParser.TestComplexSetDeprecated;
+Procedure TTestTypeParser.TestComplexSetDeprecated;
begin
DoParseComplexSet('(one, two, three)','deprecated');
DoTestComplexSet;
end;
-procedure TTestTypeParser.TestComplexSetPlatform;
+Procedure TTestTypeParser.TestComplexSetPlatform;
begin
DoParseComplexSet('(one, two, three)','platform');
DoTestComplexSet;
end;
-procedure TTestTypeParser.TestRangeSet;
+Procedure TTestTypeParser.TestRangeSet;
+begin
+ // TRange = (rLow, rMiddle, rHigh);
+ DoParseRangeSet('rMiddle..high(TRange)','');
+end;
+
+Procedure TTestTypeParser.TestSubRangeSet;
begin
DoParseRangeSet('0..SizeOf(Integer)*8-1','');
end;
-procedure TTestTypeParser.TestRangeSetDeprecated;
+Procedure TTestTypeParser.TestRangeSetDeprecated;
begin
DoParseRangeSet('0..SizeOf(Integer)*8-1','deprecated');
end;
-procedure TTestTypeParser.TestRangeSetPlatform;
+Procedure TTestTypeParser.TestRangeSetPlatform;
begin
DoParseRangeSet('0..SizeOf(Integer)*8-1','platform');
end;
-procedure TTestTypeParser.TestClassOf;
+Procedure TTestTypeParser.TestClassOf;
begin
DoTestClassOf('');
end;
-procedure TTestTypeParser.TestClassOfDeprecated;
+Procedure TTestTypeParser.TestClassOfDeprecated;
begin
DoTestClassOf('deprecated');
end;
-procedure TTestTypeParser.TestClassOfPlatform;
+Procedure TTestTypeParser.TestClassOfPlatform;
begin
DoTestClassOf('Platform');
end;
-procedure TTestTypeParser.TestReferenceAlias;
+Procedure TTestTypeParser.TestReferenceAlias;
begin
Add('Type');
Add(' Type1 = Integer;');
@@ -2806,7 +2813,7 @@ begin
AssertSame('Second declaration references first.',Declarations.Types[0],TPasAliasType(Declarations.Types[1]).DestType);
end;
-procedure TTestTypeParser.TestReferenceSet;
+Procedure TTestTypeParser.TestReferenceSet;
begin
Add('Type');
@@ -2822,7 +2829,7 @@ begin
AssertSame('Second declaration references first.',Declarations.Types[0],TPasSetType(Declarations.Types[1]).EnumType);
end;
-procedure TTestTypeParser.TestReferenceClassOf;
+Procedure TTestTypeParser.TestReferenceClassOf;
begin
Add('Type');
Add(' Type1 = Class(TObject);');
@@ -2838,7 +2845,7 @@ begin
AssertSame('Second declaration references first.',Declarations.Classes[0],TPasClassOfType(Declarations.Types[0]).DestType);
end;
-procedure TTestTypeParser.TestReferenceFile;
+Procedure TTestTypeParser.TestReferenceFile;
begin
Add('Type');
Add(' Type1 = (a,b,c);');
@@ -2853,7 +2860,7 @@ begin
AssertSame('Second declaration references first.',Declarations.Types[0],TPasFileType(Declarations.Types[1]).elType);
end;
-procedure TTestTypeParser.TestReferenceArray;
+Procedure TTestTypeParser.TestReferenceArray;
begin
Add('Type');
Add(' Type1 = (a,b,c);');
@@ -2868,7 +2875,7 @@ begin
AssertSame('Second declaration references first.',Declarations.Types[0],TPasArrayType(Declarations.Types[1]).elType);
end;
-procedure TTestTypeParser.TestReferencePointer;
+Procedure TTestTypeParser.TestReferencePointer;
begin
Add('Type');
Add(' Type1 = (a,b,c);');
diff --git a/packages/fcl-process/src/unix/process.inc b/packages/fcl-process/src/unix/process.inc
index 9a210717a8..6a0f1f7414 100644
--- a/packages/fcl-process/src/unix/process.inc
+++ b/packages/fcl-process/src/unix/process.inc
@@ -125,8 +125,8 @@ Function DetectXterm : String;
Const
Konsole = 'konsole';
GNomeTerm = 'gnome-terminal';
- DefaultTerminals : Array [1..5] of string
- = ('x-terminal-emulator','xterm','aterm','wterm','rxvt');
+ DefaultTerminals : Array [1..6] of string
+ = ('x-terminal-emulator','xterm','aterm','wterm','rxvt','xfce4-terminal');
Var
D :String;
@@ -153,7 +153,9 @@ begin
begin
If not TestTerminal('aterm') then
TestTerminal('wterm');
- end;
+ end
+ else if (D='xfce') then
+ TestTerminal('xfce4-terminal');
end;
if (XTermProgram='') then
TestTerminals(DefaultTerminals)
diff --git a/packages/fcl-sdo/src/base/sdo_consts.pas b/packages/fcl-sdo/src/base/sdo_consts.pas
index 16240d1f5f..506f71d00b 100644
--- a/packages/fcl-sdo/src/base/sdo_consts.pas
+++ b/packages/fcl-sdo/src/base/sdo_consts.pas
@@ -103,7 +103,7 @@ resourcestring
SERR_InvalidSchemaNode = 'Invalid schema node.';
SERR_InvalidSymbolTable = 'Invalid Symbol table.';
SERR_InvalidTypeDef_AttributeNotFound = 'Invalid type definition, attributes not found : "%s".';
- SERR_InvalidTypeDef_BaseAttributeNotFound = 'Invalid extention/restriction of type "%s" : "base" attribute not found.';
+ SERR_InvalidTypeDef_BaseAttributeNotFound = 'Invalid extension/restriction of type "%s" : "base" attribute not found.';
SERR_InvalidTypeDef_NamedAttributeNotFound = 'Invalid type definition, unable to find the "%s" attribute : "%s".';
SERR_InvalidTypeDef_NoChild = 'Invalid type definition, this element must have children.';
SERR_InvalidTypeName = 'Invalid type/element name( the name is empty ).';
diff --git a/packages/fcl-sdo/src/base/sdo_fpc_xml.pas b/packages/fcl-sdo/src/base/sdo_fpc_xml.pas
index 021b28f179..47f353d837 100644
--- a/packages/fcl-sdo/src/base/sdo_fpc_xml.pas
+++ b/packages/fcl-sdo/src/base/sdo_fpc_xml.pas
@@ -105,9 +105,6 @@ end;
function CreateDoc() : TXMLDocument ;
begin
Result := TXMLDocument.Create();
-{$IF ((FPC_VERSION = 2) and (FPC_RELEASE = 6)) }
- Result.Encoding := 'UTF-8';
-{$IFEND}
end;
function FindNode(ANode : TDOMNode;const ANodeName : string) : TDOMNode;{$IFDEF USE_INLINE}inline;{$ENDIF}
diff --git a/packages/fcl-sound/Makefile b/packages/fcl-sound/Makefile
new file mode 100644
index 0000000000..bb9195236f
--- /dev/null
+++ b/packages/fcl-sound/Makefile
@@ -0,0 +1,2368 @@
+#
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014/03/26]
+#
+default: all
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos
+BSDs = freebsd netbsd openbsd darwin
+UNIXs = linux $(BSDs) solaris qnx haiku aix
+LIMIT83fs = go32v2 os2 emx watcom msdos
+OSNeedsComspecToRunBatch = go32v2 watcom
+FORCE:
+.PHONY: FORCE
+override PATH:=$(patsubst %/,%,$(subst \,/,$(PATH)))
+ifneq ($(findstring darwin,$(OSTYPE)),)
+inUnix=1 #darwin
+SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
+else
+ifeq ($(findstring ;,$(PATH)),)
+inUnix=1
+SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
+else
+SEARCHPATH:=$(subst ;, ,$(PATH))
+endif
+endif
+SEARCHPATH+=$(patsubst %/,%,$(subst \,/,$(dir $(MAKE))))
+PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(SEARCHPATH))))
+ifeq ($(PWD),)
+PWD:=$(strip $(wildcard $(addsuffix /pwd,$(SEARCHPATH))))
+ifeq ($(PWD),)
+$(error You need the GNU utils package to use this Makefile)
+else
+PWD:=$(firstword $(PWD))
+SRCEXEEXT=
+endif
+else
+PWD:=$(firstword $(PWD))
+SRCEXEEXT=.exe
+endif
+ifndef inUnix
+ifeq ($(OS),Windows_NT)
+inWinNT=1
+else
+ifdef OS2_SHELL
+inOS2=1
+endif
+endif
+else
+ifneq ($(findstring cygdrive,$(PATH)),)
+inCygWin=1
+endif
+endif
+ifdef inUnix
+SRCBATCHEXT=.sh
+else
+ifdef inOS2
+SRCBATCHEXT=.cmd
+else
+SRCBATCHEXT=.bat
+endif
+endif
+ifdef COMSPEC
+ifneq ($(findstring $(OS_SOURCE),$(OSNeedsComspecToRunBatch)),)
+ifndef RUNBATCH
+RUNBATCH=$(COMSPEC) /C
+endif
+endif
+endif
+ifdef inUnix
+PATHSEP=/
+else
+PATHSEP:=$(subst /,\,/)
+ifdef inCygWin
+PATHSEP=/
+endif
+endif
+ifdef PWD
+BASEDIR:=$(subst \,/,$(shell $(PWD)))
+ifdef inCygWin
+ifneq ($(findstring /cygdrive/,$(BASEDIR)),)
+BASENODIR:=$(patsubst /cygdrive%,%,$(BASEDIR))
+BASEDRIVE:=$(firstword $(subst /, ,$(BASENODIR)))
+BASEDIR:=$(subst /cygdrive/$(BASEDRIVE)/,$(BASEDRIVE):/,$(BASEDIR))
+endif
+endif
+else
+BASEDIR=.
+endif
+ifdef inOS2
+ifndef ECHO
+ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ECHO),)
+ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ECHO),)
+ECHO=echo
+else
+ECHO:=$(firstword $(ECHO))
+endif
+else
+ECHO:=$(firstword $(ECHO))
+endif
+endif
+export ECHO
+endif
+override DEFAULT_FPCDIR=../..
+ifndef FPC
+ifdef PP
+FPC=$(PP)
+endif
+endif
+ifndef FPC
+FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH))))
+ifneq ($(FPCPROG),)
+FPCPROG:=$(firstword $(FPCPROG))
+ifneq ($(CPU_TARGET),)
+FPC:=$(shell $(FPCPROG) -P$(CPU_TARGET) -PB)
+else
+FPC:=$(shell $(FPCPROG) -PB)
+endif
+ifneq ($(findstring Error,$(FPC)),)
+override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
+else
+ifeq ($(strip $(wildcard $(FPC))),)
+FPC:=$(firstword $(FPCPROG))
+endif
+endif
+else
+override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
+endif
+endif
+override FPC:=$(subst $(SRCEXEEXT),,$(FPC))
+override FPC:=$(subst \,/,$(FPC))$(SRCEXEEXT)
+FOUNDFPC:=$(strip $(wildcard $(FPC)))
+ifeq ($(FOUNDFPC),)
+FOUNDFPC=$(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))
+ifeq ($(FOUNDFPC),)
+$(error Compiler $(FPC) not found)
+endif
+endif
+ifndef FPC_COMPILERINFO
+FPC_COMPILERINFO:=$(shell $(FPC) -iVSPTPSOTO)
+endif
+ifndef FPC_VERSION
+FPC_VERSION:=$(word 1,$(FPC_COMPILERINFO))
+endif
+export FPC FPC_VERSION FPC_COMPILERINFO
+unexport CHECKDEPEND ALLDEPENDENCIES
+ifndef CPU_TARGET
+ifdef CPU_TARGET_DEFAULT
+CPU_TARGET=$(CPU_TARGET_DEFAULT)
+endif
+endif
+ifndef OS_TARGET
+ifdef OS_TARGET_DEFAULT
+OS_TARGET=$(OS_TARGET_DEFAULT)
+endif
+endif
+ifndef CPU_SOURCE
+CPU_SOURCE:=$(word 2,$(FPC_COMPILERINFO))
+endif
+ifndef CPU_TARGET
+CPU_TARGET:=$(word 3,$(FPC_COMPILERINFO))
+endif
+ifndef OS_SOURCE
+OS_SOURCE:=$(word 4,$(FPC_COMPILERINFO))
+endif
+ifndef OS_TARGET
+OS_TARGET:=$(word 5,$(FPC_COMPILERINFO))
+endif
+FULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
+FULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
+ifeq ($(CPU_TARGET),armeb)
+ARCH=arm
+override FPCOPT+=-Cb
+else
+ifeq ($(CPU_TARGET),armel)
+ARCH=arm
+override FPCOPT+=-CaEABI
+else
+ARCH=$(CPU_TARGET)
+endif
+endif
+ifeq ($(FULL_TARGET),arm-embedded)
+ifeq ($(SUBARCH),)
+$(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t or SUBARCH=armv7m) must be defined)
+endif
+override FPCOPT+=-Cp$(SUBARCH)
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+ifeq ($(SUBARCH),)
+$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined)
+endif
+override FPCOPT+=-Cp$(SUBARCH)
+endif
+ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
+TARGETSUFFIX=$(OS_TARGET)
+SOURCESUFFIX=$(OS_SOURCE)
+else
+ifneq ($(findstring $(OS_TARGET),$(LIMIT83fs)),)
+TARGETSUFFIX=$(OS_TARGET)
+else
+TARGETSUFFIX=$(FULL_TARGET)
+endif
+SOURCESUFFIX=$(FULL_SOURCE)
+endif
+ifneq ($(FULL_TARGET),$(FULL_SOURCE))
+CROSSCOMPILE=1
+endif
+ifeq ($(findstring makefile,$(MAKECMDGOALS)),)
+ifeq ($(findstring $(FULL_TARGET),$(MAKEFILETARGETS)),)
+$(error The Makefile doesn't support target $(FULL_TARGET), please run fpcmake first)
+endif
+endif
+ifneq ($(findstring $(OS_TARGET),$(BSDs)),)
+BSDhier=1
+endif
+ifeq ($(OS_TARGET),linux)
+linuxHier=1
+endif
+ifndef CROSSCOMPILE
+BUILDFULLNATIVE=1
+export BUILDFULLNATIVE
+endif
+ifdef BUILDFULLNATIVE
+BUILDNATIVE=1
+export BUILDNATIVE
+endif
+export OS_TARGET OS_SOURCE ARCH CPU_TARGET CPU_SOURCE FULL_TARGET FULL_SOURCE TARGETSUFFIX SOURCESUFFIX CROSSCOMPILE
+ifdef FPCDIR
+override FPCDIR:=$(subst \,/,$(FPCDIR))
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
+override FPCDIR=wrong
+endif
+else
+override FPCDIR=wrong
+endif
+ifdef DEFAULT_FPCDIR
+ifeq ($(FPCDIR),wrong)
+override FPCDIR:=$(subst \,/,$(DEFAULT_FPCDIR))
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
+override FPCDIR=wrong
+endif
+endif
+endif
+ifeq ($(FPCDIR),wrong)
+ifdef inUnix
+override FPCDIR=/usr/local/lib/fpc/$(FPC_VERSION)
+ifeq ($(wildcard $(FPCDIR)/units),)
+override FPCDIR=/usr/lib/fpc/$(FPC_VERSION)
+endif
+else
+override FPCDIR:=$(subst /$(FPC),,$(firstword $(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))))
+override FPCDIR:=$(FPCDIR)/..
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
+override FPCDIR:=$(FPCDIR)/..
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
+override FPCDIR:=$(BASEDIR)
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
+override FPCDIR=c:/pp
+endif
+endif
+endif
+endif
+endif
+ifndef CROSSBINDIR
+CROSSBINDIR:=$(wildcard $(FPCDIR)/bin/$(TARGETSUFFIX))
+endif
+ifneq ($(findstring $(OS_TARGET),darwin iphonesim),)
+ifeq ($(OS_SOURCE),darwin)
+DARWIN2DARWIN=1
+endif
+endif
+ifndef BINUTILSPREFIX
+ifndef CROSSBINDIR
+ifdef CROSSCOMPILE
+ifneq ($(OS_TARGET),msdos)
+ifndef DARWIN2DARWIN
+ifneq ($(CPU_TARGET),jvm)
+BINUTILSPREFIX=$(CPU_TARGET)-$(OS_TARGET)-
+ifeq ($(OS_TARGET),android)
+ifeq ($(CPU_TARGET),arm)
+BINUTILSPREFIX=arm-linux-androideabi-
+else
+ifeq ($(CPU_TARGET),i386)
+BINUTILSPREFIX=i686-linux-android-
+else
+ifeq ($(CPU_TARGET),mipsel)
+BINUTILSPREFIX=mipsel-linux-android-
+endif
+endif
+endif
+endif
+endif
+endif
+else
+BINUTILSPREFIX=$(OS_TARGET)-
+endif
+endif
+endif
+endif
+UNITSDIR:=$(wildcard $(FPCDIR)/units/$(TARGETSUFFIX))
+ifeq ($(UNITSDIR),)
+UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET))
+endif
+PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages $(FPCDIR)/packages/base $(FPCDIR)/packages/extra)
+ifndef FPCFPMAKE
+ifdef CROSSCOMPILE
+ifeq ($(strip $(wildcard $(addsuffix /compiler/ppc$(SRCEXEEXT),$(FPCDIR)))),)
+FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH))))
+ifneq ($(FPCPROG),)
+FPCPROG:=$(firstword $(FPCPROG))
+FPCFPMAKE:=$(shell $(FPCPROG) -PB)
+ifeq ($(strip $(wildcard $(FPCFPMAKE))),)
+FPCFPMAKE:=$(firstword $(FPCPROG))
+endif
+else
+override FPCFPMAKE=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
+endif
+else
+FPCFPMAKE=$(strip $(wildcard $(addsuffix /compiler/ppc$(SRCEXEEXT),$(FPCDIR))))
+FPMAKE_SKIP_CONFIG=-n
+export FPCFPMAKE
+export FPMAKE_SKIP_CONFIG
+endif
+else
+FPMAKE_SKIP_CONFIG=-n
+FPCFPMAKE=$(FPC)
+endif
+endif
+override PACKAGE_NAME=fcl-sound
+override PACKAGE_VERSION=2.7.1
+FPMAKE_BIN_CLEAN=$(wildcard ./fpmake$(SRCEXEEXT))
+ifdef OS_TARGET
+FPC_TARGETOPT+=--os=$(OS_TARGET)
+endif
+ifdef CPU_TARGET
+FPC_TARGETOPT+=--cpu=$(CPU_TARGET)
+endif
+LOCALFPMAKE=./fpmake$(SRCEXEEXT)
+override INSTALL_FPCPACKAGE=y
+ifdef REQUIRE_UNITSDIR
+override UNITSDIR+=$(REQUIRE_UNITSDIR)
+endif
+ifdef REQUIRE_PACKAGESDIR
+override PACKAGESDIR+=$(REQUIRE_PACKAGESDIR)
+endif
+ifdef ZIPINSTALL
+ifneq ($(findstring $(OS_TARGET),$(UNIXs)),)
+UNIXHier=1
+endif
+else
+ifneq ($(findstring $(OS_SOURCE),$(UNIXs)),)
+UNIXHier=1
+endif
+endif
+ifndef INSTALL_PREFIX
+ifdef PREFIX
+INSTALL_PREFIX=$(PREFIX)
+endif
+endif
+ifndef INSTALL_PREFIX
+ifdef UNIXHier
+INSTALL_PREFIX=/usr/local
+else
+ifdef INSTALL_FPCPACKAGE
+INSTALL_BASEDIR:=/pp
+else
+INSTALL_BASEDIR:=/$(PACKAGE_NAME)
+endif
+endif
+endif
+export INSTALL_PREFIX
+ifdef INSTALL_FPCSUBDIR
+export INSTALL_FPCSUBDIR
+endif
+ifndef DIST_DESTDIR
+DIST_DESTDIR:=$(BASEDIR)
+endif
+export DIST_DESTDIR
+ifndef COMPILER_UNITTARGETDIR
+ifdef PACKAGEDIR_MAIN
+COMPILER_UNITTARGETDIR=$(PACKAGEDIR_MAIN)/units/$(TARGETSUFFIX)
+else
+COMPILER_UNITTARGETDIR=units/$(TARGETSUFFIX)
+endif
+endif
+ifndef COMPILER_TARGETDIR
+COMPILER_TARGETDIR=.
+endif
+ifndef INSTALL_BASEDIR
+ifdef UNIXHier
+ifdef INSTALL_FPCPACKAGE
+INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/fpc/$(FPC_VERSION)
+else
+INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/$(PACKAGE_NAME)
+endif
+else
+INSTALL_BASEDIR:=$(INSTALL_PREFIX)
+endif
+endif
+ifndef INSTALL_BINDIR
+ifdef UNIXHier
+INSTALL_BINDIR:=$(INSTALL_PREFIX)/bin
+else
+INSTALL_BINDIR:=$(INSTALL_BASEDIR)/bin
+ifdef INSTALL_FPCPACKAGE
+ifdef CROSSCOMPILE
+ifdef CROSSINSTALL
+INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(SOURCESUFFIX)
+else
+INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX)
+endif
+else
+INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX)
+endif
+endif
+endif
+endif
+ifndef INSTALL_UNITDIR
+INSTALL_UNITDIR:=$(INSTALL_BASEDIR)/units/$(TARGETSUFFIX)
+ifdef INSTALL_FPCPACKAGE
+ifdef PACKAGE_NAME
+INSTALL_UNITDIR:=$(INSTALL_UNITDIR)/$(PACKAGE_NAME)
+endif
+endif
+endif
+ifndef INSTALL_LIBDIR
+ifdef UNIXHier
+INSTALL_LIBDIR:=$(INSTALL_PREFIX)/lib
+else
+INSTALL_LIBDIR:=$(INSTALL_UNITDIR)
+endif
+endif
+ifndef INSTALL_SOURCEDIR
+ifdef UNIXHier
+ifdef BSDhier
+SRCPREFIXDIR=share/src
+else
+ifdef linuxHier
+SRCPREFIXDIR=share/src
+else
+SRCPREFIXDIR=src
+endif
+endif
+ifdef INSTALL_FPCPACKAGE
+ifdef INSTALL_FPCSUBDIR
+INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
+else
+INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
+endif
+else
+INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
+endif
+else
+ifdef INSTALL_FPCPACKAGE
+ifdef INSTALL_FPCSUBDIR
+INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
+else
+INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(PACKAGE_NAME)
+endif
+else
+INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source
+endif
+endif
+endif
+ifndef INSTALL_DOCDIR
+ifdef UNIXHier
+ifdef BSDhier
+DOCPREFIXDIR=share/doc
+else
+ifdef linuxHier
+DOCPREFIXDIR=share/doc
+else
+DOCPREFIXDIR=doc
+endif
+endif
+ifdef INSTALL_FPCPACKAGE
+INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
+else
+INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
+endif
+else
+ifdef INSTALL_FPCPACKAGE
+INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc/$(PACKAGE_NAME)
+else
+INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc
+endif
+endif
+endif
+ifndef INSTALL_EXAMPLEDIR
+ifdef UNIXHier
+ifdef INSTALL_FPCPACKAGE
+ifdef BSDhier
+INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
+else
+ifdef linuxHier
+INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples
+else
+INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)/examples/$(PACKAGE_NAME)
+endif
+endif
+else
+ifdef BSDhier
+INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
+else
+ifdef linuxHier
+INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
+else
+INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
+endif
+endif
+endif
+else
+ifdef INSTALL_FPCPACKAGE
+INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples/$(PACKAGE_NAME)
+else
+INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples
+endif
+endif
+endif
+ifndef INSTALL_DATADIR
+INSTALL_DATADIR=$(INSTALL_BASEDIR)
+endif
+ifndef INSTALL_SHAREDDIR
+INSTALL_SHAREDDIR=$(INSTALL_PREFIX)/lib
+endif
+ifdef CROSSCOMPILE
+ifndef CROSSBINDIR
+CROSSBINDIR:=$(wildcard $(CROSSTARGETDIR)/bin/$(SOURCESUFFIX))
+ifeq ($(CROSSBINDIR),)
+CROSSBINDIR:=$(wildcard $(INSTALL_BASEDIR)/cross/$(TARGETSUFFIX)/bin/$(FULL_SOURCE))
+endif
+endif
+else
+CROSSBINDIR=
+endif
+BATCHEXT=.bat
+LOADEREXT=.as
+EXEEXT=.exe
+PPLEXT=.ppl
+PPUEXT=.ppu
+OEXT=.o
+ASMEXT=.s
+SMARTEXT=.sl
+STATICLIBEXT=.a
+SHAREDLIBEXT=.so
+SHAREDLIBPREFIX=libfp
+STATICLIBPREFIX=libp
+IMPORTLIBPREFIX=libimp
+RSTEXT=.rst
+EXEDBGEXT=.dbg
+ifeq ($(OS_TARGET),go32v1)
+STATICLIBPREFIX=
+SHORTSUFFIX=v1
+endif
+ifeq ($(OS_TARGET),go32v2)
+STATICLIBPREFIX=
+SHORTSUFFIX=dos
+IMPORTLIBPREFIX=
+endif
+ifeq ($(OS_TARGET),watcom)
+STATICLIBPREFIX=
+OEXT=.obj
+ASMEXT=.asm
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=wat
+IMPORTLIBPREFIX=
+endif
+ifneq ($(CPU_TARGET),jvm)
+ifeq ($(OS_TARGET),android)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=lnx
+endif
+endif
+ifeq ($(OS_TARGET),linux)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=lnx
+endif
+ifeq ($(OS_TARGET),freebsd)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=fbs
+endif
+ifeq ($(OS_TARGET),netbsd)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=nbs
+endif
+ifeq ($(OS_TARGET),openbsd)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=obs
+endif
+ifeq ($(OS_TARGET),win32)
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=w32
+endif
+ifeq ($(OS_TARGET),os2)
+BATCHEXT=.cmd
+AOUTEXT=.out
+STATICLIBPREFIX=
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=os2
+ECHO=echo
+IMPORTLIBPREFIX=
+endif
+ifeq ($(OS_TARGET),emx)
+BATCHEXT=.cmd
+AOUTEXT=.out
+STATICLIBPREFIX=
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=emx
+ECHO=echo
+IMPORTLIBPREFIX=
+endif
+ifeq ($(OS_TARGET),amiga)
+EXEEXT=
+SHAREDLIBEXT=.library
+SHORTSUFFIX=amg
+endif
+ifeq ($(OS_TARGET),morphos)
+EXEEXT=
+SHAREDLIBEXT=.library
+SHORTSUFFIX=mos
+endif
+ifeq ($(OS_TARGET),atari)
+EXEEXT=.ttp
+SHORTSUFFIX=ata
+endif
+ifeq ($(OS_TARGET),beos)
+BATCHEXT=.sh
+EXEEXT=
+SHORTSUFFIX=be
+endif
+ifeq ($(OS_TARGET),haiku)
+BATCHEXT=.sh
+EXEEXT=
+SHORTSUFFIX=hai
+endif
+ifeq ($(OS_TARGET),solaris)
+BATCHEXT=.sh
+EXEEXT=
+SHORTSUFFIX=sun
+endif
+ifeq ($(OS_TARGET),qnx)
+BATCHEXT=.sh
+EXEEXT=
+SHORTSUFFIX=qnx
+endif
+ifeq ($(OS_TARGET),netware)
+EXEEXT=.nlm
+STATICLIBPREFIX=
+SHORTSUFFIX=nw
+IMPORTLIBPREFIX=imp
+endif
+ifeq ($(OS_TARGET),netwlibc)
+EXEEXT=.nlm
+STATICLIBPREFIX=
+SHORTSUFFIX=nwl
+IMPORTLIBPREFIX=imp
+endif
+ifeq ($(OS_TARGET),macos)
+BATCHEXT=
+EXEEXT=
+DEBUGSYMEXT=.xcoff
+SHORTSUFFIX=mac
+IMPORTLIBPREFIX=imp
+endif
+ifneq ($(findstring $(OS_TARGET),darwin iphonesim),)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=dwn
+EXEDBGEXT=.dSYM
+endif
+ifeq ($(OS_TARGET),gba)
+EXEEXT=.gba
+SHAREDLIBEXT=.so
+SHORTSUFFIX=gba
+endif
+ifeq ($(OS_TARGET),symbian)
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=symbian
+endif
+ifeq ($(OS_TARGET),NativeNT)
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=nativent
+endif
+ifeq ($(OS_TARGET),wii)
+EXEEXT=.dol
+SHAREDLIBEXT=.so
+SHORTSUFFIX=wii
+endif
+ifeq ($(OS_TARGET),aix)
+BATCHEXT=.sh
+EXEEXT=
+SHORTSUFFIX=aix
+endif
+ifeq ($(OS_TARGET),java)
+OEXT=.class
+ASMEXT=.j
+SHAREDLIBEXT=.jar
+SHORTSUFFIX=java
+endif
+ifeq ($(CPU_TARGET),jvm)
+ifeq ($(OS_TARGET),android)
+OEXT=.class
+ASMEXT=.j
+SHAREDLIBEXT=.jar
+SHORTSUFFIX=android
+endif
+endif
+ifeq ($(OS_TARGET),msdos)
+STATICLIBPREFIX=
+STATICLIBEXT=.a
+SHORTSUFFIX=d16
+endif
+ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
+FPCMADE=fpcmade.$(SHORTSUFFIX)
+ZIPSUFFIX=$(SHORTSUFFIX)
+ZIPCROSSPREFIX=
+ZIPSOURCESUFFIX=src
+ZIPEXAMPLESUFFIX=exm
+else
+FPCMADE=fpcmade.$(TARGETSUFFIX)
+ZIPSOURCESUFFIX=.source
+ZIPEXAMPLESUFFIX=.examples
+ifdef CROSSCOMPILE
+ZIPSUFFIX=.$(SOURCESUFFIX)
+ZIPCROSSPREFIX=$(TARGETSUFFIX)-
+else
+ZIPSUFFIX=.$(TARGETSUFFIX)
+ZIPCROSSPREFIX=
+endif
+endif
+ifndef ECHO
+ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ECHO),)
+ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ECHO),)
+ECHO= __missing_command_ECHO
+else
+ECHO:=$(firstword $(ECHO))
+endif
+else
+ECHO:=$(firstword $(ECHO))
+endif
+endif
+export ECHO
+ifndef DATE
+DATE:=$(strip $(wildcard $(addsuffix /gdate$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(DATE),)
+DATE:=$(strip $(wildcard $(addsuffix /date$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(DATE),)
+DATE= __missing_command_DATE
+else
+DATE:=$(firstword $(DATE))
+endif
+else
+DATE:=$(firstword $(DATE))
+endif
+endif
+export DATE
+ifndef GINSTALL
+GINSTALL:=$(strip $(wildcard $(addsuffix /ginstall$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(GINSTALL),)
+GINSTALL:=$(strip $(wildcard $(addsuffix /install$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(GINSTALL),)
+GINSTALL= __missing_command_GINSTALL
+else
+GINSTALL:=$(firstword $(GINSTALL))
+endif
+else
+GINSTALL:=$(firstword $(GINSTALL))
+endif
+endif
+export GINSTALL
+ifndef CPPROG
+CPPROG:=$(strip $(wildcard $(addsuffix /cp$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(CPPROG),)
+CPPROG= __missing_command_CPPROG
+else
+CPPROG:=$(firstword $(CPPROG))
+endif
+endif
+export CPPROG
+ifndef RMPROG
+RMPROG:=$(strip $(wildcard $(addsuffix /rm$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(RMPROG),)
+RMPROG= __missing_command_RMPROG
+else
+RMPROG:=$(firstword $(RMPROG))
+endif
+endif
+export RMPROG
+ifndef MVPROG
+MVPROG:=$(strip $(wildcard $(addsuffix /mv$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(MVPROG),)
+MVPROG= __missing_command_MVPROG
+else
+MVPROG:=$(firstword $(MVPROG))
+endif
+endif
+export MVPROG
+ifndef MKDIRPROG
+MKDIRPROG:=$(strip $(wildcard $(addsuffix /gmkdir$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(MKDIRPROG),)
+MKDIRPROG:=$(strip $(wildcard $(addsuffix /mkdir$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(MKDIRPROG),)
+MKDIRPROG= __missing_command_MKDIRPROG
+else
+MKDIRPROG:=$(firstword $(MKDIRPROG))
+endif
+else
+MKDIRPROG:=$(firstword $(MKDIRPROG))
+endif
+endif
+export MKDIRPROG
+ifndef ECHOREDIR
+ifndef inUnix
+ECHOREDIR=echo
+else
+ECHOREDIR=$(ECHO)
+endif
+endif
+ifndef COPY
+COPY:=$(CPPROG) -fp
+endif
+ifndef COPYTREE
+COPYTREE:=$(CPPROG) -Rfp
+endif
+ifndef MKDIRTREE
+MKDIRTREE:=$(MKDIRPROG) -p
+endif
+ifndef MOVE
+MOVE:=$(MVPROG) -f
+endif
+ifndef DEL
+DEL:=$(RMPROG) -f
+endif
+ifndef DELTREE
+DELTREE:=$(RMPROG) -rf
+endif
+ifndef INSTALL
+ifdef inUnix
+INSTALL:=$(GINSTALL) -c -m 644
+else
+INSTALL:=$(COPY)
+endif
+endif
+ifndef INSTALLEXE
+ifdef inUnix
+INSTALLEXE:=$(GINSTALL) -c -m 755
+else
+INSTALLEXE:=$(COPY)
+endif
+endif
+ifndef MKDIR
+MKDIR:=$(GINSTALL) -m 755 -d
+endif
+export ECHOREDIR COPY COPYTREE MOVE DEL DELTREE INSTALL INSTALLEXE MKDIR
+ifndef PPUMOVE
+PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(PPUMOVE),)
+PPUMOVE= __missing_command_PPUMOVE
+else
+PPUMOVE:=$(firstword $(PPUMOVE))
+endif
+endif
+export PPUMOVE
+ifndef FPCMAKE
+FPCMAKE:=$(strip $(wildcard $(addsuffix /fpcmake$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(FPCMAKE),)
+FPCMAKE= __missing_command_FPCMAKE
+else
+FPCMAKE:=$(firstword $(FPCMAKE))
+endif
+endif
+export FPCMAKE
+ifndef ZIPPROG
+ZIPPROG:=$(strip $(wildcard $(addsuffix /zip$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ZIPPROG),)
+ZIPPROG= __missing_command_ZIPPROG
+else
+ZIPPROG:=$(firstword $(ZIPPROG))
+endif
+endif
+export ZIPPROG
+ifndef TARPROG
+TARPROG:=$(strip $(wildcard $(addsuffix /gtar$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(TARPROG),)
+TARPROG:=$(strip $(wildcard $(addsuffix /tar$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(TARPROG),)
+TARPROG= __missing_command_TARPROG
+else
+TARPROG:=$(firstword $(TARPROG))
+endif
+else
+TARPROG:=$(firstword $(TARPROG))
+endif
+endif
+export TARPROG
+ASNAME=$(BINUTILSPREFIX)as
+LDNAME=$(BINUTILSPREFIX)ld
+ARNAME=$(BINUTILSPREFIX)ar
+RCNAME=$(BINUTILSPREFIX)rc
+NASMNAME=$(BINUTILSPREFIX)nasm
+ifndef ASPROG
+ifdef CROSSBINDIR
+ASPROG=$(CROSSBINDIR)/$(ASNAME)$(SRCEXEEXT)
+else
+ASPROG=$(ASNAME)
+endif
+endif
+ifndef LDPROG
+ifdef CROSSBINDIR
+LDPROG=$(CROSSBINDIR)/$(LDNAME)$(SRCEXEEXT)
+else
+LDPROG=$(LDNAME)
+endif
+endif
+ifndef RCPROG
+ifdef CROSSBINDIR
+RCPROG=$(CROSSBINDIR)/$(RCNAME)$(SRCEXEEXT)
+else
+RCPROG=$(RCNAME)
+endif
+endif
+ifndef ARPROG
+ifdef CROSSBINDIR
+ARPROG=$(CROSSBINDIR)/$(ARNAME)$(SRCEXEEXT)
+else
+ARPROG=$(ARNAME)
+endif
+endif
+ifndef NASMPROG
+ifdef CROSSBINDIR
+NASMPROG=$(CROSSBINDIR)/$(NASMNAME)$(SRCEXEEXT)
+else
+NASMPROG=$(NASMNAME)
+endif
+endif
+AS=$(ASPROG)
+LD=$(LDPROG)
+RC=$(RCPROG)
+AR=$(ARPROG)
+NASM=$(NASMPROG)
+ifdef inUnix
+PPAS=./ppas$(SRCBATCHEXT)
+else
+PPAS=ppas$(SRCBATCHEXT)
+endif
+ifdef inUnix
+LDCONFIG=ldconfig
+else
+LDCONFIG=
+endif
+ifdef DATE
+DATESTR:=$(shell $(DATE) +%Y%m%d)
+else
+DATESTR=
+endif
+ZIPOPT=-9
+ZIPEXT=.zip
+ifeq ($(USETAR),bz2)
+TAROPT=vj
+TAREXT=.tar.bz2
+else
+TAROPT=vz
+TAREXT=.tar.gz
+endif
+override REQUIRE_PACKAGES=rtl fpmkunit
+ifeq ($(FULL_TARGET),i386-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),i386-go32v2)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),i386-win32)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),i386-os2)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),i386-freebsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),i386-beos)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),i386-haiku)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),i386-netbsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),i386-solaris)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),i386-qnx)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),i386-netware)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),i386-openbsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),i386-wdosx)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),i386-darwin)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),i386-emx)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),i386-watcom)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),i386-netwlibc)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),i386-wince)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),i386-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),i386-symbian)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),i386-nativent)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),i386-iphonesim)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),i386-android)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),m68k-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),m68k-freebsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),m68k-netbsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),m68k-amiga)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),m68k-atari)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),m68k-openbsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),m68k-palmos)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),m68k-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),powerpc-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),powerpc-netbsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),powerpc-amiga)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),powerpc-macos)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),powerpc-darwin)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),powerpc-morphos)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),powerpc-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),powerpc-wii)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),powerpc-aix)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),sparc-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),sparc-netbsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),sparc-solaris)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),sparc-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),x86_64-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),x86_64-freebsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),x86_64-netbsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),x86_64-solaris)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),x86_64-openbsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),x86_64-darwin)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),x86_64-win64)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),x86_64-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),arm-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),arm-palmos)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),arm-darwin)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),arm-wince)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),arm-gba)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),arm-nds)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),arm-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),arm-symbian)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),arm-android)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),powerpc64-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),powerpc64-darwin)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),powerpc64-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),powerpc64-aix)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),avr-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),armeb-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),armeb-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),mips-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),mipsel-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),mipsel-android)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),jvm-java)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),jvm-android)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifeq ($(FULL_TARGET),i8086-msdos)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+endif
+ifdef REQUIRE_PACKAGES_RTL
+PACKAGEDIR_RTL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
+ifneq ($(PACKAGEDIR_RTL),)
+ifneq ($(wildcard $(PACKAGEDIR_RTL)/units/$(TARGETSUFFIX)),)
+UNITDIR_RTL=$(PACKAGEDIR_RTL)/units/$(TARGETSUFFIX)
+else
+UNITDIR_RTL=$(PACKAGEDIR_RTL)
+endif
+ifneq ($(wildcard $(PACKAGEDIR_RTL)/units/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_RTL=$(PACKAGEDIR_RTL)/units/$(SOURCESUFFIX)
+else
+ifneq ($(wildcard $(PACKAGEDIR_RTL)/units_bs/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_RTL=$(PACKAGEDIR_RTL)/units_bs/$(SOURCESUFFIX)
+else
+UNITDIR_FPMAKE_RTL=$(PACKAGEDIR_RTL)
+endif
+endif
+ifdef CHECKDEPEND
+$(PACKAGEDIR_RTL)/$(OS_TARGET)/$(FPCMADE):
+ $(MAKE) -C $(PACKAGEDIR_RTL)/$(OS_TARGET) $(FPCMADE)
+override ALLDEPENDENCIES+=$(PACKAGEDIR_RTL)/$(OS_TARGET)/$(FPCMADE)
+endif
+else
+PACKAGEDIR_RTL=
+UNITDIR_RTL:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /rtl/Package.fpc,$(UNITSDIR)))))
+ifneq ($(UNITDIR_RTL),)
+UNITDIR_RTL:=$(firstword $(UNITDIR_RTL))
+else
+UNITDIR_RTL=
+endif
+endif
+ifdef UNITDIR_RTL
+override COMPILER_UNITDIR+=$(UNITDIR_RTL)
+endif
+ifdef UNITDIR_FPMAKE_RTL
+override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_RTL)
+endif
+endif
+ifdef REQUIRE_PACKAGES_PASZLIB
+PACKAGEDIR_PASZLIB:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /paszlib/Makefile.fpc,$(PACKAGESDIR))))))
+ifneq ($(PACKAGEDIR_PASZLIB),)
+ifneq ($(wildcard $(PACKAGEDIR_PASZLIB)/units/$(TARGETSUFFIX)),)
+UNITDIR_PASZLIB=$(PACKAGEDIR_PASZLIB)/units/$(TARGETSUFFIX)
+else
+UNITDIR_PASZLIB=$(PACKAGEDIR_PASZLIB)
+endif
+ifneq ($(wildcard $(PACKAGEDIR_PASZLIB)/units/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_PASZLIB=$(PACKAGEDIR_PASZLIB)/units/$(SOURCESUFFIX)
+else
+ifneq ($(wildcard $(PACKAGEDIR_PASZLIB)/units_bs/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_PASZLIB=$(PACKAGEDIR_PASZLIB)/units_bs/$(SOURCESUFFIX)
+else
+UNITDIR_FPMAKE_PASZLIB=$(PACKAGEDIR_PASZLIB)
+endif
+endif
+ifdef CHECKDEPEND
+$(PACKAGEDIR_PASZLIB)/$(FPCMADE):
+ $(MAKE) -C $(PACKAGEDIR_PASZLIB) $(FPCMADE)
+override ALLDEPENDENCIES+=$(PACKAGEDIR_PASZLIB)/$(FPCMADE)
+endif
+else
+PACKAGEDIR_PASZLIB=
+UNITDIR_PASZLIB:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /paszlib/Package.fpc,$(UNITSDIR)))))
+ifneq ($(UNITDIR_PASZLIB),)
+UNITDIR_PASZLIB:=$(firstword $(UNITDIR_PASZLIB))
+else
+UNITDIR_PASZLIB=
+endif
+endif
+ifdef UNITDIR_PASZLIB
+override COMPILER_UNITDIR+=$(UNITDIR_PASZLIB)
+endif
+ifdef UNITDIR_FPMAKE_PASZLIB
+override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_PASZLIB)
+endif
+endif
+ifdef REQUIRE_PACKAGES_FCL-PROCESS
+PACKAGEDIR_FCL-PROCESS:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fcl-process/Makefile.fpc,$(PACKAGESDIR))))))
+ifneq ($(PACKAGEDIR_FCL-PROCESS),)
+ifneq ($(wildcard $(PACKAGEDIR_FCL-PROCESS)/units/$(TARGETSUFFIX)),)
+UNITDIR_FCL-PROCESS=$(PACKAGEDIR_FCL-PROCESS)/units/$(TARGETSUFFIX)
+else
+UNITDIR_FCL-PROCESS=$(PACKAGEDIR_FCL-PROCESS)
+endif
+ifneq ($(wildcard $(PACKAGEDIR_FCL-PROCESS)/units/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_FCL-PROCESS=$(PACKAGEDIR_FCL-PROCESS)/units/$(SOURCESUFFIX)
+else
+ifneq ($(wildcard $(PACKAGEDIR_FCL-PROCESS)/units_bs/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_FCL-PROCESS=$(PACKAGEDIR_FCL-PROCESS)/units_bs/$(SOURCESUFFIX)
+else
+UNITDIR_FPMAKE_FCL-PROCESS=$(PACKAGEDIR_FCL-PROCESS)
+endif
+endif
+ifdef CHECKDEPEND
+$(PACKAGEDIR_FCL-PROCESS)/$(FPCMADE):
+ $(MAKE) -C $(PACKAGEDIR_FCL-PROCESS) $(FPCMADE)
+override ALLDEPENDENCIES+=$(PACKAGEDIR_FCL-PROCESS)/$(FPCMADE)
+endif
+else
+PACKAGEDIR_FCL-PROCESS=
+UNITDIR_FCL-PROCESS:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /fcl-process/Package.fpc,$(UNITSDIR)))))
+ifneq ($(UNITDIR_FCL-PROCESS),)
+UNITDIR_FCL-PROCESS:=$(firstword $(UNITDIR_FCL-PROCESS))
+else
+UNITDIR_FCL-PROCESS=
+endif
+endif
+ifdef UNITDIR_FCL-PROCESS
+override COMPILER_UNITDIR+=$(UNITDIR_FCL-PROCESS)
+endif
+ifdef UNITDIR_FPMAKE_FCL-PROCESS
+override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_FCL-PROCESS)
+endif
+endif
+ifdef REQUIRE_PACKAGES_HASH
+PACKAGEDIR_HASH:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /hash/Makefile.fpc,$(PACKAGESDIR))))))
+ifneq ($(PACKAGEDIR_HASH),)
+ifneq ($(wildcard $(PACKAGEDIR_HASH)/units/$(TARGETSUFFIX)),)
+UNITDIR_HASH=$(PACKAGEDIR_HASH)/units/$(TARGETSUFFIX)
+else
+UNITDIR_HASH=$(PACKAGEDIR_HASH)
+endif
+ifneq ($(wildcard $(PACKAGEDIR_HASH)/units/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_HASH=$(PACKAGEDIR_HASH)/units/$(SOURCESUFFIX)
+else
+ifneq ($(wildcard $(PACKAGEDIR_HASH)/units_bs/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_HASH=$(PACKAGEDIR_HASH)/units_bs/$(SOURCESUFFIX)
+else
+UNITDIR_FPMAKE_HASH=$(PACKAGEDIR_HASH)
+endif
+endif
+ifdef CHECKDEPEND
+$(PACKAGEDIR_HASH)/$(FPCMADE):
+ $(MAKE) -C $(PACKAGEDIR_HASH) $(FPCMADE)
+override ALLDEPENDENCIES+=$(PACKAGEDIR_HASH)/$(FPCMADE)
+endif
+else
+PACKAGEDIR_HASH=
+UNITDIR_HASH:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /hash/Package.fpc,$(UNITSDIR)))))
+ifneq ($(UNITDIR_HASH),)
+UNITDIR_HASH:=$(firstword $(UNITDIR_HASH))
+else
+UNITDIR_HASH=
+endif
+endif
+ifdef UNITDIR_HASH
+override COMPILER_UNITDIR+=$(UNITDIR_HASH)
+endif
+ifdef UNITDIR_FPMAKE_HASH
+override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_HASH)
+endif
+endif
+ifdef REQUIRE_PACKAGES_LIBTAR
+PACKAGEDIR_LIBTAR:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /libtar/Makefile.fpc,$(PACKAGESDIR))))))
+ifneq ($(PACKAGEDIR_LIBTAR),)
+ifneq ($(wildcard $(PACKAGEDIR_LIBTAR)/units/$(TARGETSUFFIX)),)
+UNITDIR_LIBTAR=$(PACKAGEDIR_LIBTAR)/units/$(TARGETSUFFIX)
+else
+UNITDIR_LIBTAR=$(PACKAGEDIR_LIBTAR)
+endif
+ifneq ($(wildcard $(PACKAGEDIR_LIBTAR)/units/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_LIBTAR=$(PACKAGEDIR_LIBTAR)/units/$(SOURCESUFFIX)
+else
+ifneq ($(wildcard $(PACKAGEDIR_LIBTAR)/units_bs/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_LIBTAR=$(PACKAGEDIR_LIBTAR)/units_bs/$(SOURCESUFFIX)
+else
+UNITDIR_FPMAKE_LIBTAR=$(PACKAGEDIR_LIBTAR)
+endif
+endif
+ifdef CHECKDEPEND
+$(PACKAGEDIR_LIBTAR)/$(FPCMADE):
+ $(MAKE) -C $(PACKAGEDIR_LIBTAR) $(FPCMADE)
+override ALLDEPENDENCIES+=$(PACKAGEDIR_LIBTAR)/$(FPCMADE)
+endif
+else
+PACKAGEDIR_LIBTAR=
+UNITDIR_LIBTAR:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /libtar/Package.fpc,$(UNITSDIR)))))
+ifneq ($(UNITDIR_LIBTAR),)
+UNITDIR_LIBTAR:=$(firstword $(UNITDIR_LIBTAR))
+else
+UNITDIR_LIBTAR=
+endif
+endif
+ifdef UNITDIR_LIBTAR
+override COMPILER_UNITDIR+=$(UNITDIR_LIBTAR)
+endif
+ifdef UNITDIR_FPMAKE_LIBTAR
+override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_LIBTAR)
+endif
+endif
+ifdef REQUIRE_PACKAGES_FPMKUNIT
+PACKAGEDIR_FPMKUNIT:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fpmkunit/Makefile.fpc,$(PACKAGESDIR))))))
+ifneq ($(PACKAGEDIR_FPMKUNIT),)
+ifneq ($(wildcard $(PACKAGEDIR_FPMKUNIT)/units/$(TARGETSUFFIX)),)
+UNITDIR_FPMKUNIT=$(PACKAGEDIR_FPMKUNIT)/units/$(TARGETSUFFIX)
+else
+UNITDIR_FPMKUNIT=$(PACKAGEDIR_FPMKUNIT)
+endif
+ifneq ($(wildcard $(PACKAGEDIR_FPMKUNIT)/units/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_FPMKUNIT=$(PACKAGEDIR_FPMKUNIT)/units/$(SOURCESUFFIX)
+else
+ifneq ($(wildcard $(PACKAGEDIR_FPMKUNIT)/units_bs/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_FPMKUNIT=$(PACKAGEDIR_FPMKUNIT)/units_bs/$(SOURCESUFFIX)
+else
+UNITDIR_FPMAKE_FPMKUNIT=$(PACKAGEDIR_FPMKUNIT)
+endif
+endif
+ifdef CHECKDEPEND
+$(PACKAGEDIR_FPMKUNIT)/$(FPCMADE):
+ $(MAKE) -C $(PACKAGEDIR_FPMKUNIT) $(FPCMADE)
+override ALLDEPENDENCIES+=$(PACKAGEDIR_FPMKUNIT)/$(FPCMADE)
+endif
+else
+PACKAGEDIR_FPMKUNIT=
+UNITDIR_FPMKUNIT:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /fpmkunit/Package.fpc,$(UNITSDIR)))))
+ifneq ($(UNITDIR_FPMKUNIT),)
+UNITDIR_FPMKUNIT:=$(firstword $(UNITDIR_FPMKUNIT))
+else
+UNITDIR_FPMKUNIT=
+endif
+endif
+ifdef UNITDIR_FPMKUNIT
+override COMPILER_UNITDIR+=$(UNITDIR_FPMKUNIT)
+endif
+ifdef UNITDIR_FPMAKE_FPMKUNIT
+override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_FPMKUNIT)
+endif
+endif
+ifndef NOCPUDEF
+override FPCOPTDEF=$(ARCH)
+endif
+ifneq ($(OS_TARGET),$(OS_SOURCE))
+override FPCOPT+=-T$(OS_TARGET)
+endif
+ifneq ($(CPU_TARGET),$(CPU_SOURCE))
+override FPCOPT+=-P$(ARCH)
+endif
+ifeq ($(OS_SOURCE),openbsd)
+override FPCOPT+=-FD$(NEW_BINUTILS_PATH)
+override FPCMAKEOPT+=-FD$(NEW_BINUTILS_PATH)
+endif
+ifndef CROSSBOOTSTRAP
+ifneq ($(BINUTILSPREFIX),)
+override FPCOPT+=-XP$(BINUTILSPREFIX)
+endif
+ifneq ($(BINUTILSPREFIX),)
+override FPCOPT+=-Xr$(RLINKPATH)
+endif
+endif
+ifndef CROSSCOMPILE
+ifneq ($(BINUTILSPREFIX),)
+override FPCMAKEOPT+=-XP$(BINUTILSPREFIX)
+endif
+endif
+ifdef UNITDIR
+override FPCOPT+=$(addprefix -Fu,$(UNITDIR))
+endif
+ifdef LIBDIR
+override FPCOPT+=$(addprefix -Fl,$(LIBDIR))
+endif
+ifdef OBJDIR
+override FPCOPT+=$(addprefix -Fo,$(OBJDIR))
+endif
+ifdef INCDIR
+override FPCOPT+=$(addprefix -Fi,$(INCDIR))
+endif
+ifdef LINKSMART
+override FPCOPT+=-XX
+endif
+ifdef CREATESMART
+override FPCOPT+=-CX
+endif
+ifdef DEBUG
+override FPCOPT+=-gl
+override FPCOPTDEF+=DEBUG
+endif
+ifdef RELEASE
+ifneq ($(findstring 2.0.,$(FPC_VERSION)),)
+ifeq ($(CPU_TARGET),i386)
+FPCCPUOPT:=-OG2p3
+endif
+ifeq ($(CPU_TARGET),powerpc)
+FPCCPUOPT:=-O1r
+endif
+else
+FPCCPUOPT:=-O2
+endif
+override FPCOPT+=-Ur -Xs $(FPCCPUOPT) -n
+override FPCOPTDEF+=RELEASE
+endif
+ifdef STRIP
+override FPCOPT+=-Xs
+endif
+ifdef OPTIMIZE
+override FPCOPT+=-O2
+endif
+ifdef VERBOSE
+override FPCOPT+=-vwni
+endif
+ifdef COMPILER_OPTIONS
+override FPCOPT+=$(COMPILER_OPTIONS)
+endif
+ifdef COMPILER_UNITDIR
+override FPCOPT+=$(addprefix -Fu,$(COMPILER_UNITDIR))
+endif
+ifdef COMPILER_LIBRARYDIR
+override FPCOPT+=$(addprefix -Fl,$(COMPILER_LIBRARYDIR))
+endif
+ifdef COMPILER_OBJECTDIR
+override FPCOPT+=$(addprefix -Fo,$(COMPILER_OBJECTDIR))
+endif
+ifdef COMPILER_INCLUDEDIR
+override FPCOPT+=$(addprefix -Fi,$(COMPILER_INCLUDEDIR))
+endif
+ifdef CROSSBINDIR
+override FPCOPT+=-FD$(CROSSBINDIR)
+endif
+ifdef COMPILER_TARGETDIR
+override FPCOPT+=-FE$(COMPILER_TARGETDIR)
+ifeq ($(COMPILER_TARGETDIR),.)
+override TARGETDIRPREFIX=
+else
+override TARGETDIRPREFIX=$(COMPILER_TARGETDIR)/
+endif
+endif
+ifdef COMPILER_UNITTARGETDIR
+override FPCOPT+=-FU$(COMPILER_UNITTARGETDIR)
+ifeq ($(COMPILER_UNITTARGETDIR),.)
+override UNITTARGETDIRPREFIX=
+else
+override UNITTARGETDIRPREFIX=$(COMPILER_UNITTARGETDIR)/
+endif
+else
+ifdef COMPILER_TARGETDIR
+override COMPILER_UNITTARGETDIR=$(COMPILER_TARGETDIR)
+override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX)
+endif
+endif
+ifdef CREATESHARED
+override FPCOPT+=-Cg
+endif
+ifneq ($(findstring $(OS_TARGET),freebsd openbsd netbsd linux solaris),)
+ifeq ($(CPU_TARGET),x86_64)
+override FPCOPT+=-Cg
+endif
+endif
+ifdef LINKSHARED
+endif
+ifdef OPT
+override FPCOPT+=$(OPT)
+endif
+ifdef FPCOPTDEF
+override FPCOPT+=$(addprefix -d,$(FPCOPTDEF))
+endif
+ifdef CFGFILE
+override FPCOPT+=@$(CFGFILE)
+endif
+ifdef USEENV
+override FPCEXTCMD:=$(FPCOPT)
+override FPCOPT:=!FPCEXTCMD
+export FPCEXTCMD
+endif
+override AFULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
+override AFULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
+ifneq ($(AFULL_TARGET),$(AFULL_SOURCE))
+override ACROSSCOMPILE=1
+endif
+ifdef ACROSSCOMPILE
+override FPCOPT+=$(CROSSOPT)
+endif
+override COMPILER:=$(strip $(FPC) $(FPCOPT))
+ifeq (,$(findstring -s ,$(COMPILER)))
+EXECPPAS=
+else
+ifeq ($(FULL_SOURCE),$(FULL_TARGET))
+ifdef RUNBATCH
+EXECPPAS:=@$(RUNBATCH) $(PPAS)
+else
+EXECPPAS:=@$(PPAS)
+endif
+endif
+endif
+ifdef TARGET_RSTS
+override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS))
+override CLEANRSTFILES+=$(RSTFILES)
+endif
+.PHONY: fpc_install fpc_sourceinstall fpc_exampleinstall
+ifdef INSTALL_UNITS
+override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(INSTALL_UNITS))
+endif
+ifdef INSTALL_BUILDUNIT
+override INSTALLPPUFILES:=$(filter-out $(INSTALL_BUILDUNIT)$(PPUEXT),$(INSTALLPPUFILES))
+endif
+ifdef INSTALLPPUFILES
+override INSTALLPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES)))
+ifneq ($(UNITTARGETDIRPREFIX),)
+override INSTALLPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(notdir $(INSTALLPPUFILES)))
+override INSTALLPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(notdir $(INSTALLPPULINKFILES))))
+endif
+override INSTALL_CREATEPACKAGEFPC=1
+endif
+ifdef INSTALLEXEFILES
+ifneq ($(TARGETDIRPREFIX),)
+override INSTALLEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(notdir $(INSTALLEXEFILES)))
+endif
+endif
+fpc_install: all $(INSTALLTARGET)
+ifdef INSTALLEXEFILES
+ $(MKDIR) $(INSTALL_BINDIR)
+ $(INSTALLEXE) $(INSTALLEXEFILES) $(INSTALL_BINDIR)
+endif
+ifdef INSTALL_CREATEPACKAGEFPC
+ifdef FPCMAKE
+ifdef PACKAGE_VERSION
+ifneq ($(wildcard Makefile.fpc),)
+ $(FPCMAKE) -p -T$(CPU_TARGET)-$(OS_TARGET) Makefile.fpc
+ $(MKDIR) $(INSTALL_UNITDIR)
+ $(INSTALL) Package.fpc $(INSTALL_UNITDIR)
+endif
+endif
+endif
+endif
+ifdef INSTALLPPUFILES
+ $(MKDIR) $(INSTALL_UNITDIR)
+ $(INSTALL) $(INSTALLPPUFILES) $(INSTALL_UNITDIR)
+ifneq ($(INSTALLPPULINKFILES),)
+ $(INSTALL) $(INSTALLPPULINKFILES) $(INSTALL_UNITDIR)
+endif
+ifneq ($(wildcard $(LIB_FULLNAME)),)
+ $(MKDIR) $(INSTALL_LIBDIR)
+ $(INSTALL) $(LIB_FULLNAME) $(INSTALL_LIBDIR)
+ifdef inUnix
+ ln -sf $(LIB_FULLNAME) $(INSTALL_LIBDIR)/$(LIB_NAME)
+endif
+endif
+endif
+ifdef INSTALL_FILES
+ $(MKDIR) $(INSTALL_DATADIR)
+ $(INSTALL) $(INSTALL_FILES) $(INSTALL_DATADIR)
+endif
+fpc_sourceinstall: distclean
+ $(MKDIR) $(INSTALL_SOURCEDIR)
+ $(COPYTREE) $(BASEDIR)/* $(INSTALL_SOURCEDIR)
+fpc_exampleinstall: $(addsuffix _distclean,$(TARGET_EXAMPLEDIRS))
+ifdef HASEXAMPLES
+ $(MKDIR) $(INSTALL_EXAMPLEDIR)
+endif
+ifdef EXAMPLESOURCEFILES
+ $(COPY) $(EXAMPLESOURCEFILES) $(INSTALL_EXAMPLEDIR)
+endif
+ifdef TARGET_EXAMPLEDIRS
+ $(COPYTREE) $(addsuffix /*,$(TARGET_EXAMPLEDIRS)) $(INSTALL_EXAMPLEDIR)
+endif
+.PHONY: fpc_distinstall
+fpc_distinstall: install exampleinstall
+.PHONY: fpc_zipinstall fpc_zipsourceinstall fpc_zipexampleinstall
+ifndef PACKDIR
+ifndef inUnix
+PACKDIR=$(BASEDIR)/../fpc-pack
+else
+PACKDIR=/tmp/fpc-pack
+endif
+endif
+ifndef ZIPNAME
+ifdef DIST_ZIPNAME
+ZIPNAME=$(DIST_ZIPNAME)
+else
+ZIPNAME=$(PACKAGE_NAME)
+endif
+endif
+ifndef FULLZIPNAME
+FULLZIPNAME=$(ZIPCROSSPREFIX)$(ZIPPREFIX)$(ZIPNAME)$(ZIPSUFFIX)
+endif
+ifndef ZIPTARGET
+ifdef DIST_ZIPTARGET
+ZIPTARGET=DIST_ZIPTARGET
+else
+ZIPTARGET=install
+endif
+endif
+ifndef USEZIP
+ifdef inUnix
+USETAR=1
+endif
+endif
+ifndef inUnix
+USEZIPWRAPPER=1
+endif
+ifdef USEZIPWRAPPER
+ZIPPATHSEP=$(PATHSEP)
+ZIPWRAPPER=$(subst /,$(PATHSEP),$(DIST_DESTDIR)/fpczip$(SRCBATCHEXT))
+else
+ZIPPATHSEP=/
+endif
+ZIPCMD_CDPACK:=cd $(subst /,$(ZIPPATHSEP),$(PACKDIR))
+ZIPCMD_CDBASE:=cd $(subst /,$(ZIPPATHSEP),$(BASEDIR))
+ifdef USETAR
+ZIPDESTFILE:=$(DIST_DESTDIR)/$(FULLZIPNAME)$(TAREXT)
+ZIPCMD_ZIP:=$(TARPROG) c$(TAROPT)f $(ZIPDESTFILE) *
+else
+ZIPDESTFILE:=$(DIST_DESTDIR)/$(FULLZIPNAME)$(ZIPEXT)
+ZIPCMD_ZIP:=$(subst /,$(ZIPPATHSEP),$(ZIPPROG)) -Dr $(ZIPOPT) $(ZIPDESTFILE) *
+endif
+fpc_zipinstall:
+ $(MAKE) $(ZIPTARGET) INSTALL_PREFIX=$(PACKDIR) ZIPINSTALL=1
+ $(MKDIR) $(DIST_DESTDIR)
+ $(DEL) $(ZIPDESTFILE)
+ifdef USEZIPWRAPPER
+ifneq ($(ECHOREDIR),echo)
+ $(ECHOREDIR) -e "$(subst \,\\,$(ZIPCMD_CDPACK))" > $(ZIPWRAPPER)
+ $(ECHOREDIR) -e "$(subst \,\\,$(ZIPCMD_ZIP))" >> $(ZIPWRAPPER)
+ $(ECHOREDIR) -e "$(subst \,\\,$(ZIPCMD_CDBASE))" >> $(ZIPWRAPPER)
+else
+ echo $(ZIPCMD_CDPACK) > $(ZIPWRAPPER)
+ echo $(ZIPCMD_ZIP) >> $(ZIPWRAPPER)
+ echo $(ZIPCMD_CDBASE) >> $(ZIPWRAPPER)
+endif
+ifdef inUnix
+ /bin/sh $(ZIPWRAPPER)
+else
+ifdef RUNBATCH
+ $(RUNBATCH) $(ZIPWRAPPER)
+else
+ $(ZIPWRAPPER)
+endif
+endif
+ $(DEL) $(ZIPWRAPPER)
+else
+ $(ZIPCMD_CDPACK) ; $(ZIPCMD_ZIP) ; $(ZIPCMD_CDBASE)
+endif
+ $(DELTREE) $(PACKDIR)
+fpc_zipsourceinstall:
+ $(MAKE) fpc_zipinstall ZIPTARGET=sourceinstall ZIPSUFFIX=$(ZIPSOURCESUFFIX)
+fpc_zipexampleinstall:
+ifdef HASEXAMPLES
+ $(MAKE) fpc_zipinstall ZIPTARGET=exampleinstall ZIPSUFFIX=$(ZIPEXAMPLESUFFIX)
+endif
+fpc_zipdistinstall:
+ $(MAKE) fpc_zipinstall ZIPTARGET=distinstall
+.PHONY: fpc_clean fpc_cleanall fpc_distclean
+ifdef EXEFILES
+override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES))
+override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
+endif
+ifdef CLEAN_PROGRAMS
+override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
+override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
+endif
+ifdef CLEAN_UNITS
+override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(CLEAN_UNITS))
+endif
+ifdef CLEANPPUFILES
+override CLEANPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES)))
+ifdef DEBUGSYMEXT
+override CLEANPPULINKFILES+=$(subst $(PPUEXT),$(DEBUGSYMEXT),$(CLEANPPUFILES))
+endif
+override CLEANPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPUFILES))
+override CLEANPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPULINKFILES)))
+endif
+fpc_clean: $(CLEANTARGET)
+ifdef CLEANEXEFILES
+ -$(DEL) $(CLEANEXEFILES)
+endif
+ifdef CLEANEXEDBGFILES
+ -$(DELTREE) $(CLEANEXEDBGFILES)
+endif
+ifdef CLEANPPUFILES
+ -$(DEL) $(CLEANPPUFILES)
+endif
+ifneq ($(CLEANPPULINKFILES),)
+ -$(DEL) $(CLEANPPULINKFILES)
+endif
+ifdef CLEANRSTFILES
+ -$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
+endif
+ifdef CLEAN_FILES
+ -$(DEL) $(CLEAN_FILES)
+endif
+ifdef LIB_NAME
+ -$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
+endif
+ -$(DEL) $(FPCMADE) Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
+ -$(DEL) *$(ASMEXT) *_ppas$(BATCHEXT)
+fpc_cleanall: $(CLEANTARGET)
+ifdef CLEANEXEFILES
+ -$(DEL) $(CLEANEXEFILES)
+endif
+ifdef COMPILER_UNITTARGETDIR
+ifdef CLEANPPUFILES
+ -$(DEL) $(CLEANPPUFILES)
+endif
+ifneq ($(CLEANPPULINKFILES),)
+ -$(DEL) $(CLEANPPULINKFILES)
+endif
+ifdef CLEANRSTFILES
+ -$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
+endif
+endif
+ifdef CLEAN_FILES
+ -$(DEL) $(CLEAN_FILES)
+endif
+ -$(DELTREE) units
+ -$(DEL) *$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
+ifneq ($(PPUEXT),.ppu)
+ -$(DEL) *.o *.ppu *.a
+endif
+ -$(DELTREE) *$(SMARTEXT)
+ -$(DEL) fpcmade.* Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
+ -$(DEL) *_ppas$(BATCHEXT)
+ifdef AOUTEXT
+ -$(DEL) *$(AOUTEXT)
+endif
+ifdef DEBUGSYMEXT
+ -$(DEL) *$(DEBUGSYMEXT)
+endif
+fpc_distclean: cleanall
+.PHONY: fpc_baseinfo
+override INFORULES+=fpc_baseinfo
+fpc_baseinfo:
+ @$(ECHO)
+ @$(ECHO) == Package info ==
+ @$(ECHO) Package Name..... $(PACKAGE_NAME)
+ @$(ECHO) Package Version.. $(PACKAGE_VERSION)
+ @$(ECHO)
+ @$(ECHO) == Configuration info ==
+ @$(ECHO)
+ @$(ECHO) FPC.......... $(FPC)
+ @$(ECHO) FPC Version.. $(FPC_VERSION)
+ @$(ECHO) Source CPU... $(CPU_SOURCE)
+ @$(ECHO) Target CPU... $(CPU_TARGET)
+ @$(ECHO) Source OS.... $(OS_SOURCE)
+ @$(ECHO) Target OS.... $(OS_TARGET)
+ @$(ECHO) Full Source.. $(FULL_SOURCE)
+ @$(ECHO) Full Target.. $(FULL_TARGET)
+ @$(ECHO) SourceSuffix. $(SOURCESUFFIX)
+ @$(ECHO) TargetSuffix. $(TARGETSUFFIX)
+ @$(ECHO) FPC fpmake... $(FPCFPMAKE)
+ @$(ECHO)
+ @$(ECHO) == Directory info ==
+ @$(ECHO)
+ @$(ECHO) Required pkgs... $(REQUIRE_PACKAGES)
+ @$(ECHO)
+ @$(ECHO) Basedir......... $(BASEDIR)
+ @$(ECHO) FPCDir.......... $(FPCDIR)
+ @$(ECHO) CrossBinDir..... $(CROSSBINDIR)
+ @$(ECHO) UnitsDir........ $(UNITSDIR)
+ @$(ECHO) PackagesDir..... $(PACKAGESDIR)
+ @$(ECHO)
+ @$(ECHO) GCC library..... $(GCCLIBDIR)
+ @$(ECHO) Other library... $(OTHERLIBDIR)
+ @$(ECHO)
+ @$(ECHO) == Tools info ==
+ @$(ECHO)
+ @$(ECHO) As........ $(AS)
+ @$(ECHO) Ld........ $(LD)
+ @$(ECHO) Ar........ $(AR)
+ @$(ECHO) Rc........ $(RC)
+ @$(ECHO)
+ @$(ECHO) Mv........ $(MVPROG)
+ @$(ECHO) Cp........ $(CPPROG)
+ @$(ECHO) Rm........ $(RMPROG)
+ @$(ECHO) GInstall.. $(GINSTALL)
+ @$(ECHO) Echo...... $(ECHO)
+ @$(ECHO) Shell..... $(SHELL)
+ @$(ECHO) Date...... $(DATE)
+ @$(ECHO) FPCMake... $(FPCMAKE)
+ @$(ECHO) PPUMove... $(PPUMOVE)
+ @$(ECHO) Zip....... $(ZIPPROG)
+ @$(ECHO)
+ @$(ECHO) == Object info ==
+ @$(ECHO)
+ @$(ECHO) Target Loaders........ $(TARGET_LOADERS)
+ @$(ECHO) Target Units.......... $(TARGET_UNITS)
+ @$(ECHO) Target Implicit Units. $(TARGET_IMPLICITUNITS)
+ @$(ECHO) Target Programs....... $(TARGET_PROGRAMS)
+ @$(ECHO) Target Dirs........... $(TARGET_DIRS)
+ @$(ECHO) Target Examples....... $(TARGET_EXAMPLES)
+ @$(ECHO) Target ExampleDirs.... $(TARGET_EXAMPLEDIRS)
+ @$(ECHO)
+ @$(ECHO) Clean Units......... $(CLEAN_UNITS)
+ @$(ECHO) Clean Files......... $(CLEAN_FILES)
+ @$(ECHO)
+ @$(ECHO) Install Units....... $(INSTALL_UNITS)
+ @$(ECHO) Install Files....... $(INSTALL_FILES)
+ @$(ECHO)
+ @$(ECHO) == Install info ==
+ @$(ECHO)
+ @$(ECHO) DateStr.............. $(DATESTR)
+ @$(ECHO) ZipName.............. $(ZIPNAME)
+ @$(ECHO) ZipPrefix............ $(ZIPPREFIX)
+ @$(ECHO) ZipCrossPrefix....... $(ZIPCROSSPREFIX)
+ @$(ECHO) ZipSuffix............ $(ZIPSUFFIX)
+ @$(ECHO) FullZipName.......... $(FULLZIPNAME)
+ @$(ECHO) Install FPC Package.. $(INSTALL_FPCPACKAGE)
+ @$(ECHO)
+ @$(ECHO) Install base dir..... $(INSTALL_BASEDIR)
+ @$(ECHO) Install binary dir... $(INSTALL_BINDIR)
+ @$(ECHO) Install library dir.. $(INSTALL_LIBDIR)
+ @$(ECHO) Install units dir.... $(INSTALL_UNITDIR)
+ @$(ECHO) Install source dir... $(INSTALL_SOURCEDIR)
+ @$(ECHO) Install doc dir...... $(INSTALL_DOCDIR)
+ @$(ECHO) Install example dir.. $(INSTALL_EXAMPLEDIR)
+ @$(ECHO) Install data dir..... $(INSTALL_DATADIR)
+ @$(ECHO)
+ @$(ECHO) Dist destination dir. $(DIST_DESTDIR)
+ @$(ECHO) Dist zip name........ $(DIST_ZIPNAME)
+ @$(ECHO)
+.PHONY: fpc_info
+fpc_info: $(INFORULES)
+.PHONY: fpc_makefile fpc_makefiles fpc_makefile_sub1 fpc_makefile_sub2 \
+ fpc_makefile_dirs
+fpc_makefile:
+ $(FPCMAKE) -w -T$(OS_TARGET) Makefile.fpc
+fpc_makefile_sub1:
+ifdef TARGET_DIRS
+ $(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_DIRS))
+endif
+ifdef TARGET_EXAMPLEDIRS
+ $(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_EXAMPLEDIRS))
+endif
+fpc_makefile_sub2: $(addsuffix _makefile_dirs,$(TARGET_DIRS) $(TARGET_EXAMPLEDIRS))
+fpc_makefile_dirs: fpc_makefile_sub1 fpc_makefile_sub2
+fpc_makefiles: fpc_makefile fpc_makefile_dirs
+units:
+examples:
+shared:
+sourceinstall: fpc_sourceinstall
+exampleinstall: fpc_exampleinstall
+zipsourceinstall: fpc_zipsourceinstall
+zipexampleinstall: fpc_zipexampleinstall
+zipdistinstall: fpc_zipdistinstall
+info: fpc_info
+makefiles: fpc_makefiles
+.PHONY: units examples shared sourceinstall exampleinstall zipsourceinstall zipexampleinstall zipdistinstall info makefiles
+ifneq ($(wildcard fpcmake.loc),)
+include fpcmake.loc
+endif
+override FPCOPT:=$(filter-out -FU%,$(FPCOPT))
+override FPCOPT:=$(filter-out -FE%,$(FPCOPT))
+ifdef FPMAKEOPT
+FPMAKE_OPT+=$(FPMAKEOPT)
+endif
+FPMAKE_OPT+=--localunitdir=../..
+FPMAKE_OPT+=--globalunitdir=..
+FPMAKE_OPT+=$(FPC_TARGETOPT)
+FPMAKE_OPT+=$(addprefix -o ,$(FPCOPT))
+FPMAKE_OPT+=--compiler=$(FPC)
+FPMAKE_OPT+=-bu
+.NOTPARALLEL:
+fpmake: fpmake.pp
+ $(FPCFPMAKE) fpmake.pp $(FPMAKE_SKIP_CONFIG) $(addprefix -Fu,$(COMPILER_FPMAKE_UNITDIR)) $(FPCMAKEOPT) $(OPT)
+all: fpmake
+ $(LOCALFPMAKE) compile $(FPMAKE_OPT)
+smart: fpmake
+ $(LOCALFPMAKE) compile $(FPMAKE_OPT) -o -XX -o -CX
+release: fpmake
+ $(LOCALFPMAKE) compile $(FPMAKE_OPT) -o -dRELEASE
+debug: fpmake
+ $(LOCALFPMAKE) compile $(FPMAKE_OPT) -o -dDEBUG
+ifeq ($(FPMAKE_BIN_CLEAN),)
+clean:
+else
+clean:
+ $(FPMAKE_BIN_CLEAN) clean $(FPMAKE_OPT)
+endif
+ifeq ($(FPMAKE_BIN_CLEAN),)
+distclean: $(addsuffix _distclean,$(TARGET_DIRS)) fpc_cleanall
+else
+distclean:
+ifdef inUnix
+ { $(FPMAKE_BIN_CLEAN) distclean $(FPMAKE_OPT); if [ $$? != "0" ]; then { echo Something wrong with fpmake exectable. Remove the executable and call make recursively to recover.; $(DEL) $(FPMAKE_BIN_CLEAN); $(MAKE) fpc_cleanall; }; fi; }
+else
+ $(FPMAKE_BIN_CLEAN) distclean $(FPMAKE_OPT)
+endif
+ -$(DEL) $(LOCALFPMAKE)
+endif
+cleanall: distclean
+install: fpmake
+ifdef UNIXHier
+ $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_PREFIX) --baseinstalldir=$(INSTALL_LIBDIR)/fpc/$(FPC_VERSION) --unitinstalldir=$(INSTALL_UNITDIR)
+else
+ $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_BASEDIR) --unitinstalldir=$(INSTALL_UNITDIR)
+endif
+distinstall: fpmake
+ifdef UNIXHier
+ $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_PREFIX) --baseinstalldir=$(INSTALL_LIBDIR)/fpc/$(FPC_VERSION) --unitinstalldir=$(INSTALL_UNITDIR) -ie
+else
+ $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_BASEDIR) --unitinstalldir=$(INSTALL_UNITDIR) -ie
+endif
+zipinstall: fpmake
+ $(LOCALFPMAKE) zipinstall $(FPMAKE_OPT)
diff --git a/packages/fcl-sound/Makefile.fpc b/packages/fcl-sound/Makefile.fpc
new file mode 100644
index 0000000000..b5b3c8a503
--- /dev/null
+++ b/packages/fcl-sound/Makefile.fpc
@@ -0,0 +1,91 @@
+#
+# Makefile.fpc for running fpmake
+#
+
+[package]
+name=fcl-sound
+version=2.7.1
+
+[require]
+packages=rtl fpmkunit
+
+[install]
+fpcpackage=y
+
+[default]
+fpcdir=../..
+
+[prerules]
+FPMAKE_BIN_CLEAN=$(wildcard ./fpmake$(SRCEXEEXT))
+ifdef OS_TARGET
+FPC_TARGETOPT+=--os=$(OS_TARGET)
+endif
+ifdef CPU_TARGET
+FPC_TARGETOPT+=--cpu=$(CPU_TARGET)
+endif
+LOCALFPMAKE=./fpmake$(SRCEXEEXT)
+
+[rules]
+# Do not pass the Makefile's unit and binary target locations. fpmake uses it's own.
+override FPCOPT:=$(filter-out -FU%,$(FPCOPT))
+override FPCOPT:=$(filter-out -FE%,$(FPCOPT))
+# Compose general fpmake-parameters
+ifdef FPMAKEOPT
+FPMAKE_OPT+=$(FPMAKEOPT)
+endif
+FPMAKE_OPT+=--localunitdir=../..
+FPMAKE_OPT+=--globalunitdir=..
+FPMAKE_OPT+=$(FPC_TARGETOPT)
+FPMAKE_OPT+=$(addprefix -o ,$(FPCOPT))
+FPMAKE_OPT+=--compiler=$(FPC)
+FPMAKE_OPT+=-bu
+.NOTPARALLEL:
+
+fpmake: fpmake.pp
+ $(FPCFPMAKE) fpmake.pp $(FPMAKE_SKIP_CONFIG) $(addprefix -Fu,$(COMPILER_FPMAKE_UNITDIR)) $(FPCMAKEOPT) $(OPT)
+all: fpmake
+ $(LOCALFPMAKE) compile $(FPMAKE_OPT)
+smart: fpmake
+ $(LOCALFPMAKE) compile $(FPMAKE_OPT) -o -XX -o -CX
+release: fpmake
+ $(LOCALFPMAKE) compile $(FPMAKE_OPT) -o -dRELEASE
+debug: fpmake
+ $(LOCALFPMAKE) compile $(FPMAKE_OPT) -o -dDEBUG
+# If no fpmake exists and (dist)clean is called, do not try to build fpmake, it will
+# most often fail because the dependencies are cleared.
+# In case of a clean, simply do nothing
+ifeq ($(FPMAKE_BIN_CLEAN),)
+clean:
+else
+clean:
+ $(FPMAKE_BIN_CLEAN) clean $(FPMAKE_OPT)
+endif
+# In case of a distclean, perform an 'old'-style distclean. This to avoid problems
+# when the package is compiled using fpcmake prior to running this clean using fpmake
+ifeq ($(FPMAKE_BIN_CLEAN),)
+distclean: $(addsuffix _distclean,$(TARGET_DIRS)) fpc_cleanall
+else
+distclean:
+ifdef inUnix
+ { $(FPMAKE_BIN_CLEAN) distclean $(FPMAKE_OPT); if [ $$? != "0" ]; then { echo Something wrong with fpmake exectable. Remove the executable and call make recursively to recover.; $(DEL) $(FPMAKE_BIN_CLEAN); $(MAKE) fpc_cleanall; }; fi; }
+else
+ $(FPMAKE_BIN_CLEAN) distclean $(FPMAKE_OPT)
+endif
+ -$(DEL) $(LOCALFPMAKE)
+endif
+cleanall: distclean
+install: fpmake
+ifdef UNIXHier
+ $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_PREFIX) --baseinstalldir=$(INSTALL_LIBDIR)/fpc/$(FPC_VERSION) --unitinstalldir=$(INSTALL_UNITDIR)
+else
+ $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_BASEDIR) --unitinstalldir=$(INSTALL_UNITDIR)
+endif
+# distinstall also installs the example-sources
+distinstall: fpmake
+ifdef UNIXHier
+ $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_PREFIX) --baseinstalldir=$(INSTALL_LIBDIR)/fpc/$(FPC_VERSION) --unitinstalldir=$(INSTALL_UNITDIR) -ie
+else
+ $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_BASEDIR) --unitinstalldir=$(INSTALL_UNITDIR) -ie
+endif
+zipinstall: fpmake
+ $(LOCALFPMAKE) zipinstall $(FPMAKE_OPT)
diff --git a/packages/fcl-sound/fpmake.pp b/packages/fcl-sound/fpmake.pp
new file mode 100644
index 0000000000..3df7327ac7
--- /dev/null
+++ b/packages/fcl-sound/fpmake.pp
@@ -0,0 +1,49 @@
+{$ifndef ALLPACKAGES}
+{$mode objfpc}{$H+}
+program fpmake;
+
+uses fpmkunit;
+
+Var
+ T : TTarget;
+ P : TPackage;
+begin
+ With Installer do
+ begin
+{$endif ALLPACKAGES}
+
+ P:=AddPackage('fcl-sound');
+{$ifdef ALLPACKAGES}
+ P.Directory:=ADirectory;
+{$endif ALLPACKAGES}
+ P.Version:='2.7.1';
+ P.Dependencies.Add('fcl-base');
+
+ P.Author := 'Abou Al Montacir of the Free Pascal development team';
+ P.License := 'LGPL with modification, ';
+ P.HomepageURL := 'www.freepascal.org';
+ P.Email := '';
+ P.Description := 'Sound loading, storing and conversion parts for the Free Component Libraries (FCL), FPC''s OOP library.';
+ P.NeedLibC:= false;
+ P.OSes:=AllOSes-[embedded,msdos];
+
+ P.SourcePath.Add('src');
+
+ T:=P.Targets.AddUnit('fpwavformat.pas');
+ T:=P.Targets.AddUnit('fpwavreader.pas');
+ with T.Dependencies do
+ begin
+ AddUnit('fpwavformat');
+ end;
+ T:=P.Targets.AddUnit('fpwavwriter.pas');
+ with T.Dependencies do
+ begin
+ AddUnit('fpwavformat');
+ end;
+
+{$ifndef ALLPACKAGES}
+ Run;
+ end;
+end.
+{$endif ALLPACKAGES}
+
diff --git a/packages/fcl-sound/src/fpwavformat.pas b/packages/fcl-sound/src/fpwavformat.pas
new file mode 100644
index 0000000000..7ed312e826
--- /dev/null
+++ b/packages/fcl-sound/src/fpwavformat.pas
@@ -0,0 +1,52 @@
+{*****************************************************************************}
+{
+ This file is part of the Free Pascal's "Free Components Library".
+ Copyright (c) 2014 by Mazen NEIFER of the Free Pascal development team
+ and was adapted from wavopenal.pas copyright (c) 2010 Dmitry Boyarintsev.
+
+ RIFF/WAVE sound file basic types and constants.
+
+ 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.
+}
+unit fpwavformat;
+
+{$mode objfpc}{$H+}
+
+interface
+
+const
+ AUDIO_CHUNK_ID_RIFF = 'RIFF';
+ AUDIO_CHUNK_ID_WAVE = 'WAVE';
+ AUDIO_CHUNK_ID_fmt = 'fmt ';
+ AUDIO_CHUNK_ID_data = 'data';
+ AUDIO_FORMAT_PCM = 1;
+
+type
+ TChunkID = array [0..3] of char;
+ TChunkHeader = packed record
+ ID: TChunkID;
+ Size: UInt32;
+ end;
+ TRiffHeader = packed record
+ ChunkHeader: TChunkHeader;
+ Format: TChunkID;
+ end;
+ TWaveFormat = packed record
+ ChunkHeader: TChunkHeader;
+ Format: UInt16;
+ Channels: UInt16;
+ SampleRate: UInt32;
+ ByteRate: UInt32;
+ BlockAlign: UInt16;
+ BitsPerSample: UInt16;
+ end;
+
+implementation
+
+end.
+
diff --git a/packages/fcl-sound/src/fpwavreader.pas b/packages/fcl-sound/src/fpwavreader.pas
new file mode 100644
index 0000000000..3d76bc3141
--- /dev/null
+++ b/packages/fcl-sound/src/fpwavreader.pas
@@ -0,0 +1,144 @@
+{*****************************************************************************}
+{
+ This file is part of the Free Pascal's "Free Components Library".
+ Copyright (c) 2014 by Mazen NEIFER of the Free Pascal development team
+ and was adapted from wavopenal.pas copyright (c) 2010 Dmitry Boyarintsev.
+
+ RIFF/WAVE sound file reader implementation.
+
+ 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.
+}
+unit fpwavreader;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+ fpWavFormat,
+ Classes;
+
+type
+ { TWaveReader }
+
+ TWavReader = class(TObject)
+ private
+ DataChunk: TChunkHeader;
+ ChunkPos: Int64;
+ EoF: Boolean;
+ fStream: TStream;
+ FFileName: string;
+ public
+ fmt : TWaveFormat;
+ destructor Destroy; override;
+ function LoadFromFile(const FileName: string): Boolean;
+ function LoadFromStream(AStream: TStream): Boolean;
+ function ReadBuf(var Buffer; BufferSize: Integer): Integer;
+ end;
+
+implementation
+
+uses
+ SysUtils;
+
+procedure LEtoN(var fmt: TWaveFormat); overload;
+begin
+ with fmt, ChunkHeader do begin
+ Size := LEtoN(Size);
+ Format := LEtoN(Format);
+ Channels := LEtoN(Channels);
+ SampleRate := LEtoN(SampleRate);
+ ByteRate := LEtoN(ByteRate);
+ BlockAlign := LEtoN(BlockAlign);
+ BitsPerSample := LEtoN(BitsPerSample);
+ end;
+end;
+
+{ TWaveReader }
+
+destructor TWavReader.Destroy;
+begin
+ if (FFileName <> '') and Assigned(fStream) then begin
+ fStream.Free;
+ end;
+ inherited Destroy;
+end;
+
+function TWavReader.LoadFromFile(const FileName: string):Boolean;
+begin
+ if (FFileName <> '') and Assigned(fStream) then begin
+ fStream.Free;
+ end;
+ fStream := TFileStream.Create(FileName, fmOpenRead);
+ if Assigned(fStream) then begin
+ Result := LoadFromStream(fStream);
+ FFileName := FileName;
+ end else begin
+ Result := False;
+ end;
+end;
+
+function TWavReader.LoadFromStream(AStream:TStream):Boolean;
+var
+ riff: TRiffHeader;
+begin
+ fStream := AStream;
+ FFileName := '';
+ Result := fStream.Read(riff, sizeof(riff)) = sizeof(riff);
+ riff.ChunkHeader.Size := LEtoN(riff.ChunkHeader.Size);
+ Result := Result and (riff.ChunkHeader.ID = AUDIO_CHUNK_ID_RIFF) and (riff.Format = AUDIO_CHUNK_ID_WAVE);
+ Result := Result and (fStream.Read(fmt, sizeof(fmt)) = sizeof(fmt));
+ LEtoN(fmt);
+ Result := Result and (fmt.ChunkHeader.ID = AUDIO_CHUNK_ID_fmt);
+ if Result and (fmt.Format <> 1) then begin
+ writeln('WAVE file is using compression. Sorry, cannot load. Please provide uncompressed .wav');
+ Exit(False);
+ end;
+end;
+
+function Min(a, b: Integer): Integer;
+begin
+ if a < b then begin
+ Result := a;
+ end else begin
+ Result := b;
+ end;
+end;
+
+function TWavReader.ReadBuf(var Buffer; BufferSize: Integer): Integer;
+var
+ sz: Integer;
+ p: TByteArray absolute Buffer;
+ i: Integer;
+begin
+ WriteLn('[TWavReader.ReadBuf] BufferSize = ', BufferSize);
+ i := 0;
+ while (not EoF) and (i < bufferSize) do begin
+ if ChunkPos >= DataChunk.Size then begin
+ sz := fstream.Read(DataChunk, sizeof(DataChunk));
+ EoF := sz < sizeof(DataChunk);
+ if not EoF then begin
+ DataChunk.Size := LEtoN(DataChunk.Size);
+ if DataChunk.Id <> AUDIO_CHUNK_ID_data then
+ ChunkPos := DataChunk.Size
+ else
+ ChunkPos := 0;
+ end;
+ end else begin
+ sz := Min(BufferSize, DataChunk.Size - ChunkPos);
+ sz := fStream.Read(p[i], sz);
+ EoF := sz <= 0;
+ Inc(ChunkPos, sz);
+ Inc(i, sz);
+ end;
+ end;
+ Result := i;
+end;
+
+end.
+
diff --git a/packages/fcl-sound/src/fpwavwriter.pas b/packages/fcl-sound/src/fpwavwriter.pas
new file mode 100644
index 0000000000..2197a24b3f
--- /dev/null
+++ b/packages/fcl-sound/src/fpwavwriter.pas
@@ -0,0 +1,150 @@
+{*****************************************************************************}
+{
+ This file is part of the Free Pascal's "Free Components Library".
+ Copyright (c) 2014 by Mazen NEIFER of the Free Pascal development team
+ and was adapted from wavopenal.pas copyright (c) 2010 Dmitry Boyarintsev.
+
+ RIFF/WAVE sound file writer implementation.
+
+ 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.
+}
+unit fpwavwriter;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+ fpWavFormat,
+ Classes;
+
+type
+ { TWaveReader }
+
+ { TWavWriter }
+
+ TWavWriter = class(TObject)
+ private
+ fStream: TStream;
+ FFreeStreamOnClose: Boolean;
+ public
+ fmt: TWaveFormat;
+ destructor Destroy; override;
+ function CloseAudioFile: Boolean;
+ function FlushHeader: Boolean;
+ function StoreToFile(const FileName: string): Boolean;
+ function StoreToStream(AStream: TStream): Boolean;
+ function WriteBuf(var Buffer; BufferSize: Integer): Integer;
+ end;
+
+implementation
+
+uses
+ SysUtils;
+
+procedure NtoLE(var fmt: TWaveFormat); overload;
+begin
+ with fmt, ChunkHeader do begin
+ Size := NtoLE(Size);
+ Format := NtoLE(Format);
+ Channels := NtoLE(Channels);
+ SampleRate := NtoLE(SampleRate);
+ ByteRate := NtoLE(ByteRate);
+ BlockAlign := NtoLE(BlockAlign);
+ BitsPerSample := NtoLE(BitsPerSample);
+ end;
+end;
+
+{ TWaveWriter }
+
+destructor TWavWriter.Destroy;
+begin
+ CloseAudioFile;
+ inherited Destroy;
+end;
+
+function TWavWriter.CloseAudioFile: Boolean;
+begin
+ Result := True;
+ if not Assigned(fStream) then begin
+ Exit(True);
+ end;
+ FlushHeader;
+ if FFreeStreamOnClose then begin
+ fStream.Free;
+ end;
+end;
+
+function TWavWriter.FlushHeader: Boolean;
+var
+ riff: TRiffHeader;
+ fmtLE: TWaveFormat;
+ DataChunk: TChunkHeader;
+ Pos: Int64;
+begin
+ Pos := fStream.Position;
+ with riff, ChunkHeader do begin
+ ID := AUDIO_CHUNK_ID_RIFF;
+ Size := NtoLE(Pos - SizeOf(ChunkHeader));
+ Format := AUDIO_CHUNK_ID_WAVE;
+ end;
+ fmtLE := fmt;
+ NtoLE(fmtLE);
+ with fStream do begin
+ Position := 0;
+ Result := Write(riff, SizeOf(riff)) = SizeOf(riff);
+ Result := Write(fmtLE, sizeof(fmtLE)) = SizeOf(fmtLE);
+ end;
+ with DataChunk do begin
+ Id := AUDIO_CHUNK_ID_data;
+ Size := Pos - SizeOf(DataChunk) - fStream.Position;
+ end;
+ with fStream do begin
+ Result := Write(DataChunk, SizeOf(DataChunk)) = SizeOf(DataChunk);
+ end;
+end;
+
+function TWavWriter.StoreToFile(const FileName: string):Boolean;
+begin
+ CloseAudioFile;
+ fStream := TFileStream.Create(FileName, fmCreate + fmOpenWrite);
+ if Assigned(fStream) then begin
+ Result := StoreToStream(fStream);
+ FFreeStreamOnClose := True;
+ end else begin
+ Result := False;
+ end;
+end;
+
+function TWavWriter.StoreToStream(AStream:TStream):Boolean;
+begin
+ fStream := AStream;
+ FFreeStreamOnClose := False;
+ with fmt, ChunkHeader do begin
+ ID := AUDIO_CHUNK_ID_fmt;
+ Size := SizeOf(fmt) - SizeOf(ChunkHeader);
+ Format := AUDIO_FORMAT_PCM;
+ end;
+ Result := FlushHeader;
+end;
+
+function TWavWriter.WriteBuf(var Buffer; BufferSize: Integer): Integer;
+var
+ sz: Integer;
+begin
+ WriteLn('[TWavWriter.WriteBuf] BufferSize = ', BufferSize);
+ Result := 0;
+ with fStream do begin
+ sz := Write(Buffer, BufferSize);
+ if sz < 0 then Exit;
+ Inc(Result, sz);
+ end;
+end;
+
+end.
+
diff --git a/packages/fcl-web/examples/httpclient/httpget.pas b/packages/fcl-web/examples/httpclient/httpget.pas
index d0f386b70b..6eb6d076fb 100644
--- a/packages/fcl-web/examples/httpclient/httpget.pas
+++ b/packages/fcl-web/examples/httpclient/httpget.pas
@@ -3,7 +3,7 @@ program httpget;
{$mode objfpc}{$H+}
uses
- SysUtils, Classes, fphttpclient;
+ SysUtils, Classes, fphttpclient, sslsockets, fpopenssl;
Type
@@ -78,8 +78,6 @@ begin
end;
procedure TTestApp.Run;
-var
- i : Integer;
begin
if (ParamCount<>2) then
diff --git a/packages/fcl-web/src/base/custcgi.pp b/packages/fcl-web/src/base/custcgi.pp
index a1705531bf..85d3fa29e8 100644
--- a/packages/fcl-web/src/base/custcgi.pp
+++ b/packages/fcl-web/src/base/custcgi.pp
@@ -1,6 +1,6 @@
{
This file is part of the Free Pascal run time library.
- Copyright (c) 1999-2000 by the Free Pascal development team
+ Copyright (c) 1999-2014 by the Free Pascal development team
TCGIApplication class.
@@ -26,7 +26,8 @@ uses
Type
{ TCGIRequest }
TCGIHandler = Class;
- // Content read handler. PByte points to rad content, len is length. Return False in ContinueReading to abort reading.
+ // Content read handler. PByte points to read content, len is length.
+ // Return False in ContinueReading to abort reading.
TCGIContentReadEvent = Procedure (Sender : TRequest; Content : PByte; Len : Integer; Var ContinueReading : Boolean) of object;
TCGIRequest = Class(TRequest)
@@ -37,10 +38,10 @@ Type
Protected
Function GetFieldValue(Index : Integer) : String; override;
Procedure InitFromEnvironment; virtual;
- // Read content from STDin. Calls DoContentRead to see if reading must be aborted.
+ // Read content from stdin. Calls DoContentRead to see if reading must be aborted.
procedure ReadContent; override;
// Called whenever input is read from stdin. Calls OnContentRead.
- // If Return True to continue reading, false to abort reading.
+ // Returns True to continue reading, false to abort reading.
Function DoContentRead(B : PByte; Len : Integer) : Boolean; virtual;
Public
Constructor CreateCGI(ACGI : TCGIHandler);
@@ -121,8 +122,8 @@ Var
CGIRequestClass : TCGIRequestClass = TCGIRequest;
CGIResponseClass : TCGIResponseClass = TCGIResponse;
CGIWebHandlerClass : TCgiHandlerClass = TCgiHandler;
- ContentReadRetryInterval : Word = 100;
- ContentReadMaxRetryCount : Word = 150;
+ ContentReadRetryInterval : Word = 100; // wait x milliseconds before retrying read
+ ContentReadMaxRetryCount : Word = 150; // wait x times before aborting retry
ResourceString
SWebMaster = 'webmaster';
@@ -333,9 +334,9 @@ begin
Cl := ContentLength;
I:=TIOStream.Create(iosInput);
Try
- if (CL<>0) then
+ if (Cl<>0) then
begin
- // It can be that the complete content is not yet send by the server so repeat the read
+ // It can be that the complete content is not yet sent by the server so repeat the read
// until all data is really read
SetLength(S,Cl);
BytesRead:=0;
@@ -344,7 +345,7 @@ begin
repeat
a := I.Read(S[BytesRead+1],Cl-BytesRead);
BytesRead:=BytesRead+a;
- if (A=0) then // In fact this can not happen, but the content could be delayed...
+ if (A=0) then // In fact this should not happen, but the content could be delayed...
begin
Inc(RetryCount);
AbortRead:=RetryCount>ContentReadMaxRetryCount;
@@ -352,10 +353,12 @@ begin
Sleep(ContentReadRetryInterval);
end
else
- AbortRead:=DoContentRead(PByte(@S[BytesRead+1]),A);
- BytesRead:=BytesRead+a;
+ begin
+ RetryCount:=0; // We got data, so let's reset this.
+ AbortRead:=Not DoContentRead(PByte(@S[BytesRead+1]),A);
+ end;
until (BytesRead>=Cl) or (AbortRead);
- // In fact the request is incomplete, but this is not the place thrown an error for that
+ // In fact the request is incomplete, but this is not the place to throw an error for that
if BytesRead<Cl then
SetLength(S,BytesRead);
end
diff --git a/packages/fcl-web/src/base/fphttpclient.pp b/packages/fcl-web/src/base/fphttpclient.pp
index 428f9e2157..647ff26d56 100644
--- a/packages/fcl-web/src/base/fphttpclient.pp
+++ b/packages/fcl-web/src/base/fphttpclient.pp
@@ -17,7 +17,6 @@ unit fphttpclient;
{ ---------------------------------------------------------------------
Todo:
* Proxy support ?
- * Https support.
---------------------------------------------------------------------}
{$mode objfpc}{$H+}
@@ -40,6 +39,8 @@ Type
// During read of content, of Server did not specify contentlength, -1 is passed.
// CurrentPos is reset to 0 when the actual content is read, i.e. it is the position in the data, discarding header size.
TDataEvent = Procedure (Sender : TObject; Const ContentLength, CurrentPos : Int64) of object;
+ // Use this to set up a socket handler. UseSSL is true if protocol was https
+ TGetSocketHandlerEvent = Procedure (Sender : TObject; Const UseSSL : Boolean; Out AHandler : TSocketHandler) of object;
{ TFPCustomHTTPClient }
TFPCustomHTTPClient = Class(TComponent)
@@ -65,6 +66,7 @@ Type
FSocket : TInetSocket;
FBuffer : Ansistring;
FUserName: String;
+ FOnGetSocketHandler : TGetSocketHandlerEvent;
function CheckContentLength: Int64;
function CheckTransferEncoding: string;
function GetCookies: TStrings;
@@ -91,7 +93,7 @@ Type
// Allow header in request ? (currently checks only if non-empty and contains : token)
function AllowHeader(var AHeader: String): Boolean; virtual;
// Connect to the server. Must initialize FSocket.
- Procedure ConnectToServer(const AHost: String; APort: Integer); virtual;
+ Procedure ConnectToServer(const AHost: String; APort: Integer; UseSSL : Boolean=False); virtual;
// Disconnect from server. Must free FSocket.
Procedure DisconnectFromServer; virtual;
// Run method AMethod, using request URL AURL. Write Response to Stream, and headers in ResponseHeaders.
@@ -101,6 +103,8 @@ Type
Procedure DoMethod(Const AMethod,AURL : String; Stream : TStream; Const AllowedResponseCodes : Array of Integer); virtual;
// Send request to server: construct request line and send headers and request body.
Procedure SendRequest(const AMethod: String; URI: TURI); virtual;
+ // Create socket handler for protocol AProtocol. Calls OnGetSocketHandler.
+ Function GetSocketHandler(Const UseSSL : Boolean) : TSocketHandler; virtual;
Public
Constructor Create(AOwner: TComponent); override;
Destructor Destroy; override;
@@ -239,6 +243,8 @@ Type
Property OnDataReceived : TDataEvent Read FOnDataReceived Write FOnDataReceived;
// Called when headers have been processed.
Property OnHeaders : TNotifyEvent Read FOnHeaders Write FOnHeaders;
+ // Called to create socket handler. If not set, or Nil is returned, a standard socket handler is created.
+ Property OnGetSocketHandler : TGetSocketHandlerEvent Read FOnGetSocketHandler Write FOnGetSocketHandler;
end;
@@ -260,6 +266,7 @@ Type
Property OnPassword;
Property OnDataReceived;
Property OnHeaders;
+ Property OnGetSocketHandler;
end;
EHTTPClient = Class(Exception);
@@ -268,6 +275,8 @@ Function DecodeURLElement(Const S : String) : String;
implementation
+uses sslsockets;
+
resourcestring
SErrInvalidProtocol = 'Invalid protocol : "%s"';
SErrReadingSocket = 'Error reading data from socket';
@@ -277,7 +286,7 @@ resourcestring
SErrChunkTooBig = 'Chunk too big';
SErrChunkLineEndMissing = 'Chunk line end missing';
SErrMaxRedirectsReached = 'Maximum allowed redirects reached : %d';
- SErrRedirectAborted = 'Redirect aborted.';
+ //SErrRedirectAborted = 'Redirect aborted.';
Const
CRLF = #13#10;
@@ -409,13 +418,35 @@ begin
Result:=Result+'?'+URI.Params;
end;
+Function TFPCustomHTTPClient.GetSocketHandler(Const UseSSL : Boolean) : TSocketHandler;
+
+begin
+ Result:=Nil;
+ if Assigned(FonGetSocketHandler) then
+ FOnGetSocketHandler(Self,UseSSL,Result);
+ if (Result=Nil) then
+ If UseSSL then
+ Result:=TSSLSocketHandler.Create
+ else
+ Result:=TSocketHandler.Create;
+end;
+
procedure TFPCustomHTTPClient.ConnectToServer(const AHost: String;
- APort: Integer);
+ APort: Integer; UseSSL : Boolean = False);
+
+Var
+ G : TSocketHandler;
+
begin
- if Aport=0 then
- Aport:=80;
- FSocket:=TInetSocket.Create(AHost,APort);
+ if (Aport=0) then
+ if UseSSL then
+ Aport:=443
+ else
+ Aport:=80;
+ G:=GetSocketHandler(UseSSL);
+ FSocket:=TInetSocket.Create(AHost,APort,G);
+ FSocket.Connect;
end;
procedure TFPCustomHTTPClient.DisconnectFromServer;
@@ -890,13 +921,15 @@ procedure TFPCustomHTTPClient.DoMethod(const AMethod, AURL: String;
Var
URI : TURI;
+ P : String;
begin
ResetResponse;
URI:=ParseURI(AURL,False);
- If (Lowercase(URI.Protocol)<>'http') then
+ p:=LowerCase(URI.Protocol);
+ If Not ((P='http') or (P='https')) then
Raise EHTTPClient.CreateFmt(SErrInvalidProtocol,[URI.Protocol]);
- ConnectToServer(URI.Host,URI.Port);
+ ConnectToServer(URI.Host,URI.Port,P='https');
try
SendRequest(AMethod,URI);
ReadResponse(Stream,AllowedResponseCodes,CompareText(AMethod,'HEAD')=0);
@@ -984,21 +1017,20 @@ procedure TFPCustomHTTPClient.HTTPMethod(const AMethod, AURL: String;
Var
M,L,NL : String;
- C : Char;
RC : Integer;
RR : Boolean; // Repeat request ?
begin
L:=AURL;
- M:=AMethod;
RC:=0;
RR:=False;
+ M:=AMethod;
Repeat
if Not AllowRedirect then
- DoMethod(AMethod,L,Stream,AllowedResponseCodes)
+ DoMethod(M,L,Stream,AllowedResponseCodes)
else
begin
- DoMethod(AMethod,L,Stream,AllowedResponseCodes);
+ DoMethod(M,L,Stream,AllowedResponseCodes);
if IsRedirect(FResponseStatusCode) then
begin
Inc(RC);
diff --git a/packages/fcl-web/tests/testcgiapp.pp b/packages/fcl-web/tests/testcgiapp.pp
index 1215c84170..b8e6a25f42 100644
--- a/packages/fcl-web/tests/testcgiapp.pp
+++ b/packages/fcl-web/tests/testcgiapp.pp
@@ -115,8 +115,6 @@ begin
else
begin
Method:=Uppercase(Method);
- If (Method<>'POST') and (Method<>'GET') then
- Raise Exception.CreateFmt(SerrUnsupportedMethod,['METHOD']);
end;
end;
(*
diff --git a/packages/fcl-xml/tests/domunit.pp b/packages/fcl-xml/tests/domunit.pp
index e1531cb12c..3cf863cc6f 100644
--- a/packages/fcl-xml/tests/domunit.pp
+++ b/packages/fcl-xml/tests/domunit.pp
@@ -272,25 +272,25 @@ procedure TDOMTestBase.assertURIEquals(const id: string; scheme, path,
var
URI: TURI;
begin
- AssertTrue(id, Actual <> '');
+ AssertTrue(id+'#0', Actual <> '');
URI := ParseURI(utf8Encode(Actual));
if fragment <> nil then
- AssertEquals(id, string(fragment), URI.Bookmark);
+ AssertEquals(id+'#1', string(fragment), URI.Bookmark);
if query <> nil then
- AssertEquals(id, string(query), URI.Params);
+ AssertEquals(id+'#2', string(query), URI.Params);
if scheme <> nil then
- AssertEquals(id, string(scheme), URI.Protocol);
+ AssertEquals(id+'#3', string(scheme), URI.Protocol);
if host <> nil then
begin
- AssertTrue(id, URI.HasAuthority);
- AssertEquals(id, string(host), URI.Host);
+ AssertTrue(id+'#4', URI.HasAuthority);
+ AssertEquals(id+'#5', string(host), URI.Host);
end;
if path <> nil then
- AssertEquals(id, string(path), '//' + Uri.Host + URI.Path + URI.Document);
+ AssertEquals(id+'#6', string(path), '//' + Uri.Host + URI.Path + URI.Document);
if file_ <> nil then
- AssertEquals(id, string(file_), URI.Document);
+ AssertEquals(id+'#7', string(file_), URI.Document);
if name <> nil then
- AssertEquals(id, string(name), ChangeFileExt(URI.Document, ''));
+ AssertEquals(id+'#8', string(name), ChangeFileExt(URI.Document, ''));
end;
function TDOMTestBase.bad_condition(const TagName: XMLString): Boolean;
diff --git a/packages/fcl-xml/tests/readertest.pp b/packages/fcl-xml/tests/readertest.pp
new file mode 100644
index 0000000000..d0072ab375
--- /dev/null
+++ b/packages/fcl-xml/tests/readertest.pp
@@ -0,0 +1,671 @@
+{**********************************************************************
+
+ This file is part of the Free Component Library (FCL)
+
+ Test cases for TXMLReader class and its descendants
+ Copyright (c) 2012 by Sergei Gorelkin, sergei_gorelkin@mail.ru
+
+ Using tests from Mono test suite, written by
+ Jason Diamond (jason@injektilo.org)
+ Martin Willemoes Hansen (mwh@sysrq.dk)
+ (C) 2001, 2002 Jason Diamond http://injektilo.org/
+
+ 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.
+
+ **********************************************************************}
+unit readertest;
+{$mode objfpc}{$h+}
+
+interface
+implementation
+
+uses
+ sysutils, fpcunit, testregistry, xmlutils, readerunit, XmlReader;
+
+type
+ TXMLReaderTest = class(TXMLReaderTestBase)
+ public
+ procedure TestInitialState(r: TXMLReader);
+ procedure TestReadEmptySource(r: TXMLReader);
+ procedure TestRead(r: TXMLReader);
+ procedure TestReadAttributeValue(r: TXMLReader);
+ procedure TestReadAttributeValue2(r: TXMLReader);
+ procedure TestDTDProperties(r: TXMLReader);
+ procedure TestReadStringFromElement(r: TXMLReader);
+ procedure TestEmptyElement(r: TXMLReader);
+ procedure TestNestedEmptyTag(r: TXMLReader);
+ procedure TestNestedText(r: TXMLReader);
+ procedure TestEmptyElementWithAttributes(r: TXMLReader);
+ procedure TestPIBeforeRoot(r: TXMLReader);
+ procedure TestCommentBeforeRoot(r: TXMLReader);
+ procedure TestCDATA(r: TXMLReader);
+ procedure TestChildElementInNamespace(r: TXMLReader);
+ procedure TestMoveToElementFromAttribute(r: TXMLReader);
+ procedure TestMoveToElementFromElement(r: TXMLReader);
+ procedure TestMoveToNextAttribute(r: TXMLReader);
+ procedure TestResolveEntity(r: TXMLReader);
+ procedure TestLineInfo(r: TXMLReader);
+ published
+ procedure InitialState;
+ procedure ReadEmptySource;
+ procedure Read;
+ procedure ReadAttributeValue;
+ procedure ReadAttributeValue2;
+ procedure DTDProperties;
+ procedure ReadStringFromElement;
+ procedure EmptyElement;
+ procedure NestedEmptyTag;
+ procedure NestedText;
+ procedure EmptyElementWithAttributes;
+ procedure PIBeforeRoot;
+ procedure CommentBeforeRoot;
+ procedure CDATA;
+ procedure ChildElementInNamespace;
+ procedure MoveToElementFromAttribute;
+ procedure MoveToElementFromElement;
+ procedure MoveToNextAttribute;
+ procedure ResolveEntity;
+ procedure LineInfo;
+ end;
+
+const
+ xml1 = '<root attr1=''value1''><child /></root>';
+ xml2 = '<root><foo/><bar>test.</bar></root>';
+ xml3 = '<root> test of <b>mixed</b> string.<![CDATA[ cdata string.]]></root>';
+
+
+procedure TXMLReaderTest.TestInitialState(r: TXMLReader);
+begin
+ AssertEquals('Depth', 0, r.Depth);
+ AssertEquals('EOF', False, r.EOF);
+ AssertEquals('HasValue', False, r.HasValue);
+ AssertEqualsW('LocalName', '', r.LocalName);
+ AssertEquals('NodeType', ntNone, r.NodeType);
+ AssertEquals('ReadState', rsInitial, r.ReadState);
+end;
+
+procedure TXMLReaderTest.InitialState;
+begin
+ DoTest(xml1, @TestInitialState);
+end;
+
+// TODO: this should fail only when conformancelevel=document
+procedure TXMLReaderTest.TestReadEmptySource(r: TXMLReader);
+begin
+ try
+ r.Read;
+ Fail('Read empty source succeeded');
+ except
+ end;
+end;
+
+procedure TXMLReaderTest.ReadEmptySource;
+begin
+ DoTest('', @TestReadEmptySource);
+end;
+
+procedure TXMLReaderTest.TestRead(r: TXMLReader);
+begin
+ r.Read;
+ AssertEquals('<root>.NodeType', ntElement, r.NodeType);
+ AssertEqualsW('<root>.Name', 'root', r.Name);
+ AssertEquals('<root>.ReadState', rsInteractive, r.ReadState);
+ AssertEquals('<root>.Depth', 0, r.Depth);
+
+ // move to 'child'
+ r.Read;
+ AssertEquals('<child/>.Depth', 1, r.Depth);
+ AssertEquals('<child/>.NodeType', ntElement, r.NodeType);
+ AssertEqualsW('<child/>.Name', 'child', r.Name);
+
+ { this differs from .net; we don't support EmptyElement }
+ r.Read;
+ AssertEquals('<child/>.EndDepth', 1, r.Depth);
+ AssertEquals('<child/>.EndNodeType', ntEndElement, r.NodeType);
+ AssertEqualsW('<child/>.EndName', 'child', r.Name);
+
+ r.Read;
+ AssertEquals('</root>.Depth', 0, r.Depth);
+ AssertEquals('</root>.NodeType', ntEndElement, r.NodeType);
+ AssertEqualsW('</root>.Name', 'root', r.Name);
+
+ r.Read;
+ AssertTrue('end.EOF', r.EOF);
+ AssertEquals('end.NodeType', ntNone, r.NodeType);
+end;
+
+procedure TXMLReaderTest.Read;
+begin
+ DoTest(xml1, @TestRead);
+end;
+
+procedure TXMLReaderTest.TestReadAttributeValue(r: TXMLReader);
+begin
+ r.Read; // root
+ AssertTrue('#1',r.MoveToFirstAttribute);
+ AssertNodeValues('#2', r,
+ ntAttribute,
+ 1, 'attr', '', 'attr', '', 'value', true, 1, true);
+ AssertTrue('#3',r.ReadAttributeValue);
+ AssertNodeValues('#4', r,
+ ntText,
+ 2, '', '', '', '', 'value', true, 1, true);
+ AssertTrue('#5',r.MoveToElement);
+ AssertNodeValues('#6', r,
+ ntElement,
+ 0, 'root', '', 'root', '', '', false, 1, true);
+end;
+
+procedure TXMLReaderTest.ReadAttributeValue;
+begin
+ DoTest('<root attr="value"/>', @TestReadAttributeValue);
+end;
+
+procedure TXMLReaderTest.TestReadAttributeValue2(r: TXMLReader);
+begin
+ r.Read; // DTD
+ r.Read; // root
+ AssertTrue('#1',r.MoveToFirstAttribute);
+ AssertNodeValues('#2', r,
+ ntAttribute,
+ 1, 'attr', '', 'attr', '', 'ax1y1x1b', true, 1, true);
+ AssertTrue('#3',r.ReadAttributeValue);
+ AssertNodeValues('#4', r,
+ ntText, 2,
+ '', '', '', '', 'a', true, 1, true);
+
+ AssertTrue('#5', r.ReadAttributeValue);
+ AssertNodeValues('#6', r,
+ ntEntityReference, 2,
+ 'e1','','e1','', '', false, 1, true);
+
+ r.ResolveEntity;
+ AssertEquals('#6a', 2, r.Depth);
+ AssertEquals('#6b', ntEntityReference, r.nodeType);
+
+ AssertTrue('#6c', r.ReadAttributeValue);
+ AssertNodeValues('#6d', r,
+ ntEntityReference, 3,
+ 'e2', '', 'e2', '', '', false, 1, true);
+
+ // Don't resolve it and advance to 'y1' textnode
+ AssertTrue('#6e', r.ReadAttributeValue);
+ AssertNodeValues('#6f', r,
+ ntText, 3,
+ '', '', '', '', 'y1', true, 1, true);
+
+ AssertTrue('#6g', r.ReadAttributeValue);
+ AssertNodeValues('#6h', r,
+ ntEntityReference, 3,
+ 'e2', '', 'e2', '', '', false, 1, true);
+
+ r.ResolveEntity;
+
+ AssertTrue('#6i', r.ReadAttributeValue);
+ AssertNodeValues('#6j', r,
+ ntText, 4,
+ '','','','','x1', true, 1, true);
+
+ AssertTrue('#6k', r.ReadAttributeValue);
+ AssertNodeValues('#6l', r,
+ ntEndEntity, 3,
+ 'e2','','e2','', '', false, 1, true);
+
+ AssertTrue('#7', r.ReadAttributeValue);
+ AssertNodeValues('#8', r,
+ ntEndEntity, 2,
+ 'e1','','e1','', '', false, 1, true);
+
+ AssertTrue('#9', r.ReadAttributeValue);
+
+ AssertNodeValues('#10', r,
+ ntText, 2,
+ '', '', '', '', 'b', true, 1, true);
+ AssertFalse('#11', r.ReadAttributeValue);
+
+ AssertTrue('#12',r.MoveToElement);
+ AssertNodeValues('#13', r,
+ ntElement, 0,
+ 'root', '', 'root', '', '', false, 1, true);
+
+end;
+
+procedure TXMLReaderTest.ReadAttributeValue2;
+const
+ xml = '<!DOCTYPE root ['+
+ '<!ELEMENT root ANY>'+
+ '<!ENTITY e2 "x1">'+
+ '<!ENTITY e1 "&e2;y1&e2;">]>'+
+ '<root attr="a&e1;b"/>';
+begin
+ DoTest(xml, @TestReadAttributeValue2);
+end;
+
+procedure TXMLReaderTest.TestDTDProperties(r: TXMLReader);
+begin
+ r.Read;
+ AssertNodeValues('#DTD',r,
+ ntDocumentType, 0,
+ 'root', '', 'root', '', '<!ELEMENT root ANY><!ENTITY e2 "x1"><!ENTITY e1 "&e2;y1&e2;">', True, 0, False);
+ r.Read;
+ AssertNodeValues('#root',r,
+ ntElement, 0,
+ 'root','', 'root', '', '', False,
+ 1, True);
+end;
+
+procedure TXMLReaderTest.DTDProperties;
+const
+ xml = '<!DOCTYPE root ['+
+ '<!ELEMENT root ANY>'+
+ '<!ENTITY e2 "x1">'+
+ '<!ENTITY e1 "&e2;y1&e2;">]>'+
+ '<root attr="a&e1;b"/>';
+begin
+ DoTest(xml, @TestDTDProperties);
+end;
+
+procedure TXMLReaderTest.TestReadStringFromElement(r: TXMLReader);
+var
+ s: XMLString;
+begin
+ r.Read;
+ s := r.ReadString;
+ AssertEqualsW('readString.1.ret_val', ' test of ', s);
+ AssertEqualsW('readString.1.Name', 'b', r.Name);
+ s := r.ReadString;
+ AssertEqualsW('readString.2.ret_val', 'mixed', s);
+ AssertEquals('readString.2.nodeType', ntEndElement, r.NodeType);
+ s := r.ReadString; // does not advance
+ AssertEqualsW('readString.3.ret_val', '',s);
+ AssertEquals('readString.3.nodeType', ntEndElement, r.NodeType);
+ r.Read;
+ AssertEquals('readString.4.nodeType', ntText, r.NodeType);
+ AssertEqualsW('readString.4.Value', ' string.', r.Value);
+ s := r.ReadString;
+ AssertEqualsW('readString.5.ret_val', ' string. cdata string.', s);
+ AssertEquals('readString.5.nodeType', ntEndElement, r.NodeType);
+end;
+
+procedure TXMLReaderTest.ReadStringFromElement;
+begin
+ DoTest(xml3, @TestReadStringFromElement);
+end;
+
+procedure TXMLReaderTest.TestEmptyElement(r: TXMLReader);
+begin
+ AssertStartDocument(r);
+ AssertNode('#1', r, ntElement, 0,
+ 'foo', '', 'foo', '', // name, prefix, localname, nsuri
+ '', 0);
+ AssertNode('#2', r, ntEndElement, 0,
+ 'foo', '', 'foo', '',
+ '', 0);
+ AssertEndDocument(r);
+end;
+
+procedure TXMLReaderTest.EmptyElement;
+begin
+ DoTest('<foo/>', @TestEmptyElement);
+end;
+
+procedure TXMLReaderTest.TestNestedEmptyTag(r: TXMLReader);
+begin
+ AssertStartDocument(r);
+ AssertNode('#1', r,
+ ntElement, 0,
+ 'foo', '', 'foo', '',
+ '', 0);
+ AssertNode('#2', r,
+ ntElement, 1,
+ 'bar', '', 'bar', '',
+ '', 0);
+ AssertNode('#3', r,
+ ntEndElement, 1,
+ 'bar', '', 'bar', '',
+ '', 0);
+ AssertNode('#4', r,
+ ntEndElement, 0,
+ 'foo', '', 'foo', '',
+ '', 0);
+ AssertEndDocument(r);
+end;
+
+procedure TXMLReaderTest.NestedEmptyTag;
+begin
+ DoTest('<foo><bar/></foo>', @TestNestedEmptyTag);
+end;
+
+procedure TXMLReaderTest.TestNestedText(r: TXMLReader);
+begin
+ AssertStartDocument(r);
+ AssertNode('#1', r,
+ ntElement, 0,
+ 'foo', '', 'foo', '',
+ '', 0);
+ AssertNode('#2', r,
+ ntText, 1,
+ '', '', '', '',
+ 'bar', 0);
+ AssertNode('#3', r,
+ ntEndElement, 0,
+ 'foo', '', 'foo', '',
+ '', 0);
+ AssertEndDocument(r);
+end;
+
+procedure TXMLReaderTest.NestedText;
+begin
+ DoTest('<foo>bar</foo>', @TestNestedText);
+end;
+
+procedure TXMLReaderTest.TestEmptyElementWithAttributes(r: TXMLReader);
+begin
+ AssertStartDocument(r);
+ AssertNode('#1', r,
+ ntElement, 0,
+ 'foo', '', 'foo', '',
+ '', 4);
+ AssertAttribute(r,
+ 'bar', '', 'bar', '',
+ 'baz');
+ AssertAttribute(r,
+ 'quux', '', 'quux', '',
+ 'quuux');
+ AssertAttribute(r, // non-existing attribute
+ 'notexist', '', 'notexist', '',
+ '');
+ AssertAttribute(r, // non-existing prefixed attribute
+ 'x:bar', 'x', 'bar', 'urn:xfoo',
+ '');
+ AssertAttribute(r,
+ 'x:foo', 'x', 'foo', 'urn:xfoo',
+ 'x-foo');
+ AssertNode('#2', r,
+ ntEndElement, 0,
+ 'foo', '', 'foo', '',
+ '', 0);
+ AssertEndDocument(r);
+end;
+
+procedure TXMLReaderTest.EmptyElementWithAttributes;
+begin
+ DoTest('<foo bar="baz" quux=''quuux'' x:foo=''x-foo'' xmlns:x = ''urn:xfoo'' />',
+ @TestEmptyElementWithAttributes);
+end;
+
+procedure TXMLReaderTest.TestPIBeforeRoot(r: TXMLReader);
+begin
+ AssertStartDocument(r);
+ AssertNode('#1', r,
+ ntProcessingInstruction, 0,
+ 'foo', '', 'foo', '',
+ 'bar', 0);
+ AssertNode('#2', r,
+ ntElement, 0,
+ 'baz', '', 'baz', '',
+ '', 0);
+ AssertNode('#3', r,
+ ntEndElement, 0,
+ 'baz', '', 'baz', '',
+ '', 0);
+ AssertEndDocument(r);
+end;
+
+procedure TXMLReaderTest.PIBeforeRoot;
+begin
+ DoTest('<?foo bar?><baz/>', @TestPIBeforeRoot);
+end;
+
+procedure TXMLReaderTest.TestCommentBeforeRoot(r: TXMLReader);
+begin
+ AssertStartDocument(r);
+ AssertNode('#1', r,
+ ntComment, 0,
+ '','','','',
+ 'foo', 0);
+ AssertNode('#2', r,
+ ntElement, 0,
+ 'bar', '', 'bar', '',
+ '', 0);
+ AssertNode('#3', r,
+ ntEndElement, 0,
+ 'bar', '', 'bar', '',
+ '', 0);
+ AssertEndDocument(r);
+end;
+
+procedure TXMLReaderTest.CommentBeforeRoot;
+begin
+ DoTest('<!--foo--><bar/>', @TestCommentBeforeRoot);
+end;
+
+procedure TXMLReaderTest.TestCDATA(r: TXMLReader);
+begin
+ AssertStartDocument(r);
+ AssertNode('#1', r,
+ ntElement, 0,
+ 'foo', '', 'foo', '',
+ '', 0);
+ AssertNode('#2', r,
+ ntCDATA, 1,
+ '','','','',
+ '<>&', 0);
+ AssertNode('#3', r,
+ ntEndElement, 0,
+ 'foo', '', 'foo', '',
+ '',0);
+ AssertEndDocument(r);
+end;
+
+procedure TXMLReaderTest.CDATA;
+begin
+ DoTest('<foo><![CDATA[<>&]]></foo>', @TestCDATA);
+end;
+
+procedure TXMLReaderTest.ChildElementInNamespace;
+begin
+ DoTest('<foo:bar xmlns:foo=''http://foo/''><baz:quux xmlns:baz=''http://baz/'' /></foo:bar>', @TestChildElementInNamespace);
+end;
+
+procedure TXMLReaderTest.TestChildElementInNamespace(r: TXMLReader);
+begin
+ AssertStartDocument(r);
+
+ AssertNode('#1', r,
+ ntElement, 0,
+ 'foo:bar', 'foo', 'bar', 'http://foo/',
+ '', 1);
+
+ AssertAttribute(r,
+ 'xmlns:foo', 'xmlns', 'foo', 'http://www.w3.org/2000/xmlns/',
+ 'http://foo/');
+
+ AssertEqualsW('http://foo/', r.LookupNamespace('foo'));
+
+ AssertNode('#2', r,
+ ntElement, 1,
+ 'baz:quux', 'baz', 'quux', 'http://baz/',
+ '', 1);
+
+ AssertAttribute(r,
+ 'xmlns:baz', 'xmlns', 'baz', 'http://www.w3.org/2000/xmlns/',
+ 'http://baz/');
+
+ AssertEqualsW('http://foo/', r.LookupNamespace ('foo'));
+ AssertEqualsW('http://baz/', r.LookupNamespace ('baz'));
+
+ AssertNode('#3', r,
+ ntEndElement, 1,
+ 'baz:quux', 'baz', 'quux', 'http://baz/',
+ '', 0);
+
+ AssertNode('#4', r,
+ ntEndElement, 0,
+ 'foo:bar', 'foo', 'bar', 'http://foo/',
+ '', 0);
+
+ AssertEqualsW('http://foo/', r.LookupNamespace('foo'));
+ AssertNull('', r.LookupNamespace('baz'));
+
+ AssertEndDocument(r);
+end;
+
+procedure TXMLReaderTest.TestMoveToElementFromAttribute(r: TXMLReader);
+begin
+ AssertTrue(r.Read);
+ AssertEquals(ntElement, r.NodeType);
+ AssertTrue(r.MoveToFirstAttribute);
+ AssertEquals(ntAttribute, r.NodeType);
+ AssertTrue(r.MoveToElement);
+ AssertEquals(ntElement, r.NodeType);
+end;
+
+procedure TXMLReaderTest.MoveToElementFromAttribute;
+begin
+ DoTest('<foo bar="baz" />', @TestMoveToElementFromAttribute);
+end;
+
+procedure TXMLReaderTest.TestMoveToElementFromElement(r: TXMLReader);
+begin
+ AssertTrue(r.Read);
+ AssertEquals(ntElement, r.NodeType);
+ AssertFalse(r.MoveToElement);
+ AssertEquals(ntElement, r.NodeType);
+end;
+
+procedure TXMLReaderTest.MoveToElementFromElement;
+begin
+ DoTest('<foo bar="baz" />', @TestMoveToElementFromElement);
+end;
+
+// TODO: moveToFirstAttribute_negative
+// moveToNextAttribute_negative
+
+procedure TXMLReaderTest.TestMoveToNextAttribute(r: TXMLReader);
+begin
+ AssertStartDocument(r);
+ AssertNode('#1', r,
+ ntElement, 0,
+ 'foo', '', 'foo', '',
+ '', 2);
+ AssertAttribute(r,
+ 'bar', '', 'bar', '',
+ 'baz');
+ AssertAttribute(r,
+ 'quux', '', 'quux', '',
+ 'quuux');
+ AssertTrue(r.MoveToNextAttribute);
+ AssertEqualsW('bar', r.Name);
+ AssertEqualsW('baz', r.Value);
+ AssertTrue(r.MoveToNextAttribute);
+ AssertEqualsW('quux', r.Name);
+ AssertEqualsW('quuux', r.Value);
+ AssertFalse(r.MoveToNextAttribute);
+ AssertTrue(r.MoveToElement);
+ AssertNodeValues('#1', r,
+ ntElement, 0,
+ 'foo','','foo','',
+ '', False, 2, True);
+ AssertNode('#2', r,
+ ntEndElement, 0,
+ 'foo','','foo','',
+ '', 0);
+ AssertEndDocument(r);
+end;
+
+procedure TXMLReaderTest.MoveToNextAttribute;
+begin
+ DoTest('<foo bar="baz" quux=''quuux''/>', @TestMoveToNextAttribute);
+end;
+
+procedure TXMLReaderTest.TestResolveEntity(r: TXMLReader);
+begin
+ r.Read; // DTD
+ r.Read; // root
+ r.Read; // &ent;
+ AssertEquals('#1', ntEntityReference, r.NodeType);
+ AssertEquals('#2', 1, r.Depth);
+ r.ResolveEntity;
+ // stays on entity reference
+ AssertEquals('#3', ntEntityReference, r.NodeType);
+ AssertEquals('#3a', 1, r.Depth);
+ r.Read;
+ // now advances to replacement text
+ AssertEquals('#4', ntText, r.NodeType);
+ AssertEquals('#5', 2, r.Depth);
+ AssertEqualsW('#6', 'entity string', r.Value);
+ r.Read;
+ AssertEquals('#7', ntEndEntity, r.NodeType);
+ AssertEquals('#8', 1, r.Depth);
+ AssertEqualsW('#9', '', r.Value);
+
+ r.Read; // &ent2;
+ AssertEquals('#10', ntEntityReference, r.NodeType);
+ AssertEquals('#11', 1, r.Depth);
+ r.ResolveEntity;
+ // stays on entity reference
+ AssertEquals('#12', ntEntityReference, r.NodeType);
+ AssertEquals('#12a', 1, r.Depth);
+ // now advances to element node
+ r.Read;
+ AssertEquals('#13', ntElement, r.NodeType);
+ AssertEquals('#14', 2, r.Depth);
+end;
+
+procedure TXMLReaderTest.ResolveEntity;
+const
+ xml='<!DOCTYPE root [<!ELEMENT root (#PCDATA|foo)*>'+
+ '<!ENTITY ent "entity string">'+
+ '<!ENTITY ent2 "<foo/><foo/>">]>'+
+ '<root>&ent;&ent2;</root>';
+begin
+ DoTest(xml, @TestResolveEntity);
+end;
+
+procedure TXMLReaderTest.TestLineInfo(r: TXMLReader);
+var
+ aux: IXmlLineInfo;
+begin
+ if not Supports(r, IXmlLineInfo, aux) then
+ Exit;
+ AssertEquals('#1a', 0, aux.LineNumber);
+ AssertEquals('#1b', 0, aux.LinePosition);
+ r.MoveToContent;
+ AssertEquals('#2a', 1, aux.LineNumber);
+ AssertEquals('#2b', 2, aux.LinePosition);
+ r.Read;
+ AssertEquals('#3a', 1, aux.LineNumber);
+ AssertEquals('#3b', 7, aux.LinePosition);
+ r.Read;
+ r.Read;
+// r.ReadOuterXml;
+ AssertEquals('#4a', 1, aux.LineNumber);
+ AssertEquals('#4b', 22, aux.LinePosition);
+ r.Read;
+ r.Read;
+// r.ReadInnerXml;
+ AssertEquals('#5a', 1, aux.LineNumber);
+ AssertEquals('#5b', 34, aux.LinePosition);
+ r.Read; { now at EOF }
+ AssertEquals('#6a', 1, aux.LineNumber);
+ AssertEquals('#6b', 38, aux.LinePosition);
+ r.Close;
+ AssertEquals('#7a', 0, aux.LineNumber);
+ AssertEquals('#7b', 0, aux.LinePosition);
+end;
+
+procedure TXMLReaderTest.LineInfo;
+begin
+ DoTest('<all><hello></hello><bug></bug></all>', @TestLineInfo);
+end;
+
+initialization
+ RegisterTest(TXMLReaderTest);
+
+end.
diff --git a/packages/fcl-xml/tests/readerunit.pp b/packages/fcl-xml/tests/readerunit.pp
new file mode 100644
index 0000000000..eb807fd620
--- /dev/null
+++ b/packages/fcl-xml/tests/readerunit.pp
@@ -0,0 +1,200 @@
+{**********************************************************************
+
+ This file is part of the Free Component Library (FCL)
+
+ fpcunit extensions for testing TXmlReader class
+ Copyright (c) 2008 by Sergei Gorelkin, sergei_gorelkin@mail.ru
+
+ 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.
+
+ **********************************************************************}
+
+unit readerunit;
+{$mode objfpc}{$h+}
+
+interface
+
+uses Classes, SysUtils, fpcunit, xmlutils, XmlReader;
+
+type
+ TTestMethod = procedure(reader: TXMLReader) of object;
+
+ TXMLReaderTestBase = class(TTestCase)
+ protected
+ procedure AssertStartDocument(r: TXMLReader);
+ procedure AssertEndDocument(r: TXMLReader);
+ procedure AssertNode(const id: string;
+ r: TXMLReader; nodeType: TXMLNodeType;
+ depth: Integer;
+ const Name, Prefix, LocalName, nsURI, Value: XMLString;
+ attrCount: Integer);
+ procedure AssertNodeValues(id: string;
+ r: TXmlReader;
+ nodeType: TXmlNodeType;
+ depth: Integer;
+ const name, prefix, localName, nsURI, value: XMLString;
+ hasValue: Boolean;
+ attrCount: Integer;
+ hasAttributes: Boolean);
+ procedure AssertAttribute(r: TXMLReader;
+ const Name, Prefix, LocalName, nsURI, Value: XMLString);
+ procedure AssertEquals(const id: string; exp, act: TXMLReadState); overload;
+ procedure AssertEquals(exp, act: TXMLReadState); overload;
+ procedure AssertEquals(const id: string; exp, act: TXMLNodeType); overload;
+ procedure AssertEqualsW(const id: string; const exp, act: XMLString); overload;
+ procedure AssertEqualsW(const exp, act: XMLString); overload;
+ procedure AssertEquals(exp, act: TXMLNodeType); overload;
+ procedure AssertNull(const id: string; const ws: XMLString); overload;
+ procedure DoTest(const XmlData: string; method: TTestMethod);
+ end;
+
+implementation
+
+uses
+ xmltextreader;
+
+procedure TXMLReaderTestBase.AssertStartDocument(r: TXMLReader);
+begin
+ AssertEquals(r.ReadState, rsInitial);
+ AssertEquals(r.NodeType, ntNone);
+ AssertEquals(r.Depth, 0);
+ AssertFalse(r.EOF);
+end;
+
+procedure TXMLReaderTestBase.AssertEndDocument(r: TXMLReader);
+begin
+ AssertFalse ('could read', r.Read);
+ AssertEquals('NodeType is not ntNone', ntNone, r.NodeType);
+ AssertEquals('Depth is not 0', 0, r.Depth);
+ AssertEquals('ReadState is not rsEndOfFile', rsEndOfFile, r.ReadState);
+ AssertTrue('not EOF', r.EOF);
+ r.Close;
+ AssertEquals('ReadState is not rsClosed', rsClosed, r.ReadState);
+end;
+
+procedure TXMLReaderTestBase.AssertNode(const id: string;
+ r: TXMLReader; nodeType: TXMLNodeType;
+ depth: Integer;
+ const Name, Prefix, LocalName, nsURI, Value: XMLString;
+ attrCount: Integer);
+begin
+ AssertTrue(id+' Read() return value', r.Read);
+ AssertEquals(id+' ReadState', r.ReadState, rsInteractive);
+ AssertFalse(id+' not EOF', r.EOF);
+ AssertNodeValues(id, r, nodeType, depth,
+ Name, Prefix, localName,
+ nsURI, Value, r.HasValue,
+ attrCount, attrCount > 0);
+end;
+
+procedure TXMLReaderTestBase.AssertNodeValues(id: string;
+ r: TXmlReader;
+ nodeType: TXmlNodeType;
+ depth: Integer;
+ const name, prefix, localName, nsURI, value: XMLString;
+ hasValue: Boolean;
+ attrCount: Integer;
+ hasAttributes: Boolean);
+begin
+ id := id + '(' + r.ClassName + ')';
+ AssertEquals(id+': NodeType', nodeType, r.NodeType);
+ AssertEqualsW(id+': name', name, r.Name);
+
+ AssertEqualsW(id+': prefix', prefix, r.Prefix);
+ AssertEqualsW(id+': localName', localName, r.LocalName);
+ AssertEqualsW(id+': namespaceURI', nsURI, r.NamespaceURI);
+ AssertEquals(id+': Depth', depth, r.Depth);
+ AssertEquals(id+': hasValue', hasValue, r.HasValue);
+ AssertEqualsW(id+': Value', value, r.Value);
+// TODO: AssertEquals(id+': hasAttributes', hasAttributes, r.HasAttributes);
+ AssertEquals(id+': attributeCount', attrCount, r.AttributeCount);
+end;
+
+procedure TXMLReaderTestBase.AssertAttribute(r: TXMLReader; const Name, Prefix,
+ LocalName, nsURI, Value: XMLString);
+begin
+ AssertEqualsW('value2', value, r.GetAttribute(name));
+
+ if nsURI <> '' then
+ begin
+ AssertEqualsW('value3', value, r.GetAttribute(LocalName, nsURI));
+ end;
+end;
+
+procedure TXMLReaderTestBase.DoTest(const XmlData: string; method: TTestMethod);
+var
+ xtr: TXmlReader;
+ settings: TXMLReaderSettings;
+ inp: TXMLInputSource;
+begin
+ settings := TXMLReaderSettings.Create;
+ try
+ settings.PreserveWhiteSpace := True;
+ settings.Namespaces := True;
+ inp := TXMLInputSource.Create(XmlData);
+ try
+ xtr := TXmlTextReader.Create(inp,settings);
+ try
+ method(xtr);
+ finally
+ xtr.Free;
+ end;
+ finally
+ inp.Free;
+ end;
+ finally
+ settings.Free;
+ end;
+ // here other TXMLReader descendants may be tested the same way...
+end;
+
+procedure TXMLReaderTestBase.AssertEquals(const id: string; exp, act: TXMLReadState);
+begin
+ if exp <> act then
+ Fail(id);
+end;
+
+procedure TXMLReaderTestBase.AssertEquals(exp, act: TXMLReadState);
+begin
+ AssertEquals('', exp, act);
+end;
+
+procedure TXMLReaderTestBase.AssertEqualsW(const id: string; const exp, act: XMLString);
+begin
+ AssertTrue(id + ComparisonMsg(exp, act), exp = act);
+end;
+
+procedure TXMLReaderTestBase.AssertEqualsW(const exp, act: XMLString);
+begin
+ AssertEqualsW('', exp, act);
+end;
+
+procedure TXMLReaderTestBase.AssertEquals(const id: string; exp, act: TXMLNodeType);
+var
+ exps,acts: string;
+begin
+ if exp <> act then
+ begin
+ Str(exp, exps);
+ Str(act, acts);
+ Fail(id+ComparisonMsg(exps,acts));
+ end;
+end;
+
+procedure TXMLReaderTestBase.AssertEquals(exp, act: TXMLNodeType);
+begin
+ AssertEquals('', exp, act);
+end;
+
+procedure TXMLReaderTestBase.assertNull(const id: string; const ws: XMLString);
+begin
+ if ws <> '' then
+ Fail(id);
+end;
+
+end.
diff --git a/packages/fpgtk/src/editor/gtkdeftexts.pp b/packages/fpgtk/src/editor/gtkdeftexts.pp
index d7b255d0cb..ee10d8d7fc 100644
--- a/packages/fpgtk/src/editor/gtkdeftexts.pp
+++ b/packages/fpgtk/src/editor/gtkdeftexts.pp
@@ -9,7 +9,7 @@ resourcestring
sOptions = 'Options';
sOk = ' Ok ';
sCancel = 'Cancel';
- sExtention = 'Extention';
+ sExtension = 'Extension';
sSaveonclose = '_Save on close';
sFileFormat = 'File format';
sMRUcount = 'MRU count';
diff --git a/packages/fpgtk/src/editor/gtkeditor.pp b/packages/fpgtk/src/editor/gtkeditor.pp
index b0027737dc..98628a9317 100644
--- a/packages/fpgtk/src/editor/gtkeditor.pp
+++ b/packages/fpgtk/src/editor/gtkeditor.pp
@@ -1242,7 +1242,7 @@ begin
else
FDefs.Write (TheFile, nil, nil);
TheFile.EndUpdate;
- Thefile.SaveToFile (FDefs.UnitName+'.'+FSettings.Extention);
+ Thefile.SaveToFile (FDefs.UnitName+'.'+FSettings.Extension);
finally
TheFile.Free;
end;
@@ -1381,7 +1381,7 @@ const
keySaveOnExit = 'SaveOnExit';
keyFileFormat = 'TextFormat';
keyMRUCount = 'MRUCount';
- keyExtention = 'Extention';
+ keyExtension = 'Extention'; //keep wrong spelling so cmpatibility kept with existing settings
keyProgressWindow = 'ShowProgress';
secMRU = 'Last open files';
keyFile = 'File';
@@ -1396,7 +1396,7 @@ begin
try
saveonclose := readbool (SecSettings, keySaveOnExit, true);
Fileformat := TFileFormat(readinteger (secSettings, keyFileFormat, 2));
- Extention := readstring (secSettings, keyExtention, '.pp');
+ Extension := readstring (secSettings, keyExtension, '.pp');
MRUCount := readinteger (secSettings, keyMRUCount, 5);
ShowProgress := readbool (SecSettings, keyProgressWindow, true);
FReopenList.capacity := MRUCount;
@@ -1420,7 +1420,7 @@ begin
try
writebool (SecSettings, keySaveOnExit, saveonclose);
writeinteger (secSettings, keyFileFormat, Ord(FileFormat));
- writestring (secSettings, keyExtention, Extention);
+ writestring (secSettings, keyExtension, Extension);
writeinteger (secSettings, keyMRUCount, MRUCount);
writebool (SecSettings, keyProgressWindow, ShowProgress);
writeinteger (secMRU, keyCount, FReopenlist.count);
diff --git a/packages/fpgtk/src/editor/settingsrec.pp b/packages/fpgtk/src/editor/settingsrec.pp
index cbaf3a88ec..00e28e112c 100644
--- a/packages/fpgtk/src/editor/settingsrec.pp
+++ b/packages/fpgtk/src/editor/settingsrec.pp
@@ -15,7 +15,7 @@ type
TSettingsRec = record
SaveOnClose : boolean;
FileFormat : TFileFormat;
- Extention : string;
+ Extension : string;
MRUCount : integer;
ShowProgress : boolean;
end;
@@ -25,7 +25,7 @@ type
FCBSaveOnClose : TFPgtkToggleButton;
FEFileFormat : TFPgtkOptionMenu;
FMenuFileFormat : TFPgtkMenu;
- FEExtention : TFPgtkCombo;
+ FEExtension : TFPgtkCombo;
FEMRUCount : TFPgtkSpinButton;
FCBProgressWindow : TFPgtkToggleButton;
procedure BuildDialog;
@@ -108,16 +108,16 @@ begin
FCBProgressWindow := TFPgtkCheckedButton.CreateWithLabel(sProgressWindow, AGroup);
b.PackStart (FCBProgressWindow, False, False, 10);
- FEExtention := TFPgtkCombo.Create;
- with FEExtention do
+ FEExtension := TFPgtkCombo.Create;
+ with FEExtension do
begin
SetValueInList (false, false);
List.Add (TFPgtkListItem.CreateWithLabel('pp'));
List.Add (TFPgtkListItem.CreateWithLabel('pas'));
end;
b := TFPgtkHBox.Create;
- b.PackStart (TFPgtkLabel.Create (sExtention), false, false, 0);
- b.PackStart (FEExtention, false, false, 5);
+ b.PackStart (TFPgtkLabel.Create (sExtension), false, false, 0);
+ b.PackStart (FEExtension, false, false, 5);
box.PackStart (b, false, false, 10);
FEMRUCount := TFPgtkSpinButton.Create;
@@ -143,7 +143,7 @@ begin
begin
SaveOnClose := FCBSaveOnClose.Active;
FileFormat := TFileFormat(FMenuFileFormat.ActiveIndex);
- Extention := FEExtention.Entry.Text;
+ Extension := FEExtension.Entry.Text;
MRUCount := FEMRUCount.AsInteger;
ShowProgress := FCBProgressWindow.Active;
end;
@@ -156,7 +156,7 @@ begin
begin
FCBSaveOnClose.Active := SaveOnClose;
FEFileFormat.SetHistory (ord(FileFormat));
- FEExtention.Entry.Text := Extention;
+ FEExtension.Entry.Text := Extension;
FEMRUCount.AsInteger := MRUCount;
FCBProgressWindow.Active := ShowProgress;
end;
diff --git a/packages/fpmake_add.inc b/packages/fpmake_add.inc
index 319ab13b2a..32ec2abcca 100644
--- a/packages/fpmake_add.inc
+++ b/packages/fpmake_add.inc
@@ -25,6 +25,7 @@
add_fcl_registry(ADirectory+IncludeTrailingPathDelimiter('fcl-registry'));
add_fcl_res(ADirectory+IncludeTrailingPathDelimiter('fcl-res'));
add_fcl_sdo(ADirectory+IncludeTrailingPathDelimiter('fcl-sdo'));
+ add_fcl_sound(ADirectory+IncludeTrailingPathDelimiter('fcl-sound'));
add_fcl_stl(ADirectory+IncludeTrailingPathDelimiter('fcl-stl'));
add_fcl_web(ADirectory+IncludeTrailingPathDelimiter('fcl-web'));
add_fcl_xml(ADirectory+IncludeTrailingPathDelimiter('fcl-xml'));
@@ -99,6 +100,7 @@
add_rtl_console(ADirectory+IncludeTrailingPathDelimiter('rtl-console'));
add_rtl_extra(ADirectory+IncludeTrailingPathDelimiter('rtl-extra'));
add_rtl_objpas(ADirectory+IncludeTrailingPathDelimiter('rtl-objpas'));
+ add_rtl_unicode(ADirectory+IncludeTrailingPathDelimiter('rtl-unicode'));
add_sdl(ADirectory+IncludeTrailingPathDelimiter('sdl'));
add_sqlite(ADirectory+IncludeTrailingPathDelimiter('sqlite'));
add_svgalib(ADirectory+IncludeTrailingPathDelimiter('svgalib'));
diff --git a/packages/fpmake_proc.inc b/packages/fpmake_proc.inc
index 8da748fb6c..af057415d0 100644
--- a/packages/fpmake_proc.inc
+++ b/packages/fpmake_proc.inc
@@ -152,6 +152,12 @@ begin
{$include fcl-sdo/fpmake.pp}
end;
+procedure add_fcl_sound(const ADirectory: string);
+begin
+ with Installer do
+{$include fcl-sound/fpmake.pp}
+end;
+
procedure add_fcl_stl(const ADirectory: string);
begin
with Installer do
@@ -572,6 +578,8 @@ end;
{$include rtl-objpas/fpmake.pp}
+{$include rtl-unicode/fpmake.pp}
+
procedure add_sdl(const ADirectory: string);
begin
with Installer do
diff --git a/packages/fpmkunit/src/fpmkunit.pp b/packages/fpmkunit/src/fpmkunit.pp
index 0fbc42e8c0..2747c931d4 100644
--- a/packages/fpmkunit/src/fpmkunit.pp
+++ b/packages/fpmkunit/src/fpmkunit.pp
@@ -66,7 +66,7 @@ uses
cthreads,
{$endif UNIX}
{$endif NO_THREADING}
- SysUtils, Classes, StrUtils
+ SysUtils, Classes
{$ifdef HAS_UNIT_PROCESS}
,process
{$endif HAS_UNIT_PROCESS}
@@ -165,13 +165,13 @@ Const
{ os2 } ( false, true, false, false, false, false, false, false, false, false, false, false, false, false),
{ freebsd } ( false, true, true, false, false, true, false, false, false, false, false, false, false, false),
{ beos } ( false, true, false, false, false, false, false, false, false, false, false, false, false, false),
- { netbsd } ( false, true, true, true, true, false, false, false, false, false, false, false, false, false),
+ { netbsd } ( false, true, true, true, true, true, false, false, false, false, false, false, false, false),
{ amiga } ( false, false, true, true, false, false, false, false, false, false, false, false, false, false),
{ atari } ( false, false, true, false, false, false, false, false, false, false, false, false, false, false),
{ solaris } ( false, true, false, false, true, false, false, false, false, false, false, false, false, false),
{ qnx } ( false, true, false, false, false, false, false, false, false, false, false, false, false, false),
{ netware } ( false, true, false, false, false, false, false, false, false, false, false, false, false, false),
- { openbsd } ( false, true, true, false, false, false, false, false, false, false, false, false, false, false),
+ { openbsd } ( false, true, true, false, false, true, false, false, false, false, false, false, false, false),
{ wdosx } ( false, true, false, false, false, false, false, false, false, false, false, false, false, false),
{ palmos } ( false, false, true, false, false, false, true, false, false, false, false, false, false, false),
{ macos } ( false, false, false, true, false, false, false, false, false, false, false, false, false, false),
@@ -1290,6 +1290,129 @@ Implementation
uses typinfo, rtlconsts;
+{----------------- from strutils ---------------------}
+
+function FindPart(const HelpWilds, inputStr: string): Integer;
+var
+ i, J: Integer;
+ Diff: Integer;
+begin
+ Result:=0;
+ i:=Pos('?',HelpWilds);
+ if (i=0) then
+ Result:=Pos(HelpWilds, inputStr)
+ else
+ begin
+ Diff:=Length(inputStr) - Length(HelpWilds);
+ for i:=0 to Diff do
+ begin
+ for J:=1 to Length(HelpWilds) do
+ if (inputStr[i + J] = HelpWilds[J]) or (HelpWilds[J] = '?') then
+ begin
+ if (J=Length(HelpWilds)) then
+ begin
+ Result:=i+1;
+ Exit;
+ end;
+ end
+ else
+ Break;
+ end;
+ end;
+end;
+
+function isWild(inputStr, Wilds: string; ignoreCase: Boolean): Boolean;
+
+ function SearchNext(var Wilds: string): Integer;
+
+ begin
+ Result:=Pos('*', Wilds);
+ if Result>0 then
+ Wilds:=Copy(Wilds,1,Result - 1);
+ end;
+
+var
+ CWild, CinputWord: Integer; { counter for positions }
+ i, LenHelpWilds: Integer;
+ MaxinputWord, MaxWilds: Integer; { Length of inputStr and Wilds }
+ HelpWilds: string;
+begin
+ if Wilds = inputStr then begin
+ Result:=True;
+ Exit;
+ end;
+ repeat { delete '**', because '**' = '*' }
+ i:=Pos('**', Wilds);
+ if i > 0 then
+ Wilds:=Copy(Wilds, 1, i - 1) + '*' + Copy(Wilds, i + 2, Maxint);
+ until i = 0;
+ if Wilds = '*' then begin { for fast end, if Wilds only '*' }
+ Result:=True;
+ Exit;
+ end;
+ MaxinputWord:=Length(inputStr);
+ MaxWilds:=Length(Wilds);
+ if ignoreCase then begin { upcase all letters }
+ inputStr:=AnsiUpperCase(inputStr);
+ Wilds:=AnsiUpperCase(Wilds);
+ end;
+ if (MaxWilds = 0) or (MaxinputWord = 0) then begin
+ Result:=False;
+ Exit;
+ end;
+ CinputWord:=1;
+ CWild:=1;
+ Result:=True;
+ repeat
+ if inputStr[CinputWord] = Wilds[CWild] then begin { equal letters }
+ { goto next letter }
+ inc(CWild);
+ inc(CinputWord);
+ Continue;
+ end;
+ if Wilds[CWild] = '?' then begin { equal to '?' }
+ { goto next letter }
+ inc(CWild);
+ inc(CinputWord);
+ Continue;
+ end;
+ if Wilds[CWild] = '*' then begin { handling of '*' }
+ HelpWilds:=Copy(Wilds, CWild + 1, MaxWilds);
+ i:=SearchNext(HelpWilds);
+ LenHelpWilds:=Length(HelpWilds);
+ if i = 0 then begin
+ { no '*' in the rest, compare the ends }
+ if HelpWilds = '' then Exit; { '*' is the last letter }
+ { check the rest for equal Length and no '?' }
+ for i:=0 to LenHelpWilds - 1 do begin
+ if (HelpWilds[LenHelpWilds - i] <> inputStr[MaxinputWord - i]) and
+ (HelpWilds[LenHelpWilds - i]<> '?') then
+ begin
+ Result:=False;
+ Exit;
+ end;
+ end;
+ Exit;
+ end;
+ { handle all to the next '*' }
+ inc(CWild, 1 + LenHelpWilds);
+ i:=FindPart(HelpWilds, Copy(inputStr, CinputWord, Maxint));
+ if i= 0 then begin
+ Result:=False;
+ Exit;
+ end;
+ CinputWord:=i + LenHelpWilds;
+ Continue;
+ end;
+ Result:=False;
+ Exit;
+ until (CinputWord > MaxinputWord) or (CWild > MaxWilds);
+ { no completed evaluation }
+ if CinputWord <= MaxinputWord then Result:=False;
+ if (CWild <= MaxWilds) and (Wilds[MaxWilds] <> '*') then Result:=False;
+end;
+
+
type
TUnsortedDuplicatesStringList = class(TStringList)
public
diff --git a/packages/graph/src/go32v2/graph.pp b/packages/graph/src/go32v2/graph.pp
index c9158be5bc..e7f66afa73 100644
--- a/packages/graph/src/go32v2/graph.pp
+++ b/packages/graph/src/go32v2/graph.pp
@@ -3434,6 +3434,137 @@ const CrtAddress: word = 0;
Test6845 := False;
end;
+ procedure FillCommonCGA320(var mode: TModeInfo);
+ begin
+ mode.HardwarePages := 0;
+ mode.MaxColor := 4;
+ mode.PaletteSize := 16;
+ mode.DirectColor := FALSE;
+ mode.MaxX := 319;
+ mode.MaxY := 199;
+ mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixelCGA320;
+ mode.PutPixel:={$ifdef fpc}@{$endif}PutPixelCGA320;
+ mode.GetPixel:={$ifdef fpc}@{$endif}GetPixelCGA320;
+ mode.SetRGBPalette := {$ifdef fpc}@{$endif}SetVGARGBPalette;
+ mode.GetRGBPalette := {$ifdef fpc}@{$endif}GetVGARGBPalette;
+ mode.SetAllPalette := {$ifdef fpc}@{$endif}SetVGARGBAllPalette;
+ mode.HLine := {$ifdef fpc}@{$endif}HLineCGA320;
+ mode.SetBkColor := {$ifdef fpc}@{$endif}SetBkColorCGA320;
+ mode.GetBkColor := {$ifdef fpc}@{$endif}GetBkColorCGA320;
+ mode.XAspect := 8333;
+ mode.YAspect := 10000;
+ end;
+
+ procedure FillCommonCGA640(var mode: TModeInfo);
+ begin
+ mode.HardwarePages := 0;
+ mode.MaxColor := 2;
+ mode.PaletteSize := 16;
+ mode.DirectColor := FALSE;
+ mode.MaxX := 639;
+ mode.MaxY := 199;
+ mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixelCGA640;
+ mode.PutPixel:={$ifdef fpc}@{$endif}PutPixelCGA640;
+ mode.GetPixel:={$ifdef fpc}@{$endif}GetPixelCGA640;
+ mode.SetRGBPalette := {$ifdef fpc}@{$endif}SetVGARGBPalette;
+ mode.GetRGBPalette := {$ifdef fpc}@{$endif}GetVGARGBPalette;
+ mode.SetAllPalette := {$ifdef fpc}@{$endif}SetVGARGBAllPalette;
+ mode.HLine := {$ifdef fpc}@{$endif}HLineCGA640;
+ mode.SetBkColor := {$ifdef fpc}@{$endif}SetBkColorCGA640;
+ mode.GetBkColor := {$ifdef fpc}@{$endif}GetBkColorCGA640;
+ mode.XAspect := 4167;
+ mode.YAspect := 10000;
+ end;
+
+ procedure FillCommonEGAVGA16(var mode: TModeInfo);
+ begin
+ mode.MaxColor := 16;
+ mode.DirectColor := FALSE;
+ mode.PaletteSize := mode.MaxColor;
+ mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixel16;
+ mode.PutPixel:={$ifdef fpc}@{$endif}PutPixel16;
+ mode.GetPixel:={$ifdef fpc}@{$endif}GetPixel16;
+ mode.SetRGBPalette := {$ifdef fpc}@{$endif}SetVGARGBPalette;
+ mode.GetRGBPalette := {$ifdef fpc}@{$endif}GetVGARGBPalette;
+ mode.SetAllPalette := {$ifdef fpc}@{$endif}SetVGARGBAllPalette;
+ mode.HLine := {$ifdef fpc}@{$endif}HLine16;
+ mode.VLine := {$ifdef fpc}@{$endif}VLine16;
+ mode.GetScanLine := {$ifdef fpc}@{$endif}GetScanLine16;
+ end;
+
+ procedure FillCommonVESA16(var mode: TModeInfo);
+ begin
+ mode.MaxColor := 16;
+ { the ModeInfo is automatically set if the mode is supPorted }
+ { by the call to SearchVESAMode. }
+ mode.HardwarePages := VESAModeInfo.NumberOfPages;
+ mode.DirectColor := FALSE;
+ mode.PaletteSize := mode.MaxColor;
+ mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixVESA16;
+ mode.SetRGBPalette := {$ifdef fpc}@{$endif}SetVESARGBPalette;
+ mode.GetRGBPalette := {$ifdef fpc}@{$endif}GetVESARGBPalette;
+{$ifdef fpc}
+ mode.SetAllPalette := @SetVESARGBAllPalette;
+{$endif fpc}
+ mode.PutPixel:={$ifdef fpc}@{$endif}PutPixVESA16;
+ mode.GetPixel:={$ifdef fpc}@{$endif}GetPixVESA16;
+ mode.SetVisualPage := {$ifdef fpc}@{$endif}SetVisualVESA;
+ mode.SetActivePage := {$ifdef fpc}@{$endif}SetActiveVESA;
+ mode.HLine := {$ifdef fpc}@{$endif}HLineVESA16;
+ end;
+
+ procedure FillCommonVESA256(var mode: TModeInfo);
+ begin
+ mode.MaxColor := 256;
+ { the ModeInfo is automatically set if the mode is supPorted }
+ { by the call to SearchVESAMode. }
+ mode.HardwarePages := VESAModeInfo.NumberOfPages;
+ mode.PaletteSize := mode.MaxColor;
+ mode.DirectColor := FALSE;
+ mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixVESA256;
+ mode.PutPixel:={$ifdef fpc}@{$endif}PutPixVESA256;
+ mode.GetPixel:={$ifdef fpc}@{$endif}GetPixVESA256;
+ mode.SetRGBPalette := {$ifdef fpc}@{$endif}SetVESARGBPalette;
+ mode.GetRGBPalette := {$ifdef fpc}@{$endif}GetVESARGBPalette;
+{$ifdef fpc}
+ mode.SetAllPalette := @SetVESARGBAllPalette;
+{$endif fpc}
+ mode.SetVisualPage := {$ifdef fpc}@{$endif}SetVisualVESA;
+ mode.SetActivePage := {$ifdef fpc}@{$endif}SetActiveVESA;
+ mode.hline := {$ifdef fpc}@{$endif}HLineVESA256;
+ mode.vline := {$ifdef fpc}@{$endif}VLineVESA256;
+ mode.GetScanLine := {$ifdef fpc}@{$endif}GetScanLineVESA256;
+ mode.PatternLine := {$ifdef fpc}@{$endif}PatternLineVESA256;
+ end;
+
+ procedure FillCommonVESA32kOr64k(var mode: TModeInfo);
+ begin
+ { the ModeInfo is automatically set if the mode is supPorted }
+ { by the call to SearchVESAMode. }
+ mode.HardwarePages := VESAModeInfo.NumberOfPages;
+ mode.DirectColor := TRUE;
+ mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixVESA32kOr64k;
+ mode.PutPixel:={$ifdef fpc}@{$endif}PutPixVESA32kOr64k;
+ mode.GetPixel:={$ifdef fpc}@{$endif}GetPixVESA32kOr64k;
+ mode.SetRGBPalette := {$ifdef fpc}@{$endif}SetVESARGBPalette;
+ mode.GetRGBPalette := {$ifdef fpc}@{$endif}GetVESARGBPalette;
+ mode.SetVisualPage := {$ifdef fpc}@{$endif}SetVisualVESA;
+ mode.SetActivePage := {$ifdef fpc}@{$endif}SetActiveVESA;
+ end;
+
+ procedure FillCommonVESA32k(var mode: TModeInfo);
+ begin
+ FillCommonVESA32kOr64k(mode);
+ mode.MaxColor := 32768;
+ mode.PaletteSize := mode.MaxColor;
+ end;
+ procedure FillCommonVESA64k(var mode: TModeInfo);
+ begin
+ FillCommonVESA32kOr64k(mode);
+ mode.MaxColor := 65536;
+ mode.PaletteSize := mode.MaxColor;
+ end;
+
var
HGCDetected : Boolean;
CGADetected : Boolean; { TRUE means real CGA, *not* EGA or VGA }
@@ -3583,123 +3714,43 @@ const CrtAddress: word = 0;
{ now add all standard CGA modes... }
InitMode(mode);
+ FillCommonCGA320(mode);
mode.DriverNumber := CGA;
- mode.HardwarePages := 0;
mode.ModeNumber := CGAC0;
mode.ModeName:='320 x 200 CGA C0';
- mode.MaxColor := 4;
- mode.PaletteSize := 16;
- mode.DirectColor := FALSE;
- mode.MaxX := 319;
- mode.MaxY := 199;
- mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixelCGA320;
- mode.PutPixel:={$ifdef fpc}@{$endif}PutPixelCGA320;
- mode.GetPixel:={$ifdef fpc}@{$endif}GetPixelCGA320;
- mode.SetRGBPalette := {$ifdef fpc}@{$endif}SetVGARGBPalette;
- mode.GetRGBPalette := {$ifdef fpc}@{$endif}GetVGARGBPalette;
- mode.SetAllPalette := {$ifdef fpc}@{$endif}SetVGARGBAllPalette;
mode.InitMode := {$ifdef fpc}@{$endif}InitCGA320C0;
- mode.HLine := {$ifdef fpc}@{$endif}HLineCGA320;
- mode.SetBkColor := {$ifdef fpc}@{$endif}SetBkColorCGA320;
- mode.GetBkColor := {$ifdef fpc}@{$endif}GetBkColorCGA320;
- mode.XAspect := 8333;
- mode.YAspect := 10000;
AddMode(mode);
InitMode(mode);
+ FillCommonCGA320(mode);
mode.DriverNumber := CGA;
- mode.HardwarePages := 0;
mode.ModeNumber := CGAC1;
mode.ModeName:='320 x 200 CGA C1';
- mode.MaxColor := 4;
- mode.PaletteSize := 16;
- mode.DirectColor := FALSE;
- mode.MaxX := 319;
- mode.MaxY := 199;
- mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixelCGA320;
- mode.PutPixel:={$ifdef fpc}@{$endif}PutPixelCGA320;
- mode.GetPixel:={$ifdef fpc}@{$endif}GetPixelCGA320;
- mode.SetRGBPalette := {$ifdef fpc}@{$endif}SetVGARGBPalette;
- mode.GetRGBPalette := {$ifdef fpc}@{$endif}GetVGARGBPalette;
- mode.SetAllPalette := {$ifdef fpc}@{$endif}SetVGARGBAllPalette;
mode.InitMode := {$ifdef fpc}@{$endif}InitCGA320C1;
- mode.HLine := {$ifdef fpc}@{$endif}HLineCGA320;
- mode.SetBkColor := {$ifdef fpc}@{$endif}SetBkColorCGA320;
- mode.GetBkColor := {$ifdef fpc}@{$endif}GetBkColorCGA320;
- mode.XAspect := 8333;
- mode.YAspect := 10000;
AddMode(mode);
InitMode(mode);
+ FillCommonCGA320(mode);
mode.DriverNumber := CGA;
- mode.HardwarePages := 0;
mode.ModeNumber := CGAC2;
mode.ModeName:='320 x 200 CGA C2';
- mode.MaxColor := 4;
- mode.PaletteSize := 16;
- mode.DirectColor := FALSE;
- mode.MaxX := 319;
- mode.MaxY := 199;
- mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixelCGA320;
- mode.PutPixel:={$ifdef fpc}@{$endif}PutPixelCGA320;
- mode.GetPixel:={$ifdef fpc}@{$endif}GetPixelCGA320;
- mode.SetRGBPalette := {$ifdef fpc}@{$endif}SetVGARGBPalette;
- mode.GetRGBPalette := {$ifdef fpc}@{$endif}GetVGARGBPalette;
- mode.SetAllPalette := {$ifdef fpc}@{$endif}SetVGARGBAllPalette;
mode.InitMode := {$ifdef fpc}@{$endif}InitCGA320C2;
- mode.HLine := {$ifdef fpc}@{$endif}HLineCGA320;
- mode.SetBkColor := {$ifdef fpc}@{$endif}SetBkColorCGA320;
- mode.GetBkColor := {$ifdef fpc}@{$endif}GetBkColorCGA320;
- mode.XAspect := 8333;
- mode.YAspect := 10000;
AddMode(mode);
InitMode(mode);
+ FillCommonCGA320(mode);
mode.DriverNumber := CGA;
- mode.HardwarePages := 0;
mode.ModeNumber := CGAC3;
mode.ModeName:='320 x 200 CGA C3';
- mode.MaxColor := 4;
- mode.PaletteSize := 16;
- mode.DirectColor := FALSE;
- mode.MaxX := 319;
- mode.MaxY := 199;
- mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixelCGA320;
- mode.PutPixel:={$ifdef fpc}@{$endif}PutPixelCGA320;
- mode.GetPixel:={$ifdef fpc}@{$endif}GetPixelCGA320;
- mode.SetRGBPalette := {$ifdef fpc}@{$endif}SetVGARGBPalette;
- mode.GetRGBPalette := {$ifdef fpc}@{$endif}GetVGARGBPalette;
- mode.SetAllPalette := {$ifdef fpc}@{$endif}SetVGARGBAllPalette;
mode.InitMode := {$ifdef fpc}@{$endif}InitCGA320C3;
- mode.HLine := {$ifdef fpc}@{$endif}HLineCGA320;
- mode.SetBkColor := {$ifdef fpc}@{$endif}SetBkColorCGA320;
- mode.GetBkColor := {$ifdef fpc}@{$endif}GetBkColorCGA320;
- mode.XAspect := 8333;
- mode.YAspect := 10000;
AddMode(mode);
InitMode(mode);
+ FillCommonCGA640(mode);
mode.DriverNumber := CGA;
- mode.HardwarePages := 0;
mode.ModeNumber := CGAHi;
mode.ModeName:='640 x 200 CGA';
- mode.MaxColor := 2;
- mode.PaletteSize := 16;
- mode.DirectColor := FALSE;
- mode.MaxX := 639;
- mode.MaxY := 199;
- mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixelCGA640;
- mode.PutPixel:={$ifdef fpc}@{$endif}PutPixelCGA640;
- mode.GetPixel:={$ifdef fpc}@{$endif}GetPixelCGA640;
- mode.SetRGBPalette := {$ifdef fpc}@{$endif}SetVGARGBPalette;
- mode.GetRGBPalette := {$ifdef fpc}@{$endif}GetVGARGBPalette;
- mode.SetAllPalette := {$ifdef fpc}@{$endif}SetVGARGBAllPalette;
mode.InitMode := {$ifdef fpc}@{$endif}InitCGA640;
- mode.HLine := {$ifdef fpc}@{$endif}HLineCGA640;
- mode.SetBkColor := {$ifdef fpc}@{$endif}SetBkColorCGA640;
- mode.GetBkColor := {$ifdef fpc}@{$endif}GetBkColorCGA640;
- mode.XAspect := 4167;
- mode.YAspect := 10000;
AddMode(mode);
end;
@@ -3715,53 +3766,31 @@ const CrtAddress: word = 0;
RestoreVideoState := @RestoreStateVGA;
InitMode(mode);
+ FillCommonEGAVGA16(mode);
mode.ModeNumber:=EGALo;
mode.DriverNumber := EGA;
mode.ModeName:='640 x 200 EGA';
- mode.MaxColor := 16;
- mode.HardwarePages := 2;
- mode.DirectColor := FALSE;
- mode.PaletteSize := mode.MaxColor;
mode.MaxX := 639;
mode.MaxY := 199;
- mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixel16;
- mode.PutPixel:={$ifdef fpc}@{$endif}PutPixel16;
- mode.GetPixel:={$ifdef fpc}@{$endif}GetPixel16;
- mode.SetRGBPalette := {$ifdef fpc}@{$endif}SetVGARGBPalette;
- mode.GetRGBPalette := {$ifdef fpc}@{$endif}GetVGARGBPalette;
- mode.SetAllPalette := {$ifdef fpc}@{$endif}SetVGARGBAllPalette;
+ mode.HardwarePages := 2;
mode.SetVisualPage := {$ifdef fpc}@{$endif}SetVisual200;
mode.SetActivePage := {$ifdef fpc}@{$endif}SetActive200;
mode.InitMode := {$ifdef fpc}@{$endif}Init640x200x16;
- mode.HLine := {$ifdef fpc}@{$endif}HLine16;
- mode.VLine := {$ifdef fpc}@{$endif}VLine16;
- mode.GetScanLine := {$ifdef fpc}@{$endif}GetScanLine16;
mode.XAspect := 4500;
mode.YAspect := 10000;
AddMode(mode);
InitMode(mode);
+ FillCommonEGAVGA16(mode);
mode.ModeNumber:=EGAHi;
mode.DriverNumber := EGA;
mode.ModeName:='640 x 350 EGA';
- mode.HardwarePages := 1;
- mode.MaxColor := 16;
- mode.DirectColor := FALSE;
- mode.PaletteSize := mode.MaxColor;
mode.MaxX := 639;
mode.MaxY := 349;
- mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixel16;
- mode.PutPixel:={$ifdef fpc}@{$endif}PutPixel16;
- mode.GetPixel:={$ifdef fpc}@{$endif}GetPixel16;
- mode.InitMode := {$ifdef fpc}@{$endif}Init640x350x16;
- mode.SetRGBPalette := {$ifdef fpc}@{$endif}SetVGARGBPalette;
- mode.GetRGBPalette := {$ifdef fpc}@{$endif}GetVGARGBPalette;
- mode.SetAllPalette := {$ifdef fpc}@{$endif}SetVGARGBAllPalette;
+ mode.HardwarePages := 1;
mode.SetVisualPage := {$ifdef fpc}@{$endif}SetVisual350;
mode.SetActivePage := {$ifdef fpc}@{$endif}SetActive350;
- mode.HLine := {$ifdef fpc}@{$endif}HLine16;
- mode.VLine := {$ifdef fpc}@{$endif}VLine16;
- mode.GetScanLine := {$ifdef fpc}@{$endif}GetScanLine16;
+ mode.InitMode := {$ifdef fpc}@{$endif}Init640x350x16;
mode.XAspect := 7750;
mode.YAspect := 10000;
AddMode(mode);
@@ -3782,123 +3811,43 @@ const CrtAddress: word = 0;
{ yes, most of these are the same as the CGA modes; this is TP7
compatible }
InitMode(mode);
+ FillCommonCGA320(mode);
mode.DriverNumber := MCGA;
- mode.HardwarePages := 0;
mode.ModeNumber := MCGAC0;
mode.ModeName:='320 x 200 CGA C0'; { yes, it says 'CGA' even for the MCGA driver; this is TP7 compatible }
- mode.MaxColor := 4;
- mode.PaletteSize := 16;
- mode.DirectColor := FALSE;
- mode.MaxX := 319;
- mode.MaxY := 199;
- mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixelCGA320;
- mode.PutPixel:={$ifdef fpc}@{$endif}PutPixelCGA320;
- mode.GetPixel:={$ifdef fpc}@{$endif}GetPixelCGA320;
- mode.SetRGBPalette := {$ifdef fpc}@{$endif}SetVGARGBPalette;
- mode.GetRGBPalette := {$ifdef fpc}@{$endif}GetVGARGBPalette;
- mode.SetAllPalette := {$ifdef fpc}@{$endif}SetVGARGBAllPalette;
mode.InitMode := {$ifdef fpc}@{$endif}InitCGA320C0;
- mode.HLine := {$ifdef fpc}@{$endif}HLineCGA320;
- mode.SetBkColor := {$ifdef fpc}@{$endif}SetBkColorCGA320;
- mode.GetBkColor := {$ifdef fpc}@{$endif}GetBkColorCGA320;
- mode.XAspect := 8333;
- mode.YAspect := 10000;
AddMode(mode);
InitMode(mode);
+ FillCommonCGA320(mode);
mode.DriverNumber := MCGA;
- mode.HardwarePages := 0;
mode.ModeNumber := MCGAC1;
mode.ModeName:='320 x 200 CGA C1'; { yes, it says 'CGA' even for the MCGA driver; this is TP7 compatible }
- mode.MaxColor := 4;
- mode.PaletteSize := 16;
- mode.DirectColor := FALSE;
- mode.MaxX := 319;
- mode.MaxY := 199;
- mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixelCGA320;
- mode.PutPixel:={$ifdef fpc}@{$endif}PutPixelCGA320;
- mode.GetPixel:={$ifdef fpc}@{$endif}GetPixelCGA320;
- mode.SetRGBPalette := {$ifdef fpc}@{$endif}SetVGARGBPalette;
- mode.GetRGBPalette := {$ifdef fpc}@{$endif}GetVGARGBPalette;
- mode.SetAllPalette := {$ifdef fpc}@{$endif}SetVGARGBAllPalette;
mode.InitMode := {$ifdef fpc}@{$endif}InitCGA320C1;
- mode.HLine := {$ifdef fpc}@{$endif}HLineCGA320;
- mode.SetBkColor := {$ifdef fpc}@{$endif}SetBkColorCGA320;
- mode.GetBkColor := {$ifdef fpc}@{$endif}GetBkColorCGA320;
- mode.XAspect := 8333;
- mode.YAspect := 10000;
AddMode(mode);
InitMode(mode);
+ FillCommonCGA320(mode);
mode.DriverNumber := MCGA;
- mode.HardwarePages := 0;
mode.ModeNumber := MCGAC2;
mode.ModeName:='320 x 200 CGA C2'; { yes, it says 'CGA' even for the MCGA driver; this is TP7 compatible }
- mode.MaxColor := 4;
- mode.PaletteSize := 16;
- mode.DirectColor := FALSE;
- mode.MaxX := 319;
- mode.MaxY := 199;
- mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixelCGA320;
- mode.PutPixel:={$ifdef fpc}@{$endif}PutPixelCGA320;
- mode.GetPixel:={$ifdef fpc}@{$endif}GetPixelCGA320;
- mode.SetRGBPalette := {$ifdef fpc}@{$endif}SetVGARGBPalette;
- mode.GetRGBPalette := {$ifdef fpc}@{$endif}GetVGARGBPalette;
- mode.SetAllPalette := {$ifdef fpc}@{$endif}SetVGARGBAllPalette;
mode.InitMode := {$ifdef fpc}@{$endif}InitCGA320C2;
- mode.HLine := {$ifdef fpc}@{$endif}HLineCGA320;
- mode.SetBkColor := {$ifdef fpc}@{$endif}SetBkColorCGA320;
- mode.GetBkColor := {$ifdef fpc}@{$endif}GetBkColorCGA320;
- mode.XAspect := 8333;
- mode.YAspect := 10000;
AddMode(mode);
InitMode(mode);
+ FillCommonCGA320(mode);
mode.DriverNumber := MCGA;
- mode.HardwarePages := 0;
mode.ModeNumber := MCGAC3;
mode.ModeName:='320 x 200 CGA C3'; { yes, it says 'CGA' even for the MCGA driver; this is TP7 compatible }
- mode.MaxColor := 4;
- mode.PaletteSize := 16;
- mode.DirectColor := FALSE;
- mode.MaxX := 319;
- mode.MaxY := 199;
- mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixelCGA320;
- mode.PutPixel:={$ifdef fpc}@{$endif}PutPixelCGA320;
- mode.GetPixel:={$ifdef fpc}@{$endif}GetPixelCGA320;
- mode.SetRGBPalette := {$ifdef fpc}@{$endif}SetVGARGBPalette;
- mode.GetRGBPalette := {$ifdef fpc}@{$endif}GetVGARGBPalette;
- mode.SetAllPalette := {$ifdef fpc}@{$endif}SetVGARGBAllPalette;
mode.InitMode := {$ifdef fpc}@{$endif}InitCGA320C3;
- mode.HLine := {$ifdef fpc}@{$endif}HLineCGA320;
- mode.SetBkColor := {$ifdef fpc}@{$endif}SetBkColorCGA320;
- mode.GetBkColor := {$ifdef fpc}@{$endif}GetBkColorCGA320;
- mode.XAspect := 8333;
- mode.YAspect := 10000;
AddMode(mode);
InitMode(mode);
+ FillCommonCGA640(mode);
mode.DriverNumber := MCGA;
- mode.HardwarePages := 0;
mode.ModeNumber := MCGAMed;
mode.ModeName:='640 x 200 CGA'; { yes, it says 'CGA' even for the MCGA driver; this is TP7 compatible }
- mode.MaxColor := 2;
- mode.PaletteSize := 16;
- mode.DirectColor := FALSE;
- mode.MaxX := 639;
- mode.MaxY := 199;
- mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixelCGA640;
- mode.PutPixel:={$ifdef fpc}@{$endif}PutPixelCGA640;
- mode.GetPixel:={$ifdef fpc}@{$endif}GetPixelCGA640;
- mode.SetRGBPalette := {$ifdef fpc}@{$endif}SetVGARGBPalette;
- mode.GetRGBPalette := {$ifdef fpc}@{$endif}GetVGARGBPalette;
- mode.SetAllPalette := {$ifdef fpc}@{$endif}SetVGARGBAllPalette;
mode.InitMode := {$ifdef fpc}@{$endif}InitCGA640;
- mode.HLine := {$ifdef fpc}@{$endif}HLineCGA640;
- mode.SetBkColor := {$ifdef fpc}@{$endif}SetBkColorCGA640;
- mode.GetBkColor := {$ifdef fpc}@{$endif}GetBkColorCGA640;
- mode.XAspect := 4167;
- mode.YAspect := 10000;
AddMode(mode);
InitMode(mode);
@@ -3973,77 +3922,44 @@ const CrtAddress: word = 0;
AddMode(mode);
InitMode(mode);
+ FillCommonEGAVGA16(mode);
mode.ModeNumber:=VGALo;
mode.DriverNumber := VGA;
mode.ModeName:='640 x 200 EGA'; { yes, it says 'EGA' even for the VGA driver; this is TP7 compatible }
- mode.MaxColor := 16;
- mode.HardwarePages := 2;
- mode.DirectColor := FALSE;
- mode.PaletteSize := mode.MaxColor;
mode.MaxX := 639;
mode.MaxY := 199;
- mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixel16;
- mode.PutPixel:={$ifdef fpc}@{$endif}PutPixel16;
- mode.GetPixel:={$ifdef fpc}@{$endif}GetPixel16;
- mode.SetRGBPalette := {$ifdef fpc}@{$endif}SetVGARGBPalette;
- mode.GetRGBPalette := {$ifdef fpc}@{$endif}GetVGARGBPalette;
- mode.SetAllPalette := {$ifdef fpc}@{$endif}SetVGARGBAllPalette;
+ mode.HardwarePages := 2;
mode.SetVisualPage := {$ifdef fpc}@{$endif}SetVisual200;
mode.SetActivePage := {$ifdef fpc}@{$endif}SetActive200;
mode.InitMode := {$ifdef fpc}@{$endif}Init640x200x16;
- mode.HLine := {$ifdef fpc}@{$endif}HLine16;
- mode.VLine := {$ifdef fpc}@{$endif}VLine16;
- mode.GetScanLine := {$ifdef fpc}@{$endif}GetScanLine16;
mode.XAspect := 4500;
mode.YAspect := 10000;
AddMode(mode);
InitMode(mode);
+ FillCommonEGAVGA16(mode);
mode.ModeNumber:=VGAMed;
mode.DriverNumber := VGA;
mode.ModeName:='640 x 350 EGA'; { yes, it says 'EGA' even for the VGA driver; this is TP7 compatible }
- mode.HardwarePages := 1;
- mode.MaxColor := 16;
- mode.DirectColor := FALSE;
- mode.PaletteSize := mode.MaxColor;
mode.MaxX := 639;
mode.MaxY := 349;
- mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixel16;
- mode.PutPixel:={$ifdef fpc}@{$endif}PutPixel16;
- mode.GetPixel:={$ifdef fpc}@{$endif}GetPixel16;
- mode.InitMode := {$ifdef fpc}@{$endif}Init640x350x16;
- mode.SetRGBPalette := {$ifdef fpc}@{$endif}SetVGARGBPalette;
- mode.GetRGBPalette := {$ifdef fpc}@{$endif}GetVGARGBPalette;
- mode.SetAllPalette := {$ifdef fpc}@{$endif}SetVGARGBAllPalette;
+ mode.HardwarePages := 1;
mode.SetVisualPage := {$ifdef fpc}@{$endif}SetVisual350;
mode.SetActivePage := {$ifdef fpc}@{$endif}SetActive350;
- mode.HLine := {$ifdef fpc}@{$endif}HLine16;
- mode.VLine := {$ifdef fpc}@{$endif}VLine16;
- mode.GetScanLine := {$ifdef fpc}@{$endif}GetScanLine16;
+ mode.InitMode := {$ifdef fpc}@{$endif}Init640x350x16;
mode.XAspect := 7750;
mode.YAspect := 10000;
AddMode(mode);
InitMode(mode);
+ FillCommonEGAVGA16(mode);
mode.ModeNumber:=VGAHi;
mode.DriverNumber := VGA;
- mode.HardwarePages := 0;
mode.ModeName:='640 x 480 VGA';
- mode.MaxColor := 16;
- mode.DirectColor := FALSE;
- mode.PaletteSize := mode.MaxColor;
mode.MaxX := 639;
mode.MaxY := 479;
- mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixel16;
- mode.PutPixel:={$ifdef fpc}@{$endif}PutPixel16;
- mode.GetPixel:={$ifdef fpc}@{$endif}GetPixel16;
- mode.SetRGBPalette := {$ifdef fpc}@{$endif}SetVGARGBPalette;
- mode.GetRGBPalette := {$ifdef fpc}@{$endif}GetVGARGBPalette;
- mode.SetAllPalette := {$ifdef fpc}@{$endif}SetVGARGBAllPalette;
+ mode.HardwarePages := 0;
mode.InitMode := {$ifdef fpc}@{$endif}Init640x480x16;
- mode.HLine := {$ifdef fpc}@{$endif}HLine16;
- mode.VLine := {$ifdef fpc}@{$endif}VLine16;
- mode.GetScanLine := {$ifdef fpc}@{$endif}GetScanLine16;
mode.XAspect := 10000;
mode.YAspect := 10000;
AddMode(mode);
@@ -4077,25 +3993,13 @@ const CrtAddress: word = 0;
if SearchVESAModes(m320x200x32k) then
begin
InitMode(mode);
+ FillCommonVESA32k(mode);
mode.ModeNumber:=m320x200x32k;
mode.DriverNumber := VESA;
mode.ModeName:='320 x 200 VESA';
- mode.MaxColor := 32768;
- { the ModeInfo is automatically set if the mode is supPorted }
- { by the call to SearchVESAMode. }
- mode.HardwarePages := VESAModeInfo.NumberOfPages;
- mode.PaletteSize := mode.MaxColor;
- mode.DirectColor := TRUE;
mode.MaxX := 319;
mode.MaxY := 199;
- mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixVESA32kOr64k;
- mode.PutPixel:={$ifdef fpc}@{$endif}PutPixVESA32kOr64k;
- mode.GetPixel:={$ifdef fpc}@{$endif}GetPixVESA32kOr64k;
- mode.SetRGBPalette := {$ifdef fpc}@{$endif}SetVESARGBPalette;
- mode.GetRGBPalette := {$ifdef fpc}@{$endif}GetVESARGBPalette;
mode.InitMode := {$ifdef fpc}@{$endif}Init320x200x32k;
- mode.SetVisualPage := {$ifdef fpc}@{$endif}SetVisualVESA;
- mode.SetActivePage := {$ifdef fpc}@{$endif}SetActiveVESA;
mode.XAspect := 8333;
mode.YAspect := 10000;
AddMode(mode);
@@ -4103,25 +4007,13 @@ const CrtAddress: word = 0;
if SearchVESAModes(m320x200x64k) then
begin
InitMode(mode);
+ FillCommonVESA64k(mode);
mode.ModeNumber:=m320x200x64k;
mode.DriverNumber := VESA;
mode.ModeName:='320 x 200 VESA';
- mode.MaxColor := 65536;
- { the ModeInfo is automatically set if the mode is supPorted }
- { by the call to SearchVESAMode. }
- mode.HardwarePages := VESAModeInfo.NumberOfPages;
- mode.PaletteSize := mode.MaxColor;
- mode.DirectColor := TRUE;
mode.MaxX := 319;
mode.MaxY := 199;
- mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixVESA32kOr64k;
- mode.PutPixel:={$ifdef fpc}@{$endif}PutPixVESA32kOr64k;
- mode.GetPixel:={$ifdef fpc}@{$endif}GetPixVESA32kOr64k;
- mode.SetRGBPalette := {$ifdef fpc}@{$endif}SetVESARGBPalette;
- mode.GetRGBPalette := {$ifdef fpc}@{$endif}GetVESARGBPalette;
mode.InitMode := {$ifdef fpc}@{$endif}Init320x200x64k;
- mode.SetVisualPage := {$ifdef fpc}@{$endif}SetVisualVESA;
- mode.SetActivePage := {$ifdef fpc}@{$endif}SetActiveVESA;
mode.XAspect := 8333;
mode.YAspect := 10000;
AddMode(mode);
@@ -4129,32 +4021,13 @@ const CrtAddress: word = 0;
if SearchVESAModes(m640x400x256) then
begin
InitMode(mode);
+ FillCommonVESA256(mode);
mode.ModeNumber:=m640x400x256;
mode.DriverNumber := VESA;
mode.ModeName:='640 x 400 VESA';
- mode.MaxColor := 256;
- { the ModeInfo is automatically set if the mode is supPorted }
- { by the call to SearchVESAMode. }
- mode.HardwarePages := VESAModeInfo.NumberOfPages;
- mode.PaletteSize := mode.MaxColor;
- mode.DirectColor := FALSE;
mode.MaxX := 639;
mode.MaxY := 399;
- mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixVESA256;
- mode.PutPixel:={$ifdef fpc}@{$endif}PutPixVESA256;
- mode.GetPixel:={$ifdef fpc}@{$endif}GetPixVESA256;
- mode.SetRGBPalette := {$ifdef fpc}@{$endif}SetVESARGBPalette;
- mode.GetRGBPalette := {$ifdef fpc}@{$endif}GetVESARGBPalette;
-{$ifdef fpc}
- mode.SetAllPalette := @SetVESARGBAllPalette;
-{$endif fpc}
mode.InitMode := {$ifdef fpc}@{$endif}Init640x400x256;
- mode.SetVisualPage := {$ifdef fpc}@{$endif}SetVisualVESA;
- mode.SetActivePage := {$ifdef fpc}@{$endif}SetActiveVESA;
- mode.hline := {$ifdef fpc}@{$endif}HLineVESA256;
- mode.vline := {$ifdef fpc}@{$endif}VLineVESA256;
- mode.GetScanLine := {$ifdef fpc}@{$endif}GetScanLineVESA256;
- mode.PatternLine := {$ifdef fpc}@{$endif}PatternLineVESA256;
mode.XAspect := 8333;
mode.YAspect := 10000;
AddMode(mode);
@@ -4162,31 +4035,13 @@ const CrtAddress: word = 0;
if SearchVESAModes(m640x480x256) then
begin
InitMode(mode);
+ FillCommonVESA256(mode);
mode.ModeNumber:=m640x480x256;
mode.DriverNumber := VESA;
mode.ModeName:='640 x 480 VESA';
- mode.MaxColor := 256;
- { the ModeInfo is automatically set if the mode is supPorted }
- { by the call to SearchVESAMode. }
- mode.HardwarePages := VESAModeInfo.NumberOfPages;
- mode.PaletteSize := mode.MaxColor;
mode.MaxX := 639;
mode.MaxY := 479;
- mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixVESA256;
- mode.PutPixel:={$ifdef fpc}@{$endif}PutPixVESA256;
- mode.GetPixel:={$ifdef fpc}@{$endif}GetPixVESA256;
- mode.SetRGBPalette := {$ifdef fpc}@{$endif}SetVESARGBPalette;
- mode.GetRGBPalette := {$ifdef fpc}@{$endif}GetVESARGBPalette;
-{$ifdef fpc}
- mode.SetAllPalette := @SetVESARGBAllPalette;
-{$endif fpc}
mode.InitMode := {$ifdef fpc}@{$endif}Init640x480x256;
- mode.SetVisualPage := {$ifdef fpc}@{$endif}SetVisualVESA;
- mode.SetActivePage := {$ifdef fpc}@{$endif}SetActiveVESA;
- mode.hline := {$ifdef fpc}@{$endif}HLineVESA256;
- mode.vline := {$ifdef fpc}@{$endif}VLineVESA256;
- mode.GetScanLine := {$ifdef fpc}@{$endif}GetScanLineVESA256;
- mode.PatternLine := {$ifdef fpc}@{$endif}PatternLineVESA256;
mode.XAspect := 10000;
mode.YAspect := 10000;
AddMode(mode);
@@ -4194,25 +4049,13 @@ const CrtAddress: word = 0;
if SearchVESAModes(m640x480x32k) then
begin
InitMode(mode);
+ FillCommonVESA32k(mode);
mode.ModeNumber:=m640x480x32k;
mode.DriverNumber := VESA;
mode.ModeName:='640 x 480 VESA';
- mode.MaxColor := 32768;
- { the ModeInfo is automatically set if the mode is supPorted }
- { by the call to SearchVESAMode. }
- mode.HardwarePages := VESAModeInfo.NumberOfPages;
- mode.PaletteSize := mode.MaxColor;
- mode.DirectColor := TRUE;
mode.MaxX := 639;
mode.MaxY := 479;
- mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixVESA32kOr64k;
- mode.PutPixel:={$ifdef fpc}@{$endif}PutPixVESA32kOr64k;
- mode.GetPixel:={$ifdef fpc}@{$endif}GetPixVESA32kOr64k;
- mode.SetRGBPalette := {$ifdef fpc}@{$endif}SetVESARGBPalette;
- mode.GetRGBPalette := {$ifdef fpc}@{$endif}GetVESARGBPalette;
mode.InitMode := {$ifdef fpc}@{$endif}Init640x480x32k;
- mode.SetVisualPage := {$ifdef fpc}@{$endif}SetVisualVESA;
- mode.SetActivePage := {$ifdef fpc}@{$endif}SetActiveVESA;
mode.XAspect := 10000;
mode.YAspect := 10000;
AddMode(mode);
@@ -4220,25 +4063,13 @@ const CrtAddress: word = 0;
if SearchVESAModes(m640x480x64k) then
begin
InitMode(mode);
+ FillCommonVESA64k(mode);
mode.ModeNumber:=m640x480x64k;
mode.DriverNumber := VESA;
mode.ModeName:='640 x 480 VESA';
- mode.MaxColor := 65536;
- { the ModeInfo is automatically set if the mode is supPorted }
- { by the call to SearchVESAMode. }
- mode.HardwarePages := VESAModeInfo.NumberOfPages;
- mode.PaletteSize := mode.MaxColor;
- mode.DirectColor := TRUE;
mode.MaxX := 639;
mode.MaxY := 479;
- mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixVESA32kOr64k;
- mode.PutPixel:={$ifdef fpc}@{$endif}PutPixVESA32kOr64k;
- mode.GetPixel:={$ifdef fpc}@{$endif}GetPixVESA32kOr64k;
- mode.SetRGBPalette := {$ifdef fpc}@{$endif}SetVESARGBPalette;
- mode.GetRGBPalette := {$ifdef fpc}@{$endif}GetVESARGBPalette;
mode.InitMode := {$ifdef fpc}@{$endif}Init640x480x64k;
- mode.SetVisualPage := {$ifdef fpc}@{$endif}SetVisualVESA;
- mode.SetActivePage := {$ifdef fpc}@{$endif}SetActiveVESA;
mode.XAspect := 10000;
mode.YAspect := 10000;
AddMode(mode);
@@ -4246,29 +4077,13 @@ const CrtAddress: word = 0;
if SearchVESAModes(m800x600x16) then
begin
InitMode(mode);
+ FillCommonVESA16(mode);
mode.ModeNumber:=m800x600x16;
mode.DriverNumber := VESA;
mode.ModeName:='800 x 600 VESA';
- mode.MaxColor := 16;
- { the ModeInfo is automatically set if the mode is supPorted }
- { by the call to SearchVESAMode. }
- mode.HardwarePages := VESAModeInfo.NumberOfPages;
- mode.DirectColor := FALSE;
- mode.PaletteSize := mode.MaxColor;
mode.MaxX := 799;
mode.MaxY := 599;
- mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixVESA16;
- mode.SetRGBPalette := {$ifdef fpc}@{$endif}SetVESARGBPalette;
- mode.GetRGBPalette := {$ifdef fpc}@{$endif}GetVESARGBPalette;
-{$ifdef fpc}
- mode.SetAllPalette := @SetVESARGBAllPalette;
-{$endif fpc}
- mode.PutPixel:={$ifdef fpc}@{$endif}PutPixVESA16;
- mode.GetPixel:={$ifdef fpc}@{$endif}GetPixVESA16;
mode.InitMode := {$ifdef fpc}@{$endif}Init800x600x16;
- mode.SetVisualPage := {$ifdef fpc}@{$endif}SetVisualVESA;
- mode.SetActivePage := {$ifdef fpc}@{$endif}SetActiveVESA;
- mode.HLine := {$ifdef fpc}@{$endif}HLineVESA16;
mode.XAspect := 10000;
mode.YAspect := 10000;
AddMode(mode);
@@ -4276,32 +4091,13 @@ const CrtAddress: word = 0;
if SearchVESAModes(m800x600x256) then
begin
InitMode(mode);
+ FillCommonVESA256(mode);
mode.ModeNumber:=m800x600x256;
mode.DriverNumber := VESA;
mode.ModeName:='800 x 600 VESA';
- mode.MaxColor := 256;
- { the ModeInfo is automatically set if the mode is supPorted }
- { by the call to SearchVESAMode. }
- mode.HardwarePages := VESAModeInfo.NumberOfPages;
- mode.PaletteSize := mode.MaxColor;
- mode.DirectColor := FALSE;
mode.MaxX := 799;
mode.MaxY := 599;
- mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixVESA256;
- mode.PutPixel:={$ifdef fpc}@{$endif}PutPixVESA256;
- mode.GetPixel:={$ifdef fpc}@{$endif}GetPixVESA256;
- mode.SetRGBPalette := {$ifdef fpc}@{$endif}SetVESARGBPalette;
- mode.GetRGBPalette := {$ifdef fpc}@{$endif}GetVESARGBPalette;
-{$ifdef fpc}
- mode.SetAllPalette := @SetVESARGBAllPalette;
-{$endif fpc}
mode.InitMode := {$ifdef fpc}@{$endif}Init800x600x256;
- mode.SetVisualPage := {$ifdef fpc}@{$endif}SetVisualVESA;
- mode.SetActivePage := {$ifdef fpc}@{$endif}SetActiveVESA;
- mode.hline := {$ifdef fpc}@{$endif}HLineVESA256;
- mode.vline := {$ifdef fpc}@{$endif}VLineVESA256;
- mode.GetScanLine := {$ifdef fpc}@{$endif}GetScanLineVESA256;
- mode.PatternLine := {$ifdef fpc}@{$endif}PatternLineVESA256;
mode.XAspect := 10000;
mode.YAspect := 10000;
AddMode(mode);
@@ -4309,25 +4105,13 @@ const CrtAddress: word = 0;
if SearchVESAModes(m800x600x32k) then
begin
InitMode(mode);
+ FillCommonVESA32k(mode);
mode.ModeNumber:=m800x600x32k;
mode.DriverNumber := VESA;
mode.ModeName:='800 x 600 VESA';
- mode.MaxColor := 32768;
- { the ModeInfo is automatically set if the mode is supPorted }
- { by the call to SearchVESAMode. }
- mode.HardwarePages := VESAModeInfo.NumberOfPages;
- mode.PaletteSize := mode.MaxColor;
- mode.DirectColor := TRUE;
mode.MaxX := 799;
mode.MaxY := 599;
- mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixVESA32kOr64k;
- mode.PutPixel:={$ifdef fpc}@{$endif}PutPixVESA32kOr64k;
- mode.GetPixel:={$ifdef fpc}@{$endif}GetPixVESA32kOr64k;
- mode.SetRGBPalette := {$ifdef fpc}@{$endif}SetVESARGBPalette;
- mode.GetRGBPalette := {$ifdef fpc}@{$endif}GetVESARGBPalette;
mode.InitMode := {$ifdef fpc}@{$endif}Init800x600x32k;
- mode.SetVisualPage := {$ifdef fpc}@{$endif}SetVisualVESA;
- mode.SetActivePage := {$ifdef fpc}@{$endif}SetActiveVESA;
mode.XAspect := 10000;
mode.YAspect := 10000;
AddMode(mode);
@@ -4335,25 +4119,13 @@ const CrtAddress: word = 0;
if SearchVESAModes(m800x600x64k) then
begin
InitMode(mode);
+ FillCommonVESA64k(mode);
mode.ModeNumber:=m800x600x64k;
mode.DriverNumber := VESA;
mode.ModeName:='800 x 600 VESA';
- mode.MaxColor := 65536;
- { the ModeInfo is automatically set if the mode is supPorted }
- { by the call to SearchVESAMode. }
- mode.HardwarePages := VESAModeInfo.NumberOfPages;
- mode.PaletteSize := mode.MaxColor;
- mode.DirectColor := TRUE;
mode.MaxX := 799;
mode.MaxY := 599;
- mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixVESA32kOr64k;
- mode.PutPixel:={$ifdef fpc}@{$endif}PutPixVESA32kOr64k;
- mode.GetPixel:={$ifdef fpc}@{$endif}GetPixVESA32kOr64k;
- mode.SetRGBPalette := {$ifdef fpc}@{$endif}SetVESARGBPalette;
- mode.GetRGBPalette := {$ifdef fpc}@{$endif}GetVESARGBPalette;
mode.InitMode := {$ifdef fpc}@{$endif}Init800x600x64k;
- mode.SetVisualPage := {$ifdef fpc}@{$endif}SetVisualVESA;
- mode.SetActivePage := {$ifdef fpc}@{$endif}SetActiveVESA;
mode.XAspect := 10000;
mode.YAspect := 10000;
AddMode(mode);
@@ -4361,29 +4133,13 @@ const CrtAddress: word = 0;
if SearchVESAModes(m1024x768x16) then
begin
InitMode(mode);
+ FillCommonVESA16(mode);
mode.ModeNumber:=m1024x768x16;
mode.DriverNumber := VESA;
mode.ModeName:='1024 x 768 VESA';
- mode.MaxColor := 16;
- { the ModeInfo is automatically set if the mode is supPorted }
- { by the call to SearchVESAMode. }
- mode.HardwarePages := VESAModeInfo.NumberOfPages;
- mode.PaletteSize := mode.MaxColor;
- mode.DirectColor := FALSE;
mode.MaxX := 1023;
mode.MaxY := 767;
- mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixVESA16;
- mode.PutPixel:={$ifdef fpc}@{$endif}PutPixVESA16;
- mode.SetRGBPalette := {$ifdef fpc}@{$endif}SetVESARGBPalette;
- mode.GetRGBPalette := {$ifdef fpc}@{$endif}GetVESARGBPalette;
-{$ifdef fpc}
- mode.SetAllPalette := @SetVESARGBAllPalette;
-{$endif fpc}
- mode.GetPixel:={$ifdef fpc}@{$endif}GetPixVESA16;
mode.InitMode := {$ifdef fpc}@{$endif}Init1024x768x16;
- mode.SetVisualPage := {$ifdef fpc}@{$endif}SetVisualVESA;
- mode.SetActivePage := {$ifdef fpc}@{$endif}SetActiveVESA;
- mode.HLine := {$ifdef fpc}@{$endif}HLineVESA16;
mode.XAspect := 10000;
mode.YAspect := 10000;
AddMode(mode);
@@ -4391,32 +4147,13 @@ const CrtAddress: word = 0;
if SearchVESAModes(m1024x768x256) then
begin
InitMode(mode);
+ FillCommonVESA256(mode);
mode.ModeNumber:=m1024x768x256;
mode.DriverNumber := VESA;
mode.ModeName:='1024 x 768 VESA';
- mode.MaxColor := 256;
- { the ModeInfo is automatically set if the mode is supPorted }
- { by the call to SearchVESAMode. }
- mode.HardwarePages := VESAModeInfo.NumberOfPages;
- mode.PaletteSize := mode.MaxColor;
- mode.DirectColor := FALSE;
mode.MaxX := 1023;
mode.MaxY := 767;
- mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixVESA256;
- mode.PutPixel:={$ifdef fpc}@{$endif}PutPixVESA256;
- mode.GetPixel:={$ifdef fpc}@{$endif}GetPixVESA256;
- mode.SetRGBPalette := {$ifdef fpc}@{$endif}SetVESARGBPalette;
- mode.GetRGBPalette := {$ifdef fpc}@{$endif}GetVESARGBPalette;
-{$ifdef fpc}
- mode.SetAllPalette := @SetVESARGBAllPalette;
-{$endif fpc}
mode.InitMode := {$ifdef fpc}@{$endif}Init1024x768x256;
- mode.SetVisualPage := {$ifdef fpc}@{$endif}SetVisualVESA;
- mode.SetActivePage := {$ifdef fpc}@{$endif}SetActiveVESA;
- mode.vline := {$ifdef fpc}@{$endif}VLineVESA256;
- mode.hline := {$ifdef fpc}@{$endif}HLineVESA256;
- mode.GetScanLine := {$ifdef fpc}@{$endif}GetScanLineVESA256;
- mode.PatternLine := {$ifdef fpc}@{$endif}PatternLineVESA256;
mode.XAspect := 10000;
mode.YAspect := 10000;
AddMode(mode);
@@ -4424,25 +4161,13 @@ const CrtAddress: word = 0;
if SearchVESAModes(m1024x768x32k) then
begin
InitMode(mode);
+ FillCommonVESA32k(mode);
mode.ModeNumber:=m1024x768x32k;
mode.DriverNumber := VESA;
mode.ModeName:='1024 x 768 VESA';
- mode.MaxColor := 32768;
- { the ModeInfo is automatically set if the mode is supPorted }
- { by the call to SearchVESAMode. }
- mode.HardwarePages := VESAModeInfo.NumberOfPages;
- mode.PaletteSize := mode.MaxColor;
- mode.DirectColor := TRUE;
mode.MaxX := 1023;
mode.MaxY := 767;
- mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixVESA32kOr64k;
- mode.PutPixel:={$ifdef fpc}@{$endif}PutPixVESA32kOr64k;
- mode.GetPixel:={$ifdef fpc}@{$endif}GetPixVESA32kOr64k;
- mode.SetRGBPalette := {$ifdef fpc}@{$endif}SetVESARGBPalette;
- mode.GetRGBPalette := {$ifdef fpc}@{$endif}GetVESARGBPalette;
mode.InitMode := {$ifdef fpc}@{$endif}Init1024x768x32k;
- mode.SetVisualPage := {$ifdef fpc}@{$endif}SetVisualVESA;
- mode.SetActivePage := {$ifdef fpc}@{$endif}SetActiveVESA;
mode.XAspect := 10000;
mode.YAspect := 10000;
AddMode(mode);
@@ -4450,25 +4175,13 @@ const CrtAddress: word = 0;
if SearchVESAModes(m1024x768x64k) then
begin
InitMode(mode);
+ FillCommonVESA64k(mode);
mode.ModeNumber:=m1024x768x64k;
mode.DriverNumber := VESA;
mode.ModeName:='1024 x 768 VESA';
- mode.MaxColor := 65536;
- mode.DirectColor := TRUE;
- { the ModeInfo is automatically set if the mode is supPorted }
- { by the call to SearchVESAMode. }
- mode.HardwarePages := VESAModeInfo.NumberOfPages;
- mode.PaletteSize := mode.MaxColor;
mode.MaxX := 1023;
mode.MaxY := 767;
- mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixVESA32kOr64k;
- mode.PutPixel:={$ifdef fpc}@{$endif}PutPixVESA32kOr64k;
- mode.GetPixel:={$ifdef fpc}@{$endif}GetPixVESA32kOr64k;
- mode.SetRGBPalette := {$ifdef fpc}@{$endif}SetVESARGBPalette;
- mode.GetRGBPalette := {$ifdef fpc}@{$endif}GetVESARGBPalette;
mode.InitMode := {$ifdef fpc}@{$endif}Init1024x768x64k;
- mode.SetVisualPage := {$ifdef fpc}@{$endif}SetVisualVESA;
- mode.SetActivePage := {$ifdef fpc}@{$endif}SetActiveVESA;
mode.XAspect := 10000;
mode.YAspect := 10000;
AddMode(mode);
@@ -4476,29 +4189,13 @@ const CrtAddress: word = 0;
if SearchVESAModes(m1280x1024x16) then
begin
InitMode(mode);
+ FillCommonVESA16(mode);
mode.ModeNumber:=m1280x1024x16;
mode.DriverNumber := VESA;
mode.ModeName:='1280 x 1024 VESA';
- mode.MaxColor := 16;
- { the ModeInfo is automatically set if the mode is supPorted }
- { by the call to SearchVESAMode. }
- mode.HardwarePages := VESAModeInfo.NumberOfPages;
- mode.DirectColor := FALSE;
- mode.PaletteSize := mode.MaxColor;
mode.MaxX := 1279;
mode.MaxY := 1023;
- mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixVESA16;
- mode.SetRGBPalette := {$ifdef fpc}@{$endif}SetVESARGBPalette;
- mode.GetRGBPalette := {$ifdef fpc}@{$endif}GetVESARGBPalette;
-{$ifdef fpc}
- mode.SetAllPalette := @SetVESARGBAllPalette;
-{$endif fpc}
- mode.PutPixel:={$ifdef fpc}@{$endif}PutPixVESA16;
- mode.GetPixel:={$ifdef fpc}@{$endif}GetPixVESA16;
mode.InitMode := {$ifdef fpc}@{$endif}Init1280x1024x16;
- mode.SetVisualPage := {$ifdef fpc}@{$endif}SetVisualVESA;
- mode.SetActivePage := {$ifdef fpc}@{$endif}SetActiveVESA;
- mode.HLine := {$ifdef fpc}@{$endif}HLineVESA16;
mode.XAspect := 10000;
mode.YAspect := 10000;
AddMode(mode);
@@ -4506,32 +4203,13 @@ const CrtAddress: word = 0;
if SearchVESAModes(m1280x1024x256) then
begin
InitMode(mode);
+ FillCommonVESA256(mode);
mode.ModeNumber:=m1280x1024x256;
mode.DriverNumber := VESA;
mode.ModeName:='1280 x 1024 VESA';
- mode.MaxColor := 256;
- { the ModeInfo is automatically set if the mode is supPorted }
- { by the call to SearchVESAMode. }
- mode.HardwarePages := VESAModeInfo.NumberOfPages;
- mode.DirectColor := FALSE;
- mode.PaletteSize := mode.MaxColor;
mode.MaxX := 1279;
mode.MaxY := 1023;
- mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixVESA256;
- mode.PutPixel:={$ifdef fpc}@{$endif}PutPixVESA256;
- mode.GetPixel:={$ifdef fpc}@{$endif}GetPixVESA256;
mode.InitMode := {$ifdef fpc}@{$endif}Init1280x1024x256;
- mode.SetRGBPalette := {$ifdef fpc}@{$endif}SetVESARGBPalette;
- mode.GetRGBPalette := {$ifdef fpc}@{$endif}GetVESARGBPalette;
-{$ifdef fpc}
- mode.SetAllPalette := @SetVESARGBAllPalette;
-{$endif fpc}
- mode.SetVisualPage := {$ifdef fpc}@{$endif}SetVisualVESA;
- mode.SetActivePage := {$ifdef fpc}@{$endif}SetActiveVESA;
- mode.vline := {$ifdef fpc}@{$endif}VLineVESA256;
- mode.hline := {$ifdef fpc}@{$endif}HLineVESA256;
- mode.GetScanLine := {$ifdef fpc}@{$endif}GetScanLineVESA256;
- mode.PatternLine := {$ifdef fpc}@{$endif}PatternLineVESA256;
mode.XAspect := 10000;
mode.YAspect := 10000;
AddMode(mode);
@@ -4539,25 +4217,13 @@ const CrtAddress: word = 0;
if SearchVESAModes(m1280x1024x32k) then
begin
InitMode(mode);
+ FillCommonVESA32k(mode);
mode.ModeNumber:=m1280x1024x32k;
mode.DriverNumber := VESA;
mode.ModeName:='1280 x 1024 VESA';
- mode.MaxColor := 32768;
- { the ModeInfo is automatically set if the mode is supPorted }
- { by the call to SearchVESAMode. }
- mode.HardwarePages := VESAModeInfo.NumberOfPages;
- mode.DirectColor := TRUE;
- mode.PaletteSize := mode.MaxColor;
mode.MaxX := 1279;
mode.MaxY := 1023;
- mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixVESA32kOr64k;
- mode.PutPixel:={$ifdef fpc}@{$endif}PutPixVESA32kOr64k;
- mode.GetPixel:={$ifdef fpc}@{$endif}GetPixVESA32kOr64k;
mode.InitMode := {$ifdef fpc}@{$endif}Init1280x1024x32k;
- mode.SetRGBPalette := {$ifdef fpc}@{$endif}SetVESARGBPalette;
- mode.GetRGBPalette := {$ifdef fpc}@{$endif}GetVESARGBPalette;
- mode.SetVisualPage := {$ifdef fpc}@{$endif}SetVisualVESA;
- mode.SetActivePage := {$ifdef fpc}@{$endif}SetActiveVESA;
mode.XAspect := 10000;
mode.YAspect := 10000;
AddMode(mode);
@@ -4565,25 +4231,13 @@ const CrtAddress: word = 0;
if SearchVESAModes(m1280x1024x64k) then
begin
InitMode(mode);
+ FillCommonVESA64k(mode);
mode.ModeNumber:=m1280x1024x64k;
mode.DriverNumber := VESA;
mode.ModeName:='1280 x 1024 VESA';
- mode.MaxColor := 65536;
- { the ModeInfo is automatically set if the mode is supPorted }
- { by the call to SearchVESAMode. }
- mode.HardwarePages := VESAModeInfo.NumberOfPages;
- mode.DirectColor := TRUE;
- mode.PaletteSize := mode.MaxColor;
mode.MaxX := 1279;
mode.MaxY := 1023;
- mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixVESA32kOr64k;
- mode.PutPixel:={$ifdef fpc}@{$endif}PutPixVESA32kOr64k;
- mode.GetPixel:={$ifdef fpc}@{$endif}GetPixVESA32kOr64k;
mode.InitMode := {$ifdef fpc}@{$endif}Init1280x1024x64k;
- mode.SetRGBPalette := {$ifdef fpc}@{$endif}SetVESARGBPalette;
- mode.GetRGBPalette := {$ifdef fpc}@{$endif}GetVESARGBPalette;
- mode.SetVisualPage := {$ifdef fpc}@{$endif}SetVisualVESA;
- mode.SetActivePage := {$ifdef fpc}@{$endif}SetActiveVESA;
mode.XAspect := 10000;
mode.YAspect := 10000;
AddMode(mode);
diff --git a/packages/graph/src/msdos/graph.pp b/packages/graph/src/msdos/graph.pp
index 61bfcfc2fc..6c07d470b1 100644
--- a/packages/graph/src/msdos/graph.pp
+++ b/packages/graph/src/msdos/graph.pp
@@ -15,6 +15,12 @@
unit Graph;
interface
+{ the code of the unit fits in 64kb in the medium memory model, but exceeds 64kb
+ in the large and huge memory models, so enable huge code in these models. }
+{$if defined(FPC_MM_LARGE) or defined(FPC_MM_HUGE)}
+ {$hugecode on}
+{$endif}
+
{$i graphh.inc}
{$i vesah.inc}
@@ -2882,15 +2888,15 @@ const CrtAddress: word = 0;
{ call the real mode interrupt ... }
regs.ax := $1C01; { save the state buffer }
regs.cx := $07; { Save DAC / Data areas / Hardware states }
- regs.es := DSeg;
- regs.bx := Word(SavePtr);
+ regs.es := Seg(SavePtr^);
+ regs.bx := Ofs(SavePtr^);
Intr($10,regs);
{ restore state, according to Ralph Brown Interrupt list }
{ some BIOS corrupt the hardware after a save... }
regs.ax := $1C02; { restore the state buffer }
regs.cx := $07; { rest DAC / Data areas / Hardware states }
- regs.es := DSeg;
- regs.bx := Word(SavePtr);
+ regs.es := Seg(SavePtr^);
+ regs.bx := Ofs(SavePtr^);
Intr($10,regs);
end;
end;
@@ -2908,8 +2914,8 @@ const CrtAddress: word = 0;
begin
regs.ax := $1C02; { restore the state buffer }
regs.cx := $07; { rest DAC / Data areas / Hardware states }
- regs.es := DSeg;
- regs.bx := Word(SavePtr);
+ regs.es := Seg(SavePtr^);
+ regs.bx := Ofs(SavePtr^);
Intr($10,regs);
SavePtrCopy := SavePtr;
diff --git a/packages/graph/src/msdos/vesa.inc b/packages/graph/src/msdos/vesa.inc
index d1f9a3912e..23ca64236a 100644
--- a/packages/graph/src/msdos/vesa.inc
+++ b/packages/graph/src/msdos/vesa.inc
@@ -1835,16 +1835,16 @@ end;
regs.ax := $4F04; { save the state buffer }
regs.cx := $0F; { Save DAC / Data areas / Hardware states }
regs.dx := $01; { save state }
- regs.es := DSeg;
- regs.bx := Word(SavePtr);
+ regs.es := Seg(SavePtr^);
+ regs.bx := Ofs(SavePtr^);
Intr($10,regs);
{ restore state, according to Ralph Brown Interrupt list }
{ some BIOS corrupt the hardware after a save... }
regs.ax := $4F04; { restore the state buffer }
regs.cx := $0F; { rest DAC / Data areas / Hardware states }
regs.dx := $02;
- regs.es := DSeg;
- regs.bx := Word(SavePtr);
+ regs.es := Seg(SavePtr^);
+ regs.bx := Ofs(SavePtr^);
Intr($10,regs);
end;
end;
@@ -1863,8 +1863,8 @@ end;
regs.ax := $4F04; { restore the state buffer }
regs.cx := $0F; { rest DAC / Data areas / Hardware states }
regs.dx := $02; { restore state }
- regs.es := DSeg;
- regs.bx := Word(SavePtr);
+ regs.es := Seg(SavePtr^);
+ regs.bx := Ofs(SavePtr^);
Intr($10,regs);
SavePtrCopy := SavePtr;
diff --git a/packages/hash/Makefile b/packages/hash/Makefile
index 75377a4451..c9de7ca946 100644
--- a/packages/hash/Makefile
+++ b/packages/hash/Makefile
@@ -1,8 +1,8 @@
#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-03-19 rev 27188]
#
default: all
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos
BSDs = freebsd netbsd openbsd darwin
UNIXs = linux $(BSDs) solaris qnx haiku aix
LIMIT83fs = go32v2 os2 emx watcom msdos
@@ -184,6 +184,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t
endif
override FPCOPT+=-Cp$(SUBARCH)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+ifeq ($(SUBARCH),)
+$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined)
+endif
+override FPCOPT+=-Cp$(SUBARCH)
+endif
ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
TARGETSUFFIX=$(OS_TARGET)
SOURCESUFFIX=$(OS_SOURCE)
@@ -1203,6 +1209,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
REQUIRE_PACKAGES_RTL=1
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+REQUIRE_PACKAGES_RTL=1
+endif
ifeq ($(FULL_TARGET),mipsel-android)
REQUIRE_PACKAGES_RTL=1
endif
diff --git a/packages/hash/Makefile.fpc.fpcmake b/packages/hash/Makefile.fpc.fpcmake
index f6187a8be1..8319f110e6 100644
--- a/packages/hash/Makefile.fpc.fpcmake
+++ b/packages/hash/Makefile.fpc.fpcmake
@@ -6,6 +6,9 @@
name=hash
version=2.7.1
+[require]
+packages=rtl-objpas
+
[target]
units=md5 crc ntlm sha1 uuid
units_linux=unixcrypt
diff --git a/packages/hash/examples/hmd5.pp b/packages/hash/examples/hmd5.pp
new file mode 100644
index 0000000000..5c0cc31d3f
--- /dev/null
+++ b/packages/hash/examples/hmd5.pp
@@ -0,0 +1,15 @@
+// See some samples in: http://en.wikipedia.org/wiki/Hash-based_message_authentication_code
+program hmd5;
+
+{$mode objfpc}{$H+}
+
+uses
+ HMAC;
+
+begin
+ // for HMAC_MD5("", "") = 0x74e6f7298a9c2d168935f58c001bad88
+ WriteLn('Example 1: ', HMACMD5Print(HMACMD5Digest('', '')));
+ // for HMAC_MD5("key", "The quick brown fox jumps over the lazy dog") = 0x80070713463e7749b90c2dc24911e275
+ WriteLn('Example 2: ', HMACMD5('key', 'The quick brown fox jumps over the lazy dog'));
+end.
+
diff --git a/packages/hash/examples/hsha1.pp b/packages/hash/examples/hsha1.pp
new file mode 100644
index 0000000000..5a79c53c1e
--- /dev/null
+++ b/packages/hash/examples/hsha1.pp
@@ -0,0 +1,15 @@
+// See some samples in: http://en.wikipedia.org/wiki/Hash-based_message_authentication_code
+program hsha1;
+
+{$mode objfpc}{$H+}
+
+uses
+ HMAC;
+
+begin
+ // for HMAC_SHA1("", "") = 0xfbdb1d1b18aa6c08324b7d64b71fb76370690e1d
+ WriteLn('Example 1: ', HMACSHA1Print(HMACSHA1Digest('', '')));
+ // for HMAC_SHA1("key", "The quick brown fox jumps over the lazy dog") = 0xde7c9b85b8b78aa6bc8a7a36f70a90701c9db4d9
+ WriteLn('Example 2: ', HMACSHA1('key', 'The quick brown fox jumps over the lazy dog'));
+end.
+
diff --git a/packages/hash/fpmake.pp b/packages/hash/fpmake.pp
index 9486b746cf..b4c32885c7 100644
--- a/packages/hash/fpmake.pp
+++ b/packages/hash/fpmake.pp
@@ -17,11 +17,11 @@ begin
P.Directory:=ADirectory;
{$endif ALLPACKAGES}
- P.Author := 'Free Pascal development team, Mark Adler, Jacques Nomssi Nzali';
+ P.Author := 'Free Pascal development team, Mark Adler, Jacques Nomssi Nzali, Silvio Clecio';
P.License := 'LGPL with modification, ';
P.HomepageURL := 'www.freepascal.org';
P.Email := '';
- P.Description := 'Several hash algorithms (MD5,CRC,Linux crypt and NTLM1).';
+ P.Description := 'Several hash and cryptography algorithms (MD5,CRC,Linux crypt and NTLM1).';
P.NeedLibC:= false;
P.OSes:=P.OSes-[embedded];
P.Dependencies.Add('rtl-objpas');
@@ -32,11 +32,14 @@ begin
T:=P.Targets.AddUnit('src/crc.pas');
T:=P.Targets.AddUnit('src/ntlm.pas');
T:=P.Targets.AddUnit('src/uuid.pas');
+ T:=P.Targets.AddUnit('src/hmac.pas');
T:=P.Targets.AddUnit('src/unixcrypt.pas');
T.OSes:=[Linux];
T:=P.Targets.AddExampleunit('examples/mdtest.pas');
T:=P.Targets.AddExampleunit('examples/crctest.pas');
T:=P.Targets.AddExampleunit('examples/sha1test.pp');
+ T:=P.Targets.AddExampleunit('examples/hmd5.pas');
+ T:=P.Targets.AddExampleunit('examples/hsha1.pas');
// md5.ref
{$ifndef ALLPACKAGES}
Run;
diff --git a/packages/hash/src/hmac.pp b/packages/hash/src/hmac.pp
new file mode 100644
index 0000000000..798474cbfa
--- /dev/null
+++ b/packages/hash/src/hmac.pp
@@ -0,0 +1,192 @@
+{
+ This file is part of the Free Component Library.
+
+ Hash-based supporting HMAC-MD5 and HMAC-SHA-1.
+ Copyright (c) 2013 by Silvio Clecio silvioprog@gmail.com
+
+ 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.
+}
+
+unit HMAC;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+ MD5, SHA1;
+
+type
+ THMACMD5Digest = TMD5Digest;
+ THMACSHA1Digest = TSHA1Digest;
+
+function HMACMD5Digest(const AKey, AMessage: string): THMACMD5Digest;
+function HMACMD5Print(const ADigest: THMACMD5Digest): string; inline;
+function HMACMD5Match(const ADigest1, ADigest2: THMACMD5Digest): boolean; inline;
+function HMACMD5(const AKey, AMessage: string): string; inline;
+
+function HMACSHA1Digest(const AKey, AMessage: string): THMACSHA1Digest;
+function HMACSHA1Print(const ADigest: THMACSHA1Digest): string; inline;
+function HMACSHA1Match(const ADigest1, ADigest2: THMACSHA1Digest): boolean; inline;
+function HMACSHA1(const AKey, AMessage: string): string; inline;
+
+implementation
+
+const
+ MD5_BLOCK_SIZE = 64;
+ MD5_BLOCK_COUNT = 16;
+ SHA1_BLOCK_SIZE = 64;
+ SHA1_BLOCK_COUNT = 20;
+
+function MD5Raw(var ABuffer; const ABufferLength: PtrUInt): string;
+var
+ I: Byte;
+ VDest: PChar;
+ VDigest: TMD5Digest;
+ VContext: TMD5Context;
+begin
+ MD5Init(VContext);
+ MD5Update(VContext, ABuffer, ABufferLength);
+ MD5Final(VContext, VDigest);
+ SetLength(Result, MD5_BLOCK_COUNT);
+ VDest := Pointer(Result);
+ for I := 0 to MD5_BLOCK_COUNT - 1 do
+ begin
+ VDest^ := Char(VDigest[I]);
+ Inc(VDest);
+ end;
+end;
+
+function HMACMD5Digest(const AKey, AMessage: string): THMACMD5Digest;
+var
+ I: Byte;
+ VLength: PtrUInt;
+ PKey, POPad, PIPad: PChar;
+ VKey, VOPad, VIPad: string;
+begin
+ VLength := Length(AKey);
+ if VLength > MD5_BLOCK_SIZE then
+ begin
+ SetLength(VKey, MD5_BLOCK_SIZE);
+ FillChar(Pointer(VKey)^, MD5_BLOCK_SIZE, #0);
+ VKey := MD5Raw(Pointer(AKey)^, VLength) + VKey;
+ end
+ else
+ begin
+ SetLength(VKey, MD5_BLOCK_SIZE - VLength);
+ FillChar(Pointer(VKey)^, MD5_BLOCK_SIZE - VLength, #0);
+ VKey := AKey + VKey;
+ end;
+ SetLength(VOPad, MD5_BLOCK_SIZE);
+ POPad := PChar(VOPad);
+ FillChar(POPad^, MD5_BLOCK_SIZE, $5c);
+ SetLength(VIPad, MD5_BLOCK_SIZE);
+ PIPad := PChar(VIPad);
+ FillChar(PIPad^, MD5_BLOCK_SIZE, $36);
+ PKey := PChar(VKey);
+ for I := 1 to VLength do
+ begin
+ POPad^ := Char(Ord(POPad^) xor Ord(PKey^));
+ PIPad^ := Char(Ord(PIPad^) xor Ord(PKey^));
+ Inc(POPad);
+ Inc(PIPad);
+ Inc(PKey);
+ end;
+ VIPad := VIPad + AMessage;
+ Result := MD5String(VOPad + MD5Raw(Pointer(VIPad)^, Length(VIPad)));
+end;
+
+function HMACMD5Print(const ADigest: THMACMD5Digest): string;
+begin
+ Result := MD5Print(ADigest);
+end;
+
+function HMACMD5Match(const ADigest1, ADigest2: THMACMD5Digest): boolean;
+begin
+ Result := MD5Match(ADigest1, ADigest2);
+end;
+
+function HMACMD5(const AKey, AMessage: string): string;
+begin
+ Result := HMACMD5Print(HMACMD5Digest(AKey, AMessage));
+end;
+
+function SHA1Raw(const ABuffer; const ABufferLength: PtrUInt): string;
+var
+ I: Byte;
+ VDest: PChar;
+ VDigest: TSHA1Digest;
+ VContext: TSHA1Context;
+begin
+ SHA1Init(VContext);
+ SHA1Update(VContext, ABuffer, ABufferLength);
+ SHA1Final(VContext, VDigest);
+ SetLength(Result, SHA1_BLOCK_COUNT);
+ VDest := Pointer(Result);
+ for I := 0 to SHA1_BLOCK_COUNT - 1 do
+ begin
+ VDest^ := Char(VDigest[I]);
+ Inc(VDest);
+ end;
+end;
+
+function HMACSHA1Digest(const AKey, AMessage: string): THMACSHA1Digest;
+var
+ I: Byte;
+ VLength: PtrUInt;
+ PKey, POPad, PIPad: PChar;
+ VKey, VOPad, VIPad: string;
+begin
+ VLength := Length(AKey);
+ if VLength > SHA1_BLOCK_SIZE then
+ begin
+ SetLength(VKey, SHA1_BLOCK_SIZE);
+ FillChar(Pointer(VKey)^, SHA1_BLOCK_SIZE, #0);
+ VKey := SHA1Raw(Pointer(AKey)^, VLength) + VKey;
+ end
+ else
+ begin
+ SetLength(VKey, SHA1_BLOCK_SIZE - VLength);
+ FillChar(Pointer(VKey)^, SHA1_BLOCK_SIZE - VLength, #0);
+ VKey := AKey + VKey;
+ end;
+ SetLength(VOPad, SHA1_BLOCK_SIZE);
+ POPad := PChar(VOPad);
+ FillChar(POPad^, SHA1_BLOCK_SIZE, $5c);
+ SetLength(VIPad, SHA1_BLOCK_SIZE);
+ PIPad := PChar(VIPad);
+ FillChar(PIPad^, SHA1_BLOCK_SIZE, $36);
+ PKey := PChar(VKey);
+ for I := 1 to VLength do
+ begin
+ POPad^ := Char(Ord(POPad^) xor Ord(PKey^));
+ PIPad^ := Char(Ord(PIPad^) xor Ord(PKey^));
+ Inc(POPad);
+ Inc(PIPad);
+ Inc(PKey);
+ end;
+ VIPad := VIPad + AMessage;
+ Result := SHA1String(VOPad + SHA1Raw(Pointer(VIPad)^, Length(VIPad)));
+end;
+
+function HMACSHA1Print(const ADigest: THMACSHA1Digest): string;
+begin
+ Result := SHA1Print(ADigest);
+end;
+
+function HMACSHA1Match(const ADigest1, ADigest2: THMACSHA1Digest): boolean;
+begin
+ Result := HMACSHA1Match(ADigest1, ADigest2);
+end;
+
+function HMACSHA1(const AKey, AMessage: string): string;
+begin
+ Result := HMACSHA1Print(HMACSHA1Digest(AKey, AMessage));
+end;
+
+end.
diff --git a/packages/hash/src/md5.pp b/packages/hash/src/md5.pp
index 60b685ca61..6c0ea9be08 100644
--- a/packages/hash/src/md5.pp
+++ b/packages/hash/src/md5.pp
@@ -671,7 +671,7 @@ end;
//on error all fields are set to $00
function StrtoMD5(const MD5String:String):TMDDigest;
var I: Byte;
- t: integer;
+ t: longint;
f: boolean;
begin
f:= Length(MD5String) = 32;
diff --git a/packages/hash/tests/tests.pp b/packages/hash/tests/tests.pp
new file mode 100644
index 0000000000..b86d48352e
--- /dev/null
+++ b/packages/hash/tests/tests.pp
@@ -0,0 +1,16 @@
+program tests;
+
+{$mode objfpc}
+
+uses
+ consoletestrunner, TestsHMAC, HMAC;
+
+var
+ Application: TTestRunner;
+begin
+ Application := TTestRunner.Create(nil);
+ Application.Initialize;
+ Application.Run;
+ Application.Free;
+end.
+
diff --git a/packages/hash/tests/testshmac.pas b/packages/hash/tests/testshmac.pas
new file mode 100644
index 0000000000..a69387d839
--- /dev/null
+++ b/packages/hash/tests/testshmac.pas
@@ -0,0 +1,269 @@
+// See all test cases in: http://tools.ietf.org/html/rfc2202
+
+unit TestsHMAC;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+ HMAC, FPCUnit, TestRegistry;
+
+type
+
+ { TTestHMACMD5 }
+
+ TTestHMACMD5 = class(TTestCase)
+ published
+ {
+ test_case = 1
+ key = 0x0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b
+ key_len = 16
+ data = "Hi There"
+ data_len = 8
+ digest = 0x9294727a3638bb1c13f48ef8158bfc9d
+ }
+ procedure Test1;
+ {
+ test_case = 2
+ key = "Jefe"
+ key_len = 4
+ data = "what do ya want for nothing?"
+ data_len = 28
+ digest = 0x750c783e6ab0b503eaa86e310a5db738
+ }
+ procedure Test2;
+ {
+ test_case = 3
+ key = 0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+ key_len 16
+ data = 0xdd repeated 50 times
+ data_len = 50
+ digest = 0x56be34521d144c88dbb8c733f0e8b3f6
+ }
+ procedure Test3;
+ {
+ test_case = 4
+ key = 0x0102030405060708090a0b0c0d0e0f10111213141516171819
+ key_len 25
+ data = 0xcd repeated 50 times
+ data_len = 50
+ digest = 0x697eaf0aca3a3aea3a75164746ffaa79
+ }
+ procedure Test4;
+ {
+ test_case = 5
+ key = 0x0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c
+ key_len = 16
+ data = "Test With Truncation"
+ data_len = 20
+ digest = 0x56461ef2342edc00f9bab995690efd4c
+ digest-96 0x56461ef2342edc00f9bab995
+ }
+ procedure Test5;
+ {
+ test_case = 6
+ key = 0xaa repeated 80 times
+ key_len = 80
+ data = "Test Using Larger Than Block-Size Key - Hash Key First"
+ data_len = 54
+ digest = 0xaa4ae5e15272d00e95705637ce8a3b55ed402112
+ }
+ procedure Test6;
+ {
+ test_case = 7
+ key = 0xaa repeated 80 times
+ key_len = 80
+ data = "Test Using Larger Than Block-Size Key and Larger
+ Than One Block-Size Data"
+ data_len = 73
+ digest = 0x6f630fad67cda0ee1fb1f562db3aa53e
+ }
+ procedure Test7;
+ end;
+
+ { TTestHMACSHA1 }
+
+ TTestHMACSHA1 = class(TTestCase)
+ published
+ {
+ test_case = 1
+ key = 0x0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b
+ key_len = 20
+ data = "Hi There"
+ data_len = 8
+ digest = 0xb617318655057264e28bc0b6fb378c8ef146be00
+ }
+ procedure Test1;
+ {
+ test_case = 2
+ key = "Jefe"
+ key_len = 4
+ data = "what do ya want for nothing?"
+ data_len = 28
+ digest = 0xeffcdf6ae5eb2fa2d27416d5f184df9c259a7c79
+ }
+ procedure Test2;
+ {
+ test_case = 3
+ key = 0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+ key_len = 20
+ data = 0xdd repeated 50 times
+ data_len = 50
+ digest = 0x125d7342b9ac11cd91a39af48aa17b4f63f175d3
+ }
+ procedure Test3;
+ {
+ test_case = 4
+ key = 0x0102030405060708090a0b0c0d0e0f10111213141516171819
+ key_len = 25
+ data = 0xcd repeated 50 times
+ data_len = 50
+ digest = 0x4c9007f4026250c6bc8414f9bf50c86c2d7235da
+ }
+ procedure Test4;
+ {
+ test_case = 5
+ key = 0x0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c
+ key_len = 20
+ data = "Test With Truncation"
+ data_len = 20
+ digest = 0x4c1a03424b55e07fe7f27be1d58bb9324a9a5a04
+ digest-96 = 0x4c1a03424b55e07fe7f27be1
+ }
+ procedure Test5;
+ {
+ test_case = 6
+ key = 0xaa repeated 80 times
+ key_len = 80
+ data = "Test Using Larger Than Block-Size Key - Hash Key First"
+ data_len = 54
+ digest = 0xaa4ae5e15272d00e95705637ce8a3b55ed402112
+ }
+ procedure Test6;
+ {
+ test_case = 7
+ key = 0xaa repeated 80 times
+ key_len = 80
+ data = "Test Using Larger Than Block-Size Key and Larger
+ Than One Block-Size Data"
+ data_len = 73
+ digest = 0xe8e99d0f45237d786d6bbaa7965c7808bbff1a91
+ data_len = 20
+ digest = 0x4c1a03424b55e07fe7f27be1d58bb9324a9a5a04
+ digest-96 = 0x4c1a03424b55e07fe7f27be1
+ }
+ procedure Test7;
+ end;
+
+implementation
+
+{ TTestHMACMD5 }
+
+procedure TTestHMACMD5.Test1;
+begin
+ AssertEquals('9294727a3638bb1c13f48ef8158bfc9d',
+ HMACMD5(StringOfChar(#$0b, 16), 'Hi There'));
+end;
+
+procedure TTestHMACMD5.Test2;
+begin
+ AssertEquals('750c783e6ab0b503eaa86e310a5db738', HMACMD5('Jefe',
+ 'what do ya want for nothing?'));
+end;
+
+procedure TTestHMACMD5.Test3;
+begin
+ AssertEquals('56be34521d144c88dbb8c733f0e8b3f6',
+ HMACMD5(StringOfChar(#$aa, 16), StringOfChar(#$dd, 50)));
+end;
+
+procedure TTestHMACMD5.Test4;
+begin
+ AssertEquals('697eaf0aca3a3aea3a75164746ffaa79', HMACMD5(#$01+#$02+#$03+#$04+
+ #$05+#$06+#$07+#$08+#$09+#$0a+#$0b+#$0c+#$0d+#$0e+#$0f+#$10+#$11+#$12+#$13+
+ #$14+#$15+#$16+#$17+#$18+#$19, StringOfChar(#$cd, 50)));
+end;
+
+procedure TTestHMACMD5.Test5;
+var
+ S: string;
+begin
+ S := HMACMD5(StringOfChar(#$0c, 16), 'Test With Truncation');
+ AssertEquals('56461ef2342edc00f9bab995690efd4c', S);
+ SetLength(S, 24);
+ AssertEquals('56461ef2342edc00f9bab995', S);
+end;
+
+procedure TTestHMACMD5.Test6;
+begin
+ AssertEquals('6b1ab7fe4bd7bf8f0b62e6ce61b9d0cd',
+ HMACMD5(StringOfChar(#$aa, 80),
+ 'Test Using Larger Than Block-Size Key - Hash Key First'));
+end;
+
+procedure TTestHMACMD5.Test7;
+begin
+ AssertEquals('6f630fad67cda0ee1fb1f562db3aa53e',
+ HMACMD5(StringOfChar(#$aa, 80),
+ 'Test Using Larger Than Block-Size Key and Larger Than One Block-Size Data'));
+end;
+
+{ TTestHMACSHA1 }
+
+procedure TTestHMACSHA1.Test1;
+begin
+ AssertEquals('b617318655057264e28bc0b6fb378c8ef146be00',
+ HMACSHA1(StringOfChar(#$0b, 20), 'Hi There'));
+end;
+
+procedure TTestHMACSHA1.Test2;
+begin
+ AssertEquals('effcdf6ae5eb2fa2d27416d5f184df9c259a7c79', HMACSHA1('Jefe',
+ 'what do ya want for nothing?'));
+end;
+
+procedure TTestHMACSHA1.Test3;
+begin
+ AssertEquals('125d7342b9ac11cd91a39af48aa17b4f63f175d3',
+ HMACSHA1(StringOfChar(#$aa, 20), StringOfChar(#$dd, 50)));
+end;
+
+procedure TTestHMACSHA1.Test4;
+begin
+ AssertEquals('4c9007f4026250c6bc8414f9bf50c86c2d7235da',
+ HMACSHA1(#$01+#$02+#$03+#$04+#$05+#$06+#$07+#$08+#$09+#$0a+#$0b+#$0c+#$0d+
+ #$0e+#$0f+#$10+#$11+#$12+#$13+#$14+#$15+#$16+#$17+#$18+#$19,
+ StringOfChar(#$cd, 50)));
+end;
+
+procedure TTestHMACSHA1.Test5;
+var
+ S: string;
+begin
+ S := HMACSHA1(StringOfChar(#$0c, 20), 'Test With Truncation');
+ AssertEquals('4c1a03424b55e07fe7f27be1d58bb9324a9a5a04', S);
+ SetLength(S, 24);
+ AssertEquals('4c1a03424b55e07fe7f27be1', S);
+end;
+
+procedure TTestHMACSHA1.Test6;
+begin
+ AssertEquals('aa4ae5e15272d00e95705637ce8a3b55ed402112',
+ HMACSHA1(StringOfChar(#$aa, 80),
+ 'Test Using Larger Than Block-Size Key - Hash Key First'));
+end;
+
+procedure TTestHMACSHA1.Test7;
+begin
+ AssertEquals('e8e99d0f45237d786d6bbaa7965c7808bbff1a91',
+ HMACSHA1(StringOfChar(#$aa, 80),
+ 'Test Using Larger Than Block-Size Key and Larger Than One Block-Size Data'));
+end;
+
+initialization
+ RegisterTest(TTestHMACMD5);
+ RegisterTest(TTestHMACSHA1);
+
+end.
+
diff --git a/packages/ibase/src/ibase60.inc b/packages/ibase/src/ibase60.inc
index 5c58631176..0527a15a0d 100644
--- a/packages/ibase/src/ibase60.inc
+++ b/packages/ibase/src/ibase60.inc
@@ -25,15 +25,18 @@ uses Dynlibs,ctypes;
v2 = {$ifndef darwin}'.2'{$else}''{$endif};
v21 = {$ifndef darwin}'.2.1'{$else}''{$endif};
v25 = {$ifndef darwin}'.2.5'{$else}''{$endif};
+ v251 = {$ifndef darwin}'.2.5.1'{$else}''{$endif};
fbclib2 = libfc+v2;
fbembedlib2 = libem+v2;
fbclib21 = libfc+v21;
fbembedlib21 = libem+v21;
fbclib25 = libfc+v25;
fbembedlib25 = libem+v25;
+ fbclib251 = libfc+v251;
+ fbembedlib251 = libem+v25;
// Set default here
- fbclib = fbclib25;
- fbembedlib = fbembedlib25;
+ fbclib = fbclib251;
+ fbembedlib = fbembedlib251;
{$ENDIF}
{$IFDEF Windows}
{$DEFINE extdecl:=stdcall}
diff --git a/packages/mysql/src/mysql.inc b/packages/mysql/src/mysql.inc
index 237c240370..6bd52d2f5f 100644
--- a/packages/mysql/src/mysql.inc
+++ b/packages/mysql/src/mysql.inc
@@ -1877,6 +1877,7 @@ begin
pointer(mysql_select_db) := GetProcedureAddress(MysqlLibraryHandle,'mysql_select_db');
pointer(mysql_server_end) := GetProcedureAddress(MysqlLibraryHandle,'mysql_server_end');
pointer(mysql_server_init) := GetProcedureAddress(MysqlLibraryHandle,'mysql_server_init');
+ pointer(mysql_set_character_set) := GetProcedureAddress(MysqlLibraryHandle,'mysql_set_character_set');
pointer(mysql_set_server_option) := GetProcedureAddress(MysqlLibraryHandle,'mysql_set_server_option');
pointer(mysql_sqlstate) := GetProcedureAddress(MysqlLibraryHandle,'mysql_sqlstate');
pointer(mysql_shutdown) := GetProcedureAddress(MysqlLibraryHandle,'mysql_shutdown');
diff --git a/packages/openssl/fpmake.pp b/packages/openssl/fpmake.pp
index b6d8822302..88133cbfce 100644
--- a/packages/openssl/fpmake.pp
+++ b/packages/openssl/fpmake.pp
@@ -18,10 +18,11 @@ begin
{$endif ALLPACKAGES}
P.Version:='2.7.1';
P.SourcePath.Add('src');
- P.OSes := AllUnixOSes+AllWindowsOSes-[qnx];
+ P.OSes := AllUnixOSes+AllWindowsOSes+[OS2,EMX]-[qnx];
// P.Dependencies.Add('x11');
T:=P.Targets.AddUnit('openssl.pas');
+ T:=P.Targets.AddUnit('fpopenssl.pp');
P.ExamplePath.Add('examples');
P.Targets.AddExampleProgram('test1.pas');
diff --git a/packages/openssl/src/fpopenssl.pp b/packages/openssl/src/fpopenssl.pp
new file mode 100644
index 0000000000..7190d6878e
--- /dev/null
+++ b/packages/openssl/src/fpopenssl.pp
@@ -0,0 +1,598 @@
+{
+ This file is part of the Free Component Library (FCL)
+ Copyright (c) 1999-2000 by the Free Pascal development team
+
+ Small OOP wrapper around OpenSSL unit.
+
+ 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.
+
+ **********************************************************************}
+unit fpopenssl;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+ Classes, SysUtils, openssl, ctypes;
+Type
+ TSSLType = (stAny,stSSLv2,stSSLv3,stTLSv1);
+
+ // PASN1_INTEGER = SslPtr;
+
+ { TSSLData }
+
+ TSSLData = Class(TPersistent)
+ private
+ FFileName: String;
+ FValue: String;
+ Public
+ Function Empty : Boolean;
+ Procedure Assign(Source : TPersistent);override;
+ Property FileName : String Read FFileName Write FFileName;
+ Property Value: String Read FValue Write FValue;
+ end;
+
+ { TSocketHandler }
+
+ { TSSLContext }
+
+ TSSLContext = Class(TObject)
+ private
+ FCTX: PSSL_CTX;
+ function UsePrivateKey(pkey: SslPtr): cInt;
+ function UsePrivateKeyASN1(pk: cInt; d: String; len: cLong): cInt;
+ function UsePrivateKeyFile(const Afile: String; Atype: cInt): cInt;
+ Public
+ Constructor Create(AContext : PSSL_CTX = Nil); overload;
+ Constructor Create(AType : TSSLType); overload;
+ Destructor Destroy; override;
+ Function SetCipherList(Var ACipherList : String) : Integer;
+ procedure SetVerify(mode: Integer; arg2: PFunction);
+ procedure SetDefaultPasswdCb(cb: PPasswdCb);
+ procedure SetDefaultPasswdCbUserdata(u: SslPtr);
+ Function UsePrivateKey(Data : TSSLData) : cint;
+ // Use certificate.
+ Function UseCertificate(Data : TSSLData) : cint;
+ function UseCertificateASN1(len: cLong; d: String):cInt;
+ function UseCertificateFile(const Afile: String; Atype: cInt):cInt;
+ function UseCertificateChainFile(const Afile: PChar):cInt;
+ function UseCertificate(x: SslPtr):cInt;
+ function LoadVerifyLocations(const CAfile: String; const CApath: String):cInt;
+ function LoadPFX(Const S,APassword : AnsiString) : cint;
+ function LoadPFX(Data : TSSLData; Const APAssword : Ansistring) : cint;
+ Property CTX: PSSL_CTX Read FCTX;
+ end;
+
+ TSSL = Class(TObject)
+ Public
+ FSSL : PSSL;
+ Public
+ Constructor Create(ASSL : PSSL = Nil);
+ Constructor Create(AContext : TSSLContext);
+ destructor Destroy; override;
+ function SetFd(fd: cInt):cInt;
+ function Accept : cInt;
+ function Connect : cInt;
+ function Shutdown : cInt;
+ function Read(buf: SslPtr; num: cInt):cInt;
+ function Peek(buf: SslPtr; num: cInt):cInt;
+ function Write(buf: SslPtr; num: cInt):cInt;
+ Function PeerCertificate : PX509;
+ function Ctrl(cmd: cInt; larg: clong; parg: Pointer): cInt;
+ function Pending:cInt;
+ Function GetError(AResult :cint) : cint;
+ function GetCurrentCipher :SslPtr;
+ function Version: String;
+ function PeerName: string;
+ function PeerNameHash: cardinal;
+ function PeerSubject : String;
+ Function PeerIssuer : String;
+ Function PeerSerialNo : Integer;
+ Function PeerFingerprint : String;
+ Function CertInfo : String;
+ function CipherName: string;
+ function CipherBits: integer;
+ function CipherAlgBits: integer;
+ Function VerifyResult : Integer;
+ Property SSL: PSSL Read FSSL;
+ end;
+
+ ESSL = Class(Exception);
+
+Function BioToString(B : PBIO) : AnsiString;
+
+implementation
+
+Resourcestring
+ SErrCountNotGetContext = 'Failed to create SSL Context';
+ SErrFailedToCreateSSL = 'Failed to create SSL';
+
+Function BioToString(B : PBIO) : AnsiString;
+
+Var
+ L,RL : Integer;
+begin
+ l:=bioctrlpending(B);
+ Result:=StringOfChar(#0,l);
+ RL:=BioRead(B,Result,L);
+ if (RL>0) then
+ SetLength(Result,RL)
+ else
+ SetLength(Result,0);
+end;
+
+{ TSSLContext }
+
+Constructor TSSLContext.Create(AContext: PSSL_CTX);
+begin
+ FCTX:=AContext
+end;
+
+Constructor TSSLContext.Create(AType: TSSLType);
+
+Var
+ C : PSSL_CTX;
+
+begin
+ Case AType of
+ stAny: C := SslCtxNew(SslMethodV23);
+ stSSLv2: C := SslCtxNew(SslMethodV2);
+ stSSLv3: C := SslCtxNew(SslMethodV3);
+ stTLSv1: C := SslCtxNew(SslMethodTLSV1);
+ end;
+ if (C=Nil) then
+ Raise ESSL.Create(SErrCountNotGetContext);
+ Create(C);
+end;
+
+Destructor TSSLContext.Destroy;
+begin
+ SslCtxFree(FCTX);
+ inherited Destroy;
+end;
+
+Function TSSLContext.SetCipherList(Var ACipherList: String): Integer;
+begin
+ Result:=SSLCTxSetCipherList(FCTX,ACipherList);
+end;
+
+procedure TSSLContext.SetVerify(mode: Integer; arg2: PFunction);
+begin
+ SslCtxSetVerify(FCtx,Mode,arg2);
+end;
+
+procedure TSSLContext.SetDefaultPasswdCb(cb: PPasswdCb);
+begin
+ SslCtxSetDefaultPasswdCb(Fctx,cb)
+end;
+
+procedure TSSLContext.SetDefaultPasswdCbUserdata(u: SslPtr);
+begin
+ SslCtxSetDefaultPasswdCbUserdata(FCTX,u);
+end;
+
+function TSSLContext.UsePrivateKey(pkey: SslPtr):cInt;
+begin
+ Result:=SslCtxUsePrivateKey(FCTX,pkey);
+end;
+
+function TSSLContext.UsePrivateKeyASN1(pk: cInt; d: String; len: cLong):cInt;
+begin
+ Result:=SslCtxUsePrivateKeyASN1(pk,FCtx,d,len);
+end;
+
+function TSSLContext.UsePrivateKeyFile(const Afile: String; Atype: cInt):cInt;
+begin
+ Result:=SslCtxUsePrivateKeyFile(FCTX,AFile,AType);
+end;
+
+
+Function TSSLContext.UsePrivateKey(Data: TSSLData): cint;
+
+Var
+ S : AnsiString;
+
+begin
+ Result:=-1;
+ If (Data.Value<>'') then
+ begin
+ S:=Data.Value;
+ Result:=UsePrivateKeyASN1(EVP_PKEY_RSA,S,length(S));
+ end
+ else if (Data.FileName<>'') then
+ begin
+ S:=Data.FileName;
+ Result:=UsePrivateKeyFile(S,SSL_FILETYPE_PEM);
+ if (Result<>1) then
+ Result:=UsePrivateKeyFile(S,SSL_FILETYPE_ASN1);
+ end;
+end;
+
+Function TSSLContext.UseCertificate(Data: TSSLData): cint;
+
+Var
+ S : AnsiString;
+begin
+ Result:=-1;
+ if (Data.Value<>'') then
+ begin
+ S:=Data.Value;
+ Result:=UseCertificateASN1(length(S),S);
+ end
+ else if (Data.FileName<>'') then
+ begin
+ S:=Data.FileName;
+ Result:=UseCertificateChainFile(PChar(S));
+ if Result<>1 then
+ begin
+ Result:=UseCertificateFile(S,SSL_FILETYPE_PEM);
+ if Result<>1 then
+ Result:=UseCertificateFile(S,SSL_FILETYPE_ASN1);
+ end;
+ end
+end;
+
+function TSSLContext.UseCertificateASN1(len: cLong; d: String): cInt;
+begin
+ Result:=sslctxUseCertificateASN1(FCTX,len,d);
+end;
+
+function TSSLContext.UseCertificateFile(const Afile: String; Atype: cInt): cInt;
+begin
+ Result:=sslctxUseCertificateFile(FCTX,Afile,Atype);
+end;
+
+function TSSLContext.UseCertificateChainFile(const Afile: PChar): cInt;
+begin
+ Result:=sslctxUseCertificateChainFile(FCTX,Afile);
+end;
+
+function TSSLContext.UseCertificate(x: SslPtr): cInt;
+begin
+ Result:=SSLCTXusecertificate(FCTX,X);
+end;
+
+function TSSLContext.LoadVerifyLocations(const CAfile: String; const CApath: String): cInt;
+begin
+ Result:=SslCtxLoadVerifyLocations(FCTX,CAfile,CApath);
+end;
+
+function TSSLContext.LoadPFX(Const S, APassword: AnsiString): cint;
+
+var
+ b: PBIO;
+ p12,c,pk,ca: SslPtr;
+
+begin
+ Result:=-1;
+ c:=nil;
+ pk:=nil;
+ ca:=nil;
+ p12:=Nil;
+ b:=BioNew(BioSMem);
+ try
+ BioWrite(b,S,Length(S));
+ p12:=d2iPKCS12bio(b,nil);
+ finally
+ BioFreeAll(b);
+ end;
+ if Not Assigned(p12) then
+ Exit;
+ try
+ try
+ if PKCS12parse(p12,APassword,pk,c,ca)>0 then
+ begin
+ Result:=UseCertificate(c);
+ if (Result>0) then
+ Result:=UsePrivateKey(pk);
+ end;
+ finally
+ EvpPkeyFree(pk);
+ X509free(c);
+// SkX509PopFree(ca,_X509Free);
+ end;
+ finally
+ PKCS12free(p12);
+ end;
+end;
+
+function TSSLContext.LoadPFX(Data: TSSLData; Const APAssword : Ansistring): cint;
+
+Var
+ S : String;
+
+begin
+ Result:=-1;
+ try
+ if (Data.Value<>'') then
+ S:=Data.Value
+ else
+ With TFileStream.Create(Data.FileName,fmOpenRead or fmShareDenyNone) do
+ Try
+ SetLength(S,Size);
+ ReadBuffer(S[1],Size);
+ finally
+ Free;
+ end;
+ Result:=LoadPFX(s,APassword);
+ except
+ // Silently ignore
+ Exit;
+ end;
+end;
+
+
+{ TSSLData }
+
+Function TSSLData.Empty: Boolean;
+begin
+ Result:=(Value='') and (FileName='');
+end;
+
+Procedure TSSLData.Assign(Source: TPersistent);
+
+
+begin
+ if Source is TSSLData then
+ With TSSLData(Source) do
+ begin
+ Self.FValue:=FValue;
+ Self.FFileName:=FFileName;
+ end
+ else
+ inherited Assign(Source);
+end;
+
+{ TSSL }
+
+Constructor TSSL.Create(ASSL: PSSL);
+begin
+ FSSL:=ASSL;
+end;
+
+Constructor TSSL.Create(AContext: TSSLContext);
+begin
+ FSSL:=Nil;
+ if Assigned(AContext) and Assigned(AContext.CTX) then
+ FSSL:=sslNew(AContext.CTX);
+ If (FSSL=Nil) then
+ Raise ESSL.Create(SErrFailedToCreateSSL)
+end;
+
+destructor TSSL.Destroy;
+begin
+ sslfree(FSSL);
+ inherited Destroy;
+end;
+
+function TSSL.Ctrl(cmd: cInt; larg: clong; parg: Pointer): cInt;
+
+begin
+ Result:=sslCtrl(fSSL,cmd,larg,parg);
+end;
+
+function TSSL.SetFd(fd: cInt): cInt;
+begin
+ Result:=sslSetFD(fSSL,fd);
+end;
+
+function TSSL.Accept: cInt;
+begin
+ Result:=sslAccept(fSSL);
+end;
+
+function TSSL.Connect: cInt;
+begin
+ Result:=sslConnect(fSSL);
+end;
+
+function TSSL.Shutdown: cInt;
+begin
+ Result:=sslShutDown(fSSL);
+end;
+
+function TSSL.Read(buf: SslPtr; num: cInt): cInt;
+begin
+ Result:=sslRead(FSSL,buf,num);
+end;
+
+function TSSL.Peek(buf: SslPtr; num: cInt): cInt;
+begin
+ Result:=sslPeek(FSSL,buf,num);
+end;
+
+function TSSL.Write(buf: SslPtr; num: cInt): cInt;
+begin
+ Result:=sslWrite(FSSL,buf,num);
+end;
+
+Function TSSL.PeerCertificate: PX509;
+begin
+ Result:=sslGetPeercertificate(FSSL);
+end;
+
+function TSSL.Pending: cInt;
+begin
+ Result:=sslPending(FSSL);
+end;
+
+Function TSSL.GetError(AResult: cint): cint;
+begin
+ Result:=SslGetError(FSsl,AResult);
+end;
+
+function TSSL.GetCurrentCipher: SslPtr;
+begin
+ Result:=SSLGetCurrentCipher(FSSL);
+end;
+
+function TSSL.Version: String;
+begin
+ Result:=SSlGetVersion(FSsl);
+end;
+
+function TSSL.PeerName: string;
+var
+ s : ansistring;
+ p : Integer;
+begin
+ Result:='';
+ S:=PeerSubject;
+ P:=Pos(S,'/CN=');
+ if (P>0) then
+ begin
+ Delete(S,1,P+3);
+ P:=Pos('/',S);
+ if (P>0) then
+ Result:=Copy(S,1,P-1);
+ end;
+end;
+
+function TSSL.PeerNameHash: cardinal;
+var
+ C : PX509;
+begin
+ Result:=0;
+ c:=PeerCertificate;
+ if (C=Nil) then
+ exit;
+ try
+ Result:=X509NameHash(X509GetSubjectName(C));
+ finally
+ X509Free(C);
+ end;
+end;
+
+function TSSL.PeerSubject: String;
+var
+ c : PX509;
+ s : ansistring;
+
+begin
+ Result:='';
+ c:=PeerCertificate;
+ if Assigned(c) then
+ try
+ setlength(s, 4096);
+ Result:=X509NameOneline(X509GetSubjectName(c),s,Length(s));
+ finally
+ X509Free(c);
+ end;
+end;
+
+Function TSSL.PeerIssuer: String;
+
+var
+ C: PX509;
+ S: ansistring;
+
+begin
+ Result:='';
+ C:=PeerCertificate;
+ if (C=Nil) then
+ Exit;
+ try
+ S:=StringOfChar(#0,4096);
+ Result:=X509NameOneline(X509GetIssuerName(C),S,4096);
+ finally
+ X509Free(C);
+ end;
+end;
+
+Function TSSL.PeerSerialNo: Integer;
+var
+ C : PX509;
+ SN : PASN1_INTEGER;
+
+begin
+ Result:=-1;
+ C:=PeerCertificate;
+ if (C=Nil) then
+ exit;
+ try
+ SN:=X509GetSerialNumber(C);
+ Result:=Asn1IntegerGet(SN);
+ finally
+ X509Free(C);
+ end;
+end;
+
+Function TSSL.PeerFingerprint: String;
+var
+ C : PX509;
+ L : integer;
+
+begin
+ Result:='';
+ C:=PeerCertificate;
+ if (C=Nil) then
+ Exit;
+ try
+ Result:=StringOfChar(#0,EVP_MAX_MD_SIZE);
+ L:=0;
+ X509Digest(C,EvpGetDigestByName('MD5'),Result,L);
+ SetLength(Result,L);
+ finally
+ X509Free(C);
+ end;
+end;
+
+Function TSSL.CertInfo: String;
+var
+ C : PX509;
+ B : PBIO;
+
+begin
+ Result:='';
+ C:=PeerCertificate;
+ if (C=Nil) then
+ Exit;
+ try
+ B:=BioNew(BioSMem);
+ try
+ X509Print(B,C);
+ Result:=BioToString(B);
+ finally
+ BioFreeAll(B);
+ end;
+ finally
+ X509Free(C);
+ end;
+end;
+
+function TSSL.CipherName: string;
+begin
+ Result:=SslCipherGetName(GetCurrentCipher);
+end;
+
+function TSSL.CipherBits: integer;
+
+var
+ x: integer;
+
+begin
+ x:=0;
+ Result:=SSLCipherGetBits(GetCurrentCipher,x);
+end;
+
+function TSSL.CipherAlgBits: integer;
+
+begin
+ Result:=0;
+ SSLCipherGetBits(GetCurrentCipher,Result);
+end;
+
+Function TSSL.VerifyResult: Integer;
+
+begin
+ Result:=SslGetVerifyResult(FSsl);
+end;
+
+end.
+
diff --git a/packages/openssl/src/openssl.pas b/packages/openssl/src/openssl.pas
index 275af08da5..f78864de3c 100644
--- a/packages/openssl/src/openssl.pas
+++ b/packages/openssl/src/openssl.pas
@@ -1,4 +1,4 @@
-unit OpenSSL;
+unit openssl;
{==============================================================================|
| Project : Ararat Synapse | 003.004.001 |
@@ -79,6 +79,9 @@ requested OpenSSL function just return errorcode.
interface
uses
+{$IFDEF OS2}
+ Sockets,
+{$ENDIF OS2}
DynLibs, cTypes, SysUtils;
var
@@ -87,6 +90,15 @@ var
DLLSSLName2: string = 'libssl32.dll';
DLLUtilName: string = 'libeay32.dll';
{$ELSE}
+ {$IFDEF OS2}
+ {$IFDEF OS2GCC}
+ DLLSSLName: string = 'kssl.dll';
+ DLLUtilName: string = 'kcrypto.dll';
+ {$ELSE OS2GCC}
+ DLLSSLName: string = 'ssl.dll';
+ DLLUtilName: string = 'crypto.dll';
+ {$ENDIF OS2GCC}
+ {$ELSE OS2}
DLLSSLName: string = 'libssl';
DLLUtilName: string = 'libcrypto';
@@ -97,7 +109,8 @@ var
'.1.0.2', '.1.0.1','.1.0.0','.0.9.8',
'.0.9.7', '.0.9.6', '.0.9.5', '.0.9.4',
'.0.9.3', '.0.9.2', '.0.9.1');
- {$ENDIF}
+ {$ENDIF OS2}
+ {$ENDIF WINDOWS}
const
// EVP.h Constants
@@ -115,11 +128,16 @@ type
PSSL_CTX = SslPtr;
PSSL = SslPtr;
PSSL_METHOD = SslPtr;
+{ PX509 = SslPtr;}
+{ PX509_NAME = SslPtr;}
PEVP_MD = SslPtr;
PBIO_METHOD = SslPtr;
PBIO = SslPtr;
+{ EVP_PKEY = SslPtr;}
+ PRSA = SslPtr;
+ PASN1_UTCTIME = SslPtr;
+ PASN1_INTEGER = SSlPtr;
- PRSA = pointer;
PDH = pointer;
PSTACK_OFX509 = pointer;
@@ -228,7 +246,6 @@ type
PPEVP_PKEY = ^PEVP_PKEY;
PPRSA = ^PRSA;
- PASN1_UTCTIME = SslPtr;
PASN1_cInt = SslPtr;
PPasswdCb = SslPtr;
PFunction = procedure;
@@ -419,60 +436,93 @@ const
SSL_ERROR_WANT_CONNECT = 7;
SSL_ERROR_WANT_ACCEPT = 8;
- SSL_CTRL_NEED_TMP_RSA = 1;
- SSL_CTRL_SET_TMP_RSA = 2;
- SSL_CTRL_SET_TMP_DH = 3;
- SSL_CTRL_SET_TMP_ECDH = 4;
- SSL_CTRL_SET_TMP_RSA_CB = 5;
- SSL_CTRL_SET_TMP_DH_CB = 6;
- SSL_CTRL_SET_TMP_ECDH_CB = 7;
- SSL_CTRL_GET_SESSION_REUSED = 8;
- SSL_CTRL_GET_CLIENT_CERT_REQUEST = 9;
- SSL_CTRL_GET_NUM_RENEGOTIATIONS = 10;
- SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS = 11;
- SSL_CTRL_GET_TOTAL_RENEGOTIATIONS = 12;
- SSL_CTRL_GET_FLAGS = 13;
- SSL_CTRL_EXTRA_CHAIN_CERT = 14;
- SSL_CTRL_SET_MSG_CALLBACK = 15;
- SSL_CTRL_SET_MSG_CALLBACK_ARG = 16;
- { only applies to datagram connections }
- SSL_CTRL_SET_MTU = 17;
- { Stats }
- SSL_CTRL_SESS_NUMBER = 20;
- SSL_CTRL_SESS_CONNECT = 21;
- SSL_CTRL_SESS_CONNECT_GOOD = 22;
- SSL_CTRL_SESS_CONNECT_RENEGOTIATE = 23;
- SSL_CTRL_SESS_ACCEPT = 24;
- SSL_CTRL_SESS_ACCEPT_GOOD = 25;
- SSL_CTRL_SESS_ACCEPT_RENEGOTIATE = 26;
- SSL_CTRL_SESS_HIT = 27;
- SSL_CTRL_SESS_CB_HIT = 28;
- SSL_CTRL_SESS_MISSES = 29;
- SSL_CTRL_SESS_TIMEOUTS = 30;
- SSL_CTRL_SESS_CACHE_FULL = 31;
- SSL_CTRL_OPTIONS = 32;
- SSL_CTRL_MODE = 33;
- SSL_CTRL_GET_READ_AHEAD = 40;
- SSL_CTRL_SET_READ_AHEAD = 41;
- SSL_CTRL_SET_SESS_CACHE_SIZE = 42;
- SSL_CTRL_GET_SESS_CACHE_SIZE = 43;
- SSL_CTRL_SET_SESS_CACHE_MODE = 44;
- SSL_CTRL_GET_SESS_CACHE_MODE = 45;
- SSL_CTRL_GET_MAX_CERT_LIST = 50;
- SSL_CTRL_SET_MAX_CERT_LIST = 51;
-
-{* Allow SSL_write(..., n) to return r with 0 < r < n (i.e. report success
- * when just a single record has been written): *}
+ SSL_CTRL_NEED_TMP_RSA = 1;
+ SSL_CTRL_SET_TMP_RSA = 2;
+ SSL_CTRL_SET_TMP_DH = 3;
+ SSL_CTRL_SET_TMP_ECDH = 4;
+ SSL_CTRL_SET_TMP_RSA_CB = 5;
+ SSL_CTRL_SET_TMP_DH_CB = 6;
+ SSL_CTRL_SET_TMP_ECDH_CB = 7;
+ SSL_CTRL_GET_SESSION_REUSED = 8;
+ SSL_CTRL_GET_CLIENT_CERT_REQUEST = 9;
+ SSL_CTRL_GET_NUM_RENEGOTIATIONS = 10;
+ SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS = 11;
+ SSL_CTRL_GET_TOTAL_RENEGOTIATIONS = 12;
+ SSL_CTRL_GET_FLAGS = 13;
+ SSL_CTRL_EXTRA_CHAIN_CERT = 14;
+ SSL_CTRL_SET_MSG_CALLBACK = 15;
+ SSL_CTRL_SET_MSG_CALLBACK_ARG = 16;
+ SSL_CTRL_SET_MTU = 17;
+ SSL_CTRL_SESS_NUMBER = 20;
+ SSL_CTRL_SESS_CONNECT = 21;
+ SSL_CTRL_SESS_CONNECT_GOOD = 22;
+ SSL_CTRL_SESS_CONNECT_RENEGOTIATE = 23;
+ SSL_CTRL_SESS_ACCEPT = 24;
+ SSL_CTRL_SESS_ACCEPT_GOOD = 25;
+ SSL_CTRL_SESS_ACCEPT_RENEGOTIATE = 26;
+ SSL_CTRL_SESS_HIT = 27;
+ SSL_CTRL_SESS_CB_HIT = 28;
+ SSL_CTRL_SESS_MISSES = 29;
+ SSL_CTRL_SESS_TIMEOUTS = 30;
+ SSL_CTRL_SESS_CACHE_FULL = 31;
+ SSL_CTRL_OPTIONS = 32;
+ SSL_CTRL_MODE = 33;
+ SSL_CTRL_GET_READ_AHEAD = 40;
+ SSL_CTRL_SET_READ_AHEAD = 41;
+ SSL_CTRL_SET_SESS_CACHE_SIZE = 42;
+ SSL_CTRL_GET_SESS_CACHE_SIZE = 43;
+ SSL_CTRL_SET_SESS_CACHE_MODE = 44;
+ SSL_CTRL_GET_SESS_CACHE_MODE = 45;
+ SSL_CTRL_GET_MAX_CERT_LIST = 50;
+ SSL_CTRL_SET_MAX_CERT_LIST = 51;
+ SSL_CTRL_SET_MAX_SEND_FRAGMENT = 52;
+ SSL_CTRL_SET_TLSEXT_SERVERNAME_CB = 53;
+ SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG = 54;
+ SSL_CTRL_SET_TLSEXT_HOSTNAME = 55;
+ SSL_CTRL_SET_TLSEXT_DEBUG_CB = 56;
+ SSL_CTRL_SET_TLSEXT_DEBUG_ARG = 57;
+ SSL_CTRL_GET_TLSEXT_TICKET_KEYS = 58;
+ SSL_CTRL_SET_TLSEXT_TICKET_KEYS = 59;
+ SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT = 60;
+ SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB = 61;
+ SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB_ARG = 62;
+ SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB = 63;
+ SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG = 64;
+ SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE = 65;
+ SSL_CTRL_GET_TLSEXT_STATUS_REQ_EXTS = 66;
+ SSL_CTRL_SET_TLSEXT_STATUS_REQ_EXTS = 67;
+ SSL_CTRL_GET_TLSEXT_STATUS_REQ_IDS = 68;
+ SSL_CTRL_SET_TLSEXT_STATUS_REQ_IDS = 69;
+ SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP = 70;
+ SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP = 71;
+ SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB = 72;
+ SSL_CTRL_SET_TLS_EXT_SRP_USERNAME_CB = 75;
+ SSL_CTRL_SET_SRP_VERIFY_PARAM_CB = 76;
+ SSL_CTRL_SET_SRP_GIVE_CLIENT_PWD_CB = 77;
+ SSL_CTRL_SET_SRP_ARG = 78;
+ SSL_CTRL_SET_TLS_EXT_SRP_USERNAME = 79;
+ SSL_CTRL_SET_TLS_EXT_SRP_STRENGTH = 80;
+ SSL_CTRL_SET_TLS_EXT_SRP_PASSWORD = 81;
+ SSL_CTRL_GET_EXTRA_CHAIN_CERTS = 82;
+ SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS = 83;
+ SSL_CTRL_TLS_EXT_SEND_HEARTBEAT = 85;
+ SSL_CTRL_GET_TLS_EXT_HEARTBEAT_PENDING = 86;
+ SSL_CTRL_SET_TLS_EXT_HEARTBEAT_NO_REQUESTS = 87;
+ // Some missing values ?
+
+
+ DTLS_CTRL_GET_TIMEOUT = 73;
+ DTLS_CTRL_HANDLE_TIMEOUT = 74;
+ DTLS_CTRL_LISTEN = 75;
+ SSL_CTRL_GET_RI_SUPPORT = 76;
+ SSL_CTRL_CLEAR_OPTIONS = 77;
+ SSL_CTRL_CLEAR_MODE = 78;
+
+ TLSEXT_NAMETYPE_host_name = 0;
+
SSL_MODE_ENABLE_PARTIAL_WRITE = 1;
-{* Make it possible to retry SSL_write() with changed buffer location
- * (buffer contents must stay the same!); this is not the default to avoid
- * the misconception that non-blocking SSL_write() behaves like
- * non-blocking write(): *}
SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER = 2;
-{* Never bother the application with retries if the transport
- * is blocking: *}
SSL_MODE_AUTO_RETRY = 4;
-{* Don't attempt to automatically build certificate chain *}
SSL_MODE_NO_AUTO_CHAIN = 8;
SSL_OP_NO_SSLv2 = $01000000;
@@ -653,6 +703,7 @@ const
DES_ENCRYPT = 1;
DES_DECRYPT = 0;
+
var
SSLLibHandle: TLibHandle = 0;
SSLUtilHandle: TLibHandle = 0;
@@ -750,6 +801,8 @@ var
procedure PKCS12free(p12: SslPtr);
function Asn1UtctimeNew: PASN1_UTCTIME;
procedure Asn1UtctimeFree(a: PASN1_UTCTIME);
+ function Asn1IntegerSet(a: PASN1_INTEGER; v: integer): integer;
+ function Asn1IntegerGet(a: PASN1_INTEGER): integer;
function i2dX509bio(b: PBIO; x: PX509): cInt;
function i2dPrivateKeyBio(b: PBIO; pkey: PEVP_PKEY): cInt;
@@ -900,23 +953,100 @@ var
function BIO_s_file: pBIO_METHOD;
function BIO_new_file(const filename: PChar; const mode: PChar): pBIO;
function BIO_new_mem_buf(buf: pointer; len: integer): pBIO;
-
-
+ procedure CRYPTOcleanupAllExData;
+ procedure OPENSSLaddallalgorithms;
function IsSSLloaded: Boolean;
-function Islibealoaded: Boolean;
-function InitSSLInterface(AVerboseLoading: Boolean = False): Boolean;
+function InitSSLInterface: Boolean; overload;
function DestroySSLInterface: Boolean;
-function InitSSLEAInterface(AVerboseLoading: Boolean = False): Boolean;
-function InitLibeaInterface(AVerboseLoading: Boolean = False): Boolean;
-function DestroySSLEAInterface: Boolean;
-function DestroyLibeaInterface: Boolean;
+
+// compatibility with old versions.
+function Islibealoaded: Boolean; deprecated;
+function InitSSLInterface(AVerboseLoading: Boolean): Boolean ; overload; deprecated;
+function InitSSLEAInterface(AVerboseLoading: Boolean): Boolean; deprecated;
+function InitLibeaInterface(AVerboseLoading: Boolean = false): Boolean; deprecated;
+function DestroySSLEAInterface: Boolean; deprecated;
+function DestroyLibeaInterface: Boolean; deprecated;
+
var
OpenSSL_unavailable_functions: string;
implementation
+{
+ Compatibility functions
+}
+
+Var
+ SSLloaded: boolean = false;
+ LoadVerbose : Boolean;
+ SSLCS : TRTLCriticalSection;
+ Locks: Array of TRTLCriticalSection;
+
+
+function Islibealoaded: Boolean; deprecated;
+begin
+ Result:=isSSLLoaded;
+end;
+
+function InitSSLInterface(AVerboseLoading: Boolean): Boolean ; deprecated;
+
+Var
+ B : Boolean;
+
+begin
+ B:=LoadVerbose;
+ LoadVerbose:=AVerboseLoading;
+ try
+ Result:=InitSSLInterface;
+ finally
+ LoadVerbose:=B;
+ end;
+end;
+
+function InitSSLEAInterface(AVerboseLoading: Boolean): Boolean; deprecated;
+
+Var
+ B : Boolean;
+
+begin
+ B:=LoadVerbose;
+ LoadVerbose:=AVerboseLoading;
+ try
+ Result:=InitSSLInterface;
+ finally
+ LoadVerbose:=B;
+ end;
+end;
+
+function InitLibeaInterface(AVerboseLoading: Boolean = false): Boolean; deprecated;
+
+Var
+ B : Boolean;
+
+begin
+ B:=LoadVerbose;
+ LoadVerbose:=AVerboseLoading;
+ try
+ Result:=InitSSLInterface;
+ finally
+ LoadVerbose:=B;
+ end;
+end;
+
+function DestroySSLEAInterface: Boolean; deprecated;
+
+begin
+ Result:=DestroySSLInterface;
+end;
+
+function DestroyLibeaInterface: Boolean; deprecated;
+
+begin
+ Result:=DestroySSLInterface;
+end;
+
type
// libssl.dll
TSslGetError = function(s: PSSL; ret_code: cInt):cInt; cdecl;
@@ -1003,6 +1133,8 @@ type
TPKCS12free = procedure(p12: SslPtr); cdecl;
TAsn1UtctimeNew = function: PASN1_UTCTIME; cdecl;
TAsn1UtctimeFree = procedure(a: PASN1_UTCTIME); cdecl;
+ TAsn1IntegerSet = function(a: PASN1_INTEGER; v: integer): integer; cdecl;
+ TAsn1IntegerGet = function(a: PASN1_INTEGER): integer; cdecl;
Ti2dX509bio = function(b: PBIO; x: PX509): cInt; cdecl;
Ti2dPrivateKeyBio= function(b: PBIO; pkey: PEVP_PKEY): cInt; cdecl;
@@ -1066,6 +1198,8 @@ type
// Crypto Functions
TSSLeay_version = function(t: cint): PChar; cdecl;
+ TCRYPTOcleanupAllExData = procedure; cdecl;
+ TOPENSSLaddallalgorithms = procedure; cdecl;
// EVP Functions
@@ -1210,6 +1344,8 @@ var
_PKCS12free: TPKCS12free = nil;
_Asn1UtctimeNew: TAsn1UtctimeNew = nil;
_Asn1UtctimeFree: TAsn1UtctimeFree = nil;
+ _Asn1IntegerSet: TAsn1IntegerSet = nil;
+ _Asn1IntegerGet: TAsn1IntegerGet = nil;
_i2dX509bio: Ti2dX509bio = nil;
_i2dPrivateKeyBio: Ti2dPrivateKeyBio = nil;
_EVP_enc_null : TEVP_CIPHERFunction = nil;
@@ -1290,6 +1426,8 @@ var
// Crypto Functions
_SSLeay_version: TSSLeay_version = nil;
+ _CRYPTOcleanupAllExData: TCRYPTOcleanupAllExData = nil;
+ _OPENSSLaddallalgorithms: TOPENSSLaddallalgorithms = nil;
// EVP Functions
@@ -1337,14 +1475,12 @@ var
_BIO_new_file: TBIO_new_file = nil;
_BIO_new_mem_buf: TBIO_new_mem_buf = nil;
-var
- SSLloaded: boolean = false;
- libealoaded: boolean = false;
// libssl.dll
+
function SslGetError(s: PSSL; ret_code: cInt):cInt;
begin
- if InitSSLEAInterface and Assigned(_SslGetError) then
+ if InitSSLInterface and Assigned(_SslGetError) then
Result := _SslGetError(s, ret_code)
else
Result := SSL_ERROR_SSL;
@@ -1352,7 +1488,7 @@ end;
function SslLibraryInit:cInt;
begin
- if InitSSLEAInterface and Assigned(_SslLibraryInit) then
+ if InitSSLInterface and Assigned(_SslLibraryInit) then
Result := _SslLibraryInit
else
Result := 1;
@@ -1360,13 +1496,13 @@ end;
procedure SslLoadErrorStrings;
begin
- if InitSSLEAInterface and Assigned(_SslLoadErrorStrings) then
+ if InitSSLInterface and Assigned(_SslLoadErrorStrings) then
_SslLoadErrorStrings;
end;
function SslCtxSetCipherList(arg0: PSSL_CTX; var str: String):cInt;
begin
- if InitSSLEAInterface and Assigned(_SslCtxSetCipherList) then
+ if InitSSLInterface and Assigned(_SslCtxSetCipherList) then
Result := _SslCtxSetCipherList(arg0, PChar(str))
else
Result := 0;
@@ -1374,7 +1510,7 @@ end;
function SslCtxNew(meth: PSSL_METHOD):PSSL_CTX;
begin
- if InitSSLEAInterface and Assigned(_SslCtxNew) then
+ if InitSSLInterface and Assigned(_SslCtxNew) then
Result := _SslCtxNew(meth)
else
Result := nil;
@@ -1382,13 +1518,13 @@ end;
procedure SslCtxFree(arg0: PSSL_CTX);
begin
- if InitSSLEAInterface and Assigned(_SslCtxFree) then
+ if InitSSLInterface and Assigned(_SslCtxFree) then
_SslCtxFree(arg0);
end;
function SslSetFd(s: PSSL; fd: cInt):cInt;
begin
- if InitSSLEAInterface and Assigned(_SslSetFd) then
+ if InitSSLInterface and Assigned(_SslSetFd) then
Result := _SslSetFd(s, fd)
else
Result := 0;
@@ -1396,7 +1532,7 @@ end;
function SslCtrl(ssl: PSSL; cmd: cInt; larg: clong; parg: Pointer): cLong;
begin
- if InitSSLEAInterface and Assigned(_SslCtrl) then
+ if InitSSLInterface and Assigned(_SslCtrl) then
Result := _SslCtrl(ssl, cmd, larg, parg)
else
Result := 0;
@@ -1405,7 +1541,7 @@ end;
function SslCTXCtrl(ctx: PSSL_CTX; cmd: cInt; larg: clong; parg: Pointer
): cLong;
begin
- if InitSSLEAInterface and Assigned(_SslCTXCtrl) then
+ if InitSSLInterface and Assigned(_SslCTXCtrl) then
Result := _SslCTXCtrl(ctx, cmd, larg, parg)
else
Result := 0;
@@ -1433,7 +1569,7 @@ end;
function SslMethodV2:PSSL_METHOD;
begin
- if InitSSLEAInterface and Assigned(_SslMethodV2) then
+ if InitSSLInterface and Assigned(_SslMethodV2) then
Result := _SslMethodV2
else
Result := nil;
@@ -1441,7 +1577,7 @@ end;
function SslMethodV3:PSSL_METHOD;
begin
- if InitSSLEAInterface and Assigned(_SslMethodV3) then
+ if InitSSLInterface and Assigned(_SslMethodV3) then
Result := _SslMethodV3
else
Result := nil;
@@ -1449,7 +1585,7 @@ end;
function SslMethodTLSV1:PSSL_METHOD;
begin
- if InitSSLEAInterface and Assigned(_SslMethodTLSV1) then
+ if InitSSLInterface and Assigned(_SslMethodTLSV1) then
Result := _SslMethodTLSV1
else
Result := nil;
@@ -1457,7 +1593,7 @@ end;
function SslMethodV23:PSSL_METHOD;
begin
- if InitSSLEAInterface and Assigned(_SslMethodV23) then
+ if InitSSLInterface and Assigned(_SslMethodV23) then
Result := _SslMethodV23
else
Result := nil;
@@ -1465,7 +1601,7 @@ end;
function SslCtxUsePrivateKey(ctx: PSSL_CTX; pkey: SslPtr):cInt;
begin
- if InitSSLEAInterface and Assigned(_SslCtxUsePrivateKey) then
+ if InitSSLInterface and Assigned(_SslCtxUsePrivateKey) then
Result := _SslCtxUsePrivateKey(ctx, pkey)
else
Result := 0;
@@ -1473,7 +1609,7 @@ end;
function SslCtxUsePrivateKeyASN1(pk: cInt; ctx: PSSL_CTX; d: String; len: cLong):cInt;
begin
- if InitSSLEAInterface and Assigned(_SslCtxUsePrivateKeyASN1) then
+ if InitSSLInterface and Assigned(_SslCtxUsePrivateKeyASN1) then
Result := _SslCtxUsePrivateKeyASN1(pk, ctx, Sslptr(d), len)
else
Result := 0;
@@ -1481,7 +1617,7 @@ end;
function SslCtxUsePrivateKeyFile(ctx: PSSL_CTX; const _file: String; _type: cInt):cInt;
begin
- if InitSSLEAInterface and Assigned(_SslCtxUsePrivateKeyFile) then
+ if InitSSLInterface and Assigned(_SslCtxUsePrivateKeyFile) then
Result := _SslCtxUsePrivateKeyFile(ctx, PChar(_file), _type)
else
Result := 0;
@@ -1489,7 +1625,7 @@ end;
function SslCtxUseCertificate(ctx: PSSL_CTX; x: SslPtr):cInt;
begin
- if InitSSLEAInterface and Assigned(_SslCtxUseCertificate) then
+ if InitSSLInterface and Assigned(_SslCtxUseCertificate) then
Result := _SslCtxUseCertificate(ctx, x)
else
Result := 0;
@@ -1497,7 +1633,7 @@ end;
function SslCtxUseCertificateASN1(ctx: PSSL_CTX; len: cLong; d: String):cInt;
begin
- if InitSSLEAInterface and Assigned(_SslCtxUseCertificateASN1) then
+ if InitSSLInterface and Assigned(_SslCtxUseCertificateASN1) then
Result := _SslCtxUseCertificateASN1(ctx, len, SslPtr(d))
else
Result := 0;
@@ -1505,7 +1641,7 @@ end;
function SslCtxUseCertificateFile(ctx: PSSL_CTX; const _file: String; _type: cInt):cInt;
begin
- if InitSSLEAInterface and Assigned(_SslCtxUseCertificateFile) then
+ if InitSSLInterface and Assigned(_SslCtxUseCertificateFile) then
Result := _SslCtxUseCertificateFile(ctx, PChar(_file), _type)
else
Result := 0;
@@ -1513,7 +1649,7 @@ end;
function SslCtxUseCertificateChainFile(ctx: PSSL_CTX; const _file: String):cInt;
begin
- if InitSSLEAInterface and Assigned(_SslCtxUseCertificateChainFile) then
+ if InitSSLInterface and Assigned(_SslCtxUseCertificateChainFile) then
Result := _SslCtxUseCertificateChainFile(ctx, PChar(_file))
else
Result := 0;
@@ -1521,7 +1657,7 @@ end;
function SslCtxCheckPrivateKeyFile(ctx: PSSL_CTX):cInt;
begin
- if InitSSLEAInterface and Assigned(_SslCtxCheckPrivateKeyFile) then
+ if InitSSLInterface and Assigned(_SslCtxCheckPrivateKeyFile) then
Result := _SslCtxCheckPrivateKeyFile(ctx)
else
Result := 0;
@@ -1529,19 +1665,19 @@ end;
procedure SslCtxSetDefaultPasswdCb(ctx: PSSL_CTX; cb: PPasswdCb);
begin
- if InitSSLEAInterface and Assigned(_SslCtxSetDefaultPasswdCb) then
+ if InitSSLInterface and Assigned(_SslCtxSetDefaultPasswdCb) then
_SslCtxSetDefaultPasswdCb(ctx, cb);
end;
procedure SslCtxSetDefaultPasswdCbUserdata(ctx: PSSL_CTX; u: SslPtr);
begin
- if InitSSLEAInterface and Assigned(_SslCtxSetDefaultPasswdCbUserdata) then
+ if InitSSLInterface and Assigned(_SslCtxSetDefaultPasswdCbUserdata) then
_SslCtxSetDefaultPasswdCbUserdata(ctx, u);
end;
function SslCtxLoadVerifyLocations(ctx: PSSL_CTX; const CAfile: String; const CApath: String):cInt;
begin
- if InitSSLEAInterface and Assigned(_SslCtxLoadVerifyLocations) then
+ if InitSSLInterface and Assigned(_SslCtxLoadVerifyLocations) then
Result := _SslCtxLoadVerifyLocations(ctx, SslPtr(CAfile), SslPtr(CApath))
else
Result := 0;
@@ -1549,7 +1685,7 @@ end;
function SslNew(ctx: PSSL_CTX):PSSL;
begin
- if InitSSLEAInterface and Assigned(_SslNew) then
+ if InitSSLInterface and Assigned(_SslNew) then
Result := _SslNew(ctx)
else
Result := nil;
@@ -1557,13 +1693,13 @@ end;
procedure SslFree(ssl: PSSL);
begin
- if InitSSLEAInterface and Assigned(_SslFree) then
+ if InitSSLInterface and Assigned(_SslFree) then
_SslFree(ssl);
end;
function SslAccept(ssl: PSSL):cInt;
begin
- if InitSSLEAInterface and Assigned(_SslAccept) then
+ if InitSSLInterface and Assigned(_SslAccept) then
Result := _SslAccept(ssl)
else
Result := -1;
@@ -1571,7 +1707,7 @@ end;
function SslConnect(ssl: PSSL):cInt;
begin
- if InitSSLEAInterface and Assigned(_SslConnect) then
+ if InitSSLInterface and Assigned(_SslConnect) then
Result := _SslConnect(ssl)
else
Result := -1;
@@ -1579,7 +1715,7 @@ end;
function SslShutdown(ssl: PSSL):cInt;
begin
- if InitSSLEAInterface and Assigned(_SslShutdown) then
+ if InitSSLInterface and Assigned(_SslShutdown) then
Result := _SslShutdown(ssl)
else
Result := -1;
@@ -1587,7 +1723,7 @@ end;
function SslRead(ssl: PSSL; buf: SslPtr; num: cInt):cInt;
begin
- if InitSSLEAInterface and Assigned(_SslRead) then
+ if InitSSLInterface and Assigned(_SslRead) then
Result := _SslRead(ssl, PChar(buf), num)
else
Result := -1;
@@ -1595,7 +1731,7 @@ end;
function SslPeek(ssl: PSSL; buf: SslPtr; num: cInt):cInt;
begin
- if InitSSLEAInterface and Assigned(_SslPeek) then
+ if InitSSLInterface and Assigned(_SslPeek) then
Result := _SslPeek(ssl, PChar(buf), num)
else
Result := -1;
@@ -1603,7 +1739,7 @@ end;
function SslWrite(ssl: PSSL; buf: SslPtr; num: cInt):cInt;
begin
- if InitSSLEAInterface and Assigned(_SslWrite) then
+ if InitSSLInterface and Assigned(_SslWrite) then
Result := _SslWrite(ssl, PChar(buf), num)
else
Result := -1;
@@ -1611,7 +1747,7 @@ end;
function SslPending(ssl: PSSL):cInt;
begin
- if InitSSLEAInterface and Assigned(_SslPending) then
+ if InitSSLInterface and Assigned(_SslPending) then
Result := _SslPending(ssl)
else
Result := 0;
@@ -1620,7 +1756,7 @@ end;
//function SslGetVersion(ssl: PSSL):PChar;
function SslGetVersion(ssl: PSSL):String;
begin
- if InitSSLEAInterface and Assigned(_SslGetVersion) then
+ if InitSSLInterface and Assigned(_SslGetVersion) then
Result := _SslGetVersion(ssl)
else
Result := '';
@@ -1628,7 +1764,7 @@ end;
function SslGetPeerCertificate(ssl: PSSL):PX509;
begin
- if InitSSLEAInterface and Assigned(_SslGetPeerCertificate) then
+ if InitSSLInterface and Assigned(_SslGetPeerCertificate) then
Result := _SslGetPeerCertificate(ssl)
else
Result := nil;
@@ -1636,13 +1772,13 @@ end;
procedure SslCtxSetVerify(ctx: PSSL_CTX; mode: cInt; arg2: PFunction);
begin
- if InitSSLEAInterface and Assigned(_SslCtxSetVerify) then
+ if InitSSLInterface and Assigned(_SslCtxSetVerify) then
_SslCtxSetVerify(ctx, mode, @arg2);
end;
function SSLGetCurrentCipher(s: PSSL):SslPtr;
begin
- if InitSSLEAInterface and Assigned(_SSLGetCurrentCipher) then
+ if InitSSLInterface and Assigned(_SSLGetCurrentCipher) then
{$IFDEF CIL}
{$ELSE}
Result := _SSLGetCurrentCipher(s)
@@ -1653,7 +1789,7 @@ end;
function SSLCipherGetName(c: SslPtr):String;
begin
- if InitSSLEAInterface and Assigned(_SSLCipherGetName) then
+ if InitSSLInterface and Assigned(_SSLCipherGetName) then
Result := _SSLCipherGetName(c)
else
Result := '';
@@ -1661,7 +1797,7 @@ end;
function SSLCipherGetBits(c: SslPtr; var alg_bits: cInt):cInt;
begin
- if InitSSLEAInterface and Assigned(_SSLCipherGetBits) then
+ if InitSSLInterface and Assigned(_SSLCipherGetBits) then
Result := _SSLCipherGetBits(c, @alg_bits)
else
Result := 0;
@@ -1669,7 +1805,7 @@ end;
function SSLGetVerifyResult(ssl: PSSL):cLong;
begin
- if InitSSLEAInterface and Assigned(_SSLGetVerifyResult) then
+ if InitSSLInterface and Assigned(_SSLGetVerifyResult) then
Result := _SSLGetVerifyResult(ssl)
else
Result := X509_V_ERR_APPLICATION_VERIFICATION;
@@ -1679,7 +1815,7 @@ end;
// libeay.dll
function SSLeayversion(t: cInt): string;
begin
- if InitlibeaInterface and Assigned(_SSLeayversion) then
+ if InitSSLInterface and Assigned(_SSLeayversion) then
Result := PChar(_SSLeayversion(t))
else
Result := '';
@@ -1687,13 +1823,13 @@ end;
procedure ERR_load_crypto_strings;
Begin
- if InitlibeaInterface and Assigned(_ERR_load_crypto_strings) then
+ if InitSSLInterface and Assigned(_ERR_load_crypto_strings) then
_ERR_load_crypto_strings;
end;
function X509New: PX509;
begin
- if InitlibeaInterface and Assigned(_X509New) then
+ if InitSSLInterface and Assigned(_X509New) then
Result := _X509New
else
Result := nil;
@@ -1701,13 +1837,13 @@ end;
procedure X509Free(x: PX509);
begin
- if InitlibeaInterface and Assigned(_X509Free) then
+ if InitSSLInterface and Assigned(_X509Free) then
_X509Free(x);
end;
function X509NameOneline(a: PX509_NAME; var buf: String; size: cInt):String;
begin
- if InitlibeaInterface and Assigned(_X509NameOneline) then
+ if InitSSLInterface and Assigned(_X509NameOneline) then
Result := _X509NameOneline(a, PChar(buf),size)
else
Result := '';
@@ -1715,7 +1851,7 @@ end;
function X509GetSubjectName(a: PX509):PX509_NAME;
begin
- if InitlibeaInterface and Assigned(_X509GetSubjectName) then
+ if InitSSLInterface and Assigned(_X509GetSubjectName) then
Result := _X509GetSubjectName(a)
else
Result := nil;
@@ -1723,7 +1859,7 @@ end;
function X509GetIssuerName(a: PX509):PX509_NAME;
begin
- if InitlibeaInterface and Assigned(_X509GetIssuerName) then
+ if InitSSLInterface and Assigned(_X509GetIssuerName) then
Result := _X509GetIssuerName(a)
else
Result := nil;
@@ -1731,7 +1867,7 @@ end;
function X509NameHash(x: PX509_NAME):cuLong;
begin
- if InitlibeaInterface and Assigned(_X509NameHash) then
+ if InitSSLInterface and Assigned(_X509NameHash) then
Result := _X509NameHash(x)
else
Result := 0;
@@ -1739,7 +1875,7 @@ end;
function X509Digest(data: PX509; _type: PEVP_MD; md: String; var len: cInt):cInt;
begin
- if InitlibeaInterface and Assigned(_X509Digest) then
+ if InitSSLInterface and Assigned(_X509Digest) then
Result := _X509Digest(data, _type, PChar(md), @len)
else
Result := 0;
@@ -1747,7 +1883,7 @@ end;
function EvpPkeyNew: PEVP_PKEY;
begin
- if InitlibeaInterface and Assigned(_EvpPkeyNew) then
+ if InitSSLInterface and Assigned(_EvpPkeyNew) then
Result := _EvpPkeyNew
else
Result := nil;
@@ -1755,20 +1891,20 @@ end;
procedure EvpPkeyFree(pk: PEVP_PKEY);
begin
- if InitlibeaInterface and Assigned(_EvpPkeyFree) then
+ if InitSSLInterface and Assigned(_EvpPkeyFree) then
_EvpPkeyFree(pk);
end;
procedure ErrErrorString(e: cInt; var buf: string; len: cInt);
begin
- if InitlibeaInterface and Assigned(_ErrErrorString) then
+ if InitSSLInterface and Assigned(_ErrErrorString) then
_ErrErrorString(e, Pointer(buf), len);
buf := PChar(Buf);
end;
function ErrGetError: cInt;
begin
- if InitlibeaInterface and Assigned(_ErrGetError) then
+ if InitSSLInterface and Assigned(_ErrGetError) then
Result := _ErrGetError
else
Result := SSL_ERROR_SSL;
@@ -1776,37 +1912,37 @@ end;
procedure ErrClearError;
begin
- if InitlibeaInterface and Assigned(_ErrClearError) then
+ if InitSSLInterface and Assigned(_ErrClearError) then
_ErrClearError;
end;
procedure ErrFreeStrings;
begin
- if InitlibeaInterface and Assigned(_ErrFreeStrings) then
+ if InitSSLInterface and Assigned(_ErrFreeStrings) then
_ErrFreeStrings;
end;
procedure ErrRemoveState(pid: cInt);
begin
- if InitlibeaInterface and Assigned(_ErrRemoveState) then
+ if InitSSLInterface and Assigned(_ErrRemoveState) then
_ErrRemoveState(pid);
end;
procedure EVPcleanup;
begin
- if InitlibeaInterface and Assigned(_EVPcleanup) then
+ if InitSSLInterface and Assigned(_EVPcleanup) then
_EVPcleanup;
end;
procedure RandScreen;
begin
- if InitlibeaInterface and Assigned(_RandScreen) then
+ if InitSSLInterface and Assigned(_RandScreen) then
_RandScreen;
end;
function BioNew(b: PBIO_METHOD): PBIO;
begin
- if InitlibeaInterface and Assigned(_BioNew) then
+ if InitSSLInterface and Assigned(_BioNew) then
Result := _BioNew(b)
else
Result := nil;
@@ -1814,13 +1950,13 @@ end;
procedure BioFreeAll(b: PBIO);
begin
- if InitlibeaInterface and Assigned(_BioFreeAll) then
+ if InitSSLInterface and Assigned(_BioFreeAll) then
_BioFreeAll(b);
end;
function BioSMem: PBIO_METHOD;
begin
- if InitlibeaInterface and Assigned(_BioSMem) then
+ if InitSSLInterface and Assigned(_BioSMem) then
Result := _BioSMem
else
Result := nil;
@@ -1829,7 +1965,7 @@ end;
function BioCtrlPending(b: PBIO): cInt;
begin
- if InitlibeaInterface and Assigned(_BioCtrlPending) then
+ if InitSSLInterface and Assigned(_BioCtrlPending) then
Result := _BioCtrlPending(b)
else
Result := 0;
@@ -1837,7 +1973,7 @@ end;
function BioRead(b: PBIO; var Buf: String; Len: cInt): cInt;
begin
- if InitlibeaInterface and Assigned(_BioRead) then
+ if InitSSLInterface and Assigned(_BioRead) then
Result := _BioRead(b, PChar(Buf), Len)
else
Result := -2;
@@ -1846,7 +1982,7 @@ end;
//function BioWrite(b: PBIO; Buf: PChar; Len: cInt): cInt;
function BioWrite(b: PBIO; Buf: String; Len: cInt): cInt;
begin
- if InitlibeaInterface and Assigned(_BioWrite) then
+ if InitSSLInterface and Assigned(_BioWrite) then
Result := _BioWrite(b, PChar(Buf), Len)
else
Result := -2;
@@ -1854,7 +1990,7 @@ end;
function X509print(b: PBIO; a: PX509): cInt;
begin
- if InitlibeaInterface and Assigned(_X509print) then
+ if InitSSLInterface and Assigned(_X509print) then
Result := _X509print(b, a)
else
Result := 0;
@@ -1862,7 +1998,7 @@ end;
function d2iPKCS12bio(b:PBIO; Pkcs12: SslPtr): SslPtr;
begin
- if InitlibeaInterface and Assigned(_d2iPKCS12bio) then
+ if InitSSLInterface and Assigned(_d2iPKCS12bio) then
Result := _d2iPKCS12bio(b, Pkcs12)
else
Result := nil;
@@ -1870,7 +2006,7 @@ end;
function PKCS12parse(p12: SslPtr; pass: string; var pkey, cert, ca: SslPtr): cInt;
begin
- if InitlibeaInterface and Assigned(_PKCS12parse) then
+ if InitSSLInterface and Assigned(_PKCS12parse) then
Result := _PKCS12parse(p12, SslPtr(pass), pkey, cert, ca)
else
Result := 0;
@@ -1878,13 +2014,13 @@ end;
procedure PKCS12free(p12: SslPtr);
begin
- if InitlibeaInterface and Assigned(_PKCS12free) then
+ if InitSSLInterface and Assigned(_PKCS12free) then
_PKCS12free(p12);
end;
function EvpPkeyAssign(pkey: PEVP_PKEY; _type: cInt; key: Prsa): cInt;
begin
- if InitlibeaInterface and Assigned(_EvpPkeyAssign) then
+ if InitSSLInterface and Assigned(_EvpPkeyAssign) then
Result := _EvpPkeyAssign(pkey, _type, key)
else
Result := 0;
@@ -1892,7 +2028,7 @@ end;
function X509SetVersion(x: PX509; version: cInt): cInt;
begin
- if InitlibeaInterface and Assigned(_X509SetVersion) then
+ if InitSSLInterface and Assigned(_X509SetVersion) then
Result := _X509SetVersion(x, version)
else
Result := 0;
@@ -1900,7 +2036,7 @@ end;
function X509SetPubkey(x: PX509; pkey: PEVP_PKEY): cInt;
begin
- if InitlibeaInterface and Assigned(_X509SetPubkey) then
+ if InitSSLInterface and Assigned(_X509SetPubkey) then
Result := _X509SetPubkey(x, pkey)
else
Result := 0;
@@ -1908,7 +2044,7 @@ end;
function X509SetIssuerName(x: PX509; name: PX509_NAME): cInt;
begin
- if InitlibeaInterface and Assigned(_X509SetIssuerName) then
+ if InitSSLInterface and Assigned(_X509SetIssuerName) then
Result := _X509SetIssuerName(x, name)
else
Result := 0;
@@ -1917,7 +2053,7 @@ end;
function X509NameAddEntryByTxt(name: PX509_NAME; field: string; _type: cInt;
bytes: string; len, loc, _set: cInt): cInt;
begin
- if InitlibeaInterface and Assigned(_X509NameAddEntryByTxt) then
+ if InitSSLInterface and Assigned(_X509NameAddEntryByTxt) then
Result := _X509NameAddEntryByTxt(name, PChar(field), _type, PChar(Bytes), len, loc, _set)
else
Result := 0;
@@ -1925,7 +2061,7 @@ end;
function X509Sign(x: PX509; pkey: PEVP_PKEY; const md: PEVP_MD): cInt;
begin
- if InitlibeaInterface and Assigned(_X509Sign) then
+ if InitSSLInterface and Assigned(_X509Sign) then
Result := _X509Sign(x, pkey, md)
else
Result := 0;
@@ -1933,7 +2069,7 @@ end;
function Asn1UtctimeNew: PASN1_UTCTIME;
begin
- if InitlibeaInterface and Assigned(_Asn1UtctimeNew) then
+ if InitSSLInterface and Assigned(_Asn1UtctimeNew) then
Result := _Asn1UtctimeNew
else
Result := nil;
@@ -1941,13 +2077,29 @@ end;
procedure Asn1UtctimeFree(a: PASN1_UTCTIME);
begin
- if InitlibeaInterface and Assigned(_Asn1UtctimeFree) then
+ if InitSSLInterface and Assigned(_Asn1UtctimeFree) then
_Asn1UtctimeFree(a);
end;
+function Asn1IntegerSet(a: PASN1_INTEGER; v: integer): integer;
+begin
+ if InitSSLInterface and Assigned(_Asn1IntegerSet) then
+ Result := _Asn1IntegerSet(a, v)
+ else
+ Result := 0;
+end;
+
+function Asn1IntegerGet(a: PASN1_INTEGER): integer;
+begin
+ if InitSSLInterface and Assigned(_Asn1IntegerGet) then
+ Result := _Asn1IntegerGet(a)
+ else
+ Result := 0;
+end;
+
function X509GmtimeAdj(s: PASN1_UTCTIME; adj: cInt): PASN1_UTCTIME;
begin
- if InitlibeaInterface and Assigned(_X509GmtimeAdj) then
+ if InitSSLInterface and Assigned(_X509GmtimeAdj) then
Result := _X509GmtimeAdj(s, adj)
else
Result := nil;
@@ -1955,7 +2107,7 @@ end;
function X509SetNotBefore(x: PX509; tm: PASN1_UTCTIME): cInt;
begin
- if InitlibeaInterface and Assigned(_X509SetNotBefore) then
+ if InitSSLInterface and Assigned(_X509SetNotBefore) then
Result := _X509SetNotBefore(x, tm)
else
Result := 0;
@@ -1963,7 +2115,7 @@ end;
function X509SetNotAfter(x: PX509; tm: PASN1_UTCTIME): cInt;
begin
- if InitlibeaInterface and Assigned(_X509SetNotAfter) then
+ if InitSSLInterface and Assigned(_X509SetNotAfter) then
Result := _X509SetNotAfter(x, tm)
else
Result := 0;
@@ -1971,7 +2123,7 @@ end;
function i2dX509bio(b: PBIO; x: PX509): cInt;
begin
- if InitlibeaInterface and Assigned(_i2dX509bio) then
+ if InitSSLInterface and Assigned(_i2dX509bio) then
Result := _i2dX509bio(b, x)
else
Result := 0;
@@ -1979,7 +2131,7 @@ end;
function i2dPrivateKeyBio(b: PBIO; pkey: PEVP_PKEY): cInt;
begin
- if InitlibeaInterface and Assigned(_i2dPrivateKeyBio) then
+ if InitSSLInterface and Assigned(_i2dPrivateKeyBio) then
Result := _i2dPrivateKeyBio(b, pkey)
else
Result := 0;
@@ -1987,7 +2139,7 @@ end;
function EvpGetDigestByName(Name: String): PEVP_MD;
begin
- if InitlibeaInterface and Assigned(_EvpGetDigestByName) then
+ if InitSSLInterface and Assigned(_EvpGetDigestByName) then
Result := _EvpGetDigestByName(PChar(Name))
else
Result := nil;
@@ -1995,7 +2147,7 @@ end;
function X509GetSerialNumber(x: PX509): PASN1_cInt;
begin
- if InitlibeaInterface and Assigned(_X509GetSerialNumber) then
+ if InitSSLInterface and Assigned(_X509GetSerialNumber) then
Result := _X509GetSerialNumber(x)
else
Result := nil;
@@ -2004,7 +2156,7 @@ end;
// 3DES functions
procedure DESsetoddparity(Key: des_cblock);
begin
- if InitlibeaInterface and Assigned(_DESsetoddparity) then
+ if InitSSLInterface and Assigned(_DESsetoddparity) then
_DESsetoddparity(Key);
end;
@@ -2018,7 +2170,7 @@ end;
function DESsetkeychecked(key: des_cblock; schedule: des_key_schedule): cInt;
begin
- if InitlibeaInterface and Assigned(_DESsetkeychecked) then
+ if InitSSLInterface and Assigned(_DESsetkeychecked) then
Result := _DESsetkeychecked(key, schedule)
else
Result := -1;
@@ -2026,14 +2178,14 @@ end;
procedure DESecbencrypt(Input: des_cblock; output: des_cblock; ks: des_key_schedule; enc: cInt);
begin
- if InitlibeaInterface and Assigned(_DESecbencrypt) then
+ if InitSSLInterface and Assigned(_DESecbencrypt) then
_DESecbencrypt(Input, output, ks, enc);
end;
// RAND functions
function RAND_set_rand_method(const meth: PRAND_METHOD): cint;
begin
- if InitlibeaInterface and Assigned(_RAND_set_rand_method) then
+ if InitSSLInterface and Assigned(_RAND_set_rand_method) then
Result := _RAND_set_rand_method(meth)
else
Result := -1;
@@ -2041,7 +2193,7 @@ end;
function RAND_get_rand_method: PRAND_METHOD;
begin
- if InitlibeaInterface and Assigned(_RAND_get_rand_method) then
+ if InitSSLInterface and Assigned(_RAND_get_rand_method) then
Result := _RAND_get_rand_method()
else
Result := nil;
@@ -2049,7 +2201,7 @@ end;
function RAND_SSLeay: PRAND_METHOD;
begin
- if InitlibeaInterface and Assigned(_RAND_SSLeay) then
+ if InitSSLInterface and Assigned(_RAND_SSLeay) then
Result := _RAND_SSLeay()
else
Result := nil;
@@ -2057,13 +2209,13 @@ end;
procedure RAND_cleanup;
begin
- if InitlibeaInterface and Assigned(_RAND_cleanup) then
+ if InitSSLInterface and Assigned(_RAND_cleanup) then
_RAND_cleanup();
end;
function RAND_bytes(buf: PByte; num: cint): cint;
begin
- if InitlibeaInterface and Assigned(_RAND_bytes) then
+ if InitSSLInterface and Assigned(_RAND_bytes) then
Result := _RAND_bytes(buf, num)
else
Result := -1;
@@ -2071,7 +2223,7 @@ end;
function RAND_pseudo_bytes(buf: PByte; num: cint): cint;
begin
- if InitlibeaInterface and Assigned(_RAND_pseudo_bytes) then
+ if InitSSLInterface and Assigned(_RAND_pseudo_bytes) then
Result := _RAND_pseudo_bytes(buf, num)
else
Result := -1;
@@ -2079,19 +2231,19 @@ end;
procedure RAND_seed(const buf: Pointer; num: cint);
begin
- if InitlibeaInterface and Assigned(_RAND_seed) then
+ if InitSSLInterface and Assigned(_RAND_seed) then
_RAND_seed(buf, num);
end;
procedure RAND_add(const buf: Pointer; num: cint; entropy: cdouble);
begin
- if InitlibeaInterface and Assigned(_RAND_add) then
+ if InitSSLInterface and Assigned(_RAND_add) then
_RAND_add(buf, num, entropy);
end;
function RAND_load_file(const file_name: PChar; max_bytes: clong): cint;
begin
- if InitlibeaInterface and Assigned(_RAND_load_file) then
+ if InitSSLInterface and Assigned(_RAND_load_file) then
Result := _RAND_load_file(file_name, max_bytes)
else
Result := -1;
@@ -2099,7 +2251,7 @@ end;
function RAND_write_file(const file_name: PChar): cint;
begin
- if InitlibeaInterface and Assigned(_RAND_write_file) then
+ if InitSSLInterface and Assigned(_RAND_write_file) then
Result := _RAND_write_file(file_name)
else
Result := -1;
@@ -2107,7 +2259,7 @@ end;
function RAND_file_name(file_name: PChar; num: csize_t): PChar;
begin
- if InitlibeaInterface and Assigned(_RAND_file_name) then
+ if InitSSLInterface and Assigned(_RAND_file_name) then
Result := _RAND_file_name(file_name, num)
else
Result := nil;
@@ -2115,7 +2267,7 @@ end;
function RAND_status: cint;
begin
- if InitlibeaInterface and Assigned(_RAND_status) then
+ if InitSSLInterface and Assigned(_RAND_status) then
Result := _RAND_status()
else
Result := -1;
@@ -2123,7 +2275,7 @@ end;
function RAND_query_egd_bytes(const path: PChar; buf: PByte; bytes: cint): cint;
begin
- if InitlibeaInterface and Assigned(_RAND_query_egd_bytes) then
+ if InitSSLInterface and Assigned(_RAND_query_egd_bytes) then
Result := _RAND_query_egd_bytes(path, buf, bytes)
else
Result := -1;
@@ -2131,7 +2283,7 @@ end;
function RAND_egd(const path: PChar): cint;
begin
- if InitlibeaInterface and Assigned(_RAND_egd) then
+ if InitSSLInterface and Assigned(_RAND_egd) then
Result := _RAND_egd(path)
else
Result := -1;
@@ -2139,7 +2291,7 @@ end;
function RAND_egd_bytes(const path: PChar; bytes: cint): cint;
begin
- if InitlibeaInterface and Assigned(_RAND_egd_bytes) then
+ if InitSSLInterface and Assigned(_RAND_egd_bytes) then
Result := _RAND_egd_bytes(path, bytes)
else
Result := -1;
@@ -2147,13 +2299,13 @@ end;
procedure ERR_load_RAND_strings;
begin
- if InitlibeaInterface and Assigned(_ERR_load_RAND_strings) then
+ if InitSSLInterface and Assigned(_ERR_load_RAND_strings) then
_ERR_load_RAND_strings();
end;
function RAND_poll: cint;
begin
- if InitlibeaInterface and Assigned(_RAND_poll) then
+ if InitSSLInterface and Assigned(_RAND_poll) then
Result := _RAND_poll()
else
Result := -1;
@@ -2163,7 +2315,7 @@ end;
function RSA_new(): PRSA;
begin
- if InitlibeaInterface and Assigned(_RSA_new) then
+ if InitSSLInterface and Assigned(_RSA_new) then
Result := _RSA_new()
else
Result := nil;
@@ -2171,7 +2323,7 @@ end;
function RSA_new_method(method: PENGINE): PRSA;
begin
- if InitlibeaInterface and Assigned(_RSA_new_method) then
+ if InitSSLInterface and Assigned(_RSA_new_method) then
Result := _RSA_new_method(method)
else
Result := nil;
@@ -2179,7 +2331,7 @@ end;
function RSA_size(arsa: PRSA): cint;
begin
- if InitlibeaInterface and Assigned(_RSA_size) then
+ if InitSSLInterface and Assigned(_RSA_size) then
Result := _RSA_size(arsa)
else
Result := -1;
@@ -2187,7 +2339,7 @@ end;
function RsaGenerateKey(bits, e: cInt; callback: PFunction; cb_arg: SslPtr): PRSA;
begin
- if InitlibeaInterface and Assigned(_RsaGenerateKey) then
+ if InitSSLInterface and Assigned(_RsaGenerateKey) then
Result := _RsaGenerateKey(bits, e, callback, cb_arg)
else
Result := nil;
@@ -2195,7 +2347,7 @@ end;
function RSA_generate_key_ex(arsa: PRSA; bits: cInt; e: PBIGNUM; cb: PBN_GENCB): PRSA;
begin
- if InitlibeaInterface and Assigned(_RSA_generate_key_ex) then
+ if InitSSLInterface and Assigned(_RSA_generate_key_ex) then
Result := _RSA_generate_key_ex(arsa, bits, e, cb)
else
Result := nil;
@@ -2203,7 +2355,7 @@ end;
function RSA_check_key(arsa: PRSA): cint;
begin
- if InitlibeaInterface and Assigned(_RSA_check_key) then
+ if InitSSLInterface and Assigned(_RSA_check_key) then
Result := _RSA_check_key(arsa)
else
Result := -1;
@@ -2211,7 +2363,7 @@ end;
function RSA_public_encrypt(flen: cint; from_buf, to_buf: PByte; arsa: PRSA; padding: cint): cint;
begin
- if InitlibeaInterface and Assigned(_RSA_public_encrypt) then
+ if InitSSLInterface and Assigned(_RSA_public_encrypt) then
Result := _RSA_public_encrypt(flen, from_buf, to_buf, arsa, padding)
else
Result := -1;
@@ -2219,7 +2371,7 @@ end;
function RSA_private_encrypt(flen: cint; from_buf, to_buf: PByte; arsa: PRSA; padding: cint): cint;
begin
- if InitlibeaInterface and Assigned(_RSA_private_encrypt) then
+ if InitSSLInterface and Assigned(_RSA_private_encrypt) then
Result := _RSA_private_encrypt(flen, from_buf, to_buf, arsa, padding)
else
Result := -1;
@@ -2227,7 +2379,7 @@ end;
function RSA_public_decrypt(flen: cint; from_buf, to_buf: PByte; arsa: PRSA; padding: cint): cint;
begin
- if InitlibeaInterface and Assigned(_RSA_public_decrypt) then
+ if InitSSLInterface and Assigned(_RSA_public_decrypt) then
Result := _RSA_public_decrypt(flen, from_buf, to_buf, arsa, padding)
else
Result := -1;
@@ -2235,7 +2387,7 @@ end;
function RSA_private_decrypt(flen: cint; from_buf, to_buf: PByte; arsa: PRSA; padding: cint): cint;
begin
- if InitlibeaInterface and Assigned(_RSA_private_decrypt) then
+ if InitSSLInterface and Assigned(_RSA_private_decrypt) then
Result := _RSA_private_decrypt(flen, from_buf, to_buf, arsa, padding)
else
Result := -1;
@@ -2243,13 +2395,13 @@ end;
procedure RSA_free(arsa: PRSA);
begin
- if InitlibeaInterface and Assigned(_RSA_free) then
+ if InitSSLInterface and Assigned(_RSA_free) then
_RSA_free(arsa);
end;
function RSA_flags(arsa: PRSA): Integer;
begin
- if InitlibeaInterface and Assigned(_RSA_flags) then
+ if InitSSLInterface and Assigned(_RSA_flags) then
Result := _RSA_flags(arsa)
else
Result := -1;
@@ -2257,13 +2409,13 @@ end;
procedure RSA_set_default_method(method: PRSA_METHOD);
begin
- if InitlibeaInterface and Assigned(_RSA_set_default_method) then
+ if InitSSLInterface and Assigned(_RSA_set_default_method) then
_RSA_set_default_method(method);
end;
function RSA_get_default_method: PRSA_METHOD;
begin
- if InitlibeaInterface and Assigned(_RSA_get_default_method) then
+ if InitSSLInterface and Assigned(_RSA_get_default_method) then
Result := _RSA_get_default_method()
else
Result := nil;
@@ -2271,7 +2423,7 @@ end;
function RSA_get_method(arsa: PRSA): PRSA_METHOD;
begin
- if InitlibeaInterface and Assigned(_RSA_get_method) then
+ if InitSSLInterface and Assigned(_RSA_get_method) then
Result := _RSA_get_method(arsa)
else
Result := nil;
@@ -2279,7 +2431,7 @@ end;
function RSA_set_method(arsa: PRSA; method: PRSA_METHOD): PRSA_METHOD;
begin
- if InitlibeaInterface and Assigned(_RSA_set_method) then
+ if InitSSLInterface and Assigned(_RSA_set_method) then
Result := _RSA_set_method(arsa, method)
else
Result := nil;
@@ -2287,7 +2439,7 @@ end;
function d2i_RSAPublicKey(arsa: PPRSA; pp: PPByte; len: cint): PRSA;
begin
- if InitlibeaInterface and Assigned(_d2i_RSAPublicKey) then
+ if InitSSLInterface and Assigned(_d2i_RSAPublicKey) then
Result := _d2i_RSAPublicKey(arsa, pp, len)
else
Result := nil;
@@ -2295,7 +2447,7 @@ end;
function i2d_RSAPublicKey(arsa: PRSA; pp: PPByte): cint;
begin
- if InitlibeaInterface and Assigned(_i2d_RSAPublicKey) then
+ if InitSSLInterface and Assigned(_i2d_RSAPublicKey) then
Result := _i2d_RSAPublicKey(arsa, pp)
else
Result := -1;
@@ -2303,7 +2455,7 @@ end;
function d2i_RSAPrivateKey(arsa: PPRSA; pp: PPByte; len: cint): PRSA;
begin
- if InitlibeaInterface and Assigned(_d2i_RSAPrivateKey) then
+ if InitSSLInterface and Assigned(_d2i_RSAPrivateKey) then
Result := _d2i_RSAPrivateKey(arsa, pp, len)
else
Result := nil;
@@ -2311,7 +2463,7 @@ end;
function i2d_RSAPrivateKey(arsa: PRSA; pp: PPByte): cint;
begin
- if InitlibeaInterface and Assigned(_i2d_RSAPrivateKey) then
+ if InitSSLInterface and Assigned(_i2d_RSAPrivateKey) then
Result := _i2d_RSAPrivateKey(arsa, pp)
else
Result := -1;
@@ -2321,7 +2473,7 @@ end;
function Err_Error_String(e: cInt; buf: PChar): PChar;
begin
- if InitlibeaInterface and Assigned(_Err_Error_String) then
+ if InitSSLInterface and Assigned(_Err_Error_String) then
Result := _Err_Error_String(e, buf)
else
Result := nil;
@@ -2331,7 +2483,7 @@ end;
function SSLeay_version(t: cint): PChar;
begin
- if InitlibeaInterface and Assigned(_SSLeay_version) then
+ if InitSSLInterface and Assigned(_SSLeay_version) then
Result := _SSLeay_version(t)
else
Result := nil;
@@ -2341,7 +2493,7 @@ end;
function EVP_des_ede3_cbc: PEVP_CIPHER;
begin
- if InitlibeaInterface and Assigned(_EVP_des_ede3_cbc) then
+ if InitSSLInterface and Assigned(_EVP_des_ede3_cbc) then
Result := _EVP_des_ede3_cbc()
else
Result := Nil;
@@ -2349,7 +2501,7 @@ end;
function EVP_enc_null: PEVP_CIPHER;
begin
- if InitlibeaInterface and Assigned(_EVP_enc_null) then
+ if InitSSLInterface and Assigned(_EVP_enc_null) then
Result := _EVP_enc_null()
else
Result := Nil;
@@ -2357,7 +2509,7 @@ end;
function EVP_rc2_cbc: PEVP_CIPHER;
begin
- if InitlibeaInterface and Assigned(_EVP_rc2_cbc) then
+ if InitSSLInterface and Assigned(_EVP_rc2_cbc) then
Result := _EVP_rc2_cbc()
else
Result := Nil;
@@ -2365,7 +2517,7 @@ end;
function EVP_rc2_40_cbc: PEVP_CIPHER;
begin
- if InitlibeaInterface and Assigned(_EVP_rc2_40_cbc) then
+ if InitSSLInterface and Assigned(_EVP_rc2_40_cbc) then
Result := _EVP_rc2_40_cbc()
else
Result := Nil;
@@ -2373,7 +2525,7 @@ end;
function EVP_rc2_64_cbc: PEVP_CIPHER;
begin
- if InitlibeaInterface and Assigned(_EVP_rc2_64_cbc) then
+ if InitSSLInterface and Assigned(_EVP_rc2_64_cbc) then
Result := _EVP_rc2_64_cbc()
else
Result := Nil;
@@ -2381,7 +2533,7 @@ end;
function EVP_rc4: PEVP_CIPHER;
begin
- if InitlibeaInterface and Assigned(_EVP_rc4) then
+ if InitSSLInterface and Assigned(_EVP_rc4) then
Result := _EVP_rc4()
else
Result := Nil;
@@ -2389,7 +2541,7 @@ end;
function EVP_rc4_40: PEVP_CIPHER;
begin
- if InitlibeaInterface and Assigned(_EVP_rc4_40) then
+ if InitSSLInterface and Assigned(_EVP_rc4_40) then
Result := _EVP_rc4_40()
else
Result := Nil;
@@ -2397,7 +2549,7 @@ end;
function EVP_des_cbc: PEVP_CIPHER;
begin
- if InitlibeaInterface and Assigned(_EVP_des_cbc) then
+ if InitSSLInterface and Assigned(_EVP_des_cbc) then
Result := _EVP_des_cbc()
else
Result := Nil;
@@ -2405,7 +2557,7 @@ end;
function EVP_aes_128_cbc: PEVP_CIPHER;
begin
- if InitlibeaInterface and Assigned(_EVP_aes_128_cbc) then
+ if InitSSLInterface and Assigned(_EVP_aes_128_cbc) then
Result := _EVP_aes_128_cbc()
else
Result := Nil;
@@ -2413,7 +2565,7 @@ end;
function EVP_aes_192_cbc: PEVP_CIPHER;
begin
- if InitlibeaInterface and Assigned(_EVP_aes_192_cbc) then
+ if InitSSLInterface and Assigned(_EVP_aes_192_cbc) then
Result := _EVP_aes_192_cbc()
else
Result := Nil;
@@ -2421,7 +2573,7 @@ end;
function EVP_aes_256_cbc: PEVP_CIPHER;
begin
- if InitlibeaInterface and Assigned(_EVP_aes_256_cbc) then
+ if InitSSLInterface and Assigned(_EVP_aes_256_cbc) then
Result := _EVP_aes_256_cbc()
else
Result := Nil;
@@ -2429,7 +2581,7 @@ end;
function EVP_aes_128_cfb8: PEVP_CIPHER;
begin
- if InitlibeaInterface and Assigned(_EVP_aes_128_cfb8) then
+ if InitSSLInterface and Assigned(_EVP_aes_128_cfb8) then
Result := _EVP_aes_128_cfb8()
else
Result := Nil;
@@ -2437,7 +2589,7 @@ end;
function EVP_aes_192_cfb8: PEVP_CIPHER;
begin
- if InitlibeaInterface and Assigned(_EVP_aes_192_cfb8) then
+ if InitSSLInterface and Assigned(_EVP_aes_192_cfb8) then
Result := _EVP_aes_192_cfb8()
else
Result := Nil;
@@ -2445,7 +2597,7 @@ end;
function EVP_aes_256_cfb8: PEVP_CIPHER;
begin
- if InitlibeaInterface and Assigned(_EVP_aes_256_cfb8) then
+ if InitSSLInterface and Assigned(_EVP_aes_256_cfb8) then
Result := _EVP_aes_256_cfb8()
else
Result := Nil;
@@ -2453,7 +2605,7 @@ end;
function EVP_camellia_128_cbc: PEVP_CIPHER;
begin
- if InitlibeaInterface and Assigned(_EVP_camellia_128_cbc) then
+ if InitSSLInterface and Assigned(_EVP_camellia_128_cbc) then
Result := _EVP_camellia_128_cbc()
else
Result := Nil;
@@ -2461,7 +2613,7 @@ end;
function EVP_camellia_192_cbc: PEVP_CIPHER;
begin
- if InitlibeaInterface and Assigned(_EVP_camellia_192_cbc) then
+ if InitSSLInterface and Assigned(_EVP_camellia_192_cbc) then
Result := _EVP_camellia_192_cbc()
else
Result := Nil;
@@ -2469,7 +2621,7 @@ end;
function EVP_camellia_256_cbc: PEVP_CIPHER;
begin
- if InitlibeaInterface and Assigned(_EVP_camellia_256_cbc) then
+ if InitSSLInterface and Assigned(_EVP_camellia_256_cbc) then
Result := _EVP_camellia_256_cbc()
else
Result := Nil;
@@ -2477,25 +2629,25 @@ end;
procedure OpenSSL_add_all_algorithms;
begin
- if InitlibeaInterface and Assigned(_OpenSSL_add_all_algorithms) then
+ if InitSSLInterface and Assigned(_OpenSSL_add_all_algorithms) then
_OpenSSL_add_all_algorithms();
end;
procedure OpenSSL_add_all_ciphers;
begin
- if InitlibeaInterface and Assigned(_OpenSSL_add_all_ciphers) then
+ if InitSSLInterface and Assigned(_OpenSSL_add_all_ciphers) then
_OpenSSL_add_all_ciphers();
end;
procedure OpenSSL_add_all_digests;
begin
- if InitlibeaInterface and Assigned(_OpenSSL_add_all_digests) then
+ if InitSSLInterface and Assigned(_OpenSSL_add_all_digests) then
_OpenSSL_add_all_digests();
end;
//
function EVP_DigestInit(ctx: PEVP_MD_CTX; type_: PEVP_MD): cint;
begin
- if InitlibeaInterface and Assigned(_EVP_DigestInit) then
+ if InitSSLInterface and Assigned(_EVP_DigestInit) then
Result := _EVP_DigestInit(ctx, type_)
else
Result := -1;
@@ -2503,7 +2655,7 @@ end;
function EVP_DigestUpdate(ctx: PEVP_MD_CTX; const data: Pointer; cnt: csize_t): cint;
begin
- if InitlibeaInterface and Assigned(_EVP_DigestUpdate) then
+ if InitSSLInterface and Assigned(_EVP_DigestUpdate) then
Result := _EVP_DigestUpdate(ctx, data, cnt)
else
Result := -1;
@@ -2511,7 +2663,7 @@ end;
function EVP_DigestFinal(ctx: PEVP_MD_CTX; md: PByte; s: pcuint): cint;
begin
- if InitlibeaInterface and Assigned(_EVP_DigestFinal) then
+ if InitSSLInterface and Assigned(_EVP_DigestFinal) then
Result := _EVP_DigestFinal(ctx, md, s)
else
Result := -1;
@@ -2520,7 +2672,7 @@ end;
function EVP_SignFinal(ctx: pEVP_MD_CTX; sig: pointer; var s: cardinal;
key: pEVP_PKEY): integer;
begin
- if InitlibeaInterface and Assigned(_EVP_SignFinal) then
+ if InitSSLInterface and Assigned(_EVP_SignFinal) then
Result := _EVP_SignFinal(ctx, sig, s, key)
else
Result := -1;
@@ -2528,7 +2680,7 @@ end;
function EVP_PKEY_size(key: pEVP_PKEY): integer;
begin
- if InitlibeaInterface and Assigned(_EVP_PKEY_size) then
+ if InitSSLInterface and Assigned(_EVP_PKEY_size) then
Result := _EVP_PKEY_size(key)
else
Result := -1;
@@ -2536,14 +2688,14 @@ end;
procedure EVP_PKEY_free(key: pEVP_PKEY);
begin
- if InitlibeaInterface and Assigned(_EVP_PKEY_free) then
+ if InitSSLInterface and Assigned(_EVP_PKEY_free) then
_EVP_PKEY_free(key);
end;
function EVP_VerifyFinal(ctx: pEVP_MD_CTX; sigbuf: pointer;
siglen: cardinal; pkey: pEVP_PKEY): integer;
begin
- if InitlibeaInterface and Assigned(_EVP_VerifyFinal) then
+ if InitSSLInterface and Assigned(_EVP_VerifyFinal) then
Result := _EVP_VerifyFinal(ctx, sigbuf, siglen, pkey)
else
Result := -1;
@@ -2553,7 +2705,7 @@ end;
//
function EVP_get_cipherbyname(const name: PChar): PEVP_CIPHER;
begin
- if InitlibeaInterface and Assigned(_EVP_get_cipherbyname) then
+ if InitSSLInterface and Assigned(_EVP_get_cipherbyname) then
Result := _EVP_get_cipherbyname(name)
else
Result := nil;
@@ -2561,7 +2713,7 @@ end;
function EVP_get_digestbyname(const name: PChar): PEVP_MD;
begin
- if InitlibeaInterface and Assigned(_EVP_get_digestbyname) then
+ if InitSSLInterface and Assigned(_EVP_get_digestbyname) then
Result := _EVP_get_digestbyname(name)
else
Result := nil;
@@ -2569,13 +2721,13 @@ end;
//
procedure EVP_CIPHER_CTX_init(a: PEVP_CIPHER_CTX);
begin
- if InitlibeaInterface and Assigned(_EVP_CIPHER_CTX_init) then
+ if InitSSLInterface and Assigned(_EVP_CIPHER_CTX_init) then
_EVP_CIPHER_CTX_init(a);
end;
function EVP_CIPHER_CTX_cleanup(a: PEVP_CIPHER_CTX): cint;
begin
- if InitlibeaInterface and Assigned(_EVP_CIPHER_CTX_cleanup) then
+ if InitSSLInterface and Assigned(_EVP_CIPHER_CTX_cleanup) then
Result := _EVP_CIPHER_CTX_cleanup(a)
else
Result := -1;
@@ -2583,7 +2735,7 @@ end;
function EVP_CIPHER_CTX_set_key_length(x: PEVP_CIPHER_CTX; keylen: cint): cint;
begin
- if InitlibeaInterface and Assigned(_EVP_CIPHER_CTX_set_key_length) then
+ if InitSSLInterface and Assigned(_EVP_CIPHER_CTX_set_key_length) then
Result := _EVP_CIPHER_CTX_set_key_length(x, keylen)
else
Result := -1;
@@ -2591,7 +2743,7 @@ end;
function EVP_CIPHER_CTX_ctrl(ctx: PEVP_CIPHER_CTX; type_, arg: cint; ptr: Pointer): cint;
begin
- if InitlibeaInterface and Assigned(_EVP_CIPHER_CTX_ctrl) then
+ if InitSSLInterface and Assigned(_EVP_CIPHER_CTX_ctrl) then
Result := _EVP_CIPHER_CTX_ctrl(ctx, type_, arg, ptr)
else
Result := -1;
@@ -2600,7 +2752,7 @@ end;
function EVP_EncryptInit(ctx: PEVP_CIPHER_CTX; const chipher_: PEVP_CIPHER;
const key, iv: PByte): cint;
begin
- if InitlibeaInterface and Assigned(_EVP_EncryptInit) then
+ if InitSSLInterface and Assigned(_EVP_EncryptInit) then
Result := _EVP_EncryptInit(ctx, chipher_, key, iv)
else
Result := -1;
@@ -2609,7 +2761,7 @@ end;
function EVP_EncryptUpdate(ctx: PEVP_CIPHER_CTX; out_: pcuchar;
outlen: pcint; const in_: pcuchar; inlen: cint): cint;
begin
- if InitlibeaInterface and Assigned(_EVP_EncryptUpdate) then
+ if InitSSLInterface and Assigned(_EVP_EncryptUpdate) then
Result := _EVP_EncryptUpdate(ctx, out_, outlen, in_, inlen)
else
Result := -1;
@@ -2617,7 +2769,7 @@ end;
function EVP_EncryptFinal(ctx: PEVP_CIPHER_CTX; out_data: PByte; outlen: pcint): cint;
begin
- if InitlibeaInterface and Assigned(_EVP_EncryptFinal) then
+ if InitSSLInterface and Assigned(_EVP_EncryptFinal) then
Result := _EVP_EncryptFinal(ctx, out_data, outlen)
else
Result := -1;
@@ -2626,7 +2778,7 @@ end;
function EVP_DecryptInit(ctx: PEVP_CIPHER_CTX; chiphir_type: PEVP_CIPHER;
const key, iv: PByte): cint;
begin
- if InitlibeaInterface and Assigned(_EVP_DecryptInit) then
+ if InitSSLInterface and Assigned(_EVP_DecryptInit) then
Result := _EVP_DecryptInit(ctx, chiphir_type, key, iv)
else
Result := -1;
@@ -2635,7 +2787,7 @@ end;
function EVP_DecryptUpdate(ctx: PEVP_CIPHER_CTX; out_data: PByte;
outl: pcint; const in_: PByte; inl: cint): cint;
begin
- if InitlibeaInterface and Assigned(_EVP_DecryptUpdate) then
+ if InitSSLInterface and Assigned(_EVP_DecryptUpdate) then
Result := _EVP_DecryptUpdate(ctx, out_data, outl, in_, inl)
else
Result := -1;
@@ -2643,7 +2795,7 @@ end;
function EVP_DecryptFinal(ctx: PEVP_CIPHER_CTX; outm: PByte; outlen: pcint): cint;
begin
- if InitlibeaInterface and Assigned(_EVP_DecryptFinal) then
+ if InitSSLInterface and Assigned(_EVP_DecryptFinal) then
Result := _EVP_DecryptFinal(ctx, outm, outlen)
else
Result := -1;
@@ -2654,7 +2806,7 @@ end;
function PEM_read_bio_PrivateKey(bp: PBIO; X: PPEVP_PKEY;
cb: Ppem_password_cb; u: Pointer): PEVP_PKEY;
begin
- if InitlibeaInterface and Assigned(_PEM_read_bio_PrivateKey) then
+ if InitSSLInterface and Assigned(_PEM_read_bio_PrivateKey) then
Result := _PEM_read_bio_PrivateKey(bp, x, cb, u)
else
Result := nil;
@@ -2663,7 +2815,7 @@ end;
function PEM_read_bio_PUBKEY(bp: pBIO; var x: pEVP_PKEY;
cb: Ppem_password_cb; u: pointer): pEVP_PKEY;
begin
- if InitlibeaInterface and Assigned(_PEM_read_bio_PUBKEY) then
+ if InitSSLInterface and Assigned(_PEM_read_bio_PUBKEY) then
Result := _PEM_read_bio_PUBKEY(bp, x, cb, u)
else
Result := nil;
@@ -2673,7 +2825,7 @@ function PEM_write_bio_PrivateKey(bp: pBIO; x: pEVP_PKEY;
const enc: pEVP_CIPHER; kstr: PChar; klen: Integer; cb: Ppem_password_cb;
u: pointer): integer;
Begin
- if InitlibeaInterface and Assigned(_PEM_write_bio_PrivateKey) then
+ if InitSSLInterface and Assigned(_PEM_write_bio_PrivateKey) then
Result := _PEM_write_bio_PrivateKey(bp, x, enc ,kstr ,klen ,cb, u)
else
Result := -1;
@@ -2681,7 +2833,7 @@ end;
function PEM_write_bio_PUBKEY(bp: pBIO; x: pEVP_PKEY): integer;
Begin
- if InitlibeaInterface and Assigned(_PEM_write_bio_PUBKEY) then
+ if InitSSLInterface and Assigned(_PEM_write_bio_PUBKEY) then
Result := _PEM_write_bio_PUBKEY(bp, x)
else
Result := -1;
@@ -2691,7 +2843,7 @@ end;
function BIO_ctrl(bp: PBIO; cmd: cint; larg: clong; parg: Pointer): clong;
begin
- if InitlibeaInterface and Assigned(_BIO_ctrl) then
+ if InitSSLInterface and Assigned(_BIO_ctrl) then
Result := _BIO_ctrl(bp, cmd, larg, parg)
else
Result := -1;
@@ -2704,7 +2856,7 @@ end;
function BIO_s_file: PBIO_METHOD;
begin
- if InitlibeaInterface and Assigned(_BIO_s_file) then
+ if InitSSLInterface and Assigned(_BIO_s_file) then
Result := _BIO_s_file
else
Result := nil;
@@ -2712,7 +2864,7 @@ end;
function BIO_new_file(const filename: PChar; const mode: PChar): pBIO;
begin
- if InitlibeaInterface and Assigned(_BIO_new_file) then
+ if InitSSLInterface and Assigned(_BIO_new_file) then
Result := _BIO_new_file(filename, mode)
else
Result := nil;
@@ -2720,14 +2872,26 @@ end;
function BIO_new_mem_buf(buf: pointer; len: integer): pBIO;
begin
- if InitlibeaInterface and Assigned(_BIO_new_mem_buf) then
+ if InitSSLInterface and Assigned(_BIO_new_mem_buf) then
Result := _BIO_new_mem_buf(buf, len)
else
Result := nil;
end;
+procedure CRYPTOcleanupAllExData;
+begin
+ if InitSSLInterface and Assigned(_CRYPTOcleanupAllExData) then
+ _CRYPTOcleanupAllExData;
+end;
+
+procedure OPENSSLaddallalgorithms;
+begin
+ if InitSSLInterface and Assigned(_OPENSSLaddallalgorithms) then
+ _OPENSSLaddallalgorithms;
+end;
{$IFNDEF WINDOWS}
+ {$IFNDEF OS2}
{ Try to load all library versions until you find or run out }
function LoadLibHack(const Value: String): HModule;
var
@@ -2746,584 +2910,597 @@ begin
Break;
end;
end;
-{$ENDIF}
+ {$ENDIF OS2}
+{$ENDIF WINDOWS}
function LoadLib(const Value: String): HModule;
begin
{$IFDEF WINDOWS}
Result := LoadLibrary(Value);
- {$ELSE}
+ {$ELSE WINDOWS}
+ {$IFDEF OS2}
+ Result := LoadLibrary(Value);
+ {$ELSE OS2}
Result := LoadLibHack(Value);
- {$ENDIF}
+ {$ENDIF OS2}
+ {$ENDIF WINDOWS}
end;
-function GetProcAddr(module: HModule; const ProcName: string;
- AVerboseLoading: Boolean): SslPtr;
+function GetProcAddr(module: HModule; const ProcName: string): SslPtr;
begin
Result := GetProcAddress(module, PChar(ProcName));
- if AVerboseLoading and (Result = nil) then
+ if LoadVerbose and (Result = nil) then
OpenSSL_unavailable_functions := OpenSSL_unavailable_functions + ProcName + LineEnding;
end;
// The AVerboseLoading parameter can be used to check which particular
// functions weren't loaded correctly. They will be available in the
// global variable OpenSSL_unavailable_functions
-function InitSSLInterface(AVerboseLoading: Boolean = False): Boolean;
-Begin
- try
- if InitLIBEAInterface(AVerboseLoading) then
- if InitSSLEAInterface(AVerboseLoading) then
- result:=true
- else
- result:=false
- else
- result:=false;
- except
- result:=false;
- end;
-end;
-
-function InitSSLEAInterface(AVerboseLoading: Boolean = False): Boolean;
-begin
- if not IsLibEaloaded then
- begin
- SSLLibHandle := LoadLib(DLLSSLName);
- {$IFNDEF UNIX}
- if (SSLLibHandle = 0) then
- SSLLibHandle := LoadLib(DLLSSLName2);
- {$ENDIF}
- if (SSLLibHandle <> 0) then
- begin
- _SslGetError := GetProcAddr(SSLLibHandle, 'SSL_get_error', AVerboseLoading);
- _SslLibraryInit := GetProcAddr(SSLLibHandle, 'SSL_library_init', AVerboseLoading);
- _SslLoadErrorStrings := GetProcAddr(SSLLibHandle, 'SSL_load_error_strings', AVerboseLoading);
- _SslCtxSetCipherList := GetProcAddr(SSLLibHandle, 'SSL_CTX_set_cipher_list', AVerboseLoading);
- _SslCtxNew := GetProcAddr(SSLLibHandle, 'SSL_CTX_new', AVerboseLoading);
- _SslCtxFree := GetProcAddr(SSLLibHandle, 'SSL_CTX_free', AVerboseLoading);
- _SslSetFd := GetProcAddr(SSLLibHandle, 'SSL_set_fd', AVerboseLoading);
- _SslCtrl := GetProcAddr(SSLLibHandle, 'SSL_ctrl', AVerboseLoading);
- _SslCTXCtrl := GetProcAddr(SSLLibHandle, 'SSL_CTX_ctrl', AVerboseLoading);
- _SslMethodV2 := GetProcAddr(SSLLibHandle, 'SSLv2_method', AVerboseLoading);
- _SslMethodV3 := GetProcAddr(SSLLibHandle, 'SSLv3_method', AVerboseLoading);
- _SslMethodTLSV1 := GetProcAddr(SSLLibHandle, 'TLSv1_method', AVerboseLoading);
- _SslMethodV23 := GetProcAddr(SSLLibHandle, 'SSLv23_method', AVerboseLoading);
- _SslCtxUsePrivateKey := GetProcAddr(SSLLibHandle, 'SSL_CTX_use_PrivateKey', AVerboseLoading);
- _SslCtxUsePrivateKeyASN1 := GetProcAddr(SSLLibHandle, 'SSL_CTX_use_PrivateKey_ASN1', AVerboseLoading);
- //use SSL_CTX_use_RSAPrivateKey_file instead SSL_CTX_use_PrivateKey_file,
- //because SSL_CTX_use_PrivateKey_file not support DER format. :-O
- _SslCtxUsePrivateKeyFile := GetProcAddr(SSLLibHandle, 'SSL_CTX_use_RSAPrivateKey_file', AVerboseLoading);
- _SslCtxUseCertificate := GetProcAddr(SSLLibHandle, 'SSL_CTX_use_certificate', AVerboseLoading);
- _SslCtxUseCertificateASN1 := GetProcAddr(SSLLibHandle, 'SSL_CTX_use_certificate_ASN1', AVerboseLoading);
- _SslCtxUseCertificateFile := GetProcAddr(SSLLibHandle, 'SSL_CTX_use_certificate_file', AVerboseLoading);
- _SslCtxUseCertificateChainFile := GetProcAddr(SSLLibHandle, 'SSL_CTX_use_certificate_chain_file', AVerboseLoading);
- _SslCtxCheckPrivateKeyFile := GetProcAddr(SSLLibHandle, 'SSL_CTX_check_private_key', AVerboseLoading);
- _SslCtxSetDefaultPasswdCb := GetProcAddr(SSLLibHandle, 'SSL_CTX_set_default_passwd_cb', AVerboseLoading);
- _SslCtxSetDefaultPasswdCbUserdata := GetProcAddr(SSLLibHandle, 'SSL_CTX_set_default_passwd_cb_userdata', AVerboseLoading);
- _SslCtxLoadVerifyLocations := GetProcAddr(SSLLibHandle, 'SSL_CTX_load_verify_locations', AVerboseLoading);
- _SslNew := GetProcAddr(SSLLibHandle, 'SSL_new', AVerboseLoading);
- _SslFree := GetProcAddr(SSLLibHandle, 'SSL_free', AVerboseLoading);
- _SslAccept := GetProcAddr(SSLLibHandle, 'SSL_accept', AVerboseLoading);
- _SslConnect := GetProcAddr(SSLLibHandle, 'SSL_connect', AVerboseLoading);
- _SslShutdown := GetProcAddr(SSLLibHandle, 'SSL_shutdown', AVerboseLoading);
- _SslRead := GetProcAddr(SSLLibHandle, 'SSL_read', AVerboseLoading);
- _SslPeek := GetProcAddr(SSLLibHandle, 'SSL_peek', AVerboseLoading);
- _SslWrite := GetProcAddr(SSLLibHandle, 'SSL_write', AVerboseLoading);
- _SslPending := GetProcAddr(SSLLibHandle, 'SSL_pending', AVerboseLoading);
- _SslGetPeerCertificate := GetProcAddr(SSLLibHandle, 'SSL_get_peer_certificate', AVerboseLoading);
- _SslGetVersion := GetProcAddr(SSLLibHandle, 'SSL_get_version', AVerboseLoading);
- _SslCtxSetVerify := GetProcAddr(SSLLibHandle, 'SSL_CTX_set_verify', AVerboseLoading);
- _SslGetCurrentCipher := GetProcAddr(SSLLibHandle, 'SSL_get_current_cipher', AVerboseLoading);
- _SslCipherGetName := GetProcAddr(SSLLibHandle, 'SSL_CIPHER_get_name', AVerboseLoading);
- _SslCipherGetBits := GetProcAddr(SSLLibHandle, 'SSL_CIPHER_get_bits', AVerboseLoading);
- _SslGetVerifyResult := GetProcAddr(SSLLibHandle, 'SSL_get_verify_result', AVerboseLoading);
-
- //init library
- if assigned(_SslLibraryInit) then
- _SslLibraryInit;
- if assigned(_SslLoadErrorStrings) then
- _SslLoadErrorStrings;
- if assigned(_OPENSSL_add_all_algorithms) then
- _OPENSSL_add_all_algorithms;
- if assigned(_RandScreen) then
- _RandScreen;
-
- Result := True;
- SSLloaded := True;
- end
- else
- begin
- //load failed!
- if SSLLibHandle <> 0 then
- begin
- FreeLibrary(SSLLibHandle);
- SSLLibHandle := 0;
- end;
- Result := False;
- end;
- end
- else
- //loaded before...
- Result := true;
-end;
-
-function InitlibeaInterface(AVerboseLoading: Boolean = False): Boolean;
-begin
- if not Islibealoaded then
- begin
- SSLUtilHandle := LoadLib(DLLUtilName);
-
- if (SSLUtilHandle <> 0) then
- begin
- _ERR_load_crypto_strings := GetProcAddr(SSLUtilHandle, 'ERR_load_crypto_strings', AVerboseLoading);
- _X509New := GetProcAddr(SSLUtilHandle, 'X509_new', AVerboseLoading);
- _X509Free := GetProcAddr(SSLUtilHandle, 'X509_free', AVerboseLoading);
- _X509NameOneline := GetProcAddr(SSLUtilHandle, 'X509_NAME_oneline', AVerboseLoading);
- _X509GetSubjectName := GetProcAddr(SSLUtilHandle, 'X509_get_subject_name', AVerboseLoading);
- _X509GetIssuerName := GetProcAddr(SSLUtilHandle, 'X509_get_issuer_name', AVerboseLoading);
- _X509NameHash := GetProcAddr(SSLUtilHandle, 'X509_NAME_hash', AVerboseLoading);
- _X509Digest := GetProcAddr(SSLUtilHandle, 'X509_digest', AVerboseLoading);
- _X509print := GetProcAddr(SSLUtilHandle, 'X509_print', AVerboseLoading);
- _X509SetVersion := GetProcAddr(SSLUtilHandle, 'X509_set_version', AVerboseLoading);
- _X509SetPubkey := GetProcAddr(SSLUtilHandle, 'X509_set_pubkey', AVerboseLoading);
- _X509SetIssuerName := GetProcAddr(SSLUtilHandle, 'X509_set_issuer_name', AVerboseLoading);
- _X509NameAddEntryByTxt := GetProcAddr(SSLUtilHandle, 'X509_NAME_add_entry_by_txt', AVerboseLoading);
- _X509Sign := GetProcAddr(SSLUtilHandle, 'X509_sign', AVerboseLoading);
- _X509GmtimeAdj := GetProcAddr(SSLUtilHandle, 'X509_gmtime_adj', AVerboseLoading);
- _X509SetNotBefore := GetProcAddr(SSLUtilHandle, 'X509_set_notBefore', AVerboseLoading);
- _X509SetNotAfter := GetProcAddr(SSLUtilHandle, 'X509_set_notAfter', AVerboseLoading);
- _X509GetSerialNumber := GetProcAddr(SSLUtilHandle, 'X509_get_serialNumber', AVerboseLoading);
- _EvpPkeyNew := GetProcAddr(SSLUtilHandle, 'EVP_PKEY_new', AVerboseLoading);
- _EvpPkeyFree := GetProcAddr(SSLUtilHandle, 'EVP_PKEY_free', AVerboseLoading);
- _EvpPkeyAssign := GetProcAddr(SSLUtilHandle, 'EVP_PKEY_assign', AVerboseLoading);
- _EVPCleanup := GetProcAddr(SSLUtilHandle, 'EVP_cleanup', AVerboseLoading);
- _EvpGetDigestByName := GetProcAddr(SSLUtilHandle, 'EVP_get_digestbyname', AVerboseLoading);
- _SSLeayversion := GetProcAddr(SSLUtilHandle, 'SSLeay_version', AVerboseLoading);
- _ErrErrorString := GetProcAddr(SSLUtilHandle, 'ERR_error_string_n', AVerboseLoading);
- _ErrGetError := GetProcAddr(SSLUtilHandle, 'ERR_get_error', AVerboseLoading);
- _ErrClearError := GetProcAddr(SSLUtilHandle, 'ERR_clear_error', AVerboseLoading);
- _ErrFreeStrings := GetProcAddr(SSLUtilHandle, 'ERR_free_strings', AVerboseLoading);
- _ErrRemoveState := GetProcAddr(SSLUtilHandle, 'ERR_remove_state', AVerboseLoading);
- _RandScreen := GetProcAddr(SSLUtilHandle, 'RAND_screen', AVerboseLoading);
- _BioNew := GetProcAddr(SSLUtilHandle, 'BIO_new', AVerboseLoading);
- _BioFreeAll := GetProcAddr(SSLUtilHandle, 'BIO_free_all', AVerboseLoading);
- _BioSMem := GetProcAddr(SSLUtilHandle, 'BIO_s_mem', AVerboseLoading);
- _BioCtrlPending := GetProcAddr(SSLUtilHandle, 'BIO_ctrl_pending', AVerboseLoading);
- _BioRead := GetProcAddr(SSLUtilHandle, 'BIO_read', AVerboseLoading);
- _BioWrite := GetProcAddr(SSLUtilHandle, 'BIO_write', AVerboseLoading);
- _d2iPKCS12bio := GetProcAddr(SSLUtilHandle, 'd2i_PKCS12_bio', AVerboseLoading);
- _PKCS12parse := GetProcAddr(SSLUtilHandle, 'PKCS12_parse', AVerboseLoading);
- _PKCS12free := GetProcAddr(SSLUtilHandle, 'PKCS12_free', AVerboseLoading);
- _Asn1UtctimeNew := GetProcAddr(SSLUtilHandle, 'ASN1_UTCTIME_new', AVerboseLoading);
- _Asn1UtctimeFree := GetProcAddr(SSLUtilHandle, 'ASN1_UTCTIME_free', AVerboseLoading);
- _i2dX509bio := GetProcAddr(SSLUtilHandle, 'i2d_X509_bio', AVerboseLoading);
- _i2dPrivateKeyBio := GetProcAddr(SSLUtilHandle, 'i2d_PrivateKey_bio', AVerboseLoading);
- _EVP_enc_null := GetProcAddr(SSLUtilHandle, 'EVP_enc_null', AVerboseLoading);;
- _EVP_rc2_cbc := GetProcAddr(SSLUtilHandle, 'EVP_rc2_cbc', AVerboseLoading);;
- _EVP_rc2_40_cbc := GetProcAddr(SSLUtilHandle, 'EVP_rc2_40_cbc', AVerboseLoading);;
- _EVP_rc2_64_cbc := GetProcAddr(SSLUtilHandle, 'EVP_rc2_64_cbc', AVerboseLoading);;
- _EVP_rc4 := GetProcAddr(SSLUtilHandle, 'EVP_rc4', AVerboseLoading);;
- _EVP_rc4_40 := GetProcAddr(SSLUtilHandle, 'EVP_rc4_40', AVerboseLoading);;
- _EVP_des_cbc := GetProcAddr(SSLUtilHandle, 'EVP_des_cbc', AVerboseLoading);;
- _EVP_des_ede3_cbc := GetProcAddr(SSLUtilHandle, 'EVP_des_ede3_cbc', AVerboseLoading);;
- _EVP_aes_128_cbc := GetProcAddr(SSLUtilHandle, 'EVP_aes_128_cbc', AVerboseLoading);;
- _EVP_aes_192_cbc := GetProcAddr(SSLUtilHandle, 'EVP_aes_192_cbc', AVerboseLoading);;
- _EVP_aes_256_cbc := GetProcAddr(SSLUtilHandle, 'EVP_aes_256_cbc', AVerboseLoading);;
- _EVP_aes_128_cfb8 := GetProcAddr(SSLUtilHandle, 'EVP_aes_128_cfb8', AVerboseLoading);;
- _EVP_aes_192_cfb8 := GetProcAddr(SSLUtilHandle, 'EVP_aes_192_cfb8', AVerboseLoading);;
- _EVP_aes_256_cfb8 := GetProcAddr(SSLUtilHandle, 'EVP_aes_256_cfb8', AVerboseLoading);;
- _EVP_camellia_128_cbc := GetProcAddr(SSLUtilHandle, 'EVP_camellia_128_cbc', AVerboseLoading);;
- _EVP_camellia_192_cbc := GetProcAddr(SSLUtilHandle, 'EVP_camellia_192_cbc', AVerboseLoading);;
- _EVP_camellia_256_cbc := GetProcAddr(SSLUtilHandle, 'EVP_camellia_256_cbc', AVerboseLoading);;
-
- // 3DES functions
- _DESsetoddparity := GetProcAddr(SSLUtilHandle, 'des_set_odd_parity', AVerboseLoading);
- _DESsetkeychecked := GetProcAddr(SSLUtilHandle, 'des_set_key_checked', AVerboseLoading);
- _DESsetkey := GetProcAddr(SSLUtilHandle, 'des_set_key', AVerboseLoading);
- _DESecbencrypt := GetProcAddr(SSLUtilHandle, 'des_ecb_encrypt', AVerboseLoading);
- //
- _CRYPTOnumlocks := GetProcAddr(SSLUtilHandle, 'CRYPTO_num_locks', AVerboseLoading);
- _CRYPTOsetlockingcallback := GetProcAddr(SSLUtilHandle, 'CRYPTO_set_locking_callback', AVerboseLoading);
-
- // RAND functions
- _RAND_set_rand_method := GetProcAddr(SSLUtilHandle, 'RAND_set_rand_method', AVerboseLoading);
- _RAND_get_rand_method := GetProcAddr(SSLUtilHandle, 'RAND_get_rand_method', AVerboseLoading);
- _RAND_SSLeay := GetProcAddr(SSLUtilHandle, 'RAND_SSLeay', AVerboseLoading);
- _RAND_cleanup := GetProcAddr(SSLUtilHandle, 'RAND_cleanup', AVerboseLoading);
- _RAND_bytes := GetProcAddr(SSLUtilHandle, 'RAND_bytes', AVerboseLoading);
- _RAND_pseudo_bytes := GetProcAddr(SSLUtilHandle, 'RAND_pseudo_bytes', AVerboseLoading);
- _RAND_seed := GetProcAddr(SSLUtilHandle, 'RAND_seed', AVerboseLoading);
- _RAND_add := GetProcAddr(SSLUtilHandle, 'RAND_add', AVerboseLoading);
- _RAND_load_file := GetProcAddr(SSLUtilHandle, 'RAND_load_file', AVerboseLoading);
- _RAND_write_file := GetProcAddr(SSLUtilHandle, 'RAND_write_file', AVerboseLoading);
- _RAND_file_name := GetProcAddr(SSLUtilHandle, 'RAND_file_name', AVerboseLoading);
- _RAND_status := GetProcAddr(SSLUtilHandle, 'RAND_status', AVerboseLoading);
- _RAND_query_egd_bytes := GetProcAddr(SSLUtilHandle, 'RAND_query_egd_bytes', AVerboseLoading); // 0.9.7+
- _RAND_egd := GetProcAddr(SSLUtilHandle, 'RAND_egd', AVerboseLoading);
- _RAND_egd_bytes := GetProcAddr(SSLUtilHandle, 'RAND_egd_bytes', AVerboseLoading);
- _ERR_load_RAND_strings := GetProcAddr(SSLUtilHandle, 'ERR_load_RAND_strings', AVerboseLoading);
- _RAND_poll := GetProcAddr(SSLUtilHandle, 'RAND_poll', AVerboseLoading);
-
- // RSA Functions
- _RSA_new := GetProcAddr(SSLUtilHandle, 'RSA_new', AVerboseLoading);
- _RSA_new_method := GetProcAddr(SSLUtilHandle, 'RSA_new_method', AVerboseLoading);
- _RSA_size := GetProcAddr(SSLUtilHandle, 'RSA_size', AVerboseLoading);
- _RsaGenerateKey := GetProcAddr(SSLUtilHandle, 'RSA_generate_key', AVerboseLoading);
- _RSA_generate_key_ex := GetProcAddr(SSLUtilHandle, 'RSA_generate_key_ex', AVerboseLoading);
- _RSA_check_key := GetProcAddr(SSLUtilHandle, 'RSA_check_key', AVerboseLoading);
- _RSA_public_encrypt := GetProcAddr(SSLUtilHandle, 'RSA_public_encrypt', AVerboseLoading);
- _RSA_private_encrypt := GetProcAddr(SSLUtilHandle, 'RSA_private_encrypt', AVerboseLoading);
- _RSA_public_decrypt := GetProcAddr(SSLUtilHandle, 'RSA_public_decrypt', AVerboseLoading);
- _RSA_private_decrypt := GetProcAddr(SSLUtilHandle, 'RSA_private_decrypt', AVerboseLoading);
- _RSA_free := GetProcAddr(SSLUtilHandle, 'RSA_free', AVerboseLoading);
- _RSA_flags := GetProcAddr(SSLUtilHandle, 'RSA_flags', AVerboseLoading);
- _RSA_set_default_method := GetProcAddr(SSLUtilHandle, 'RSA_set_default_method', AVerboseLoading);
- _RSA_get_default_method := GetProcAddr(SSLUtilHandle, 'RSA_get_default_method', AVerboseLoading);
- _RSA_get_method := GetProcAddr(SSLUtilHandle, 'RSA_get_method', AVerboseLoading);
- _RSA_set_method := GetProcAddr(SSLUtilHandle, 'RSA_set_method', AVerboseLoading);
-
- // X509 Functions
-
- _d2i_RSAPublicKey := GetProcAddr(SSLUtilHandle, 'd2i_RSAPublicKey', AVerboseLoading);
- _i2d_RSAPublicKey := GetProcAddr(SSLUtilHandle, 'i2d_RSAPublicKey', AVerboseLoading);
- _d2i_RSAPrivateKey := GetProcAddr(SSLUtilHandle, 'd2i_RSAPrivateKey', AVerboseLoading);
- _i2d_RSAPrivateKey := GetProcAddr(SSLUtilHandle, 'i2d_RSAPrivateKey', AVerboseLoading);
-
- // ERR Functions
- _ERR_error_string := GetProcAddr(SSLUtilHandle, 'ERR_error_string', AVerboseLoading);
-
- // EVP Functions
-
- _OpenSSL_add_all_algorithms := GetProcAddr(SSLUtilHandle, 'OpenSSL_add_all_algorithms', AVerboseLoading);
- _OpenSSL_add_all_ciphers := GetProcAddr(SSLUtilHandle, 'OpenSSL_add_all_ciphers', AVerboseLoading);
- _OpenSSL_add_all_digests := GetProcAddr(SSLUtilHandle, 'OpenSSL_add_all_digests', AVerboseLoading);
- //
- _EVP_DigestInit := GetProcAddr(SSLUtilHandle, 'EVP_DigestInit', AVerboseLoading);
- _EVP_DigestUpdate := GetProcAddr(SSLUtilHandle, 'EVP_DigestUpdate', AVerboseLoading);
- _EVP_DigestFinal := GetProcAddr(SSLUtilHandle, 'EVP_DigestFinal', AVerboseLoading);
-
- _EVP_SignFinal := GetProcAddr(SSLUtilHandle, 'EVP_SignFinal', AVerboseLoading);
- _EVP_PKEY_size := GetProcAddr(SSLUtilHandle,'EVP_PKEY_size', AVerboseLoading);
- _EVP_PKEY_free := GetProcAddr(SSLUtilHandle,'EVP_PKEY_free', AVerboseLoading);
- _EVP_VerifyFinal := GetProcAddr(SSLUtilHandle,'EVP_VerifyFinal', AverboseLoading);
- //
- _EVP_get_cipherbyname := GetProcAddr(SSLUtilHandle, 'EVP_get_cipherbyname', AVerboseLoading);
- _EVP_get_digestbyname := GetProcAddr(SSLUtilHandle, 'EVP_get_digestbyname', AVerboseLoading);
- //
- _EVP_CIPHER_CTX_init := GetProcAddr(SSLUtilHandle, 'EVP_CIPHER_CTX_init', AVerboseLoading);
- _EVP_CIPHER_CTX_cleanup := GetProcAddr(SSLUtilHandle, 'EVP_CIPHER_CTX_cleanup', AVerboseLoading);
- _EVP_CIPHER_CTX_set_key_length := GetProcAddr(SSLUtilHandle, 'EVP_CIPHER_CTX_set_key_length', AVerboseLoading);
- _EVP_CIPHER_CTX_ctrl := GetProcAddr(SSLUtilHandle, 'EVP_CIPHER_CTX_ctrl', AVerboseLoading);
- //
- _EVP_EncryptInit := GetProcAddr(SSLUtilHandle, 'EVP_EncryptInit', AVerboseLoading);
- _EVP_EncryptUpdate := GetProcAddr(SSLUtilHandle, 'EVP_EncryptUpdate', AVerboseLoading);
- _EVP_EncryptFinal := GetProcAddr(SSLUtilHandle, 'EVP_EncryptFinal', AVerboseLoading);
- //
- _EVP_DecryptInit := GetProcAddr(SSLUtilHandle, 'EVP_DecryptInit', AVerboseLoading);
- _EVP_DecryptUpdate := GetProcAddr(SSLUtilHandle, 'EVP_DecryptUpdate', AVerboseLoading);
- _EVP_DecryptFinal := GetProcAddr(SSLUtilHandle, 'EVP_DecryptFinal', AVerboseLoading);
-
- // PEM
-
- _PEM_read_bio_PrivateKey := GetProcAddr(SSLUtilHandle, 'PEM_read_bio_PrivateKey', AVerboseLoading);
- _PEM_read_bio_PUBKEY := GetProcAddr(SSLUtilHandle, 'PEM_read_bio_PUBKEY', AVerboseLoading);
- _PEM_write_bio_PrivateKey := GetProcAddr(SSLUtilHandle, 'PEM_write_bio_PrivateKey', AVerboseLoading);
- _PEM_write_bio_PUBKEY := GetProcAddr(SSLUtilHandle, 'PEM_write_bio_PUBKEY', AVerboseLoading);
-
- // BIO
-
- _BIO_ctrl := GetProcAddr(SSLUtilHandle, 'BIO_ctrl', AVerboseLoading);
-
- _BIO_s_file := GetProcAddr(SSLUtilHandle, 'BIO_s_file', AVerboseLoading);
- _BIO_new_file := GetProcAddr(SSLUtilHandle, 'BIO_new_file', AVerboseLoading);
- _BIO_new_mem_buf := GetProcAddr(SSLUtilHandle, 'BIO_new_mem_buf', AVerboseLoading);
-
- // Crypto Functions
-
- _SSLeay_version := GetProcAddr(SSLUtilHandle, 'SSLeay_version', AVerboseLoading);
-
- //init library
- if assigned(_SslLibraryInit) then
- _SslLibraryInit;
- if assigned(_SslLoadErrorStrings) then
- _SslLoadErrorStrings;
- if assigned(_OPENSSL_add_all_algorithms) then
- _OPENSSL_add_all_algorithms;
- if assigned(_RandScreen) then
- _RandScreen;
-
- Result := True;
- libealoaded := True;
- end
- else
- begin
- if SSLUtilHandle <> 0 then
- begin
- FreeLibrary(SSLUtilHandle);
- end;
- Result := False;
- end;
- end
- else
- //loaded before...
- Result := true;
+
+function IsSSLloaded: Boolean;
+
+begin
+ Result := SSLLoaded;
+end;
+
+Procedure LoadSSLEntryPoints;
+
+begin
+ _SslGetError := GetProcAddr(SSLLibHandle, 'SSL_get_error');
+ _SslLibraryInit := GetProcAddr(SSLLibHandle, 'SSL_library_init');
+ _SslLoadErrorStrings := GetProcAddr(SSLLibHandle, 'SSL_load_error_strings');
+ _SslCtxSetCipherList := GetProcAddr(SSLLibHandle, 'SSL_CTX_set_cipher_list');
+ _SslCtxNew := GetProcAddr(SSLLibHandle, 'SSL_CTX_new');
+ _SslCtxFree := GetProcAddr(SSLLibHandle, 'SSL_CTX_free');
+ _SslSetFd := GetProcAddr(SSLLibHandle, 'SSL_set_fd');
+ _SslCtrl := GetProcAddr(SSLLibHandle, 'SSL_ctrl');
+ _SslCTXCtrl := GetProcAddr(SSLLibHandle, 'SSL_CTX_ctrl');
+ _SslMethodV2 := GetProcAddr(SSLLibHandle, 'SSLv2_method');
+ _SslMethodV3 := GetProcAddr(SSLLibHandle, 'SSLv3_method');
+ _SslMethodTLSV1 := GetProcAddr(SSLLibHandle, 'TLSv1_method');
+ _SslMethodV23 := GetProcAddr(SSLLibHandle, 'SSLv23_method');
+ _SslCtxUsePrivateKey := GetProcAddr(SSLLibHandle, 'SSL_CTX_use_PrivateKey');
+ _SslCtxUsePrivateKeyASN1 := GetProcAddr(SSLLibHandle, 'SSL_CTX_use_PrivateKey_ASN1');
+ //use SSL_CTX_use_RSAPrivateKey_file instead SSL_CTX_use_PrivateKey_file,
+ //because SSL_CTX_use_PrivateKey_file not support DER format. :-O
+ _SslCtxUsePrivateKeyFile := GetProcAddr(SSLLibHandle, 'SSL_CTX_use_RSAPrivateKey_file');
+ _SslCtxUseCertificate := GetProcAddr(SSLLibHandle, 'SSL_CTX_use_certificate');
+ _SslCtxUseCertificateASN1 := GetProcAddr(SSLLibHandle, 'SSL_CTX_use_certificate_ASN1');
+ _SslCtxUseCertificateFile := GetProcAddr(SSLLibHandle, 'SSL_CTX_use_certificate_file');
+ _SslCtxUseCertificateChainFile := GetProcAddr(SSLLibHandle, 'SSL_CTX_use_certificate_chain_file');
+ _SslCtxCheckPrivateKeyFile := GetProcAddr(SSLLibHandle, 'SSL_CTX_check_private_key');
+ _SslCtxSetDefaultPasswdCb := GetProcAddr(SSLLibHandle, 'SSL_CTX_set_default_passwd_cb');
+ _SslCtxSetDefaultPasswdCbUserdata := GetProcAddr(SSLLibHandle, 'SSL_CTX_set_default_passwd_cb_userdata');
+ _SslCtxLoadVerifyLocations := GetProcAddr(SSLLibHandle, 'SSL_CTX_load_verify_locations');
+ _SslNew := GetProcAddr(SSLLibHandle, 'SSL_new');
+ _SslFree := GetProcAddr(SSLLibHandle, 'SSL_free');
+ _SslAccept := GetProcAddr(SSLLibHandle, 'SSL_accept');
+ _SslConnect := GetProcAddr(SSLLibHandle, 'SSL_connect');
+ _SslShutdown := GetProcAddr(SSLLibHandle, 'SSL_shutdown');
+ _SslRead := GetProcAddr(SSLLibHandle, 'SSL_read');
+ _SslPeek := GetProcAddr(SSLLibHandle, 'SSL_peek');
+ _SslWrite := GetProcAddr(SSLLibHandle, 'SSL_write');
+ _SslPending := GetProcAddr(SSLLibHandle, 'SSL_pending');
+ _SslGetPeerCertificate := GetProcAddr(SSLLibHandle, 'SSL_get_peer_certificate');
+ _SslGetVersion := GetProcAddr(SSLLibHandle, 'SSL_get_version');
+ _SslCtxSetVerify := GetProcAddr(SSLLibHandle, 'SSL_CTX_set_verify');
+ _SslGetCurrentCipher := GetProcAddr(SSLLibHandle, 'SSL_get_current_cipher');
+ _SslCipherGetName := GetProcAddr(SSLLibHandle, 'SSL_CIPHER_get_name');
+ _SslCipherGetBits := GetProcAddr(SSLLibHandle, 'SSL_CIPHER_get_bits');
+ _SslGetVerifyResult := GetProcAddr(SSLLibHandle, 'SSL_get_verify_result');
+end;
+
+Procedure LoadUtilEntryPoints;
+
+begin
+ _ERR_load_crypto_strings := GetProcAddr(SSLUtilHandle, 'ERR_load_crypto_strings');
+ _X509New := GetProcAddr(SSLUtilHandle, 'X509_new');
+ _X509Free := GetProcAddr(SSLUtilHandle, 'X509_free');
+ _X509NameOneline := GetProcAddr(SSLUtilHandle, 'X509_NAME_oneline');
+ _X509GetSubjectName := GetProcAddr(SSLUtilHandle, 'X509_get_subject_name');
+ _X509GetIssuerName := GetProcAddr(SSLUtilHandle, 'X509_get_issuer_name');
+ _X509NameHash := GetProcAddr(SSLUtilHandle, 'X509_NAME_hash');
+ _X509Digest := GetProcAddr(SSLUtilHandle, 'X509_digest');
+ _X509print := GetProcAddr(SSLUtilHandle, 'X509_print');
+ _X509SetVersion := GetProcAddr(SSLUtilHandle, 'X509_set_version');
+ _X509SetPubkey := GetProcAddr(SSLUtilHandle, 'X509_set_pubkey');
+ _X509SetIssuerName := GetProcAddr(SSLUtilHandle, 'X509_set_issuer_name');
+ _X509NameAddEntryByTxt := GetProcAddr(SSLUtilHandle, 'X509_NAME_add_entry_by_txt');
+ _X509Sign := GetProcAddr(SSLUtilHandle, 'X509_sign');
+ _X509GmtimeAdj := GetProcAddr(SSLUtilHandle, 'X509_gmtime_adj');
+ _X509SetNotBefore := GetProcAddr(SSLUtilHandle, 'X509_set_notBefore');
+ _X509SetNotAfter := GetProcAddr(SSLUtilHandle, 'X509_set_notAfter');
+ _X509GetSerialNumber := GetProcAddr(SSLUtilHandle, 'X509_get_serialNumber');
+ _EvpPkeyNew := GetProcAddr(SSLUtilHandle, 'EVP_PKEY_new');
+ _EvpPkeyFree := GetProcAddr(SSLUtilHandle, 'EVP_PKEY_free');
+ _EvpPkeyAssign := GetProcAddr(SSLUtilHandle, 'EVP_PKEY_assign');
+ _EVPCleanup := GetProcAddr(SSLUtilHandle, 'EVP_cleanup');
+ _EvpGetDigestByName := GetProcAddr(SSLUtilHandle, 'EVP_get_digestbyname');
+ _SSLeayversion := GetProcAddr(SSLUtilHandle, 'SSLeay_version');
+ _ErrErrorString := GetProcAddr(SSLUtilHandle, 'ERR_error_string_n');
+ _ErrGetError := GetProcAddr(SSLUtilHandle, 'ERR_get_error');
+ _ErrClearError := GetProcAddr(SSLUtilHandle, 'ERR_clear_error');
+ _ErrFreeStrings := GetProcAddr(SSLUtilHandle, 'ERR_free_strings');
+ _ErrRemoveState := GetProcAddr(SSLUtilHandle, 'ERR_remove_state');
+ _RandScreen := GetProcAddr(SSLUtilHandle, 'RAND_screen');
+ _BioNew := GetProcAddr(SSLUtilHandle, 'BIO_new');
+ _BioFreeAll := GetProcAddr(SSLUtilHandle, 'BIO_free_all');
+ _BioSMem := GetProcAddr(SSLUtilHandle, 'BIO_s_mem');
+ _BioCtrlPending := GetProcAddr(SSLUtilHandle, 'BIO_ctrl_pending');
+ _BioRead := GetProcAddr(SSLUtilHandle, 'BIO_read');
+ _BioWrite := GetProcAddr(SSLUtilHandle, 'BIO_write');
+ _d2iPKCS12bio := GetProcAddr(SSLUtilHandle, 'd2i_PKCS12_bio');
+ _PKCS12parse := GetProcAddr(SSLUtilHandle, 'PKCS12_parse');
+ _PKCS12free := GetProcAddr(SSLUtilHandle, 'PKCS12_free');
+ _Asn1UtctimeNew := GetProcAddr(SSLUtilHandle, 'ASN1_UTCTIME_new');
+ _Asn1UtctimeFree := GetProcAddr(SSLUtilHandle, 'ASN1_UTCTIME_free');
+ _Asn1IntegerSet := GetProcAddr(SSLUtilHandle, 'ASN1_INTEGER_set');
+ _Asn1IntegerGet := GetProcAddr(SSLUtilHandle, 'ASN1_INTEGER_get');
+ _i2dX509bio := GetProcAddr(SSLUtilHandle, 'i2d_X509_bio');
+ _i2dPrivateKeyBio := GetProcAddr(SSLUtilHandle, 'i2d_PrivateKey_bio');
+ _EVP_enc_null := GetProcAddr(SSLUtilHandle, 'EVP_enc_null');
+ _EVP_rc2_cbc := GetProcAddr(SSLUtilHandle, 'EVP_rc2_cbc');
+ _EVP_rc2_40_cbc := GetProcAddr(SSLUtilHandle, 'EVP_rc2_40_cbc');
+ _EVP_rc2_64_cbc := GetProcAddr(SSLUtilHandle, 'EVP_rc2_64_cbc');
+ _EVP_rc4 := GetProcAddr(SSLUtilHandle, 'EVP_rc4');
+ _EVP_rc4_40 := GetProcAddr(SSLUtilHandle, 'EVP_rc4_40');
+ _EVP_des_cbc := GetProcAddr(SSLUtilHandle, 'EVP_des_cbc');
+ _EVP_des_ede3_cbc := GetProcAddr(SSLUtilHandle, 'EVP_des_ede3_cbc');
+ _EVP_aes_128_cbc := GetProcAddr(SSLUtilHandle, 'EVP_aes_128_cbc');
+ _EVP_aes_192_cbc := GetProcAddr(SSLUtilHandle, 'EVP_aes_192_cbc');
+ _EVP_aes_256_cbc := GetProcAddr(SSLUtilHandle, 'EVP_aes_256_cbc');
+ _EVP_aes_128_cfb8 := GetProcAddr(SSLUtilHandle, 'EVP_aes_128_cfb8');
+ _EVP_aes_192_cfb8 := GetProcAddr(SSLUtilHandle, 'EVP_aes_192_cfb8');
+ _EVP_aes_256_cfb8 := GetProcAddr(SSLUtilHandle, 'EVP_aes_256_cfb8');
+ _EVP_camellia_128_cbc := GetProcAddr(SSLUtilHandle, 'EVP_camellia_128_cbc');
+ _EVP_camellia_192_cbc := GetProcAddr(SSLUtilHandle, 'EVP_camellia_192_cbc');
+ _EVP_camellia_256_cbc := GetProcAddr(SSLUtilHandle, 'EVP_camellia_256_cbc');
+ // 3DES functions
+ _DESsetoddparity := GetProcAddr(SSLUtilHandle, 'des_set_odd_parity');
+ _DESsetkeychecked := GetProcAddr(SSLUtilHandle, 'des_set_key_checked');
+ _DESsetkey := GetProcAddr(SSLUtilHandle, 'des_set_key');
+ _DESecbencrypt := GetProcAddr(SSLUtilHandle, 'des_ecb_encrypt');
+ //
+ _CRYPTOnumlocks := GetProcAddr(SSLUtilHandle, 'CRYPTO_num_locks');
+ _CRYPTOsetlockingcallback := GetProcAddr(SSLUtilHandle, 'CRYPTO_set_locking_callback');
+ // RAND functions
+ _RAND_set_rand_method := GetProcAddr(SSLUtilHandle, 'RAND_set_rand_method');
+ _RAND_get_rand_method := GetProcAddr(SSLUtilHandle, 'RAND_get_rand_method');
+ _RAND_SSLeay := GetProcAddr(SSLUtilHandle, 'RAND_SSLeay');
+ _RAND_cleanup := GetProcAddr(SSLUtilHandle, 'RAND_cleanup');
+ _RAND_bytes := GetProcAddr(SSLUtilHandle, 'RAND_bytes');
+ _RAND_pseudo_bytes := GetProcAddr(SSLUtilHandle, 'RAND_pseudo_bytes');
+ _RAND_seed := GetProcAddr(SSLUtilHandle, 'RAND_seed');
+ _RAND_add := GetProcAddr(SSLUtilHandle, 'RAND_add');
+ _RAND_load_file := GetProcAddr(SSLUtilHandle, 'RAND_load_file');
+ _RAND_write_file := GetProcAddr(SSLUtilHandle, 'RAND_write_file');
+ _RAND_file_name := GetProcAddr(SSLUtilHandle, 'RAND_file_name');
+ _RAND_status := GetProcAddr(SSLUtilHandle, 'RAND_status');
+ _RAND_query_egd_bytes := GetProcAddr(SSLUtilHandle, 'RAND_query_egd_bytes'); // 0.9.7+
+ _RAND_egd := GetProcAddr(SSLUtilHandle, 'RAND_egd');
+ _RAND_egd_bytes := GetProcAddr(SSLUtilHandle, 'RAND_egd_bytes');
+ _ERR_load_RAND_strings := GetProcAddr(SSLUtilHandle, 'ERR_load_RAND_strings');
+ _RAND_poll := GetProcAddr(SSLUtilHandle, 'RAND_poll');
+ // RSA Functions
+ _RSA_new := GetProcAddr(SSLUtilHandle, 'RSA_new');
+ _RSA_new_method := GetProcAddr(SSLUtilHandle, 'RSA_new_method');
+ _RSA_size := GetProcAddr(SSLUtilHandle, 'RSA_size');
+ _RsaGenerateKey := GetProcAddr(SSLUtilHandle, 'RSA_generate_key');
+ _RSA_generate_key_ex := GetProcAddr(SSLUtilHandle, 'RSA_generate_key_ex');
+ _RSA_check_key := GetProcAddr(SSLUtilHandle, 'RSA_check_key');
+ _RSA_public_encrypt := GetProcAddr(SSLUtilHandle, 'RSA_public_encrypt');
+ _RSA_private_encrypt := GetProcAddr(SSLUtilHandle, 'RSA_private_encrypt');
+ _RSA_public_decrypt := GetProcAddr(SSLUtilHandle, 'RSA_public_decrypt');
+ _RSA_private_decrypt := GetProcAddr(SSLUtilHandle, 'RSA_private_decrypt');
+ _RSA_free := GetProcAddr(SSLUtilHandle, 'RSA_free');
+ _RSA_flags := GetProcAddr(SSLUtilHandle, 'RSA_flags');
+ _RSA_set_default_method := GetProcAddr(SSLUtilHandle, 'RSA_set_default_method');
+ _RSA_get_default_method := GetProcAddr(SSLUtilHandle, 'RSA_get_default_method');
+ _RSA_get_method := GetProcAddr(SSLUtilHandle, 'RSA_get_method');
+ _RSA_set_method := GetProcAddr(SSLUtilHandle, 'RSA_set_method');
+ // X509 Functions
+ _d2i_RSAPublicKey := GetProcAddr(SSLUtilHandle, 'd2i_RSAPublicKey');
+ _i2d_RSAPublicKey := GetProcAddr(SSLUtilHandle, 'i2d_RSAPublicKey');
+ _d2i_RSAPrivateKey := GetProcAddr(SSLUtilHandle, 'd2i_RSAPrivateKey');
+ _i2d_RSAPrivateKey := GetProcAddr(SSLUtilHandle, 'i2d_RSAPrivateKey');
+ // ERR Functions
+ _ERR_error_string := GetProcAddr(SSLUtilHandle, 'ERR_error_string');
+ // EVP Functions
+ _OpenSSL_add_all_algorithms := GetProcAddr(SSLUtilHandle, 'OpenSSL_add_all_algorithms');
+ _OpenSSL_add_all_ciphers := GetProcAddr(SSLUtilHandle, 'OpenSSL_add_all_ciphers');
+ _OpenSSL_add_all_digests := GetProcAddr(SSLUtilHandle, 'OpenSSL_add_all_digests');
+ _EVP_DigestInit := GetProcAddr(SSLUtilHandle, 'EVP_DigestInit');
+ _EVP_DigestUpdate := GetProcAddr(SSLUtilHandle, 'EVP_DigestUpdate');
+ _EVP_DigestFinal := GetProcAddr(SSLUtilHandle, 'EVP_DigestFinal');
+ _EVP_SignFinal := GetProcAddr(SSLUtilHandle, 'EVP_SignFinal');
+ _EVP_PKEY_size := GetProcAddr(SSLUtilHandle,'EVP_PKEY_size');
+ _EVP_PKEY_free := GetProcAddr(SSLUtilHandle,'EVP_PKEY_free');
+ _EVP_VerifyFinal := GetProcAddr(SSLUtilHandle,'EVP_VerifyFinal');
+ _EVP_get_cipherbyname := GetProcAddr(SSLUtilHandle, 'EVP_get_cipherbyname');
+ _EVP_get_digestbyname := GetProcAddr(SSLUtilHandle, 'EVP_get_digestbyname');
+ _EVP_CIPHER_CTX_init := GetProcAddr(SSLUtilHandle, 'EVP_CIPHER_CTX_init');
+ _EVP_CIPHER_CTX_cleanup := GetProcAddr(SSLUtilHandle, 'EVP_CIPHER_CTX_cleanup');
+ _EVP_CIPHER_CTX_set_key_length := GetProcAddr(SSLUtilHandle, 'EVP_CIPHER_CTX_set_key_length');
+ _EVP_CIPHER_CTX_ctrl := GetProcAddr(SSLUtilHandle, 'EVP_CIPHER_CTX_ctrl');
+ _EVP_EncryptInit := GetProcAddr(SSLUtilHandle, 'EVP_EncryptInit');
+ _EVP_EncryptUpdate := GetProcAddr(SSLUtilHandle, 'EVP_EncryptUpdate');
+ _EVP_EncryptFinal := GetProcAddr(SSLUtilHandle, 'EVP_EncryptFinal');
+ _EVP_DecryptInit := GetProcAddr(SSLUtilHandle, 'EVP_DecryptInit');
+ _EVP_DecryptUpdate := GetProcAddr(SSLUtilHandle, 'EVP_DecryptUpdate');
+ _EVP_DecryptFinal := GetProcAddr(SSLUtilHandle, 'EVP_DecryptFinal');
+ // PEM
+ _PEM_read_bio_PrivateKey := GetProcAddr(SSLUtilHandle, 'PEM_read_bio_PrivateKey');
+ _PEM_read_bio_PUBKEY := GetProcAddr(SSLUtilHandle, 'PEM_read_bio_PUBKEY');
+ _PEM_write_bio_PrivateKey := GetProcAddr(SSLUtilHandle, 'PEM_write_bio_PrivateKey');
+ _PEM_write_bio_PUBKEY := GetProcAddr(SSLUtilHandle, 'PEM_write_bio_PUBKEY');
+ // BIO
+ _BIO_ctrl := GetProcAddr(SSLUtilHandle, 'BIO_ctrl');
+ _BIO_s_file := GetProcAddr(SSLUtilHandle, 'BIO_s_file');
+ _BIO_new_file := GetProcAddr(SSLUtilHandle, 'BIO_new_file');
+ _BIO_new_mem_buf := GetProcAddr(SSLUtilHandle, 'BIO_new_mem_buf');
+ // Crypto Functions
+ _SSLeay_version := GetProcAddr(SSLUtilHandle, 'SSLeay_version');
end;
-function DestroySSLEAInterface: Boolean;
+Function LoadUtilLibrary : Boolean;
+
begin
- if IsSSLLoaded then
+ Result:=(SSLUtilHandle<>0);
+ if not Result then
begin
- //deinit library
- EVPCleanup;
- ErrRemoveState(0);
+ SSLUtilHandle := LoadLib(DLLUtilName);
+ Result:=(SSLUtilHandle<>0);
end;
- SSLloaded := false;
- if SSLLibHandle <> 0 then
+end;
+
+
+
+Procedure ClearSSLEntryPoints;
+
+begin
+ _SslGetError := nil;
+ _SslLibraryInit := nil;
+ _SslLoadErrorStrings := nil;
+ _SslCtxSetCipherList := nil;
+ _SslCtxNew := nil;
+ _SslCtxFree := nil;
+ _SslSetFd := nil;
+ _SslCtrl := nil;
+ _SslCTXCtrl := nil;
+ _SslMethodV2 := nil;
+ _SslMethodV3 := nil;
+ _SslMethodTLSV1 := nil;
+ _SslMethodV23 := nil;
+ _SslCtxUsePrivateKey := nil;
+ _SslCtxUsePrivateKeyASN1 := nil;
+ _SslCtxUsePrivateKeyFile := nil;
+ _SslCtxUseCertificate := nil;
+ _SslCtxUseCertificateASN1 := nil;
+ _SslCtxUseCertificateFile := nil;
+ _SslCtxUseCertificateChainFile := nil;
+ _SslCtxCheckPrivateKeyFile := nil;
+ _SslCtxSetDefaultPasswdCb := nil;
+ _SslCtxSetDefaultPasswdCbUserdata := nil;
+ _SslCtxLoadVerifyLocations := nil;
+ _SslNew := nil;
+ _SslFree := nil;
+ _SslAccept := nil;
+ _SslConnect := nil;
+ _SslShutdown := nil;
+ _SslRead := nil;
+ _SslPeek := nil;
+ _SslWrite := nil;
+ _SslPending := nil;
+ _SslGetPeerCertificate := nil;
+ _SslGetVersion := nil;
+ _SslCtxSetVerify := nil;
+ _SslGetCurrentCipher := nil;
+ _SslCipherGetName := nil;
+ _SslCipherGetBits := nil;
+ _SslGetVerifyResult := nil;
+end;
+
+Procedure UnloadSSLLib;
+
+begin
+ if (SSLLibHandle<>0) then
begin
- FreeLibrary(SSLLibHandle);
- SSLLibHandle := 0;
+ FreeLibrary(SSLLibHandle);
+ SSLLibHandle:=0;
end;
+end;
+
+Procedure UnloadUtilLib;
+
+begin
+ if (SSLUtilHandle<>0) then
+ begin
+ FreeLibrary(SSLUtilHandle);
+ SSLUtilHandle := 0;
+ end;
+end;
+
+Procedure ClearUtilEntryPoints;
+
+begin
+ _SSLeayversion := nil;
+ _ERR_load_crypto_strings := nil;
+ _X509New := nil;
+ _X509Free := nil;
+ _X509NameOneline := nil;
+ _X509GetSubjectName := nil;
+ _X509GetIssuerName := nil;
+ _X509NameHash := nil;
+ _X509Digest := nil;
+ _X509print := nil;
+ _X509SetVersion := nil;
+ _X509SetPubkey := nil;
+ _X509SetIssuerName := nil;
+ _X509NameAddEntryByTxt := nil;
+ _X509Sign := nil;
+ _X509GmtimeAdj := nil;
+ _X509SetNotBefore := nil;
+ _X509SetNotAfter := nil;
+ _X509GetSerialNumber := nil;
+ _EvpPkeyNew := nil;
+ _EvpPkeyFree := nil;
+ _EvpPkeyAssign := nil;
+ _EVPCleanup := nil;
+ _EvpGetDigestByName := nil;
+ _ErrErrorString := nil;
+ _ErrGetError := nil;
+ _ErrClearError := nil;
+ _ErrFreeStrings := nil;
+ _ErrRemoveState := nil;
+ _RandScreen := nil;
+ _BioNew := nil;
+ _BioFreeAll := nil;
+ _BioSMem := nil;
+ _BioCtrlPending := nil;
+ _BioRead := nil;
+ _BioWrite := nil;
+ _d2iPKCS12bio := nil;
+ _PKCS12parse := nil;
+ _PKCS12free := nil;
+ _Asn1UtctimeNew := nil;
+ _Asn1UtctimeFree := nil;
+ _Asn1IntegerSet:= nil;
+ _Asn1IntegerGet:= nil;
+ _i2dX509bio := nil;
+ _i2dPrivateKeyBio := nil;
+
+ // 3DES functions
+ _DESsetoddparity := nil;
+ _DESsetkeychecked := nil;
+ _DESecbencrypt := nil;
+ //
+ _CRYPTOnumlocks := nil;
+ _CRYPTOsetlockingcallback := nil;
+
+ // RAND functions
+ _RAND_set_rand_method := nil;
+ _RAND_get_rand_method := nil;
+ _RAND_SSLeay := nil;
+ _RAND_cleanup := nil;
+ _RAND_bytes := nil;
+ _RAND_pseudo_bytes := nil;
+ _RAND_seed := nil;
+ _RAND_add := nil;
+ _RAND_load_file := nil;
+ _RAND_write_file := nil;
+ _RAND_file_name := nil;
+ _RAND_status := nil;
+ _RAND_query_egd_bytes := nil;
+ _RAND_egd := nil;
+ _RAND_egd_bytes := nil;
+ _ERR_load_RAND_strings := nil;
+ _RAND_poll := nil;
+
+ // RSA Functions
+ _RSA_new := nil;
+ _RSA_new_method := nil;
+ _RSA_size := nil;
+ _RsaGenerateKey := nil;
+ _RSA_generate_key_ex := nil;
+ _RSA_check_key := nil;
+ _RSA_public_encrypt := nil;
+ _RSA_private_encrypt := nil;
+ _RSA_public_decrypt := nil;
+ _RSA_private_decrypt := nil;
+ _RSA_free := nil;
+ _RSA_flags := nil;
+ _RSA_set_default_method := nil;
+ _RSA_get_default_method := nil;
+ _RSA_get_method := nil;
+ _RSA_set_method := nil;
+
+ // X509 Functions
+
+ _d2i_RSAPublicKey := nil;
+ _i2d_RSAPublicKey := nil;
+ _d2i_RSAPrivateKey := nil;
+ _i2d_RSAPrivateKey := nil;
+
+ // ERR Functions
+ _ERR_error_string := nil;
+
+ // EVP Functions
+
+ _OpenSSL_add_all_algorithms := nil;
+ _OpenSSL_add_all_ciphers := nil;
+ _OpenSSL_add_all_digests := nil;
+ //
+ _EVP_DigestInit := nil;
+ _EVP_DigestUpdate := nil;
+ _EVP_DigestFinal := nil;
+
+ _EVP_SignFinal := nil;
+ _EVP_PKEY_size := nil;
+ _EVP_PKEY_free := nil;
+ _EVP_VerifyFinal := nil;
+ //
+ _EVP_get_cipherbyname := nil;
+ _EVP_get_digestbyname := nil;
+ //
+ _EVP_CIPHER_CTX_init := nil;
+ _EVP_CIPHER_CTX_cleanup := nil;
+ _EVP_CIPHER_CTX_set_key_length := nil;
+ _EVP_CIPHER_CTX_ctrl := nil;
+ //
+ _EVP_EncryptInit := nil;
+ _EVP_EncryptUpdate := nil;
+ _EVP_EncryptFinal := nil;
+ //
+ _EVP_DecryptInit := nil;
+ _EVP_DecryptUpdate := nil;
+ _EVP_DecryptFinal := nil;
- _SslGetError := nil;
- _SslLibraryInit := nil;
- _SslLoadErrorStrings := nil;
- _SslCtxSetCipherList := nil;
- _SslCtxNew := nil;
- _SslCtxFree := nil;
- _SslSetFd := nil;
- _SslCtrl := nil;
- _SslCTXCtrl := nil;
- _SslMethodV2 := nil;
- _SslMethodV3 := nil;
- _SslMethodTLSV1 := nil;
- _SslMethodV23 := nil;
- _SslCtxUsePrivateKey := nil;
- _SslCtxUsePrivateKeyASN1 := nil;
- _SslCtxUsePrivateKeyFile := nil;
- _SslCtxUseCertificate := nil;
- _SslCtxUseCertificateASN1 := nil;
- _SslCtxUseCertificateFile := nil;
- _SslCtxUseCertificateChainFile := nil;
- _SslCtxCheckPrivateKeyFile := nil;
- _SslCtxSetDefaultPasswdCb := nil;
- _SslCtxSetDefaultPasswdCbUserdata := nil;
- _SslCtxLoadVerifyLocations := nil;
- _SslNew := nil;
- _SslFree := nil;
- _SslAccept := nil;
- _SslConnect := nil;
- _SslShutdown := nil;
- _SslRead := nil;
- _SslPeek := nil;
- _SslWrite := nil;
- _SslPending := nil;
- _SslGetPeerCertificate := nil;
- _SslGetVersion := nil;
- _SslCtxSetVerify := nil;
- _SslGetCurrentCipher := nil;
- _SslCipherGetName := nil;
- _SslCipherGetBits := nil;
- _SslGetVerifyResult := nil;
-
-
- Result := True;
-end;
-
-
-function DestroylibeaInterface: Boolean;
-begin
- if IslibeaLoaded then
- begin
- //deinit library
- EVPCleanup;
- ErrRemoveState(0);
- end;
- libealoaded := false;
- if SSLUtilHandle <> 0 then
- begin
- FreeLibrary(SSLUtilHandle);
- SSLUtilHandle := 0;
- end;
-
- _SSLeayversion := nil;
- _ERR_load_crypto_strings := nil;
- _X509New := nil;
- _X509Free := nil;
- _X509NameOneline := nil;
- _X509GetSubjectName := nil;
- _X509GetIssuerName := nil;
- _X509NameHash := nil;
- _X509Digest := nil;
- _X509print := nil;
- _X509SetVersion := nil;
- _X509SetPubkey := nil;
- _X509SetIssuerName := nil;
- _X509NameAddEntryByTxt := nil;
- _X509Sign := nil;
- _X509GmtimeAdj := nil;
- _X509SetNotBefore := nil;
- _X509SetNotAfter := nil;
- _X509GetSerialNumber := nil;
- _EvpPkeyNew := nil;
- _EvpPkeyFree := nil;
- _EvpPkeyAssign := nil;
- _EVPCleanup := nil;
- _EvpGetDigestByName := nil;
- _ErrErrorString := nil;
- _ErrGetError := nil;
- _ErrClearError := nil;
- _ErrFreeStrings := nil;
- _ErrRemoveState := nil;
- _RandScreen := nil;
- _BioNew := nil;
- _BioFreeAll := nil;
- _BioSMem := nil;
- _BioCtrlPending := nil;
- _BioRead := nil;
- _BioWrite := nil;
- _d2iPKCS12bio := nil;
- _PKCS12parse := nil;
- _PKCS12free := nil;
- _Asn1UtctimeNew := nil;
- _Asn1UtctimeFree := nil;
- _i2dX509bio := nil;
- _i2dPrivateKeyBio := nil;
-
- // 3DES functions
- _DESsetoddparity := nil;
- _DESsetkeychecked := nil;
- _DESecbencrypt := nil;
- //
- _CRYPTOnumlocks := nil;
- _CRYPTOsetlockingcallback := nil;
-
- // RAND functions
- _RAND_set_rand_method := nil;
- _RAND_get_rand_method := nil;
- _RAND_SSLeay := nil;
- _RAND_cleanup := nil;
- _RAND_bytes := nil;
- _RAND_pseudo_bytes := nil;
- _RAND_seed := nil;
- _RAND_add := nil;
- _RAND_load_file := nil;
- _RAND_write_file := nil;
- _RAND_file_name := nil;
- _RAND_status := nil;
- _RAND_query_egd_bytes := nil;
- _RAND_egd := nil;
- _RAND_egd_bytes := nil;
- _ERR_load_RAND_strings := nil;
- _RAND_poll := nil;
-
- // RSA Functions
- _RSA_new := nil;
- _RSA_new_method := nil;
- _RSA_size := nil;
- _RsaGenerateKey := nil;
- _RSA_generate_key_ex := nil;
- _RSA_check_key := nil;
- _RSA_public_encrypt := nil;
- _RSA_private_encrypt := nil;
- _RSA_public_decrypt := nil;
- _RSA_private_decrypt := nil;
- _RSA_free := nil;
- _RSA_flags := nil;
- _RSA_set_default_method := nil;
- _RSA_get_default_method := nil;
- _RSA_get_method := nil;
- _RSA_set_method := nil;
-
- // X509 Functions
-
- _d2i_RSAPublicKey := nil;
- _i2d_RSAPublicKey := nil;
- _d2i_RSAPrivateKey := nil;
- _i2d_RSAPrivateKey := nil;
-
- // ERR Functions
- _ERR_error_string := nil;
-
- // EVP Functions
-
- _OpenSSL_add_all_algorithms := nil;
- _OpenSSL_add_all_ciphers := nil;
- _OpenSSL_add_all_digests := nil;
- //
- _EVP_DigestInit := nil;
- _EVP_DigestUpdate := nil;
- _EVP_DigestFinal := nil;
-
- _EVP_SignFinal := nil;
- _EVP_PKEY_size := nil;
- _EVP_PKEY_free := nil;
- _EVP_VerifyFinal := nil;
- //
- _EVP_get_cipherbyname := nil;
- _EVP_get_digestbyname := nil;
- //
- _EVP_CIPHER_CTX_init := nil;
- _EVP_CIPHER_CTX_cleanup := nil;
- _EVP_CIPHER_CTX_set_key_length := nil;
- _EVP_CIPHER_CTX_ctrl := nil;
- //
- _EVP_EncryptInit := nil;
- _EVP_EncryptUpdate := nil;
- _EVP_EncryptFinal := nil;
- //
- _EVP_DecryptInit := nil;
- _EVP_DecryptUpdate := nil;
- _EVP_DecryptFinal := nil;
-
- // PEM
-
- _PEM_read_bio_PrivateKey := nil;
- _PEM_read_bio_PrivateKey := nil;
- _PEM_read_bio_PUBKEY := nil;
- _PEM_write_bio_PrivateKey := nil;
- _PEM_write_bio_PUBKEY := nil;
-
- // BIO
-
- _BIO_ctrl := nil;
- _BIO_s_file := nil;
- _BIO_new_file := nil;
- _BIO_new_mem_buf := nil;
-
- // Crypto Functions
-
- _SSLeay_version := nil;
-
- Result := True;
+ // PEM
+
+ _PEM_read_bio_PrivateKey := nil;
+ _PEM_read_bio_PrivateKey := nil;
+ _PEM_read_bio_PUBKEY := nil;
+ _PEM_write_bio_PrivateKey := nil;
+ _PEM_write_bio_PUBKEY := nil;
+
+ // BIO
+
+ _BIO_ctrl := nil;
+ _BIO_s_file := nil;
+ _BIO_new_file := nil;
+ _BIO_new_mem_buf := nil;
+
+ // Crypto Functions
+
+ _SSLeay_version := nil;
end;
-function DestroySSLInterface: Boolean;
+procedure locking_callback(mode, ltype: integer; lfile: PChar; line: integer); cdecl;
begin
-result:=false;
- try
- if DestroySSLEAInterface then
- if DestroylibeaInterface then
- result := true
- else
- result := False
+ if (mode and 1) > 0 then
+ EnterCriticalSection(Locks[ltype])
else
- result:=false;
- except
- result:=false;
- end;
+ LeaveCriticalSection(Locks[ltype]);
end;
+procedure InitLocks;
+var
+ n: integer;
+ max: integer;
+begin
+ max:=_CRYPTOnumlocks;
+ SetLength(Locks,Max);
+ for n := 0 to max-1 do
+ InitCriticalSection(Locks[n]);
+ _CRYPTOsetlockingcallback(@locking_callback);
+end;
+procedure FreeLocks;
+var
+ n: integer;
+begin
+ _CRYPTOsetlockingcallback(nil);
+ for n := 0 to Length(Locks)-1 do
+ DoneCriticalSection(Locks[n]);
+ SetLength(Locks,0);
+end;
+
+Procedure UnloadLibraries;
-function IsSSLloaded: Boolean;
begin
- Result := SSLLoaded;
+ SSLloaded := false;
+ if SSLLibHandle <> 0 then
+ begin
+ FreeLibrary(SSLLibHandle);
+ SSLLibHandle := 0;
+ end;
+ if SSLUtilHandle <> 0 then
+ begin
+ FreeLibrary(SSLUtilHandle);
+ SSLUtilHandle := 0;
+ end;
+end;
+
+Function LoadLibraries : Boolean;
+
+begin
+ Result:=False;
+ SSLUtilHandle := LoadLib(DLLUtilName);
+ SSLLibHandle := LoadLib(DLLSSLName);
+ {$IFDEF MSWINDOWS}
+ if (SSLLibHandle = 0) then
+ SSLLibHandle := LoadLib(DLLSSLName2);
+ {$ENDIF}
+ Result:=(SSLLibHandle<>0) and (SSLUtilHandle<>0);
+end;
+
+function InitSSLInterface: Boolean;
+begin
+ Result:=SSLLoaded;
+ if Result then
+ exit;
+ EnterCriticalSection(SSLCS);
+ try
+ if SSLloaded then
+ Exit;
+ Result:=LoadLibraries;
+ if Not Result then
+ begin
+ UnloadLibraries;
+ Exit;
+ end;
+ LoadSSLEntryPoints;
+ LoadUtilEntryPoints;
+ //init library
+ if assigned(_SslLibraryInit) then
+ _SslLibraryInit;
+ if assigned(_SslLoadErrorStrings) then
+ _SslLoadErrorStrings;
+ if assigned(_OPENSSLaddallalgorithms) then
+ _OPENSSLaddallalgorithms;
+ if assigned(_RandScreen) then
+ _RandScreen;
+ if assigned(_CRYPTOnumlocks) and assigned(_CRYPTOsetlockingcallback) then
+ InitLocks;
+ SSLloaded := True;
+{$IFDEF OS2}
+ Result := InitEMXHandles;
+{$ELSE OS2}
+ Result := True;
+{$ENDIF OS2}
+ finally
+ LeaveCriticalSection(SSLCS);
+ end;
end;
-function Islibealoaded: Boolean;
+function DestroySSLInterface: Boolean;
begin
- Result := libeaLoaded;
+ Result:=Not isSSLLoaded;
+ if Result then
+ exit;
+ EnterCriticalSection(SSLCS);
+ try
+ if assigned(_CRYPTOnumlocks) and assigned(_CRYPTOsetlockingcallback) then
+ FreeLocks;
+ EVPCleanup;
+ CRYPTOcleanupAllExData;
+ ErrRemoveState(0);
+ ClearUtilEntryPoints;
+ ClearSSLEntryPoints;
+ UnloadLibraries;
+ Result := True;
+ finally
+ LeaveCriticalSection(SSLCS);
+ end;
end;
+
+
+
+initialization
+ InitCriticalSection(SSLCS);
+
finalization
DestroySSLInterface;
+ DoneCriticalSection(SSLCS);
end.
diff --git a/packages/pastojs/Makefile b/packages/pastojs/Makefile
new file mode 100644
index 0000000000..b37571aa3c
--- /dev/null
+++ b/packages/pastojs/Makefile
@@ -0,0 +1,2577 @@
+#
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692]
+#
+default: all
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos
+BSDs = freebsd netbsd openbsd darwin
+UNIXs = linux $(BSDs) solaris qnx haiku aix
+LIMIT83fs = go32v2 os2 emx watcom msdos
+OSNeedsComspecToRunBatch = go32v2 watcom
+FORCE:
+.PHONY: FORCE
+override PATH:=$(patsubst %/,%,$(subst \,/,$(PATH)))
+ifneq ($(findstring darwin,$(OSTYPE)),)
+inUnix=1 #darwin
+SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
+else
+ifeq ($(findstring ;,$(PATH)),)
+inUnix=1
+SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
+else
+SEARCHPATH:=$(subst ;, ,$(PATH))
+endif
+endif
+SEARCHPATH+=$(patsubst %/,%,$(subst \,/,$(dir $(MAKE))))
+PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(SEARCHPATH))))
+ifeq ($(PWD),)
+PWD:=$(strip $(wildcard $(addsuffix /pwd,$(SEARCHPATH))))
+ifeq ($(PWD),)
+$(error You need the GNU utils package to use this Makefile)
+else
+PWD:=$(firstword $(PWD))
+SRCEXEEXT=
+endif
+else
+PWD:=$(firstword $(PWD))
+SRCEXEEXT=.exe
+endif
+ifndef inUnix
+ifeq ($(OS),Windows_NT)
+inWinNT=1
+else
+ifdef OS2_SHELL
+inOS2=1
+endif
+endif
+else
+ifneq ($(findstring cygdrive,$(PATH)),)
+inCygWin=1
+endif
+endif
+ifdef inUnix
+SRCBATCHEXT=.sh
+else
+ifdef inOS2
+SRCBATCHEXT=.cmd
+else
+SRCBATCHEXT=.bat
+endif
+endif
+ifdef COMSPEC
+ifneq ($(findstring $(OS_SOURCE),$(OSNeedsComspecToRunBatch)),)
+ifndef RUNBATCH
+RUNBATCH=$(COMSPEC) /C
+endif
+endif
+endif
+ifdef inUnix
+PATHSEP=/
+else
+PATHSEP:=$(subst /,\,/)
+ifdef inCygWin
+PATHSEP=/
+endif
+endif
+ifdef PWD
+BASEDIR:=$(subst \,/,$(shell $(PWD)))
+ifdef inCygWin
+ifneq ($(findstring /cygdrive/,$(BASEDIR)),)
+BASENODIR:=$(patsubst /cygdrive%,%,$(BASEDIR))
+BASEDRIVE:=$(firstword $(subst /, ,$(BASENODIR)))
+BASEDIR:=$(subst /cygdrive/$(BASEDRIVE)/,$(BASEDRIVE):/,$(BASEDIR))
+endif
+endif
+else
+BASEDIR=.
+endif
+ifdef inOS2
+ifndef ECHO
+ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ECHO),)
+ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ECHO),)
+ECHO=echo
+else
+ECHO:=$(firstword $(ECHO))
+endif
+else
+ECHO:=$(firstword $(ECHO))
+endif
+endif
+export ECHO
+endif
+override DEFAULT_FPCDIR=../..
+ifndef FPC
+ifdef PP
+FPC=$(PP)
+endif
+endif
+ifndef FPC
+FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH))))
+ifneq ($(FPCPROG),)
+FPCPROG:=$(firstword $(FPCPROG))
+ifneq ($(CPU_TARGET),)
+FPC:=$(shell $(FPCPROG) -P$(CPU_TARGET) -PB)
+else
+FPC:=$(shell $(FPCPROG) -PB)
+endif
+ifneq ($(findstring Error,$(FPC)),)
+override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
+else
+ifeq ($(strip $(wildcard $(FPC))),)
+FPC:=$(firstword $(FPCPROG))
+endif
+endif
+else
+override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
+endif
+endif
+override FPC:=$(subst $(SRCEXEEXT),,$(FPC))
+override FPC:=$(subst \,/,$(FPC))$(SRCEXEEXT)
+FOUNDFPC:=$(strip $(wildcard $(FPC)))
+ifeq ($(FOUNDFPC),)
+FOUNDFPC=$(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))
+ifeq ($(FOUNDFPC),)
+$(error Compiler $(FPC) not found)
+endif
+endif
+ifndef FPC_COMPILERINFO
+FPC_COMPILERINFO:=$(shell $(FPC) -iVSPTPSOTO)
+endif
+ifndef FPC_VERSION
+FPC_VERSION:=$(word 1,$(FPC_COMPILERINFO))
+endif
+export FPC FPC_VERSION FPC_COMPILERINFO
+unexport CHECKDEPEND ALLDEPENDENCIES
+ifndef CPU_TARGET
+ifdef CPU_TARGET_DEFAULT
+CPU_TARGET=$(CPU_TARGET_DEFAULT)
+endif
+endif
+ifndef OS_TARGET
+ifdef OS_TARGET_DEFAULT
+OS_TARGET=$(OS_TARGET_DEFAULT)
+endif
+endif
+ifndef CPU_SOURCE
+CPU_SOURCE:=$(word 2,$(FPC_COMPILERINFO))
+endif
+ifndef CPU_TARGET
+CPU_TARGET:=$(word 3,$(FPC_COMPILERINFO))
+endif
+ifndef OS_SOURCE
+OS_SOURCE:=$(word 4,$(FPC_COMPILERINFO))
+endif
+ifndef OS_TARGET
+OS_TARGET:=$(word 5,$(FPC_COMPILERINFO))
+endif
+FULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
+FULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
+ifeq ($(CPU_TARGET),armeb)
+ARCH=arm
+override FPCOPT+=-Cb
+else
+ifeq ($(CPU_TARGET),armel)
+ARCH=arm
+override FPCOPT+=-CaEABI
+else
+ARCH=$(CPU_TARGET)
+endif
+endif
+ifeq ($(FULL_TARGET),arm-embedded)
+ifeq ($(SUBARCH),)
+$(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t or SUBARCH=armv7m) must be defined)
+endif
+override FPCOPT+=-Cp$(SUBARCH)
+endif
+ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
+TARGETSUFFIX=$(OS_TARGET)
+SOURCESUFFIX=$(OS_SOURCE)
+else
+ifneq ($(findstring $(OS_TARGET),$(LIMIT83fs)),)
+TARGETSUFFIX=$(OS_TARGET)
+else
+TARGETSUFFIX=$(FULL_TARGET)
+endif
+SOURCESUFFIX=$(FULL_SOURCE)
+endif
+ifneq ($(FULL_TARGET),$(FULL_SOURCE))
+CROSSCOMPILE=1
+endif
+ifeq ($(findstring makefile,$(MAKECMDGOALS)),)
+ifeq ($(findstring $(FULL_TARGET),$(MAKEFILETARGETS)),)
+$(error The Makefile doesn't support target $(FULL_TARGET), please run fpcmake first)
+endif
+endif
+ifneq ($(findstring $(OS_TARGET),$(BSDs)),)
+BSDhier=1
+endif
+ifeq ($(OS_TARGET),linux)
+linuxHier=1
+endif
+ifndef CROSSCOMPILE
+BUILDFULLNATIVE=1
+export BUILDFULLNATIVE
+endif
+ifdef BUILDFULLNATIVE
+BUILDNATIVE=1
+export BUILDNATIVE
+endif
+export OS_TARGET OS_SOURCE ARCH CPU_TARGET CPU_SOURCE FULL_TARGET FULL_SOURCE TARGETSUFFIX SOURCESUFFIX CROSSCOMPILE
+ifdef FPCDIR
+override FPCDIR:=$(subst \,/,$(FPCDIR))
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
+override FPCDIR=wrong
+endif
+else
+override FPCDIR=wrong
+endif
+ifdef DEFAULT_FPCDIR
+ifeq ($(FPCDIR),wrong)
+override FPCDIR:=$(subst \,/,$(DEFAULT_FPCDIR))
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
+override FPCDIR=wrong
+endif
+endif
+endif
+ifeq ($(FPCDIR),wrong)
+ifdef inUnix
+override FPCDIR=/usr/local/lib/fpc/$(FPC_VERSION)
+ifeq ($(wildcard $(FPCDIR)/units),)
+override FPCDIR=/usr/lib/fpc/$(FPC_VERSION)
+endif
+else
+override FPCDIR:=$(subst /$(FPC),,$(firstword $(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))))
+override FPCDIR:=$(FPCDIR)/..
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
+override FPCDIR:=$(FPCDIR)/..
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
+override FPCDIR:=$(BASEDIR)
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
+override FPCDIR=c:/pp
+endif
+endif
+endif
+endif
+endif
+ifndef CROSSBINDIR
+CROSSBINDIR:=$(wildcard $(FPCDIR)/bin/$(TARGETSUFFIX))
+endif
+ifneq ($(findstring $(OS_TARGET),darwin iphonesim),)
+ifeq ($(OS_SOURCE),darwin)
+DARWIN2DARWIN=1
+endif
+endif
+ifndef BINUTILSPREFIX
+ifndef CROSSBINDIR
+ifdef CROSSCOMPILE
+ifneq ($(OS_TARGET),msdos)
+ifndef DARWIN2DARWIN
+ifneq ($(CPU_TARGET),jvm)
+BINUTILSPREFIX=$(CPU_TARGET)-$(OS_TARGET)-
+ifeq ($(OS_TARGET),android)
+ifeq ($(CPU_TARGET),arm)
+BINUTILSPREFIX=arm-linux-androideabi-
+else
+ifeq ($(CPU_TARGET),i386)
+BINUTILSPREFIX=i686-linux-android-
+else
+ifeq ($(CPU_TARGET),mipsel)
+BINUTILSPREFIX=mipsel-linux-android-
+endif
+endif
+endif
+endif
+endif
+endif
+else
+BINUTILSPREFIX=$(OS_TARGET)-
+endif
+endif
+endif
+endif
+UNITSDIR:=$(wildcard $(FPCDIR)/units/$(TARGETSUFFIX))
+ifeq ($(UNITSDIR),)
+UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET))
+endif
+PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages $(FPCDIR)/packages/base $(FPCDIR)/packages/extra)
+ifndef FPCFPMAKE
+ifdef CROSSCOMPILE
+ifeq ($(strip $(wildcard $(addsuffix /compiler/ppc$(SRCEXEEXT),$(FPCDIR)))),)
+FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH))))
+ifneq ($(FPCPROG),)
+FPCPROG:=$(firstword $(FPCPROG))
+FPCFPMAKE:=$(shell $(FPCPROG) -PB)
+ifeq ($(strip $(wildcard $(FPCFPMAKE))),)
+FPCFPMAKE:=$(firstword $(FPCPROG))
+endif
+else
+override FPCFPMAKE=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
+endif
+else
+FPCFPMAKE=$(strip $(wildcard $(addsuffix /compiler/ppc$(SRCEXEEXT),$(FPCDIR))))
+FPMAKE_SKIP_CONFIG=-n
+export FPCFPMAKE
+export FPMAKE_SKIP_CONFIG
+endif
+else
+FPMAKE_SKIP_CONFIG=-n
+FPCFPMAKE=$(FPC)
+endif
+endif
+override PACKAGE_NAME=pastojs
+override PACKAGE_VERSION=2.7.1
+FPMAKE_BIN_CLEAN=$(wildcard ./fpmake$(SRCEXEEXT))
+ifdef OS_TARGET
+FPC_TARGETOPT+=--os=$(OS_TARGET)
+endif
+ifdef CPU_TARGET
+FPC_TARGETOPT+=--cpu=$(CPU_TARGET)
+endif
+LOCALFPMAKE=./fpmake$(SRCEXEEXT)
+override INSTALL_FPCPACKAGE=y
+ifdef REQUIRE_UNITSDIR
+override UNITSDIR+=$(REQUIRE_UNITSDIR)
+endif
+ifdef REQUIRE_PACKAGESDIR
+override PACKAGESDIR+=$(REQUIRE_PACKAGESDIR)
+endif
+ifdef ZIPINSTALL
+ifneq ($(findstring $(OS_TARGET),$(UNIXs)),)
+UNIXHier=1
+endif
+else
+ifneq ($(findstring $(OS_SOURCE),$(UNIXs)),)
+UNIXHier=1
+endif
+endif
+ifndef INSTALL_PREFIX
+ifdef PREFIX
+INSTALL_PREFIX=$(PREFIX)
+endif
+endif
+ifndef INSTALL_PREFIX
+ifdef UNIXHier
+INSTALL_PREFIX=/usr/local
+else
+ifdef INSTALL_FPCPACKAGE
+INSTALL_BASEDIR:=/pp
+else
+INSTALL_BASEDIR:=/$(PACKAGE_NAME)
+endif
+endif
+endif
+export INSTALL_PREFIX
+ifdef INSTALL_FPCSUBDIR
+export INSTALL_FPCSUBDIR
+endif
+ifndef DIST_DESTDIR
+DIST_DESTDIR:=$(BASEDIR)
+endif
+export DIST_DESTDIR
+ifndef COMPILER_UNITTARGETDIR
+ifdef PACKAGEDIR_MAIN
+COMPILER_UNITTARGETDIR=$(PACKAGEDIR_MAIN)/units/$(TARGETSUFFIX)
+else
+COMPILER_UNITTARGETDIR=units/$(TARGETSUFFIX)
+endif
+endif
+ifndef COMPILER_TARGETDIR
+COMPILER_TARGETDIR=.
+endif
+ifndef INSTALL_BASEDIR
+ifdef UNIXHier
+ifdef INSTALL_FPCPACKAGE
+INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/fpc/$(FPC_VERSION)
+else
+INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/$(PACKAGE_NAME)
+endif
+else
+INSTALL_BASEDIR:=$(INSTALL_PREFIX)
+endif
+endif
+ifndef INSTALL_BINDIR
+ifdef UNIXHier
+INSTALL_BINDIR:=$(INSTALL_PREFIX)/bin
+else
+INSTALL_BINDIR:=$(INSTALL_BASEDIR)/bin
+ifdef INSTALL_FPCPACKAGE
+ifdef CROSSCOMPILE
+ifdef CROSSINSTALL
+INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(SOURCESUFFIX)
+else
+INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX)
+endif
+else
+INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX)
+endif
+endif
+endif
+endif
+ifndef INSTALL_UNITDIR
+INSTALL_UNITDIR:=$(INSTALL_BASEDIR)/units/$(TARGETSUFFIX)
+ifdef INSTALL_FPCPACKAGE
+ifdef PACKAGE_NAME
+INSTALL_UNITDIR:=$(INSTALL_UNITDIR)/$(PACKAGE_NAME)
+endif
+endif
+endif
+ifndef INSTALL_LIBDIR
+ifdef UNIXHier
+INSTALL_LIBDIR:=$(INSTALL_PREFIX)/lib
+else
+INSTALL_LIBDIR:=$(INSTALL_UNITDIR)
+endif
+endif
+ifndef INSTALL_SOURCEDIR
+ifdef UNIXHier
+ifdef BSDhier
+SRCPREFIXDIR=share/src
+else
+ifdef linuxHier
+SRCPREFIXDIR=share/src
+else
+SRCPREFIXDIR=src
+endif
+endif
+ifdef INSTALL_FPCPACKAGE
+ifdef INSTALL_FPCSUBDIR
+INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
+else
+INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
+endif
+else
+INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
+endif
+else
+ifdef INSTALL_FPCPACKAGE
+ifdef INSTALL_FPCSUBDIR
+INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
+else
+INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(PACKAGE_NAME)
+endif
+else
+INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source
+endif
+endif
+endif
+ifndef INSTALL_DOCDIR
+ifdef UNIXHier
+ifdef BSDhier
+DOCPREFIXDIR=share/doc
+else
+ifdef linuxHier
+DOCPREFIXDIR=share/doc
+else
+DOCPREFIXDIR=doc
+endif
+endif
+ifdef INSTALL_FPCPACKAGE
+INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
+else
+INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
+endif
+else
+ifdef INSTALL_FPCPACKAGE
+INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc/$(PACKAGE_NAME)
+else
+INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc
+endif
+endif
+endif
+ifndef INSTALL_EXAMPLEDIR
+ifdef UNIXHier
+ifdef INSTALL_FPCPACKAGE
+ifdef BSDhier
+INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
+else
+ifdef linuxHier
+INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples
+else
+INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)/examples/$(PACKAGE_NAME)
+endif
+endif
+else
+ifdef BSDhier
+INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
+else
+ifdef linuxHier
+INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
+else
+INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
+endif
+endif
+endif
+else
+ifdef INSTALL_FPCPACKAGE
+INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples/$(PACKAGE_NAME)
+else
+INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples
+endif
+endif
+endif
+ifndef INSTALL_DATADIR
+INSTALL_DATADIR=$(INSTALL_BASEDIR)
+endif
+ifndef INSTALL_SHAREDDIR
+INSTALL_SHAREDDIR=$(INSTALL_PREFIX)/lib
+endif
+ifdef CROSSCOMPILE
+ifndef CROSSBINDIR
+CROSSBINDIR:=$(wildcard $(CROSSTARGETDIR)/bin/$(SOURCESUFFIX))
+ifeq ($(CROSSBINDIR),)
+CROSSBINDIR:=$(wildcard $(INSTALL_BASEDIR)/cross/$(TARGETSUFFIX)/bin/$(FULL_SOURCE))
+endif
+endif
+else
+CROSSBINDIR=
+endif
+BATCHEXT=.bat
+LOADEREXT=.as
+EXEEXT=.exe
+PPLEXT=.ppl
+PPUEXT=.ppu
+OEXT=.o
+ASMEXT=.s
+SMARTEXT=.sl
+STATICLIBEXT=.a
+SHAREDLIBEXT=.so
+SHAREDLIBPREFIX=libfp
+STATICLIBPREFIX=libp
+IMPORTLIBPREFIX=libimp
+RSTEXT=.rst
+EXEDBGEXT=.dbg
+ifeq ($(OS_TARGET),go32v1)
+STATICLIBPREFIX=
+SHORTSUFFIX=v1
+endif
+ifeq ($(OS_TARGET),go32v2)
+STATICLIBPREFIX=
+SHORTSUFFIX=dos
+IMPORTLIBPREFIX=
+endif
+ifeq ($(OS_TARGET),watcom)
+STATICLIBPREFIX=
+OEXT=.obj
+ASMEXT=.asm
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=wat
+IMPORTLIBPREFIX=
+endif
+ifneq ($(CPU_TARGET),jvm)
+ifeq ($(OS_TARGET),android)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=lnx
+endif
+endif
+ifeq ($(OS_TARGET),linux)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=lnx
+endif
+ifeq ($(OS_TARGET),freebsd)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=fbs
+endif
+ifeq ($(OS_TARGET),netbsd)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=nbs
+endif
+ifeq ($(OS_TARGET),openbsd)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=obs
+endif
+ifeq ($(OS_TARGET),win32)
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=w32
+endif
+ifeq ($(OS_TARGET),os2)
+BATCHEXT=.cmd
+AOUTEXT=.out
+STATICLIBPREFIX=
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=os2
+ECHO=echo
+IMPORTLIBPREFIX=
+endif
+ifeq ($(OS_TARGET),emx)
+BATCHEXT=.cmd
+AOUTEXT=.out
+STATICLIBPREFIX=
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=emx
+ECHO=echo
+IMPORTLIBPREFIX=
+endif
+ifeq ($(OS_TARGET),amiga)
+EXEEXT=
+SHAREDLIBEXT=.library
+SHORTSUFFIX=amg
+endif
+ifeq ($(OS_TARGET),morphos)
+EXEEXT=
+SHAREDLIBEXT=.library
+SHORTSUFFIX=mos
+endif
+ifeq ($(OS_TARGET),atari)
+EXEEXT=.ttp
+SHORTSUFFIX=ata
+endif
+ifeq ($(OS_TARGET),beos)
+BATCHEXT=.sh
+EXEEXT=
+SHORTSUFFIX=be
+endif
+ifeq ($(OS_TARGET),haiku)
+BATCHEXT=.sh
+EXEEXT=
+SHORTSUFFIX=hai
+endif
+ifeq ($(OS_TARGET),solaris)
+BATCHEXT=.sh
+EXEEXT=
+SHORTSUFFIX=sun
+endif
+ifeq ($(OS_TARGET),qnx)
+BATCHEXT=.sh
+EXEEXT=
+SHORTSUFFIX=qnx
+endif
+ifeq ($(OS_TARGET),netware)
+EXEEXT=.nlm
+STATICLIBPREFIX=
+SHORTSUFFIX=nw
+IMPORTLIBPREFIX=imp
+endif
+ifeq ($(OS_TARGET),netwlibc)
+EXEEXT=.nlm
+STATICLIBPREFIX=
+SHORTSUFFIX=nwl
+IMPORTLIBPREFIX=imp
+endif
+ifeq ($(OS_TARGET),macos)
+BATCHEXT=
+EXEEXT=
+DEBUGSYMEXT=.xcoff
+SHORTSUFFIX=mac
+IMPORTLIBPREFIX=imp
+endif
+ifneq ($(findstring $(OS_TARGET),darwin iphonesim),)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=dwn
+EXEDBGEXT=.dSYM
+endif
+ifeq ($(OS_TARGET),gba)
+EXEEXT=.gba
+SHAREDLIBEXT=.so
+SHORTSUFFIX=gba
+endif
+ifeq ($(OS_TARGET),symbian)
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=symbian
+endif
+ifeq ($(OS_TARGET),NativeNT)
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=nativent
+endif
+ifeq ($(OS_TARGET),wii)
+EXEEXT=.dol
+SHAREDLIBEXT=.so
+SHORTSUFFIX=wii
+endif
+ifeq ($(OS_TARGET),aix)
+BATCHEXT=.sh
+EXEEXT=
+SHORTSUFFIX=aix
+endif
+ifeq ($(OS_TARGET),java)
+OEXT=.class
+ASMEXT=.j
+SHAREDLIBEXT=.jar
+SHORTSUFFIX=java
+endif
+ifeq ($(CPU_TARGET),jvm)
+ifeq ($(OS_TARGET),android)
+OEXT=.class
+ASMEXT=.j
+SHAREDLIBEXT=.jar
+SHORTSUFFIX=android
+endif
+endif
+ifeq ($(OS_TARGET),msdos)
+STATICLIBPREFIX=
+STATICLIBEXT=.a
+SHORTSUFFIX=d16
+endif
+ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
+FPCMADE=fpcmade.$(SHORTSUFFIX)
+ZIPSUFFIX=$(SHORTSUFFIX)
+ZIPCROSSPREFIX=
+ZIPSOURCESUFFIX=src
+ZIPEXAMPLESUFFIX=exm
+else
+FPCMADE=fpcmade.$(TARGETSUFFIX)
+ZIPSOURCESUFFIX=.source
+ZIPEXAMPLESUFFIX=.examples
+ifdef CROSSCOMPILE
+ZIPSUFFIX=.$(SOURCESUFFIX)
+ZIPCROSSPREFIX=$(TARGETSUFFIX)-
+else
+ZIPSUFFIX=.$(TARGETSUFFIX)
+ZIPCROSSPREFIX=
+endif
+endif
+ifndef ECHO
+ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ECHO),)
+ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ECHO),)
+ECHO= __missing_command_ECHO
+else
+ECHO:=$(firstword $(ECHO))
+endif
+else
+ECHO:=$(firstword $(ECHO))
+endif
+endif
+export ECHO
+ifndef DATE
+DATE:=$(strip $(wildcard $(addsuffix /gdate$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(DATE),)
+DATE:=$(strip $(wildcard $(addsuffix /date$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(DATE),)
+DATE= __missing_command_DATE
+else
+DATE:=$(firstword $(DATE))
+endif
+else
+DATE:=$(firstword $(DATE))
+endif
+endif
+export DATE
+ifndef GINSTALL
+GINSTALL:=$(strip $(wildcard $(addsuffix /ginstall$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(GINSTALL),)
+GINSTALL:=$(strip $(wildcard $(addsuffix /install$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(GINSTALL),)
+GINSTALL= __missing_command_GINSTALL
+else
+GINSTALL:=$(firstword $(GINSTALL))
+endif
+else
+GINSTALL:=$(firstword $(GINSTALL))
+endif
+endif
+export GINSTALL
+ifndef CPPROG
+CPPROG:=$(strip $(wildcard $(addsuffix /cp$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(CPPROG),)
+CPPROG= __missing_command_CPPROG
+else
+CPPROG:=$(firstword $(CPPROG))
+endif
+endif
+export CPPROG
+ifndef RMPROG
+RMPROG:=$(strip $(wildcard $(addsuffix /rm$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(RMPROG),)
+RMPROG= __missing_command_RMPROG
+else
+RMPROG:=$(firstword $(RMPROG))
+endif
+endif
+export RMPROG
+ifndef MVPROG
+MVPROG:=$(strip $(wildcard $(addsuffix /mv$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(MVPROG),)
+MVPROG= __missing_command_MVPROG
+else
+MVPROG:=$(firstword $(MVPROG))
+endif
+endif
+export MVPROG
+ifndef MKDIRPROG
+MKDIRPROG:=$(strip $(wildcard $(addsuffix /gmkdir$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(MKDIRPROG),)
+MKDIRPROG:=$(strip $(wildcard $(addsuffix /mkdir$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(MKDIRPROG),)
+MKDIRPROG= __missing_command_MKDIRPROG
+else
+MKDIRPROG:=$(firstword $(MKDIRPROG))
+endif
+else
+MKDIRPROG:=$(firstword $(MKDIRPROG))
+endif
+endif
+export MKDIRPROG
+ifndef ECHOREDIR
+ifndef inUnix
+ECHOREDIR=echo
+else
+ECHOREDIR=$(ECHO)
+endif
+endif
+ifndef COPY
+COPY:=$(CPPROG) -fp
+endif
+ifndef COPYTREE
+COPYTREE:=$(CPPROG) -Rfp
+endif
+ifndef MKDIRTREE
+MKDIRTREE:=$(MKDIRPROG) -p
+endif
+ifndef MOVE
+MOVE:=$(MVPROG) -f
+endif
+ifndef DEL
+DEL:=$(RMPROG) -f
+endif
+ifndef DELTREE
+DELTREE:=$(RMPROG) -rf
+endif
+ifndef INSTALL
+ifdef inUnix
+INSTALL:=$(GINSTALL) -c -m 644
+else
+INSTALL:=$(COPY)
+endif
+endif
+ifndef INSTALLEXE
+ifdef inUnix
+INSTALLEXE:=$(GINSTALL) -c -m 755
+else
+INSTALLEXE:=$(COPY)
+endif
+endif
+ifndef MKDIR
+MKDIR:=$(GINSTALL) -m 755 -d
+endif
+export ECHOREDIR COPY COPYTREE MOVE DEL DELTREE INSTALL INSTALLEXE MKDIR
+ifndef PPUMOVE
+PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(PPUMOVE),)
+PPUMOVE= __missing_command_PPUMOVE
+else
+PPUMOVE:=$(firstword $(PPUMOVE))
+endif
+endif
+export PPUMOVE
+ifndef FPCMAKE
+FPCMAKE:=$(strip $(wildcard $(addsuffix /fpcmake$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(FPCMAKE),)
+FPCMAKE= __missing_command_FPCMAKE
+else
+FPCMAKE:=$(firstword $(FPCMAKE))
+endif
+endif
+export FPCMAKE
+ifndef ZIPPROG
+ZIPPROG:=$(strip $(wildcard $(addsuffix /zip$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ZIPPROG),)
+ZIPPROG= __missing_command_ZIPPROG
+else
+ZIPPROG:=$(firstword $(ZIPPROG))
+endif
+endif
+export ZIPPROG
+ifndef TARPROG
+TARPROG:=$(strip $(wildcard $(addsuffix /gtar$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(TARPROG),)
+TARPROG:=$(strip $(wildcard $(addsuffix /tar$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(TARPROG),)
+TARPROG= __missing_command_TARPROG
+else
+TARPROG:=$(firstword $(TARPROG))
+endif
+else
+TARPROG:=$(firstword $(TARPROG))
+endif
+endif
+export TARPROG
+ASNAME=$(BINUTILSPREFIX)as
+LDNAME=$(BINUTILSPREFIX)ld
+ARNAME=$(BINUTILSPREFIX)ar
+RCNAME=$(BINUTILSPREFIX)rc
+NASMNAME=$(BINUTILSPREFIX)nasm
+ifndef ASPROG
+ifdef CROSSBINDIR
+ASPROG=$(CROSSBINDIR)/$(ASNAME)$(SRCEXEEXT)
+else
+ASPROG=$(ASNAME)
+endif
+endif
+ifndef LDPROG
+ifdef CROSSBINDIR
+LDPROG=$(CROSSBINDIR)/$(LDNAME)$(SRCEXEEXT)
+else
+LDPROG=$(LDNAME)
+endif
+endif
+ifndef RCPROG
+ifdef CROSSBINDIR
+RCPROG=$(CROSSBINDIR)/$(RCNAME)$(SRCEXEEXT)
+else
+RCPROG=$(RCNAME)
+endif
+endif
+ifndef ARPROG
+ifdef CROSSBINDIR
+ARPROG=$(CROSSBINDIR)/$(ARNAME)$(SRCEXEEXT)
+else
+ARPROG=$(ARNAME)
+endif
+endif
+ifndef NASMPROG
+ifdef CROSSBINDIR
+NASMPROG=$(CROSSBINDIR)/$(NASMNAME)$(SRCEXEEXT)
+else
+NASMPROG=$(NASMNAME)
+endif
+endif
+AS=$(ASPROG)
+LD=$(LDPROG)
+RC=$(RCPROG)
+AR=$(ARPROG)
+NASM=$(NASMPROG)
+ifdef inUnix
+PPAS=./ppas$(SRCBATCHEXT)
+else
+PPAS=ppas$(SRCBATCHEXT)
+endif
+ifdef inUnix
+LDCONFIG=ldconfig
+else
+LDCONFIG=
+endif
+ifdef DATE
+DATESTR:=$(shell $(DATE) +%Y%m%d)
+else
+DATESTR=
+endif
+ZIPOPT=-9
+ZIPEXT=.zip
+ifeq ($(USETAR),bz2)
+TAROPT=vj
+TAREXT=.tar.bz2
+else
+TAROPT=vz
+TAREXT=.tar.gz
+endif
+override REQUIRE_PACKAGES=fcl-js fcl-passrc fpmkunit
+ifeq ($(FULL_TARGET),i386-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),i386-go32v2)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),i386-win32)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),i386-os2)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),i386-freebsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),i386-beos)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),i386-haiku)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),i386-netbsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),i386-solaris)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),i386-qnx)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),i386-netware)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),i386-openbsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),i386-wdosx)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),i386-darwin)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),i386-emx)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),i386-watcom)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),i386-netwlibc)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),i386-wince)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),i386-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),i386-symbian)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),i386-nativent)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),i386-iphonesim)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),i386-android)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),m68k-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),m68k-freebsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),m68k-netbsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),m68k-amiga)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),m68k-atari)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),m68k-openbsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),m68k-palmos)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),m68k-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),powerpc-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),powerpc-netbsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),powerpc-amiga)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),powerpc-macos)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),powerpc-darwin)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),powerpc-morphos)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),powerpc-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),powerpc-wii)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),powerpc-aix)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),sparc-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),sparc-netbsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),sparc-solaris)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),sparc-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),x86_64-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),x86_64-freebsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),x86_64-netbsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),x86_64-solaris)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),x86_64-openbsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),x86_64-darwin)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),x86_64-win64)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),x86_64-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),arm-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),arm-palmos)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),arm-darwin)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),arm-wince)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),arm-gba)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),arm-nds)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),arm-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),arm-symbian)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),arm-android)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),powerpc64-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),powerpc64-darwin)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),powerpc64-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),powerpc64-aix)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),avr-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),armeb-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),armeb-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),mips-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),mipsel-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),mipsel-android)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),jvm-java)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),jvm-android)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifeq ($(FULL_TARGET),i8086-msdos)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+endif
+ifdef REQUIRE_PACKAGES_RTL
+PACKAGEDIR_RTL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
+ifneq ($(PACKAGEDIR_RTL),)
+ifneq ($(wildcard $(PACKAGEDIR_RTL)/units/$(TARGETSUFFIX)),)
+UNITDIR_RTL=$(PACKAGEDIR_RTL)/units/$(TARGETSUFFIX)
+else
+UNITDIR_RTL=$(PACKAGEDIR_RTL)
+endif
+ifneq ($(wildcard $(PACKAGEDIR_RTL)/units/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_RTL=$(PACKAGEDIR_RTL)/units/$(SOURCESUFFIX)
+else
+ifneq ($(wildcard $(PACKAGEDIR_RTL)/units_bs/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_RTL=$(PACKAGEDIR_RTL)/units_bs/$(SOURCESUFFIX)
+else
+UNITDIR_FPMAKE_RTL=$(PACKAGEDIR_RTL)
+endif
+endif
+ifdef CHECKDEPEND
+$(PACKAGEDIR_RTL)/$(OS_TARGET)/$(FPCMADE):
+ $(MAKE) -C $(PACKAGEDIR_RTL)/$(OS_TARGET) $(FPCMADE)
+override ALLDEPENDENCIES+=$(PACKAGEDIR_RTL)/$(OS_TARGET)/$(FPCMADE)
+endif
+else
+PACKAGEDIR_RTL=
+UNITDIR_RTL:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /rtl/Package.fpc,$(UNITSDIR)))))
+ifneq ($(UNITDIR_RTL),)
+UNITDIR_RTL:=$(firstword $(UNITDIR_RTL))
+else
+UNITDIR_RTL=
+endif
+endif
+ifdef UNITDIR_RTL
+override COMPILER_UNITDIR+=$(UNITDIR_RTL)
+endif
+ifdef UNITDIR_FPMAKE_RTL
+override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_RTL)
+endif
+endif
+ifdef REQUIRE_PACKAGES_PASZLIB
+PACKAGEDIR_PASZLIB:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /paszlib/Makefile.fpc,$(PACKAGESDIR))))))
+ifneq ($(PACKAGEDIR_PASZLIB),)
+ifneq ($(wildcard $(PACKAGEDIR_PASZLIB)/units/$(TARGETSUFFIX)),)
+UNITDIR_PASZLIB=$(PACKAGEDIR_PASZLIB)/units/$(TARGETSUFFIX)
+else
+UNITDIR_PASZLIB=$(PACKAGEDIR_PASZLIB)
+endif
+ifneq ($(wildcard $(PACKAGEDIR_PASZLIB)/units/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_PASZLIB=$(PACKAGEDIR_PASZLIB)/units/$(SOURCESUFFIX)
+else
+ifneq ($(wildcard $(PACKAGEDIR_PASZLIB)/units_bs/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_PASZLIB=$(PACKAGEDIR_PASZLIB)/units_bs/$(SOURCESUFFIX)
+else
+UNITDIR_FPMAKE_PASZLIB=$(PACKAGEDIR_PASZLIB)
+endif
+endif
+ifdef CHECKDEPEND
+$(PACKAGEDIR_PASZLIB)/$(FPCMADE):
+ $(MAKE) -C $(PACKAGEDIR_PASZLIB) $(FPCMADE)
+override ALLDEPENDENCIES+=$(PACKAGEDIR_PASZLIB)/$(FPCMADE)
+endif
+else
+PACKAGEDIR_PASZLIB=
+UNITDIR_PASZLIB:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /paszlib/Package.fpc,$(UNITSDIR)))))
+ifneq ($(UNITDIR_PASZLIB),)
+UNITDIR_PASZLIB:=$(firstword $(UNITDIR_PASZLIB))
+else
+UNITDIR_PASZLIB=
+endif
+endif
+ifdef UNITDIR_PASZLIB
+override COMPILER_UNITDIR+=$(UNITDIR_PASZLIB)
+endif
+ifdef UNITDIR_FPMAKE_PASZLIB
+override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_PASZLIB)
+endif
+endif
+ifdef REQUIRE_PACKAGES_FCL-PROCESS
+PACKAGEDIR_FCL-PROCESS:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fcl-process/Makefile.fpc,$(PACKAGESDIR))))))
+ifneq ($(PACKAGEDIR_FCL-PROCESS),)
+ifneq ($(wildcard $(PACKAGEDIR_FCL-PROCESS)/units/$(TARGETSUFFIX)),)
+UNITDIR_FCL-PROCESS=$(PACKAGEDIR_FCL-PROCESS)/units/$(TARGETSUFFIX)
+else
+UNITDIR_FCL-PROCESS=$(PACKAGEDIR_FCL-PROCESS)
+endif
+ifneq ($(wildcard $(PACKAGEDIR_FCL-PROCESS)/units/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_FCL-PROCESS=$(PACKAGEDIR_FCL-PROCESS)/units/$(SOURCESUFFIX)
+else
+ifneq ($(wildcard $(PACKAGEDIR_FCL-PROCESS)/units_bs/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_FCL-PROCESS=$(PACKAGEDIR_FCL-PROCESS)/units_bs/$(SOURCESUFFIX)
+else
+UNITDIR_FPMAKE_FCL-PROCESS=$(PACKAGEDIR_FCL-PROCESS)
+endif
+endif
+ifdef CHECKDEPEND
+$(PACKAGEDIR_FCL-PROCESS)/$(FPCMADE):
+ $(MAKE) -C $(PACKAGEDIR_FCL-PROCESS) $(FPCMADE)
+override ALLDEPENDENCIES+=$(PACKAGEDIR_FCL-PROCESS)/$(FPCMADE)
+endif
+else
+PACKAGEDIR_FCL-PROCESS=
+UNITDIR_FCL-PROCESS:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /fcl-process/Package.fpc,$(UNITSDIR)))))
+ifneq ($(UNITDIR_FCL-PROCESS),)
+UNITDIR_FCL-PROCESS:=$(firstword $(UNITDIR_FCL-PROCESS))
+else
+UNITDIR_FCL-PROCESS=
+endif
+endif
+ifdef UNITDIR_FCL-PROCESS
+override COMPILER_UNITDIR+=$(UNITDIR_FCL-PROCESS)
+endif
+ifdef UNITDIR_FPMAKE_FCL-PROCESS
+override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_FCL-PROCESS)
+endif
+endif
+ifdef REQUIRE_PACKAGES_HASH
+PACKAGEDIR_HASH:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /hash/Makefile.fpc,$(PACKAGESDIR))))))
+ifneq ($(PACKAGEDIR_HASH),)
+ifneq ($(wildcard $(PACKAGEDIR_HASH)/units/$(TARGETSUFFIX)),)
+UNITDIR_HASH=$(PACKAGEDIR_HASH)/units/$(TARGETSUFFIX)
+else
+UNITDIR_HASH=$(PACKAGEDIR_HASH)
+endif
+ifneq ($(wildcard $(PACKAGEDIR_HASH)/units/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_HASH=$(PACKAGEDIR_HASH)/units/$(SOURCESUFFIX)
+else
+ifneq ($(wildcard $(PACKAGEDIR_HASH)/units_bs/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_HASH=$(PACKAGEDIR_HASH)/units_bs/$(SOURCESUFFIX)
+else
+UNITDIR_FPMAKE_HASH=$(PACKAGEDIR_HASH)
+endif
+endif
+ifdef CHECKDEPEND
+$(PACKAGEDIR_HASH)/$(FPCMADE):
+ $(MAKE) -C $(PACKAGEDIR_HASH) $(FPCMADE)
+override ALLDEPENDENCIES+=$(PACKAGEDIR_HASH)/$(FPCMADE)
+endif
+else
+PACKAGEDIR_HASH=
+UNITDIR_HASH:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /hash/Package.fpc,$(UNITSDIR)))))
+ifneq ($(UNITDIR_HASH),)
+UNITDIR_HASH:=$(firstword $(UNITDIR_HASH))
+else
+UNITDIR_HASH=
+endif
+endif
+ifdef UNITDIR_HASH
+override COMPILER_UNITDIR+=$(UNITDIR_HASH)
+endif
+ifdef UNITDIR_FPMAKE_HASH
+override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_HASH)
+endif
+endif
+ifdef REQUIRE_PACKAGES_LIBTAR
+PACKAGEDIR_LIBTAR:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /libtar/Makefile.fpc,$(PACKAGESDIR))))))
+ifneq ($(PACKAGEDIR_LIBTAR),)
+ifneq ($(wildcard $(PACKAGEDIR_LIBTAR)/units/$(TARGETSUFFIX)),)
+UNITDIR_LIBTAR=$(PACKAGEDIR_LIBTAR)/units/$(TARGETSUFFIX)
+else
+UNITDIR_LIBTAR=$(PACKAGEDIR_LIBTAR)
+endif
+ifneq ($(wildcard $(PACKAGEDIR_LIBTAR)/units/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_LIBTAR=$(PACKAGEDIR_LIBTAR)/units/$(SOURCESUFFIX)
+else
+ifneq ($(wildcard $(PACKAGEDIR_LIBTAR)/units_bs/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_LIBTAR=$(PACKAGEDIR_LIBTAR)/units_bs/$(SOURCESUFFIX)
+else
+UNITDIR_FPMAKE_LIBTAR=$(PACKAGEDIR_LIBTAR)
+endif
+endif
+ifdef CHECKDEPEND
+$(PACKAGEDIR_LIBTAR)/$(FPCMADE):
+ $(MAKE) -C $(PACKAGEDIR_LIBTAR) $(FPCMADE)
+override ALLDEPENDENCIES+=$(PACKAGEDIR_LIBTAR)/$(FPCMADE)
+endif
+else
+PACKAGEDIR_LIBTAR=
+UNITDIR_LIBTAR:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /libtar/Package.fpc,$(UNITSDIR)))))
+ifneq ($(UNITDIR_LIBTAR),)
+UNITDIR_LIBTAR:=$(firstword $(UNITDIR_LIBTAR))
+else
+UNITDIR_LIBTAR=
+endif
+endif
+ifdef UNITDIR_LIBTAR
+override COMPILER_UNITDIR+=$(UNITDIR_LIBTAR)
+endif
+ifdef UNITDIR_FPMAKE_LIBTAR
+override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_LIBTAR)
+endif
+endif
+ifdef REQUIRE_PACKAGES_FPMKUNIT
+PACKAGEDIR_FPMKUNIT:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fpmkunit/Makefile.fpc,$(PACKAGESDIR))))))
+ifneq ($(PACKAGEDIR_FPMKUNIT),)
+ifneq ($(wildcard $(PACKAGEDIR_FPMKUNIT)/units/$(TARGETSUFFIX)),)
+UNITDIR_FPMKUNIT=$(PACKAGEDIR_FPMKUNIT)/units/$(TARGETSUFFIX)
+else
+UNITDIR_FPMKUNIT=$(PACKAGEDIR_FPMKUNIT)
+endif
+ifneq ($(wildcard $(PACKAGEDIR_FPMKUNIT)/units/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_FPMKUNIT=$(PACKAGEDIR_FPMKUNIT)/units/$(SOURCESUFFIX)
+else
+ifneq ($(wildcard $(PACKAGEDIR_FPMKUNIT)/units_bs/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_FPMKUNIT=$(PACKAGEDIR_FPMKUNIT)/units_bs/$(SOURCESUFFIX)
+else
+UNITDIR_FPMAKE_FPMKUNIT=$(PACKAGEDIR_FPMKUNIT)
+endif
+endif
+ifdef CHECKDEPEND
+$(PACKAGEDIR_FPMKUNIT)/$(FPCMADE):
+ $(MAKE) -C $(PACKAGEDIR_FPMKUNIT) $(FPCMADE)
+override ALLDEPENDENCIES+=$(PACKAGEDIR_FPMKUNIT)/$(FPCMADE)
+endif
+else
+PACKAGEDIR_FPMKUNIT=
+UNITDIR_FPMKUNIT:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /fpmkunit/Package.fpc,$(UNITSDIR)))))
+ifneq ($(UNITDIR_FPMKUNIT),)
+UNITDIR_FPMKUNIT:=$(firstword $(UNITDIR_FPMKUNIT))
+else
+UNITDIR_FPMKUNIT=
+endif
+endif
+ifdef UNITDIR_FPMKUNIT
+override COMPILER_UNITDIR+=$(UNITDIR_FPMKUNIT)
+endif
+ifdef UNITDIR_FPMAKE_FPMKUNIT
+override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_FPMKUNIT)
+endif
+endif
+ifdef REQUIRE_PACKAGES_FCL-JS
+PACKAGEDIR_FCL-JS:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fcl-js/Makefile.fpc,$(PACKAGESDIR))))))
+ifneq ($(PACKAGEDIR_FCL-JS),)
+ifneq ($(wildcard $(PACKAGEDIR_FCL-JS)/units/$(TARGETSUFFIX)),)
+UNITDIR_FCL-JS=$(PACKAGEDIR_FCL-JS)/units/$(TARGETSUFFIX)
+else
+UNITDIR_FCL-JS=$(PACKAGEDIR_FCL-JS)
+endif
+ifneq ($(wildcard $(PACKAGEDIR_FCL-JS)/units/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_FCL-JS=$(PACKAGEDIR_FCL-JS)/units/$(SOURCESUFFIX)
+else
+ifneq ($(wildcard $(PACKAGEDIR_FCL-JS)/units_bs/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_FCL-JS=$(PACKAGEDIR_FCL-JS)/units_bs/$(SOURCESUFFIX)
+else
+UNITDIR_FPMAKE_FCL-JS=$(PACKAGEDIR_FCL-JS)
+endif
+endif
+ifdef CHECKDEPEND
+$(PACKAGEDIR_FCL-JS)/$(FPCMADE):
+ $(MAKE) -C $(PACKAGEDIR_FCL-JS) $(FPCMADE)
+override ALLDEPENDENCIES+=$(PACKAGEDIR_FCL-JS)/$(FPCMADE)
+endif
+else
+PACKAGEDIR_FCL-JS=
+UNITDIR_FCL-JS:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /fcl-js/Package.fpc,$(UNITSDIR)))))
+ifneq ($(UNITDIR_FCL-JS),)
+UNITDIR_FCL-JS:=$(firstword $(UNITDIR_FCL-JS))
+else
+UNITDIR_FCL-JS=
+endif
+endif
+ifdef UNITDIR_FCL-JS
+override COMPILER_UNITDIR+=$(UNITDIR_FCL-JS)
+endif
+ifdef UNITDIR_FPMAKE_FCL-JS
+override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_FCL-JS)
+endif
+endif
+ifdef REQUIRE_PACKAGES_FCL-PASSRC
+PACKAGEDIR_FCL-PASSRC:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fcl-passrc/Makefile.fpc,$(PACKAGESDIR))))))
+ifneq ($(PACKAGEDIR_FCL-PASSRC),)
+ifneq ($(wildcard $(PACKAGEDIR_FCL-PASSRC)/units/$(TARGETSUFFIX)),)
+UNITDIR_FCL-PASSRC=$(PACKAGEDIR_FCL-PASSRC)/units/$(TARGETSUFFIX)
+else
+UNITDIR_FCL-PASSRC=$(PACKAGEDIR_FCL-PASSRC)
+endif
+ifneq ($(wildcard $(PACKAGEDIR_FCL-PASSRC)/units/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_FCL-PASSRC=$(PACKAGEDIR_FCL-PASSRC)/units/$(SOURCESUFFIX)
+else
+ifneq ($(wildcard $(PACKAGEDIR_FCL-PASSRC)/units_bs/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_FCL-PASSRC=$(PACKAGEDIR_FCL-PASSRC)/units_bs/$(SOURCESUFFIX)
+else
+UNITDIR_FPMAKE_FCL-PASSRC=$(PACKAGEDIR_FCL-PASSRC)
+endif
+endif
+ifdef CHECKDEPEND
+$(PACKAGEDIR_FCL-PASSRC)/$(FPCMADE):
+ $(MAKE) -C $(PACKAGEDIR_FCL-PASSRC) $(FPCMADE)
+override ALLDEPENDENCIES+=$(PACKAGEDIR_FCL-PASSRC)/$(FPCMADE)
+endif
+else
+PACKAGEDIR_FCL-PASSRC=
+UNITDIR_FCL-PASSRC:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /fcl-passrc/Package.fpc,$(UNITSDIR)))))
+ifneq ($(UNITDIR_FCL-PASSRC),)
+UNITDIR_FCL-PASSRC:=$(firstword $(UNITDIR_FCL-PASSRC))
+else
+UNITDIR_FCL-PASSRC=
+endif
+endif
+ifdef UNITDIR_FCL-PASSRC
+override COMPILER_UNITDIR+=$(UNITDIR_FCL-PASSRC)
+endif
+ifdef UNITDIR_FPMAKE_FCL-PASSRC
+override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_FCL-PASSRC)
+endif
+endif
+ifndef NOCPUDEF
+override FPCOPTDEF=$(ARCH)
+endif
+ifneq ($(OS_TARGET),$(OS_SOURCE))
+override FPCOPT+=-T$(OS_TARGET)
+endif
+ifneq ($(CPU_TARGET),$(CPU_SOURCE))
+override FPCOPT+=-P$(ARCH)
+endif
+ifeq ($(OS_SOURCE),openbsd)
+override FPCOPT+=-FD$(NEW_BINUTILS_PATH)
+override FPCMAKEOPT+=-FD$(NEW_BINUTILS_PATH)
+endif
+ifndef CROSSBOOTSTRAP
+ifneq ($(BINUTILSPREFIX),)
+override FPCOPT+=-XP$(BINUTILSPREFIX)
+endif
+ifneq ($(BINUTILSPREFIX),)
+override FPCOPT+=-Xr$(RLINKPATH)
+endif
+endif
+ifndef CROSSCOMPILE
+ifneq ($(BINUTILSPREFIX),)
+override FPCMAKEOPT+=-XP$(BINUTILSPREFIX)
+endif
+endif
+ifdef UNITDIR
+override FPCOPT+=$(addprefix -Fu,$(UNITDIR))
+endif
+ifdef LIBDIR
+override FPCOPT+=$(addprefix -Fl,$(LIBDIR))
+endif
+ifdef OBJDIR
+override FPCOPT+=$(addprefix -Fo,$(OBJDIR))
+endif
+ifdef INCDIR
+override FPCOPT+=$(addprefix -Fi,$(INCDIR))
+endif
+ifdef LINKSMART
+override FPCOPT+=-XX
+endif
+ifdef CREATESMART
+override FPCOPT+=-CX
+endif
+ifdef DEBUG
+override FPCOPT+=-gl
+override FPCOPTDEF+=DEBUG
+endif
+ifdef RELEASE
+ifneq ($(findstring 2.0.,$(FPC_VERSION)),)
+ifeq ($(CPU_TARGET),i386)
+FPCCPUOPT:=-OG2p3
+endif
+ifeq ($(CPU_TARGET),powerpc)
+FPCCPUOPT:=-O1r
+endif
+else
+FPCCPUOPT:=-O2
+endif
+override FPCOPT+=-Ur -Xs $(FPCCPUOPT) -n
+override FPCOPTDEF+=RELEASE
+endif
+ifdef STRIP
+override FPCOPT+=-Xs
+endif
+ifdef OPTIMIZE
+override FPCOPT+=-O2
+endif
+ifdef VERBOSE
+override FPCOPT+=-vwni
+endif
+ifdef COMPILER_OPTIONS
+override FPCOPT+=$(COMPILER_OPTIONS)
+endif
+ifdef COMPILER_UNITDIR
+override FPCOPT+=$(addprefix -Fu,$(COMPILER_UNITDIR))
+endif
+ifdef COMPILER_LIBRARYDIR
+override FPCOPT+=$(addprefix -Fl,$(COMPILER_LIBRARYDIR))
+endif
+ifdef COMPILER_OBJECTDIR
+override FPCOPT+=$(addprefix -Fo,$(COMPILER_OBJECTDIR))
+endif
+ifdef COMPILER_INCLUDEDIR
+override FPCOPT+=$(addprefix -Fi,$(COMPILER_INCLUDEDIR))
+endif
+ifdef CROSSBINDIR
+override FPCOPT+=-FD$(CROSSBINDIR)
+endif
+ifdef COMPILER_TARGETDIR
+override FPCOPT+=-FE$(COMPILER_TARGETDIR)
+ifeq ($(COMPILER_TARGETDIR),.)
+override TARGETDIRPREFIX=
+else
+override TARGETDIRPREFIX=$(COMPILER_TARGETDIR)/
+endif
+endif
+ifdef COMPILER_UNITTARGETDIR
+override FPCOPT+=-FU$(COMPILER_UNITTARGETDIR)
+ifeq ($(COMPILER_UNITTARGETDIR),.)
+override UNITTARGETDIRPREFIX=
+else
+override UNITTARGETDIRPREFIX=$(COMPILER_UNITTARGETDIR)/
+endif
+else
+ifdef COMPILER_TARGETDIR
+override COMPILER_UNITTARGETDIR=$(COMPILER_TARGETDIR)
+override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX)
+endif
+endif
+ifdef CREATESHARED
+override FPCOPT+=-Cg
+endif
+ifneq ($(findstring $(OS_TARGET),freebsd openbsd netbsd linux solaris),)
+ifeq ($(CPU_TARGET),x86_64)
+override FPCOPT+=-Cg
+endif
+endif
+ifdef LINKSHARED
+endif
+ifdef OPT
+override FPCOPT+=$(OPT)
+endif
+ifdef FPCOPTDEF
+override FPCOPT+=$(addprefix -d,$(FPCOPTDEF))
+endif
+ifdef CFGFILE
+override FPCOPT+=@$(CFGFILE)
+endif
+ifdef USEENV
+override FPCEXTCMD:=$(FPCOPT)
+override FPCOPT:=!FPCEXTCMD
+export FPCEXTCMD
+endif
+override AFULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
+override AFULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
+ifneq ($(AFULL_TARGET),$(AFULL_SOURCE))
+override ACROSSCOMPILE=1
+endif
+ifdef ACROSSCOMPILE
+override FPCOPT+=$(CROSSOPT)
+endif
+override COMPILER:=$(strip $(FPC) $(FPCOPT))
+ifeq (,$(findstring -s ,$(COMPILER)))
+EXECPPAS=
+else
+ifeq ($(FULL_SOURCE),$(FULL_TARGET))
+ifdef RUNBATCH
+EXECPPAS:=@$(RUNBATCH) $(PPAS)
+else
+EXECPPAS:=@$(PPAS)
+endif
+endif
+endif
+ifdef TARGET_RSTS
+override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS))
+override CLEANRSTFILES+=$(RSTFILES)
+endif
+.PHONY: fpc_install fpc_sourceinstall fpc_exampleinstall
+ifdef INSTALL_UNITS
+override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(INSTALL_UNITS))
+endif
+ifdef INSTALL_BUILDUNIT
+override INSTALLPPUFILES:=$(filter-out $(INSTALL_BUILDUNIT)$(PPUEXT),$(INSTALLPPUFILES))
+endif
+ifdef INSTALLPPUFILES
+override INSTALLPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES)))
+ifneq ($(UNITTARGETDIRPREFIX),)
+override INSTALLPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(notdir $(INSTALLPPUFILES)))
+override INSTALLPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(notdir $(INSTALLPPULINKFILES))))
+endif
+override INSTALL_CREATEPACKAGEFPC=1
+endif
+ifdef INSTALLEXEFILES
+ifneq ($(TARGETDIRPREFIX),)
+override INSTALLEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(notdir $(INSTALLEXEFILES)))
+endif
+endif
+fpc_install: all $(INSTALLTARGET)
+ifdef INSTALLEXEFILES
+ $(MKDIR) $(INSTALL_BINDIR)
+ $(INSTALLEXE) $(INSTALLEXEFILES) $(INSTALL_BINDIR)
+endif
+ifdef INSTALL_CREATEPACKAGEFPC
+ifdef FPCMAKE
+ifdef PACKAGE_VERSION
+ifneq ($(wildcard Makefile.fpc),)
+ $(FPCMAKE) -p -T$(CPU_TARGET)-$(OS_TARGET) Makefile.fpc
+ $(MKDIR) $(INSTALL_UNITDIR)
+ $(INSTALL) Package.fpc $(INSTALL_UNITDIR)
+endif
+endif
+endif
+endif
+ifdef INSTALLPPUFILES
+ $(MKDIR) $(INSTALL_UNITDIR)
+ $(INSTALL) $(INSTALLPPUFILES) $(INSTALL_UNITDIR)
+ifneq ($(INSTALLPPULINKFILES),)
+ $(INSTALL) $(INSTALLPPULINKFILES) $(INSTALL_UNITDIR)
+endif
+ifneq ($(wildcard $(LIB_FULLNAME)),)
+ $(MKDIR) $(INSTALL_LIBDIR)
+ $(INSTALL) $(LIB_FULLNAME) $(INSTALL_LIBDIR)
+ifdef inUnix
+ ln -sf $(LIB_FULLNAME) $(INSTALL_LIBDIR)/$(LIB_NAME)
+endif
+endif
+endif
+ifdef INSTALL_FILES
+ $(MKDIR) $(INSTALL_DATADIR)
+ $(INSTALL) $(INSTALL_FILES) $(INSTALL_DATADIR)
+endif
+fpc_sourceinstall: distclean
+ $(MKDIR) $(INSTALL_SOURCEDIR)
+ $(COPYTREE) $(BASEDIR)/* $(INSTALL_SOURCEDIR)
+fpc_exampleinstall: $(addsuffix _distclean,$(TARGET_EXAMPLEDIRS))
+ifdef HASEXAMPLES
+ $(MKDIR) $(INSTALL_EXAMPLEDIR)
+endif
+ifdef EXAMPLESOURCEFILES
+ $(COPY) $(EXAMPLESOURCEFILES) $(INSTALL_EXAMPLEDIR)
+endif
+ifdef TARGET_EXAMPLEDIRS
+ $(COPYTREE) $(addsuffix /*,$(TARGET_EXAMPLEDIRS)) $(INSTALL_EXAMPLEDIR)
+endif
+.PHONY: fpc_distinstall
+fpc_distinstall: install exampleinstall
+.PHONY: fpc_zipinstall fpc_zipsourceinstall fpc_zipexampleinstall
+ifndef PACKDIR
+ifndef inUnix
+PACKDIR=$(BASEDIR)/../fpc-pack
+else
+PACKDIR=/tmp/fpc-pack
+endif
+endif
+ifndef ZIPNAME
+ifdef DIST_ZIPNAME
+ZIPNAME=$(DIST_ZIPNAME)
+else
+ZIPNAME=$(PACKAGE_NAME)
+endif
+endif
+ifndef FULLZIPNAME
+FULLZIPNAME=$(ZIPCROSSPREFIX)$(ZIPPREFIX)$(ZIPNAME)$(ZIPSUFFIX)
+endif
+ifndef ZIPTARGET
+ifdef DIST_ZIPTARGET
+ZIPTARGET=DIST_ZIPTARGET
+else
+ZIPTARGET=install
+endif
+endif
+ifndef USEZIP
+ifdef inUnix
+USETAR=1
+endif
+endif
+ifndef inUnix
+USEZIPWRAPPER=1
+endif
+ifdef USEZIPWRAPPER
+ZIPPATHSEP=$(PATHSEP)
+ZIPWRAPPER=$(subst /,$(PATHSEP),$(DIST_DESTDIR)/fpczip$(SRCBATCHEXT))
+else
+ZIPPATHSEP=/
+endif
+ZIPCMD_CDPACK:=cd $(subst /,$(ZIPPATHSEP),$(PACKDIR))
+ZIPCMD_CDBASE:=cd $(subst /,$(ZIPPATHSEP),$(BASEDIR))
+ifdef USETAR
+ZIPDESTFILE:=$(DIST_DESTDIR)/$(FULLZIPNAME)$(TAREXT)
+ZIPCMD_ZIP:=$(TARPROG) c$(TAROPT)f $(ZIPDESTFILE) *
+else
+ZIPDESTFILE:=$(DIST_DESTDIR)/$(FULLZIPNAME)$(ZIPEXT)
+ZIPCMD_ZIP:=$(subst /,$(ZIPPATHSEP),$(ZIPPROG)) -Dr $(ZIPOPT) $(ZIPDESTFILE) *
+endif
+fpc_zipinstall:
+ $(MAKE) $(ZIPTARGET) INSTALL_PREFIX=$(PACKDIR) ZIPINSTALL=1
+ $(MKDIR) $(DIST_DESTDIR)
+ $(DEL) $(ZIPDESTFILE)
+ifdef USEZIPWRAPPER
+ifneq ($(ECHOREDIR),echo)
+ $(ECHOREDIR) -e "$(subst \,\\,$(ZIPCMD_CDPACK))" > $(ZIPWRAPPER)
+ $(ECHOREDIR) -e "$(subst \,\\,$(ZIPCMD_ZIP))" >> $(ZIPWRAPPER)
+ $(ECHOREDIR) -e "$(subst \,\\,$(ZIPCMD_CDBASE))" >> $(ZIPWRAPPER)
+else
+ echo $(ZIPCMD_CDPACK) > $(ZIPWRAPPER)
+ echo $(ZIPCMD_ZIP) >> $(ZIPWRAPPER)
+ echo $(ZIPCMD_CDBASE) >> $(ZIPWRAPPER)
+endif
+ifdef inUnix
+ /bin/sh $(ZIPWRAPPER)
+else
+ifdef RUNBATCH
+ $(RUNBATCH) $(ZIPWRAPPER)
+else
+ $(ZIPWRAPPER)
+endif
+endif
+ $(DEL) $(ZIPWRAPPER)
+else
+ $(ZIPCMD_CDPACK) ; $(ZIPCMD_ZIP) ; $(ZIPCMD_CDBASE)
+endif
+ $(DELTREE) $(PACKDIR)
+fpc_zipsourceinstall:
+ $(MAKE) fpc_zipinstall ZIPTARGET=sourceinstall ZIPSUFFIX=$(ZIPSOURCESUFFIX)
+fpc_zipexampleinstall:
+ifdef HASEXAMPLES
+ $(MAKE) fpc_zipinstall ZIPTARGET=exampleinstall ZIPSUFFIX=$(ZIPEXAMPLESUFFIX)
+endif
+fpc_zipdistinstall:
+ $(MAKE) fpc_zipinstall ZIPTARGET=distinstall
+.PHONY: fpc_clean fpc_cleanall fpc_distclean
+ifdef EXEFILES
+override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES))
+override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
+endif
+ifdef CLEAN_PROGRAMS
+override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
+override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
+endif
+ifdef CLEAN_UNITS
+override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(CLEAN_UNITS))
+endif
+ifdef CLEANPPUFILES
+override CLEANPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES)))
+ifdef DEBUGSYMEXT
+override CLEANPPULINKFILES+=$(subst $(PPUEXT),$(DEBUGSYMEXT),$(CLEANPPUFILES))
+endif
+override CLEANPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPUFILES))
+override CLEANPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPULINKFILES)))
+endif
+fpc_clean: $(CLEANTARGET)
+ifdef CLEANEXEFILES
+ -$(DEL) $(CLEANEXEFILES)
+endif
+ifdef CLEANEXEDBGFILES
+ -$(DELTREE) $(CLEANEXEDBGFILES)
+endif
+ifdef CLEANPPUFILES
+ -$(DEL) $(CLEANPPUFILES)
+endif
+ifneq ($(CLEANPPULINKFILES),)
+ -$(DEL) $(CLEANPPULINKFILES)
+endif
+ifdef CLEANRSTFILES
+ -$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
+endif
+ifdef CLEAN_FILES
+ -$(DEL) $(CLEAN_FILES)
+endif
+ifdef LIB_NAME
+ -$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
+endif
+ -$(DEL) $(FPCMADE) Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
+ -$(DEL) *$(ASMEXT) *_ppas$(BATCHEXT)
+fpc_cleanall: $(CLEANTARGET)
+ifdef CLEANEXEFILES
+ -$(DEL) $(CLEANEXEFILES)
+endif
+ifdef COMPILER_UNITTARGETDIR
+ifdef CLEANPPUFILES
+ -$(DEL) $(CLEANPPUFILES)
+endif
+ifneq ($(CLEANPPULINKFILES),)
+ -$(DEL) $(CLEANPPULINKFILES)
+endif
+ifdef CLEANRSTFILES
+ -$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
+endif
+endif
+ifdef CLEAN_FILES
+ -$(DEL) $(CLEAN_FILES)
+endif
+ -$(DELTREE) units
+ -$(DEL) *$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
+ifneq ($(PPUEXT),.ppu)
+ -$(DEL) *.o *.ppu *.a
+endif
+ -$(DELTREE) *$(SMARTEXT)
+ -$(DEL) fpcmade.* Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
+ -$(DEL) *_ppas$(BATCHEXT)
+ifdef AOUTEXT
+ -$(DEL) *$(AOUTEXT)
+endif
+ifdef DEBUGSYMEXT
+ -$(DEL) *$(DEBUGSYMEXT)
+endif
+fpc_distclean: cleanall
+.PHONY: fpc_baseinfo
+override INFORULES+=fpc_baseinfo
+fpc_baseinfo:
+ @$(ECHO)
+ @$(ECHO) == Package info ==
+ @$(ECHO) Package Name..... $(PACKAGE_NAME)
+ @$(ECHO) Package Version.. $(PACKAGE_VERSION)
+ @$(ECHO)
+ @$(ECHO) == Configuration info ==
+ @$(ECHO)
+ @$(ECHO) FPC.......... $(FPC)
+ @$(ECHO) FPC Version.. $(FPC_VERSION)
+ @$(ECHO) Source CPU... $(CPU_SOURCE)
+ @$(ECHO) Target CPU... $(CPU_TARGET)
+ @$(ECHO) Source OS.... $(OS_SOURCE)
+ @$(ECHO) Target OS.... $(OS_TARGET)
+ @$(ECHO) Full Source.. $(FULL_SOURCE)
+ @$(ECHO) Full Target.. $(FULL_TARGET)
+ @$(ECHO) SourceSuffix. $(SOURCESUFFIX)
+ @$(ECHO) TargetSuffix. $(TARGETSUFFIX)
+ @$(ECHO) FPC fpmake... $(FPCFPMAKE)
+ @$(ECHO)
+ @$(ECHO) == Directory info ==
+ @$(ECHO)
+ @$(ECHO) Required pkgs... $(REQUIRE_PACKAGES)
+ @$(ECHO)
+ @$(ECHO) Basedir......... $(BASEDIR)
+ @$(ECHO) FPCDir.......... $(FPCDIR)
+ @$(ECHO) CrossBinDir..... $(CROSSBINDIR)
+ @$(ECHO) UnitsDir........ $(UNITSDIR)
+ @$(ECHO) PackagesDir..... $(PACKAGESDIR)
+ @$(ECHO)
+ @$(ECHO) GCC library..... $(GCCLIBDIR)
+ @$(ECHO) Other library... $(OTHERLIBDIR)
+ @$(ECHO)
+ @$(ECHO) == Tools info ==
+ @$(ECHO)
+ @$(ECHO) As........ $(AS)
+ @$(ECHO) Ld........ $(LD)
+ @$(ECHO) Ar........ $(AR)
+ @$(ECHO) Rc........ $(RC)
+ @$(ECHO)
+ @$(ECHO) Mv........ $(MVPROG)
+ @$(ECHO) Cp........ $(CPPROG)
+ @$(ECHO) Rm........ $(RMPROG)
+ @$(ECHO) GInstall.. $(GINSTALL)
+ @$(ECHO) Echo...... $(ECHO)
+ @$(ECHO) Shell..... $(SHELL)
+ @$(ECHO) Date...... $(DATE)
+ @$(ECHO) FPCMake... $(FPCMAKE)
+ @$(ECHO) PPUMove... $(PPUMOVE)
+ @$(ECHO) Zip....... $(ZIPPROG)
+ @$(ECHO)
+ @$(ECHO) == Object info ==
+ @$(ECHO)
+ @$(ECHO) Target Loaders........ $(TARGET_LOADERS)
+ @$(ECHO) Target Units.......... $(TARGET_UNITS)
+ @$(ECHO) Target Implicit Units. $(TARGET_IMPLICITUNITS)
+ @$(ECHO) Target Programs....... $(TARGET_PROGRAMS)
+ @$(ECHO) Target Dirs........... $(TARGET_DIRS)
+ @$(ECHO) Target Examples....... $(TARGET_EXAMPLES)
+ @$(ECHO) Target ExampleDirs.... $(TARGET_EXAMPLEDIRS)
+ @$(ECHO)
+ @$(ECHO) Clean Units......... $(CLEAN_UNITS)
+ @$(ECHO) Clean Files......... $(CLEAN_FILES)
+ @$(ECHO)
+ @$(ECHO) Install Units....... $(INSTALL_UNITS)
+ @$(ECHO) Install Files....... $(INSTALL_FILES)
+ @$(ECHO)
+ @$(ECHO) == Install info ==
+ @$(ECHO)
+ @$(ECHO) DateStr.............. $(DATESTR)
+ @$(ECHO) ZipName.............. $(ZIPNAME)
+ @$(ECHO) ZipPrefix............ $(ZIPPREFIX)
+ @$(ECHO) ZipCrossPrefix....... $(ZIPCROSSPREFIX)
+ @$(ECHO) ZipSuffix............ $(ZIPSUFFIX)
+ @$(ECHO) FullZipName.......... $(FULLZIPNAME)
+ @$(ECHO) Install FPC Package.. $(INSTALL_FPCPACKAGE)
+ @$(ECHO)
+ @$(ECHO) Install base dir..... $(INSTALL_BASEDIR)
+ @$(ECHO) Install binary dir... $(INSTALL_BINDIR)
+ @$(ECHO) Install library dir.. $(INSTALL_LIBDIR)
+ @$(ECHO) Install units dir.... $(INSTALL_UNITDIR)
+ @$(ECHO) Install source dir... $(INSTALL_SOURCEDIR)
+ @$(ECHO) Install doc dir...... $(INSTALL_DOCDIR)
+ @$(ECHO) Install example dir.. $(INSTALL_EXAMPLEDIR)
+ @$(ECHO) Install data dir..... $(INSTALL_DATADIR)
+ @$(ECHO)
+ @$(ECHO) Dist destination dir. $(DIST_DESTDIR)
+ @$(ECHO) Dist zip name........ $(DIST_ZIPNAME)
+ @$(ECHO)
+.PHONY: fpc_info
+fpc_info: $(INFORULES)
+.PHONY: fpc_makefile fpc_makefiles fpc_makefile_sub1 fpc_makefile_sub2 \
+ fpc_makefile_dirs
+fpc_makefile:
+ $(FPCMAKE) -w -T$(OS_TARGET) Makefile.fpc
+fpc_makefile_sub1:
+ifdef TARGET_DIRS
+ $(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_DIRS))
+endif
+ifdef TARGET_EXAMPLEDIRS
+ $(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_EXAMPLEDIRS))
+endif
+fpc_makefile_sub2: $(addsuffix _makefile_dirs,$(TARGET_DIRS) $(TARGET_EXAMPLEDIRS))
+fpc_makefile_dirs: fpc_makefile_sub1 fpc_makefile_sub2
+fpc_makefiles: fpc_makefile fpc_makefile_dirs
+units:
+examples:
+shared:
+sourceinstall: fpc_sourceinstall
+exampleinstall: fpc_exampleinstall
+zipinstall: fpc_zipinstall
+zipsourceinstall: fpc_zipsourceinstall
+zipexampleinstall: fpc_zipexampleinstall
+zipdistinstall: fpc_zipdistinstall
+info: fpc_info
+makefiles: fpc_makefiles
+.PHONY: units examples shared sourceinstall exampleinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall info makefiles
+ifneq ($(wildcard fpcmake.loc),)
+include fpcmake.loc
+endif
+override FPCOPT:=$(filter-out -FU%,$(FPCOPT))
+override FPCOPT:=$(filter-out -FE%,$(FPCOPT))
+ifdef FPMAKEOPT
+FPMAKE_OPT+=$(FPMAKEOPT)
+endif
+FPMAKE_OPT+=--localunitdir=../..
+FPMAKE_OPT+=--globalunitdir=..
+FPMAKE_OPT+=$(FPC_TARGETOPT)
+FPMAKE_OPT+=$(addprefix -o ,$(FPCOPT))
+FPMAKE_OPT+=--compiler=$(FPC)
+FPMAKE_OPT+=-bu
+.NOTPARALLEL:
+fpmake: fpmake.pp
+ $(FPCFPMAKE) fpmake.pp $(FPMAKE_SKIP_CONFIG) $(addprefix -Fu,$(COMPILER_FPMAKE_UNITDIR)) $(FPCMAKEOPT) $(OPT)
+all: fpmake
+ $(LOCALFPMAKE) compile $(FPMAKE_OPT)
+smart: fpmake
+ $(LOCALFPMAKE) compile $(FPMAKE_OPT) -o -XX -o -CX
+release: fpmake
+ $(LOCALFPMAKE) compile $(FPMAKE_OPT) -o -dRELEASE
+debug: fpmake
+ $(LOCALFPMAKE) compile $(FPMAKE_OPT) -o -dDEBUG
+ifeq ($(FPMAKE_BIN_CLEAN),)
+clean:
+else
+clean:
+ $(FPMAKE_BIN_CLEAN) clean $(FPMAKE_OPT)
+endif
+ifeq ($(FPMAKE_BIN_CLEAN),)
+distclean: $(addsuffix _distclean,$(TARGET_DIRS)) fpc_cleanall
+else
+distclean:
+ifdef inUnix
+ { $(FPMAKE_BIN_CLEAN) distclean $(FPMAKE_OPT); if [ $$? != "0" ]; then { echo Something wrong with fpmake exectable. Remove the executable and call make recursively to recover.; $(DEL) $(FPMAKE_BIN_CLEAN); $(MAKE) fpc_cleanall; }; fi; }
+else
+ $(FPMAKE_BIN_CLEAN) distclean $(FPMAKE_OPT)
+endif
+ -$(DEL) $(LOCALFPMAKE)
+endif
+cleanall: distclean
+install: fpmake
+ifdef UNIXHier
+ $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_PREFIX) --baseinstalldir=$(INSTALL_LIBDIR)/fpc/$(FPC_VERSION) --unitinstalldir=$(INSTALL_UNITDIR)
+else
+ $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_BASEDIR) --unitinstalldir=$(INSTALL_UNITDIR)
+endif
+distinstall: fpmake
+ifdef UNIXHier
+ $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_PREFIX) --baseinstalldir=$(INSTALL_LIBDIR)/fpc/$(FPC_VERSION) --unitinstalldir=$(INSTALL_UNITDIR) -ie
+else
+ $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_BASEDIR) --unitinstalldir=$(INSTALL_UNITDIR) -ie
+endif
diff --git a/packages/pastojs/Makefile.fpc b/packages/pastojs/Makefile.fpc
new file mode 100644
index 0000000000..3ca1ed6fda
--- /dev/null
+++ b/packages/pastojs/Makefile.fpc
@@ -0,0 +1,89 @@
+#
+# Makefile.fpc for running fpmake
+#
+
+[package]
+name=pastojs
+version=2.7.1
+
+[require]
+packages=fcl-js fcl-passrc fpmkunit
+
+[install]
+fpcpackage=y
+
+[default]
+fpcdir=../..
+
+[prerules]
+FPMAKE_BIN_CLEAN=$(wildcard ./fpmake$(SRCEXEEXT))
+ifdef OS_TARGET
+FPC_TARGETOPT+=--os=$(OS_TARGET)
+endif
+ifdef CPU_TARGET
+FPC_TARGETOPT+=--cpu=$(CPU_TARGET)
+endif
+LOCALFPMAKE=./fpmake$(SRCEXEEXT)
+
+[rules]
+# Do not pass the Makefile's unit and binary target locations. fpmake uses it's own.
+override FPCOPT:=$(filter-out -FU%,$(FPCOPT))
+override FPCOPT:=$(filter-out -FE%,$(FPCOPT))
+# Compose general fpmake-parameters
+ifdef FPMAKEOPT
+FPMAKE_OPT+=$(FPMAKEOPT)
+endif
+FPMAKE_OPT+=--localunitdir=../..
+FPMAKE_OPT+=--globalunitdir=..
+FPMAKE_OPT+=$(FPC_TARGETOPT)
+FPMAKE_OPT+=$(addprefix -o ,$(FPCOPT))
+FPMAKE_OPT+=--compiler=$(FPC)
+FPMAKE_OPT+=-bu
+.NOTPARALLEL:
+
+fpmake: fpmake.pp
+ $(FPCFPMAKE) fpmake.pp $(FPMAKE_SKIP_CONFIG) $(addprefix -Fu,$(COMPILER_FPMAKE_UNITDIR)) $(FPCMAKEOPT) $(OPT)
+all: fpmake
+ $(LOCALFPMAKE) compile $(FPMAKE_OPT)
+smart: fpmake
+ $(LOCALFPMAKE) compile $(FPMAKE_OPT) -o -XX -o -CX
+release: fpmake
+ $(LOCALFPMAKE) compile $(FPMAKE_OPT) -o -dRELEASE
+debug: fpmake
+ $(LOCALFPMAKE) compile $(FPMAKE_OPT) -o -dDEBUG
+# If no fpmake exists and (dist)clean is called, do not try to build fpmake, it will
+# most often fail because the dependencies are cleared.
+# In case of a clean, simply do nothing
+ifeq ($(FPMAKE_BIN_CLEAN),)
+clean:
+else
+clean:
+ $(FPMAKE_BIN_CLEAN) clean $(FPMAKE_OPT)
+endif
+# In case of a distclean, perform an 'old'-style distclean. This to avoid problems
+# when the package is compiled using fpcmake prior to running this clean using fpmake
+ifeq ($(FPMAKE_BIN_CLEAN),)
+distclean: $(addsuffix _distclean,$(TARGET_DIRS)) fpc_cleanall
+else
+distclean:
+ifdef inUnix
+ { $(FPMAKE_BIN_CLEAN) distclean $(FPMAKE_OPT); if [ $$? != "0" ]; then { echo Something wrong with fpmake exectable. Remove the executable and call make recursively to recover.; $(DEL) $(FPMAKE_BIN_CLEAN); $(MAKE) fpc_cleanall; }; fi; }
+else
+ $(FPMAKE_BIN_CLEAN) distclean $(FPMAKE_OPT)
+endif
+ -$(DEL) $(LOCALFPMAKE)
+endif
+cleanall: distclean
+install: fpmake
+ifdef UNIXHier
+ $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_PREFIX) --baseinstalldir=$(INSTALL_LIBDIR)/fpc/$(FPC_VERSION) --unitinstalldir=$(INSTALL_UNITDIR)
+else
+ $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_BASEDIR) --unitinstalldir=$(INSTALL_UNITDIR)
+endif
+# distinstall also installs the example-sources
+distinstall: fpmake
+ifdef UNIXHier
+ $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_PREFIX) --baseinstalldir=$(INSTALL_LIBDIR)/fpc/$(FPC_VERSION) --unitinstalldir=$(INSTALL_UNITDIR) -ie
+else
+ $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_BASEDIR) --unitinstalldir=$(INSTALL_UNITDIR) -ie
+endif
diff --git a/packages/pastojs/fpmake.pp b/packages/pastojs/fpmake.pp
new file mode 100644
index 0000000000..84595dfee6
--- /dev/null
+++ b/packages/pastojs/fpmake.pp
@@ -0,0 +1,40 @@
+{$ifndef ALLPACKAGES}
+{$mode objfpc}{$H+}
+program fpmake;
+
+uses fpmkunit;
+
+Var
+ P : TPackage;
+ T : TTarget;
+
+begin
+ With Installer do
+ begin
+{$endif ALLPACKAGES}
+
+ P:=AddPackage('pastojs');
+{$ifdef ALLPACKAGES}
+ P.Directory:=ADirectory;
+{$endif ALLPACKAGES}
+
+ P.Version:='2.7.1';
+ P.OSes := AllOses;
+ P.Dependencies.Add('fcl-js');
+ P.Dependencies.Add('fcl-passrc');
+
+ P.Author := 'Free Pascal development team';
+ P.License := 'LGPL with modification, ';
+ P.HomepageURL := 'www.freepascal.org';
+
+ P.SourcePath.Add('src');
+ P.SupportBuildModes := [bmOneByOne];
+
+ P.Options.Add('-S2h');
+
+ T:=P.Targets.AddUnit('fppas2js.pp');
+{$ifndef ALLPACKAGES}
+ Run;
+ end;
+end.
+{$endif ALLPACKAGES}
diff --git a/packages/pastojs/src/fppas2js.pp b/packages/pastojs/src/fppas2js.pp
new file mode 100644
index 0000000000..3d2231c5d3
--- /dev/null
+++ b/packages/pastojs/src/fppas2js.pp
@@ -0,0 +1,1381 @@
+{
+ This file is part of the Free Component Library (FCL)
+ Copyright (c) 2014 by Michael Van Canneyt
+
+ Pascal to Javascript converter class.
+
+ 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.
+
+ **********************************************************************}
+unit fppas2js;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+ Classes, SysUtils, jsbase, jstree, pastree, pparser;
+
+Type
+ EPas2JS = Class(Exception);
+ { TPasToJSConverter }
+ TConvertContext = Class(TObject)
+
+ end;
+
+ TPasToJSConverter = Class(TObject)
+ private
+ FCurrentContext: TJSElement;
+ FMainFunction: TJSString;
+ FNameSpace: TJSString;
+ Procedure AddToSourceElements(Src: TJSSourceElements; El: TJSElement);
+ Function CreateConstDecl(El: TPasElement; AContext: TConvertContext): TJSElement;
+ Function CreateIdentifierExpr(AName: String; El: TPasElement; AContext: TConvertContext): TJSElement;
+ Function CreateTypeDecl(El: TPasElement; AContext: TConvertContext): TJSElement;
+ Function CreateVarDecl(El: TPasElement; AContext: TConvertContext): TJSElement;
+ procedure SetCurrentContext(AValue: TJSElement);
+ protected
+ // helper functions
+ Procedure DoError(Const Msg : String);
+ Procedure DoError(Const Msg : String; Const Args : Array of Const);
+ // Never create an element manually, always use the below function
+ Function CreateElement(C: TJSElementClass; Src: TPasElement): TJSElement; virtual;
+ Function GetExpressionValueType(El: TPasExpr; AContext: TConvertContext ): TJSType; virtual;
+ Function GetIdentValueType(AName: String; AContext: TConvertContext): TJSType; virtual;
+ Function TransFormIdent(El: TJSPrimaryExpressionIdent; AContext : TConvertContext): TJSElement;virtual;
+ Function CreateJSContext(AContext : TConvertContext): TJSElement;virtual;
+ Function TransFormVariableName(Const AName : String; AContext : TConvertContext) : String;
+ Function TransFormVariableName(El : TPasElement; AContext : TConvertContext) : String;
+ Function TransFormFunctionName(El : TPasElement; AContext : TConvertContext) : String;
+ Function GetExceptionObjectname(AContext : TConvertContext) : String;
+ Function ResolveType(El : TPasElement; AContext : TConvertContext) : TPasType;
+ // Statements
+ Function ConvertImplBlockElements(El: TPasImplBlock; AContext: TConvertContext): TJSElement;virtual;
+ Function ConvertBeginEndStatement(El: TPasImplBeginBlock; AContext: TConvertContext): TJSElement;virtual;
+ Function ConvertStatement(El: TPasImplStatement; AContext: TConvertContext ): TJSElement;virtual;
+ Function ConvertAssignStatement(El: TPasImplAssign; AContext: TConvertContext): TJSElement; virtual;
+ Function ConvertRaiseStatement(El: TPasImplRaise; AContext: TConvertContext ): TJSElement; virtual;
+ Function ConvertIfStatement(El: TPasImplIfElse; AContext: TConvertContext ): TJSElement; virtual;
+ Function ConvertWhileStatement(El: TPasImplWhileDo; AContext: TConvertContext): TJSElement; virtual;
+ Function ConvertRepeatStatement(El: TPasImplRepeatUntil; AContext: TConvertContext): TJSElement; virtual;
+ Function ConvertForStatement(El: TPasImplForLoop; AContext: TConvertContext): TJSElement; virtual;
+ Function ConvertFinalizationSection(El: TFinalizationSection; AContext: TConvertContext): TJSElement;virtual;
+ Function ConvertInitializationSection(El: TInitializationSection; AContext: TConvertContext): TJSElement;virtual;
+ Function ConvertSimpleStatement(El: TPasImplSimple; AContext: TConvertContext): TJSElement;virtual;
+ Function ConvertTryStatement(El: TPasImplTry; AContext: TConvertContext ): TJSElement;virtual;
+ Function ConvertWithStatement(El: TPasImplWithDo; AContext: TConvertContext): TJSElement;virtual;
+ Function ConvertTryFinallyStatement(El: TPasImplTryFinally; AContext: TConvertContext): TJSElement;virtual;
+ Function ConvertExceptOn(El: TPasImplExceptOn; AContext: TConvertContext): TJSElement;
+ Function ConvertTryExceptStatement(El: TPasImplTryExcept; AContext: TConvertContext): TJSElement;
+ // Expressions
+ Function ConvertArrayValues(El: TArrayValues; AContext : TConvertContext): TJSElement;virtual;
+ Function ConvertInheritedExpression(El: TInheritedExpr; AContext : TConvertContext): TJSElement;virtual;
+ Function ConvertNilExpr(El: TNilExpr; AContext : TConvertContext): TJSElement;virtual;
+ Function ConvertParamsExpression(El: TParamsExpr; AContext : TConvertContext): TJSElement;virtual;
+ Function ConvertRecordValues(El: TRecordValues; AContext : TConvertContext): TJSElement;virtual;
+ Function ConvertSelfExpression(El: TSelfExpr; AContext : TConvertContext): TJSElement;virtual;
+ Function ConvertBinaryExpression(El: TBinaryExpr; AContext : TConvertContext): TJSElement;virtual;
+ Function ConvertBoolConstExpression(El: TBoolConstExpr; AContext : TConvertContext): TJSElement;virtual;
+ Function ConvertPrimitiveExpression(El: TPrimitiveExpr; AContext : TConvertContext): TJSElement;virtual;
+ Function ConvertUnaryExpression(El: TUnaryExpr; AContext : TConvertContext ): TJSElement;virtual;
+ Function ConvertCallExpression(El: TParamsExpr; AContext : TConvertContext ): TJSElement;virtual;
+ Function TransFormStringLiteral(S : String) : String;
+ // Convert various TPasElement nodes
+ Function ConvertProperty(El: TPasProperty; AContext : TConvertContext ): TJSElement;virtual;
+ Function ConvertCommand(El: TPasImplCommand; AContext : TConvertContext): TJSElement;virtual;
+ Function ConvertCommands(El: TPasImplCommands; AContext : TConvertContext): TJSElement;virtual;
+ Function ConvertConst(El: TPasConst; AContext : TConvertContext): TJSElement;virtual;
+ Function ConvertDeclarations(El: TPasDeclarations; AContext : TConvertContext): TJSElement;virtual;
+ Function ConvertExportSymbol(El: TPasExportSymbol; AContext : TConvertContext): TJSElement;virtual;
+ Function ConvertExpression(El: TPasExpr; AContext : TConvertContext): TJSElement;virtual;
+ Function ConvertImplBlock(El: TPasImplBlock; AContext : TConvertContext ): TJSElement;virtual;
+ Function ConvertLabelMark(El: TPasImplLabelMark; AContext : TConvertContext): TJSElement;virtual;
+ Function ConvertLabels(El: TPasLabels; AContext : TConvertContext): TJSElement;virtual;
+ Function ConvertModule(El: TPasModule; AContext : TConvertContext): TJSElement;virtual;
+ Function ConvertPackage(El: TPasPackage; AContext : TConvertContext): TJSElement;virtual;
+ Function ConvertArgument(El: TPasArgument; AContext : TConvertContext): TJSElement;virtual;
+ Function ConvertProcedure(El: TPasProcedure; AContext : TConvertContext): TJSElement;virtual;
+ Function ConvertProcedureImpl(El: TPasProcedureImpl; AContext : TConvertContext ): TJSElement;virtual;
+ Function ConvertResString(El: TPasResString; AContext : TConvertContext): TJSElement;virtual;
+ Function ConvertResultElement(El: TPasResultElement; AContext : TConvertContext): TJSElement;virtual;
+ Function ConvertType(El: TPasElement; AContext : TConvertContext): TJSElement;virtual;
+ Function ConvertVariable(El: TPasVariable; AContext : TConvertContext): TJSElement;virtual;
+ Function ConvertElement(El : TPasElement; AContext : TConvertContext) : TJSElement; virtual;
+
+ Property CurrentContext : TJSElement Read FCurrentContext Write SetCurrentContext;
+ Public
+ Function ConvertElement(El : TPasElement) : TJSElement;
+ Property NameSpace : TJSString Read FNameSpace Write FNameSpace;
+ Property MainFunction : TJSString Read FMainFunction Write FMainFunction;
+ end;
+ EPasToJS = Class(Exception);
+
+implementation
+
+resourcestring
+ SErrUNknownExpressionClass = 'Unknown expression class: %s';
+ SErrUnexpected = 'Unexpected class: %s';
+ SerrInitalizedArray = 'Initialized array variables not yet supported';
+
+{ TPasToJSConverter }
+
+Procedure TPasToJSConverter.AddToSourceElements(Src : TJSSourceElements; El : TJSElement);
+
+Var
+ L : TJSStatementList;
+ A : TJSElement;
+
+begin
+ Repeat
+ if Not (EL is TJSStatementList) then
+ begin
+ A:=EL;
+ El:=Nil;
+ end
+ else
+ begin
+ L:=EL as TJSStatementList;
+ A:=L.A;
+ EL:=L.B;
+ L.A:=Nil;
+ L.B:=Nil;
+ FreeAndNil(L);
+ end;
+ Src.Statements.AddNode.Node:=A;
+ until (El=Nil);
+end;
+
+Function TPasToJSConverter.ConvertModule(El: TPasModule; AContext : TConvertContext): TJSElement;
+
+Var
+ I : Integer;
+ Src : TJSSourceElements;
+
+begin
+ Result:=Nil;
+ Src:=TJSSourceElements(CreateElement(TJSSourceElements,El));
+ Result:=Src;
+ if Assigned(El.InterfaceSection) then
+ AddToSourceElements(Src,ConvertElement(El.InterfaceSection,AContext));
+ if assigned(El.ImplementationSection) then
+ AddToSourceElements(Src,ConvertElement(El.ImplementationSection,AContext));
+ if (El is TPasProgram) then
+ begin
+ if Assigned(TPasProgram(El).ProgramSection) then
+ AddToSourceElements(Src,ConvertElement(TPasProgram(El).ProgramSection,AContext));
+ end;
+ if Assigned(El.InitializationSection) then
+ AddToSourceElements(Src,ConvertElement(El.InitializationSection,AContext));
+ if Assigned(El.FinalizationSection) then
+ AddToSourceElements(Src,ConvertElement(El.FinalizationSection,AContext));
+{
+TPasUnitModule = Class(TPasModule)
+TPasLibrary = class(TPasModule)
+}
+end;
+
+Function TPasToJSConverter.CreateElement(C : TJSElementClass; Src : TPasElement) : TJSElement;
+
+begin
+ if Assigned(Src) then
+ Result:=C.Create(Src.SourceLinenumber,1,Src.SourceFilename)
+ else
+ Result:=C.Create(0,0,'');
+end;
+
+Function TPasToJSConverter.ConvertUnaryExpression(El: TUnaryExpr; AContext : TConvertContext): TJSElement;
+
+Var
+ C : TJSElementClass;
+ U : TJSUnaryExpression;
+ E : TJSElement;
+
+begin
+ Result:=Nil;
+ E:=ConvertElement(El.Operand);
+ Case el.OpCode of
+ eopAdd:
+ begin
+ U:=TJSUnaryPlusExpression(CreateElement(TJSUnaryPlusExpression,El));
+ U.A:=E;
+ end;
+ eopSubtract:
+ begin
+ U:=TJSUnaryPlusExpression(CreateElement(TJSUnaryMinusExpression,El));
+ U.A:=E;
+ end;
+ end;
+ Result:=U;
+end;
+
+Function TPasToJSConverter.ConvertCallExpression(El: TParamsExpr;
+ AContext: TConvertContext): TJSElement;
+Var
+ C : TJSElementClass;
+ U : TJSUnaryExpression;
+ E : TJSElement;
+ Id : TJSPrimaryExpressionIdent;
+
+begin
+ Raise EPasToJS.CreateFmt(SErrUnexpected,[EL.ClassName]);
+ Result:=Nil;
+ ID:=TJSPrimaryExpressionIdent(CreateElement(TJSPrimaryExpressionIdent,EL));
+ Case el.OpCode of
+ eopAdd:
+ begin
+ U:=TJSUnaryPlusExpression(CreateElement(TJSUnaryPlusExpression,El));
+ U.A:=E;
+ end;
+ eopSubtract:
+ begin
+ U:=TJSUnaryPlusExpression(CreateElement(TJSUnaryMinusExpression,El));
+ U.A:=E;
+ end;
+ end;
+ Result:=U;
+end;
+
+Function TPasToJSConverter.TransFormStringLiteral(S: String): String;
+begin
+ // This needs some more complicated algorithm that handles #13"abc etc.
+ Result:=Copy(S,2,Length(S)-2);
+ Result:=StringReplace(Result,'''''','''',[rfReplaceAll]);
+end;
+
+
+Function TPasToJSConverter.GetIdentValueType(AName : String; AContext : TConvertContext): TJSType;
+
+begin
+ Result:=jstUNDEFINED;
+end;
+
+
+Function TPasToJSConverter.GetExpressionValueType(El : TPasExpr; AContext : TConvertContext) : TJSType;
+
+ Function CombineValueType(A,B : TJSType) : TJSType;
+
+ begin
+ If (A=jstUndefined) then
+ Result:=B
+ else if (B=jstundefined) then
+ Result:=A
+ else
+ Result:=A; // pick the first
+ end;
+
+Var
+ A,B : TJSType;
+
+begin
+ if (El is TBoolConstExpr) then
+ Result:=jstBoolean
+ else If (EL is TPrimitiveExpr) then
+ begin
+ Case EL.Kind of
+ pekIdent : Result:=GetIdentValueType(El.Name,AContext);
+ pekNumber : Result:=jstNumber;
+ pekString : Result:=jstString;
+ pekSet : Result:=jstUNDEFINED;
+ pekNil : Result:=jstNull;
+ pekBoolConst : Result:=jstBoolean;
+ pekRange : Result:=jstUNDEFINED;
+ pekFuncParams : Result:=jstUNDEFINED;
+ pekArrayParams : Result:=jstUNDEFINED;
+ pekListOfExp : Result:=jstUNDEFINED;
+ pekInherited : Result:=jstUNDEFINED;
+ pekSelf : Result:=jstObject;
+ end
+ end
+ else if (EL is TUnaryExpr) then
+ Result:=GetExpressionValueType(TUnaryExpr(El).Operand,AContext)
+ else if (EL is TBinaryExpr) then
+ begin
+ A:=GetExpressionValueType(TBinaryExpr(El).Left,AContext);
+ B:=GetExpressionValueType(TBinaryExpr(El).Right,AContext);
+ Result:=CombineValueType(A,B);
+ end
+ else
+ result:=jstUndefined
+end;
+
+Function TPasToJSConverter.ConvertBinaryExpression(El: TBinaryExpr; AContext : TConvertContext): TJSElement;
+
+Type
+ TJSBinaryClass = Class of TJSBinary;
+
+Const
+ BinClasses : Array [TExprOpCode] of TJSBinaryClass = (
+ Nil, //eopEmpty,
+ TJSAdditiveExpressionPlus,
+ TJSAdditiveExpressionMinus,
+ TJSMultiplicativeExpressionMul,
+ TJSMultiplicativeExpressionDiv,
+ TJSMultiplicativeExpressionDiv,
+ TJSMultiplicativeExpressionMod,
+ Nil, //eopPower
+ TJSRShiftExpression,
+ TJSLShiftExpression,
+ Nil, // Not
+ Nil, // And
+ Nil, // Or
+ Nil, // XOr
+ TJSEqualityExpressionEQ,
+ TJSEqualityExpressionNE,
+ TJSRelationalExpressionLT,
+ TJSRelationalExpressionGT,
+ TJSRelationalExpressionLE,
+ TJSRelationalExpressionGE,
+ Nil, // In
+ TJSRelationalExpressionInstanceOf, // is
+ Nil, // As
+ Nil, // Symmetrical diff
+ Nil, // Address,
+ Nil, // Deref
+ Nil // SubIndent,
+ );
+
+Var
+ R : TJSBinary;
+ C : TJSBinaryClass;
+ A,B : TJSElement;
+
+begin
+ Result:=Nil;
+ C:=BinClasses[EL.OpCode];
+ A:=ConvertElement(EL.left,AContext);
+ try
+ B:=ConvertElement(EL.right,AContext);
+ except
+ FreeAndNil(A);
+ Raise;
+ end;
+ if (C=Nil) then
+ Case EL.OpCode of
+ eopAs : begin
+ Result:=ConvertElement(El.Left,AContext);
+ end;
+ eopAnd,
+ eopOr,
+ eopXor :
+ begin
+ if (GetExpressionValueType(EL.Left,AContext)=jstNumber)
+ or (GetExpressionValueType(EL.Right,AContext)=jstNumber) then
+ Case EL.OpCode of
+ eopAnd : C:=TJSBitwiseAndExpression;
+ eopOr : C:=TJSBitwiseOrExpression;
+ eopXor : C:=TJSBitwiseXOrExpression;
+ end
+ else
+ Case EL.OpCode of
+ eopAnd : C:=TJSLogicalAndExpression;
+ eopOr : C:=TJSLogicalOrExpression;
+ eopXOR : DoError('Logical XOR not supported yet');
+ end;
+ end;
+ eopSubIdent :
+ begin
+ Result:=TJSDotMemberExpression(CreateElement(TJSDotMemberExpression,El));
+ TJSDotMemberExpression(Result).Mexpr:=A;
+ if Not (B is TJSPrimaryExpressionIdent) then
+ DOError('Member expression must be an identifier');
+ TJSDotMemberExpression(Result).Name:=TJSPrimaryExpressionIdent(B).Name;
+ FreeAndNil(B);
+ end
+ else
+ DoError('Unknown/Unsupported operand type for binary expression');
+ end;
+ if (Result=Nil) and (C<>Nil) then
+ begin
+ R:=TJSBinary(CreateElement(C,EL));
+ R.A:=A;
+ R.B:=B;
+ Result:=R;
+ end;
+end;
+
+Function TPasToJSConverter.TransFormIdent(El: TJSPrimaryExpressionIdent; AContext : TConvertContext): TJSElement;
+
+begin
+ EL.Name:=LowerCase(EL.Name);
+ Result:=El;
+end;
+
+
+Function TPasToJSConverter.CreateIdentifierExpr(AName : String; El : TPasElement; AContext : TConvertContext): TJSElement;
+
+Var
+ I : TJSPrimaryExpressionIdent;
+
+begin
+ I:=TJSPrimaryExpressionIdent(CreateElement(TJSPrimaryExpressionIdent,El));
+ I.Name:=AName;
+ Result:=TransFormIdent(I,AContext);
+end;
+
+Function TPasToJSConverter.ConvertPrimitiveExpression(El: TPrimitiveExpr; AContext : TConvertContext): TJSElement;
+
+Var
+ L : TJSLiteral;
+ D : TJSNumber;
+ C : Integer;
+
+begin
+ Result:=Nil;
+ case El.Kind of
+ pekString:
+ begin
+ L:=TJSLiteral(CreateElement(TJSLiteral,El));
+ L.Value.AsString:=TransFormStringLiteral(El.Value);
+ Result:=L;
+ end;
+ pekNumber:
+ begin
+ L:=TJSLiteral(CreateElement(TJSLiteral,El));
+ Val(El.Value,D,C);
+ if C<>0 then
+ DoError('Invalid number: %s',[EL.Value]);
+ L.Value.AsNumber:=D;
+ Result:=L;
+ end;
+ pekIdent:
+ begin
+ Result:=CreateIdentifierExpr(El.Value,El,AContext);
+ end;
+ end;
+end;
+
+
+Function TPasToJSConverter.ConvertBoolConstExpression(El: TBoolConstExpr; AContext : TConvertContext): TJSElement;
+
+Var
+ L : TJSLiteral;
+
+begin
+ Result:=Nil;
+ L:=TJSLiteral(CreateElement(TJSLiteral,El));
+ L.Value.AsBoolean:=EL.Value;
+ Result:=L;
+end;
+
+Function TPasToJSConverter.ConvertNilExpr(El: TNilExpr; AContext : TConvertContext): TJSElement;
+
+Var
+ L : TJSLiteral;
+
+begin
+ L:=TJSLiteral(CreateElement(TJSLiteral,El));
+ L.Value.IsNull:=True;
+ Result:=L;
+end;
+
+Function TPasToJSConverter.ConvertInheritedExpression(El: TInheritedExpr; AContext : TConvertContext): TJSElement;
+
+begin
+ Result:=Nil;
+// TInheritedExpr = class(TPasExpr)
+end;
+
+Function TPasToJSConverter.ConvertSelfExpression(El: TSelfExpr; AContext : TConvertContext): TJSElement;
+
+begin
+ Result:=TJSPrimaryExpressionThis(CreateElement(TJSPrimaryExpressionThis,El));
+end;
+
+Function TPasToJSConverter.ConvertParamsExpression(El: TParamsExpr; AContext : TConvertContext): TJSElement;
+
+Var
+ b,B2 : TJSBracketMemberExpression;
+ C : TJSCallExpression;
+ I : Integer;
+ E : TJSElement;
+
+begin
+ Result:=Nil;
+ Case EL.Kind of
+ pekFuncParams :
+ begin
+ C:=TJSCallExpression(CreateElement(TJSCallExpression,El));
+ try
+ C.Expr:=ConvertElement(El.Value,AContext);
+ if (Length(EL.Params)>0) then
+ begin
+ C.Args:=TJSArguments(CreateElement(TJSArguments,El));
+ For I:=0 to Length(EL.Params)-1 do
+ begin
+ E:=ConvertElement(EL.Params[i]);
+ C.Args.Elements.AddElement.Expr:=E;
+ end;
+ end;
+ except
+ FreeAndNil(C);
+ Raise;
+ end;
+ Result:=C;
+ end;
+ pekArrayParams:
+ begin
+ if Length(EL.Params)<>1 then
+ Raise EPasToJS.Create('Only 1-dimensional expressions allowed at this point');
+ B:=TJSBracketMemberExpression(CreateElement(TJSBracketMemberExpression,El));;
+ B.Mexpr:=ConvertElement(El.Value,AContext);
+ Result:=B;
+ B.Name:=ConvertElement(EL.Params[0],AContext);
+ end
+ end;
+end;
+
+Function TPasToJSConverter.ConvertRecordValues(El: TRecordValues; AContext : TConvertContext): TJSElement;
+
+Var
+ R : TJSObjectLiteral;
+ I : Integer;
+ It : TRecordValuesItem;
+ rel : TJSObjectLiteralElement;
+
+begin
+ R:=TJSObjectLiteral(CreateElement(TJSObjectLiteral,El));
+ For I:=0 to Length(El.Fields)-1 do
+ begin
+ it:=El.Fields[i];
+ Rel:=R.Elements.AddElement;
+ Rel.Name:=it.Name;
+ Rel.Expr:=ConvertElement(it.ValueExp,AContext);
+ end;
+ Result:=R;
+end;
+
+Function TPasToJSConverter.ConvertArrayValues(El: TArrayValues; AContext : TConvertContext): TJSElement;
+
+Var
+ R : TJSArrayLiteral;
+ I : Integer;
+ rel : TJSArrayLiteralElement;
+
+begin
+ R:=TJSArrayLiteral(CreateElement(TJSObjectLiteral,El));
+ For I:=0 to Length(El.Values)-1 do
+ begin
+ Rel:=R.Elements.AddElement;
+ Rel.ElementIndex:=i;
+ Rel.Expr:=ConvertElement(El.Values[i],AContext);
+ end;
+ Result:=R;
+end;
+
+Function TPasToJSConverter.ConvertExpression(El: TPasExpr; AContext : TConvertContext): TJSElement;
+
+begin
+ Result:=Nil;
+ if (El is TUnaryExpr) then
+ Result:=ConvertUnaryExpression(TUnaryExpr(El),AContext)
+ else if (El is TBinaryExpr) then
+ Result:=ConvertBinaryExpression(TBinaryExpr(El),AContext)
+ else if (El is TPrimitiveExpr) then
+ Result:=ConvertPrimitiveExpression(TPrimitiveExpr(El),AContext)
+ else if (El is TBoolConstExpr) then
+ Result:=ConvertBoolConstExpression(TBoolConstExpr(El),AContext)
+ else if (El is TNilExpr) then
+ Result:=ConvertNilExpr(TNilExpr(El),AContext)
+ else if (El is TInheritedExpr) then
+ Result:=ConvertInheritedExpression(TInheritedExpr(El),AContext)
+ else if (El is TSelfExpr) then
+ Result:=ConvertSelfExpression(TSelfExpr(El),AContext)
+ else if (El is TParamsExpr) then
+ Result:=ConvertParamsExpression(TParamsExpr(El),AContext)
+ else if (El is TRecordValues) then
+ Result:=ConvertRecordValues(TRecordValues(El),AContext)
+ else if (El is TRecordValues) then
+ Result:=ConvertRecordValues(TRecordValues(El),AContext)
+ else
+ DoError(SErrUNknownExpressionClass,[EL.ClassName])
+end;
+
+Function TPasToJSConverter.CreateConstDecl(El: TPasElement; AContext : TConvertContext): TJSElement;
+
+Var
+ C : TJSElement;
+ V : TJSVariableStatement;
+
+begin
+ C:=ConvertElement(El,AContext);
+ V:=TJSVariableStatement(CreateElement(TJSVariableStatement,El));
+ V.A:=C;
+ Result:=V;
+end;
+
+Function TPasToJSConverter.CreateTypeDecl(El: TPasElement; AContext : TConvertContext): TJSElement;
+
+begin
+ Result:=Nil;
+ // Need to do something for classes and records.
+end;
+
+Function TPasToJSConverter.CreateVarDecl(El: TPasElement; AContext : TConvertContext): TJSElement;
+
+Var
+ C : TJSElement;
+ V : TJSVariableStatement;
+
+begin
+ C:=ConvertElement(El,AContext);
+ V:=TJSVariableStatement(CreateElement(TJSVariableStatement,El));
+ V.A:=C;
+ Result:=V;
+end;
+
+Function TPasToJSConverter.ConvertDeclarations(El: TPasDeclarations; AContext : TConvertContext): TJSElement;
+
+Var
+ P : TPasElement;
+ SL,SL2 : TJSStatementList;
+ E : TJSElement;
+ I : Integer;
+
+ Procedure AddToSL;
+
+ begin
+ if Assigned(E) then
+ begin
+ if Assigned(SL.A) then
+ begin
+ SL2:=TJSStatementList(CreateElement(TJSStatementList,El));
+ SL.B:=SL2;
+ SL:=SL2;
+ end;
+ SL.A:=E;
+ end;
+ end;
+
+begin
+ SL:=TJSStatementList(CreateElement(TJSStatementList,El));
+ Result:=SL;
+ For I:=0 to El.Declarations.Count-1 do
+ begin
+ E:=Nil;
+ P:=TPasElement(El.Declarations[i]);
+ if P is TPasConst then
+ E:=CreateConstDecl(P,AContext)
+ else if P is TPasVariable then
+ E:=CreateVarDecl(P,AContext)
+ else if P is TPasType then
+ E:=CreateTypeDecl(P,AContext)
+ else if P is TPasProcedure then
+ E:=ConvertElement(P as TPasProcedure,AContext)
+ else
+ DoError('Unknown class: "%s" ',[P.ClassName]);
+ AddToSL;
+ end;
+ if (El is TProcedureBody) then
+ begin
+ E:=ConvertElement(TProcedureBody(El).Body,AContext);
+ AddToSl;
+ end;
+{
+ TPasDeclarations = class(TPasElement)
+ TPasSection = class(TPasDeclarations)
+ TInterfaceSection = class(TPasSection)
+ TImplementationSection = class(TPasSection)
+ TProgramSection = class(TImplementationSection)
+ TLibrarySection = class(TImplementationSection)
+ TProcedureBody = class(TPasDeclarations)
+}
+end;
+
+Function TPasToJSConverter.ConvertType(El: TPasElement; AContext : TConvertContext): TJSElement;
+
+begin
+ Result:=Nil;
+{
+
+TPasType = class(TPasElement)
+TPasPointerType = class(TPasType)
+TPasAliasType = class(TPasType)
+TPasTypeAliasType = class(TPasAliasType)
+TPasClassOfType = class(TPasAliasType)
+TPasRangeType = class(TPasType)
+TPasArrayType = class(TPasType)
+TPasFileType = class(TPasType)
+TPasEnumValue = class(TPasElement)
+TPasEnumType = class(TPasType)
+TPasSetType = class(TPasType)
+TPasVariant = class(TPasElement)
+TPasRecordType = class(TPasType)
+TPasClassType = class(TPasType)
+TPasProcedureType = class(TPasType)
+TPasFunctionType = class(TPasProcedureType)
+TPasUnresolvedSymbolRef = class(TPasType)
+TPasUnresolvedTypeRef = class(TPasUnresolvedSymbolRef)
+TPasUnresolvedUnitRef = Class(TPasUnresolvedSymbolRef)
+TPasStringType = class(TPasUnresolvedTypeRef)
+TPasTypeRef = class(TPasUnresolvedTypeRef)
+}
+end;
+
+Function TPasToJSConverter.ConvertProcedure(El: TPasProcedure; AContext : TConvertContext): TJSElement;
+
+Var
+ FS : TJSFunctionDeclarationStatement;
+ FD : TJSFuncDef;
+
+begin
+ FS:=TJSFunctionDeclarationStatement(CreateElement(TJSFunctionDeclarationStatement,EL));
+ Result:=FS;
+ FD:=TJSFuncDef.Create;
+ FD.Name:=TransFormFunctionName(El,AContext);
+ FS.AFunction:=FD;
+ FD.Body:=TJSFunctionBody(CreateElement(TJSFunctionBody,EL.Body));
+ FD.Body.A:=ConvertElement(El.Body,AContext);
+ {
+ TPasProcedureBase = class(TPasElement)
+ TPasOverloadedProc = class(TPasProcedureBase)
+ TPasProcedure = class(TPasProcedureBase)
+ TPasFunction = class(TPasProcedure)
+ TPasOperator = class(TPasProcedure)
+ TPasConstructor = class(TPasProcedure)
+ TPasDestructor = class(TPasProcedure)
+ TPasClassProcedure = class(TPasProcedure)
+ TPasClassFunction = class(TPasProcedure)
+ }
+
+end;
+
+Function TPasToJSConverter.ConvertProcedureImpl(El: TPasProcedureImpl; AContext : TConvertContext): TJSElement;
+
+Var
+ FS : TJSFunctionDeclarationStatement;
+ FD : TJSFuncDef;
+
+begin
+ FS:=TJSFunctionDeclarationStatement(CreateElement(TJSFunctionDeclarationStatement,EL));
+ Result:=FS;
+ FD:=TJSFuncDef.Create;
+ FD.Name:=TransFormFunctionName(El,AContext);
+ FS.AFunction:=FD;
+ FD.Body:=TJSFunctionBody(CreateElement(TJSFunctionBody,EL.Body));
+ FD.Body.A:=ConvertElement(El.Body,AContext);
+{
+ TPasProcedureImpl = class(TPasElement)
+ TPasConstructorImpl = class(TPasProcedureImpl)
+ TPasDestructorImpl = class(TPasProcedureImpl)
+}
+end;
+
+Function TPasToJSConverter.ConvertBeginEndStatement(El: TPasImplBeginBlock; AContext : TConvertContext): TJSElement;
+
+begin
+ Result:=ConvertImplBlockElements(El,AContext);
+end;
+
+Function TPasToJSConverter.ConvertImplBlockElements(El: TPasImplBlock; AContext : TConvertContext): TJSElement;
+
+var
+ B : TJSElement;
+ S,S2 : TJSStatementList;
+ I : Integer;
+
+begin
+ if Not (Assigned(EL.Elements) and (EL.Elements.Count>0)) then
+ Result:=TJSEmptyBlockStatement(CreateElement(TJSEmptyBlockStatement,El))
+ else
+ begin
+ S:=TJSStatementList(CreateElement(TJSStatementList,TPasImplElement(EL)));
+ Result:=S;
+ For I:=0 to EL.Elements.Count-1 do
+ begin
+ B:=ConvertElement(TPasImplElement(EL.Elements[i]),AContext);
+ if not Assigned(S.A) then
+ S.A:=B
+ else
+ begin
+ if Assigned(S.B) then
+ begin
+ S2:=TJSStatementList(CreateElement(TJSStatementList,TPasImplElement(EL.Elements[i])));
+ S2.A:=S.B;
+ S.B:=S2;
+ S:=S2;
+ end;
+ S.B:=B;
+ end;
+ end;
+ end;
+end;
+
+Function TPasToJSConverter.ConvertInitializationSection(El: TInitializationSection; AContext : TConvertContext): TJSElement;
+begin
+ Result:=ConvertImplBlockElements(El,AContext);
+end;
+
+Function TPasToJSConverter.ConvertFinalizationSection(El: TFinalizationSection; AContext : TConvertContext): TJSElement;
+begin
+ Result:=ConvertImplBlockElements(El,AContext);
+end;
+
+Function TPasToJSConverter.ConvertTryStatement(El: TPasImplTry; AContext : TConvertContext): TJSElement;
+
+Var
+ B,F : TJSElement;
+ T : TJSTryStatement;
+ IsFin : Boolean;
+
+begin
+ F:=Nil;
+ B:=ConvertImplBlockElements(El,AContext);
+ try
+ F:=ConvertElement(El.FinallyExcept);
+ IsFin:=El.FinallyExcept is TPasImplTryFinally;
+ if IsFin then
+ T:=TJSTryFinallyStatement(CreateElement(TJSTryFinallyStatement,El))
+ else
+ begin
+ T:=TJSTryCatchStatement(CreateElement(TJSTryCatchStatement,El));
+ T.Ident:=GetExceptionObjectname(AContext);
+ end;
+ except
+ FreeAndNil(B);
+ FreeAndNil(F);
+ Raise;
+ end;
+ if IsFin then
+ T.BFinally:=F
+ else
+ T.BCatch:=F;
+ T.Block:=B;
+ Result:=T;
+end;
+
+Function TPasToJSConverter.ConvertTryFinallyStatement(El: TPasImplTryFinally; AContext : TConvertContext): TJSElement;
+
+
+begin
+ Result:=ConvertImplBlockElements(El,AContext);
+end;
+
+Function TPasToJSConverter.ConvertTryExceptStatement(El: TPasImplTryExcept; AContext : TConvertContext): TJSElement;
+
+
+begin
+
+ Result:=ConvertImplBlockElements(El,AContext);
+end;
+
+Function TPasToJSConverter.ConvertImplBlock(El: TPasImplBlock; AContext : TConvertContext): TJSElement;
+
+begin
+ Result:=Nil;
+ if (EL is TPasImplStatement) then
+ Result:=ConvertStatement(TPasImplStatement(El),AContext)
+ else if (EL is TPasImplIfElse) then
+ Result:=ConvertIfStatement(TPasImplIfElse(El),AContext)
+ else if (El is TPasImplRepeatUntil) then
+ Result:=ConvertRepeatStatement(TPasImplRepeatUntil(El),AContext)
+ else if (El is TPasImplBeginBlock) then
+ Result:=ConvertBeginEndStatement(TPasImplBeginBlock(El),AContext)
+ else if (El is TInitializationSection) then
+ Result:=ConvertInitializationSection(TInitializationSection(El),AContext)
+ else if (El is TFinalizationSection) then
+ Result:=ConvertFinalizationSection(TFinalizationSection(El),AContext)
+ else if (El is TPasImplTry) then
+ Result:=ConvertTryStatement(TPasImplTry(El),AContext)
+ else if (El is TPasImplTryFinally) then
+ Result:=ConvertTryFinallyStatement(TPasImplTryFinally(El),AContext)
+ else if (El is TPasImplTryExcept) then
+ Result:=ConvertTryExceptStatement(TPasImplTryExcept(El),AContext);
+(*
+ TPasImplBlock = class(TPasImplElement)
+ TPasImplCaseOf = class(TPasImplBlock)
+ TPasImplStatement = class(TPasImplBlock)
+ TPasImplCaseElse = class(TPasImplBlock)
+ TPasImplTry = class(TPasImplBlock)
+ TPasImplTryHandler = class(TPasImplBlock)
+ TPasImplTryFinally = class(TPasImplTryHandler)
+ TPasImplTryExcept = class(TPasImplTryHandler)
+ TPasImplTryExceptElse = class(TPasImplTryHandler)
+
+*)
+end;
+
+Function TPasToJSConverter.ConvertPackage(El: TPasPackage; AContext : TConvertContext): TJSElement;
+
+begin
+ Result:=Nil;
+ // TPasPackage = class(TPasElement)
+end;
+
+Function TPasToJSConverter.ConvertResString(El: TPasResString; AContext : TConvertContext): TJSElement;
+
+begin
+ Result:=Nil;
+ // TPasPackage = class(TPasElement)
+end;
+
+Function TPasToJSConverter.ConvertArgument(El: TPasArgument; AContext : TConvertContext): TJSElement;
+
+begin
+ Result:=Nil;
+ // TPasPackage = class(TPasElement)
+end;
+
+Function TPasToJSConverter.ConvertResultElement(El: TPasResultElement; AContext : TConvertContext): TJSElement;
+
+begin
+ Result:=Nil;
+ // TPasPackage = class(TPasElement)
+end;
+
+Function TPasToJSConverter.ConvertVariable(El: TPasVariable; AContext : TConvertContext): TJSElement;
+
+Var
+ V : TJSVarDeclaration;
+ T : TPasType;
+ L : TJSLiteral;
+
+begin
+ V:=TJSVarDeclaration(CreateElement(TJSVarDeclaration,El));
+ V.Name:=TransFormVariableName(EL,AContext);
+ T:=ResolveType(EL.VarType,AContext);
+ if (T is TPasArrayType) then
+ begin
+ V.Init:=TJSArrayLiteral(CreateElement(TJSArrayLiteral,EL.VarType));
+ If Assigned(EL.Expr) then
+ Raise EPasToJS.Create(SerrInitalizedArray);
+ end
+ else If Assigned(EL.Expr) then
+ V.Init:=ConvertElement(El.Expr,AContext);
+ Result:=V;
+ // TPasPackage = class(TPasElement)
+end;
+
+Function TPasToJSConverter.ConvertConst(El: TPasConst; AContext : TConvertContext): TJSElement;
+
+begin
+ Result:=Nil;
+ // TPasPackage = class(TPasElement)
+end;
+
+Function TPasToJSConverter.ConvertProperty(El: TPasProperty; AContext : TConvertContext): TJSElement;
+
+begin
+ Result:=Nil;
+// TPasProperty = class(TPasVariable)
+
+end;
+
+Function TPasToJSConverter.ConvertExportSymbol(El: TPasExportSymbol; AContext : TConvertContext): TJSElement;
+
+begin
+ Result:=Nil;
+ // TPasPackage = class(TPasElement)
+end;
+
+Function TPasToJSConverter.ConvertLabels(El: TPasLabels; AContext : TConvertContext): TJSElement;
+
+begin
+ Result:=Nil;
+// TPasLabels = class(TPasImplElement)
+end;
+
+Function TPasToJSConverter.ConvertRaiseStatement(El: TPasImplRaise; AContext : TConvertContext): TJSElement;
+
+Var
+ E : TJSElement;
+ T : TJSThrowStatement;
+
+begin
+ if El.ExceptObject<>Nil then
+ E:=ConvertElement(El.ExceptObject)
+ else
+ E:=CreateIdentifierExpr(GetExceptionObjectName(AContext),El,AContext);
+ T:=TJSThrowStatement(CreateElement(TJSThrowStatement,El));
+ T.A:=E;
+ Result:=T;
+end;
+
+Function TPasToJSConverter.ConvertAssignStatement(El: TPasImplAssign; AContext : TConvertContext): TJSElement;
+
+Var
+ LHS,RHS : TJSElement;
+ T : TJSAssignStatement;
+
+begin
+ LHS:=ConvertElement(El.left);
+ try
+ RHS:=ConvertElement(El.Right);
+ except
+ FreeAndNil(LHS);
+ Raise;
+ end;
+ T:=TJSSimpleAssignStatement(CreateElement(TJSSimpleAssignStatement,El));
+ T.Expr:=RHS;
+ T.LHS:=LHS;
+ Result:=T;
+end;
+
+Function TPasToJSConverter.ConvertCommand(El: TPasImplCommand; AContext : TConvertContext): TJSElement;
+
+begin
+ Result:=Nil;
+// TPasImplCommand = class(TPasImplElement)
+end;
+
+Function TPasToJSConverter.ConvertIfStatement(El: TPasImplIfElse; AContext : TConvertContext): TJSElement;
+
+Var
+ C,BThen,BElse : TJSElement;
+ T : TJSIfStatement;
+
+begin
+ C:=Nil;
+ BThen:=Nil;
+ BElse:=Nil;
+ try
+ C:=ConvertElement(El.ConditionExpr);
+ if Assigned(El.IfBranch) then
+ BThen:=ConvertElement(El.IfBranch)
+ else
+ BThen:=TJSEmptyBlockStatement(CreateElement(TJSEmptyBlockStatement,El));
+ if Assigned(El.ElseBranch) then
+ BElse:=ConvertElement(El.ElseBranch);
+ except
+ FreeAndNil(C);
+ FreeAndNil(BThen);
+ FreeAndNil(BElse);
+ Raise;
+ end;
+ T:=TJSIfStatement(CreateElement(TJSIfStatement,El));
+ T.Cond:=C;
+ T.Btrue:=BThen;
+ T.BFalse:=BElse;
+ Result:=T;
+end;
+
+Function TPasToJSConverter.ConvertWhileStatement(El: TPasImplWhileDo; AContext : TConvertContext): TJSElement;
+
+Var
+ C : TJSElement;
+ B : TJSElement;
+ W : TJSWhileStatement;
+begin
+ Result:=Nil;
+ C:=Nil;
+ B:=Nil;
+ try
+ C:=ConvertElement(EL.ConditionExpr,AContext);
+ if Assigned(EL.Body) then
+ B:=ConvertElement(EL.Body,AContext)
+ else
+ B:=TJSEmptyBlockStatement(CreateElement(TJSEmptyBlockStatement,El));
+ except
+ FreeAndNil(B);
+ FreeAndNil(C);
+ Raise;
+ end;
+ W:=TJSWhileStatement(CreateElement(TJSWhileStatement,El));
+ W.Cond:=C;
+ W.body:=B;
+ Result:=W;
+end;
+
+Function TPasToJSConverter.ConvertRepeatStatement(El: TPasImplRepeatUntil; AContext: TConvertContext): TJSElement;
+Var
+ C : TJSElement;
+ N : TJSUnaryNotExpression;
+ W : TJSDoWhileStatement;
+ B : TJSElement;
+
+begin
+ Result:=Nil;
+ C:=Nil;
+ B:=Nil;
+ try
+ C:=ConvertElement(EL.ConditionExpr,AContext);
+ N:=TJSUnaryNotExpression(CreateElement(TJSUnaryNotExpression,EL.ConditionExpr));
+ N.A:=C;
+ B:=ConvertImplBlockElements(El,AContext);
+ except
+ FreeAndNil(B);
+ FreeAndNil(C);
+ Raise;
+ end;
+ W:=TJSDoWhileStatement(CreateElement(TJSDoWhileStatement,El));
+ W.Cond:=N;
+ W.body:=B;
+ Result:=W;
+end;
+
+Function TPasToJSConverter.ConvertForStatement(El: TPasImplForLoop;
+ AContext: TConvertContext): TJSElement;
+
+Var
+ F : TJSForStatement;
+ L : TJSStatementList;
+ I : TJSSimpleAssignStatement;
+ V : TJSVarDeclaration;
+ VD : TJSVariableStatement;
+ u : TJSUNaryExpression;
+ B : TJSBinaryExpression;
+ MV : String;
+
+begin
+ Result:=Nil;
+ B:=Nil;
+ L:=TJSStatementList(CreateElement(TJSStatementList,El));
+ Result:=L;
+ try
+ VD:=TJSVariableStatement(CreateElement(TJSVariableStatement,El));
+ L.A:=VD;
+ V:=TJSVarDeclaration(CreateElement(TJSVarDeclaration,El));
+ VD.A:=V;
+ MV:=TransFormVariableName(El.VariableName,AContext)+'$endloopvalue';
+ V.Name:=MV;
+ V.Init:=ConvertElement(EL.EndExpr,AContext);
+ F:=TJSForStatement(CreateElement(TJSForStatement,El));
+ L.B:=F;
+ I:=TJSSimpleAssignStatement(CreateElement(TJSSimpleAssignStatement,El.StartExpr));
+ F.Init:=I;
+ I.LHS:=CreateIdentifierExpr(EL.VariableName,el,AContext);
+ I.Expr:=ConvertElement(El.StartExpr,AContext);
+ If El.Down then
+ begin
+ U:=TJSUnaryPostMinusMinusExpression(CreateElement(TJSUnaryPostMinusMinusExpression,El));
+ B:=TJSRelationalExpressionGE(CreateElement(TJSRelationalExpressionGE,El.EndExpr));
+ end
+ else
+ begin
+ U:=TJSUnaryPostPlusPlusExpression(CreateElement(TJSUnaryPostPlusPlusExpression,El));
+ B:=TJSRelationalExpressionLE(CreateElement(TJSRelationalExpressionLE,El.EndExpr));
+ end;
+ F.Incr:=U;
+ F.Cond:=B;
+ U.A:=CreateIdentifierExpr(EL.VariableName,El,AContext);
+ B.A:=CreateIdentifierExpr(EL.VariableName,El,AContext);
+ B.B:=CreateIdentifierExpr(MV,El.EndExpr,AContext);
+ F.body:=ConvertElement(EL.Body);
+ except
+ FreeAndNil(Result);
+ Raise;
+ end;
+end;
+
+Function TPasToJSConverter.ConvertSimpleStatement(El: TPasImplSimple; AContext : TConvertContext): TJSElement;
+
+Var
+ E : TJSElement;
+
+begin
+ E:=ConvertElement(EL.Expr,AContext);
+ Result:=TJSExpressionStatement(CreateElement(TJSExpressionStatement,El));
+ TJSExpressionStatement(Result).A:=E;
+end;
+
+Function TPasToJSConverter.ConvertWithStatement(El: TPasImplWithDo; AContext : TConvertContext): TJSElement;
+
+Var
+ B,E : TJSElement;
+ W,W2 : TJSWithStatement;
+ I : Integer;
+
+begin
+ W:=Nil;
+ Result:=Nil;
+ if Assigned(El.Body) then
+ B:=ConvertElement(El.Body,AContext)
+ else
+ B:=TJSEmptyBlockStatement(CreateElement(TJSEmptyBlockStatement,El));
+ try
+ For I:=0 to El.Expressions.Count-1 do
+ begin
+ E:=ConvertElement(TPasElement(El.Expressions[i]),AContext);
+ W2:=TJSWithStatement(CreateElement(TJSWithStatement,TPasElement(El.Expressions[i])));
+ if Not Assigned(Result) then // result is the first
+ Result:=W2;
+ if Assigned(W) then // Chain
+ W.B:=W2;
+ W:=W2; // W is the last
+ W.A:=E;
+ end;
+ except
+ FreeAndNil(E);
+ FreeAndNil(Result);
+ Raise;
+ end;
+ W.B:=B;
+end;
+
+Function TPasToJSConverter.GetExceptionObjectname(AContext: TConvertContext): String;
+
+begin
+ Result:='jsexception';
+end;
+
+Function TPasToJSConverter.ResolveType(El: TPasElement;
+ AContext: TConvertContext): TPasType;
+begin
+ if EL is TPasType then
+ Result:=TPasType(El) // TPasUnresolvedTypeRef needs handling here
+ else
+ Result:=Nil;
+end;
+
+Function TPasToJSConverter.ConvertExceptOn(El: TPasImplExceptOn; AContext : TConvertContext): TJSElement;
+
+Var
+ I : TJSIfStatement;
+ IO : TJSRelationalExpressionInstanceOf;
+ L : TJSStatementList;
+ V : TJSVarDeclaration;
+
+begin
+ I:=TJSIfStatement(CreateElement(TJSIfStatement,El));
+ IO:=TJSRelationalExpressionInstanceOf(CreateElement(TJSRelationalExpressionInstanceOf,EL));
+ IO.A:=CreateIdentifierExpr(GetExceptionObjectName(AContext),El,AContext);
+ IO.B:=CreateIdentifierExpr(El.TypeName,El,AContext);
+ I.Cond:=IO;
+ L:=TJSStatementList(CreateElement(TJSStatementList,EL.Body));
+ I.btrue:=L;
+ V:=TJSVarDeclaration(CreateElement(TJSVarDeclaration,EL));
+ L.A:=V;
+ V.Name:=TransFormVariableName(EL.VariableName,AContext);//
+ V.Init:=CreateIdentifierExpr(GetExceptionObjectName(AContext),EL,AContext);
+ L.B:=TJSStatementList(CreateElement(TJSStatementList,EL.Body));
+ L:=TJSStatementList(L.B);
+ L.A:=ConvertElement(EL.Body,AContext);
+ Result:=I;
+end;
+
+Function TPasToJSConverter.ConvertStatement(El: TPasImplStatement; AContext : TConvertContext): TJSElement;
+
+begin
+ Result:=Nil;
+ if (El is TPasImplRaise) then
+ Result:=ConvertRaiseStatement(TPasImplRaise(El),AContext)
+ else if (El is TPasImplAssign) then
+ Result:=ConvertAssignStatement(TPasImplAssign(El),AContext)
+ else if (El is TPasImplWhileDo) then
+ Result:=ConvertWhileStatement(TPasImplWhileDo(El),AContext)
+ else if (El is TPasImplSimple) then
+ Result:=ConvertSimpleStatement(TPasImplSimple(El),AContext)
+ else if (El is TPasImplWithDo) then
+ Result:=ConvertWithStatement(TPasImplWithDo(El),AContext)
+ else if (El is TPasImplExceptOn) then
+ Result:=ConvertExceptOn(TPasImplExceptOn(El),AContext)
+ else if (El is TPasImplForLoop) then
+ Result:=ConvertForStatement(TPasImplForLoop(El),AContext)
+ else
+ DoError('Unknown statement Class: %s',[El.ClassName]);
+{
+ TPasImplCaseStatement = class(TPasImplStatement)
+}
+end;
+
+
+Function TPasToJSConverter.ConvertCommands(El: TPasImplCommands; AContext : TConvertContext): TJSElement;
+
+begin
+ Result:=Nil;
+ // TPasImplCommands = class(TPasImplElement)
+end;
+
+Function TPasToJSConverter.ConvertLabelMark(El: TPasImplLabelMark; AContext : TConvertContext): TJSElement;
+
+begin
+ Result:=Nil;
+ // TPasImplLabelMark = class(TPasImplLabelMark) then
+end;
+
+Function TPasToJSConverter.ConvertElement(El: TPasElement; AContext : TConvertContext): TJSElement;
+begin
+ If (El is TPasPackage) then
+ Result:=ConvertPackage(TPasPackage(El),AContext)
+ else If (El is TPasModule) then
+ Result:=ConvertModule(TPasModule(El),AContext)
+ else if (EL is TPasExpr) then
+ Result:=ConvertExpression(TPasExpr(El),AContext)
+ else if (EL is TPasDeclarations) then
+ Result:=ConvertDeclarations(TPasDeclarations(El),AContext)
+ else if (EL is TPasType) then
+ Result:=ConvertType(TPasType(El),AContext)
+ else if (EL is TPasProcedure) then
+ Result:=ConvertProcedure(TPasProcedure(El),AContext)
+ else if (EL is TPasProcedureImpl) then
+ Result:=ConvertProcedureImpl(TPasProcedureImpl(El),AContext)
+ else if (EL is TPasImplBlock) then
+ Result:=ConvertImplBlock(TPasImplBlock(El),AContext)
+ else if (EL is TPasResString) then
+ Result:=ConvertResString(TPasResString(El),AContext)
+ else if (EL is TPasArgument) then
+ Result:=ConvertArgument(TPasArgument(El),AContext)
+ else if (EL is TPasResultElement) then
+ Result:=ConvertResultElement(TPasResultElement(El),AContext)
+ else if (EL is TPasConst) then
+ Result:=ConvertConst(TPasConst(El),AContext)
+ else if (EL is TPasProperty) then
+ Result:=ConvertProperty(TPasProperty(El),AContext)
+ else if (EL is TPasVariable) then
+ Result:=ConvertVariable(TPasVariable(El),AContext)
+ else if (EL is TPasExportSymbol) then
+ Result:=ConvertExportSymbol(TPasExportSymbol(El),AContext)
+ else if (EL is TPasLabels) then
+ Result:=ConvertLabels(TPasLabels(El),AContext)
+ else if (EL is TPasImplCommand) then
+ Result:=ConvertCommand(TPasImplCommand(El),AContext)
+ else if (EL is TPasImplCommands) then
+ Result:=ConvertCommands(TPasImplCommands(El),AContext)
+ else if (EL is TPasImplLabelMark) then
+ Result:=ConvertLabelMark(TPasImplLabelMark(El),AContext);
+end;
+
+Procedure TPasToJSConverter.DoError(Const Msg: String);
+begin
+ Raise EPas2JS.Create(Msg);
+end;
+
+Procedure TPasToJSConverter.DoError(Const Msg: String;
+ Const Args: Array of Const);
+begin
+ Raise EPas2JS.CreateFmt(Msg,Args);
+end;
+
+procedure TPasToJSConverter.SetCurrentContext(AValue: TJSElement);
+begin
+ if FCurrentContext=AValue then Exit;
+ FCurrentContext:=AValue;
+end;
+
+Function TPasToJSConverter.CreateJSContext(AContext : TConvertContext) : TJSElement;
+
+begin
+ Result:=TJSObjectLiteral.Create(0,0);
+
+end;
+
+Function TPasToJSConverter.TransFormVariableName(Const AName: String;
+ AContext: TConvertContext): String;
+begin
+ Result:=LowerCase(AName);
+end;
+
+Function TPasToJSConverter.TransFormVariableName(El: TPasElement; AContext: TConvertContext): String;
+begin
+ Result:=TransFormVariableName(EL.Name,AContext);
+ // Add to context.
+end;
+
+Function TPasToJSConverter.TransFormFunctionName(El: TPasElement;
+ AContext: TConvertContext): String;
+begin
+ Result:=LowerCase(EL.Name);
+end;
+
+Function TPasToJSConverter.ConvertElement(El: TPasElement): TJSElement;
+begin
+// CurrentContext:=CreateJSContext(Nil);
+ Result:=ConvertElement(El,Nil);
+end;
+
+end.
+
diff --git a/packages/pastojs/tests/tcconverter.pp b/packages/pastojs/tests/tcconverter.pp
new file mode 100644
index 0000000000..ce0b9c60e1
--- /dev/null
+++ b/packages/pastojs/tests/tcconverter.pp
@@ -0,0 +1,1320 @@
+{
+ This file is part of the Free Component Library (FCL)
+ Copyright (c) 2014 by Michael Van Canneyt
+
+ Unit tests for Pascal-to-Javascript converter class.
+
+ 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.
+
+ **********************************************************************}
+unit tcconverter;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+ Classes, SysUtils, fpcunit, testutils, testregistry, fppas2js, jsbase, jstree, pastree;
+
+type
+
+ { TTestConverter }
+
+ TTestConverter = class(TTestCase)
+ private
+ FAC: TPasElement;
+ FConverter: TPasToJSConverter;
+ FRes: TJSElement;
+ FSource: TPasElement;
+ protected
+ procedure SetUp; override;
+ procedure TearDown; override;
+ Property AttemptConvert : TPasElement Read FAC Write FAC;
+ Procedure TryConvert;
+ Function Convert(AElement : TPasElement; AClass : TJSElementClass) : TJSElement;
+ Property Converter : TPasToJSConverter Read FConverter;
+ Property TheSource : TPasElement Read FSource Write FSource;
+ Property TheResult : TJSElement Read FRes Write FRes;
+ Public
+ Class procedure AssertEquals(Const Msg : String; AExpected, AActual : TJSType); overload;
+ Class procedure AssertLiteral(Const Msg : String; Lit : TJSElement; AType : TJSType);
+ Class procedure AssertLiteral(Const Msg : String; Lit : TJSElement; AValue : Boolean);
+ Class procedure AssertLiteral(Const Msg : String; Lit : TJSElement; AValue : TJSString);
+ Class procedure AssertLiteral(Const Msg : String; Lit : TJSElement; AValue : TJSNumber);
+ Class procedure AssertIdentifier(Const Msg : String; Ident : TJSElement; AName : String);
+ Class Procedure AssertAssignStatement(Const Msg: String; El: TJSElement; LHS: String='a'; RHS: String='b');
+ Class Procedure AssertEmptyBlockStatement(Const Msg: String; El: TJSElement);
+ class Function AssertListStatement(Const Msg: String; El: TJSElement) : TJSStatementList;
+ class Function AssertElement(Const Msg: String; AClass : TJSElementClass; El: TJSElement) : TJSElement;
+ Class Function CreateLiteral(AValue : String) : TPasExpr;
+ Class Function CreateLiteral(AValue : Double) : TPasExpr;
+ Class Function CreateIdent(AName : String) : TPrimitiveExpr;
+ Class Function CreateAssignStatement(LHS: String = 'a';RHS : String = 'b'): TPasImplAssign;
+ Class Function CreateFunctionCall(AName : String; Params : Array of String) : TParamsExpr;
+ Class Function CreateCondition: TPasExpr;
+ end;
+
+ TTestTestConverter = class(TTestConverter)
+ published
+ procedure TestEmpty;
+ end;
+
+ { TTestExpressionConverter }
+
+ TTestExpressionConverter = Class(TTestConverter)
+ Protected
+ Function TestLiteralExpression(AElement : TPasElement; AClass : TJSElementClass) : TJSLIteral;
+ Function TestUnaryExpression(AElement : TPasElement; AClass : TJSElementClass) : TJSUnary;
+ Function TestBinaryExpression(AElement : TPasElement; AClass : TJSElementClass) : TJSBinary;
+ Published
+ Procedure TestPrimitiveString;
+ Procedure TestPrimitiveNumber;
+ Procedure TestPrimitiveNil;
+ Procedure TestPrimitiveBoolTrue;
+ Procedure TestPrimitiveBoolFalse;
+ Procedure TestPrimitiveIdent;
+ Procedure TestUnaryMinus;
+ Procedure TestUnaryPlus;
+ Procedure TestBinaryPlus;
+ Procedure TestBinaryMinus;
+ Procedure TestBinaryMultiply;
+ Procedure TestBinaryDivision;
+ Procedure TestBinaryDiv;
+ Procedure TestBinaryMod;
+ Procedure TestBinarySHL;
+ Procedure TestBinarySHR;
+ Procedure TestBinaryEqual;
+ Procedure TestBinaryNotEqual;
+ Procedure TestBinaryLessThan;
+ Procedure TestBinaryLessThanEqual;
+ Procedure TestBinaryGreater;
+ Procedure TestBinaryGreaterThanEqual;
+ Procedure TestBinaryIs;
+ Procedure TestCallExpressionNone;
+ Procedure TestCallExpressionOne;
+ Procedure TestCallExpressionTwo;
+ Procedure TestMemberExpressionArrayOneDim;
+ Procedure TestMemberExpressionArrayTwoDim;
+ Procedure TestVariable;
+ Procedure TestArrayVariable;
+ end;
+
+ { TTestStatementConverter }
+
+ TTestStatementConverter = Class(TTestConverter)
+ private
+ Published
+ Procedure TestRaiseStatement;
+ Procedure TestAssignStatement;
+ Procedure TestIfStatement;
+ Procedure TestIfStatementFull;
+ Procedure TestIfStatementElse;
+ Procedure TestWhileStatementEmpty;
+ Procedure TestWhileStatement;
+ Procedure TestSimpleStatement;
+ Procedure TestRepeatUntilStatementEmpty;
+ Procedure TestRepeatUntilStatementOne;
+ Procedure TestRepeatUntilStatementTwo;
+ Procedure TestRepeatUntilStatementThree;
+ Procedure TestForLoopUp;
+ Procedure TestForLoopDown;
+ Procedure TestBeginEndBlockEmpty;
+ Procedure TestBeginEndBlockStatementOne;
+ Procedure TestBeginEndBlockStatementTwo;
+ Procedure TestBeginEndBlockStatementThree;
+ Procedure TestWithStatementEmpty;
+ Procedure TestWithStatementOne;
+ Procedure TestWithStatementTwo;
+ Procedure TestTryFinallyStatement;
+ Procedure TestTryExceptStatement;
+ Procedure TestTryExceptStatementOnE;
+ Procedure TestReRaise;
+ Procedure TestVariableStatement;
+ end;
+
+implementation
+
+uses typinfo;
+
+{ TTestStatementConverter }
+
+Procedure TTestStatementConverter.TestRaiseStatement;
+
+Var
+ R : TPasImplRaise;
+ E : TJSThrowStatement;
+
+begin
+ R:=TPasImplRaise.Create('',Nil);
+ R.ExceptObject:=CreateIdent('e');
+ E:=TJSThrowStatement(Convert(R,TJSThrowStatement));
+ AssertIdentifier('Raise exception object',E.A,'e');
+end;
+
+
+Procedure TTestStatementConverter.TestAssignStatement;
+
+Var
+ R : TPasImplAssign;
+ E : TJSSimpleAssignStatement;
+
+begin
+ R:=CreateAssignStatement('a','b');
+ E:=TJSSimpleAssignStatement(Convert(R,TJSSimpleAssignStatement));
+ AssertAssignStatement('a = b assignment',E);
+end;
+
+
+Procedure TTestStatementConverter.TestIfStatement;
+
+Var
+ R : TPasImplIfElse;
+ E : TJSIfStatement;
+
+begin
+ // If a then ;
+ R:=TPasImplIfElse.Create('',Nil);
+ R.ConditionExpr:=CreateCondition;
+ E:=TJSIfStatement(Convert(R,TJSIfStatement));
+ AssertEquals('If branch is empty block statement',TJSEmptyBlockStatement,E.btrue.ClassType);
+ AssertNull('No else branch',E.bfalse);
+ AssertIdentifier('Left hand side OK',E.Cond,'a');
+end;
+
+Procedure TTestStatementConverter.TestIfStatementFull;
+
+Var
+ R : TPasImplIfElse;
+ E : TJSIfStatement;
+
+begin
+ // If a then a:=b;
+ R:=TPasImplIfElse.Create('',Nil);
+ R.ConditionExpr:=CreateCondition;
+ R.IfBranch:=CreateAssignStatement;
+ E:=TJSIfStatement(Convert(R,TJSIfStatement));
+ AssertIdentifier('Conditional expression',E.Cond,'a');
+ AssertAssignStatement('If branch',E.btrue);
+ AssertNull('No else branch',E.bfalse);
+end;
+
+Procedure TTestStatementConverter.TestIfStatementElse;
+Var
+ R : TPasImplIfElse;
+ E : TJSIfStatement;
+
+begin
+ // If a then a:=b else a:=e;
+ R:=TPasImplIfElse.Create('',Nil);
+ R.ConditionExpr:=CreateCondition;
+ R.IfBranch:=CreateAssignStatement;
+ R.ElseBranch:=CreateAssignStatement('a','e');
+ E:=TJSIfStatement(Convert(R,TJSIfStatement));
+ AssertIdentifier('Conditional expression',E.Cond,'a');
+ AssertAssignStatement('If branch',E.btrue);
+ AssertAssignStatement('else branch',E.bfalse,'a','e');
+end;
+
+Procedure TTestStatementConverter.TestWhileStatementEmpty;
+Var
+ R : TPasImplWhileDo;
+ E : TJSWhileStatement;
+
+begin
+ // While a do ;
+ R:=TPasImplWhileDo.Create('',Nil);
+ R.ConditionExpr:=CreateCondition;
+ E:=TJSWhileStatement(Convert(R,TJSWhileStatement));
+ AssertIdentifier('Conditional expression',E.Cond,'a');
+ AssertEquals('No statement, empty block statement',TJSEmptyBlockStatement,E.body.ClassType);
+end;
+
+Procedure TTestStatementConverter.TestWhileStatement;
+Var
+ R : TPasImplWhileDo;
+ E : TJSWhileStatement;
+
+begin
+ // While a do b:=c;
+ R:=TPasImplWhileDo.Create('',Nil);
+ R.Body:=CreateAssignStatement('b','c');
+ R.ConditionExpr:=CreateCondition;
+ E:=TJSWhileStatement(Convert(R,TJSWhileStatement));
+ AssertIdentifier('Conditional expression',E.Cond,'a');
+ AssertAssignStatement('While Block is assignment',E.body,'b','c');
+end;
+
+Procedure TTestStatementConverter.TestSimpleStatement;
+
+Var
+ R : TPasImplSimple;
+ E : TJSExpressionStatement;
+ C : TJSCallExpression;
+
+begin
+ R:=TPasImplSimple.Create('',Nil);
+ R.Expr:=CreateFunctionCall('a',['b']);
+ E:=TJSExpressionStatement(Convert(R,TJSExpressionStatement));
+ AssertNotNull('Have call node',E.A);
+ AssertEquals('Have call expression',TJSCallExpression,E.A.ClassType);
+ AssertEquals('Have call expression',TJSCallExpression,E.A.ClassType);
+ C:=TJSCallExpression(E.A);
+ AssertIdentifier('Call expression',C.Expr,'a');
+end;
+
+Procedure TTestStatementConverter.TestRepeatUntilStatementEmpty;
+
+Var
+ R : TPasImplRepeatUntil;
+ E : TJSWhileStatement;
+
+begin
+ // Repeat until a;
+ R:=TPasImplRepeatUntil.Create('',Nil);
+ R.ConditionExpr:=CreateCondition;
+ E:=TJSDoWhileStatement(Convert(R,TJSDoWhileStatement));
+ AssertNotNull('Have condition',E.Cond);
+ AssertEquals('Correct condition class',TJSUnaryNotExpression,E.Cond.ClassType);
+ AssertIdentifier('Conditional expression',TJSUnaryNotExpression(E.Cond).A,'a');
+ AssertNotNull('Have body',E.Body);
+ AssertEquals('No statement, empty block statement',TJSEmptyBlockStatement,E.body.ClassType);
+end;
+
+Procedure TTestStatementConverter.TestRepeatUntilStatementOne;
+
+Var
+ R : TPasImplRepeatUntil;
+ E : TJSWhileStatement;
+ L : TJSStatementList;
+
+begin
+ // Repeat b:=c; until a;
+ R:=TPasImplRepeatUntil.Create('',Nil);
+ R.ConditionExpr:=CreateCondition;
+ R.AddAssign(CreateIdent('b'),CreateIdent('c'));
+ E:=TJSDoWhileStatement(Convert(R,TJSDoWhileStatement));
+ AssertNotNull('Have condition',E.Cond);
+ AssertEquals('Correct condition class',TJSUnaryNotExpression,E.Cond.ClassType);
+ AssertIdentifier('Conditional expression',TJSUnaryNotExpression(E.Cond).A,'a');
+ AssertNotNull('Have body',E.Body);
+ AssertEquals('List statement, List statement',TJSStatementList,E.body.ClassType);
+ L:=TJSStatementList(E.Body);
+ AssertAssignStatement('First List statement is assignment',L.A,'b','c');
+ AssertNull('No second statement',L.B);
+end;
+
+Procedure TTestStatementConverter.TestRepeatUntilStatementTwo;
+
+Var
+ R : TPasImplRepeatUntil;
+ E : TJSWhileStatement;
+ L : TJSStatementList;
+
+begin
+ // Repeat b:=c; d:=e; until a;
+ R:=TPasImplRepeatUntil.Create('',Nil);
+ R.ConditionExpr:=CreateCondition;
+ R.AddAssign(CreateIdent('b'),CreateIdent('c'));
+ R.AddAssign(CreateIdent('d'),CreateIdent('e'));
+ E:=TJSDoWhileStatement(Convert(R,TJSDoWhileStatement));
+ AssertNotNull('Have condition',E.Cond);
+ AssertEquals('Correct condition class',TJSUnaryNotExpression,E.Cond.ClassType);
+ AssertIdentifier('Conditional expression',TJSUnaryNotExpression(E.Cond).A,'a');
+ L:=AssertListStatement('Multiple statements',E.Body);
+ AssertAssignStatement('First List statement is assignment',L.A,'b','c');
+ AssertAssignStatement('Second List statement is assignment',L.b,'d','e');
+end;
+
+Procedure TTestStatementConverter.TestRepeatUntilStatementThree;
+
+Var
+ R : TPasImplRepeatUntil;
+ E : TJSWhileStatement;
+ L : TJSStatementList;
+
+begin
+ // Repeat b:=c; d:=e; f:=g; until a;
+ R:=TPasImplRepeatUntil.Create('',Nil);
+ R.ConditionExpr:=CreateCondition;
+ R.AddAssign(CreateIdent('b'),CreateIdent('c'));
+ R.AddAssign(CreateIdent('d'),CreateIdent('e'));
+ R.AddAssign(CreateIdent('f'),CreateIdent('g'));
+ E:=TJSDoWhileStatement(Convert(R,TJSDoWhileStatement));
+ AssertNotNull('Have condition',E.Cond);
+ AssertEquals('Correct condition class',TJSUnaryNotExpression,E.Cond.ClassType);
+ AssertIdentifier('Conditional expression',TJSUnaryNotExpression(E.Cond).A,'a');
+ AssertNotNull('Have body',E.Body);
+ L:=AssertListStatement('Multiple statements',E.Body);
+ AssertAssignStatement('First List statement is assignment',L.A,'b','c');
+ L:=AssertListStatement('Second statement is again list',L.B);
+ AssertAssignStatement('Second List statement is assignment',L.A,'d','e');
+ AssertAssignStatement('third List statement is assignment',L.B,'f','g');
+end;
+
+Procedure TTestStatementConverter.TestForLoopUp;
+
+Var
+ F : TPasImplForLoop;
+ E : TJSForStatement;
+ L : TJSStatementList;
+ VS : TJSVariableStatement;
+ VD : TJSVarDeclaration;
+ A : TJSSimpleAssignStatement;
+ I : TJSUnaryPostPlusPlusExpression;
+ C : TJSRelationalExpressionLE;
+
+begin
+ // For I:=0 to 100 do a:=b;
+ F:=TPasImplForLoop.Create('',Nil);
+ F.Variable:=TPasVariable.Create('I',F);
+ F.VariableName:='I';
+ F.StartExpr:=CreateLiteral(1);
+ F.EndExpr:=CreateLiteral(100);
+ F.Body:=CreateAssignStatement();
+ L:=TJSStatementList(Convert(F,TJSStatementList));
+ VS:=TJSVariableStatement(AssertElement('Start with upper limit temp var',TJSVariableStatement,L.A));
+ VD:=TJSVarDeclaration(AssertElement('Have variable',TJSVarDeclaration,VS.A));
+ AssertEquals('Correct name for end value','i$endloopvalue',VD.Name);
+ AssertLiteral('Correct end value',VD.Init,100);
+ E:=TJSForStatement(AssertElement('Second in list is for statement',TJSForStatement,L.B));
+ A:=TJSSimpleAssignStatement(AssertElement('Init statement is assign statement',TJSSimpleAssignStatement,E.Init));
+ AssertLiteral('Init statement RHS is start value',A.Expr,1);
+ AssertIdentifier('Init statement LHS is loop variable',A.LHS,'i');
+ I:=TJSUnaryPostPlusPlusExpression(AssertElement('Increment is ++ statement',TJSUnaryPostPlusPlusExpression,E.Incr));
+ AssertIdentifier('++ on correct variable name',I.A,'i');
+ AssertAssignStatement('Correct body',E.Body);
+ C:=TJSRelationalExpressionLE(AssertElement('Condition is <= expression',TJSRelationalExpressionLE,E.Cond));
+ AssertIdentifier('Cond LHS is loop variable',C.A,'i');
+ AssertIdentifier('Cond RHS is end loop value variable',C.B,'i$endloopvalue');
+end;
+
+Procedure TTestStatementConverter.TestForLoopDown;
+Var
+ F : TPasImplForLoop;
+ E : TJSForStatement;
+ L : TJSStatementList;
+ VS : TJSVariableStatement;
+ VD : TJSVarDeclaration;
+ A : TJSSimpleAssignStatement;
+ I : TJSUnaryPostMinusMinusExpression;
+ C : TJSRelationalExpressionGE;
+
+begin
+ // For I:=0 to 100 do a:=b;
+ F:=TPasImplForLoop.Create('',Nil);
+ F.Variable:=TPasVariable.Create('I',F);
+ F.VariableName:='I';
+ F.StartExpr:=CreateLiteral(100);
+ F.EndExpr:=CreateLiteral(1);
+ F.LoopType:=ltDown;
+ F.Body:=CreateAssignStatement();
+ L:=TJSStatementList(Convert(F,TJSStatementList));
+ VS:=TJSVariableStatement(AssertElement('Start with upper limit temp var',TJSVariableStatement,L.A));
+ VD:=TJSVarDeclaration(AssertElement('Have variable',TJSVarDeclaration,VS.A));
+ AssertEquals('Correct name for end value','i$endloopvalue',VD.Name);
+ AssertLiteral('Correct end value',VD.Init,1);
+ E:=TJSForStatement(AssertElement('Second in list is for statement',TJSForStatement,L.B));
+ A:=TJSSimpleAssignStatement(AssertElement('Init statement is assign statement',TJSSimpleAssignStatement,E.Init));
+ AssertLiteral('Init statement RHS is start value',A.Expr,100);
+ AssertIdentifier('Init statement LHS is loop variable',A.LHS,'i');
+ I:=TJSUnaryPostMinusMinusExpression(AssertElement('Increment is -- statement',TJSUnaryPostMinusMinusExpression,E.Incr));
+ AssertIdentifier('++ on correct variable name',I.A,'i');
+ AssertAssignStatement('Correct body',E.Body);
+ C:=TJSRelationalExpressionGE(AssertElement('Condition is <= expression',TJSRelationalExpressionGE,E.Cond));
+ AssertIdentifier('Cond LHS is loop variable',C.A,'i');
+ AssertIdentifier('Cond RHS is end loop value variable',C.B,'i$endloopvalue');
+end;
+
+Procedure TTestStatementConverter.TestBeginEndBlockEmpty;
+Var
+ R : TPasImplBeginBlock;
+
+begin
+ // begin end;
+ R:=TPasImplBeginBlock.Create('',Nil);
+ Convert(R,TJSEmptyBlockStatement);
+end;
+
+Procedure TTestStatementConverter.TestBeginEndBlockStatementOne;
+
+Var
+ R : TPasImplBeginBlock;
+ L : TJSStatementList;
+
+begin
+ // begin a:=bend;
+ R:=TPasImplBeginBlock.Create('',Nil);
+ R.AddAssign(CreateIdent('a'),CreateIdent('b'));
+ L:=TJSStatementList(Convert(R,TJSStatementList));
+ AssertNull('No second statement',L.B);
+ AssertAssignStatement('First List statement is assignment',L.A,'a','b');
+end;
+
+Procedure TTestStatementConverter.TestBeginEndBlockStatementTwo;
+
+Var
+ R : TPasImplBeginBlock;
+ L : TJSStatementList;
+
+begin
+ // begin a:=b; c:=d; end;
+ R:=TPasImplBeginBlock.Create('',Nil);
+ R.AddAssign(CreateIdent('a'),CreateIdent('b'));
+ R.AddAssign(CreateIdent('c'),CreateIdent('d'));
+ L:=TJSStatementList(Convert(R,TJSStatementList));
+ AssertAssignStatement('First List statement is assignment',L.A,'a','b');
+ AssertAssignStatement('Second List statement is assignment',L.B,'c','d');
+end;
+
+Procedure TTestStatementConverter.TestBeginEndBlockStatementThree;
+Var
+ R : TPasImplBeginBlock;
+ L : TJSStatementList;
+
+begin
+ // begin a:=b; c:=d; end;
+ R:=TPasImplBeginBlock.Create('',Nil);
+ R.AddAssign(CreateIdent('a'),CreateIdent('b'));
+ R.AddAssign(CreateIdent('c'),CreateIdent('d'));
+ R.AddAssign(CreateIdent('e'),CreateIdent('f'));
+ L:=TJSStatementList(Convert(R,TJSStatementList));
+ AssertAssignStatement('First List statement is assignment',L.A,'a','b');
+ L:=AssertListStatement('Second statement is again list',L.B);
+ AssertAssignStatement('Second List statement is assignment',L.A,'c','d');
+ AssertAssignStatement('third List statement is assignment',L.B,'e','f');
+end;
+
+Procedure TTestStatementConverter.TestWithStatementEmpty;
+Var
+ W : TPasImplWithDo;
+ El : TJSWithStatement;
+
+begin
+ // With A do ;
+ W:=TPasImplWithDo.Create('',NIl);
+ W.Expressions.Add(CreateIdent('a'));
+ El:=TJSWithStatement(Convert(W,TJSWithStatement));
+ AssertIdentifier('Correct with expression',EL.A,'a');
+ AssertEmptyBlockStatement('Empty with',El.B);
+end;
+
+Procedure TTestStatementConverter.TestWithStatementOne;
+
+Var
+ W : TPasImplWithDo;
+ El : TJSWithStatement;
+
+begin
+ // With A do b:=c;
+ W:=TPasImplWithDo.Create('',NIl);
+ W.Expressions.Add(CreateIdent('a'));
+ W.Body:=CreateAssignStatement('b','c');
+ El:=TJSWithStatement(Convert(W,TJSWithStatement));
+ AssertIdentifier('Correct with expression',EL.A,'a');
+ AssertAssignStatement('Correct assignment',EL.B,'b','c');
+end;
+
+Procedure TTestStatementConverter.TestWithStatementTwo;
+Var
+ W : TPasImplWithDo;
+ El : TJSWithStatement;
+
+begin
+ // With A,D do b:=c;
+ W:=TPasImplWithDo.Create('',NIl);
+ W.Expressions.Add(CreateIdent('a'));
+ W.Expressions.Add(CreateIdent('d'));
+ W.Body:=CreateAssignStatement('b','c');
+ El:=TJSWithStatement(Convert(W,TJSWithStatement));
+ AssertIdentifier('Correct with expression',EL.A,'a');
+ El:=TJSWithStatement(AssertElement('Have second with statement',TJSWithStatement,EL.B));
+ AssertIdentifier('Correct with expression',EL.A,'d');
+ AssertAssignStatement('Correct assignment',El.B,'b','c');
+end;
+
+Procedure TTestStatementConverter.TestTryFinallyStatement;
+
+Var
+ T : TPasImplTry;
+ F : TPasImplTryFinally;
+ El : TJSTryFinallyStatement;
+ L : TJSStatementList;
+
+begin
+ // Try a:=B finally b:=c end;
+ T:=TPasImplTry.Create('',Nil);
+ T.AddElement(CreateAssignStatement('a','b'));
+ F:=T.AddFinally;
+ F.AddElement(CreateAssignStatement('b','c'));
+ El:=TJSTryFinallyStatement(Convert(T,TJSTryFinallyStatement));
+ L:=AssertListStatement('try..finally block is statement list',EL.Block);
+ AssertAssignStatement('Correct assignment in try..finally block',L.A,'a','b');
+ AssertNull('No second statement',L.B);
+ L:=AssertListStatement('try..finally block is statement list',El.BFinally);
+ AssertAssignStatement('Correct assignment in finally..end block',L.A,'b','c');
+ AssertNull('No second statement',L.B);
+end;
+
+Procedure TTestStatementConverter.TestTryExceptStatement;
+Var
+ T : TPasImplTry;
+ F : TPasImplTryExcept;
+ El : TJSTryFinallyStatement;
+ L : TJSStatementList;
+
+begin
+ // Try a:=B except b:=c end;
+ T:=TPasImplTry.Create('',Nil);
+ T.AddElement(CreateAssignStatement('a','b'));
+ F:=T.AddExcept;
+ F.AddElement(CreateAssignStatement('b','c'));
+ El:=TJSTryFinallyStatement(Convert(T,TJSTryCatchStatement));
+ L:=AssertListStatement('try..except block is statement list',EL.Block);
+ AssertAssignStatement('Correct assignment in try..except block',L.A,'a','b');
+ AssertNull('No second statement',L.B);
+ L:=AssertListStatement('try..except block is statement list',El.BCatch);
+ AssertAssignStatement('Correct assignment in except..end block',L.A,'b','c');
+ AssertEquals('Correct exception object name','jsexception',EL.Ident);
+ AssertNull('No second statement',L.B);
+end;
+
+Procedure TTestStatementConverter.TestTryExceptStatementOnE;
+
+Var
+ T : TPasImplTry;
+ F : TPasImplTryExcept;
+ O : TPasImplExceptOn;
+ El : TJSTryFinallyStatement;
+ L : TJSStatementList;
+ I : TJSIfStatement;
+ IC : TJSRelationalExpressionInstanceOf;
+ V : TJSVarDeclaration;
+
+begin
+ // Try a:=B except on E : exception do b:=c end;
+ // Try a:=B except on E : exception do b:=c end;
+ {
+ Becomes:
+ try {
+ a=b;
+ } catch (jsexception) {
+ if jsexception instanceof exception {
+ var e = jsexception;
+ b = c;
+ }
+ }
+ }
+ T:=TPasImplTry.Create('',Nil);
+ T.AddElement(CreateAssignStatement('a','b'));
+ F:=T.AddExcept;
+ O:=F.AddExceptOn(CreateIdent('E'),CreateIdent('Exception'));
+ O.Body:=CreateAssignStatement('b','c');
+ // Convert
+ El:=TJSTryFinallyStatement(Convert(T,TJSTryCatchStatement));
+ AssertEquals('Correct exception object name','jsexception',EL.Ident);
+ L:=AssertListStatement('try..except block is statement list',El.BCatch);
+ AssertNull('No second statement',L.B);
+ I:=TJSIfStatement(AssertElement('On block is if',TJSIfStatement,L.A));
+ Ic:=TJSRelationalExpressionInstanceOf(AssertElement('If condition is InstanceOf expression',TJSRelationalExpressionInstanceOf,I.Cond));
+ Assertidentifier('InstanceOf left is exception object',Ic.A,'jsexception');
+ // Lowercased exception - May need checking
+ Assertidentifier('InstanceOf right is original exception type',Ic.B,'exception');
+ L:=AssertListStatement('On block is always a list',i.btrue);
+ V:=TJSVarDeclaration(AssertElement('First statement in list is a var declaration',TJSVarDeclaration,L.A));
+ AssertEquals('Variable name is identifier in On A : Ex do','e',V.Name);
+ Assertidentifier('Variable init is exception object',v.init,'jsexception');
+ L:=AssertListStatement('Second statement is again list',L.B);
+ AssertAssignStatement('Original assignment in second statement',L.A,'b','c');
+end;
+
+Procedure TTestStatementConverter.TestReRaise;
+Var
+ T : TPasImplTry;
+ F : TPasImplTryExcept;
+ O : TPasImplExceptOn;
+ El : TJSTryFinallyStatement;
+ L : TJSStatementList;
+ I : TJSIfStatement;
+ IC : TJSRelationalExpressionInstanceOf;
+ R : TJSThrowStatement;
+ V : TJSVarDeclaration;
+
+begin
+ // Try a:=B except on E : exception do b:=c end;
+ {
+ Becomes:
+ try {
+ a=b;
+ } catch (jsexception) {
+ if jsexception instanceof exception {
+ var e = jsexception;
+ throw jsexception;
+ }
+ }
+ }
+ T:=TPasImplTry.Create('',Nil);
+ T.AddElement(CreateAssignStatement('a','b'));
+ F:=T.AddExcept;
+ O:=F.AddExceptOn(CreateIdent('E'),CreateIdent('Exception'));
+ O.Body:=TPasImplRaise.Create('',Nil);
+ // Convert
+ El:=TJSTryFinallyStatement(Convert(T,TJSTryCatchStatement));
+ AssertEquals('Correct exception object name','jsexception',EL.Ident);
+ L:=AssertListStatement('try..except block is statement list',El.BCatch);
+ AssertNull('No second statement',L.B);
+ I:=TJSIfStatement(AssertElement('On block is if',TJSIfStatement,L.A));
+ Ic:=TJSRelationalExpressionInstanceOf(AssertElement('If condition is InstanceOf expression',TJSRelationalExpressionInstanceOf,I.Cond));
+ Assertidentifier('InstanceOf left is exception object',Ic.A,'jsexception');
+ // Lowercased exception - May need checking
+ L:=AssertListStatement('On block is always a list',i.btrue);
+ V:=TJSVarDeclaration(AssertElement('First statement in list is a var declaration',TJSVarDeclaration,L.A));
+ AssertEquals('Variable name is identifier in On A : Ex do','e',V.Name);
+ Assertidentifier('Variable init is exception object',v.init,'jsexception');
+ L:=AssertListStatement('Second statement is again list',L.B);
+ R:=TJSThrowStatement(AssertElement('On block is throw statement',TJSThrowStatement,L.A));
+ Assertidentifier('R expression is original exception ',R.A,'jsexception');
+end;
+
+Procedure TTestStatementConverter.TestVariableStatement;
+
+Var
+ S : TPasSection;
+ V : TPasVariable;
+ L : TJSStatementList;
+ JV : TJSVariableStatement;
+ JVD : TJSVarDeclaration;
+begin
+ S:=TPasSection.Create('',Nil);
+ V:=TPasVariable.Create('A',Nil);
+ S.Declarations.Add(V);
+ S.Variables.Add(V);
+ L:=TJSStatementList(Convert(S,TJSStatementList));
+ JV:=TJSVariableStatement(AssertElement('Variable statement',TJSVariableStatement,L.A));
+ JVD:=TJSVarDeclaration(AssertElement('Variable declaration',TJSVarDeclaration,JV.A));
+ AssertEquals('Correct variable name','a',JVD.Name);
+end;
+
+{ TTestExpressionConverter }
+
+Function TTestExpressionConverter.TestLiteralExpression(AElement: TPasElement;
+ AClass: TJSElementClass): TJSLIteral;
+
+Var
+ E : TJSElement;
+
+begin
+ E:=Convert(AElement,AClass);
+ if not (E is TJSLiteral) then
+ Fail('Do not have literal class, but: '+E.ClassName);
+ Result:=TJSLIteral(E);
+end;
+
+Function TTestExpressionConverter.TestUnaryExpression(AElement: TPasElement; AClass: TJSElementClass): TJSUnary;
+
+Var
+ E : TJSElement;
+
+begin
+ E:=Convert(AElement,AClass);
+ AssertNotNull('Convert returned a result',E);
+ if not (E is TJSUnary) then
+ Fail('Do not have unary class, but: '+E.ClassName);
+ Result:=TJSUnary(E);
+end;
+
+Function TTestExpressionConverter.TestBinaryExpression(AElement: TPasElement;
+ AClass: TJSElementClass): TJSBinary;
+
+Var
+ E : TJSElement;
+
+begin
+ E:=Convert(AElement,AClass);
+ if not (E is TJSBinary) then
+ Fail('Do not have literal class, but: '+E.ClassName);
+ Result:=TJSBinary(E);
+end;
+
+Procedure TTestExpressionConverter.TestPrimitiveString;
+
+Var
+ S : TPrimitiveExpr;
+ E : TJSLiteral;
+
+begin
+ S:=TPrimitiveExpr.Create(Nil,pekString,'''me''');
+ E:=TestLiteralExpression(S,TJSLiteral);
+ AssertEquals('Correct literal type',jstString,E.Value.ValueType);
+ AssertEquals('Correct literal value','me',E.Value.AsString);
+end;
+
+Procedure TTestExpressionConverter.TestPrimitiveNumber;
+Var
+ S : TPrimitiveExpr;
+ E : TJSLiteral;
+
+begin
+ S:=TPrimitiveExpr.Create(Nil,pekNumber,'1.23');
+ E:=TestLiteralExpression(S,TJSLiteral);
+ AssertEquals('Correct literal type',jstNumber,E.Value.ValueType);
+ AssertEquals('Correct literal value',1.23,E.Value.AsNumber);
+end;
+
+Procedure TTestExpressionConverter.TestPrimitiveNil;
+
+Var
+ S : TNilExpr;
+ E : TJSLiteral;
+
+begin
+ S:=TNilExpr.Create(Nil);
+ E:=TestLiteralExpression(S,TJSLiteral);
+ AssertEquals('Correct literal type',jstNull,E.Value.ValueType);
+ AssertEquals('Correct literal value',True,E.Value.IsNull);
+end;
+
+Procedure TTestExpressionConverter.TestPrimitiveBoolTrue;
+Var
+ S : TBoolConstExpr;
+ E : TJSLiteral;
+
+begin
+ S:=TBoolConstExpr.Create(Nil,pekBoolConst,True);
+ E:=TestLiteralExpression(S,TJSLiteral);
+ AssertEquals('Correct literal type',jstBoolean,E.Value.ValueType);
+ AssertEquals('Correct literal value',True,E.Value.AsBoolean);
+end;
+
+Procedure TTestExpressionConverter.TestPrimitiveBoolFalse;
+
+Var
+ S : TBoolConstExpr;
+ E : TJSLiteral;
+
+begin
+ S:=TBoolConstExpr.Create(Nil,pekBoolConst,False);
+ E:=TestLiteralExpression(S,TJSLiteral);
+ AssertEquals('Correct literal type',jstBoolean,E.Value.ValueType);
+ AssertEquals('Correct literal value',False,E.Value.AsBoolean);
+end;
+
+Procedure TTestExpressionConverter.TestPrimitiveIdent;
+
+Var
+ Id : TPrimitiveExpr;
+ Res : TJSPrimaryExpressionIdent;
+begin
+ Id:=TPrimitiveExpr.Create(Nil,pekIdent,'a');
+ Res:=TJSPrimaryExpressionIdent(Convert(Id,TJSPrimaryExpressionIdent));
+ AssertEquals('Correct identifier name','a',Res.Name);
+end;
+
+Procedure TTestExpressionConverter.TestUnaryMinus;
+Var
+ U : TUnaryExpr;
+ E : TJSUnaryMinusExpression;
+
+begin
+ U:=TUnaryExpr.Create(Nil,pekUnary,eopSubtract);
+ U.Operand:=CreateLiteral(1.23);
+ E:=TJSUnaryMinusExpression(TestUnaryExpression(U,TJSUnaryMinusExpression));
+ AssertLiteral('Correct literal for minus',E.A,1.23)
+end;
+
+Procedure TTestExpressionConverter.TestUnaryPlus;
+Var
+ U : TUnaryExpr;
+ E : TJSUnaryPlusExpression;
+
+begin
+ U:=TUnaryExpr.Create(Nil,pekUnary,eopAdd);
+ U.Operand:=CreateLiteral(1.23);
+ E:=TJSUnaryPlusExpression(TestUnaryExpression(U,TJSUnaryPlusExpression));
+ AssertLiteral('Correct literal for plus',E.A,1.23)
+end;
+
+Procedure TTestExpressionConverter.TestBinaryPlus;
+Var
+ B : TBinaryExpr;
+ E : TJSAdditiveExpressionPlus;
+
+begin
+ B:=TBinaryExpr.Create(Nil,pekBinary,eopAdd);
+ B.left:=CreateLiteral(1.23);
+ B.Right:=CreateLiteral(3.45);
+ E:=TJSAdditiveExpressionPlus(TestBinaryExpression(B,TJSAdditiveExpressionPlus));
+ AssertLiteral('Correct left literal for addition',E.A,1.23);
+ AssertLiteral('Correct right literal for addition',E.B,3.45);
+end;
+
+Procedure TTestExpressionConverter.TestBinaryMinus;
+Var
+ B : TBinaryExpr;
+ E : TJSAdditiveExpressionMinus;
+
+begin
+ B:=TBinaryExpr.Create(Nil,pekBinary,eopSubtract);
+ B.left:=CreateLiteral(1.23);
+ B.Right:=CreateLiteral(3.45);
+ E:=TJSAdditiveExpressionMinus(TestBinaryExpression(B,TJSAdditiveExpressionMinus));
+ AssertLiteral('Correct left literal for subtract',E.A,1.23);
+ AssertLiteral('Correct right literal for subtract',E.B,3.45);
+end;
+
+Procedure TTestExpressionConverter.TestBinaryMultiply;
+Var
+ B : TBinaryExpr;
+ E : TJSMultiplicativeExpressionMul;
+
+begin
+ B:=TBinaryExpr.Create(Nil,pekBinary,eopMultiply);
+ B.left:=CreateLiteral(1.23);
+ B.Right:=CreateLiteral(3.45);
+ E:=TJSMultiplicativeExpressionMul(TestBinaryExpression(B,TJSMultiplicativeExpressionMul));
+ AssertLiteral('Correct left literal for multiplication',E.A,1.23);
+ AssertLiteral('Correct right literal for multiplication',E.B,3.45);
+end;
+
+Procedure TTestExpressionConverter.TestBinaryDivision;
+
+Var
+ B : TBinaryExpr;
+ E : TJSMultiplicativeExpressionDiv;
+
+begin
+ B:=TBinaryExpr.Create(Nil,pekBinary,eopDivide);
+ B.left:=CreateLiteral(1.23);
+ B.Right:=CreateLiteral(3.45);
+ E:=TJSMultiplicativeExpressionDiv(TestBinaryExpression(B,TJSMultiplicativeExpressionDiv));
+ AssertLiteral('Correct left literal for division',E.A,1.23);
+ AssertLiteral('Correct right literal for division',E.B,3.45);
+end;
+
+Procedure TTestExpressionConverter.TestBinaryDiv;
+
+Var
+ B : TBinaryExpr;
+ E : TJSMultiplicativeExpressionDiv;
+
+begin
+ B:=TBinaryExpr.Create(Nil,pekBinary,eopDiv);
+ B.left:=CreateLiteral(1.23);
+ B.Right:=CreateLiteral(3.45);
+ E:=TJSMultiplicativeExpressionDiv(TestBinaryExpression(B,TJSMultiplicativeExpressionDiv));
+ AssertLiteral('Correct left literal for div',E.A,1.23);
+ AssertLiteral('Correct right literal for div',E.B,3.45);
+end;
+
+Procedure TTestExpressionConverter.TestBinaryMod;
+Var
+ B : TBinaryExpr;
+ E : TJSMultiplicativeExpressionMod;
+
+begin
+ B:=TBinaryExpr.Create(Nil,pekBinary,eopMod);
+ B.left:=CreateLiteral(1.23);
+ B.Right:=CreateLiteral(3.45);
+ E:=TJSMultiplicativeExpressionMod(TestBinaryExpression(B,TJSMultiplicativeExpressionMod));
+ AssertLiteral('Correct left literal for mod',E.A,1.23);
+ AssertLiteral('Correct right literal for mod',E.B,3.45);
+end;
+
+Procedure TTestExpressionConverter.TestBinarySHL;
+Var
+ B : TBinaryExpr;
+ E : TJSLShiftExpression;
+
+begin
+ B:=TBinaryExpr.Create(Nil,pekBinary,eopSHL);
+ B.left:=CreateLiteral(13);
+ B.Right:=CreateLiteral(3);
+ E:=TJSLShiftExpression(TestBinaryExpression(B,TJSLShiftExpression));
+ AssertLiteral('Correct left literal for shl',E.A,13);
+ AssertLiteral('Correct right literal for shl',E.B,3);
+end;
+
+Procedure TTestExpressionConverter.TestBinarySHR;
+Var
+ B : TBinaryExpr;
+ E : TJSRShiftExpression;
+
+begin
+ B:=TBinaryExpr.Create(Nil,pekBinary,eopSHR);
+ B.left:=CreateLiteral(13);
+ B.Right:=CreateLiteral(3);
+ E:=TJSRShiftExpression(TestBinaryExpression(B,TJSRShiftExpression));
+ AssertLiteral('Correct left literal for shr',E.A,13);
+ AssertLiteral('Correct right literal for shr',E.B,3);
+end;
+
+Procedure TTestExpressionConverter.TestBinaryEqual;
+Var
+ B : TBinaryExpr;
+ E : TJSEqualityExpressionEq;
+
+begin
+ B:=TBinaryExpr.Create(Nil,pekBinary,eopEqual);
+ B.left:=CreateLiteral(13);
+ B.Right:=CreateLiteral(3);
+ E:=TJSEqualityExpressionEq(TestBinaryExpression(B,TJSEqualityExpressionEq));
+ AssertLiteral('Correct left literal for equal',E.A,13);
+ AssertLiteral('Correct right literal for equal',E.B,3);
+end;
+
+Procedure TTestExpressionConverter.TestBinaryNotEqual;
+Var
+ B : TBinaryExpr;
+ E : TJSEqualityExpressionNE;
+
+begin
+ B:=TBinaryExpr.Create(Nil,pekBinary,eopNotEqual);
+ B.left:=CreateLiteral(13);
+ B.Right:=CreateLiteral(3);
+ E:=TJSEqualityExpressionNE(TestBinaryExpression(B,TJSEqualityExpressionNE));
+ AssertLiteral('Correct left literal for not equal',E.A,13);
+ AssertLiteral('Correct right literal for not equal',E.B,3);
+end;
+
+Procedure TTestExpressionConverter.TestBinaryLessThan;
+
+Var
+ B : TBinaryExpr;
+ E : TJSRelationalExpressionLT;
+
+begin
+ B:=TBinaryExpr.Create(Nil,pekBinary,eopLessThan);
+ B.left:=CreateLiteral(13);
+ B.Right:=CreateLiteral(3);
+ E:=TJSRelationalExpressionLT(TestBinaryExpression(B,TJSRelationalExpressionLT));
+ AssertLiteral('Correct left literal for less than',E.A,13);
+ AssertLiteral('Correct right literal for less than',E.B,3);
+end;
+
+Procedure TTestExpressionConverter.TestBinaryLessThanEqual;
+
+Var
+ B : TBinaryExpr;
+ E : TJSRelationalExpressionLE;
+
+begin
+ B:=TBinaryExpr.Create(Nil,pekBinary,eopLessThanEqual);
+ B.left:=CreateLiteral(13);
+ B.Right:=CreateLiteral(3);
+ E:=TJSRelationalExpressionLE(TestBinaryExpression(B,TJSRelationalExpressionLE));
+ AssertLiteral('Correct left literal for less than or equal',E.A,13);
+ AssertLiteral('Correct right literal for less than or equal',E.B,3);
+end;
+
+Procedure TTestExpressionConverter.TestBinaryGreater;
+Var
+ B : TBinaryExpr;
+ E : TJSRelationalExpressionGT;
+
+begin
+ B:=TBinaryExpr.Create(Nil,pekBinary,eopGreaterThan);
+ B.left:=CreateLiteral(13);
+ B.Right:=CreateLiteral(3);
+ E:=TJSRelationalExpressionGT(TestBinaryExpression(B,TJSRelationalExpressionGT));
+ AssertLiteral('Correct left literal for greater than',E.A,13);
+ AssertLiteral('Correct right literal for greater than',E.B,3);
+end;
+
+Procedure TTestExpressionConverter.TestBinaryGreaterThanEqual;
+
+Var
+ B : TBinaryExpr;
+ E : TJSRelationalExpressionGE;
+
+begin
+ B:=TBinaryExpr.Create(Nil,pekBinary,eopGreaterThanEqual);
+ B.left:=CreateLiteral(13);
+ B.Right:=CreateLiteral(3);
+ E:=TJSRelationalExpressionGE(TestBinaryExpression(B,TJSRelationalExpressionGE));
+ AssertLiteral('Correct left literal for greater than or equal',E.A,13);
+ AssertLiteral('Correct right literal for greater than or equal',E.B,3);
+end;
+
+Procedure TTestExpressionConverter.TestBinaryIs;
+Var
+ B : TBinaryExpr;
+ E : TJSRelationalExpressionInstanceOf;
+
+begin
+ B:=TBinaryExpr.Create(Nil,pekBinary,eopIs);
+ B.left:=CreateIdent('a');
+ B.Right:=CreateIdent('b');
+ E:=TJSRelationalExpressionInstanceOf(TestBinaryExpression(B,TJSRelationalExpressionInstanceOf));
+ AssertIdentifier('Correct left literal for is',E.A,'a');
+ AssertIdentifier('Correct right literal for is',E.B,'b');
+end;
+
+Procedure TTestExpressionConverter.TestCallExpressionNone;
+Var
+ B : TParamsExpr;
+ E : TJSCallExpression;
+
+begin
+ // a();
+ B:=CreateFunctionCall('a',[]);
+ E:=TJSCallExpression(Convert(B,TJSCallExpression));
+ AssertIdentifier('Correct left literal for is',E.Expr,'a');
+ AssertNull('No arguments',E.Args);
+// AssertEquals('No arguments',0,E.Args.Elements.Count);
+end;
+
+Procedure TTestExpressionConverter.TestCallExpressionOne;
+
+Var
+ B : TParamsExpr;
+ E : TJSCallExpression;
+
+begin
+ // a(b);
+ B:=CreateFunctionCall('a',['b']);
+ E:=TJSCallExpression(Convert(B,TJSCallExpression));
+ AssertIdentifier('Correct left literal for is',E.Expr,'a');
+ AssertNotNull('have arguments',E.Args);
+ AssertEquals('Argument count',1,E.Args.Elements.Count);
+ AssertIdentifier('Argument 1 identifier',E.Args.Elements[0].Expr,'b');
+end;
+
+Procedure TTestExpressionConverter.TestCallExpressionTwo;
+Var
+ B : TParamsExpr;
+ E : TJSCallExpression;
+
+begin
+ // a(b,c);
+ B:=CreateFunctionCall('a',['b','c']);
+ E:=TJSCallExpression(Convert(B,TJSCallExpression));
+ AssertIdentifier('Correct left literal for is',E.Expr,'a');
+ AssertNotNull('have arguments',E.Args);
+ AssertEquals('Argument count',2,E.Args.Elements.Count);
+ AssertIdentifier('Argument 1 identifier',E.Args.Elements[0].Expr,'b');
+ AssertIdentifier('Argument 2 identifier',E.Args.Elements[1].Expr,'c');
+end;
+
+Procedure TTestExpressionConverter.TestMemberExpressionArrayOneDim;
+
+Var
+ B : TParamsExpr;
+ E : TJSBracketMemberExpression;
+
+begin
+ // a[b];
+ B:=TParamsExpr.Create(Nil,pekArrayParams,eopNone);
+ B.Value:=CreateIdent('a');
+ B.AddParam(CreateIdent('b'));
+ E:=TJSBracketMemberExpression(Convert(B,TJSBracketMemberExpression));
+ AssertIdentifier('Correct array name',E.MExpr,'a');
+ AssertIdentifier('Correct array member name',E.Name,'b');
+end;
+
+Procedure TTestExpressionConverter.TestMemberExpressionArrayTwoDim;
+Var
+ B : TParamsExpr;
+ E : TJSBracketMemberExpression;
+
+begin
+ // a[b,c];
+ B:=TParamsExpr.Create(Nil,pekArrayParams,eopNone);
+ B.Value:=CreateIdent('a');
+ B.AddParam(CreateIdent('b'));
+ B.AddParam(CreateIdent('c'));
+ AttemptConvert:=B;
+ AssertException('Cannot yet convert 2-dim arrays',EPasToJS,@TryConvert);
+end;
+
+Procedure TTestExpressionConverter.TestVariable;
+
+Var
+ VD : TJSVarDeclaration;
+ R :TPasVariable;
+begin
+ R:=TPasVariable.Create('A',Nil);
+ VD:=TJSVarDeclaration(Convert(R,TJSVarDeclaration));
+ AssertEquals('Correct name, lowercased','a',VD.Name);
+ AssertNull('No init',VD.Init);
+end;
+
+Procedure TTestExpressionConverter.TestArrayVariable;
+Var
+ VD : TJSVarDeclaration;
+ R :TPasVariable;
+ A : TJSArrayLiteral;
+
+begin
+ R:=TPasVariable.Create('A',Nil);
+ R.VarType:=TPasArrayType.Create('myarray',Nil);
+ VD:=TJSVarDeclaration(Convert(R,TJSVarDeclaration));
+ AssertEquals('Correct name, lowercased','a',VD.Name);
+ A:=TJSArrayLiteral(AssertElement('Init is array literal',TJSArrayLiteral,VD.Init));
+ AssertEquals('No elements',0,A.Elements.Count);
+end;
+
+procedure TTestTestConverter.TestEmpty;
+begin
+ AssertNotNull('Have converter',Converter);
+end;
+
+procedure TTestConverter.SetUp;
+begin
+ FConverter:=TPasToJSConverter.Create;
+end;
+
+procedure TTestConverter.TearDown;
+begin
+ FreeAndNil(FRes);
+ FreeAndNil(FSource);
+ FreeAndNil(FConverter);
+end;
+
+Procedure TTestConverter.TryConvert;
+begin
+ Convert(FAC,TJSElement);
+end;
+
+Function TTestConverter.Convert(AElement: TPasElement; AClass: TJSElementClass
+ ): TJSElement;
+begin
+ FSource:=AElement;
+ Result:=FConverter.ConvertElement(AElement);
+ FRes:=Result;
+ if (AClass<>Nil) then
+ begin
+ AssertNotNull('Have conversion result',Result);
+ AssertEquals('Conversion result has correct class',AClass,Result.ClassType);
+ end;
+end;
+
+Class procedure TTestConverter.AssertEquals(Const Msg: String; AExpected, AActual: TJSType);
+begin
+ AssertEquals(Msg,GetEnumName(TypeInfo(TJSType),Ord(AExpected)),
+ GetEnumName(TypeInfo(TJSType),Ord(AActual)));
+end;
+
+Class procedure TTestConverter.AssertLiteral(Const Msg : String; Lit: TJSElement; AType: TJSType);
+begin
+ AssertNotNull(Msg+': Have instance',Lit);
+ AssertEquals(Msg+': Correct class',TJSLIteral,Lit.ClassType);
+ AssertEquals(Msg+': Correct value type',AType,TJSLIteral(Lit).Value.ValueType);
+end;
+
+Class procedure TTestConverter.AssertLiteral(Const Msg : String; Lit: TJSElement; AValue: Boolean);
+begin
+ AssertLiteral(Msg,Lit,jstBoolean);
+ AssertEquals(Msg+': Correct value',AValue,TJSLiteral(Lit).Value.AsBoolean);
+end;
+
+Class procedure TTestConverter.AssertLiteral(Const Msg : String; Lit: TJSElement; AValue: TJSString);
+begin
+ AssertLiteral(Msg,Lit,jstString);
+ AssertEquals(Msg+': Correct value',AValue,TJSLiteral(Lit).Value.AsString);
+end;
+
+Class procedure TTestConverter.AssertLiteral(Const Msg : String; Lit: TJSElement; AValue: TJSNumber);
+begin
+ AssertLiteral(Msg,Lit,jstNumber);
+ AssertEquals(Msg+': Correct value',AValue,TJSLiteral(Lit).Value.AsNumber);
+end;
+
+Class procedure TTestConverter.AssertIdentifier(Const Msg: String;
+ Ident: TJSElement; AName: String);
+begin
+ AssertNotNull(Msg+': Have instance',Ident);
+ AssertEquals(Msg+': Correct class',TJSPrimaryExpressionIdent,Ident.ClassType);
+ AssertEquals(Msg+': Correct name',AName,TJSPrimaryExpressionIdent(Ident).Name);
+end;
+
+Class Function TTestConverter.CreateLiteral(AValue: String): TPasExpr;
+begin
+ Result:=TPrimitiveExpr.Create(Nil,pekString,'me');
+end;
+
+Class Function TTestConverter.CreateLiteral(AValue: Double): TPasExpr;
+
+Var
+ S : String;
+
+begin
+ Str(AValue,S);
+ Result:=TPrimitiveExpr.Create(Nil,pekNumber,S);
+end;
+
+Class Function TTestConverter.CreateIdent(AName: String): TPrimitiveExpr;
+begin
+ Result:=TPrimitiveExpr.Create(Nil,pekIdent,AName);
+end;
+
+Class Function TTestConverter.CreateCondition : TPasExpr;
+
+begin
+ Result:=CreateIdent('a');
+end;
+
+Class Function TTestConverter.CreateAssignStatement(LHS: String = 'a';RHS : String = 'b'): TPasImplAssign;
+
+begin
+ Result:=TPasImplAssign.Create('',Nil);
+ Result.left:=CreateIdent(LHS);
+ Result.right:=CreateIdent(RHS);
+end;
+
+Class Function TTestConverter.CreateFunctionCall(AName: String;
+ Params: Array of String): TParamsExpr;
+
+Var
+ I : Integer;
+
+begin
+ Result:=TParamsExpr.Create(Nil,pekFuncParams,eopNone);
+ Result.Value:=CreateIdent(AName);
+ For I:=Low(Params) to High(Params) do
+ Result.AddParam(TPasExpr(CreateIdent(Params[I])));
+end;
+
+Class Procedure TTestConverter.AssertAssignStatement(Const Msg : String; El : TJSElement;LHS: String = 'a';RHS : String = 'b');
+
+begin
+ AssertNotNull(Msg+': have statement',EL);
+ If not (El is TJSSimpleAssignStatement) then
+ Fail(Msg+': statement is not assign statement but is'+El.ClassName);
+ AssertIdentifier(Msg+': left hand side ('+LHS+')',TJSAssignStatement(EL).LHS,LHS);
+ AssertIdentifier(Msg+': left hand side ('+LHS+')',TJSAssignStatement(EL).Expr,RHS);
+end;
+
+Class Procedure TTestConverter.AssertEmptyBlockStatement(Const Msg: String;
+ El: TJSElement);
+begin
+ AssertNotNull(Msg+': have statement',EL);
+ If not (El is TJSEmptyBlockStatement) then
+ Fail(Msg+': statement is not empty block statement but is'+El.ClassName);
+end;
+
+class Function TTestConverter.AssertListStatement(Const Msg: String;
+ El: TJSElement): TJSStatementList;
+begin
+ AssertNotNull(Msg+': have statement',EL);
+ If not (El is TJSStatementList) then
+ Fail(Msg+': statement is not a list statement but is'+El.ClassName);
+ Result:=TJSStatementList(El);
+end;
+
+class Function TTestConverter.AssertElement(Const Msg: String;
+ AClass: TJSElementClass; El: TJSElement): TJSElement;
+begin
+ AssertNotNull(Msg+': have element',El);
+ if not (El is ACLass) then
+ Fail(Msg+': is not of class '+AClass.ClassName+' but is '+EL.ClassName);
+ Result:=El;
+end;
+
+Initialization
+ RegisterTests([TTestTestConverter,TTestExpressionConverter,TTestStatementConverter]);
+end.
+
diff --git a/packages/pastojs/tests/testpas2js.lpi b/packages/pastojs/tests/testpas2js.lpi
new file mode 100644
index 0000000000..e9ae7fad29
--- /dev/null
+++ b/packages/pastojs/tests/testpas2js.lpi
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<CONFIG>
+ <ProjectOptions>
+ <Version Value="9"/>
+ <General>
+ <SessionStorage Value="InProjectDir"/>
+ <MainUnit Value="0"/>
+ <Title Value="Pascal to Javascript converter tests"/>
+ <UseAppBundle Value="False"/>
+ <ResourceType Value="res"/>
+ </General>
+ <i18n>
+ <EnableI18N LFM="False"/>
+ </i18n>
+ <VersionInfo>
+ <StringTable ProductVersion=""/>
+ </VersionInfo>
+ <BuildModes Count="1">
+ <Item1 Name="Default" Default="True"/>
+ </BuildModes>
+ <PublishOptions>
+ <Version Value="2"/>
+ </PublishOptions>
+ <RunParams>
+ <local>
+ <FormatVersion Value="1"/>
+ </local>
+ </RunParams>
+ <RequiredPackages Count="2">
+ <Item1>
+ <PackageName Value="FPCUnitConsoleRunner"/>
+ </Item1>
+ <Item2>
+ <PackageName Value="FCL"/>
+ </Item2>
+ </RequiredPackages>
+ <Units Count="3">
+ <Unit0>
+ <Filename Value="testpas2js.pp"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="testpas2js"/>
+ </Unit0>
+ <Unit1>
+ <Filename Value="tcconverter.pp"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="tcconverter"/>
+ </Unit1>
+ <Unit2>
+ <Filename Value="../src/fppas2js.pp"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="fppas2js"/>
+ </Unit2>
+ </Units>
+ </ProjectOptions>
+ <CompilerOptions>
+ <Version Value="11"/>
+ <SearchPaths>
+ <IncludeFiles Value="$(ProjOutDir)"/>
+ <OtherUnitFiles Value="../src"/>
+ </SearchPaths>
+ <Other>
+ <CompilerMessages>
+ <MsgFileName Value=""/>
+ </CompilerMessages>
+ <CompilerPath Value="$(CompPath)"/>
+ </Other>
+ </CompilerOptions>
+ <Debugging>
+ <Exceptions Count="3">
+ <Item1>
+ <Name Value="EAbort"/>
+ </Item1>
+ <Item2>
+ <Name Value="ECodetoolError"/>
+ </Item2>
+ <Item3>
+ <Name Value="EFOpenError"/>
+ </Item3>
+ </Exceptions>
+ </Debugging>
+</CONFIG>
diff --git a/packages/pastojs/tests/testpas2js.pp b/packages/pastojs/tests/testpas2js.pp
new file mode 100644
index 0000000000..db958f61e4
--- /dev/null
+++ b/packages/pastojs/tests/testpas2js.pp
@@ -0,0 +1,39 @@
+{
+ This file is part of the Free Component Library (FCL)
+ Copyright (c) 2014 by Michael Van Canneyt
+
+ Unit tests runner for Pascal-to-Javascript converter class.
+
+ 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.
+
+ **********************************************************************}
+program testpas2js;
+
+{$mode objfpc}{$H+}
+
+uses
+ Classes, consoletestrunner, tcconverter, fppas2js;
+
+type
+
+ TMyTestRunner = class(TTestRunner)
+ protected
+ end;
+
+var
+ Application: TMyTestRunner;
+
+begin
+ DefaultFormat:=fPlain;
+ DefaultRunAllTests:=True;
+ Application := TMyTestRunner.Create(nil);
+ Application.Initialize;
+ Application.Title:='Pascal to Javascript converter tests';
+ Application.Run;
+ Application.Free;
+end.
diff --git a/packages/pastojs/todo.txt b/packages/pastojs/todo.txt
new file mode 100644
index 0000000000..02948be210
--- /dev/null
+++ b/packages/pastojs/todo.txt
@@ -0,0 +1,81 @@
+Things that need to be done:
+
+Var Arguments:
+
+Procedure A(var B : integer);
+
+begin
+ B:=123;
+end;
+
+Var
+ C : Integer;
+
+begin
+ C:=456;
+ A(C);
+end.
+
+Callee, assume reference (needs examining arguments):
+
+function a(b) {
+ b.r:=123;
+}
+
+Caller side: generate a temp object var
+var c = 0;
+c=456;
+var c$123 = {r : c};
+try {
+ a(c$123);
+} finally {
+ c=c$123.r;
+}
+Advantage: no transformations needed.
+Disadvantage: try/finally needed in case callee (a) throws an exception.
+
+Caller side: allocate variable as object from the very start.
+var
+ c = {r: 0};
+c.r=123;
+a(c);
+
+Overloads:
+----------
+Function A(S : String) : String;
+Function A(I : Integer) : String;
+
+Add suffix:
+function a$1(s) {
+}
+function a$2(i) {
+}
+when calling overloaded version, we need to determine which one needs to be
+called.
+
+Object model:
+-------------
+
+2 Possibilities:
+- Use Javascript Objects, java class model using prototype
+ Disadvantages:
+ "this" is rather 'confused' in javascript,
+ use of constructor ?
+ delegation (procedure of object), event handlers ? (and this!)
+
+- Roll our own in a flat model, explicitly passing self.
+ TMyClass = Class
+ Function MyFunction(S : string);
+ end;
+ Defines a class. Class is an object
+ Var TMyClass = {
+ $_ClassName : "TMyClass",
+ $_ParentClass : "TObject",
+ myfunction : function (Self,s) {
+ }
+ }
+ A:=TMyClass.Create()
+ needs some helper magic:
+ A:=TMyClass.Create($NewClassInstance(TMyClass))
+
+ Disadvantage: not using javascript classes, how to import external javascript objects ?
diff --git a/packages/paszlib/src/zstream.pp b/packages/paszlib/src/zstream.pp
index 714a816808..5d568092f9 100644
--- a/packages/paszlib/src/zstream.pp
+++ b/packages/paszlib/src/zstream.pp
@@ -54,7 +54,7 @@ type
Tcompressionstream=class(Tcustomzlibstream)
protected
- raw_written,compressed_written:longint;
+ raw_written,compressed_written: int64;
public
constructor create(level:Tcompressionlevel;
dest:Tstream;
@@ -68,7 +68,7 @@ type
Tdecompressionstream=class(Tcustomzlibstream)
protected
- raw_read,compressed_read:longint;
+ raw_read,compressed_read:int64;
skipheader:boolean;
procedure reset;
function GetPosition() : Int64; override;
@@ -76,7 +76,7 @@ type
constructor create(Asource:Tstream;Askipheader:boolean=false);
destructor destroy;override;
function read(var buffer;count:longint):longint;override;
- function seek(offset:longint;origin:word):longint;override;
+ function Seek(const Offset: Int64; Origin: TSeekOrigin): Int64; override;
function get_compressionrate:single;
property OnProgress;
end;
@@ -329,33 +329,33 @@ begin
GetPosition := raw_read;
end;
-function Tdecompressionstream.seek(offset:longint;origin:word):longint;
+function Tdecompressionstream.Seek(const Offset: Int64; Origin: TSeekOrigin): Int64;
-var c:longint;
+var c,off: int64;
begin
- if (origin=sofrombeginning) or
- ((origin=sofromcurrent) and (offset+raw_read>=0)) then
+ off:=Offset;
+ if (origin=soBeginning) or ((origin=soCurrent) and (off+raw_read>=0)) then
begin
- if origin = sofromcurrent then
- seek := raw_read + offset
+ if origin = soCurrent then
+ seek := raw_read + off
else
- seek := offset;
+ seek := off;
- if origin=sofrombeginning then
- dec(offset,raw_read);
+ if origin=soBeginning then
+ dec(off,raw_read);
if offset<0 then
begin
- inc(offset,raw_read);
+ inc(off,raw_read);
reset;
end;
- while offset>0 do
+ while off>0 do
begin
- c:=offset;
+ c:=off;
if c>bufsize then
c:=bufsize;
c:=read(Fbuffer^,c);
- dec(offset,c);
+ dec(off,c);
end;
end
else
diff --git a/packages/regexpr/fpmake.pp b/packages/regexpr/fpmake.pp
index c525021370..2b86daf6e2 100644
--- a/packages/regexpr/fpmake.pp
+++ b/packages/regexpr/fpmake.pp
@@ -18,7 +18,7 @@ begin
{$endif ALLPACKAGES}
P.Version:='2.7.1';
P.OSes:=P.OSes-[embedded];
-
+ P.Dependencies.Add('rtl-objpas');
P.SourcePath.Add('src');
// Sorokin's RegExpr
diff --git a/packages/regexpr/src/oldregexpr.pp b/packages/regexpr/src/oldregexpr.pp
index c4f40badd0..6641419983 100644
--- a/packages/regexpr/src/oldregexpr.pp
+++ b/packages/regexpr/src/oldregexpr.pp
@@ -43,7 +43,7 @@ function GenerateRegExprEngine(regexpr : pchar;flags : tregexprflags;var RegExpr
function GenerateRegExprEngine(regexpr : pchar;flags : tregexprflags): TREGExprEngine;
procedure DestroyRegExprEngine(var regexpr : TRegExprEngine);
-function RegExprPos(RegExprEngine : TRegExprEngine;p : pchar;var index,len : longint) : boolean;
+function RegExprPos(RegExprEngine : TRegExprEngine;p : pchar;var index,len : integer) : boolean;
function RegExprReplaceAll(RegExprEngine : TRegExprEngine;const src,newstr : ansistring;var dest : ansistring) : sizeint;
function RegExprEscapeStr (const S : string) : string;
@@ -80,7 +80,7 @@ begin
end;
function RegExprPos(RegExprEngine: TRegExprEngine; p: pchar; var index,
- len: longint): boolean;
+ len: integer): boolean;
begin
Len := 1;
Result := RegExprEngine.MatchString(p,index,len);
diff --git a/packages/rtl-console/fpmake.pp b/packages/rtl-console/fpmake.pp
index d6c45ba272..a9ce4796d4 100644
--- a/packages/rtl-console/fpmake.pp
+++ b/packages/rtl-console/fpmake.pp
@@ -20,6 +20,9 @@ Const
KbdOSes = KVMALL+[msdos];
VideoOSes = KVMALL;
MouseOSes = KVMALL;
+ TerminfoOSes = UnixLikes-[beos,haiku];
+
+ rtl_consoleOSes =KVMALL+CrtOSes+TermInfoOSes;
// Amiga has a crt in its RTL dir, but it is commented in the makefile
@@ -36,7 +39,7 @@ begin
P.Author := 'FPC core team, Pierre Mueller, Peter Vreman';
P.License := 'LGPL with modification, ';
P.HomepageURL := 'www.freepascal.org';
- P.OSes:=KVMALL+CrtOSes;
+ P.OSes:=Rtl_ConsoleOSes;
P.Email := '';
P.Description := 'Rtl-console, console abstraction';
P.NeedLibC:= false;
diff --git a/packages/rtl-console/src/msdos/crt.pp b/packages/rtl-console/src/msdos/crt.pp
index a89a0d525d..e631e2ca92 100644
--- a/packages/rtl-console/src/msdos/crt.pp
+++ b/packages/rtl-console/src/msdos/crt.pp
@@ -29,8 +29,6 @@ implementation
uses
dos;
-{$ASMMODE INTEL}
-
var
DelayCnt : Longint;
VidSeg : Word;
diff --git a/packages/rtl-console/src/unix/keyboard.pp b/packages/rtl-console/src/unix/keyboard.pp
index adf4672cb3..3ba23bd5f1 100644
--- a/packages/rtl-console/src/unix/keyboard.pp
+++ b/packages/rtl-console/src/unix/keyboard.pp
@@ -1598,9 +1598,8 @@ begin
if is_console then
SysGetShiftState:=ShiftState
else
-{$else}
- SysGetShiftState:=0;
{$endif}
+ SysGetShiftState:=0;
end;
diff --git a/rtl/unix/terminfo.pp b/packages/rtl-console/src/unix/terminfo.pp
index 501349f511..501349f511 100644
--- a/rtl/unix/terminfo.pp
+++ b/packages/rtl-console/src/unix/terminfo.pp
diff --git a/packages/rtl-extra/fpmake.pp b/packages/rtl-extra/fpmake.pp
index 1ace34f635..44a564009c 100644
--- a/packages/rtl-extra/fpmake.pp
+++ b/packages/rtl-extra/fpmake.pp
@@ -11,7 +11,17 @@ Const
// All Unices have full set of KVM+Crt in unix/ except QNX which is not
// in workable state atm.
UnixLikes = AllUnixOSes -[QNX]; // qnx never was active in 2.x afaik
+
+ // Android has a dummy clocale unit, while it also includes unix dir.
+ ClocaleOSes = UnixLikes -[beos];
+ CLocaleIncOSes= [Aix,freebsd,netbsd,openbsd,solaris,darwin,iphonesim];
+
+ IPCOSes = UnixLikes-[aix,android,beos,haiku,solaris];
+ IPCBSDs = [FreeBSD,NetBSD,OpenBSD];
+// IPCcdeclOSes = [Darwin,iphonesim];
+ PrinterOSes = [go32v2,msdos,os2,win32,win64]+unixlikes-[beos,haiku,morphos];
+ SerialOSes = [android,linux,netbsd,openbsd,win32,win64];
UComplexOSes = [amiga,emx,gba,go32v2,morphos,msdos,nativent,nds,netware,netwlibc,os2,watcom,wii,wince,win32,win64]+UnixLikes;
MatrixOSes = [amiga,emx,gba,go32v2,morphos,msdos,nativent,nds,netware,netwlibc,os2,wii,win32,win64,wince]+UnixLikes;
ObjectsOSes = [amiga,emx,gba,go32v2,morphos,msdos,netware,netwlibc,os2,win32,win64,wince]+UnixLikes;
@@ -22,7 +32,8 @@ Const
Socksyscall = [beos,freebsd,haiku,linux,netbsd,openbsd];
Socklibc = unixlikes-socksyscall;
gpmOSes = [Linux,Android];
- AllTargetsextra = ObjectsOSes + UComplexOSes + MatrixOSes;
+ AllTargetsextra = ObjectsOSes + UComplexOSes + MatrixOSes+
+ SerialOSes +PrinterOSes+SocketsOSes+gpmOSes;
Var
P : TPackage;
@@ -67,6 +78,8 @@ begin
T:=P.Targets.AddUnit('objects.pp',ObjectsOSes);
+ T:=P.Targets.AddUnit('printer.pp',PrinterOSes);
+
T:=P.Targets.AddUnit('matrix.pp',MatrixOSes);
with T.Dependencies do
begin
@@ -83,6 +96,8 @@ begin
T:=P.Targets.AddUnit('gpm.pp',gpmOSes);
with T.Dependencies do
AddUnit('sockets');
+
+ T:=P.Targets.AddUnit('serial.pp',SerialOSes);
T:=P.Targets.AddUnit('sockets.pp',SocketsOSes);
with T.Dependencies do
begin
@@ -93,6 +108,20 @@ begin
addinclude('stdsock.inc',socklibc);
addinclude('unixsock.inc',socksyscall);
end;
+
+ T:=P.Targets.AddUnit('ipc.pp',IPCOSes);
+ with T.Dependencies do
+ begin
+ addinclude('ipcbsd.inc',IPCBSDs);
+ addinclude('ipcsys.inc',[Linux]);
+ addinclude('ipccall.inc',[Linux]);
+// addinclude('ipccdecl.inc',IPCcdeclOSes); // not used?
+ end;
+ T:=P.Targets.AddUnit('unix/clocale.pp',CLocaleOSes);
+ with T.Dependencies do
+ begin
+ addinclude('clocale.inc',clocaleincOSes);
+ end;
end
end;
diff --git a/rtl/aix/clocale.inc b/packages/rtl-extra/src/aix/clocale.inc
index b9ac712971..b9ac712971 100644
--- a/rtl/aix/clocale.inc
+++ b/packages/rtl-extra/src/aix/clocale.inc
diff --git a/rtl/amiga/printer.pp b/packages/rtl-extra/src/amiga/printer.pp
index 2eb965a9a6..2eb965a9a6 100644
--- a/rtl/amiga/printer.pp
+++ b/packages/rtl-extra/src/amiga/printer.pp
diff --git a/rtl/android/clocale.pp b/packages/rtl-extra/src/android/clocale.pp
index 24d5fa6d0d..24d5fa6d0d 100644
--- a/rtl/android/clocale.pp
+++ b/packages/rtl-extra/src/android/clocale.pp
diff --git a/rtl/bsd/clocale.inc b/packages/rtl-extra/src/bsd/clocale.inc
index ee4403ef69..ee4403ef69 100644
--- a/rtl/bsd/clocale.inc
+++ b/packages/rtl-extra/src/bsd/clocale.inc
diff --git a/rtl/bsd/ipcbsd.inc b/packages/rtl-extra/src/bsd/ipcbsd.inc
index 52f41adbc6..52f41adbc6 100644
--- a/rtl/bsd/ipcbsd.inc
+++ b/packages/rtl-extra/src/bsd/ipcbsd.inc
diff --git a/rtl/go32v2/printer.pp b/packages/rtl-extra/src/go32v2/printer.pp
index dda9814581..dda9814581 100644
--- a/rtl/go32v2/printer.pp
+++ b/packages/rtl-extra/src/go32v2/printer.pp
diff --git a/rtl/inc/printer.inc b/packages/rtl-extra/src/inc/printer.inc
index 630b962d7d..630b962d7d 100644
--- a/rtl/inc/printer.inc
+++ b/packages/rtl-extra/src/inc/printer.inc
diff --git a/rtl/inc/printerh.inc b/packages/rtl-extra/src/inc/printerh.inc
index 089807e3a3..089807e3a3 100644
--- a/rtl/inc/printerh.inc
+++ b/packages/rtl-extra/src/inc/printerh.inc
diff --git a/rtl/linux/ipccall.inc b/packages/rtl-extra/src/linux/ipccall.inc
index 88037c6dc1..88037c6dc1 100644
--- a/rtl/linux/ipccall.inc
+++ b/packages/rtl-extra/src/linux/ipccall.inc
diff --git a/rtl/linux/ipcsys.inc b/packages/rtl-extra/src/linux/ipcsys.inc
index e67a0f9d9c..e67a0f9d9c 100644
--- a/rtl/linux/ipcsys.inc
+++ b/packages/rtl-extra/src/linux/ipcsys.inc
diff --git a/rtl/msdos/printer.pp b/packages/rtl-extra/src/msdos/printer.pp
index dda9814581..dda9814581 100644
--- a/rtl/msdos/printer.pp
+++ b/packages/rtl-extra/src/msdos/printer.pp
diff --git a/rtl/win/printer.pp b/packages/rtl-extra/src/os2/printer.pp
index 978074b5c5..978074b5c5 100644
--- a/rtl/win/printer.pp
+++ b/packages/rtl-extra/src/os2/printer.pp
diff --git a/rtl/solaris/clocale.inc b/packages/rtl-extra/src/solaris/clocale.inc
index 87d0a78640..87d0a78640 100644
--- a/rtl/solaris/clocale.inc
+++ b/packages/rtl-extra/src/solaris/clocale.inc
diff --git a/rtl/unix/clocale.pp b/packages/rtl-extra/src/unix/clocale.pp
index e78c571bd7..e78c571bd7 100644
--- a/rtl/unix/clocale.pp
+++ b/packages/rtl-extra/src/unix/clocale.pp
diff --git a/rtl/unix/ipc.pp b/packages/rtl-extra/src/unix/ipc.pp
index 6eb4ac2a0e..6eb4ac2a0e 100644
--- a/rtl/unix/ipc.pp
+++ b/packages/rtl-extra/src/unix/ipc.pp
diff --git a/rtl/unix/ipccdecl.inc b/packages/rtl-extra/src/unix/ipccdecl.inc
index 3597eaeadb..3597eaeadb 100644
--- a/rtl/unix/ipccdecl.inc
+++ b/packages/rtl-extra/src/unix/ipccdecl.inc
diff --git a/rtl/unix/printer.pp b/packages/rtl-extra/src/unix/printer.pp
index 7b4cde0269..7b4cde0269 100644
--- a/rtl/unix/printer.pp
+++ b/packages/rtl-extra/src/unix/printer.pp
diff --git a/rtl/unix/serial.pp b/packages/rtl-extra/src/unix/serial.pp
index a0b670257c..a0b670257c 100644
--- a/rtl/unix/serial.pp
+++ b/packages/rtl-extra/src/unix/serial.pp
diff --git a/rtl/os2/printer.pas b/packages/rtl-extra/src/win/printer.pp
index 978074b5c5..978074b5c5 100644
--- a/rtl/os2/printer.pas
+++ b/packages/rtl-extra/src/win/printer.pp
diff --git a/rtl/win32/serial.pp b/packages/rtl-extra/src/win/serial.pp
index 5d48cbd702..5d48cbd702 100644
--- a/rtl/win32/serial.pp
+++ b/packages/rtl-extra/src/win/serial.pp
diff --git a/packages/rtl-objpas/fpmake.pp b/packages/rtl-objpas/fpmake.pp
index ddcd49f787..ccbf836629 100644
--- a/packages/rtl-objpas/fpmake.pp
+++ b/packages/rtl-objpas/fpmake.pp
@@ -14,6 +14,8 @@ Const
// AllUnixOSes = [Linux,FreeBSD,NetBSD,OpenBSD,Darwin,QNX,BeOS,Solaris,Haiku,iphonesim,aix,Android];
// unixlikes-[beos];
+//
+ StrUtilsOSes = [amiga,emx,gba,go32v2,msdos,netware,wince,morphos,nativent,os2,netwlibc,win32,win64]+UnixLikes;
VarUtilsOSes = [amiga,emx,gba,go32v2,msdos,nds,netware,wince,morphos,nativent,os2,netwlibc,watcom,wii,win32,win64]+UnixLikes;
ConvUtilsOSes = [nativent,netware,netwlibc,win32,win64,wince]+UnixLikes-[BeOS];
ConvUtilOSes = [Go32v2,msdos,os2,emx];
@@ -24,7 +26,7 @@ Const
VariantsOSes = [amiga,emx,gba,go32v2,morphos,msdos,nativent,nds,netware,netwlibc,os2,watcom,wii,win32,win64,wince]+UnixLikes;
AllTargetsObjPas = DateUtilsOses +DateUtilOSes+
VarutilsOses + ConvutilsOSes + ConvutilOSes + StdConvsOSes+
- FmtBCDOSes;
+ FmtBCDOSes + StrUtilsOSes;
Var
P : TPackage;
@@ -56,6 +58,8 @@ begin
P.IncludePath.Add('src/$(OS)');
P.IncludePath.Add('src/darwin',[iphonesim]);
+
+ T:=P.Targets.AddUnit('strutils.pp',StrUtilsOses);
T:=P.Targets.AddUnit('varutils.pp',VarUtilsOses);
with T.Dependencies do
begin
diff --git a/packages/rtl-objpas/src/inc/dateutil.inc b/packages/rtl-objpas/src/inc/dateutil.inc
index 6e0cf1506f..34b7b5a169 100644
--- a/packages/rtl-objpas/src/inc/dateutil.inc
+++ b/packages/rtl-objpas/src/inc/dateutil.inc
@@ -1610,9 +1610,8 @@ begin
begin
Inc(YEDOW);
if (YEDOW>7) then
- YEDOW:=1
- else
- end;
+ YEDOW:=1;
+ end;
if (YEDOW<4) then // Really next year.
begin
Inc(AYear);
@@ -2045,7 +2044,7 @@ end;
Function DateTimeToJulianDate(const AValue: TDateTime): Double;
var
day,month,year: word;
- a,y,m: integer;
+ a,y,m: longint;
begin
DecodeDate ( AValue, year, month, day );
a := (14-month) div 12;
@@ -2065,7 +2064,7 @@ end;
Function TryJulianDateToDateTime(const AValue: Double; out ADateTime: TDateTime): Boolean;
var
- a,b,c,d,e,m:integer;
+ a,b,c,d,e,m:longint;
day,month,year: word;
begin
a := trunc(AValue + 32044.5);
diff --git a/rtl/objpas/strutils.pp b/packages/rtl-objpas/src/inc/strutils.pp
index f36a9a0109..f36a9a0109 100644
--- a/rtl/objpas/strutils.pp
+++ b/packages/rtl-objpas/src/inc/strutils.pp
diff --git a/packages/rtl-objpas/src/inc/variants.pp b/packages/rtl-objpas/src/inc/variants.pp
index 53d72b50ac..9761232ba1 100644
--- a/packages/rtl-objpas/src/inc/variants.pp
+++ b/packages/rtl-objpas/src/inc/variants.pp
@@ -163,8 +163,8 @@ type
FVarType: TVarType;
protected
function QueryInterface({$IFDEF FPC_HAS_CONSTREF}constref{$ELSE}const{$ENDIF} IID: TGUID; out Obj): HResult; virtual; {$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
- function _AddRef: Integer; {$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
- function _Release: Integer; {$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
+ function _AddRef: Longint; {$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
+ function _Release: Longint; {$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
procedure SimplisticClear(var V: TVarData);
procedure SimplisticCopy(var Dest: TVarData; const Source: TVarData; const Indirect: Boolean = False);
procedure RaiseInvalidOp;
@@ -603,7 +603,7 @@ begin
end;
-function Sysvartoint (const v : Variant) : Integer;
+function Sysvartoint (const v : Variant) : Longint;
begin
if VarType(v) = varNull then
if NullStrictConvert then
@@ -2192,7 +2192,7 @@ var
Iterator : TVariantArrayIterator;
Dims : Integer;
- HighBound : Integer;
+ HighBound : Longint;
i : Integer;
begin
with aSource do begin
@@ -3662,13 +3662,13 @@ function TCustomVariantType.QueryInterface({$IFDEF FPC_HAS_CONSTREF}constref{$EL
end;
-function TCustomVariantType._AddRef: Integer; {$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
+function TCustomVariantType._AddRef: Longint; {$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
begin
result := -1;
end;
-function TCustomVariantType._Release: Integer; {$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
+function TCustomVariantType._Release: Longint; {$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
begin
result := -1;
end;
diff --git a/packages/rtl-unicode/fpmake.pp b/packages/rtl-unicode/fpmake.pp
new file mode 100644
index 0000000000..ef1b9f3aea
--- /dev/null
+++ b/packages/rtl-unicode/fpmake.pp
@@ -0,0 +1,134 @@
+{$ifndef ALLPACKAGES}
+{$mode objfpc}{$H+}
+program fpmake;
+
+uses fpmkunit;
+{$endif ALLPACKAGES}
+
+procedure add_rtl_unicode(const ADirectory: string);
+
+Const
+ // All Unices have full set of KVM+Crt in unix/ except QNX which is not
+ // in workable state atm.
+ UnixLikes = AllUnixOSes -[QNX];
+
+ CollationOSes = [aix,darwin,freebsd,linux,netbsd,openbsd,solaris,win32,win64];
+ CPUnits = [aix,amiga,android,beos,darwin,iphonesim,emx,gba,freebsd,go32v2,haiku,linux,morphos,netbsd,netware,netwlibc,openbsd,os2,solaris,watcom,wii,win32,win64,wince];
+ utf8bidiOSes = [netware,netwlibc];
+ freebidiOSes = [netware,netwlibc];
+
+// Character not movable because fpwidestring depends on it.
+// CharacterOSes = [android,darwin,freebsd,linux,netbsd,openbsd,solaris,win32,win64];
+
+ UnicodeAllOSes = CollationOSes + utf8bidiOSes + freebidiOSes + CPUnits;
+
+// Amiga has a crt in its RTL dir, but it is commented in the makefile
+
+Var
+ P : TPackage;
+ T : TTarget;
+
+begin
+ With Installer do
+ begin
+ P:=AddPackage('rtl-unicode');
+ P.Directory:=ADirectory;
+ P.Version:='2.7.1';
+ P.Author := 'FPC core team';
+ P.License := 'LGPL with modification, ';
+ P.HomepageURL := 'www.freepascal.org';
+ P.OSes:=unicodeAllOSes;
+ P.Email := '';
+ P.Description := 'Rtl-unicode, misc Unicode units';
+ P.NeedLibC:= false;
+
+ P.SourcePath.Add('src/inc');
+ P.SourcePath.Add('src/collations');
+ P.IncludePath.Add('src/inc');
+ P.IncludePath.Add('src/collations');
+
+ T:=P.Targets.AddUnit('unicodeducet.pas',CollationOSes);
+ T:=P.Targets.AddUnit('buildcollations.pas',CollationOSes);
+ T.Install:=False;
+ with T.Dependencies do
+ begin
+ AddUnit('collation_ru');
+ AddUnit('collation_de');
+ AddUnit('collation_ja');
+ AddUnit('collation_sv');
+ AddUnit('collation_es');
+ AddUnit('collation_ko');
+ AddUnit('collation_fr_ca');
+ AddUnit('collation_zh');
+ end;
+
+ T:=P.Targets.AddImplicitUnit('collation_ru.pas',CollationOSes);
+ with T.Dependencies do
+ begin
+ AddInclude('collation_ru_be.inc');
+ AddInclude('collation_ru_le.inc');
+ end;
+ T:=P.Targets.AddImplicitUnit('collation_de.pas',CollationOSes);
+ T:=P.Targets.AddImplicitUnit('collation_ja.pas',CollationOSes);
+ with T.Dependencies do
+ begin
+ AddInclude('collation_ja_le.inc');
+ AddInclude('collation_ja_be.inc');
+ end;
+ T:=P.Targets.AddImplicitUnit('collation_sv.pas',CollationOSes);
+ with T.Dependencies do
+ begin
+ AddInclude('collation_sv_be.inc');
+ AddInclude('collation_sv_le.inc');
+ end;
+ T:=P.Targets.AddImplicitUnit('collation_es.pas',CollationOSes);
+ with T.Dependencies do
+ begin
+ AddInclude('collation_es_le.inc');
+ AddInclude('collation_es_be.inc');
+ end;
+ T:=P.Targets.AddImplicitUnit('collation_ko.pas',CollationOSes);
+ with T.Dependencies do
+ begin
+ AddInclude('collation_ko_be.inc');
+ AddInclude('collation_ko_le.inc');
+ end;
+ T:=P.Targets.AddImplicitUnit('collation_fr_ca.pas',CollationOSes);
+ T:=P.Targets.AddImplicitUnit('collation_zh.pas',CollationOSes);
+ with T.Dependencies do
+ begin
+ AddInclude('collation_zh_be.inc');
+ AddInclude('collation_zh_le.inc');
+ end;
+
+ T:=P.Targets.AddUnit('freebidi.pp',freebidiOSes);
+ T:=P.Targets.AddUnit('utf8bidi.pp',utf8bidiOSes);
+
+ with T.Dependencies do
+ AddUnit('freebidi');
+
+ T:=P.Targets.AddUnit('cpbuildu.pp',CPUnits);
+ T.Install:=False;
+ with T.Dependencies do
+ begin
+ AddUnit('cp932',CPUnits);
+ AddUnit('cp936',CPUnits);
+ AddUnit('cp949',CPUnits);
+ AddUnit('cp950',CPUnits);
+ end;
+ T:=P.Targets.AddImplicitUnit('cp932.pas',CPUnits);
+ T:=P.Targets.AddImplicitUnit('cp936.pas',CPUnits);
+ T:=P.Targets.AddImplicitUnit('cp949.pas',CPUnits);
+ T:=P.Targets.AddImplicitUnit('cp950.pas',CPUnits);
+
+// T:=P.Targets.AddUnit('character.pp',characterOSes);
+ end
+end;
+
+{$ifndef ALLPACKAGES}
+begin
+ add_rtl_unicode('');
+ Installer.Run;
+end.
+{$endif ALLPACKAGES}
+
diff --git a/rtl/objpas/collations/buildcollations.pas b/packages/rtl-unicode/src/collations/buildcollations.pas
index 08c5e93d53..08c5e93d53 100644
--- a/rtl/objpas/collations/buildcollations.pas
+++ b/packages/rtl-unicode/src/collations/buildcollations.pas
diff --git a/rtl/objpas/collations/collation_de.pas b/packages/rtl-unicode/src/collations/collation_de.pas
index 5cc8c561fb..5cc8c561fb 100644
--- a/rtl/objpas/collations/collation_de.pas
+++ b/packages/rtl-unicode/src/collations/collation_de.pas
diff --git a/rtl/objpas/collations/collation_es.pas b/packages/rtl-unicode/src/collations/collation_es.pas
index 9d1ba43687..9d1ba43687 100644
--- a/rtl/objpas/collations/collation_es.pas
+++ b/packages/rtl-unicode/src/collations/collation_es.pas
diff --git a/rtl/objpas/collations/collation_es_be.inc b/packages/rtl-unicode/src/collations/collation_es_be.inc
index be7d643ad0..be7d643ad0 100644
--- a/rtl/objpas/collations/collation_es_be.inc
+++ b/packages/rtl-unicode/src/collations/collation_es_be.inc
diff --git a/rtl/objpas/collations/collation_es_le.inc b/packages/rtl-unicode/src/collations/collation_es_le.inc
index b65f9da1e6..b65f9da1e6 100644
--- a/rtl/objpas/collations/collation_es_le.inc
+++ b/packages/rtl-unicode/src/collations/collation_es_le.inc
diff --git a/rtl/objpas/collations/collation_fr_ca.pas b/packages/rtl-unicode/src/collations/collation_fr_ca.pas
index 3a0f7f1ae1..3a0f7f1ae1 100644
--- a/rtl/objpas/collations/collation_fr_ca.pas
+++ b/packages/rtl-unicode/src/collations/collation_fr_ca.pas
diff --git a/rtl/objpas/collations/collation_ja.pas b/packages/rtl-unicode/src/collations/collation_ja.pas
index 5f9104eaf4..5f9104eaf4 100644
--- a/rtl/objpas/collations/collation_ja.pas
+++ b/packages/rtl-unicode/src/collations/collation_ja.pas
diff --git a/rtl/objpas/collations/collation_ja_be.inc b/packages/rtl-unicode/src/collations/collation_ja_be.inc
index 881bffeea7..881bffeea7 100644
--- a/rtl/objpas/collations/collation_ja_be.inc
+++ b/packages/rtl-unicode/src/collations/collation_ja_be.inc
diff --git a/rtl/objpas/collations/collation_ja_le.inc b/packages/rtl-unicode/src/collations/collation_ja_le.inc
index baf6d794f4..baf6d794f4 100644
--- a/rtl/objpas/collations/collation_ja_le.inc
+++ b/packages/rtl-unicode/src/collations/collation_ja_le.inc
diff --git a/rtl/objpas/collations/collation_ko.pas b/packages/rtl-unicode/src/collations/collation_ko.pas
index b2f9940d2b..b2f9940d2b 100644
--- a/rtl/objpas/collations/collation_ko.pas
+++ b/packages/rtl-unicode/src/collations/collation_ko.pas
diff --git a/rtl/objpas/collations/collation_ko_be.inc b/packages/rtl-unicode/src/collations/collation_ko_be.inc
index d79459b7c4..d79459b7c4 100644
--- a/rtl/objpas/collations/collation_ko_be.inc
+++ b/packages/rtl-unicode/src/collations/collation_ko_be.inc
diff --git a/rtl/objpas/collations/collation_ko_le.inc b/packages/rtl-unicode/src/collations/collation_ko_le.inc
index 388fe800c3..388fe800c3 100644
--- a/rtl/objpas/collations/collation_ko_le.inc
+++ b/packages/rtl-unicode/src/collations/collation_ko_le.inc
diff --git a/rtl/objpas/collations/collation_ru.pas b/packages/rtl-unicode/src/collations/collation_ru.pas
index aeeceb5d9b..aeeceb5d9b 100644
--- a/rtl/objpas/collations/collation_ru.pas
+++ b/packages/rtl-unicode/src/collations/collation_ru.pas
diff --git a/rtl/objpas/collations/collation_ru_be.inc b/packages/rtl-unicode/src/collations/collation_ru_be.inc
index f97694477d..f97694477d 100644
--- a/rtl/objpas/collations/collation_ru_be.inc
+++ b/packages/rtl-unicode/src/collations/collation_ru_be.inc
diff --git a/rtl/objpas/collations/collation_ru_le.inc b/packages/rtl-unicode/src/collations/collation_ru_le.inc
index 47b05d2315..47b05d2315 100644
--- a/rtl/objpas/collations/collation_ru_le.inc
+++ b/packages/rtl-unicode/src/collations/collation_ru_le.inc
diff --git a/rtl/objpas/collations/collation_sv.pas b/packages/rtl-unicode/src/collations/collation_sv.pas
index 3610780ab2..3610780ab2 100644
--- a/rtl/objpas/collations/collation_sv.pas
+++ b/packages/rtl-unicode/src/collations/collation_sv.pas
diff --git a/rtl/objpas/collations/collation_sv_be.inc b/packages/rtl-unicode/src/collations/collation_sv_be.inc
index 2ffe5d0e3f..2ffe5d0e3f 100644
--- a/rtl/objpas/collations/collation_sv_be.inc
+++ b/packages/rtl-unicode/src/collations/collation_sv_be.inc
diff --git a/rtl/objpas/collations/collation_sv_le.inc b/packages/rtl-unicode/src/collations/collation_sv_le.inc
index 38b7455189..38b7455189 100644
--- a/rtl/objpas/collations/collation_sv_le.inc
+++ b/packages/rtl-unicode/src/collations/collation_sv_le.inc
diff --git a/rtl/objpas/collations/collation_zh.pas b/packages/rtl-unicode/src/collations/collation_zh.pas
index 92a6b39147..92a6b39147 100644
--- a/rtl/objpas/collations/collation_zh.pas
+++ b/packages/rtl-unicode/src/collations/collation_zh.pas
diff --git a/rtl/objpas/collations/collation_zh_be.inc b/packages/rtl-unicode/src/collations/collation_zh_be.inc
index 87acd48c2e..87acd48c2e 100644
--- a/rtl/objpas/collations/collation_zh_be.inc
+++ b/packages/rtl-unicode/src/collations/collation_zh_be.inc
diff --git a/rtl/objpas/collations/collation_zh_le.inc b/packages/rtl-unicode/src/collations/collation_zh_le.inc
index 5fa7fc6610..5fa7fc6610 100644
--- a/rtl/objpas/collations/collation_zh_le.inc
+++ b/packages/rtl-unicode/src/collations/collation_zh_le.inc
diff --git a/rtl/charmaps/cp932.pas b/packages/rtl-unicode/src/inc/cp932.pas
index 30a59f77f1..30a59f77f1 100644
--- a/rtl/charmaps/cp932.pas
+++ b/packages/rtl-unicode/src/inc/cp932.pas
diff --git a/rtl/charmaps/cp936.pas b/packages/rtl-unicode/src/inc/cp936.pas
index 2ecc756978..2ecc756978 100644
--- a/rtl/charmaps/cp936.pas
+++ b/packages/rtl-unicode/src/inc/cp936.pas
diff --git a/rtl/charmaps/cp949.pas b/packages/rtl-unicode/src/inc/cp949.pas
index 4f2c396f22..4f2c396f22 100644
--- a/rtl/charmaps/cp949.pas
+++ b/packages/rtl-unicode/src/inc/cp949.pas
diff --git a/rtl/charmaps/cp950.pas b/packages/rtl-unicode/src/inc/cp950.pas
index 127963ffd9..127963ffd9 100644
--- a/rtl/charmaps/cp950.pas
+++ b/packages/rtl-unicode/src/inc/cp950.pas
diff --git a/packages/rtl-unicode/src/inc/cpbuildu.pp b/packages/rtl-unicode/src/inc/cpbuildu.pp
new file mode 100644
index 0000000000..ca91958d75
--- /dev/null
+++ b/packages/rtl-unicode/src/inc/cpbuildu.pp
@@ -0,0 +1,8 @@
+unit cpbuildu;
+// buildunit for cp*
+interface
+uses cp932,cp936,cp949,cp950;
+
+implementation
+
+end. \ No newline at end of file
diff --git a/rtl/objpas/freebidi.pp b/packages/rtl-unicode/src/inc/freebidi.pp
index df36376d5f..df36376d5f 100644
--- a/rtl/objpas/freebidi.pp
+++ b/packages/rtl-unicode/src/inc/freebidi.pp
diff --git a/rtl/objpas/ucadata.inc b/packages/rtl-unicode/src/inc/ucadata.inc
index 4952de599f..4952de599f 100644
--- a/rtl/objpas/ucadata.inc
+++ b/packages/rtl-unicode/src/inc/ucadata.inc
diff --git a/rtl/objpas/ucadata_be.inc b/packages/rtl-unicode/src/inc/ucadata_be.inc
index 6d15b5fcd2..6d15b5fcd2 100644
--- a/rtl/objpas/ucadata_be.inc
+++ b/packages/rtl-unicode/src/inc/ucadata_be.inc
diff --git a/rtl/objpas/ucadata_le.inc b/packages/rtl-unicode/src/inc/ucadata_le.inc
index a1d25c9f05..a1d25c9f05 100644
--- a/rtl/objpas/ucadata_le.inc
+++ b/packages/rtl-unicode/src/inc/ucadata_le.inc
diff --git a/rtl/objpas/unicodeducet.pas b/packages/rtl-unicode/src/inc/unicodeducet.pas
index 15951f2ed3..15951f2ed3 100644
--- a/rtl/objpas/unicodeducet.pas
+++ b/packages/rtl-unicode/src/inc/unicodeducet.pas
diff --git a/rtl/objpas/utf8bidi.pp b/packages/rtl-unicode/src/inc/utf8bidi.pp
index a7ade14ede..a7ade14ede 100644
--- a/rtl/objpas/utf8bidi.pp
+++ b/packages/rtl-unicode/src/inc/utf8bidi.pp
diff --git a/packages/sndfile/src/sndfile.pp b/packages/sndfile/src/sndfile.pp
index 6b16d1e577..e98674c2da 100644
--- a/packages/sndfile/src/sndfile.pp
+++ b/packages/sndfile/src/sndfile.pp
@@ -277,7 +277,7 @@ type
TSF_FORMAT_INFO = record
format : ctypes.cint;
name : ctypes.pcchar;
- extention : ctypes.pcchar;
+ extension : ctypes.pcchar;
end;
{
diff --git a/packages/sqlite/src/sqlite3.inc b/packages/sqlite/src/sqlite3.inc
index f0b5933fe7..f44327cb2a 100644
--- a/packages/sqlite/src/sqlite3.inc
+++ b/packages/sqlite/src/sqlite3.inc
@@ -987,9 +987,11 @@ Type
{$IFDEF LOAD_DYNAMICALLY}
+function InitializeSqliteANSI(const LibraryName: AnsiString = ''): Integer; //needed as TLibraryLoadFunction
function InitializeSqlite(const LibraryName: UnicodeString = ''): Integer;
function TryInitializeSqlite(const LibraryName: Unicodestring = ''): Integer;
function ReleaseSqlite: Integer;
+procedure ReleaseSqlite; //needed as TLibraryUnLoadFunction
function InitialiseSQLite: Integer; deprecated;
function InitialiseSQLite(const LibraryName: UnicodeString): Integer; deprecated;
@@ -1011,7 +1013,7 @@ end;
resourcestring
SErrLoadFailed = 'Can not load SQLite client library "%s". Check your installation.';
- SErrAlreadyLoaded = 'SQLIte interface already initialized from library %s.';
+ SErrAlreadyLoaded = 'SQLite interface already initialized from library %s.';
procedure LoadAddresses(LibHandle: TLibHandle);
begin
@@ -1238,12 +1240,17 @@ begin
result:=InitializeSqlite(SQLiteDefaultLibrary);
end;
+function InitializeSQLiteANSI(const LibraryName: AnsiString):integer;
+begin
+ result:=InitializeSQLite(LibraryName);
+end;
+
function InitializeSQLite(const LibraryName: UnicodeString) :integer;
begin
if (LibraryName<>'') and (SQLiteLoadedLibrary <> '') and (SQLiteLoadedLibrary <> LibraryName) then
raise EInoutError.CreateFmt(SErrAlreadyLoaded,[SQLiteLoadedLibrary]);
- result:= TryInitializeSQLIte(LibraryName);
+ result:= TryInitializeSQLite(LibraryName);
if result=-1 then
if LibraryName='' then
raise EInOutError.CreateFmt(SErrLoadFailed,[SQLiteDefaultLibrary])
@@ -1268,4 +1275,9 @@ begin
end;
end;
+procedure ReleaseSQLite;
+begin
+ ReleaseSQLite;
+end;
+
{$ENDIF}
diff --git a/packages/univint/src/cssmapple.pas b/packages/univint/src/cssmapple.pas
index cd1528c34b..5b2b3bda9a 100644
--- a/packages/univint/src/cssmapple.pas
+++ b/packages/univint/src/cssmapple.pas
@@ -514,7 +514,7 @@ const
CSSM_DL_DB_RECORD_EXTENDED_ATTRIBUTE = CSSM_DB_RECORDTYPE_APP_DEFINED_START + $1000 + 4;
CSSM_DL_DB_RECORD_METADATA = CSSM_DB_RECORDTYPE_APP_DEFINED_START + $8000;
-{ AppleFileDL extentions: passthrough ids }
+{ AppleFileDL extensions: passthrough ids }
const
// Toggle whether or not to autocommit after modifying the database.
// The input parameter is a CSSM_BOOL, where TRUE turns autocommit on
diff --git a/packages/winunits-base/src/activex.pp b/packages/winunits-base/src/activex.pp
index 02a99dabcc..942f4edaf7 100644
--- a/packages/winunits-base/src/activex.pp
+++ b/packages/winunits-base/src/activex.pp
@@ -60,11 +60,30 @@ type
BSTR = POLESTR;
TOleDate = DATE;
POleDate = ^TOleDate;
+ TOleBool = wordbool;
OLE_HANDLE = UINT;
OLE_XSIZE_HIMETRIC = LONG;
OLE_YSIZE_HIMETRIC = LONG;
OLE_XPOS_HIMETRIC = LONG;
OLE_YPOS_HIMETRIC = LONG;
+ OLE_XPOS_PIXELS = Integer;
+ OLE_YPOS_PIXELS = Integer;
+ OLE_XSIZE_PIXELS = Integer;
+ OLE_YSIZE_PIXELS = Integer;
+ OLE_XPOS_CONTAINER = Single;
+ OLE_YPOS_CONTAINER = Single;
+ OLE_XSIZE_CONTAINER = Single;
+ OLE_YSIZE_CONTAINER = Single;
+ OLE_OPTEXCLUSIVE = WordBool;
+ OLE_CANCELBOOL = WordBool;
+ OLE_ENABLEDEFAULTBOOL = WordBool;
+ OLE_TRISTATE = LongWord;
+ FONTNAME = WideString;
+ FONTSIZE = Currency;
+ FONTBOLD = WordBool;
+ FONTITALIC = WordBool;
+ FONTUNDERSCORE = WordBool;
+ FONTSTRIKETHROUGH = WordBool;
LPOLE_HANDLE = ^OLE_HANDLE;
OLE_COLOR = DWORD;
LPOLE_COLOR = ^OLE_COLOR;
@@ -157,6 +176,10 @@ CONST
IID_IServiceProvider : TGUID = '{6D5140C1-7436-11CE-8034-00AA006009FA}';
IID_IOleControlTypes : TGUID = '{00000000-0000-0000-0000-000000000000}';
IID_IPicture2 : TGUID = '{F5185DD8-2012-4B0B-AAD9-F052C6BD482B}';
+ IID_IOleCache : TGUID = '{0000011E-0000-0000-C000-000000000046}';
+ IID_IOleCache2 : TGUID = '{00000128-0000-0000-C000-000000000046}';
+ IID_IOleCacheControl : TGUID = '{00000129-0000-0000-C000-000000000046}';
+ IID_IOleItemContainer : TGUID = '{0000011C-0000-0000-C000-000000000046}';
// bit flags for IExternalConnection
@@ -570,6 +593,45 @@ Const
DISPID_DESTRUCTOR = -7;
DISPID_COLLECT = -8;
+ DISPID_AUTOSIZE = -500;
+ DISPID_BACKCOLOR = -501;
+ DISPID_BACKSTYLE = -502;
+ DISPID_BORDERCOLOR = -503;
+ DISPID_BORDERSTYLE = -504;
+ DISPID_BORDERWIDTH = -505;
+ DISPID_DRAWMODE = -507;
+ DISPID_DRAWSTYLE = -508;
+ DISPID_DRAWWIDTH = -509;
+ DISPID_FILLCOLOR = -510;
+ DISPID_FILLSTYLE = -511;
+ DISPID_FONT = -512;
+ DISPID_FORECOLOR = -513;
+ DISPID_ENABLED = -514;
+ DISPID_HWND = -515;
+ DISPID_TABSTOP = -516;
+ DISPID_TEXT = -517;
+ DISPID_CAPTION = -518;
+ DISPID_BORDERVISIBLE = -519;
+ DISPID_APPEARANCE = -520;
+ DISPID_MOUSEPOINTER = -521;
+ DISPID_MOUSEICON = -522;
+ DISPID_PICTURE = -523;
+ DISPID_VALID = -524;
+ DISPID_READYSTATE = -525;
+ DISPID_REFRESH = -550;
+ DISPID_DOCLICK = -551;
+ DISPID_ABOUTBOX = -552;
+ DISPID_CLICK = -600;
+ DISPID_DBLCLICK = -601;
+ DISPID_KEYDOWN = -602;
+ DISPID_KEYPRESS = -603;
+ DISPID_KEYUP = -604;
+ DISPID_MOUSEDOWN = -605;
+ DISPID_MOUSEMOVE = -606;
+ DISPID_MOUSEUP = -607;
+ DISPID_ERROREVENT = -608;
+ DISPID_READYSTATECHANGE = -609;
+
DISPID_AMBIENT_BACKCOLOR = -701;
DISPID_AMBIENT_DISPLAYNAME = -702;
DISPID_AMBIENT_FONT = -703;
@@ -1010,6 +1072,44 @@ Const
OLECMDID_UPDATEHSCROLL= $0000000000000036;
OLECMDID_FITTOSCREEN = $0000000000000037;
+ OLECLOSE_SAVEIFDIRTY = 0;
+ OLECLOSE_NOSAVE = 1;
+ OLECLOSE_PROMPTSAVE = 2;
+
+ OLEMISC_RECOMPOSEONRESIZE = $1;
+ OLEMISC_ONLYICONIC = $2;
+ OLEMISC_INSERTNOTREPLACE = $4;
+ OLEMISC_STATIC = $8;
+ OLEMISC_CANTLINKINSIDE = $10;
+ OLEMISC_CANLINKBYOLE1 = $20;
+ OLEMISC_ISLINKOBJECT = $40;
+ OLEMISC_INSIDEOUT = $80;
+ OLEMISC_ACTIVATEWHENVISIBLE = $100;
+ OLEMISC_RENDERINGISDEVICEINDEPENDENT = $200;
+ OLEMISC_INVISIBLEATRUNTIME = $400;
+ OLEMISC_ALWAYSRUN = $800;
+ OLEMISC_ACTSLIKEBUTTON = $1000;
+ OLEMISC_ACTSLIKELABEL = $2000;
+ OLEMISC_NOUIACTIVATE = $4000;
+ OLEMISC_ALIGNABLE = $8000;
+ OLEMISC_SIMPLEFRAME = $10000;
+ OLEMISC_SETCLIENTSITEFIRST = $20000;
+ OLEMISC_IMEMODE = $40000;
+ OLEMISC_IGNOREACTIVATEWHENVISIBLE = $80000;
+ OLEMISC_WANTSTOMENUMERGE = $100000;
+ OLEMISC_SUPPORTSMULTILEVELUNDO = $200000;
+
+ OLERENDER_NONE = 0;
+ OLERENDER_DRAW = 1;
+ OLERENDER_FORMAT = 2;
+ OLERENDER_ASIS = 3;
+
+ XFORMCOORDS_POSITION = $1;
+ XFORMCOORDS_SIZE = $2;
+ XFORMCOORDS_HIMETRICTOCONTAINER = $4;
+ XFORMCOORDS_CONTAINERTOHIMETRIC = $8;
+ XFORMCOORDS_EVENTCOMPAT = $10;
+
TYPE
TVarType = USHORT;
VARTYPE = TVarType deprecated; // not in Delphi, and clashes with VarType function
@@ -1375,6 +1475,7 @@ TYPE
wireHFONT = ^RemotableHandle;
wireHDC = ^RemotableHandle;
wireHICON = ^RemotableHandle;
+ wireHRGN = ^RemotableHandle;
HCursor = HICON;
@@ -1566,6 +1667,9 @@ TYPE
userSTGMEDIUM = _userSTGMEDIUM;
+ P_userSTGMEDIUM = ^_userSTGMEDIUM;
+
+ wireSTGMEDIUM = P_userSTGMEDIUM;
LPSTGMEDIUM = ^STGMEDIUM;
@@ -2234,6 +2338,26 @@ TYPE
PPOINTF = PtagPOINTF;
TPOINTF = tagPOINTF;
+ PtagRECT = ^tagRECT;
+
+ tagRECT = packed record
+ left : Integer;
+ top : Integer;
+ right : Integer;
+ bottom : Integer;
+ end;
+
+ PtagOLEVERB = ^tagOLEVERB;
+
+ tagOLEVERB = packed record
+ lVerb : Integer;
+ lpszVerbName : PWideChar;
+ fuFlags : LongWord;
+ grfAttribs : LongWord;
+ end;
+ TOLEVERB = tagOLEVERB;
+ POLEVERB = PtagOLEVERB;
+
tagPROPPAGEINFO = packed record
cb : LongWord;
pszTitle : PWideChar;
@@ -2463,15 +2587,10 @@ TYPE
IPersistMemory = interface(IPersist)
['{BD1AE5E0-A6AE-11CE-BD37-504200C10000}']
- // IsDirty :
function IsDirty:HResult;StdCall;
- // Load :
function Load(var pMem:pointer;cbSize:LongWord):HResult;StdCall;
- // Save :
function Save(out pMem:pointer;fClearDirty:Integer;cbSize:LongWord):HResult;StdCall;
- // GetSizeMax :
function GetSizeMax(out pCbSize:LongWord):HResult;StdCall;
- // InitNew :
function InitNew:HResult;StdCall;
end;
@@ -3413,6 +3532,13 @@ TYPE
Function Write(pszPropName: pOleStr; CONST pVar: VARIANT):HResult;StdCall;
End;
+ IPersistPropertyBag = interface(IPersist)
+ ['{37D84F60-42CB-11CE-8135-00AA004BB851}']
+ function InitNew:HResult;stdcall;
+ function Load(pPropBag:IPropertyBag;pErrorLog:IErrorLog):HResult;stdcall;
+ function Save(pPropBag:IPropertyBag;fClearDirty:Integer;fSaveAllProperties:Integer):HResult;stdcall;
+ end;
+
IEnumGUID = interface(IUnknown)
['{0002E000-0000-0000-C000-000000000046}']
Function Next(celt: UINT; OUT rgelt: TGUID; pceltFetched: pUINT=nil):HResult;StdCall;
@@ -3491,22 +3617,16 @@ type
IProvideMultipleClassInfo = interface(IProvideClassInfo2)
['{A7ABA9C1-8983-11CF-8F20-00805F2CD064}']
- // GetMultiTypeInfoCount :
function GetMultiTypeInfoCount(out pcti:LongWord):HResult; StdCall;
- // GetInfoOfIndex :
function GetInfoOfIndex(iti:LongWord;dwFlags:LongWord;out pptiCoClass:ITypeInfo;out pdwTIFlags:LongWord;out pcdispidReserved:LongWord;out piidPrimary:GUID;out piidSource:GUID):HResult; StdCall;
end;
// IOleControl :
IOleControl = interface(IUnknown)
['{B196B288-BAB4-101A-B69C-00AA00341D07}']
- // GetControlInfo :
function GetControlInfo(var pCI:tagCONTROLINFO):HRESULT;stdcall;
- // OnMnemonic :
function OnMnemonic(var pMsg:tagMSG):HRESULT;stdcall;
- // OnAmbientPropertyChange :
function OnAmbientPropertyChange(dispID:Integer):HRESULT;stdcall;
- // FreezeEvents :
function FreezeEvents(bFreeze:Integer):HRESULT;stdcall;
end;
@@ -3514,19 +3634,12 @@ type
IOleControlSite = interface(IUnknown)
['{B196B289-BAB4-101A-B69C-00AA00341D07}']
- // OnControlInfoChanged :
function OnControlInfoChanged:HRESULT;stdcall;
- // LockInPlaceActive :
function LockInPlaceActive(fLock:Integer):HRESULT;stdcall;
- // GetExtendedControl :
function GetExtendedControl(out ppDisp:IDispatch):HRESULT;stdcall;
- // TransformCoords :
function TransformCoords(var pPtlHimetric:_POINTL;var pPtfContainer:tagPOINTF;dwFlags:LongWord):HRESULT;stdcall;
- // TranslateAccelerator :
function TranslateAccelerator(var pMsg:tagMSG;grfModifiers:LongWord):HRESULT;stdcall;
- // OnFocus :
function OnFocus(fGotFocus:Integer):HRESULT;stdcall;
- // ShowPropertyFrame :
function ShowPropertyFrame:HRESULT;stdcall;
end;
@@ -3534,13 +3647,9 @@ type
IPerPropertyBrowsing = interface(IUnknown)
['{376BD3AA-3845-101B-84ED-08002B2EC713}']
- // GetDisplayString :
function GetDisplayString(dispID:Integer;out pBstr:WideString):HRESULT;stdcall;
- // MapPropertyToPage :
function MapPropertyToPage(dispID:Integer;out pClsid:GUID):HRESULT;stdcall;
- // GetPredefinedStrings :
function GetPredefinedStrings(dispID:Integer;out pCaStringsOut:tagCALPOLESTR;out pCaCookiesOut:tagCADWORD):HRESULT;stdcall;
- // GetPredefinedValue :
function GetPredefinedValue(dispID:Integer;dwCookie:LongWord;out pVarOut:OleVariant):HRESULT;stdcall;
end;
@@ -3550,27 +3659,16 @@ type
IPropertyPage = interface(IUnknown)
['{B196B28D-BAB4-101A-B69C-00AA00341D07}']
- // SetPageSite :
function SetPageSite(pPageSite:IPropertyPageSite):HRESULT;stdcall;
- // Activate :
function Activate(hWndParent:wireHWND;var pRect:TRECT;bModal:Integer):HRESULT;stdcall;
- // Deactivate :
function Deactivate:HRESULT;stdcall;
- // GetPageInfo :
function GetPageInfo(out pPageInfo:tagPROPPAGEINFO):HRESULT;stdcall;
- // SetObjects :
function SetObjects(cObjects:LongWord;var ppUnk:IUnknown):HRESULT;stdcall;
- // Show :
function Show(nCmdShow:UInt):HRESULT;stdcall;
- // Move :
function Move(var pRect:TRECT):HRESULT;stdcall;
- // IsPageDirty :
function IsPageDirty:HRESULT;stdcall;
- // Apply :
function Apply:HRESULT;stdcall;
- // Help :
function Help(pszHelpDir:PWideChar):HRESULT;stdcall;
- // TranslateAccelerator :
function TranslateAccelerator(var pMsg:tagMSG):HRESULT;stdcall;
end;
@@ -3578,13 +3676,9 @@ type
IPropertyPageSite = interface(IUnknown)
['{B196B28C-BAB4-101A-B69C-00AA00341D07}']
- // OnStatusChange :
function OnStatusChange(dwFlags:LongWord):HRESULT;stdcall;
- // GetLocaleID :
function GetLocaleID(out pLocaleID:LongWord):HRESULT;stdcall;
- // GetPageContainer :
function GetPageContainer(out ppUnk:IUnknown):HRESULT;stdcall;
- // TranslateAccelerator :
function TranslateAccelerator(var pMsg:tagMSG):HRESULT;stdcall;
end;
@@ -3592,7 +3686,6 @@ type
IPropertyPage2 = interface(IPropertyPage)
['{01E44665-24AC-101B-84ED-08002B2EC713}']
- // EditProperty :
function EditProperty(dispID:Integer):HRESULT;stdcall;
end;
@@ -3600,9 +3693,7 @@ type
IPropertyNotifySink = interface(IUnknown)
['{9BFBBC02-EFF1-101A-84ED-00AA00341D07}']
- // OnChanged :
function OnChanged(dispID:Integer):HRESULT;stdcall;
- // OnRequestEdit :
function OnRequestEdit(dispID:Integer):HRESULT;stdcall;
end;
@@ -3610,7 +3701,6 @@ type
ISpecifyPropertyPages = interface(IUnknown)
['{B196B28B-BAB4-101A-B69C-00AA00341D07}']
- // GetPages :
function GetPages(out pPages:tagCAUUID):HRESULT;stdcall;
end;
@@ -3618,9 +3708,7 @@ type
ISimpleFrameSite = interface(IUnknown)
['{742B0E01-14E6-101B-914E-00AA00300CAB}']
- // PreMessageFilter :
function PreMessageFilter(hwnd:wireHWND;msg:UInt;wp:UINT_PTR;lp:LONG_PTR;out plResult:LONG_PTR;out pdwCookie:LongWord):HRESULT;stdcall;
- // PostMessageFilter :
function PostMessageFilter(hwnd:wireHWND;msg:UInt;wp:UINT_PTR;lp:LONG_PTR;out plResult:LONG_PTR;dwCookie:LongWord):HRESULT;stdcall;
end;
@@ -3628,53 +3716,29 @@ type
IFont = interface(IUnknown)
['{BEF6E002-A874-101A-8BBA-00AA00300CAB}']
- // get_Name :
function get_Name(out pName:WideString):HRESULT;stdcall;
- // put_Name :
function put_Name(name:WideString):HRESULT;stdcall;
- // get_Size :
function get_Size(out pSize:Currency):HRESULT;stdcall;
- // put_Size :
function put_Size(size:Currency):HRESULT;stdcall;
- // get_Bold :
function get_Bold(out pBold:Integer):HRESULT;stdcall;
- // put_Bold :
function put_Bold(bold:Integer):HRESULT;stdcall;
- // get_Italic :
function get_Italic(out pItalic:Integer):HRESULT;stdcall;
- // put_Italic :
function put_Italic(italic:Integer):HRESULT;stdcall;
- // get_Underline :
function get_Underline(out pUnderline:Integer):HRESULT;stdcall;
- // put_Underline :
function put_Underline(underline:Integer):HRESULT;stdcall;
- // get_Strikethrough :
function get_Strikethrough(out pStrikethrough:Integer):HRESULT;stdcall;
- // put_Strikethrough :
function put_Strikethrough(strikethrough:Integer):HRESULT;stdcall;
- // get_Weight :
function get_Weight(out pWeight:Smallint):HRESULT;stdcall;
- // put_Weight :
function put_Weight(weight:Smallint):HRESULT;stdcall;
- // get_Charset :
function get_Charset(out pCharset:Smallint):HRESULT;stdcall;
- // put_Charset :
function put_Charset(charset:Smallint):HRESULT;stdcall;
- // get_hFont :
function get_hFont(out phFont:wireHFONT):HRESULT;stdcall;
- // Clone :
function Clone(out ppFont:IFont):HRESULT;stdcall;
- // IsEqual :
function IsEqual(pFontOther:IFont):HRESULT;stdcall;
- // SetRatio :
function SetRatio(cyLogical:Integer;cyHimetric:Integer):HRESULT;stdcall;
- // QueryTextMetrics :
function QueryTextMetrics(out pTM:tagTEXTMETRICW):HRESULT;stdcall;
- // AddRefHfont :
function AddRefHfont(hFont:wireHFONT):HRESULT;stdcall;
- // ReleaseHfont :
function ReleaseHfont(hFont:wireHFONT):HRESULT;stdcall;
- // SetHdc :
function SetHdc(hDC:wireHDC):HRESULT;stdcall;
end;
@@ -3682,65 +3746,37 @@ type
IPicture = interface(IUnknown)
['{7BF80980-BF32-101A-8BBB-00AA00300CAB}']
- // get_Handle :
function get_Handle(out pHandle:OLE_HANDLE):HRESULT;stdcall;
- // get_hPal :
function get_hPal(out phPal:OLE_HANDLE):HRESULT;stdcall;
- // get_Type :
function get_Type(out pType:SHORT):HRESULT;stdcall;
- // get_Width :
function get_Width(out pWidth:OLE_XSIZE_HIMETRIC):HRESULT;stdcall;
- // get_Height :
function get_Height(out pHeight:OLE_YSIZE_HIMETRIC):HRESULT;stdcall;
- // Render :
function Render(hDC:wireHDC;x:Integer;y:Integer;cx:Integer;cy:Integer;xSrc:OLE_XPOS_HIMETRIC;ySrc:OLE_YPOS_HIMETRIC;cxSrc:OLE_XSIZE_HIMETRIC;cySrc:OLE_YSIZE_HIMETRIC;var pRcWBounds:TRECT):HRESULT;stdcall;
- // set_hPal :
function set_hPal(hPal:OLE_HANDLE):HRESULT;stdcall;
- // get_CurDC :
function get_CurDC(out phDC:wireHDC):HRESULT;stdcall;
- // SelectPicture :
function SelectPicture(hDCIn:wireHDC;out phDCOut:wireHDC;out phBmpOut:OLE_HANDLE):HRESULT;stdcall;
- // get_KeepOriginalFormat :
function get_KeepOriginalFormat(out pKeep:Integer):HRESULT;stdcall;
- // put_KeepOriginalFormat :
function put_KeepOriginalFormat(keep:Integer):HRESULT;stdcall;
- // PictureChanged :
function PictureChanged:HRESULT;stdcall;
- // SaveAsFile :
function SaveAsFile(pStream:IStream;fSaveMemCopy:Integer;out pCbSize:Integer):HRESULT;stdcall;
- // get_Attributes :
function get_Attributes(out pDwAttr:LongWord):HRESULT;stdcall;
end;
IPicture2 = interface(IUnknown)
['{F5185DD8-2012-4b0b-AAD9-F052C6BD482B}']
- // get_Handle :
function get_Handle(out pHandle:HHANDLE):HRESULT;stdcall;
- // get_hPal :
function get_hPal(out phPal:HHANDLE):HRESULT;stdcall;
- // get_Type :
function get_Type(out pType:SHORT):HRESULT;stdcall;
- // get_Width :
function get_Width(out pWidth:OLE_XSIZE_HIMETRIC):HRESULT;stdcall;
- // get_Height :
function get_Height(out pHeight:OLE_YSIZE_HIMETRIC):HRESULT;stdcall;
- // Render :
function Render(hDC:wireHDC;x:LONG;y:LONG;cx:LONG;cy:LONG;xSrc:OLE_XPOS_HIMETRIC;ySrc:OLE_YPOS_HIMETRIC;cxSrc:OLE_XSIZE_HIMETRIC;cySrc:OLE_YSIZE_HIMETRIC;var pRcWBounds:TRECT):HRESULT;stdcall;
- // set_hPal :
function set_hPal(hPal:HHANDLE):HRESULT;stdcall;
- // get_CurDC :
function get_CurDC(out phDC:HDC):HRESULT;stdcall;
- // SelectPicture :
function SelectPicture(hDCIn:HDC;out phDCOut:HDC;out phBmpOut:HHANDLE):HRESULT;stdcall;
- // get_KeepOriginalFormat :
function get_KeepOriginalFormat(out pKeep:WinBOOL):HRESULT;stdcall;
- // put_KeepOriginalFormat :
function put_KeepOriginalFormat(keep:WinBOOL):HRESULT;stdcall;
- // PictureChanged :
function PictureChanged:HRESULT;stdcall;
- // SaveAsFile :
function SaveAsFile(pStream:IStream;fSaveMemCopy:LONG;out pCbSize:LONG):HRESULT;stdcall;
- // get_Attributes :
function get_Attributes(out pDwAttr:LongWord):HRESULT;stdcall;
end;
@@ -3796,6 +3832,8 @@ type
cmdID : LongWord;
cmdf : LongWord;
end;
+ POLECMD = P_tagOLECMD;
+ TOLECMD = _tagOLECMD;
P_tagOLECMDTEXT = ^_tagOLECMDTEXT;
@@ -3805,6 +3843,8 @@ type
cwBuf : LongWord;
rgwz : PWord;
end;
+ POLECMDTEXT = P_tagOLECMDTEXT;
+ TOLECMDTEXT = _tagOLECMDTEXT;
{ redefinitions }
function CoCreateGuid(out _para1:TGUID):HRESULT;stdcall;external 'ole32.dll' name 'CoCreateGuid';
@@ -3937,6 +3977,29 @@ type
function OnPosRectChange(lprcPosRect:LPRect):hresult; stdcall;
end;
+ IOleInPlaceSiteEx = interface(IOleInPlaceSite)
+ ['{9C2CAD80-3424-11CF-B670-00AA004CD6D8}']
+ function OnInPlaceActivateEx(out pfNoRedraw:Integer;dwFlags:LongWord):HResult;stdcall;
+ function OnInPlaceDeactivateEx(fNoRedraw:Integer):HResult;stdcall;
+ function RequestUIActivate:HResult;stdcall;
+ end;
+
+ IOleInPlaceSiteWindowless = interface(IOleInPlaceSiteEx)
+ ['{922EADA0-3424-11CF-B670-00AA004CD6D8}']
+ function CanWindowlessActivate:HResult;stdcall;
+ function GetCapture:HResult;stdcall;
+ function SetCapture(fCapture:Integer):HResult;stdcall;
+ function GetFocus:HResult;stdcall;
+ function SetFocus(fFocus:Integer):HResult;stdcall;
+ function GetDC(var pRect:tagRECT;grfFlags:LongWord;out phDC:wireHDC):HResult;stdcall;
+ function ReleaseDC(hDC:wireHDC):HResult;stdcall;
+ function InvalidateRect(var pRect:tagRECT;fErase:Integer):HResult;stdcall;
+ function InvalidateRgn(hRGN:wireHRGN;fErase:Integer):HResult;stdcall;
+ function ScrollRect(dx:SYSINT;dy:SYSINT;var pRectScroll:tagRECT;var pRectClip:tagRECT):HResult;stdcall;
+ function AdjustRect(var prc:tagRECT):HResult;stdcall;
+ function OnDefWindowMessage(msg:UInt;wParam:UINT_PTR;lParam:LONG_PTR;out plResult:LONG_PTR):HResult;stdcall;
+ end;
+
IOleInPlaceObject = interface(IOleWindow)
['{00000113-0000-0000-C000-000000000046}']
function InPlaceDeactivate : HResult;stdcall;
@@ -3945,6 +4008,12 @@ type
function ReactivateAndUndo : HResult;stdcall;
end;
+ IOleInPlaceObjectWindowless = interface(IOleInPlaceObject)
+ ['{1C2056CC-5EF4-101B-8BC8-00AA003E3B29}']
+ function OnWindowMessage(msg:UInt;wParam:UINT_PTR;lParam:LONG_PTR;out plResult:LONG_PTR):HRESULT;stdcall;
+ function GetDropTarget(out ppDropTarget:IDropTarget):HRESULT;stdcall;
+ end;
+
IOleDocumentView = interface(IUnknown)
['{b722bcc6-4e68-101b-a2bc-00aa00404770}']
function SetInPlaceSite(ppipsite:IOleInPlaceSite):hresult; stdcall;
@@ -3995,6 +4064,34 @@ type
function Exec(var pguidCmdGroup:GUID;nCmdID:LongWord;nCmdexecopt:LongWord;var pvaIn:OleVariant;var pvaOut:OleVariant):HRESULT;stdcall;
end;
+ IOleCache = interface(IUnknown)
+ ['{0000011E-0000-0000-C000-000000000046}']
+ function Cache(var pFormatetc:tagFORMATETC;advf:LongWord;out pdwConnection:LongWord):HRESULT;stdcall;
+ function Uncache(dwConnection:LongWord):HRESULT;stdcall;
+ function EnumCache(out ppenumSTATDATA:IEnumSTATDATA):HRESULT;stdcall;
+ function InitCache(pDataObject:IDataObject):HRESULT;stdcall;
+ function SetData(var pFormatetc:tagFORMATETC;var pmedium:wireSTGMEDIUM;fRelease:Integer):HRESULT;stdcall;
+ end;
+
+ IOleCache2 = interface(IOleCache)
+ ['{00000128-0000-0000-C000-000000000046}']
+ function UpdateCache(pDataObject:IDataObject;grfUpdf:LongWord;var pReserved:pointer):HRESULT;stdcall;
+ function DiscardCache(dwDiscardOptions:LongWord):HRESULT;stdcall;
+ end;
+
+ IOleCacheControl = interface(IUnknown)
+ ['{00000129-0000-0000-C000-000000000046}']
+ function OnRun(pDataObject:IDataObject):HRESULT;stdcall;
+ function OnStop:HRESULT;stdcall;
+ end;
+
+ IOleItemContainer = interface(IOleContainer)
+ ['{0000011C-0000-0000-C000-000000000046}']
+ function GetObject(pszItem:PWideChar;dwSpeedNeeded:LongWord;pbc:IBindCtx;var riid:GUID;out ppvObject:Ppointer):HRESULT;stdcall;
+ function GetObjectStorage(pszItem:PWideChar;pbc:IBindCtx;var riid:GUID;out ppvStorage:Ppointer):HRESULT;stdcall;
+ function IsRunning(pszItem:PWideChar):HRESULT;stdcall;
+ end;
+
IContinueCallback = interface(IUnknown)
['{b722bcca-4e68-101b-a2bc-00aa00404770}']
function FContinue:HResult;Stdcall;
@@ -4135,6 +4232,7 @@ Type
OLEIVERB_UIACTIVATE = -(4);
OLEIVERB_INPLACEACTIVATE = -(5);
OLEIVERB_DISCARDUNDOSTATE = -(6);
+ OLEIVERB_PROPERTIES = -(7);
{ for OleCreateEmbeddingHelper flags; roles low word; options high word }
EMBDHLP_INPROC_HANDLER = $0000;
EMBDHLP_INPROC_SERVER = $0001;
diff --git a/packages/winunits-base/src/comobj.pp b/packages/winunits-base/src/comobj.pp
index 41c2016453..3801459363 100644
--- a/packages/winunits-base/src/comobj.pp
+++ b/packages/winunits-base/src/comobj.pp
@@ -290,6 +290,9 @@ unit comobj;
function StringToLPOLESTR(const Source: string): POLEStr;
+ procedure InterfaceConnect(const Source: IUnknown; const IID: TIID; const Sink: IUnknown; var Connection: DWORD);
+ procedure InterfaceDisconnect(const Source: IUnknown; const IID: TIID; var Connection: DWORD);
+
procedure DispatchInvoke(const Dispatch: IDispatch; CallDesc: PCallDesc;
DispIDs: PDispIDList; Params: Pointer; Result: PVariant);
procedure DispatchInvokeError(Status: HRESULT; const ExceptInfo: TExcepInfo);
@@ -586,6 +589,35 @@ implementation
end;
+ procedure InterfaceConnect(const Source: IUnknown; const IID: TIID; const Sink: IUnknown; var Connection: DWORD);
+ var
+ CPC: IConnectionPointContainer;
+ CP: IConnectionPoint;
+ i: hresult;
+ begin
+ Connection := 0;
+ if Succeeded(Source.QueryInterface(IConnectionPointContainer, CPC)) then
+ if Succeeded(CPC.FindConnectionPoint(IID, CP)) then
+ i:=CP.Advise(Sink, Connection);
+ end;
+
+
+ procedure InterfaceDisconnect(const Source: IUnknown; const IID: TIID; var Connection: DWORD);
+ var
+ CPC: IConnectionPointContainer;
+ CP: IConnectionPoint;
+ i: hresult;
+ begin
+ if Connection <> 0 then
+ if Succeeded(Source.QueryInterface(IConnectionPointContainer, CPC)) then
+ if Succeeded(CPC.FindConnectionPoint(IID, CP)) then
+ begin
+ i:=CP.Unadvise(Connection);
+ if Succeeded(i) then Connection := 0;
+ end;
+ end;
+
+
procedure SafeCallErrorHandler(err : HResult;addr : pointer);
{$ifndef wince}
var
diff --git a/packages/winunits-base/src/eventsink.pp b/packages/winunits-base/src/eventsink.pp
index f2777a9d5c..9fce8a5fdf 100644
--- a/packages/winunits-base/src/eventsink.pp
+++ b/packages/winunits-base/src/eventsink.pp
@@ -91,36 +91,6 @@ implementation
uses
ComObj;
-procedure InterfaceConnect(const Source: IUnknown; const IID: TIID;
- const Sink: IUnknown; var Connection: DWORD);
-var
- CPC: IConnectionPointContainer;
- CP: IConnectionPoint;
- i:hresult;
-begin
- Connection := 0;
- if Succeeded(Source.QueryInterface(IConnectionPointContainer, CPC)) then
- if Succeeded(CPC.FindConnectionPoint(IID, CP)) then
- i:=CP.Advise(Sink, Connection);
-end;
-
-procedure InterfaceDisconnect(const Source: IUnknown; const IID: TIID;
- var Connection: DWORD);
-var
- CPC: IConnectionPointContainer;
- CP: IConnectionPoint;
- i:hresult;
-begin
- if Connection <> 0 then
- if Succeeded(Source.QueryInterface(IConnectionPointContainer, CPC)) then
- if Succeeded(CPC.FindConnectionPoint(IID, CP)) then
- begin
- i:=CP.Unadvise(Connection);
- if Succeeded(i) then Connection := 0;
-
- end;
-end;
-
{ TAbstractEventSink }
constructor TAbstractEventSink.Create(AOwner: TComponent);
diff --git a/packages/winunits-base/src/htmlhelp.pp b/packages/winunits-base/src/htmlhelp.pp
index cc943abdff..49d852fbc5 100644
--- a/packages/winunits-base/src/htmlhelp.pp
+++ b/packages/winunits-base/src/htmlhelp.pp
@@ -24,6 +24,9 @@
unit htmlhelp;
interface
+{$ifdef FPC_OS_UNICODE}
+ {$define UNICODE}
+{$endif}
Uses Windows;
@@ -383,7 +386,11 @@ Type
function HtmlHelpA(hwndCaller:HWND; pszFile:LPCSTR; uCommand:UINT; dwData:DWORD_PTR):HWND;stdcall;external External_library name 'HtmlHelpA';
function HtmlHelpW(hwndCaller:HWND; pszFile:LPCWSTR; uCommand:UINT; dwData:DWORD_PTR):HWND;stdcall;external External_library name 'HtmlHelpW';
-
+ {$ifdef Unicode}
+ function HtmlHelp(hwndCaller:HWND; pszFile:LPCWSTR; uCommand:UINT; dwData:DWORD_PTR):HWND;stdcall;external External_library name 'HtmlHelpW';
+ {$else}
+ function HtmlHelp(hwndCaller:HWND; pszFile:LPCSTR; uCommand:UINT; dwData:DWORD_PTR):HWND;stdcall;external External_library name 'HtmlHelpA';
+ {$endif}
type HH_GPROPID = (
diff --git a/packages/winunits-base/src/shlobj.pp b/packages/winunits-base/src/shlobj.pp
index 62ab9e8a06..f94a14a465 100644
--- a/packages/winunits-base/src/shlobj.pp
+++ b/packages/winunits-base/src/shlobj.pp
@@ -26,7 +26,7 @@ uses
windows,activex,shellapi,commctrl;
Const
- IID_IShellExtInit ='{000214E8-0000-0000-C000-000000000046}';
+ IID_IShellExtInit : TGUID ='{000214E8-0000-0000-C000-000000000046}';
IID_IShellFolder : TGUID ='{000214E6-0000-0000-C000-000000000046}';
IID_IEnumList : TGUID ='{000214F2-0000-0000-C000-000000000046}';
IID_IAutoComplete : TGUID ='{00bb2762-6a77-11d0-a535-00c04fd7d062}';
@@ -42,6 +42,17 @@ Const
IID_IEXtractIconW : TGUID ='{000214fa-0000-0000-c000-000000000046}';
IID_IEXtractIconA : TGUID ='{000214eb-0000-0000-c000-000000000046}';
IID_IShellLinkA : TGUID ='{000214EE-0000-0000-C000-000000000046}';
+ IID_IShellLinkW : TGUID ='{000214F9-0000-0000-C000-000000000046}';
+ IID_IShellBrowser : TGUID ='{000214E2-0000-0000-C000-000000000046}';
+ IID_IShellDetails : TGUID ='{000214EC-0000-0000-C000-000000000046}';
+ IID_IShellIcon : TGUID ='{000214E5-0000-0000-C000-000000000046}';
+ IID_IShellView : TGUID ='{000214E3-0000-0000-C000-000000000046}';
+ IID_IShellView2 : TGUID ='{88E39E80-3578-11CF-AE69-08002B2E1262}';
+ IID_IEnumIDList : TGUID ='{000214F2-0000-0000-C000-000000000046}';
+
+ CGID_Explorer : TGUID ='{000214D0-0000-0000-C000-000000000046}';
+ CGID_ShellDocView : TGUID ='{000214D1-0000-0000-C000-000000000046}';
+
CLSID_StdMarshal : TGUID = '{00000017-0000-0000-c000-000000000046}';
CLSID_IdentityUnmarshal : TGUID = '{0000001b-0000-0000-c000-000000000046}';
CLSID_InProcFreeMarshaler : TGUID = '{0000001c-0000-0000-c000-000000000046}';
@@ -2491,10 +2502,15 @@ type
end;
IShellExtInit = Interface(IUnknown)
- [IID_IShellExtInit]
+ ['{000214E8-0000-0000-C000-000000000046}']
function Initialize(pidlfolder: LPCITEMIDLIST; pdtobj : IDataObject;hkeyProgID : HKEY):HResult; stdcall;
end;
+ IShellIcon = interface(IUnknown)
+ ['{000214E5-0000-0000-C000-000000000046}']
+ function GetIconOf(pidl: LPCITEMIDLIST; flags: UINT; out lpIconIndex: longint):HResult; stdcall;
+ end;
+
function SHGetMalloc(out ppmalloc: IMalloc):HResult;StdCall; external 'shell32' name 'SHGetMalloc';
function SHGetDesktopFolder(out ppshf:IShellFolder):HResult;StdCall; external 'shell32' name 'SHGetDesktopFolder';
diff --git a/rtl/Makefile b/rtl/Makefile
index a9162a7260..3bc262e96d 100644
--- a/rtl/Makefile
+++ b/rtl/Makefile
@@ -1,8 +1,8 @@
#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-04-01 rev 27428]
#
default: all
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos
BSDs = freebsd netbsd openbsd darwin
UNIXs = linux $(BSDs) solaris qnx haiku aix
LIMIT83fs = go32v2 os2 emx watcom msdos
@@ -184,6 +184,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t
endif
override FPCOPT+=-Cp$(SUBARCH)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+ifeq ($(SUBARCH),)
+$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined)
+endif
+override FPCOPT+=-Cp$(SUBARCH)
+endif
ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
TARGETSUFFIX=$(OS_TARGET)
SOURCESUFFIX=$(OS_SOURCE)
@@ -519,6 +525,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_DIRS+=linux
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_DIRS+=embedded
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_DIRS+=android
endif
@@ -1314,17 +1323,23 @@ ifdef ACROSSCOMPILE
override FPCOPT+=$(CROSSOPT)
endif
override COMPILER:=$(strip $(FPC) $(FPCOPT))
-ifeq (,$(findstring -s ,$(COMPILER)))
+ifneq (,$(findstring -sh ,$(COMPILER)))
+UseEXECPPAS=1
+endif
+ifneq (,$(findstring -s ,$(COMPILER)))
+ifeq ($(FULL_SOURCE),$(FULL_TARGET))
+UseEXECPPAS=1
+endif
+endif
+ifneq ($(UseEXECPPAS),1)
EXECPPAS=
else
-ifeq ($(FULL_SOURCE),$(FULL_TARGET))
ifdef RUNBATCH
EXECPPAS:=@$(RUNBATCH) $(PPAS)
else
EXECPPAS:=@$(PPAS)
endif
endif
-endif
ifdef TARGET_RSTS
override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS))
override CLEANRSTFILES+=$(RSTFILES)
@@ -1864,6 +1879,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
TARGET_DIRS_LINUX=1
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+TARGET_DIRS_EMBEDDED=1
+endif
ifeq ($(FULL_TARGET),mipsel-android)
TARGET_DIRS_ANDROID=1
endif
diff --git a/rtl/aix/Makefile b/rtl/aix/Makefile
index c573301ff2..ad003170e8 100644
--- a/rtl/aix/Makefile
+++ b/rtl/aix/Makefile
@@ -1,8 +1,8 @@
#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-04-01 rev 27428]
#
default: all
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos
BSDs = freebsd netbsd openbsd darwin
UNIXs = linux $(BSDs) solaris qnx haiku aix
LIMIT83fs = go32v2 os2 emx watcom msdos
@@ -185,6 +185,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t
endif
override FPCOPT+=-Cp$(SUBARCH)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+ifeq ($(SUBARCH),)
+$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined)
+endif
+override FPCOPT+=-Cp$(SUBARCH)
+endif
ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
TARGETSUFFIX=$(OS_TARGET)
SOURCESUFFIX=$(OS_SOURCE)
@@ -348,670 +354,679 @@ ifndef USELIBGGI
USELIBGGI=NO
endif
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_UNITS+=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem printer lnfogdb sysutils typinfo math fgl classes charset cpall unixcp getopts errors terminfo dl dynlibs types sysconst strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc baseunix unixutil termio unix initc cmem lnfogdb sysutils typinfo math fgl classes charset cpall character unixcp getopts errors dl dynlibs types sysconst rtlconsts cthreads dos cwstring fpwidestring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_RSTS+=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
override INSTALL_FPCPACKAGE=y
ifeq ($(FULL_TARGET),i386-linux)
@@ -1224,6 +1239,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) # $(OSPROCINC)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) # $(OSPROCINC)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) # $(OSPROCINC)
endif
@@ -1446,6 +1464,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(COMMON)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(COMMON)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(COMMON)
endif
@@ -2239,17 +2260,23 @@ ifdef ACROSSCOMPILE
override FPCOPT+=$(CROSSOPT)
endif
override COMPILER:=$(strip $(FPC) $(FPCOPT))
-ifeq (,$(findstring -s ,$(COMPILER)))
+ifneq (,$(findstring -sh ,$(COMPILER)))
+UseEXECPPAS=1
+endif
+ifneq (,$(findstring -s ,$(COMPILER)))
+ifeq ($(FULL_SOURCE),$(FULL_TARGET))
+UseEXECPPAS=1
+endif
+endif
+ifneq ($(UseEXECPPAS),1)
EXECPPAS=
else
-ifeq ($(FULL_SOURCE),$(FULL_TARGET))
ifdef RUNBATCH
EXECPPAS:=@$(RUNBATCH) $(PPAS)
else
EXECPPAS:=@$(PPAS)
endif
endif
-endif
.PHONY: fpc_units
ifneq ($(TARGET_UNITS)$(TARGET_IMPLICITUNITS),)
override ALLTARGET+=fpc_units
@@ -2622,8 +2649,6 @@ $(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
$(COMPILER) -Us -Sg $(SYSTEMUNIT).pp
objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/objpas.pp
-dateutils$(PPUEXT): objpas$(PPUEXT) sysutils$(PPUEXT) math$(PPUEXT) types$(PPUEXT) sysconst$(PPUEXT) $(OBJPASDIR)/dateutils.pp baseunix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/dateutils.pp
strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc \
$(PROCINC)/strings.inc $(PROCINC)/stringss.inc \
$(SYSTEMUNIT)$(PPUEXT)
@@ -2640,9 +2665,6 @@ unixcp$(PPUEXT) : $(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) ba
$(COMPILER) $(UNIXINC)/unixcp.pp
dos$(PPUEXT) : strings$(PPUEXT) unix$(PPUEXT) $(UNIXINC)/dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \
unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-crt$(PPUEXT) : unix$(PPUEXT) termio$(PPUEXT) $(UNIXINC)/crt.pp $(INC)/textrec.inc unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-objects$(PPUEXT) : dos$(PPUEXT) $(INC)/objects.pp $(SYSTEMUNIT)$(PPUEXT)
-printer$(PPUEXT) : unix$(PPUEXT) strings$(PPUEXT) baseunix$(PPUEXT) $(UNIXINC)/printer.pp $(INC)/textrec.inc unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
sysutils$(PPUEXT) : $(UNIXINC)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
objpas$(PPUEXT) unix$(PPUEXT) errors$(PPUEXT) sysconst$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) -Fi$(OBJPASDIR)/sysutils $(UNIXINC)/sysutils.pp
@@ -2654,41 +2676,18 @@ fgl$(PPUEXT) : $(OBJPASDIR)/fgl.pp objpas$(PPUEXT) types$(PPUEXT) system$(PPUEXT
$(COMPILER) $(OBJPASDIR)/fgl.pp
typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT) sysutils$(PPUEXT) rtlconsts$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp
+character$(PPUEXT): sysutils$(PPUEXT) $(OBJPASDIR)/character.pas objpas$(PPUEXT) rtlconsts$(PPUEXT)
+ $(COMPILER) $(OBJPASDIR)/character.pas
math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/math.pp
-gettext$(PPUEXT): $(OBJPASDIR)/gettext.pp objpas$(PPUEXT) sysutils$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/gettext.pp
-varutils$(PPUEXT) : $(OBJPASDIR)/cvarutil.inc $(OBJPASDIR)/varutils.inc \
- $(OBJPASDIR)/varutilh.inc varutils.pp sysutils$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) -I$(OBJPASDIR) $(UNIXINC)/varutils.pp
-variants$(PPUEXT) : $(INC)/variants.pp sysutils$(PPUEXT) sysconst$(PPUEXT) varutils$(PPUEXT)\
- typinfo$(PPUEXT) rtlconsts$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) -Fi$(INC) $(INC)/variants.pp
-fmtbcd$(PPUEXT) : $(OBJPASDIR)/fmtbcd.pp objpas$(PPUEXT) sysutils$(PPUEXT) variants$(PPUEXT) classes$(PPUEXT) system$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/fmtbcd.pp
types$(PPUEXT) : $(OBJPASDIR)/types.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/types.pp
sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/sysconst.pp
rtlconsts$(PPUEXT) : $(OBJPASDIR)/rtlconsts.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/rtlconsts.pp
-strutils$(PPUEXT) : $(OBJPASDIR)/strutils.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/strutils.pp
-convutils$(PPUEXT) : $(OBJPASDIR)/convutils.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/convutils.pp
-stdconvs$(PPUEXT) : $(OBJPASDIR)/stdconvs.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/stdconvs.pp
macpas$(PPUEXT) : $(INC)/macpas.pp objpas$(PPUEXT) math$(PPUEXT)
$(COMPILER) $(INC)/macpas.pp $(REDIR)
-video$(PPUEXT) : $(SYSTEMUNIT)$(PPUEXT) $(INC)/video.inc $(INC)/videoh.inc $(UNIXINC)/video.pp \
- baseunix$(PPUEXT) strings$(PPUEXT) terminfo$(PPUEXT) termio$(PPUEXT)
-keyboard$(PPUEXT) : $(SYSTEMUNIT)$(PPUEXT) $(INC)/keyboard.inc $(INC)/keybrdh.inc $(UNIXINC)/keyboard.pp \
- strings$(PPUEXT) terminfo$(PPUEXT) termio$(PPUEXT) baseunix$(PPUEXT) mouse$(PPUEXT)
-mouse$(PPUEXT) : $(UNIXINC)/mouse.pp $(SYSTEMUNIT)$(PPUEXT) baseunix$(PPUEXT) video$(PPUEXT)
-matrix$(PPUEXT) : $(INC)/matrix.pp $(SYSTEMUNIT)$(PPUEXT)
ifeq ($(ARCH),x86_64)
cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT) sysutils$(PPUEXT)
else
@@ -2702,14 +2701,11 @@ lnfogdb$(PPUEXT) : $(UNIXINC)/lnfogdb.pp $(SYSTEMUNIT)$(PPUEXT) ctypes$(PPUEXT)
charset$(PPUEXT) : $(INC)/charset.pp objpas$(PPUEXT)
cpall$(PPUEXT): $(RTL)/charmaps/cpall.pas system$(PPUEXT) charset$(PPUEXT)
$(COMPILER) -Fu$(INC) -Fi$(RTL)/charmaps $(RTL)/charmaps/cpall.pas
-ucomplex$(PPUEXT) : $(INC)/ucomplex.pp math$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) math$(PPUEXT)
-sockets$(PPUEXT) : sockets.pp $(INC)/textrec.inc $(INC)/filerec.inc \
- unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
+fpwidestring$(PPUEXT): $(OBJPASDIR)/fpwidestring.pp character$(PPUEXT) unixcp$(PPUEXT)
+ $(COMPILER) $(OBJPASDIR)/fpwidestring.pp
errors$(PPUEXT) : errors.pp strings$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
dynlibs$(PPUEXT) : $(INC)/dynlibs.pas $(UNIXINC)/dynlibs.inc dl$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-ipc$(PPUEXT) : ipc.pp unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
termio$(PPUEXT) : termio.pp unixtype$(PPUEXT) baseunix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-terminfo$(PPUEXT) : terminfo.pp unix$(PPUEXT)
callspec$(PPUEXT) : $(INC)/callspec.pp $(SYSTEMUNIT)$(PPUEXT)
cmem$(PPUEXT) : $(INC)/cmem.pp $(SYSTEMUNIT)$(PPUEXT)
cthreads$(PPUEXT) : $(UNIXINC)/cthreads.pp sysutils$(PPUEXT) baseunix$(PPUEXT) unixtype$(PPUEXT) unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
diff --git a/rtl/aix/Makefile.fpc b/rtl/aix/Makefile.fpc
index fa51f5a158..e61b02e147 100644
--- a/rtl/aix/Makefile.fpc
+++ b/rtl/aix/Makefile.fpc
@@ -7,24 +7,25 @@ main=rtl
[target]
loaders=
-units=$(SYSTEMUNIT) unixtype ctypes strings objpas iso7185 macpas \
+units=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas \
heaptrc \
baseunix unixutil \
termio unix initc cmem \
- printer lnfogdb \
+ lnfogdb \
sysutils typinfo math fgl classes \
- charset cpall unixcp getopts \
+ charset cpall character unixcp getopts \
errors \
- # ipc serial
- terminfo dl dynlibs \
+ # ipc
+ dl dynlibs \
types sysconst \
- strutils rtlconsts cthreads \
+ rtlconsts cthreads \
dos \
- cwstring fpintres clocale $(CPU_UNITS)
+ cwstring fpwidestring fpintres $(CPU_UNITS)
implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 \
- cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+ cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 \
+ unicodedata unicodenumtable
-rsts=math varutils typinfo classes variants dateutils sysconst rtlconst stdconvs
+rsts=math typinfo classes sysconst rtlconst
[require]
nortl=y
@@ -46,10 +47,10 @@ libname=libfprtl.so
libversion=2.0.0
libunits=$(SYSTEMUNIT) objpas strings \
unix \
- dos crt printer \
+ dos crt \
sysutils typinfo math \
$(CPU_UNITS) getopts heaptrc \
- errors sockets ipc
+ errors sockets
[prerules]
RTL=..
@@ -126,11 +127,6 @@ $(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/objpas.pp
-
-dateutils$(PPUEXT): objpas$(PPUEXT) sysutils$(PPUEXT) math$(PPUEXT) types$(PPUEXT) sysconst$(PPUEXT) $(OBJPASDIR)/dateutils.pp baseunix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/dateutils.pp
-
-
strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc \
$(PROCINC)/strings.inc $(PROCINC)/stringss.inc \
$(SYSTEMUNIT)$(PPUEXT)
@@ -161,13 +157,6 @@ unixcp$(PPUEXT) : $(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) ba
dos$(PPUEXT) : strings$(PPUEXT) unix$(PPUEXT) $(UNIXINC)/dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \
unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-
-crt$(PPUEXT) : unix$(PPUEXT) termio$(PPUEXT) $(UNIXINC)/crt.pp $(INC)/textrec.inc unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-
-objects$(PPUEXT) : dos$(PPUEXT) $(INC)/objects.pp $(SYSTEMUNIT)$(PPUEXT)
-
-printer$(PPUEXT) : unix$(PPUEXT) strings$(PPUEXT) baseunix$(PPUEXT) $(UNIXINC)/printer.pp $(INC)/textrec.inc unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-
#
# Graph
#
@@ -191,22 +180,13 @@ fgl$(PPUEXT) : $(OBJPASDIR)/fgl.pp objpas$(PPUEXT) types$(PPUEXT) system$(PPUEXT
typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT) sysutils$(PPUEXT) rtlconsts$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp
-math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/math.pp
-
-gettext$(PPUEXT): $(OBJPASDIR)/gettext.pp objpas$(PPUEXT) sysutils$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/gettext.pp
-
-varutils$(PPUEXT) : $(OBJPASDIR)/cvarutil.inc $(OBJPASDIR)/varutils.inc \
- $(OBJPASDIR)/varutilh.inc varutils.pp sysutils$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) -I$(OBJPASDIR) $(UNIXINC)/varutils.pp
+# let it depend on buildcollations to prevent simultaneous building of unicodedata
+character$(PPUEXT): sysutils$(PPUEXT) $(OBJPASDIR)/character.pas objpas$(PPUEXT) rtlconsts$(PPUEXT)
+ $(COMPILER) $(OBJPASDIR)/character.pas
-variants$(PPUEXT) : $(INC)/variants.pp sysutils$(PPUEXT) sysconst$(PPUEXT) varutils$(PPUEXT)\
- typinfo$(PPUEXT) rtlconsts$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) -Fi$(INC) $(INC)/variants.pp
-fmtbcd$(PPUEXT) : $(OBJPASDIR)/fmtbcd.pp objpas$(PPUEXT) sysutils$(PPUEXT) variants$(PPUEXT) classes$(PPUEXT) system$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/fmtbcd.pp
+math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
+ $(COMPILER) $(OBJPASDIR)/math.pp
types$(PPUEXT) : $(OBJPASDIR)/types.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/types.pp
@@ -217,18 +197,6 @@ sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUE
rtlconsts$(PPUEXT) : $(OBJPASDIR)/rtlconsts.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/rtlconsts.pp
-strutils$(PPUEXT) : $(OBJPASDIR)/strutils.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/strutils.pp
-
-convutils$(PPUEXT) : $(OBJPASDIR)/convutils.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/convutils.pp
-
-stdconvs$(PPUEXT) : $(OBJPASDIR)/stdconvs.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/stdconvs.pp
-
#
# Mac Pascal Model
@@ -241,16 +209,6 @@ macpas$(PPUEXT) : $(INC)/macpas.pp objpas$(PPUEXT) math$(PPUEXT)
# Other system-independent RTL Units
#
-video$(PPUEXT) : $(SYSTEMUNIT)$(PPUEXT) $(INC)/video.inc $(INC)/videoh.inc $(UNIXINC)/video.pp \
- baseunix$(PPUEXT) strings$(PPUEXT) terminfo$(PPUEXT) termio$(PPUEXT)
-
-keyboard$(PPUEXT) : $(SYSTEMUNIT)$(PPUEXT) $(INC)/keyboard.inc $(INC)/keybrdh.inc $(UNIXINC)/keyboard.pp \
- strings$(PPUEXT) terminfo$(PPUEXT) termio$(PPUEXT) baseunix$(PPUEXT) mouse$(PPUEXT)
-
-mouse$(PPUEXT) : $(UNIXINC)/mouse.pp $(SYSTEMUNIT)$(PPUEXT) baseunix$(PPUEXT) video$(PPUEXT)
-
-matrix$(PPUEXT) : $(INC)/matrix.pp $(SYSTEMUNIT)$(PPUEXT)
-
ifeq ($(ARCH),x86_64)
cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT) sysutils$(PPUEXT)
else
@@ -271,25 +229,19 @@ charset$(PPUEXT) : $(INC)/charset.pp objpas$(PPUEXT)
cpall$(PPUEXT): $(RTL)/charmaps/cpall.pas system$(PPUEXT) charset$(PPUEXT)
$(COMPILER) -Fu$(INC) -Fi$(RTL)/charmaps $(RTL)/charmaps/cpall.pas
-ucomplex$(PPUEXT) : $(INC)/ucomplex.pp math$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) math$(PPUEXT)
+fpwidestring$(PPUEXT): $(OBJPASDIR)/fpwidestring.pp character$(PPUEXT) unixcp$(PPUEXT)
+ $(COMPILER) $(OBJPASDIR)/fpwidestring.pp
#
# Other system-dependent RTL Units
#
-sockets$(PPUEXT) : sockets.pp $(INC)/textrec.inc $(INC)/filerec.inc \
- unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-
errors$(PPUEXT) : errors.pp strings$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
dynlibs$(PPUEXT) : $(INC)/dynlibs.pas $(UNIXINC)/dynlibs.inc dl$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-ipc$(PPUEXT) : ipc.pp unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-
termio$(PPUEXT) : termio.pp unixtype$(PPUEXT) baseunix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-terminfo$(PPUEXT) : terminfo.pp unix$(PPUEXT)
-
callspec$(PPUEXT) : $(INC)/callspec.pp $(SYSTEMUNIT)$(PPUEXT)
cmem$(PPUEXT) : $(INC)/cmem.pp $(SYSTEMUNIT)$(PPUEXT)
diff --git a/rtl/aix/termios.inc b/rtl/aix/termios.inc
index 1d27671308..7cb2d9aedc 100644
--- a/rtl/aix/termios.inc
+++ b/rtl/aix/termios.inc
@@ -193,7 +193,7 @@ const
TIOCSDTR = IOC_VOID or (ord('t') shl 8) or 121; { set data terminal ready }
TIOCCDTR = IOC_VOID or (ord('t') shl 8) or 120; { clear data terminal ready }
TIOCGPGRP = IOC_OUT or ((sizeof(cint) and IOCPARM_MASK) shl 16) or (ord('t') shl 8) or 119; { get process group }
- TIOCSPGRP = IOC_IN or ((sizeof(cint) and IOCPARM_MASK) shl 16) or (ord('t') shl 8) or 118; { set process group }
+ TIOCSPGRP = cint(IOC_IN or ((sizeof(cint) and IOCPARM_MASK) shl 16) or (ord('t') shl 8) or 118); { set process group }
// TIOCSLTC = IOC_IN or ((sizeof(struct ltchars) and IOCPARM_MASK) shl 16) or (ord('t') shl 8) or 117{ set local special chars }
// TIOCGLTC = IOC_OUT or ((sizeof(struct ltchars) and IOCPARM_MASK) shl 16) or (ord('t') shl 8) or 116{ get local special chars }
TIOCOUTQ = IOC_OUT or ((sizeof(cint) and IOCPARM_MASK) shl 16) or (ord('t') shl 8) or 115; { output queue size }
diff --git a/rtl/amiga/Makefile b/rtl/amiga/Makefile
index 5a06f459e1..92f323a4b9 100644
--- a/rtl/amiga/Makefile
+++ b/rtl/amiga/Makefile
@@ -1,8 +1,8 @@
#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-04-01 rev 27428]
#
default: all
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos
BSDs = freebsd netbsd openbsd darwin
UNIXs = linux $(BSDs) solaris qnx haiku aix
LIMIT83fs = go32v2 os2 emx watcom msdos
@@ -186,6 +186,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t
endif
override FPCOPT+=-Cp$(SUBARCH)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+ifeq ($(SUBARCH),)
+$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined)
+endif
+override FPCOPT+=-Cp$(SUBARCH)
+endif
ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
TARGETSUFFIX=$(OS_TARGET)
SOURCESUFFIX=$(OS_SOURCE)
@@ -335,448 +341,454 @@ endif
OBJPASDIR=$(RTL)/objpas
GRAPHDIR=$(INC)/graph
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo charset cpall getopts types rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-linux)
override TARGET_LOADERS+=prt0
@@ -988,6 +1000,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_LOADERS+=prt0
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_LOADERS+=prt0
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_LOADERS+=prt0
endif
@@ -1210,6 +1225,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
@@ -1433,6 +1451,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
endif
@@ -1655,6 +1676,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
endif
@@ -2448,17 +2472,23 @@ ifdef ACROSSCOMPILE
override FPCOPT+=$(CROSSOPT)
endif
override COMPILER:=$(strip $(FPC) $(FPCOPT))
-ifeq (,$(findstring -s ,$(COMPILER)))
+ifneq (,$(findstring -sh ,$(COMPILER)))
+UseEXECPPAS=1
+endif
+ifneq (,$(findstring -s ,$(COMPILER)))
+ifeq ($(FULL_SOURCE),$(FULL_TARGET))
+UseEXECPPAS=1
+endif
+endif
+ifneq ($(UseEXECPPAS),1)
EXECPPAS=
else
-ifeq ($(FULL_SOURCE),$(FULL_TARGET))
ifdef RUNBATCH
EXECPPAS:=@$(RUNBATCH) $(PPAS)
else
EXECPPAS:=@$(PPAS)
endif
endif
-endif
.PHONY: fpc_loaders
ifneq ($(TARGET_LOADERS),)
override ALLTARGET+=fpc_loaders
@@ -2872,9 +2902,6 @@ sysutils$(PPUEXT) : sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
classes$(PPUEXT) : classes.pp $(wildcard $(OBJPASDIR)/classes/*.inc) \
sysutils$(PPUEXT) typinfo$(PPUEXT) rtlconsts$(PPUEXT) types$(PPUEXT) fgl$(PPUEXT)
$(COMPILER) -Fi$(OBJPASDIR)/classes classes.pp
-strutils$(PPUEXT) : $(OBJPASDIR)/strutils.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/strutils.pp
typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT)
$(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp $(REDIR)
math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT)
diff --git a/rtl/amiga/Makefile.fpc b/rtl/amiga/Makefile.fpc
index 0d0b2bb1a5..ed58ad977a 100644
--- a/rtl/amiga/Makefile.fpc
+++ b/rtl/amiga/Makefile.fpc
@@ -9,11 +9,11 @@ main=rtl
loaders=prt0
units=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings \
dos heaptrc lineinfo ctypes \
- sysutils fgl classes strutils math typinfo \
+ sysutils fgl classes math typinfo \
charset cpall getopts \
types rtlconsts sysconst
implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 \
- cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+ cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
# \
# exec timer doslib utility hardware inputevent graphics layers \
# intuition aboxlib mui \
@@ -117,7 +117,6 @@ dos$(PPUEXT) : dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \
#objects$(PPUEXT) : $(INC)/objects.pp dos$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-#printer$(PPUEXT) : printer.pas $(INC)/textrec.inc $(SYSTEMUNIT)$(PPUEXT)
#graph$(PPUEXT) : graph.pp
@@ -133,10 +132,6 @@ classes$(PPUEXT) : classes.pp $(wildcard $(OBJPASDIR)/classes/*.inc) \
sysutils$(PPUEXT) typinfo$(PPUEXT) rtlconsts$(PPUEXT) types$(PPUEXT) fgl$(PPUEXT)
$(COMPILER) -Fi$(OBJPASDIR)/classes classes.pp
-strutils$(PPUEXT) : $(OBJPASDIR)/strutils.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/strutils.pp
-
typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT)
$(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp $(REDIR)
diff --git a/rtl/amiga/dos.pp b/rtl/amiga/dos.pp
index b83a2ecede..932a15417e 100644
--- a/rtl/amiga/dos.pp
+++ b/rtl/amiga/dos.pp
@@ -441,7 +441,7 @@ end;
procedure Exec(const Path: PathStr; const ComLine: ComStr);
var
- tmpPath: array[0..255] of char;
+ tmpPath: array[0..515] of char;
result : longint;
tmpLock: longint;
begin
@@ -881,17 +881,24 @@ var
s : string;
found : boolean;
temp : string[255];
+ tmpBat: string[31];
+ tmpList: string[31];
begin
found := true;
temp := '';
- assign(f,'ram:makepathstr');
+
+ tmpBat:='T:'+HexStr(FindTask(nil));
+ tmpList:=tmpBat+'_path.tmp';
+ tmpBat:=tmpBat+'_path.sh';
+
+ assign(f,tmpBat);
rewrite(f);
- writeln(f,'path >ram:temp.lst');
+ writeln(f,'path >'+tmpList);
close(f);
- exec('c:protect','ram:makepathstr sarwed quiet');
- exec('ram:makepathstr','');
- exec('c:delete','ram:makepathstr quiet');
- assign(f,'ram:temp.lst');
+ exec('C:Execute',tmpBat);
+ erase(f);
+
+ assign(f,tmpList);
reset(f);
{ skip the first line, garbage }
if not eof(f) then readln(f,s);
@@ -906,7 +913,8 @@ begin
end;
end;
close(f);
- exec('C:delete','ram:temp.lst quiet');
+ erase(f);
+
getpathstring := temp;
end;
diff --git a/rtl/amiga/sysdir.inc b/rtl/amiga/sysdir.inc
index afe85788c1..c0bb7a90c2 100644
--- a/rtl/amiga/sysdir.inc
+++ b/rtl/amiga/sysdir.inc
@@ -1,9 +1,8 @@
{
This file is part of the Free Pascal run time library.
- Copyright (c) 1999-2000 by Florian Klaempfl and Pavel Ozerski
- member of the Free Pascal development team.
+ Copyright (c) 2014 by Free Pascal development team
- FPC Pascal system unit for Amiga.
+ Low level directory functions
See the file COPYING.FPC, included in this distribution,
for details about the copyright.
@@ -76,6 +75,8 @@ begin
AOS_OrigDir:=tmpLock;
tmpLock:=0;
end;
+ end else begin
+ dosError2InOut(ERROR_DIR_NOT_FOUND);
end;
if tmpLock<>0 then Unlock(tmpLock);
diff --git a/rtl/amiga/sysheap.inc b/rtl/amiga/sysheap.inc
index d732d015b6..777bf8cc5a 100644
--- a/rtl/amiga/sysheap.inc
+++ b/rtl/amiga/sysheap.inc
@@ -30,7 +30,7 @@ begin
values[0]:=dword(result);
values[1]:=dword(size);
values[2]:=DWord(Sptr-StackBottom);
- RawDoFmt('FPC_MEM_DEBUG: $%lx:=SysOSAlloc(%ld), free stack: %ld bytes'+#10,@values,pointer(1),nil);
+ RawDoFmt('FPC_MEM_DEBUG: $%lx:=SysOSAlloc(%lu), free stack: %ld bytes'+#10,@values,pointer(1),nil);
{$ENDIF}
end;
@@ -46,6 +46,6 @@ begin
values[0]:=dword(p);
values[1]:=dword(size);
values[2]:=DWord(Sptr-StackBottom);
- RawDoFmt('FPC_MEM_DEBUG: SysOSFree($%lx,%ld), free stack: %ld bytes'+#10,@values,pointer(1),nil);
+ RawDoFmt('FPC_MEM_DEBUG: SysOSFree($%lx,%lu), free stack: %ld bytes'+#10,@values,pointer(1),nil);
{$ENDIF}
end;
diff --git a/rtl/amiga/sysos.inc b/rtl/amiga/sysos.inc
index 71f4f2f406..5f57e2f002 100644
--- a/rtl/amiga/sysos.inc
+++ b/rtl/amiga/sysos.inc
@@ -15,11 +15,6 @@
**********************************************************************}
-{ * Turn on AmigaOS4 mode on PowerPC * }
-{$IFDEF CPUPOWERPC}
- {$DEFINE AMIGAOS4}
-{$ENDIF}
-
{*****************************************************************************
AmigaOS structures
*****************************************************************************}
@@ -135,7 +130,7 @@ begin
delete(path,tmppos,2);
tmppos:=pos('./',path);
end;
- { convert wildstart to #? }
+ { convert wildstar to #? }
tmppos:=pos('*',path);
while tmppos<>0 do begin
delete(path,tmppos,1);
@@ -172,7 +167,7 @@ begin
delete(PathConv,tmppos,2);
tmppos:=pos('./',PathConv);
end;
- { convert wildstart to #? }
+ { convert wildstar to #? }
tmppos:=pos('*',PathConv);
while tmppos<>0 do begin
delete(PathConv,tmppos,1);
diff --git a/rtl/amiga/system.pp b/rtl/amiga/system.pp
index 07e6fcb87d..5f7f3e8412 100644
--- a/rtl/amiga/system.pp
+++ b/rtl/amiga/system.pp
@@ -41,7 +41,7 @@ const
AllowDriveSeparators : set of char = [':'];
maxExitCode = 255;
MaxPathLen = 256;
- AllFilesMask = '*';
+ AllFilesMask = '#?';
const
UnusedHandle : LongInt = -1;
@@ -58,13 +58,18 @@ const
BreakOn : Boolean = True;
-
+{ FIX ME: remove the kludge required by amunits package, which needs a huge rework }
var
AOS_ExecBase : Pointer; external name '_ExecBase';
- AOS_DOSBase : Pointer;
- AOS_UtilityBase: Pointer;
+ _ExecBase: Pointer; external name '_ExecBase'; { amunits compatibility kludge }
+ AOS_DOSBase : Pointer; public name '_DOSBase'; { the "public" part is amunits compatibility kludge }
+ _DOSBase: Pointer; external name '_DOSBase'; { amunits compatibility kludge }
+ AOS_UtilityBase: Pointer; public name '_UtilityBase'; { the "public" part is amunits compatibility kludge }
+ _UtilityBase: Pointer; external name '_UtilityBase'; { amunits compatibility kludge }
+ AOS_IntuitionBase: Pointer; public name '_IntuitionBase'; { amunits compatibility kludge }
+ _IntuitionBase: Pointer; external name '_IntuitionBase'; { amunits compatibility kludge }
-{$IFDEF CPUPOWERPC}
+{$IFDEF AMIGAOS4}
{$WARNING iExec, iDOS and iUtility should be typed pointer later}
var
IExec : Pointer; external name '_IExec';
@@ -74,7 +79,8 @@ var
AOS_heapPool : Pointer; { pointer for the OS pool for growing the heap }
AOS_origDir : LongInt; { original directory on startup }
- AOS_wbMsg : Pointer;
+ AOS_wbMsg : Pointer; public name '_WBenchMsg'; { the "public" part is amunits compatibility kludge }
+ _WBenchMsg : Pointer; external name '_WBenchMsg'; { amunits compatibility kludge }
AOS_ConName : PChar ='CON:10/30/620/100/FPC Console Output/AUTO/CLOSE/WAIT';
AOS_ConHandle: LongInt;
@@ -143,6 +149,7 @@ begin
if iUtility<>nil then DropInterface(iUtility);
{$ENDIF}
+ if AOS_IntuitionBase<>nil then CloseLibrary(AOS_IntuitionBase); { amunits kludge }
if AOS_UtilityBase<>nil then CloseLibrary(AOS_UtilityBase);
if AOS_DOSBase<>nil then CloseLibrary(AOS_DOSBase);
if AOS_heapPool<>nil then DeletePool(AOS_heapPool);
@@ -317,10 +324,12 @@ begin
AOS_wbMsg:=GetMsg(@self^.pr_MsgPort);
end;
- AOS_DOSBase:=OpenLibrary('dos.library',50);
+ AOS_DOSBase:=OpenLibrary('dos.library',37);
if AOS_DOSBase=nil then Halt(1);
- AOS_UtilityBase:=OpenLibrary('utility.library',50);
+ AOS_UtilityBase:=OpenLibrary('utility.library',37);
if AOS_UtilityBase=nil then Halt(1);
+ AOS_IntuitionBase:=OpenLibrary('intuition.library',37); { amunits support kludge }
+ if AOS_IntuitionBase=nil then Halt(1);
{$IFDEF AMIGAOS4}
{ Open main interfaces on OS4 }
diff --git a/rtl/amiga/sysutils.pp b/rtl/amiga/sysutils.pp
index 0118e8a4ea..fdde4b67f2 100644
--- a/rtl/amiga/sysutils.pp
+++ b/rtl/amiga/sysutils.pp
@@ -25,6 +25,7 @@ interface
{ force ansistrings }
{$H+}
+{$DEFINE OS_FILESETDATEBYNAME}
{$DEFINE HAS_SLEEP}
{$DEFINE HAS_OSERROR}
@@ -63,7 +64,7 @@ uses dos,sysconst;
{ * Followings are implemented in the system unit! * }
function PathConv(path: shortstring): shortstring; external name 'PATHCONV';
-function PathConv(path: RawByteString): shortstring; external name 'PATHCONVRBS';
+function PathConv(path: RawByteString): RawByteString; external name 'PATHCONVRBS';
procedure AddToList(var l: Pointer; h: LongInt); external name 'ADDTOLIST';
function RemoveFromList(var l: Pointer; h: LongInt): boolean; external name 'REMOVEFROMLIST';
function CheckInList(var l: Pointer; h: LongInt): pointer; external name 'CHECKINLIST';
@@ -72,17 +73,6 @@ var
MOS_fileList: Pointer; external name 'AOS_FILELIST';
-function dosLock(const name: String;
- accessmode: Longint) : LongInt;
-var
- buffer: array[0..255] of Char;
-begin
- move(name[1],buffer,length(name));
- buffer[length(name)]:=#0;
- dosLock:=Lock(buffer,accessmode);
-end;
-
-
function AmigaFileDateToDateTime(aDate: TDateStamp; out success: boolean): TDateTime;
var
tmpSecs: DWord;
@@ -94,7 +84,7 @@ begin
tmpSecs:=(ds_Days * (24 * 60 * 60)) + (ds_Minute * 60) + (ds_Tick div TICKS_PER_SECOND);
Amiga2Date(tmpSecs,@clockData);
-{$WARNING TODO: implement msec values, if possible}
+{$HINT TODO: implement msec values, if possible}
with clockData do begin
success:=TryEncodeDate(year,month,mday,tmpDate) and
TryEncodeTime(hour,min,sec,0,tmpTime);
@@ -103,6 +93,26 @@ begin
result:=ComposeDateTime(tmpDate,tmpTime);
end;
+function DateTimeToAmigaDateStamp(dateTime: TDateTime): TDateStamp;
+var
+ tmpSecs: DWord;
+ clockData: TClockData;
+ tmpMSec: Word;
+begin
+{$HINT TODO: implement msec values, if possible}
+ with clockData do begin
+ DecodeDate(dateTime,year,month,mday);
+ DecodeTime(dateTime,hour,min,sec,tmpMSec);
+ end;
+
+ tmpSecs:=Date2Amiga(@clockData);
+
+ with result do begin
+ ds_Days:= tmpSecs div (24 * 60 * 60);
+ ds_Minute:= (tmpSecs div 60) mod ds_Days;
+ ds_Tick:= (((tmpSecs mod 60) mod ds_Minute) mod ds_Days) * TICKS_PER_SECOND;
+ end;
+end;
{****************************************************************************
@@ -131,15 +141,58 @@ end;
function FileGetDate(Handle: LongInt) : LongInt;
+var
+ tmpFIB : PFileInfoBlock;
+ tmpDateTime: TDateTime;
+ validFile: boolean;
begin
- {$WARNING filegetdate call is dummy}
+ validFile:=false;
+
+ if (Handle <> 0) then begin
+ new(tmpFIB);
+ if ExamineFH(Handle,tmpFIB) then begin
+ tmpDateTime:=AmigaFileDateToDateTime(tmpFIB^.fib_Date,validFile);
+ end;
+ dispose(tmpFIB);
+ end;
+
+ if validFile then
+ result:=DateTimeToFileDate(tmpDateTime)
+ else
+ result:=-1;
end;
function FileSetDate(Handle, Age: LongInt) : LongInt;
+var
+ tmpDateStamp: TDateStamp;
+ tmpName: array[0..255] of char;
+begin
+ result:=0;
+ if (Handle <> 0) then begin
+ if (NameFromFH(Handle, @tmpName, 256) = dosTrue) then begin
+ tmpDateStamp:=DateTimeToAmigaDateStamp(FileDateToDateTime(Age));
+ if not SetFileDate(@tmpName,@tmpDateStamp) then begin
+ IoErr(); // dump the error code for now (TODO)
+ result:=-1;
+ end;
+ end;
+ end;
+end;
+
+
+function FileSetDate(const FileName: RawByteString; Age: LongInt) : LongInt;
+var
+ tmpDateStamp: TDateStamp;
+ SystemFileName: RawByteString;
begin
- // Impossible under unix from FileHandle !!
- FileSetDate:=-1;
+ result:=0;
+ SystemFileName:=PathConv(ToSingleByteFileSystemEncodedFileName(FileName));
+ tmpDateStamp:=DateTimeToAmigaDateStamp(FileDateToDateTime(Age));
+ if not SetFileDate(PChar(SystemFileName),@tmpDateStamp) then begin
+ IoErr(); // dump the error code for now (TODO)
+ result:=-1;
+ end;
end;
@@ -148,16 +201,24 @@ var
SystemFileName: RawByteString;
dosResult: LongInt;
begin
- SystemFileName:=PathConv(ToSingleByteFileSystemEncodedFileName(FileName));
- dosResult:=Open(PChar(FileName),MODE_NEWFILE);
- if dosResult=0 then
- dosResult:=-1
- else
- AddToList(MOS_fileList,dosResult);
+ dosResult:=-1;
- FileCreate:=dosResult;
-end;
+ { Open file in MODDE_READWRITE, then truncate it by hand rather than
+ opening it in MODE_NEWFILE, because that returns an exclusive lock
+ so some operations might fail with it (KB) }
+ SystemFileName:=PathConv(ToSingleByteFileSystemEncodedFileName(FileName));
+ dosResult:=Open(PChar(SystemFileName),MODE_READWRITE);
+ if dosResult = 0 then exit;
+
+ if SetFileSize(dosResult, 0, OFFSET_BEGINNING) = 0 then
+ AddToList(MOS_fileList,dosResult)
+ else begin
+ dosClose(dosResult);
+ dosResult:=-1;
+ end;
+ FileCreate:=dosResult;
+end;
function FileCreate(const FileName: RawByteString; Rights: integer): LongInt;
begin
@@ -165,14 +226,14 @@ begin
FileCreate:=FileCreate(FileName);
end;
-function FileCreate(const FileName: RawByteString; ShareMode: integer; Rights : Integer): LongInt;
+function FileCreate(const FileName: RawByteString; ShareMode: integer; Rights : integer): LongInt;
begin
{$WARNING FIX ME! To do: FileCreate Access Modes}
FileCreate:=FileCreate(FileName);
end;
-function FileRead(Handle: LongInt; Out Buffer; Count: LongInt): LongInt;
+function FileRead(Handle: LongInt; out Buffer; Count: LongInt): LongInt;
begin
FileRead:=-1;
if (Count<=0) or (Handle<=0) then exit;
@@ -222,13 +283,15 @@ begin
end;
-function FileTruncate(Handle: longint; Size: Int64): Boolean;
+function FileTruncate(Handle: THandle; Size: Int64): Boolean;
var
dosResult: LongInt;
begin
FileTruncate:=False;
+
if Size > high (longint) then exit;
{$WARNING Possible support for 64-bit FS to be checked!}
+
if (Handle<=0) then exit;
dosResult:=SetFileSize(Handle, Size, OFFSET_BEGINNING);
@@ -243,18 +306,16 @@ var
SystemFileName: RawByteString;
begin
SystemFileName:=PathConv(ToSingleByteFileSystemEncodedFileName(FileName));
-
DeleteFile:=dosDeleteFile(PChar(SystemFileName));
end;
-function RenameFile(const OldName, NewName: string): Boolean;
+function RenameFile(const OldName, NewName: RawByteString): Boolean;
var
OldSystemFileName, NewSystemFileName: RawByteString;
begin
OldSystemFileName:=PathConv(ToSingleByteFileSystemEncodedFileName(OldName));
NewSystemFileName:=PathConv(ToSingleByteFileSystemEncodedFileName(NewName));
-
RenameFile:=dosRename(PChar(OldSystemFileName), PChar(NewSystemFileName));
end;
@@ -264,17 +325,16 @@ end;
function FileAge (const FileName : RawByteString): Longint;
var
- tmpName: RawByteString;
tmpLock: Longint;
tmpFIB : PFileInfoBlock;
tmpDateTime: TDateTime;
validFile: boolean;
-
+ SystemFileName: RawByteString;
begin
validFile:=false;
- tmpName := PathConv(ToSingleByteFileSystemEncodedFileName(FileName));
- tmpLock := dosLock(tmpName, SHARED_LOCK);
-
+ SystemFileName := PathConv(ToSingleByteFileSystemEncodedFileName(FileName));
+ tmpLock := Lock(PChar(SystemFileName), SHARED_LOCK);
+
if (tmpLock <> 0) then begin
new(tmpFIB);
if Examine(tmpLock,tmpFIB) then begin
@@ -298,8 +358,8 @@ var
SystemFileName: RawByteString;
begin
result:=false;
- SystemFileName:=PathConv(ToSingleByteFileSystemEncodedFileName(FileName));
- tmpLock := dosLock(PChar(SystemFileName), SHARED_LOCK);
+ SystemFileName := PathConv(ToSingleByteFileSystemEncodedFileName(FileName));
+ tmpLock := Lock(PChar(SystemFileName), SHARED_LOCK);
if (tmpLock <> 0) then begin
new(tmpFIB);
@@ -319,7 +379,8 @@ var
validDate: boolean;
begin
result:=-1; { We emulate Linux/Unix behaviour, and return -1 on errors. }
- tmpStr:=PathConv(ToSingleByteEncodedFileName(path));
+
+ tmpStr:=PathConv(ToSingleByteFileSystemEncodedFileName(Path));
{ $1e = faHidden or faSysFile or faVolumeID or faDirectory }
Rslt.ExcludeAttr := (not Attr) and ($1e);
@@ -470,18 +531,17 @@ Begin
DiskSize := dos.DiskSize(Drive);
End;
-function DirectoryExists(const Directory: RawBytetring): Boolean;
+function DirectoryExists(const Directory: RawByteString): Boolean;
var
- tmpStr : String;
tmpLock: LongInt;
FIB : PFileInfoBlock;
- SystemFileName: RawByteString;
+ SystemDirName: RawByteString;
begin
result:=false;
if (Directory='') or (InOutRes<>0) then exit;
- SystemFileName:=PathConv(ToSingleByteFileSystemEncodedFileName(FileName));
- tmpLock:=dosLock(PChar(SystemFileName),SHARED_LOCK);
+ SystemDirName:=PathConv(ToSingleByteFileSystemEncodedFileName(Directory));
+ tmpLock:=Lock(PChar(SystemDirName),SHARED_LOCK);
if tmpLock=0 then exit;
FIB:=nil; new(FIB);
@@ -496,16 +556,6 @@ end;
{****************************************************************************
- Misc Functions
-****************************************************************************}
-
-procedure SysBeep;
-begin
-// TODO
-end;
-
-
-{****************************************************************************
Locale Functions
****************************************************************************}
@@ -562,11 +612,54 @@ end;
OS utility functions
****************************************************************************}
-Function GetEnvironmentVariable(Const EnvVar : String) : String;
+var
+ StrOfPaths: String;
+function GetPathString: String;
+var
+ f : text;
+ s : string;
+ tmpBat: string;
+ tmpList: string;
+begin
+ s := '';
+ result := '';
+
+ tmpBat:='T:'+HexStr(FindTask(nil));
+ tmpList:=tmpBat+'_path.tmp';
+ tmpBat:=tmpBat+'_path.sh';
+
+ assign(f,tmpBat);
+ rewrite(f);
+ writeln(f,'path >'+tmpList);
+ close(f);
+ exec('C:Execute',tmpBat);
+ erase(f);
+
+ assign(f,tmpList);
+ reset(f);
+ { skip the first line, garbage }
+ if not eof(f) then readln(f,s);
+ while not eof(f) do begin
+ readln(f,s);
+ if result = '' then
+ result := s
+ else
+ result := result + ';' + s;
+ end;
+ close(f);
+ erase(f);
+end;
+
+Function GetEnvironmentVariable(Const EnvVar : String) : String;
begin
- Result:=Dos.Getenv(shortstring(EnvVar));
+ if UpCase(envvar) = 'PATH' then begin
+ if StrOfpaths = '' then StrOfPaths := GetPathString;
+ Result:=StrOfPaths;
+ end else
+ Result:=Dos.Getenv(shortstring(EnvVar));
end;
+
Function GetEnvironmentVariableCount : Integer;
begin
@@ -584,18 +677,43 @@ end;
function ExecuteProcess (const Path: AnsiString; const ComLine: AnsiString;Flags:TExecuteFlags=[]):
integer;
var
+ tmpPath: AnsiString;
+ convPath: AnsiString;
CommandLine: AnsiString;
- E: EOSError;
+ tmpLock: longint;
+ E: EOSError;
begin
- Dos.Exec (Path, ComLine);
+ DosError:= 0;
+
+ convPath:=PathConv(Path);
+ tmpPath:=convPath+' '+ComLine;
+
+ { Here we must first check if the command we wish to execute }
+ { actually exists, because this is NOT handled by the }
+ { _SystemTagList call (program will abort!!) }
+
+ { Try to open with shared lock }
+ tmpLock:=Lock(PChar(convPath),SHARED_LOCK);
+ if tmpLock<>0 then
+ begin
+ { File exists - therefore unlock it }
+ Unlock(tmpLock);
+ result:=SystemTagList(PChar(tmpPath),nil);
+ { on return of -1 the shell could not be executed }
+ { probably because there was not enough memory }
+ if result = -1 then
+ DosError:=8;
+ end
+ else
+ DosError:=3;
+
if DosError <> 0 then begin
-
if ComLine = '' then
CommandLine := Path
else
CommandLine := Path + ' ' + ComLine;
-
+
E := EOSError.CreateFmt (SExecuteProcessFailed, [CommandLine, DosError]);
E.ErrorCode := DosError;
raise E;
@@ -632,6 +750,10 @@ end;
Initialization
InitExceptions;
InitInternational; { Initialize internationalization settings }
+ OnBeep:=Nil; { No SysBeep() on Amiga, for now. Figure out if we want
+ to use intuition.library/DisplayBeep() for this (KB) }
+ StrOfPaths:='';
+
Finalization
DoneExceptions;
end.
diff --git a/rtl/android/Makefile b/rtl/android/Makefile
index 9117d1889c..a99d3ff06b 100644
--- a/rtl/android/Makefile
+++ b/rtl/android/Makefile
@@ -1,8 +1,8 @@
#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-04-01 rev 27428]
#
default: all
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos
BSDs = freebsd netbsd openbsd darwin
UNIXs = linux $(BSDs) solaris qnx haiku aix
LIMIT83fs = go32v2 os2 emx watcom msdos
@@ -185,6 +185,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t
endif
override FPCOPT+=-Cp$(SUBARCH)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+ifeq ($(SUBARCH),)
+$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined)
+endif
+override FPCOPT+=-Cp$(SUBARCH)
+endif
ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
TARGETSUFFIX=$(OS_TARGET)
SOURCESUFFIX=$(OS_SOURCE)
@@ -342,448 +348,454 @@ override FPCOPT+=-Ur
endif
OBJPASDIR=$(RTL)/objpas
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer linuxvcs sysutils typinfo math charset cpall character getopts errors serial terminfo dl dynlibs types sysconst cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem linuxvcs sysutils typinfo math charset cpall character getopts errors dl dynlibs types sysconst cthreads classes fgl rtlconsts dos cwstring fpcylix unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-linux)
override TARGET_LOADERS+=$(LOADERS)
@@ -995,6 +1007,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_LOADERS+=$(LOADERS)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_LOADERS+=$(LOADERS)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_LOADERS+=$(LOADERS)
endif
@@ -1008,226 +1023,229 @@ ifeq ($(FULL_TARGET),i8086-msdos)
override TARGET_LOADERS+=$(LOADERS)
endif
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_RSTS+=math typinfo sysconst rtlconsts strutils
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
ifeq ($(FULL_TARGET),i386-linux)
override CLEAN_UNITS+=syslinux linux
@@ -1439,6 +1457,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override CLEAN_UNITS+=syslinux linux
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override CLEAN_UNITS+=syslinux linux
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override CLEAN_UNITS+=syslinux linux
endif
@@ -1662,6 +1683,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(ARCH) $(LINUXINC) $(OSPROCINC)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(ARCH) $(LINUXINC) $(OSPROCINC)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(ARCH) $(LINUXINC) $(OSPROCINC)
endif
@@ -1884,6 +1908,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(ARCH) $(COMMON) $(LINUXINC)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(ARCH) $(COMMON) $(LINUXINC)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(ARCH) $(COMMON) $(LINUXINC)
endif
@@ -2106,6 +2133,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_TARGETDIR+=.
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_TARGETDIR+=.
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_TARGETDIR+=.
endif
@@ -2118,7 +2148,7 @@ endif
ifeq ($(FULL_TARGET),i8086-msdos)
override COMPILER_TARGETDIR+=.
endif
-override SHARED_LIBUNITS=$(SYSTEMUNIT) objpas strings dos unix baseunix unixtype unixutil sysutils typinfo math $(CPU_UNITS) getopts errors sockets varutils classes fgl variants sysconst rtlconsts
+override SHARED_LIBUNITS=$(SYSTEMUNIT) objpas strings dos unix baseunix unixtype unixutil sysutils typinfo math $(CPU_UNITS) getopts errors sockets classes fgl sysconst rtlconsts
ifdef REQUIRE_UNITSDIR
override UNITSDIR+=$(REQUIRE_UNITSDIR)
endif
@@ -2900,17 +2930,23 @@ ifdef ACROSSCOMPILE
override FPCOPT+=$(CROSSOPT)
endif
override COMPILER:=$(strip $(FPC) $(FPCOPT))
-ifeq (,$(findstring -s ,$(COMPILER)))
+ifneq (,$(findstring -sh ,$(COMPILER)))
+UseEXECPPAS=1
+endif
+ifneq (,$(findstring -s ,$(COMPILER)))
+ifeq ($(FULL_SOURCE),$(FULL_TARGET))
+UseEXECPPAS=1
+endif
+endif
+ifneq ($(UseEXECPPAS),1)
EXECPPAS=
else
-ifeq ($(FULL_SOURCE),$(FULL_TARGET))
ifdef RUNBATCH
EXECPPAS:=@$(RUNBATCH) $(PPAS)
else
EXECPPAS:=@$(PPAS)
endif
endif
-endif
.PHONY: fpc_loaders
ifneq ($(TARGET_LOADERS),)
override ALLTARGET+=fpc_loaders
@@ -3322,8 +3358,6 @@ uuchar$(PPUEXT): $(SYSTEMUNIT)$(PPUEXT) $(INC)/uuchar.pp
$(COMPILER) $(INC)/uuchar.pp
objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/objpas.pp
-dateutils$(PPUEXT): $(OBJPASDIR)/dateutils.pp $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/dateutils.pp
strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc\
$(PROCINC)/strings.inc $(PROCINC)/stringss.inc\
$(SYSTEMUNIT)$(PPUEXT)
@@ -3354,12 +3388,6 @@ unixcp$(PPUEXT) : $(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) ba
dos$(PPUEXT) : $(UNIXINC)/dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \
unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(UNIXINC)/dos.pp
-crt$(PPUEXT) : $(UNIXINC)/crt.pp $(INC)/textrec.inc unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) $(UNIXINC)/crt.pp
-objects$(PPUEXT) : $(INC)/objects.pp $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) $(INC)/objects.pp
-printer$(PPUEXT) : $(UNIXINC)/printer.pp $(INC)/textrec.inc unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) $(UNIXINC)/printer.pp
sysutils$(PPUEXT) : $(UNIXINC)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
objpas$(PPUEXT) unix$(PPUEXT) errors$(PPUEXT) sysconst$(PPUEXT)
$(COMPILER) -Fi$(OBJPASDIR)/sysutils $(UNIXINC)/sysutils.pp
@@ -3372,15 +3400,6 @@ character$(PPUEXT): $(OBJPASDIR)/character.pas objpas$(PPUEXT) sysutils$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/character.pas
math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/math.pp
-gettext$(PPUEXT): $(OBJPASDIR)/gettext.pp objpas$(PPUEXT) sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/gettext.pp
-varutils$(PPUEXT) : $(OBJPASDIR)/cvarutil.inc $(OBJPASDIR)/varutils.inc \
- $(OBJPASDIR)/varutilh.inc $(UNIXINC)/varutils.pp sysutils$(PPUEXT)
- $(COMPILER) -I$(OBJPASDIR) $(UNIXINC)/varutils.pp
-variants$(PPUEXT) : $(INC)/variants.pp sysutils$(PPUEXT) sysconst$(PPUEXT) varutils$(PPUEXT) typinfo$(PPUEXT) rtlconsts$(PPUEXT)
- $(COMPILER) -Fi$(INC) $(INC)/variants.pp
-fmtbcd$(PPUEXT) : $(OBJPASDIR)/fmtbcd.pp objpas$(PPUEXT) sysutils$(PPUEXT) variants$(PPUEXT) classes$(PPUEXT) system$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/fmtbcd.pp
fgl$(PPUEXT) : $(OBJPASDIR)/fgl.pp objpas$(PPUEXT) types$(PPUEXT) system$(PPUEXT) sysutils$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/fgl.pp
types$(PPUEXT) : $(OBJPASDIR)/types.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
@@ -3389,15 +3408,6 @@ sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUE
$(COMPILER) $(OBJPASDIR)/sysconst.pp
rtlconsts$(PPUEXT) : $(OBJPASDIR)/rtlconsts.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/rtlconsts.pp
-strutils$(PPUEXT) : $(OBJPASDIR)/strutils.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/strutils.pp
-convutils$(PPUEXT) : $(OBJPASDIR)/convutils.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/convutils.pp
-stdconvs$(PPUEXT) : $(OBJPASDIR)/stdconvs.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/stdconvs.pp
macpas$(PPUEXT) : $(INC)/macpas.pp objpas$(PPUEXT) math$(PPUEXT)
$(COMPILER) $(INC)/macpas.pp $(REDIR)
ifeq ($(ARCH),x86_64)
@@ -3420,23 +3430,14 @@ charset$(PPUEXT) : $(INC)/charset.pp $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(INC)/charset.pp
cpall$(PPUEXT): $(RTL)/charmaps/cpall.pas system$(PPUEXT) charset$(PPUEXT)
$(COMPILER) -Fu$(INC) -Fi$(RTL)/charmaps $(RTL)/charmaps/cpall.pas
-matrix$(PPUEXT) : $(INC)/matrix.pp $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) $(INC)/matrix.pp
-ucomplex$(PPUEXT) : $(INC)/ucomplex.pp math$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) $(INC)/ucomplex.pp
iso7185$(PPUEXT) : $(INC)/iso7185.pp $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(INC)/iso7185.pp
fpintres$(PPUEXT) : $(INC)/fpintres.pp $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(INC)/fpintres.pp
fpwidestring$(PPUEXT): $(OBJPASDIR)/fpwidestring.pp character$(PPUEXT) unixcp$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/fpwidestring.pp
-sockets$(PPUEXT) : $(UNIXINC)/sockets.pp $(INC)/textrec.inc $(INC)/filerec.inc \
- $(LINUXINC)/unixsock.inc unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) $(UNIXINC)/sockets.pp
errors$(PPUEXT) : $(UNIXINC)/errors.pp strings$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(UNIXINC)/errors.pp
-terminfo$(PPUEXT) : $(UNIXINC)/terminfo.pp unix$(PPUEXT)
- $(COMPILER) $(UNIXINC)/terminfo.pp
callspec$(PPUEXT) : $(INC)/callspec.pp $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(INC)/callspec.pp
cmem$(PPUEXT) : $(INC)/cmem.pp $(SYSTEMUNIT)$(PPUEXT)
@@ -3447,8 +3448,6 @@ cwstring$(PPUEXT) : cwstring.pp $(SYSTEMUNIT)$(PPUEXT) dynlibs$(PPUEXT)
$(COMPILER) cwstring.pp
ctypes$(PPUEXT) : $(INC)/ctypes.pp $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(INC)/ctypes.pp
-clocale$(PPUEXT) : clocale.pp $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) clocale.pp
fpcylix$(PPUEXT) : $(LINUXINC)/fpcylix.pp cthreads$(PPUEXT) cwstring$(PPUEXT) dynlibs$(PPUEXT) objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(LINUXINC)/fpcylix.pp
termio$(PPUEXT) : $(LINUXINC)/termio.pp $(SYSTEMUNIT)$(PPUEXT) baseunix$(PPUEXT)
@@ -3457,11 +3456,3 @@ linux$(PPUEXT) : $(LINUXINC)/linux.pp $(SYSTEMUNIT)$(PPUEXT) baseunix$(PPUEXT) u
$(COMPILER) $(LINUXINC)/linux.pp
linuxvcs$(PPUEXT) : $(LINUXINC)/linuxvcs.pp $(SYSTEMUNIT)$(PPUEXT) baseunix$(PPUEXT) strings$(PPUEXT)
$(COMPILER) $(LINUXINC)/linuxvcs.pp
-serial$(PPUEXT) : $(UNIXINC)/serial.pp $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) $(UNIXINC)/serial.pp
-video$(PPUEXT) : $(UNIXINC)/video.pp baseunix$(PPUEXT) termio$(PPUEXT) strings$(PPUEXT) linuxvcs$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) $(UNIXINC)/video.pp
-mouse$(PPUEXT) : $(UNIXINC)/mouse.pp baseunix$(PPUEXT) video$(PPUEXT) gpm$(PPUEXT) linuxvcs$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) $(UNIXINC)/mouse.pp
-keyboard$(PPUEXT) : $(UNIXINC)/keyboard.pp baseunix$(PPUEXT) mouse$(PPUEXT) termio$(PPUEXT) linuxvcs$(PPUEXT) strings$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) $(UNIXINC)/keyboard.pp
diff --git a/rtl/android/Makefile.fpc b/rtl/android/Makefile.fpc
index ceefe293ae..86ca4bca32 100644
--- a/rtl/android/Makefile.fpc
+++ b/rtl/android/Makefile.fpc
@@ -9,15 +9,15 @@ main=rtl
loaders=$(LOADERS)
units=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) \
uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil \
- fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem printer \
+ fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem \
linuxvcs sysutils typinfo math charset cpall character \
- getopts errors serial terminfo dl dynlibs \
+ getopts errors dl dynlibs \
types sysconst cthreads classes fgl \
- strutils rtlconsts dos cwstring fpcylix clocale unixcp fpwidestring
+ rtlconsts dos cwstring fpcylix unixcp fpwidestring
implicitunits=exeinfo \
cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 \
- cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
-rsts=math typinfo sysconst rtlconsts strutils
+ cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+rsts=math typinfo sysconst rtlconsts
[require]
nortl=y
@@ -42,8 +42,8 @@ libunits=$(SYSTEMUNIT) objpas strings dos \
unix baseunix unixtype unixutil \
sysutils typinfo math \
$(CPU_UNITS) getopts \
- errors sockets varutils \
- classes fgl variants sysconst rtlconsts \
+ errors sockets \
+ classes fgl sysconst rtlconsts \
[prerules]
RTL=..
@@ -126,9 +126,6 @@ uuchar$(PPUEXT): $(SYSTEMUNIT)$(PPUEXT) $(INC)/uuchar.pp
objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/objpas.pp
-dateutils$(PPUEXT): $(OBJPASDIR)/dateutils.pp $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/dateutils.pp
-
strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc\
$(PROCINC)/strings.inc $(PROCINC)/stringss.inc\
$(SYSTEMUNIT)$(PPUEXT)
@@ -178,15 +175,6 @@ dos$(PPUEXT) : $(UNIXINC)/dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(
unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(UNIXINC)/dos.pp
-crt$(PPUEXT) : $(UNIXINC)/crt.pp $(INC)/textrec.inc unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) $(UNIXINC)/crt.pp
-
-objects$(PPUEXT) : $(INC)/objects.pp $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) $(INC)/objects.pp
-
-printer$(PPUEXT) : $(UNIXINC)/printer.pp $(INC)/textrec.inc unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) $(UNIXINC)/printer.pp
-
#
# Delphi Compatible Units
#
@@ -208,19 +196,6 @@ character$(PPUEXT): $(OBJPASDIR)/character.pas objpas$(PPUEXT) sysutils$(PPUEXT)
math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/math.pp
-gettext$(PPUEXT): $(OBJPASDIR)/gettext.pp objpas$(PPUEXT) sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/gettext.pp
-
-varutils$(PPUEXT) : $(OBJPASDIR)/cvarutil.inc $(OBJPASDIR)/varutils.inc \
- $(OBJPASDIR)/varutilh.inc $(UNIXINC)/varutils.pp sysutils$(PPUEXT)
- $(COMPILER) -I$(OBJPASDIR) $(UNIXINC)/varutils.pp
-
-variants$(PPUEXT) : $(INC)/variants.pp sysutils$(PPUEXT) sysconst$(PPUEXT) varutils$(PPUEXT) typinfo$(PPUEXT) rtlconsts$(PPUEXT)
- $(COMPILER) -Fi$(INC) $(INC)/variants.pp
-
-fmtbcd$(PPUEXT) : $(OBJPASDIR)/fmtbcd.pp objpas$(PPUEXT) sysutils$(PPUEXT) variants$(PPUEXT) classes$(PPUEXT) system$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/fmtbcd.pp
-
fgl$(PPUEXT) : $(OBJPASDIR)/fgl.pp objpas$(PPUEXT) types$(PPUEXT) system$(PPUEXT) sysutils$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/fgl.pp
@@ -233,18 +208,6 @@ sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUE
rtlconsts$(PPUEXT) : $(OBJPASDIR)/rtlconsts.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/rtlconsts.pp
-strutils$(PPUEXT) : $(OBJPASDIR)/strutils.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/strutils.pp
-
-convutils$(PPUEXT) : $(OBJPASDIR)/convutils.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/convutils.pp
-
-stdconvs$(PPUEXT) : $(OBJPASDIR)/stdconvs.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/stdconvs.pp
-
#
# Mac Pascal Model
#
@@ -284,12 +247,6 @@ charset$(PPUEXT) : $(INC)/charset.pp $(SYSTEMUNIT)$(PPUEXT)
cpall$(PPUEXT): $(RTL)/charmaps/cpall.pas system$(PPUEXT) charset$(PPUEXT)
$(COMPILER) -Fu$(INC) -Fi$(RTL)/charmaps $(RTL)/charmaps/cpall.pas
-matrix$(PPUEXT) : $(INC)/matrix.pp $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) $(INC)/matrix.pp
-
-ucomplex$(PPUEXT) : $(INC)/ucomplex.pp math$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) $(INC)/ucomplex.pp
-
iso7185$(PPUEXT) : $(INC)/iso7185.pp $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(INC)/iso7185.pp
@@ -302,16 +259,9 @@ fpwidestring$(PPUEXT): $(OBJPASDIR)/fpwidestring.pp character$(PPUEXT) unixcp$(P
# Other $(SYSTEMUNIT)-dependent RTL Units
#
-sockets$(PPUEXT) : $(UNIXINC)/sockets.pp $(INC)/textrec.inc $(INC)/filerec.inc \
- $(LINUXINC)/unixsock.inc unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) $(UNIXINC)/sockets.pp
-
errors$(PPUEXT) : $(UNIXINC)/errors.pp strings$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(UNIXINC)/errors.pp
-terminfo$(PPUEXT) : $(UNIXINC)/terminfo.pp unix$(PPUEXT)
- $(COMPILER) $(UNIXINC)/terminfo.pp
-
callspec$(PPUEXT) : $(INC)/callspec.pp $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(INC)/callspec.pp
@@ -327,9 +277,6 @@ cwstring$(PPUEXT) : cwstring.pp $(SYSTEMUNIT)$(PPUEXT) dynlibs$(PPUEXT)
ctypes$(PPUEXT) : $(INC)/ctypes.pp $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(INC)/ctypes.pp
-clocale$(PPUEXT) : clocale.pp $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) clocale.pp
-
fpcylix$(PPUEXT) : $(LINUXINC)/fpcylix.pp cthreads$(PPUEXT) cwstring$(PPUEXT) dynlibs$(PPUEXT) objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(LINUXINC)/fpcylix.pp
@@ -342,14 +289,3 @@ linux$(PPUEXT) : $(LINUXINC)/linux.pp $(SYSTEMUNIT)$(PPUEXT) baseunix$(PPUEXT) u
linuxvcs$(PPUEXT) : $(LINUXINC)/linuxvcs.pp $(SYSTEMUNIT)$(PPUEXT) baseunix$(PPUEXT) strings$(PPUEXT)
$(COMPILER) $(LINUXINC)/linuxvcs.pp
-serial$(PPUEXT) : $(UNIXINC)/serial.pp $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) $(UNIXINC)/serial.pp
-
-video$(PPUEXT) : $(UNIXINC)/video.pp baseunix$(PPUEXT) termio$(PPUEXT) strings$(PPUEXT) linuxvcs$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) $(UNIXINC)/video.pp
-
-mouse$(PPUEXT) : $(UNIXINC)/mouse.pp baseunix$(PPUEXT) video$(PPUEXT) gpm$(PPUEXT) linuxvcs$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) $(UNIXINC)/mouse.pp
-
-keyboard$(PPUEXT) : $(UNIXINC)/keyboard.pp baseunix$(PPUEXT) mouse$(PPUEXT) termio$(PPUEXT) linuxvcs$(PPUEXT) strings$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) $(UNIXINC)/keyboard.pp
diff --git a/rtl/android/jvm/Makefile b/rtl/android/jvm/Makefile
index f4f36cbe74..242d46f976 100644
--- a/rtl/android/jvm/Makefile
+++ b/rtl/android/jvm/Makefile
@@ -1,8 +1,8 @@
#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-04-01 rev 27428]
#
default: all
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos
BSDs = freebsd netbsd openbsd darwin
UNIXs = linux $(BSDs) solaris qnx haiku aix
LIMIT83fs = go32v2 os2 emx watcom msdos
@@ -185,6 +185,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t
endif
override FPCOPT+=-Cp$(SUBARCH)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+ifeq ($(SUBARCH),)
+$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined)
+endif
+override FPCOPT+=-Cp$(SUBARCH)
+endif
ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
TARGETSUFFIX=$(OS_TARGET)
SOURCESUFFIX=$(OS_SOURCE)
@@ -544,6 +550,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
endif
@@ -767,6 +776,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
endif
@@ -989,6 +1001,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
endif
@@ -1782,17 +1797,23 @@ ifdef ACROSSCOMPILE
override FPCOPT+=$(CROSSOPT)
endif
override COMPILER:=$(strip $(FPC) $(FPCOPT))
-ifeq (,$(findstring -s ,$(COMPILER)))
+ifneq (,$(findstring -sh ,$(COMPILER)))
+UseEXECPPAS=1
+endif
+ifneq (,$(findstring -s ,$(COMPILER)))
+ifeq ($(FULL_SOURCE),$(FULL_TARGET))
+UseEXECPPAS=1
+endif
+endif
+ifneq ($(UseEXECPPAS),1)
EXECPPAS=
else
-ifeq ($(FULL_SOURCE),$(FULL_TARGET))
ifdef RUNBATCH
EXECPPAS:=@$(RUNBATCH) $(PPAS)
else
EXECPPAS:=@$(PPAS)
endif
endif
-endif
.PHONY: fpc_units
ifneq ($(TARGET_UNITS)$(TARGET_IMPLICITUNITS),)
override ALLTARGET+=fpc_units
diff --git a/rtl/arm/arm.inc b/rtl/arm/arm.inc
index b0b4b7e9cf..f6eeff5251 100644
--- a/rtl/arm/arm.inc
+++ b/rtl/arm/arm.inc
@@ -80,13 +80,11 @@ function _controlfp(new: DWORD; mask: DWORD): DWORD; cdecl; external 'coredll';
{$define FPC_SYSTEM_HAS_SYSRESETFPU}
Procedure SysResetFPU;{$ifdef SYSTEMINLINE}inline;{$endif}
begin
- softfloat_exception_flags:=0;
end;
{$define FPC_SYSTEM_HAS_SYSINITFPU}
Procedure SysInitFPU;{$ifdef SYSTEMINLINE}inline;{$endif}
begin
- softfloat_exception_mask:=float_flag_underflow or float_flag_inexact or float_flag_denormal;
{ Enable FPU exceptions, but disable INEXACT, UNDERFLOW, DENORMAL }
{ FPU precision 64 bit, rounding to nearest, affine infinity }
_controlfp($000C0003, $030F031F);
@@ -507,8 +505,6 @@ end;
{$ifndef darwin}
{$define FPC_SYSTEM_HAS_ANSISTR_DECR_REF}
-function fpc_freemem_x(p:pointer):ptrint; [external name 'FPC_FREEMEM_X'];
-
Procedure fpc_ansistr_decr_ref (Var S : Pointer); [Public,Alias:'FPC_ANSISTR_DECR_REF'];assembler;nostackframe; compilerproc;
asm
ldr r1, [r0]
@@ -547,7 +543,7 @@ asm
// but we need to stay backward compatible with 2.6
sub r0, r0, #12
// Jump without a link, so freemem directly returns to our caller
- b FPC_FREEMEM_X
+ b FPC_FREEMEM
end;
{$endif not darwin}
diff --git a/rtl/arm/math.inc b/rtl/arm/math.inc
index 00c47a60a0..7dce8b1ec4 100644
--- a/rtl/arm/math.inc
+++ b/rtl/arm/math.inc
@@ -15,6 +15,7 @@
**********************************************************************}
{$if defined(FPUFPA) or defined(FPUFPA10) or defined(FPUFPA11) or defined(FPUVFPV2) or defined(FPUVFPV3) or defined(FPUVFPV3_D16)}
+ {$ifndef FPC_SYSTEM_HAS_ABS}
{$define FPC_SYSTEM_HAS_ABS}
function fpc_abs_real(d : ValReal) : ValReal;compilerproc;
begin
@@ -22,6 +23,8 @@
runerror(207);
result:=0;
end;
+ {$endif FPC_SYSTEM_HAS_ABS}
+ {$ifndef FPC_SYSTEM_HAS_SQR}
{$define FPC_SYSTEM_HAS_SQR}
function fpc_sqr_real(d : ValReal) : ValReal;compilerproc;
begin
@@ -29,6 +32,7 @@
runerror(207);
result:=0;
end;
+ {$endif FPC_SYSTEM_HAS_SQR}
{$ifndef FPC_SYSTEM_HAS_SQRT}
{$define FPC_SYSTEM_HAS_SQRT}
function fpc_sqrt_real(d : ValReal) : ValReal;compilerproc;
diff --git a/rtl/arm/mathu.inc b/rtl/arm/mathu.inc
index c1c1d4e7c2..f41e0630c6 100644
--- a/rtl/arm/mathu.inc
+++ b/rtl/arm/mathu.inc
@@ -12,40 +12,6 @@
**********************************************************************}
-function FPUExceptionMaskToSoftFloatMask(const Mask: TFPUExceptionMask): byte;
-begin
- result:=0;
- if exInvalidOp in Mask then
- result:=result or (1 shl ord(exInvalidOp));
- if exDenormalized in Mask then
- result:=result or (1 shl ord(exDenormalized));
- if exZeroDivide in Mask then
- result:=result or (1 shl ord(exZeroDivide));
- if exOverflow in Mask then
- result:=result or (1 shl ord(exOverflow));
- if exUnderflow in Mask then
- result:=result or (1 shl ord(exUnderflow));
- if exPrecision in Mask then
- result:=result or (1 shl ord(exPrecision));
-end;
-
-function SoftFloatMaskToFPUExceptionMask(const Mask: byte): TFPUExceptionMask;
-begin
- result:=[];
- if (mask and (1 shl ord(exInvalidOp)) <> 0) then
- include(result,exInvalidOp);
- if (mask and (1 shl ord(exDenormalized)) <> 0) then
- include(result,exDenormalized);
- if (mask and (1 shl ord(exZeroDivide)) <> 0) then
- include(result,exZeroDivide);
- if (mask and (1 shl ord(exOverflow)) <> 0) then
- include(result,exOverflow);
- if (mask and (1 shl ord(exUnderflow)) <> 0) then
- include(result,exUnderflow);
- if (mask and (1 shl ord(exPrecision)) <> 0) then
- include(result,exPrecision);
-end;
-
{$if defined(wince)}
const
@@ -91,16 +57,6 @@ function SetRoundMode(const RoundMode: TFPURoundingMode): TFPURoundingMode;
var
c: dword;
begin
- case (RoundMode) of
- rmNearest :
- softfloat_rounding_mode := float_round_nearest_even;
- rmTruncate :
- softfloat_rounding_mode := float_round_to_zero;
- rmUp :
- softfloat_rounding_mode := float_round_up;
- rmDown :
- softfloat_rounding_mode := float_round_down;
- end;
c:=Ord(RoundMode) shl 16;
c:=_controlfp(c, _MCW_RC);
Result:=TFPURoundingMode((c shr 16) and 3);
@@ -170,7 +126,6 @@ begin
c:=c or _EM_INEXACT;
c:=_controlfp(c, _MCW_EM);
Result:=ConvertExceptionMask(c);
- softfloat_exception_mask:=FPUExceptionMaskToSoftFloatMask(mask);
end;
procedure ClearExceptions(RaisePending: Boolean =true);
@@ -216,11 +171,9 @@ procedure VFP_SetCW(cw : dword); nostackframe; assembler;
end;
-function GetRoundMode: TFPURoundingMode;
- var
- rm: byte;
+function VFPCw2RoundingMode(cw: dword): TFPURoundingMode;
begin
- case (VFP_GetCW and _VFP_ROUNDINGMODE_MASK) shr _VFP_ROUNDINGMODE_MASK_SHIFT of
+ case (cw and _VFP_ROUNDINGMODE_MASK) shr _VFP_ROUNDINGMODE_MASK_SHIFT of
0 : result := rmNearest;
1 : result := rmUp;
2 : result := rmDown;
@@ -229,35 +182,28 @@ function GetRoundMode: TFPURoundingMode;
end;
+function GetRoundMode: TFPURoundingMode;
+ begin
+ result:=VFPCw2RoundingMode(VFP_GetCW);
+ end;
+
+
function SetRoundMode(const RoundMode: TFPURoundingMode): TFPURoundingMode;
var
mode: dword;
+ oldcw: dword;
begin
+ softfloat_rounding_mode:=RoundMode;
+ oldcw:=VFP_GetCW;
case (RoundMode) of
- rmNearest :
- begin
- mode := 0;
- softfloat_rounding_mode := float_round_nearest_even;
- end;
- rmUp :
- begin
- mode := 1;
- softfloat_rounding_mode := float_round_up;
- end;
- rmDown :
- begin
- mode := 2;
- softfloat_rounding_mode := float_round_down;
- end;
- rmTruncate :
- begin
- mode := 3;
- softfloat_rounding_mode := float_round_to_zero;
- end;
+ rmNearest : mode := 0;
+ rmUp : mode := 1;
+ rmDown : mode := 2;
+ rmTruncate : mode := 3;
end;
mode:=mode shl _VFP_ROUNDINGMODE_MASK_SHIFT;
- VFP_SetCW((VFP_GetCW and (not _VFP_ROUNDINGMODE_MASK)) or mode);
- result := RoundMode;
+ VFP_SetCW((oldcw and (not _VFP_ROUNDINGMODE_MASK)) or mode);
+ result := VFPCw2RoundingMode(oldcw);
end;
@@ -274,13 +220,9 @@ function SetPrecisionMode(const Precision: TFPUPrecisionMode): TFPUPrecisionMode
end;
-function GetExceptionMask: TFPUExceptionMask;
- var
- cw : dword;
+function VFPCw2ExceptionMask(cw: dword): TFPUExceptionMask;
begin
Result:=[];
- cw:=VFP_GetCW;
-
if (cw and _VFP_ENABLE_IM)=0 then
include(Result,exInvalidOp);
@@ -301,11 +243,19 @@ function GetExceptionMask: TFPUExceptionMask;
end;
+function GetExceptionMask: TFPUExceptionMask;
+ begin
+ Result:=VFPCw2ExceptionMask(VFP_GetCW);
+ end;
+
+
function SetExceptionMask(const Mask: TFPUExceptionMask): TFPUExceptionMask;
var
cw : dword;
begin
- cw:=VFP_GetCW and not(_VFP_ENABLE_ALL);
+ cw:=VFP_GetCW;
+ Result:=VFPCw2ExceptionMask(cw);
+ cw:=cw and not(_VFP_ENABLE_ALL);
{$ifndef darwin}
if not(exInvalidOp in Mask) then
@@ -327,9 +277,7 @@ function SetExceptionMask(const Mask: TFPUExceptionMask): TFPUExceptionMask;
cw:=cw or _VFP_ENABLE_PM;
{$endif}
VFP_SetCW(cw);
- result:=Mask;
-
- softfloat_exception_mask:=FPUExceptionMaskToSoftFloatMask(Mask);
+ softfloat_exception_mask:=Mask;
end;
@@ -438,45 +386,43 @@ procedure FPU_SetCW(cw : dword); nostackframe; assembler;
asm
wfs r0
end;
+
+
+function FPUCw2ExceptionMask(cw: dword): TFPUExceptionMask;
+ begin
+ Result:=[];
+
+ if (cw and _FPU_MASK_IM)=0 then
+ include(Result,exInvalidOp);
+
+ if (cw and _FPU_MASK_DM)=0 then
+ include(Result,exDenormalized);
+
+ if (cw and _FPU_MASK_ZM)=0 then
+ include(Result,exZeroDivide);
+
+ if (cw and _FPU_MASK_OM)=0 then
+ include(Result,exOverflow);
+
+ if (cw and _FPU_MASK_UM)=0 then
+ include(Result,exUnderflow);
+
+ if (cw and _FPU_MASK_PM)=0 then
+ include(Result,exPrecision);
+ end;
{$endif}
function GetRoundMode: TFPURoundingMode;
begin
- case softfloat_rounding_mode of
- float_round_nearest_even:
- GetRoundMode:=rmNearest;
- float_round_up:
- GetRoundMode:=rmUp;
- float_round_down:
- GetRoundMode:=rmDown;
- float_round_to_zero:
- GetRoundMode:=rmTruncate;
- end;
+ GetRoundMode:=softfloat_rounding_mode;
end;
function SetRoundMode(const RoundMode: TFPURoundingMode): TFPURoundingMode;
begin
- case (RoundMode) of
- rmNearest :
- begin
- softfloat_rounding_mode := float_round_nearest_even;
- end;
- rmUp :
- begin
- softfloat_rounding_mode := float_round_up;
- end;
- rmDown :
- begin
- softfloat_rounding_mode := float_round_down;
- end;
- rmTruncate :
- begin
- softfloat_rounding_mode := float_round_to_zero;
- end;
- end;
- SetRoundMode:=RoundMode;
+ result:=softfloat_rounding_mode;
+ softfloat_rounding_mode:=RoundMode;
end;
@@ -494,32 +440,11 @@ function SetPrecisionMode(const Precision: TFPUPrecisionMode): TFPUPrecisionMode
function GetExceptionMask: TFPUExceptionMask;
- var
- cw : dword;
begin
{$if not(defined(gba)) and not(defined(nds)) and not(defined(FPUSOFT)) and not(defined(FPULIBGCC))}
- Result:=[];
- cw:=FPU_GetCW;
-
- if (cw and _FPU_MASK_IM)=0 then
- include(Result,exInvalidOp);
-
- if (cw and _FPU_MASK_DM)=0 then
- include(Result,exDenormalized);
-
- if (cw and _FPU_MASK_ZM)=0 then
- include(Result,exZeroDivide);
-
- if (cw and _FPU_MASK_OM)=0 then
- include(Result,exOverflow);
-
- if (cw and _FPU_MASK_UM)=0 then
- include(Result,exUnderflow);
-
- if (cw and _FPU_MASK_PM)=0 then
- include(Result,exPrecision);
+ Result:=FPUCw2ExceptionMask(FPU_GetCW);
{$else}
- Result:=SoftFloatMaskToFPUExceptionMask(softfloat_exception_mask);
+ Result:=softfloat_exception_mask;
{$endif}
end;
@@ -529,7 +454,9 @@ function SetExceptionMask(const Mask: TFPUExceptionMask): TFPUExceptionMask;
cw : dword;
begin
{$if not(defined(gba)) and not(defined(nds)) and not(defined(FPUSOFT)) and not(defined(FPULIBGCC))}
- cw:=FPU_GetCW or _FPU_MASK_ALL;
+ cw:=FPU_GetCW;
+ Result:=FPUCw2ExceptionMask(cw);
+ cw:=cw or _FPU_MASK_ALL;
if exInvalidOp in Mask then
cw:=cw and not(_FPU_MASK_IM);
@@ -550,14 +477,16 @@ function SetExceptionMask(const Mask: TFPUExceptionMask): TFPUExceptionMask;
cw:=cw and not(_FPU_MASK_PM);
FPU_SetCW(cw);
+{$else}
+ Result:=softfloat_exception_mask;
{$endif}
- softfloat_exception_mask:=FPUExceptionMaskToSoftFloatMask(Mask);
- Result:=Mask;
+ softfloat_exception_mask:=Mask;
end;
procedure ClearExceptions(RaisePending: Boolean =true);
begin
+ softfloat_exception_flags:=[];
end;
{$endif wince}
diff --git a/rtl/arm/mathuh.inc b/rtl/arm/mathuh.inc
deleted file mode 100644
index ba922bb09d..0000000000
--- a/rtl/arm/mathuh.inc
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- This file is part of the Free Pascal run time library.
- Copyright (c) 2004 by Florian Klaempfl
- member of the Free Pascal 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.
-
- **********************************************************************}
-type
- TFPURoundingMode = (rmNearest, rmDown, rmUp, rmTruncate);
- TFPUPrecisionMode = (pmSingle, pmReserved, pmDouble, pmExtended);
- TFPUException = (exInvalidOp, exDenormalized, exZeroDivide,
- exOverflow, exUnderflow, exPrecision);
- TFPUExceptionMask = set of TFPUException;
-
-function GetRoundMode: TFPURoundingMode;
-function SetRoundMode(const RoundMode: TFPURoundingMode): TFPURoundingMode;
-function GetPrecisionMode: TFPUPrecisionMode;
-function SetPrecisionMode(const Precision: TFPUPrecisionMode): TFPUPrecisionMode;
-function GetExceptionMask: TFPUExceptionMask;
-function SetExceptionMask(const Mask: TFPUExceptionMask): TFPUExceptionMask;
-procedure ClearExceptions(RaisePending: Boolean =true);
diff --git a/rtl/arm/thumb.inc b/rtl/arm/thumb.inc
index 9c5d9de63c..41e28ab9cb 100644
--- a/rtl/arm/thumb.inc
+++ b/rtl/arm/thumb.inc
@@ -18,7 +18,7 @@
{$define FPC_SYSTEM_HAS_SYSINITFPU}
Procedure SysInitFPU;{$ifdef SYSTEMINLINE}inline;{$endif}
begin
- softfloat_exception_mask:=float_flag_underflow or float_flag_inexact or float_flag_denormal;
+ softfloat_exception_mask:=[float_flag_underflow,float_flag_inexact,float_flag_denormal];
end;
@@ -36,7 +36,7 @@ end;
{$define FPC_SYSTEM_HAS_SYSRESETFPU}
Procedure SysResetFPU;{$ifdef SYSTEMINLINE}inline;{$endif}
begin
- softfloat_exception_flags:=0;
+ softfloat_exception_flags:=[];
end;
diff --git a/rtl/arm/thumb2.inc b/rtl/arm/thumb2.inc
index f75add7504..f856ee3fd5 100644
--- a/rtl/arm/thumb2.inc
+++ b/rtl/arm/thumb2.inc
@@ -33,18 +33,19 @@ Procedure SysInitFPU;{$ifdef SYSTEMINLINE}inline;{$endif}
begin
{ Enable FPU exceptions, but disable INEXACT, UNDERFLOW, DENORMAL }
asm
- {$IFDEF FPUFPV4_S16}
+{$if defined(FPUFPA) or defined(FPUFPA10) or defined(FPUFPA11)}
+
+ rfs r0
+ and r0,r0,#0xffe0ffff
+ orr r0,r0,#0x00070000
+ wfs r0
+{$else}
movw r0, #(0xed88)
movt r0, #(0xe000)
ldr r1, [r0]
orr r1, r1, #(0xF << 20)
str r1, [r0]
- {$ELSE FPUFPV4_S16}
- rfs r0
- and r0,r0,#0xffe0ffff
- orr r0,r0,#0x00070000
- wfs r0
- {$endif FPUFPV4_S16}
+{$endif}
end;
end;
{$endif}
@@ -60,13 +61,13 @@ function _controlfp(new: DWORD; mask: DWORD): DWORD; cdecl; external 'coredll';
{$define FPC_SYSTEM_HAS_SYSRESETFPU}
Procedure SysResetFPU;{$ifdef SYSTEMINLINE}inline;{$endif}
begin
- softfloat_exception_flags:=0;
+ softfloat_exception_flags:=[];
end;
{$define FPC_SYSTEM_HAS_SYSINITFPU}
Procedure SysInitFPU;{$ifdef SYSTEMINLINE}inline;{$endif}
begin
- softfloat_exception_mask:=float_flag_underflow or float_flag_inexact or float_flag_denormal;
+ softfloat_exception_mask:=[float_flag_underflow,float_flag_inexact,float_flag_denormal];
{ Enable FPU exceptions, but disable INEXACT, UNDERFLOW, DENORMAL }
{ FPU precision 64 bit, rounding to nearest, affine infinity }
_controlfp($000C0003, $030F031F);
diff --git a/rtl/atari/Makefile b/rtl/atari/Makefile
index 1e0ff7af1c..273ead6649 100644
--- a/rtl/atari/Makefile
+++ b/rtl/atari/Makefile
@@ -1,8 +1,8 @@
#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-03-19 rev 27188]
#
default: all
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos
BSDs = freebsd netbsd openbsd darwin
UNIXs = linux $(BSDs) solaris qnx haiku aix
LIMIT83fs = go32v2 os2 emx watcom msdos
@@ -186,6 +186,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t
endif
override FPCOPT+=-Cp$(SUBARCH)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+ifeq ($(SUBARCH),)
+$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined)
+endif
+override FPCOPT+=-Cp$(SUBARCH)
+endif
ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
TARGETSUFFIX=$(OS_TARGET)
SOURCESUFFIX=$(OS_SOURCE)
@@ -335,448 +341,454 @@ endif
OBJPASDIR=$(RTL)/objpas
GRAPHDIR=$(INC)/graph
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes strutils math typinfo varutils fmtbcd charset cpall ucomplex getopts matrix variants types rtlconsts sysconst dateutil objects
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
endif
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-linux)
override TARGET_LOADERS+=prt0
@@ -988,6 +1000,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_LOADERS+=prt0
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_LOADERS+=prt0
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_LOADERS+=prt0
endif
@@ -1001,226 +1016,229 @@ ifeq ($(FULL_TARGET),i8086-msdos)
override TARGET_LOADERS+=prt0
endif
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_RSTS+=math rtlconsts varutils typinfo variants classes sysconst dateutil
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
override INSTALL_FPCPACKAGE=y
ifeq ($(FULL_TARGET),i386-linux)
@@ -1433,6 +1451,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
endif
@@ -1655,6 +1676,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
endif
diff --git a/rtl/atari/Makefile.fpc b/rtl/atari/Makefile.fpc
index 16db73c470..9c68489f4d 100644
--- a/rtl/atari/Makefile.fpc
+++ b/rtl/atari/Makefile.fpc
@@ -9,17 +9,17 @@ main=rtl
loaders=prt0
units=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings \
dos heaptrc lineinfo ctypes \
- sysutils fgl classes strutils math typinfo varutils fmtbcd \
- charset cpall ucomplex getopts matrix \
- variants types rtlconsts sysconst dateutil objects
+ sysutils fgl classes math typinfo \
+ charset cpall getopts \
+ types rtlconsts sysconst
implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 \
- cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+ cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
# \
# exec timer doslib utility hardware inputevent graphics layers \
# intuition aboxlib mui \
# these can be moved to packages later
# clipboard datatypes asl ahi tinygl get9 muihelper \
-rsts=math rtlconsts varutils typinfo variants classes sysconst dateutil
+rsts=math rtlconsts typinfo classes sysconst
#implicitunits=exeinfo
[require]
diff --git a/rtl/atari/system.pp b/rtl/atari/system.pp
index 0ae92366a8..37ce60d793 100644
--- a/rtl/atari/system.pp
+++ b/rtl/atari/system.pp
@@ -53,18 +53,18 @@ const
StdOutputHandle = 1;
StdErrorHandle = $ffff;
- {$if defined(CPUARM) or defined(CPUM68K) or defined(CPUSPARC) or defined(CPUMIPS)}
+ {$if defined(CPUARM) or defined(CPUM68K)}
{$define fpc_softfpu_interface}
{$i softfpu.pp}
{$undef fpc_softfpu_interface}
- {$endif defined(CPUARM) or defined(CPUM68K) or defined(CPUSPARC) or defined(CPUMIPS)}
+ {$endif defined(CPUARM) or defined(CPUM68K)}
implementation
- {$if defined(CPUARM) or defined(CPUM68K) or defined(CPUSPARC) or defined(CPUMIPS)}
+ {$if defined(CPUARM) or defined(CPUM68K)}
{$define fpc_softfpu_implementation}
{$i softfpu.pp}
@@ -82,7 +82,7 @@ const
{$define FPC_SYSTEM_HAS_extractFloat32Exp}
{$define FPC_SYSTEM_HAS_extractFloat32Sign}
- {$endif defined(CPUARM) or defined(CPUM68K) or defined(CPUSPARC) or defined(CPUMIPS)}
+ {$endif defined(CPUARM) or defined(CPUM68K)}
{$I system.inc}
{$I lowmath.inc}
diff --git a/rtl/beos/Makefile b/rtl/beos/Makefile
index 4aff3cf09a..bd6af09fd0 100644
--- a/rtl/beos/Makefile
+++ b/rtl/beos/Makefile
@@ -1,8 +1,8 @@
#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-04-01 rev 27428]
#
default: all
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos
BSDs = freebsd netbsd openbsd darwin
UNIXs = linux $(BSDs) solaris qnx haiku aix
LIMIT83fs = go32v2 os2 emx watcom msdos
@@ -186,6 +186,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t
endif
override FPCOPT+=-Cp$(SUBARCH)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+ifeq ($(SUBARCH),)
+$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined)
+endif
+override FPCOPT+=-Cp$(SUBARCH)
+endif
ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
TARGETSUFFIX=$(OS_TARGET)
SOURCESUFFIX=$(OS_SOURCE)
@@ -335,448 +341,454 @@ override FPCOPT+= -dHASUNIX -n -dFPC_USE_LIBC -Si
OBJPASDIR=$(RTL)/objpas
GRAPHDIR=$(INC)/graph
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring unixcp
endif
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-linux)
override TARGET_LOADERS+=prt0 cprt0 func dllprt
@@ -988,6 +1000,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_LOADERS+=prt0 cprt0 func dllprt
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_LOADERS+=prt0 cprt0 func dllprt
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_LOADERS+=prt0 cprt0 func dllprt
endif
@@ -1210,6 +1225,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
@@ -1433,6 +1451,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
endif
@@ -1655,6 +1676,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
endif
@@ -1877,6 +1901,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_TARGETDIR+=.
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_TARGETDIR+=.
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_TARGETDIR+=.
endif
@@ -2670,17 +2697,23 @@ ifdef ACROSSCOMPILE
override FPCOPT+=$(CROSSOPT)
endif
override COMPILER:=$(strip $(FPC) $(FPCOPT))
-ifeq (,$(findstring -s ,$(COMPILER)))
+ifneq (,$(findstring -sh ,$(COMPILER)))
+UseEXECPPAS=1
+endif
+ifneq (,$(findstring -s ,$(COMPILER)))
+ifeq ($(FULL_SOURCE),$(FULL_TARGET))
+UseEXECPPAS=1
+endif
+endif
+ifneq ($(UseEXECPPAS),1)
EXECPPAS=
else
-ifeq ($(FULL_SOURCE),$(FULL_TARGET))
ifdef RUNBATCH
EXECPPAS:=@$(RUNBATCH) $(PPAS)
else
EXECPPAS:=@$(PPAS)
endif
endif
-endif
.PHONY: fpc_loaders
ifneq ($(TARGET_LOADERS),)
override ALLTARGET+=fpc_loaders
@@ -3137,9 +3170,6 @@ sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUE
$(COMPILER) $(OBJPASDIR)/sysconst.pp
rtlconsts$(PPUEXT) : $(OBJPASDIR)/rtlconsts.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/rtlconsts.pp
-strutils$(PPUEXT) : $(OBJPASDIR)/strutils.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/strutils.pp
macpas$(PPUEXT) : $(INC)/macpas.pp objpas$(PPUEXT) math$(PPUEXT)
$(COMPILER) $(INC)/macpas.pp $(REDIR)
cpu$(PPUEXT) : $(PROCINC)/cpu.pp system$(PPUEXT)
diff --git a/rtl/beos/Makefile.fpc b/rtl/beos/Makefile.fpc
index dbeeff9081..4334d054cf 100644
--- a/rtl/beos/Makefile.fpc
+++ b/rtl/beos/Makefile.fpc
@@ -13,13 +13,13 @@ units=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings \
sysconst sysutils \
types charset cpall typinfo classes fgl math \
cpu mmx getopts heaptrc lineinfo lnfodwrf \
- rtlconsts syscall unix unixutil strutils termio initc \
+ rtlconsts syscall unix unixutil termio initc \
cmem \
dynlibs cwstring unixcp
rsts=math typinfo sysconst rtlconsts
implicitunits=exeinfo \
cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 \
- cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+ cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
[require]
nortl=y
@@ -42,10 +42,10 @@ libname=libfprtl.so
libversion=2.0.0
libunits=$(SYSTEMUNIT) objpas strings \
unix \
- dos crt printer \
+ dos crt \
sysutils typinfo math \
$(CPU_UNITS) getopts heaptrc \
- errors ipc dynlibs
+ errors dynlibs
[prerules]
@@ -203,10 +203,6 @@ sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUE
rtlconsts$(PPUEXT) : $(OBJPASDIR)/rtlconsts.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/rtlconsts.pp
-strutils$(PPUEXT) : $(OBJPASDIR)/strutils.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/strutils.pp
-
#
# Mac Pascal Model
#
diff --git a/rtl/beos/system.pp b/rtl/beos/system.pp
index 7b34acb1e9..c5d91179b1 100644
--- a/rtl/beos/system.pp
+++ b/rtl/beos/system.pp
@@ -376,13 +376,13 @@ begin
StackLength := CheckInitialStkLen(InitialStkLen);
StackBottom := Sptr - StackLength;
- SysResetFPU;
- if not(IsLibrary) then
- SysInitFPU;
-
{ Set up signals handlers (may be needed by init code to test cpu features) }
InstallSignals;
+{$ifdef cpui386}
+ fpc_cpucodeinit;
+{$endif}
+
{ Setup heap }
myheapsize:=4096*1;// $ 20000;
myheaprealsize:=4096*1;// $ 20000;
diff --git a/rtl/bsd/i386/syscall.inc b/rtl/bsd/i386/syscall.inc
index c9b298c8b8..1d364d10f9 100644
--- a/rtl/bsd/i386/syscall.inc
+++ b/rtl/bsd/i386/syscall.inc
@@ -25,55 +25,14 @@ These functions are the same over all three BSDs, except that some have a
{$ifdef FPC_USE_SYSCALL}
-{$ifdef NetBSD}
- {$UNDEF ErrnoWord}
-{$endif}
-{$ifdef FreeBSD}
- {$DEFINE ErrnoWord}
-{$endif}
-
-{ This variable is needed in syscall.inc assembler code }
-var
- fpc_threadvar_relocate_proc : TRelocateThreadVarHandler; public name 'FPC_THREADVAR_RELOCATE';
-{$define THREADVAR_RELOCATED_ALREADY_DEFINED}
-
-Procedure fpc_geteipasebx;[external name 'fpc_geteipasebx'];
-
procedure actualsyscall; assembler; {inline requires a dummy push IIRC}
asm
int $0x80
jb .LErrorcode
ret
.LErrorcode:
-{$ifdef FPC_PIC}
- call fpc_geteipasebx
- addl $_GLOBAL_OFFSET_TABLE_,%ebx
- movl fpc_threadvar_relocate_proc@GOT(%ebx),%ecx
- movl (%ecx),%ecx
- movl Errno@GOT(%ebx),%edi
-{$else FPC_PIC}
- leal Errno,%edi
- movl fpc_threadvar_relocate_proc,%ecx
-{$endif FPC_PIC}
- testl %ecx,%ecx
- jne .LThread
- {$ifdef ErrnoWord}
- movw %ax,4(%edi)
- {$else}
- movl %eax,4(%edi)
- {$endif}
- jmp .LNoThread
-.LThread:
- movl %eax,%ebx
- movl (%edi),%eax
- call *%ecx
- {$ifdef ErrnoWord}
- movw %bx,4(%eax)
- {$else}
- movl %ebx,4(%eax)
- {$endif}
-.LNoThread:
- movl $-1,%eax
+ call SetErrno
+ movl $-1,%eax
end;
function FpSysCall(sysnr:TSysParam):TSysResult; oldfpccall; assembler; [public,alias:'FPC_DOSYS0'];
diff --git a/rtl/bsd/system.pp b/rtl/bsd/system.pp
index c166c80121..634b2fbfe4 100644
--- a/rtl/bsd/system.pp
+++ b/rtl/bsd/system.pp
@@ -330,10 +330,6 @@ Begin
{ Set up signals handlers (may be needed by init code to test cpu features) }
InstallSignals;
- SysResetFPU;
- if not(IsLibrary) then
- SysInitFPU;
-
{$if defined(cpui386) or defined(cpuarm)}
fpc_cpucodeinit;
{$endif cpui386}
diff --git a/rtl/charmaps/cpall.pas b/rtl/charmaps/cpall.pas
index 4414991fcf..bd2ceb79d6 100644
--- a/rtl/charmaps/cpall.pas
+++ b/rtl/charmaps/cpall.pas
@@ -12,7 +12,7 @@ uses
cp874, cp856,
{$ifndef cpu16}
{ these are too big for a 16-bit CPU }
- cp932,cp936,cp949,cp950,
+ { cp932,cp936,cp949,cp950, -> to rtl-unicode}
{$endif not cpu16}
cp1250,cp1254,cp1255,cp1256,cp1257,cp1258,cp852,cp8859_2;
diff --git a/rtl/darwin/Makefile b/rtl/darwin/Makefile
index 3ca6f3e7fd..76d187f23d 100644
--- a/rtl/darwin/Makefile
+++ b/rtl/darwin/Makefile
@@ -1,8 +1,8 @@
#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-04-01 rev 27428]
#
default: all
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos
BSDs = freebsd netbsd openbsd darwin
UNIXs = linux $(BSDs) solaris qnx haiku aix
LIMIT83fs = go32v2 os2 emx watcom msdos
@@ -185,6 +185,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t
endif
override FPCOPT+=-Cp$(SUBARCH)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+ifeq ($(SUBARCH),)
+$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined)
+endif
+override FPCOPT+=-Cp$(SUBARCH)
+endif
ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
TARGETSUFFIX=$(OS_TARGET)
SOURCESUFFIX=$(OS_SOURCE)
@@ -353,448 +359,454 @@ ifndef USELIBGGI
USELIBGGI=NO
endif
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl printer sysutils typinfo fgl classes math types charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb errors ipc terminfo termio sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring fpintres fpextres clocale objc objcbase unixcp
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings sysctl baseunix unixutil unix initc cmem dynlibs $(CPU_UNITS) dos dl sysutils typinfo fgl classes math types charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb errors termio sysconst cthreads rtlconsts cwstring bsd fpwidestring fpintres fpextres objc objcbase unixcp
endif
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-linux)
override TARGET_RSTS+=math typinfo classes sysconst rtlconsts
@@ -1006,6 +1018,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_RSTS+=math typinfo classes sysconst rtlconsts
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_RSTS+=math typinfo classes sysconst rtlconsts
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_RSTS+=math typinfo classes sysconst rtlconsts
endif
@@ -1018,7 +1033,6 @@ endif
ifeq ($(FULL_TARGET),i8086-msdos)
override TARGET_RSTS+=math typinfo classes sysconst rtlconsts
endif
-override INSTALL_BUILDUNIT=buildcollations
override INSTALL_FPCPACKAGE=y
ifeq ($(FULL_TARGET),i386-linux)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(BSDINC) $(BSDPROCINC) $(OSPROCINC)
@@ -1230,6 +1244,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(BSDINC) $(BSDPROCINC) $(OSPROCINC)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(BSDINC) $(BSDPROCINC) $(OSPROCINC)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(BSDINC) $(BSDPROCINC) $(OSPROCINC)
endif
@@ -1452,6 +1469,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(BSDINC) $(COMMON)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(BSDINC) $(COMMON)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(BSDINC) $(COMMON)
endif
@@ -2245,17 +2265,23 @@ ifdef ACROSSCOMPILE
override FPCOPT+=$(CROSSOPT)
endif
override COMPILER:=$(strip $(FPC) $(FPCOPT))
-ifeq (,$(findstring -s ,$(COMPILER)))
+ifneq (,$(findstring -sh ,$(COMPILER)))
+UseEXECPPAS=1
+endif
+ifneq (,$(findstring -s ,$(COMPILER)))
+ifeq ($(FULL_SOURCE),$(FULL_TARGET))
+UseEXECPPAS=1
+endif
+endif
+ifneq ($(UseEXECPPAS),1)
EXECPPAS=
else
-ifeq ($(FULL_SOURCE),$(FULL_TARGET))
ifdef RUNBATCH
EXECPPAS:=@$(RUNBATCH) $(PPAS)
else
EXECPPAS:=@$(PPAS)
endif
endif
-endif
.PHONY: fpc_units
ifneq ($(TARGET_UNITS)$(TARGET_IMPLICITUNITS),)
override ALLTARGET+=fpc_units
@@ -2626,7 +2652,6 @@ SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
$(SYSTEMUNIT)$(PPUEXT) : $(BSDINC)/$(SYSTEMUNIT).pp $(SYSDEPS)
$(COMPILER) -Us -Sg $(BSDINC)/$(SYSTEMUNIT).pp
uuchar$(PPUEXT): $(SYSTEMUNIT)$(PPUEXT) $(INC)/uuchar.pp
-clocale$(PPUEXT): initc$(PPUEXT) sysutils$(PPUEXT) unixtype$(PPUEXT)
fpintres$(PPUEXT): $(SYSTEMUNIT)$(PPUEXT)
fpextres$(PPUEXT): $(SYSTEMUNIT)$(PPUEXT) baseunix$(PPUEXT)
iso7185$(PPUEXT): $(SYSTEMUNIT)$(PPUEXT)
@@ -2653,7 +2678,6 @@ unixcp$(PPUEXT) : $(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) ba
$(COMPILER) $(UNIXINC)/unixcp.pp
dos$(PPUEXT) : $(SYSTEMUNIT)$(PPUEXT) strings$(PPUEXT) unix$(PPUEXT) $(UNIXINC)/dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \
unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-printer$(PPUEXT) : unix$(PPUEXT) strings$(PPUEXT) baseunix$(PPUEXT) $(UNIXINC)/printer.pp $(INC)/textrec.inc unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
sysutils$(PPUEXT) : objpas$(PPUEXT) unix$(PPUEXT) errors$(PPUEXT) sysconst$(PPUEXT) $(UNIXINC)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
objpas$(PPUEXT) unix$(PPUEXT) errors$(PPUEXT) sysconst$(PPUEXT)
$(COMPILER) -Fi$(OBJPASDIR)/sysutils $(UNIXINC)/sysutils.pp
@@ -2662,7 +2686,7 @@ classes$(PPUEXT) : sysutils$(PPUEXT) rtlconsts$(PPUEXT) types$(PPUEXT) typinfo$(
$(COMPILER) -Fi$(OBJPASDIR)/classes $(UNIXINC)/classes.pp
typinfo$(PPUEXT): sysutils$(PPUEXT) $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT) rtlconsts$(PPUEXT)
$(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp
-character$(PPUEXT): sysutils$(PPUEXT) $(OBJPASDIR)/character.pas objpas$(PPUEXT) rtlconsts$(PPUEXT) buildcollations$(PPUEXT)
+character$(PPUEXT): sysutils$(PPUEXT) $(OBJPASDIR)/character.pas objpas$(PPUEXT) rtlconsts$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/character.pas
math$(PPUEXT): sysutils$(PPUEXT) $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/math.pp
@@ -2676,9 +2700,6 @@ sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUE
$(COMPILER) $(OBJPASDIR)/sysconst.pp
rtlconsts$(PPUEXT) : $(OBJPASDIR)/rtlconsts.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/rtlconsts.pp
-strutils$(PPUEXT) : $(OBJPASDIR)/strutils.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/strutils.pp
macpas$(PPUEXT) : $(INC)/macpas.pp objpas$(PPUEXT) math$(PPUEXT)
$(COMPILER) $(INC)/macpas.pp $(REDIR)
ifeq ($(ARCH),x86_64)
@@ -2696,15 +2717,11 @@ lnfogdb$(PPUEXT) : $(UNIXINC)/lnfogdb.pp $(SYSTEMUNIT)$(PPUEXT) ctypes$(PPUEXT)
charset$(PPUEXT) : $(INC)/charset.pp objpas$(PPUEXT)
cpall$(PPUEXT): $(RTL)/charmaps/cpall.pas system$(PPUEXT) charset$(PPUEXT)
$(COMPILER) -Fu$(INC) -Fi$(RTL)/charmaps $(RTL)/charmaps/cpall.pas
-buildcollations$(PPUEXT): $(OBJPASDIR)/collations/buildcollations.pas system$(PPUEXT) objpas$(PPUEXT) sysutils$(PPUEXT)
- $(COMPILER) -Fu$(OBJPASDIR) -Fi$(OBJPASDIR)/collations -I$(OBJPASDIR)/collations $(OBJPASDIR)/collations/buildcollations.pas
fpwidestring$(PPUEXT): $(OBJPASDIR)/fpwidestring.pp character$(PPUEXT) unixcp$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/fpwidestring.pp
termio$(PPUEXT) : baseunix$(PPUEXT)
dl$(PPUEXT) : $(SYSTEMUNIT)$(PPUEXT) unixtype$(PPUEXT) ctypes$(PPUEXT)
errors$(PPUEXT) : $(UNIXINC)/errors.pp strings$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) strings$(PPUEXT)
-ipc$(PPUEXT) : $(UNIXINC)/ipc.pp unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) baseunix$(PPUEXT)
-terminfo$(PPUEXT) : terminfo.pp baseunix$(PPUEXT)
cmem$(PPUEXT) : $(INC)/cmem.pp $(SYSTEMUNIT)$(PPUEXT)
sysctl$(PPUEXT) : $(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) unixtype$(PPUEXT)
cthreads$(PPUEXT) : $(UNIXINC)/cthreads.pp unix$(PPUEXT) sysutils$(PPUEXT)
diff --git a/rtl/darwin/Makefile.fpc b/rtl/darwin/Makefile.fpc
index dcd61c1895..5cace64feb 100644
--- a/rtl/darwin/Makefile.fpc
+++ b/rtl/darwin/Makefile.fpc
@@ -11,17 +11,16 @@ loaders=
units=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 \
strings sysctl baseunix unixutil \
unix initc cmem dynlibs $(CPU_UNITS) \
- dos dl printer \
+ dos dl \
sysutils typinfo fgl classes math types \
- charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf lnfogdb \
- errors ipc terminfo termio \
- sysconst cthreads strutils rtlconsts cwstring bsd fpwidestring \
- fpintres fpextres clocale objc objcbase unixcp
+ charset cpall character getopts heaptrc lineinfo lnfodwrf lnfogdb \
+ errors termio \
+ sysconst cthreads rtlconsts cwstring bsd fpwidestring \
+ fpintres fpextres objc objcbase unixcp
implicitunits=exeinfo \
cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 \
- cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 \
- unicodedata unicodeducet unicodenumtable \
- collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+ cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 \
+ unicodedata unicodenumtable
rsts=math typinfo classes sysconst rtlconsts
@@ -30,7 +29,6 @@ nortl=y
[install]
fpcpackage=y
-buildunit=buildcollations
[default]
fpcdir=../..
@@ -46,10 +44,10 @@ libname=libfprtl.so
libversion=2.0.0
libunits=$(SYSTEMUNIT) objpas strings \
unix \
- dos crt objects printer \
+ dos crt objects \
sysutils typinfo math \
cpu mmx getopts heaptrc \
- errors ipc
+ errors
[prerules]
ifeq ($(CPU_TARGET),i386)
@@ -127,8 +125,6 @@ $(SYSTEMUNIT)$(PPUEXT) : $(BSDINC)/$(SYSTEMUNIT).pp $(SYSDEPS)
uuchar$(PPUEXT): $(SYSTEMUNIT)$(PPUEXT) $(INC)/uuchar.pp
-clocale$(PPUEXT): initc$(PPUEXT) sysutils$(PPUEXT) unixtype$(PPUEXT)
-
fpintres$(PPUEXT): $(SYSTEMUNIT)$(PPUEXT)
fpextres$(PPUEXT): $(SYSTEMUNIT)$(PPUEXT) baseunix$(PPUEXT)
@@ -178,7 +174,6 @@ unixcp$(PPUEXT) : $(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) ba
dos$(PPUEXT) : $(SYSTEMUNIT)$(PPUEXT) strings$(PPUEXT) unix$(PPUEXT) $(UNIXINC)/dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \
unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-printer$(PPUEXT) : unix$(PPUEXT) strings$(PPUEXT) baseunix$(PPUEXT) $(UNIXINC)/printer.pp $(INC)/textrec.inc unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
#
# Graph
@@ -200,7 +195,7 @@ typinfo$(PPUEXT): sysutils$(PPUEXT) $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT) rtlc
$(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp
# let it depend on buildcollations to prevent simultaneous building of unicodedata
-character$(PPUEXT): sysutils$(PPUEXT) $(OBJPASDIR)/character.pas objpas$(PPUEXT) rtlconsts$(PPUEXT) buildcollations$(PPUEXT)
+character$(PPUEXT): sysutils$(PPUEXT) $(OBJPASDIR)/character.pas objpas$(PPUEXT) rtlconsts$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/character.pas
math$(PPUEXT): sysutils$(PPUEXT) $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT)
@@ -221,10 +216,6 @@ sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUE
rtlconsts$(PPUEXT) : $(OBJPASDIR)/rtlconsts.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/rtlconsts.pp
-strutils$(PPUEXT) : $(OBJPASDIR)/strutils.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/strutils.pp
-
#
# Mac Pascal Model
#
@@ -260,9 +251,6 @@ charset$(PPUEXT) : $(INC)/charset.pp objpas$(PPUEXT)
cpall$(PPUEXT): $(RTL)/charmaps/cpall.pas system$(PPUEXT) charset$(PPUEXT)
$(COMPILER) -Fu$(INC) -Fi$(RTL)/charmaps $(RTL)/charmaps/cpall.pas
-buildcollations$(PPUEXT): $(OBJPASDIR)/collations/buildcollations.pas system$(PPUEXT) objpas$(PPUEXT) sysutils$(PPUEXT)
- $(COMPILER) -Fu$(OBJPASDIR) -Fi$(OBJPASDIR)/collations -I$(OBJPASDIR)/collations $(OBJPASDIR)/collations/buildcollations.pas
-
fpwidestring$(PPUEXT): $(OBJPASDIR)/fpwidestring.pp character$(PPUEXT) unixcp$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/fpwidestring.pp
#
@@ -275,10 +263,6 @@ dl$(PPUEXT) : $(SYSTEMUNIT)$(PPUEXT) unixtype$(PPUEXT) ctypes$(PPUEXT)
errors$(PPUEXT) : $(UNIXINC)/errors.pp strings$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) strings$(PPUEXT)
-ipc$(PPUEXT) : $(UNIXINC)/ipc.pp unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) baseunix$(PPUEXT)
-
-terminfo$(PPUEXT) : terminfo.pp baseunix$(PPUEXT)
-
cmem$(PPUEXT) : $(INC)/cmem.pp $(SYSTEMUNIT)$(PPUEXT)
sysctl$(PPUEXT) : $(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) unixtype$(PPUEXT)
diff --git a/rtl/darwin/console.pp b/rtl/darwin/console.pp
index 7f6a7b4d1f..1197dd87c7 100644
--- a/rtl/darwin/console.pp
+++ b/rtl/darwin/console.pp
@@ -1453,11 +1453,11 @@ const
{ Logitech MouseMan data packet (M+ protocol) }
MOUSE_LMAN_BUTTON2DOWN = $20; { middle button, the 4th byte }
-{ ALPS GlidePoint extention (variant of M+ protocol) }
+{ ALPS GlidePoint extension (variant of M+ protocol) }
MOUSE_ALPS_BUTTON2DOWN = $20; { middle button, the 4th byte }
MOUSE_ALPS_TAP = $10; { `tapping' action, the 4th byte }
-{ Kinsington Thinking Mouse extention (variant of M+ protocol) }
+{ Kinsington Thinking Mouse extension (variant of M+ protocol) }
MOUSE_THINK_BUTTON2DOWN = $20; { lower-left button, the 4th byte }
MOUSE_THINK_BUTTON4DOWN = $10; { lower-right button, the 4th byte }
diff --git a/rtl/embedded/Makefile b/rtl/embedded/Makefile
index 1b753066c2..eaa023ff8f 100644
--- a/rtl/embedded/Makefile
+++ b/rtl/embedded/Makefile
@@ -1,8 +1,8 @@
#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-04-01 rev 27428]
#
default: all
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos
BSDs = freebsd netbsd openbsd darwin
UNIXs = linux $(BSDs) solaris qnx haiku aix
LIMIT83fs = go32v2 os2 emx watcom msdos
@@ -185,6 +185,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t
endif
override FPCOPT+=-Cp$(SUBARCH)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+ifeq ($(SUBARCH),)
+$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined)
+endif
+override FPCOPT+=-Cp$(SUBARCH)
+endif
ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
TARGETSUFFIX=$(OS_TARGET)
SOURCESUFFIX=$(OS_SOURCE)
@@ -329,6 +335,12 @@ PROCINC=$(RTL)/$(CPU_TARGET)
UNITPREFIX=rtl
SYSTEMUNIT=system
override FPCOPT+=@rtl.cfg
+LOADERS=
+ifeq ($(ARCH),mipsel)
+ifeq ($(SUBARCH),pic32mx)
+override LOADERS=startup
+endif
+endif
ifdef RELEASE
override FPCOPT+=-Ur
endif
@@ -359,6 +371,11 @@ endif
ifeq ($(ARCH),i386)
CPU_UNITS=multiboot
endif
+ifeq ($(ARCH),mipsel)
+ifeq ($(SUBARCH),pic32mx)
+ CPU_UNITS=pic32mx1xxfxxxb pic32mx2xxfxxxb pic32mx1xxfxxxc pic32mx2xxfxxxc pic32mx1xxfxxxd pic32mx2xxfxxxd pic32mx7x5fxxxl pic32mx7x5fxxxh
+endif
+endif
OBJPASDIR=$(RTL)/objpas
GRAPHDIR=$(INC)/graph
ifeq ($(FULL_TARGET),i386-linux)
@@ -571,6 +588,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas heapmgr consoleio $(CPU_SPECIFIC_COMMON_UNITS)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas heapmgr consoleio $(CPU_SPECIFIC_COMMON_UNITS)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas heapmgr consoleio $(CPU_SPECIFIC_COMMON_UNITS)
endif
@@ -583,6 +603,231 @@ endif
ifeq ($(FULL_TARGET),i8086-msdos)
override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas heapmgr consoleio $(CPU_SPECIFIC_COMMON_UNITS)
endif
+ifeq ($(FULL_TARGET),i386-linux)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),i386-go32v2)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),i386-win32)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),i386-os2)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),i386-freebsd)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),i386-beos)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),i386-haiku)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),i386-netbsd)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),i386-solaris)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),i386-qnx)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),i386-netware)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),i386-openbsd)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),i386-wdosx)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),i386-darwin)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),i386-emx)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),i386-watcom)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),i386-netwlibc)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),i386-wince)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),i386-embedded)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),i386-symbian)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),i386-nativent)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),i386-iphonesim)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),i386-android)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),m68k-linux)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),m68k-freebsd)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),m68k-netbsd)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),m68k-amiga)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),m68k-atari)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),m68k-openbsd)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),m68k-palmos)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),m68k-embedded)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),powerpc-linux)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),powerpc-netbsd)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),powerpc-amiga)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),powerpc-macos)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),powerpc-darwin)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),powerpc-morphos)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),powerpc-embedded)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),powerpc-wii)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),powerpc-aix)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),sparc-linux)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),sparc-netbsd)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),sparc-solaris)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),sparc-embedded)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),x86_64-linux)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),x86_64-freebsd)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),x86_64-netbsd)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),x86_64-solaris)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),x86_64-openbsd)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),x86_64-darwin)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),x86_64-win64)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),x86_64-embedded)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),arm-linux)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),arm-palmos)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),arm-darwin)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),arm-wince)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),arm-gba)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),arm-nds)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),arm-embedded)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),arm-symbian)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),arm-android)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),powerpc64-linux)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),powerpc64-darwin)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),powerpc64-embedded)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),powerpc64-aix)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),avr-embedded)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),armeb-linux)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),armeb-embedded)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),mips-linux)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),mipsel-linux)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),mipsel-android)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),jvm-java)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),jvm-android)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),i8086-msdos)
+override TARGET_LOADERS+=$(LOADERS)
+endif
override INSTALL_FPCPACKAGE=y
ifeq ($(FULL_TARGET),i386-linux)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
@@ -794,6 +1039,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
endif
@@ -1016,6 +1264,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
endif
@@ -1809,16 +2060,49 @@ ifdef ACROSSCOMPILE
override FPCOPT+=$(CROSSOPT)
endif
override COMPILER:=$(strip $(FPC) $(FPCOPT))
-ifeq (,$(findstring -s ,$(COMPILER)))
+ifneq (,$(findstring -sh ,$(COMPILER)))
+UseEXECPPAS=1
+endif
+ifneq (,$(findstring -s ,$(COMPILER)))
+ifeq ($(FULL_SOURCE),$(FULL_TARGET))
+UseEXECPPAS=1
+endif
+endif
+ifneq ($(UseEXECPPAS),1)
EXECPPAS=
else
-ifeq ($(FULL_SOURCE),$(FULL_TARGET))
ifdef RUNBATCH
EXECPPAS:=@$(RUNBATCH) $(PPAS)
else
EXECPPAS:=@$(PPAS)
endif
endif
+.PHONY: fpc_loaders
+ifneq ($(TARGET_LOADERS),)
+override ALLTARGET+=fpc_loaders
+override CLEANTARGET+=fpc_loaders_clean
+override INSTALLTARGET+=fpc_loaders_install
+override LOADEROFILES:=$(addsuffix $(OEXT),$(TARGET_LOADERS))
+endif
+%$(OEXT): %$(LOADEREXT)
+ifdef COMPILER_UNITTARGETDIR
+ $(AS) -o $(COMPILER_UNITTARGETDIR)/$*$(OEXT) $<
+else
+ $(AS) -o $*$(OEXT) $<
+endif
+fpc_loaders: $(COMPILER_UNITTARGETDIR) $(LOADEROFILES)
+fpc_loaders_clean:
+ifdef COMPILER_UNITTARGETDIR
+ -$(DEL) $(addprefix $(COMPILER_UNITTARGETDIR)/,$(LOADEROFILES))
+else
+ -$(DEL) $(LOADEROFILES)
+endif
+fpc_loaders_install:
+ $(MKDIR) $(INSTALL_UNITDIR)
+ifdef COMPILER_UNITTARGETDIR
+ $(INSTALL) $(addprefix $(COMPILER_UNITTARGETDIR)/,$(LOADEROFILES)) $(INSTALL_UNITDIR)
+else
+ $(INSTALL) $(LOADEROFILES) $(INSTALL_UNITDIR)
endif
.PHONY: fpc_units
ifneq ($(TARGET_UNITS)$(TARGET_IMPLICITUNITS),)
@@ -2187,6 +2471,8 @@ SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
include $(PROCINC)/makefile.cpu
SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
+startup$(OEXT) : $(CPU_TARGET)/startup.s
+ $(AS) $(ASTARGET) -o $(UNITTARGETDIRPREFIX)startup$(OEXT) $(CPU_TARGET)/startup.s -mabi=32 -march=pic32mx -mtune=pic32mx -W -EL -msym32
$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS) $(INC)/softfpu.pp
$(COMPILER) -Us -Sg $(SYSTEMUNIT).pp $(REDIR)
uuchar$(PPUEXT): $(INC)/uuchar.pp $(SYSTEMUNIT)$(PPUEXT)
diff --git a/rtl/embedded/Makefile.fpc b/rtl/embedded/Makefile.fpc
index 447392af26..dba21fe45f 100644
--- a/rtl/embedded/Makefile.fpc
+++ b/rtl/embedded/Makefile.fpc
@@ -6,7 +6,9 @@
main=rtl
[target]
-loaders=
+loaders=$(LOADERS)
+
+
# not all targets include enough features to build all units so
# the common units which are not compiled for all CPUs are stored in
# CPU_SPECIFIC_COMMON_UNITS
@@ -44,6 +46,12 @@ PROCINC=$(RTL)/$(CPU_TARGET)
UNITPREFIX=rtl
SYSTEMUNIT=system
override FPCOPT+=@rtl.cfg
+LOADERS=
+ifeq ($(ARCH),mipsel)
+ifeq ($(SUBARCH),pic32mx)
+override LOADERS=startup
+endif
+endif
ifdef RELEASE
override FPCOPT+=-Ur
@@ -80,6 +88,12 @@ ifeq ($(ARCH),i386)
CPU_UNITS=multiboot
endif
+ifeq ($(ARCH),mipsel)
+ifeq ($(SUBARCH),pic32mx)
+ CPU_UNITS=pic32mx1xxfxxxb pic32mx2xxfxxxb pic32mx1xxfxxxc pic32mx2xxfxxxc pic32mx1xxfxxxd pic32mx2xxfxxxd pic32mx7x5fxxxl pic32mx7x5fxxxh
+endif
+endif
+
# Paths
OBJPASDIR=$(RTL)/objpas
GRAPHDIR=$(INC)/graph
@@ -101,6 +115,12 @@ SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
# Put system unit dependencies together.
SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
+#
+# Loaders
+#
+
+startup$(OEXT) : $(CPU_TARGET)/startup.s
+ $(AS) $(ASTARGET) -o $(UNITTARGETDIRPREFIX)startup$(OEXT) $(CPU_TARGET)/startup.s -mabi=32 -march=pic32mx -mtune=pic32mx -W -EL -msym32
#
# Base Units (System, strings, os-dependent-base-unit)
diff --git a/rtl/embedded/rtl.cfg b/rtl/embedded/rtl.cfg
index d9851f1657..7a2f08ea0f 100644
--- a/rtl/embedded/rtl.cfg
+++ b/rtl/embedded/rtl.cfg
@@ -49,3 +49,18 @@
-SfRANDOM
#endif CPUARM
+# mipsel is powerful enough to handle most object pascal constructs
+# it is only a matter of size
+#ifdef CPUMIPSEL
+-SfSOFTFPU
+-SfCLASSES
+-SfEXCEPTIONS
+-SfANSISTRINGS
+-SfRTTI
+-SfWIDESTRINGS
+-SfDYNARRAYS
+-SfVARIANTS
+-SfCOMMANDARGS
+-SfRANDOM
+#endif CPUMIPSEL
+
diff --git a/rtl/embedded/system.pp b/rtl/embedded/system.pp
index a4426c4420..c4d73d75a3 100644
--- a/rtl/embedded/system.pp
+++ b/rtl/embedded/system.pp
@@ -27,6 +27,8 @@ Unit System;
{ Do not use standard memory manager }
{$define HAS_MEMORYMANAGER}
+{$define FPC_ANSI_TEXTFILEREC}
+
{$I check.inc}
{$I systemh.inc}
@@ -210,6 +212,8 @@ var
begin
{$ifdef FPC_HAS_FEATURE_FPU}
+ { Beware: The same code is executed from fpc_cpuinit, which is included
+ per-cpu unconditionally }
SysResetFPU;
if not(IsLibrary) then
SysInitFPU;
diff --git a/rtl/emx/Makefile b/rtl/emx/Makefile
index 2224274c89..aae628e63d 100644
--- a/rtl/emx/Makefile
+++ b/rtl/emx/Makefile
@@ -1,8 +1,8 @@
#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-04-01 rev 27428]
#
default: all
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos
BSDs = freebsd netbsd openbsd darwin
UNIXs = linux $(BSDs) solaris qnx haiku aix
LIMIT83fs = go32v2 os2 emx watcom msdos
@@ -186,6 +186,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t
endif
override FPCOPT+=-Cp$(SUBARCH)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+ifeq ($(SUBARCH),)
+$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined)
+endif
+override FPCOPT+=-Cp$(SUBARCH)
+endif
ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
TARGETSUFFIX=$(OS_TARGET)
SOURCESUFFIX=$(OS_SOURCE)
@@ -339,448 +345,454 @@ endif
OBJPASDIR=$(RTL)/objpas
GRAPHDIR=$(INC)/graph
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst strutils ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils classes fgl math typinfo charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs types rtlconst sysconst ctypes
endif
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-linux)
override TARGET_LOADERS+=prt0 prt1
@@ -992,6 +1004,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_LOADERS+=prt0 prt1
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_LOADERS+=prt0 prt1
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_LOADERS+=prt0 prt1
endif
@@ -1214,6 +1229,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_RSTS+=math typinfo pmhelp classes sysconst
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_RSTS+=math typinfo pmhelp classes sysconst
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_RSTS+=math typinfo pmhelp classes sysconst
endif
@@ -1437,6 +1455,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(OS2INC)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(OS2INC)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(OS2INC)
endif
@@ -1659,6 +1680,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(OS2INC)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(OS2INC)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(OS2INC)
endif
@@ -2452,17 +2476,23 @@ ifdef ACROSSCOMPILE
override FPCOPT+=$(CROSSOPT)
endif
override COMPILER:=$(strip $(FPC) $(FPCOPT))
-ifeq (,$(findstring -s ,$(COMPILER)))
+ifneq (,$(findstring -sh ,$(COMPILER)))
+UseEXECPPAS=1
+endif
+ifneq (,$(findstring -s ,$(COMPILER)))
+ifeq ($(FULL_SOURCE),$(FULL_TARGET))
+UseEXECPPAS=1
+endif
+endif
+ifneq ($(UseEXECPPAS),1)
EXECPPAS=
else
-ifeq ($(FULL_SOURCE),$(FULL_TARGET))
ifdef RUNBATCH
EXECPPAS:=@$(RUNBATCH) $(PPAS)
else
EXECPPAS:=@$(PPAS)
endif
endif
-endif
.PHONY: fpc_loaders
ifneq ($(TARGET_LOADERS),)
override ALLTARGET+=fpc_loaders
@@ -2888,7 +2918,6 @@ pmbidi$(PPUEXT) : $(OS2INC)/pmbidi.pas os2def$(PPUEXT) pmwin$(PPUEXT) $(SYSTEMUN
dynlibs$(PPUEXT) : $(INC)/dynlibs.pas doscalls$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
dos$(PPUEXT) : dos.pas $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \
doscalls$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-printer$(PPUEXT) : $(OS2INC)/printer.pas $(INC)/textrec.inc $(SYSTEMUNIT)$(PPUEXT)
sysutils$(PPUEXT) : sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
objpas$(PPUEXT) dos$(PPUEXT) sysconst$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) -Fi$(OBJPASDIR)/sysutils sysutils.pp
@@ -2900,13 +2929,6 @@ math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT) $(SYSTEMUN
$(COMPILER) $(OBJPASDIR)/math.pp
typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT) rtlconst$(PPUEXT)
$(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp
-varutils$(PPUEXT) : $(OBJPASDIR)/cvarutil.inc $(OBJPASDIR)/varutils.inc \
- $(OBJPASDIR)/varutilh.inc varutils.pp sysutils$(PPUEXT)
- $(COMPILER) -Fi$(OBJPASDIR) $(OS2INC)/varutils.pp
-variants$(PPUEXT) : $(INC)/variants.pp varutils$(PPUEXT) sysutils$(PPUEXT) sysconst$(PPUEXT) typinfo$(PPUEXT) rtlconst$(PPUEXT)
- $(COMPILER) -Fi$(INC) $(INC)/variants.pp
-fmtbcd$(PPUEXT) : $(OBJPASDIR)/fmtbcd.pp objpas$(PPUEXT) sysutils$(PPUEXT) variants$(PPUEXT) classes$(PPUEXT) system$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/fmtbcd.pp
types$(PPUEXT) : $(OBJPASDIR/types.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/types.pp
fgl$(PPUEXT) : $(OBJPASDIR)/fgl.pp objpas$(PPUEXT) types$(PPUEXT) system$(PPUEXT) sysutils$(PPUEXT)
@@ -2915,15 +2937,8 @@ rtlconst$(PPUEXT) : $(OBJPASDIR)/rtlconst.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUE
$(COMPILER) -Fi$(OBJPASDIR) $(OBJPASDIR)/rtlconst.pp
sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/sysconst.pp
-dateutil$(PPUEXT) : $(OBJPASDIR)/dateutil.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) -Fi$(OBJPASDIR) $(OBJPASDIR)/dateutil.pp
-convutil$(PPUEXT) : $(OBJPASDIR)/convutil.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) -Fi$(OBJPASDIR) $(OBJPASDIR)/convutil.pp
-strutils$(PPUEXT) : $(OBJPASDIR)/strutils.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/strutils.pp
macpas$(PPUEXT) : $(INC)/macpas.pp objpas$(PPUEXT) math$(PPUEXT)
$(COMPILER) $(INC)/macpas.pp $(REDIR)
-ucomplex$(PPUEXT): $(INC)/ucomplex.pp math$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT)
mmx$(PPUEXT) : $(PROCINC)/mmx.pp cpu$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
getopts$(PPUEXT) : $(INC)/getopts.pp $(SYSTEMUNIT)$(PPUEXT)
diff --git a/rtl/emx/Makefile.fpc b/rtl/emx/Makefile.fpc
index 67649c16de..26b1579571 100644
--- a/rtl/emx/Makefile.fpc
+++ b/rtl/emx/Makefile.fpc
@@ -10,15 +10,15 @@ loaders=prt0 prt1
units=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings \
ports os2def doscalls moncalls kbdcalls moucalls viocalls \
pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi \
- dos printer \
+ dos \
sysutils classes fgl math typinfo \
charset cpall cpu mmx getopts heaptrc lnfodwrf lineinfo dynlibs \
types rtlconst sysconst \
- strutils ctypes
+ ctypes
rsts=math typinfo pmhelp classes sysconst
implicitunits=exeinfo \
cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 \
- cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+ cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
[require]
nortl=y
@@ -149,11 +149,6 @@ dynlibs$(PPUEXT) : $(INC)/dynlibs.pas doscalls$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
dos$(PPUEXT) : dos.pas $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \
doscalls$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-#crt$(PPUEXT) : crt.pas $(INC)/textrec.inc $(SYSTEMUNIT)$(PPUEXT)
-
-#objects$(PPUEXT) : $(INC)/objects.pp dos$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-
-printer$(PPUEXT) : $(OS2INC)/printer.pas $(INC)/textrec.inc $(SYSTEMUNIT)$(PPUEXT)
#graph$(PPUEXT) : graph.pp
@@ -176,16 +171,6 @@ math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT) $(SYSTEMUN
typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT) rtlconst$(PPUEXT)
$(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp
-varutils$(PPUEXT) : $(OBJPASDIR)/cvarutil.inc $(OBJPASDIR)/varutils.inc \
- $(OBJPASDIR)/varutilh.inc varutils.pp sysutils$(PPUEXT)
- $(COMPILER) -Fi$(OBJPASDIR) $(OS2INC)/varutils.pp
-
-variants$(PPUEXT) : $(INC)/variants.pp varutils$(PPUEXT) sysutils$(PPUEXT) sysconst$(PPUEXT) typinfo$(PPUEXT) rtlconst$(PPUEXT)
- $(COMPILER) -Fi$(INC) $(INC)/variants.pp
-
-fmtbcd$(PPUEXT) : $(OBJPASDIR)/fmtbcd.pp objpas$(PPUEXT) sysutils$(PPUEXT) variants$(PPUEXT) classes$(PPUEXT) system$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/fmtbcd.pp
-
types$(PPUEXT) : $(OBJPASDIR/types.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/types.pp
@@ -198,14 +183,6 @@ rtlconst$(PPUEXT) : $(OBJPASDIR)/rtlconst.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUE
sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/sysconst.pp
-dateutil$(PPUEXT) : $(OBJPASDIR)/dateutil.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) -Fi$(OBJPASDIR) $(OBJPASDIR)/dateutil.pp
-
-convutil$(PPUEXT) : $(OBJPASDIR)/convutil.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) -Fi$(OBJPASDIR) $(OBJPASDIR)/convutil.pp
-
-strutils$(PPUEXT) : $(OBJPASDIR)/strutils.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/strutils.pp
#
# Mac Pascal Model
@@ -218,8 +195,6 @@ macpas$(PPUEXT) : $(INC)/macpas.pp objpas$(PPUEXT) math$(PPUEXT)
# Other system-independent RTL Units
#
-ucomplex$(PPUEXT): $(INC)/ucomplex.pp math$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-
cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT)
mmx$(PPUEXT) : $(PROCINC)/mmx.pp cpu$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
diff --git a/rtl/emx/system.pas b/rtl/emx/system.pas
index be207fcc09..9e46379485 100644
--- a/rtl/emx/system.pas
+++ b/rtl/emx/system.pas
@@ -535,7 +535,7 @@ begin
begin
stackbottom:=pointer(heap_brk); {In DOS mode, heap_brk is
also the stack bottom.}
- StackTop := StackBottom + InitialStkLen;
+ StackLength:=sptr-stackbottom;
{$WARNING To be checked/corrected!}
ApplicationType := 1; (* Running under DOS. *)
IsConsole := true;
@@ -549,8 +549,10 @@ begin
osOS2:
begin
DosGetInfoBlocks (@TIB, @PIB);
- StackBottom := pointer (TIB^.Stack);
- StackTop := TIB^.StackLimit;
+ StackLength:=CheckInitialStkLen(InitialStklen);
+ { OS/2 has top of stack in TIB^.StackLimit - unlike Windows where it is in TIB^.Stack }
+ StackBottom := TIB^.StackLimit - StackLength;
+
Environment := pointer (PIB^.Env);
ApplicationType := PIB^.ProcType;
ProcessID := PIB^.PID;
@@ -562,7 +564,7 @@ begin
begin
stackbottom:=nil; {Not sure how to get it, but seems to be
always zero.}
- StackTop := StackBottom + InitialStkLen;
+ StackLength:=sptr-stackbottom;
{$WARNING To be checked/corrected!}
ApplicationType := 1; (* Running under DOS. *)
IsConsole := true;
@@ -570,7 +572,6 @@ begin
end;
end;
exitproc:=nil;
- StackLength := CheckInitialStkLen (InitialStkLen);
{Initialize the heap.}
initheap;
diff --git a/rtl/fpmake.inc b/rtl/fpmake.inc
index 45634b7a6c..27ba60b07e 100644
--- a/rtl/fpmake.inc
+++ b/rtl/fpmake.inc
@@ -201,7 +201,6 @@ begin
T.Dependencies.Add('sysutils');
T:=AddUnit('objpas/math.pp');
T.Dependencies.Add('sysutils');
- T.Dependencies.Add(CPUDir+'mathuh.inc');
T.Dependencies.Add(CPUDir+'mathu.inc');
T.ResourceStrings:=True;
T:=AddUnit('objpas/sysconst.pp');
@@ -248,4 +247,4 @@ begin
// T:=AddUnit('inc/pagemem.pp');
end;
AddSystemDependencies(Installer.Targets);
-end; \ No newline at end of file
+end;
diff --git a/rtl/fpmake.pp b/rtl/fpmake.pp
index 1e63e70d3e..c6fa52bd16 100644
--- a/rtl/fpmake.pp
+++ b/rtl/fpmake.pp
@@ -547,7 +547,6 @@ begin
With T.Dependencies do
begin
AddUnit('sysutils');
- AddInclude('mathuh.inc');
AddInclude('mathu.inc');
end;
diff --git a/rtl/freebsd/Makefile b/rtl/freebsd/Makefile
index 8e83afcca7..e9f8cffc35 100644
--- a/rtl/freebsd/Makefile
+++ b/rtl/freebsd/Makefile
@@ -1,8 +1,8 @@
#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-04-01 rev 27428]
#
default: all
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos
BSDs = freebsd netbsd openbsd darwin
UNIXs = linux $(BSDs) solaris qnx haiku aix
LIMIT83fs = go32v2 os2 emx watcom msdos
@@ -185,6 +185,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t
endif
override FPCOPT+=-Cp$(SUBARCH)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+ifeq ($(SUBARCH),)
+$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined)
+endif
+override FPCOPT+=-Cp$(SUBARCH)
+endif
ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
TARGETSUFFIX=$(OS_TARGET)
SOURCESUFFIX=$(OS_SOURCE)
@@ -351,448 +357,454 @@ override FPCOPT+=-Ur
endif
OBJPASDIR=$(RTL)/objpas
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd freebsd console serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd freebsd console sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-linux)
override TARGET_LOADERS+=prt0 cprt0 gprt0 dllprt0
@@ -1004,6 +1016,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_LOADERS+=prt0 cprt0 gprt0 dllprt0
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_LOADERS+=prt0 cprt0 gprt0 dllprt0
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_LOADERS+=prt0 cprt0 gprt0 dllprt0
endif
@@ -1226,6 +1241,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_RSTS+=math typinfo classes sysconst
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_RSTS+=math typinfo classes sysconst
endif
@@ -1449,6 +1467,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(BSDINC) $(BSDPROCINC) $(OSPROCINC)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(BSDINC) $(BSDPROCINC) $(OSPROCINC)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(BSDINC) $(BSDPROCINC) $(OSPROCINC)
endif
@@ -1671,6 +1692,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(BSDINC) $(COMMON)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(BSDINC) $(COMMON)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(BSDINC) $(COMMON)
endif
@@ -2464,17 +2488,23 @@ ifdef ACROSSCOMPILE
override FPCOPT+=$(CROSSOPT)
endif
override COMPILER:=$(strip $(FPC) $(FPCOPT))
-ifeq (,$(findstring -s ,$(COMPILER)))
+ifneq (,$(findstring -sh ,$(COMPILER)))
+UseEXECPPAS=1
+endif
+ifneq (,$(findstring -s ,$(COMPILER)))
+ifeq ($(FULL_SOURCE),$(FULL_TARGET))
+UseEXECPPAS=1
+endif
+endif
+ifneq ($(UseEXECPPAS),1)
EXECPPAS=
else
-ifeq ($(FULL_SOURCE),$(FULL_TARGET))
ifdef RUNBATCH
EXECPPAS:=@$(RUNBATCH) $(PPAS)
else
EXECPPAS:=@$(PPAS)
endif
endif
-endif
.PHONY: fpc_loaders
ifneq ($(TARGET_LOADERS),)
override ALLTARGET+=fpc_loaders
@@ -2883,8 +2913,6 @@ $(SYSTEMUNIT)$(PPUEXT) : $(BSDINC)/$(SYSTEMUNIT).pp unxconst.inc $(SYSDEPS)
uuchar$(PPUEXT): $(SYSTEMUNIT)$(PPUEXT) $(INC)/uuchar.pp
objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/objpas.pp
-dateutils$(PPUEXT): $(OBJPASDIR)/dateutils.pp baseunix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/dateutils.pp
strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc\
$(PROCINC)/strings.inc $(PROCINC)/stringss.inc\
$(SYSTEMUNIT)$(PPUEXT)
@@ -2902,9 +2930,6 @@ unixcp$(PPUEXT) : $(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) ba
$(COMPILER) $(UNIXINC)/unixcp.pp
dos$(PPUEXT) : $(UNIXINC)/dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \
unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-crt$(PPUEXT) : $(UNIXINC)/crt.pp $(INC)/textrec.inc unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-objects$(PPUEXT) : $(INC)/objects.pp $(SYSTEMUNIT)$(PPUEXT)
-printer$(PPUEXT) : $(UNIXINC)/printer.pp $(INC)/textrec.inc unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
sysutils$(PPUEXT) : $(UNIXINC)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
objpas$(PPUEXT) unix$(PPUEXT) errors$(PPUEXT) sysconst$(PPUEXT)
$(COMPILER) -Fi$(OBJPASDIR)/sysutils $(UNIXINC)/sysutils.pp
@@ -2919,18 +2944,11 @@ typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT) rtlconsts$(PPUEXT)
$(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp
math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/math.pp
-gettext$(PPUEXT): $(OBJPASDIR)/gettext.pp objpas$(PPUEXT) sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/gettext.pp
-varutils$(PPUEXT) : $(OBJPASDIR)/cvarutil.inc $(OBJPASDIR)/varutils.inc \
- $(OBJPASDIR)/varutilh.inc varutils.pp
- $(COMPILER) -I$(OBJPASDIR) $(UNIXINC)/varutils.pp
-fmtbcd$(PPUEXT) : $(OBJPASDIR)/fmtbcd.pp objpas$(PPUEXT) sysutils$(PPUEXT) variants$(PPUEXT) classes$(PPUEXT) system$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/fmtbcd.pp
types$(PPUEXT) : $(OBJPASDIR)/types.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/types.pp
sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/sysconst.pp
-character$(PPUEXT): sysutils$(PPUEXT) $(OBJPASDIR)/character.pas objpas$(PPUEXT) rtlconsts$(PPUEXT) buildcollations$(PPUEXT)
+character$(PPUEXT): sysutils$(PPUEXT) $(OBJPASDIR)/character.pas objpas$(PPUEXT) rtlconsts$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/character.pas
macpas$(PPUEXT) : $(INC)/macpas.pp objpas$(PPUEXT) math$(PPUEXT)
$(COMPILER) $(INC)/macpas.pp $(REDIR)
@@ -2949,28 +2967,13 @@ lnfodwrf$(PPUEXT) : $(INC)/lnfodwrf.pp $(SYSTEMUNIT)$(PPUEXT)
charset$(PPUEXT) : $(INC)/charset.pp $(SYSTEMUNIT)$(PPUEXT)
cpall$(PPUEXT): $(RTL)/charmaps/cpall.pas system$(PPUEXT) charset$(PPUEXT)
$(COMPILER) -Fu$(INC) -Fi$(RTL)/charmaps $(RTL)/charmaps/cpall.pas
-buildcollations$(PPUEXT): $(OBJPASDIR)/collations/buildcollations.pas system$(PPUEXT) objpas$(PPUEXT) sysutils$(PPUEXT)
- $(COMPILER) -Fu$(OBJPASDIR) -Fi$(OBJPASDIR)/collations -I$(OBJPASDIR)/collations $(OBJPASDIR)/collations/buildcollations.pas
fpwidestring$(PPUEXT): $(OBJPASDIR)/fpwidestring.pp character$(PPUEXT) unixcp$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/fpwidestring.pp
errors$(PPUEXT) : $(UNIXINC)/errors.pp strings$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-ipc$(PPUEXT) : $(UNIXINC)/ipc.pp unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-terminfo$(PPUEXT) : terminfo.pp unix$(PPUEXT)
callspec$(PPUEXT) : $(INC)/callspec.pp $(SYSTEMUNIT)$(PPUEXT)
cmem$(PPUEXT) : $(INC)/cmem.pp $(SYSTEMUNIT)$(PPUEXT)
sysctl$(PPUEXT) : $(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) syscall$(PPUEXT)
cthreads$(PPUEXT) : $(UNIXINC)/cthreads.pp $(SYSTEMUNIT)$(PPUEXT)
-strutils$(PPUEXT) : $(OBJPASDIR)/strutils.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/strutils.pp
-convutils$(PPUEXT) : $(OBJPASDIR)/convutils.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/convutils.pp
-stdconvs$(PPUEXT) : $(OBJPASDIR)/stdconvs.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/stdconvs.pp
dynlibs$(PPUEXT) : $(INC)/dynlibs.pas $(UNIXINC)/dynlibs.inc dl$(PPUEXT) objpas$(PPUEXT)
ctypes$(PPUEXT) : $(INC)/ctypes.pp $(SYSTEMUNIT)$(PPUEXT)
-variants$(PPUEXT) : $(INC)/variants.pp sysutils$(PPUEXT) sysconst$(PPUEXT) varutils$(PPUEXT) typinfo$(PPUEXT) rtlconsts$(PPUEXT) math$(PPUEXT)
- $(COMPILER) -Fi$(INC) $(INC)/variants.pp
cwstring$(PPUEXT) : $(UNIXINC)/cwstring.pp $(SYSTEMUNIT)$(PPUEXT) sysutils$(PPUEXT) baseunix$(PPUEXT) unix$(PPUEXT) unixtype$(PPUEXT) ctypes$(PPUEXT) dynlibs$(PPUEXT)
diff --git a/rtl/freebsd/Makefile.fpc b/rtl/freebsd/Makefile.fpc
index 1196f80675..5c61a5a1f5 100644
--- a/rtl/freebsd/Makefile.fpc
+++ b/rtl/freebsd/Makefile.fpc
@@ -13,18 +13,17 @@ loaders=prt0 cprt0 gprt0 dllprt0
units=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 \
strings syscall sysctl baseunix unixutil character \
unix rtlconsts initc cmem \
- dl termio printer \
+ dl termio \
sysutils math typinfo types classes fgl dynlibs \
- $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo \
- errors ipc terminfo bsd freebsd \
- console serial \
- sysconst cthreads strutils dos cwstring \
- fpintres clocale unixcp fpwidestring
+ $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo \
+ errors bsd freebsd \
+ console \
+ sysconst cthreads dos cwstring \
+ fpintres unixcp fpwidestring
implicitunits=exeinfo \
cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 \
- cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 \
- unicodedata unicodeducet unicodenumtable \
- collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+ cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 \
+ unicodedata unicodenumtable
rsts=math typinfo classes sysconst
@@ -48,10 +47,10 @@ libname=libfprtl.so
libversion=2.0.0
libunits=$(SYSTEMUNIT) objpas strings \
unix \
- dos crt objects printer \
+ dos \
sysutils typinfo math \
$(CPU_UNITS) getopts heaptrc \
- errors ipc dynlibs
+ errors dynlibs
[prerules]
RTL=..
@@ -140,10 +139,6 @@ objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/objpas.pp
-dateutils$(PPUEXT): $(OBJPASDIR)/dateutils.pp baseunix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/dateutils.pp
-
-
strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc\
$(PROCINC)/strings.inc $(PROCINC)/stringss.inc\
$(SYSTEMUNIT)$(PPUEXT)
@@ -177,11 +172,6 @@ unixcp$(PPUEXT) : $(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) ba
dos$(PPUEXT) : $(UNIXINC)/dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \
unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-crt$(PPUEXT) : $(UNIXINC)/crt.pp $(INC)/textrec.inc unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-
-objects$(PPUEXT) : $(INC)/objects.pp $(SYSTEMUNIT)$(PPUEXT)
-
-printer$(PPUEXT) : $(UNIXINC)/printer.pp $(INC)/textrec.inc unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
#
# Delphi Compatible Units
@@ -207,16 +197,6 @@ typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT) rtlconsts$(PPUEXT)
math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/math.pp
-gettext$(PPUEXT): $(OBJPASDIR)/gettext.pp objpas$(PPUEXT) sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/gettext.pp
-
-varutils$(PPUEXT) : $(OBJPASDIR)/cvarutil.inc $(OBJPASDIR)/varutils.inc \
- $(OBJPASDIR)/varutilh.inc varutils.pp
- $(COMPILER) -I$(OBJPASDIR) $(UNIXINC)/varutils.pp
-
-fmtbcd$(PPUEXT) : $(OBJPASDIR)/fmtbcd.pp objpas$(PPUEXT) sysutils$(PPUEXT) variants$(PPUEXT) classes$(PPUEXT) system$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/fmtbcd.pp
-
types$(PPUEXT) : $(OBJPASDIR)/types.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/types.pp
@@ -224,7 +204,7 @@ sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUE
$(COMPILER) $(OBJPASDIR)/sysconst.pp
# let it depend on buildcollations to prevent simultaneous building of unicodedata
-character$(PPUEXT): sysutils$(PPUEXT) $(OBJPASDIR)/character.pas objpas$(PPUEXT) rtlconsts$(PPUEXT) buildcollations$(PPUEXT)
+character$(PPUEXT): sysutils$(PPUEXT) $(OBJPASDIR)/character.pas objpas$(PPUEXT) rtlconsts$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/character.pas
#
@@ -262,9 +242,6 @@ charset$(PPUEXT) : $(INC)/charset.pp $(SYSTEMUNIT)$(PPUEXT)
cpall$(PPUEXT): $(RTL)/charmaps/cpall.pas system$(PPUEXT) charset$(PPUEXT)
$(COMPILER) -Fu$(INC) -Fi$(RTL)/charmaps $(RTL)/charmaps/cpall.pas
-buildcollations$(PPUEXT): $(OBJPASDIR)/collations/buildcollations.pas system$(PPUEXT) objpas$(PPUEXT) sysutils$(PPUEXT)
- $(COMPILER) -Fu$(OBJPASDIR) -Fi$(OBJPASDIR)/collations -I$(OBJPASDIR)/collations $(OBJPASDIR)/collations/buildcollations.pas
-
fpwidestring$(PPUEXT): $(OBJPASDIR)/fpwidestring.pp character$(PPUEXT) unixcp$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/fpwidestring.pp
#
@@ -274,10 +251,6 @@ fpwidestring$(PPUEXT): $(OBJPASDIR)/fpwidestring.pp character$(PPUEXT) unixcp$(P
errors$(PPUEXT) : $(UNIXINC)/errors.pp strings$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-ipc$(PPUEXT) : $(UNIXINC)/ipc.pp unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-
-terminfo$(PPUEXT) : terminfo.pp unix$(PPUEXT)
-
callspec$(PPUEXT) : $(INC)/callspec.pp $(SYSTEMUNIT)$(PPUEXT)
cmem$(PPUEXT) : $(INC)/cmem.pp $(SYSTEMUNIT)$(PPUEXT)
@@ -286,24 +259,9 @@ sysctl$(PPUEXT) : $(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) syscall$(PPUEXT)
cthreads$(PPUEXT) : $(UNIXINC)/cthreads.pp $(SYSTEMUNIT)$(PPUEXT)
-strutils$(PPUEXT) : $(OBJPASDIR)/strutils.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/strutils.pp
-
-convutils$(PPUEXT) : $(OBJPASDIR)/convutils.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/convutils.pp
-
-stdconvs$(PPUEXT) : $(OBJPASDIR)/stdconvs.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/stdconvs.pp
-
dynlibs$(PPUEXT) : $(INC)/dynlibs.pas $(UNIXINC)/dynlibs.inc dl$(PPUEXT) objpas$(PPUEXT)
ctypes$(PPUEXT) : $(INC)/ctypes.pp $(SYSTEMUNIT)$(PPUEXT)
-variants$(PPUEXT) : $(INC)/variants.pp sysutils$(PPUEXT) sysconst$(PPUEXT) varutils$(PPUEXT) typinfo$(PPUEXT) rtlconsts$(PPUEXT) math$(PPUEXT)
- $(COMPILER) -Fi$(INC) $(INC)/variants.pp
-
cwstring$(PPUEXT) : $(UNIXINC)/cwstring.pp $(SYSTEMUNIT)$(PPUEXT) sysutils$(PPUEXT) baseunix$(PPUEXT) unix$(PPUEXT) unixtype$(PPUEXT) ctypes$(PPUEXT) dynlibs$(PPUEXT)
diff --git a/rtl/freebsd/console.pp b/rtl/freebsd/console.pp
index eb1d5c7f19..5cc16ed61b 100644
--- a/rtl/freebsd/console.pp
+++ b/rtl/freebsd/console.pp
@@ -1453,11 +1453,11 @@ const
{ Logitech MouseMan data packet (M+ protocol) }
MOUSE_LMAN_BUTTON2DOWN = $20; { middle button, the 4th byte }
-{ ALPS GlidePoint extention (variant of M+ protocol) }
+{ ALPS GlidePoint extension (variant of M+ protocol) }
MOUSE_ALPS_BUTTON2DOWN = $20; { middle button, the 4th byte }
MOUSE_ALPS_TAP = $10; { `tapping' action, the 4th byte }
-{ Kinsington Thinking Mouse extention (variant of M+ protocol) }
+{ Kinsington Thinking Mouse extension (variant of M+ protocol) }
MOUSE_THINK_BUTTON2DOWN = $20; { lower-left button, the 4th byte }
MOUSE_THINK_BUTTON4DOWN = $10; { lower-right button, the 4th byte }
diff --git a/rtl/gba/Makefile b/rtl/gba/Makefile
index 4576531628..5bc59fca73 100644
--- a/rtl/gba/Makefile
+++ b/rtl/gba/Makefile
@@ -1,8 +1,8 @@
#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-04-01 rev 27428]
#
default: all
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos
BSDs = freebsd netbsd openbsd darwin
UNIXs = linux $(BSDs) solaris qnx haiku aix
LIMIT83fs = go32v2 os2 emx watcom msdos
@@ -186,6 +186,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t
endif
override FPCOPT+=-Cp$(SUBARCH)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+ifeq ($(SUBARCH),)
+$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined)
+endif
+override FPCOPT+=-Cp$(SUBARCH)
+endif
ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
TARGETSUFFIX=$(OS_TARGET)
SOURCESUFFIX=$(OS_SOURCE)
@@ -335,226 +341,229 @@ endif
OBJPASDIR=$(RTL)/objpas
GRAPHDIR=$(INC)/graph
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils strutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-linux)
override TARGET_LOADERS+=prt0 cprt0
@@ -766,6 +775,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_LOADERS+=prt0 cprt0
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_LOADERS+=prt0 cprt0
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_LOADERS+=prt0 cprt0
endif
@@ -989,6 +1001,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
endif
@@ -1211,6 +1226,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
endif
@@ -2004,17 +2022,23 @@ ifdef ACROSSCOMPILE
override FPCOPT+=$(CROSSOPT)
endif
override COMPILER:=$(strip $(FPC) $(FPCOPT))
-ifeq (,$(findstring -s ,$(COMPILER)))
+ifneq (,$(findstring -sh ,$(COMPILER)))
+UseEXECPPAS=1
+endif
+ifneq (,$(findstring -s ,$(COMPILER)))
+ifeq ($(FULL_SOURCE),$(FULL_TARGET))
+UseEXECPPAS=1
+endif
+endif
+ifneq ($(UseEXECPPAS),1)
EXECPPAS=
else
-ifeq ($(FULL_SOURCE),$(FULL_TARGET))
ifdef RUNBATCH
EXECPPAS:=@$(RUNBATCH) $(PPAS)
else
EXECPPAS:=@$(PPAS)
endif
endif
-endif
.PHONY: fpc_loaders
ifneq ($(TARGET_LOADERS),)
override ALLTARGET+=fpc_loaders
@@ -2424,7 +2448,6 @@ strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc \
$(SYSTEMUNIT)$(PPUEXT)
dos$(PPUEXT) : dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \
$(SYSTEMUNIT)$(PPUEXT)
-objects$(PPUEXT) : $(INC)/objects.pp dos$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
sysutils$(PPUEXT) : sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
objpas$(PPUEXT) dos$(PPUEXT) sysconst$(PPUEXT)
$(COMPILER) -Fi$(OBJPASDIR)/sysutils sysutils.pp
@@ -2436,24 +2459,14 @@ typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT)
$(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp $(REDIR)
math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/math.pp $(REDIR)
-varutils$(PPUEXT) : $(OBJPASDIR)/cvarutil.inc $(OBJPASDIR)/varutils.inc \
- $(OBJPASDIR)/varutilh.inc varutils.pp
- $(COMPILER) -I$(OBJPASDIR) varutils.pp $(REDIR)
-fmtbcd$(PPUEXT) : $(OBJPASDIR)/fmtbcd.pp objpas$(PPUEXT) sysutils$(PPUEXT) variants$(PPUEXT) classes$(PPUEXT) system$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/fmtbcd.pp
types$(PPUEXT) : $(OBJPASDIR/types.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/types.pp
rtlconsts$(PPUEXT) : $(OBJPASDIR)/rtlconsts.pp
$(COMPILER) $(OBJPASDIR)/rtlconsts.pp
-strutils$(PPUEXT) : $(OBJPASDIR)/strutils.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/strutils.pp
sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/sysconst.pp
fgl$(PPUEXT): $(OBJPASDIR)/fgl.pp objpas$(PPUEXT) types$(PPUEXT) system$(PPUEXT) sysutils$(PPUEXT)
$(COMPILER) -Sg $(OBJPASDIR)/fgl.pp $(REDIR)
-dateutil$(PPUEXT) : $(OBJPASDIR)/dateutil.pp
- $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/dateutil.pp
macpas$(PPUEXT) : $(INC)/macpas.pp objpas$(PPUEXT) math$(PPUEXT)
$(COMPILER) $(INC)/macpas.pp $(REDIR)
ucomplex$(PPUEXT): $(INC)/ucomplex.pp math$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
diff --git a/rtl/gba/Makefile.fpc b/rtl/gba/Makefile.fpc
index bc95332a6b..566a61f50c 100644
--- a/rtl/gba/Makefile.fpc
+++ b/rtl/gba/Makefile.fpc
@@ -9,7 +9,7 @@ main=rtl
loaders=prt0 cprt0
units=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings \
# dos \
- sysutils strutils \
+ sysutils \
classes math typinfo ctypes \
charset cpall getopts \
types rtlconsts sysconst lineinfo fgl \
@@ -19,7 +19,7 @@ units=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings \
#rsts=math rtlconsts varutils typinfo variants classes sysconst dateutil
# implicitunits=exeinfo
implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 \
- cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+ cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
[require]
nortl=y
@@ -73,7 +73,6 @@ SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
# Put system unit dependencies together.
SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
-
#
# Loaders
#
@@ -117,8 +116,6 @@ dos$(PPUEXT) : dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \
#crt$(PPUEXT) : crt.pas $(INC)/textrec.inc $(SYSTEMUNIT)$(PPUEXT)
-objects$(PPUEXT) : $(INC)/objects.pp dos$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-
#printer$(PPUEXT) : printer.pas $(INC)/textrec.inc $(SYSTEMUNIT)$(PPUEXT)
#graph$(PPUEXT) : graph.pp
@@ -142,33 +139,18 @@ typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT)
math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/math.pp $(REDIR)
-varutils$(PPUEXT) : $(OBJPASDIR)/cvarutil.inc $(OBJPASDIR)/varutils.inc \
- $(OBJPASDIR)/varutilh.inc varutils.pp
- $(COMPILER) -I$(OBJPASDIR) varutils.pp $(REDIR)
-
-fmtbcd$(PPUEXT) : $(OBJPASDIR)/fmtbcd.pp objpas$(PPUEXT) sysutils$(PPUEXT) variants$(PPUEXT) classes$(PPUEXT) system$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/fmtbcd.pp
-
types$(PPUEXT) : $(OBJPASDIR/types.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/types.pp
rtlconsts$(PPUEXT) : $(OBJPASDIR)/rtlconsts.pp
$(COMPILER) $(OBJPASDIR)/rtlconsts.pp
-strutils$(PPUEXT) : $(OBJPASDIR)/strutils.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/strutils.pp
-
sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/sysconst.pp
fgl$(PPUEXT): $(OBJPASDIR)/fgl.pp objpas$(PPUEXT) types$(PPUEXT) system$(PPUEXT) sysutils$(PPUEXT)
$(COMPILER) -Sg $(OBJPASDIR)/fgl.pp $(REDIR)
-dateutil$(PPUEXT) : $(OBJPASDIR)/dateutil.pp
- $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/dateutil.pp
-
-
#
# Mac Pascal Model
#
diff --git a/rtl/gba/system.pp b/rtl/gba/system.pp
index 0e55425b97..f740660f65 100644
--- a/rtl/gba/system.pp
+++ b/rtl/gba/system.pp
@@ -177,7 +177,7 @@ end;
begin
StackLength := CheckInitialStkLen(InitialStkLen);
- StackBottom := StackTop - StackLength;
+ StackBottom := Sptr - StackLength;
{ OS specific startup }
{ Setup heap }
diff --git a/rtl/go32v2/Makefile b/rtl/go32v2/Makefile
index 8be63bdca4..266a63d0a3 100644
--- a/rtl/go32v2/Makefile
+++ b/rtl/go32v2/Makefile
@@ -1,8 +1,8 @@
#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-04-01 rev 27428]
#
default: all
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos
BSDs = freebsd netbsd openbsd darwin
UNIXs = linux $(BSDs) solaris qnx haiku aix
LIMIT83fs = go32v2 os2 emx watcom msdos
@@ -186,6 +186,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t
endif
override FPCOPT+=-Cp$(SUBARCH)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+ifeq ($(SUBARCH),)
+$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined)
+endif
+override FPCOPT+=-Cp$(SUBARCH)
+endif
ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
TARGETSUFFIX=$(OS_TARGET)
SOURCESUFFIX=$(OS_SOURCE)
@@ -340,448 +346,454 @@ ifdef NO_EXCEPTIONS_IN_SYSTEM
override FPCOPT+=-dNO_EXCEPTIONS_IN_SYSTEM
endif
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos printer cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst strutils
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos cmem sysutils classes math typinfo cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl msmouse charset cpall types sysconst rtlconst
endif
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-linux)
override TARGET_LOADERS+=prt0 exceptn fpu
@@ -993,6 +1005,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_LOADERS+=prt0 exceptn fpu
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_LOADERS+=prt0 exceptn fpu
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_LOADERS+=prt0 exceptn fpu
endif
@@ -1215,6 +1230,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_RSTS+=math typinfo classes sysconst
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_RSTS+=math typinfo classes sysconst
endif
@@ -1438,6 +1456,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
endif
@@ -1660,6 +1681,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
endif
@@ -2453,17 +2477,23 @@ ifdef ACROSSCOMPILE
override FPCOPT+=$(CROSSOPT)
endif
override COMPILER:=$(strip $(FPC) $(FPCOPT))
-ifeq (,$(findstring -s ,$(COMPILER)))
+ifneq (,$(findstring -sh ,$(COMPILER)))
+UseEXECPPAS=1
+endif
+ifneq (,$(findstring -s ,$(COMPILER)))
+ifeq ($(FULL_SOURCE),$(FULL_TARGET))
+UseEXECPPAS=1
+endif
+endif
+ifneq ($(UseEXECPPAS),1)
EXECPPAS=
else
-ifeq ($(FULL_SOURCE),$(FULL_TARGET))
ifdef RUNBATCH
EXECPPAS:=@$(RUNBATCH) $(PPAS)
else
EXECPPAS:=@$(PPAS)
endif
endif
-endif
.PHONY: fpc_loaders
ifneq ($(TARGET_LOADERS),)
override ALLTARGET+=fpc_loaders
@@ -2863,103 +2893,117 @@ prt0$(OEXT) : v2prt0.as
$(AS) -o $(UNITTARGETDIRPREFIX)prt0$(OEXT) v2prt0.as
system$(PPUEXT) : system.pp $(SYSDEPS)
$(COMPILER) -Us -Sg system.pp
+ $(EXECPPAS)
uuchar$(PPUEXT): $(SYSTEMUNIT)$(PPUEXT) $(INC)/uuchar.pp
$(COMPILER) $(INC)/uuchar.pp
+ $(EXECPPAS)
objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc system$(PPUEXT)
$(COMPILER) -Fi$(OBJPASDIR) $(OBJPASDIR)/objpas.pp
+ $(EXECPPAS)
strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc \
$(PROCINC)/strings.inc $(PROCINC)/stringss.inc \
system$(PPUEXT)
$(COMPILER) $(INC)/strings.pp
+ $(EXECPPAS)
iso7185$(PPUEXT) : $(INC)/iso7185.pp system$(PPUEXT)
$(COMPILER) $(INC)/iso7185.pp
+ $(EXECPPAS)
go32$(PPUEXT) : go32.pp system$(PPUEXT)
$(COMPILER) go32.pp
+ $(EXECPPAS)
dpmiexcp$(PPUEXT) : dpmiexcp.pp exceptn$(OEXT) system$(PPUEXT)
$(COMPILER) -Sg dpmiexcp.pp
+ $(EXECPPAS)
initc$(PPUEXT) : initc.pp system$(PPUEXT)
$(COMPILER) initc.pp
+ $(EXECPPAS)
profile$(PPUEXT) : profile.pp dpmiexcp$(PPUEXT) go32$(PPUEXT)
$(COMPILER) profile.pp
+ $(EXECPPAS)
dxetype$(PPUEXT) : dxetype.pp system$(PPUEXT)
$(COMPILER) dxetype.pp
+ $(EXECPPAS)
dxeload$(PPUEXT) : dxeload.pp dxetype$(PPUEXT) system$(PPUEXT)
$(COMPILER) dxeload.pp
+ $(EXECPPAS)
emu387$(PPUEXT) : emu387.pp fpu$(OEXT) strings$(PPUEXT) dxeload$(PPUEXT) \
dpmiexcp$(PPUEXT)
$(COMPILER) emu387.pp
+ $(EXECPPAS)
ports$(PPUEXT) : ports.pp objpas$(PPUEXT) system$(PPUEXT)
$(COMPILER) ports.pp
+ $(EXECPPAS)
dos$(PPUEXT) : dos.pp $(INC)/filerec.inc $(INC)/textrec.inc \
go32$(PPUEXT) strings$(PPUEXT) system$(PPUEXT)
$(COMPILER) dos.pp
-crt$(PPUEXT) : crt.pp $(INC)/textrec.inc go32$(PPUEXT) system$(PPUEXT)
- $(COMPILER) crt.pp
-objects$(PPUEXT) : $(INC)/objects.pp system$(PPUEXT)
- $(COMPILER) $(INC)/objects.pp
-printer$(PPUEXT) : printer.pp system$(PPUEXT)
- $(COMPILER) printer.pp
+ $(EXECPPAS)
sysutils$(PPUEXT) : sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
objpas$(PPUEXT) dos$(PPUEXT) go32$(PPUEXT) sysconst$(PPUEXT)
$(COMPILER) -Fi$(OBJPASDIR)/sysutils sysutils.pp
+ $(EXECPPAS)
classes$(PPUEXT) : classes.pp $(wildcard $(OBJPASDIR)/classes/*.inc) \
sysutils$(PPUEXT) typinfo$(PPUEXT) rtlconst$(PPUEXT) types$(PPUEXT) fgl$(PPUEXT)
$(COMPILER) -Fi$(OBJPASDIR)/classes classes.pp
fgl$(PPUEXT) : $(OBJPASDIR)/fgl.pp objpas$(PPUEXT) types$(PPUEXT) system$(PPUEXT) sysutils$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/fgl.pp
+ $(EXECPPAS)
math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/math.pp
+ $(EXECPPAS)
typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT) rtlconst$(PPUEXT)
$(COMPILER) -Sg -Fi$(OBJPASDIR) $(OBJPASDIR)/typinfo.pp
-varutils$(PPUEXT) : $(OBJPASDIR)/cvarutil.inc $(OBJPASDIR)/varutils.inc \
- $(OBJPASDIR)/varutilh.inc varutils.pp sysutils$(PPUEXT)
- $(COMPILER) -I$(OBJPASDIR) varutils.pp
-variants$(PPUEXT) : $(INC)/variants.pp varutils$(PPUEXT) sysutils$(PPUEXT) sysconst$(PPUEXT) typinfo$(PPUEXT) rtlconst$(PPUEXT)
- $(COMPILER) -Fi$(INC) $(INC)/variants.pp
-fmtbcd$(PPUEXT) : $(OBJPASDIR)/fmtbcd.pp objpas$(PPUEXT) sysutils$(PPUEXT) variants$(PPUEXT) classes$(PPUEXT) system$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/fmtbcd.pp
+ $(EXECPPAS)
types$(PPUEXT) : $(OBJPASDIR)/types.pp objpas$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/types.pp
+ $(EXECPPAS)
rtlconst$(PPUEXT) : $(OBJPASDIR)/rtlconst.pp
$(COMPILER) -Fi$(OBJPASDIR) $(OBJPASDIR)/rtlconst.pp
+ $(EXECPPAS)
sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/sysconst.pp
-dateutil$(PPUEXT) : $(OBJPASDIR)/dateutil.pp
- $(COMPILER) -Fi$(OBJPASDIR) $(OBJPASDIR)/dateutil.pp
-convutil$(PPUEXT) : $(OBJPASDIR)/convutil.pp
- $(COMPILER) -Fi$(OBJPASDIR) $(OBJPASDIR)/convutil.pp
-strutils$(PPUEXT) : $(OBJPASDIR)/strutils.pp
- $(COMPILER) $(OBJPASDIR)/strutils.pp
-stdconvs$(PPUEXT) : $(OBJPASDIR)/stdconvs.pp objpas$(PPUEXT) system$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/stdconvs.pp
+ $(EXECPPAS)
macpas$(PPUEXT) : $(INC)/macpas.pp objpas$(PPUEXT) math$(PPUEXT)
$(COMPILER) $(INC)/macpas.pp $(REDIR)
+ $(EXECPPAS)
cpu$(PPUEXT) : $(PROCINC)/cpu.pp system$(PPUEXT)
$(COMPILER) $(PROCINC)/cpu.pp
+ $(EXECPPAS)
mmx$(PPUEXT) : $(PROCINC)/mmx.pp cpu$(PPUEXT) system$(PPUEXT)
$(COMPILER) $(PROCINC)/mmx.pp
+ $(EXECPPAS)
getopts$(PPUEXT) : $(INC)/getopts.pp system$(PPUEXT)
$(COMPILER) $(INC)/getopts.pp
+ $(EXECPPAS)
heaptrc$(PPUEXT) : $(INC)/heaptrc.pp system$(PPUEXT)
$(COMPILER) -Sg $(INC)/heaptrc.pp
+ $(EXECPPAS)
lineinfo$(PPUEXT) : $(INC)/lineinfo.pp system$(PPUEXT)
$(COMPILER) $(INC)/lineinfo.pp
+ $(EXECPPAS)
lnfodwrf$(PPUEXT) : $(INC)/lnfodwrf.pp system$(PPUEXT)
$(COMPILER) $(INC)/lnfodwrf.pp
+ $(EXECPPAS)
charset$(PPUEXT) : $(INC)/charset.pp system$(PPUEXT)
$(COMPILER) $(INC)/charset.pp
+ $(EXECPPAS)
cpall$(PPUEXT): $(RTL)/charmaps/cpall.pas system$(PPUEXT) charset$(PPUEXT)
$(COMPILER) -Fu$(INC) -Fi$(RTL)/charmaps $(RTL)/charmaps/cpall.pas
+ $(EXECPPAS)
matrix$(PPUEXT) : $(INC)/matrix.pp $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(INC)/matrix.pp
+ $(EXECPPAS)
ucomplex$(PPUEXT) : $(INC)/ucomplex.pp math$(PPUEXT) system$(PPUEXT)
$(COMPILER) $(INC)/ucomplex.pp
+ $(EXECPPAS)
msmouse$(PPUEXT) : msmouse.pp system$(PPUEXT)
$(COMPILER) msmouse.pp
+ $(EXECPPAS)
callspec$(PPUEXT) : $(INC)/callspec.pp system$(PPUEXT)
$(COMPILER) $(INC)/callspec.pp
+ $(EXECPPAS)
cmem$(PPUEXT) : $(INC)/cmem.pp $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(INC)/cmem.pp
+ $(EXECPPAS)
ctypes$(PPUEXT) : $(INC)/ctypes.pp system$(PPUEXT)
$(COMPILER) $(INC)/ctypes.pp
+ $(EXECPPAS)
diff --git a/rtl/go32v2/Makefile.fpc b/rtl/go32v2/Makefile.fpc
index d403c38cbd..14c025b816 100644
--- a/rtl/go32v2/Makefile.fpc
+++ b/rtl/go32v2/Makefile.fpc
@@ -7,16 +7,16 @@ main=rtl
loaders=prt0 exceptn fpu
units=system uuchar objpas macpas iso7185 strings \
go32 dpmiexcp initc ports profile dxetype dxeload emu387 \
- dos printer cmem \
+ dos cmem \
sysutils classes math typinfo \
cpu mmx getopts heaptrc lineinfo lnfodwrf ctypes fgl \
msmouse charset cpall \
types \
- sysconst rtlconst strutils
+ sysconst rtlconst
rsts=math typinfo classes sysconst
implicitunits=exeinfo \
cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 \
- cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+ cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
[require]
nortl=y
[install]
@@ -69,169 +69,175 @@ SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
# Loaders
#
prt0$(OEXT) : v2prt0.as
- $(AS) -o $(UNITTARGETDIRPREFIX)prt0$(OEXT) v2prt0.as
+ $(AS) -o $(UNITTARGETDIRPREFIX)prt0$(OEXT) v2prt0.as
#
# System Units (System, Objpas, Strings)
#
system$(PPUEXT) : system.pp $(SYSDEPS)
- $(COMPILER) -Us -Sg system.pp
+ $(COMPILER) -Us -Sg system.pp
+ $(EXECPPAS)
uuchar$(PPUEXT): $(SYSTEMUNIT)$(PPUEXT) $(INC)/uuchar.pp
$(COMPILER) $(INC)/uuchar.pp
+ $(EXECPPAS)
objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc system$(PPUEXT)
- $(COMPILER) -Fi$(OBJPASDIR) $(OBJPASDIR)/objpas.pp
+ $(COMPILER) -Fi$(OBJPASDIR) $(OBJPASDIR)/objpas.pp
+ $(EXECPPAS)
strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc \
- $(PROCINC)/strings.inc $(PROCINC)/stringss.inc \
- system$(PPUEXT)
+ $(PROCINC)/strings.inc $(PROCINC)/stringss.inc \
+ system$(PPUEXT)
$(COMPILER) $(INC)/strings.pp
+ $(EXECPPAS)
iso7185$(PPUEXT) : $(INC)/iso7185.pp system$(PPUEXT)
- $(COMPILER) $(INC)/iso7185.pp
+ $(COMPILER) $(INC)/iso7185.pp
+ $(EXECPPAS)
#
# System Dependent Units
#
go32$(PPUEXT) : go32.pp system$(PPUEXT)
$(COMPILER) go32.pp
+ $(EXECPPAS)
dpmiexcp$(PPUEXT) : dpmiexcp.pp exceptn$(OEXT) system$(PPUEXT)
- $(COMPILER) -Sg dpmiexcp.pp
+ $(COMPILER) -Sg dpmiexcp.pp
+ $(EXECPPAS)
initc$(PPUEXT) : initc.pp system$(PPUEXT)
$(COMPILER) initc.pp
+ $(EXECPPAS)
profile$(PPUEXT) : profile.pp dpmiexcp$(PPUEXT) go32$(PPUEXT)
$(COMPILER) profile.pp
+ $(EXECPPAS)
dxetype$(PPUEXT) : dxetype.pp system$(PPUEXT)
$(COMPILER) dxetype.pp
+ $(EXECPPAS)
dxeload$(PPUEXT) : dxeload.pp dxetype$(PPUEXT) system$(PPUEXT)
$(COMPILER) dxeload.pp
+ $(EXECPPAS)
emu387$(PPUEXT) : emu387.pp fpu$(OEXT) strings$(PPUEXT) dxeload$(PPUEXT) \
- dpmiexcp$(PPUEXT)
- $(COMPILER) emu387.pp
+ dpmiexcp$(PPUEXT)
+ $(COMPILER) emu387.pp
+ $(EXECPPAS)
ports$(PPUEXT) : ports.pp objpas$(PPUEXT) system$(PPUEXT)
$(COMPILER) ports.pp
+ $(EXECPPAS)
#
# TP7 Compatible RTL Units
#
dos$(PPUEXT) : dos.pp $(INC)/filerec.inc $(INC)/textrec.inc \
- go32$(PPUEXT) strings$(PPUEXT) system$(PPUEXT)
- $(COMPILER) dos.pp
+ go32$(PPUEXT) strings$(PPUEXT) system$(PPUEXT)
+ $(COMPILER) dos.pp
+ $(EXECPPAS)
-crt$(PPUEXT) : crt.pp $(INC)/textrec.inc go32$(PPUEXT) system$(PPUEXT)
- $(COMPILER) crt.pp
-
-objects$(PPUEXT) : $(INC)/objects.pp system$(PPUEXT)
- $(COMPILER) $(INC)/objects.pp
-
-printer$(PPUEXT) : printer.pp system$(PPUEXT)
- $(COMPILER) printer.pp
#
# Delphi Compatible Units
#
sysutils$(PPUEXT) : sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
- objpas$(PPUEXT) dos$(PPUEXT) go32$(PPUEXT) sysconst$(PPUEXT)
- $(COMPILER) -Fi$(OBJPASDIR)/sysutils sysutils.pp
+ objpas$(PPUEXT) dos$(PPUEXT) go32$(PPUEXT) sysconst$(PPUEXT)
+ $(COMPILER) -Fi$(OBJPASDIR)/sysutils sysutils.pp
+ $(EXECPPAS)
classes$(PPUEXT) : classes.pp $(wildcard $(OBJPASDIR)/classes/*.inc) \
- sysutils$(PPUEXT) typinfo$(PPUEXT) rtlconst$(PPUEXT) types$(PPUEXT) fgl$(PPUEXT)
- $(COMPILER) -Fi$(OBJPASDIR)/classes classes.pp
+ sysutils$(PPUEXT) typinfo$(PPUEXT) rtlconst$(PPUEXT) types$(PPUEXT) fgl$(PPUEXT)
+ $(COMPILER) -Fi$(OBJPASDIR)/classes classes.pp
fgl$(PPUEXT) : $(OBJPASDIR)/fgl.pp objpas$(PPUEXT) types$(PPUEXT) system$(PPUEXT) sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/fgl.pp
+ $(COMPILER) $(OBJPASDIR)/fgl.pp
+ $(EXECPPAS)
math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/math.pp
+ $(COMPILER) $(OBJPASDIR)/math.pp
+ $(EXECPPAS)
typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT) rtlconst$(PPUEXT)
- $(COMPILER) -Sg -Fi$(OBJPASDIR) $(OBJPASDIR)/typinfo.pp
-
-varutils$(PPUEXT) : $(OBJPASDIR)/cvarutil.inc $(OBJPASDIR)/varutils.inc \
- $(OBJPASDIR)/varutilh.inc varutils.pp sysutils$(PPUEXT)
- $(COMPILER) -I$(OBJPASDIR) varutils.pp
-
-variants$(PPUEXT) : $(INC)/variants.pp varutils$(PPUEXT) sysutils$(PPUEXT) sysconst$(PPUEXT) typinfo$(PPUEXT) rtlconst$(PPUEXT)
- $(COMPILER) -Fi$(INC) $(INC)/variants.pp
-
-fmtbcd$(PPUEXT) : $(OBJPASDIR)/fmtbcd.pp objpas$(PPUEXT) sysutils$(PPUEXT) variants$(PPUEXT) classes$(PPUEXT) system$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/fmtbcd.pp
+ $(COMPILER) -Sg -Fi$(OBJPASDIR) $(OBJPASDIR)/typinfo.pp
+ $(EXECPPAS)
types$(PPUEXT) : $(OBJPASDIR)/types.pp objpas$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/types.pp
+ $(COMPILER) $(OBJPASDIR)/types.pp
+ $(EXECPPAS)
rtlconst$(PPUEXT) : $(OBJPASDIR)/rtlconst.pp
- $(COMPILER) -Fi$(OBJPASDIR) $(OBJPASDIR)/rtlconst.pp
+ $(COMPILER) -Fi$(OBJPASDIR) $(OBJPASDIR)/rtlconst.pp
+ $(EXECPPAS)
sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/sysconst.pp
-
-dateutil$(PPUEXT) : $(OBJPASDIR)/dateutil.pp
- $(COMPILER) -Fi$(OBJPASDIR) $(OBJPASDIR)/dateutil.pp
-
-convutil$(PPUEXT) : $(OBJPASDIR)/convutil.pp
- $(COMPILER) -Fi$(OBJPASDIR) $(OBJPASDIR)/convutil.pp
-
-strutils$(PPUEXT) : $(OBJPASDIR)/strutils.pp
- $(COMPILER) $(OBJPASDIR)/strutils.pp
+ $(COMPILER) $(OBJPASDIR)/sysconst.pp
+ $(EXECPPAS)
-stdconvs$(PPUEXT) : $(OBJPASDIR)/stdconvs.pp objpas$(PPUEXT) system$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/stdconvs.pp
#
# Mac Pascal Model
#
macpas$(PPUEXT) : $(INC)/macpas.pp objpas$(PPUEXT) math$(PPUEXT)
- $(COMPILER) $(INC)/macpas.pp $(REDIR)
+ $(COMPILER) $(INC)/macpas.pp $(REDIR)
+ $(EXECPPAS)
#
# Other system-independent RTL Units
#
cpu$(PPUEXT) : $(PROCINC)/cpu.pp system$(PPUEXT)
$(COMPILER) $(PROCINC)/cpu.pp
+ $(EXECPPAS)
mmx$(PPUEXT) : $(PROCINC)/mmx.pp cpu$(PPUEXT) system$(PPUEXT)
$(COMPILER) $(PROCINC)/mmx.pp
+ $(EXECPPAS)
getopts$(PPUEXT) : $(INC)/getopts.pp system$(PPUEXT)
$(COMPILER) $(INC)/getopts.pp
+ $(EXECPPAS)
heaptrc$(PPUEXT) : $(INC)/heaptrc.pp system$(PPUEXT)
- $(COMPILER) -Sg $(INC)/heaptrc.pp
+ $(COMPILER) -Sg $(INC)/heaptrc.pp
+ $(EXECPPAS)
lineinfo$(PPUEXT) : $(INC)/lineinfo.pp system$(PPUEXT)
$(COMPILER) $(INC)/lineinfo.pp
+ $(EXECPPAS)
lnfodwrf$(PPUEXT) : $(INC)/lnfodwrf.pp system$(PPUEXT)
$(COMPILER) $(INC)/lnfodwrf.pp
+ $(EXECPPAS)
charset$(PPUEXT) : $(INC)/charset.pp system$(PPUEXT)
$(COMPILER) $(INC)/charset.pp
+ $(EXECPPAS)
cpall$(PPUEXT): $(RTL)/charmaps/cpall.pas system$(PPUEXT) charset$(PPUEXT)
- $(COMPILER) -Fu$(INC) -Fi$(RTL)/charmaps $(RTL)/charmaps/cpall.pas
+ $(COMPILER) -Fu$(INC) -Fi$(RTL)/charmaps $(RTL)/charmaps/cpall.pas
+ $(EXECPPAS)
matrix$(PPUEXT) : $(INC)/matrix.pp $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(INC)/matrix.pp
+ $(EXECPPAS)
ucomplex$(PPUEXT) : $(INC)/ucomplex.pp math$(PPUEXT) system$(PPUEXT)
$(COMPILER) $(INC)/ucomplex.pp
+ $(EXECPPAS)
#
# Other system-dependent RTL Units
#
msmouse$(PPUEXT) : msmouse.pp system$(PPUEXT)
$(COMPILER) msmouse.pp
+ $(EXECPPAS)
callspec$(PPUEXT) : $(INC)/callspec.pp system$(PPUEXT)
$(COMPILER) $(INC)/callspec.pp
+ $(EXECPPAS)
cmem$(PPUEXT) : $(INC)/cmem.pp $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(INC)/cmem.pp
+ $(EXECPPAS)
ctypes$(PPUEXT) : $(INC)/ctypes.pp system$(PPUEXT)
$(COMPILER) $(INC)/ctypes.pp
+ $(EXECPPAS)
diff --git a/rtl/go32v2/initc.pp b/rtl/go32v2/initc.pp
index e992d05602..cd5bb959ca 100644
--- a/rtl/go32v2/initc.pp
+++ b/rtl/go32v2/initc.pp
@@ -72,7 +72,7 @@ procedure run_c_destructors;
exit;
already_done:=bss_count;
f:=dtor[0];
- nb:=((cardinal(last_dtor)-cardinal(first_dtor)) div sizeof(pointer));
+ nb:=((cardinal(@last_dtor)-cardinal(@first_dtor)) div sizeof(pointer));
for i:=1 to nb do
begin
f();
diff --git a/rtl/go32v2/system.pp b/rtl/go32v2/system.pp
index bdf8c23334..1ed6f950fc 100644
--- a/rtl/go32v2/system.pp
+++ b/rtl/go32v2/system.pp
@@ -647,7 +647,6 @@ Begin
and to ensure that StackLength = StackTop - StackBottom }
StackLength := CheckInitialStkLen(InitialStkLen)-256;
StackBottom := __stkbottom;
- StackTop := StackBottom + StackLength;
{ To be set if this is a GUI or console application }
IsConsole := TRUE;
{ To be set if this is a library and not a program }
diff --git a/rtl/haiku/Makefile b/rtl/haiku/Makefile
index 5d93862c6b..cd65f2be0c 100644
--- a/rtl/haiku/Makefile
+++ b/rtl/haiku/Makefile
@@ -1,8 +1,8 @@
#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-04-01 rev 27428]
#
default: all
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos
BSDs = freebsd netbsd openbsd darwin
UNIXs = linux $(BSDs) solaris qnx haiku aix
LIMIT83fs = go32v2 os2 emx watcom msdos
@@ -186,6 +186,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t
endif
override FPCOPT+=-Cp$(SUBARCH)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+ifeq ($(SUBARCH),)
+$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined)
+endif
+override FPCOPT+=-Cp$(SUBARCH)
+endif
ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
TARGETSUFFIX=$(OS_TARGET)
SOURCESUFFIX=$(OS_SOURCE)
@@ -336,226 +342,229 @@ override FPCOPT+= -dHASUNIX -n -dFPC_USE_LIBC -Si
OBJPASDIR=$(RTL)/objpas
GRAPHDIR=$(INC)/graph
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil strutils termio initc cmem dynlibs cwstring cthreads fpintres clocale unixcp
+override TARGET_UNITS+=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings errors dos dl sysconst sysutils types charset cpall typinfo classes fgl math cpu mmx getopts heaptrc lineinfo lnfodwrf rtlconsts syscall unix unixutil termio initc cmem dynlibs cwstring cthreads fpintres unixcp
endif
ifeq ($(FULL_TARGET),i386-linux)
override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
@@ -767,6 +776,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
endif
@@ -989,6 +1001,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_LOADERS+=prt0 cprt0 func dllprt
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_LOADERS+=prt0 cprt0 func dllprt
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_LOADERS+=prt0 cprt0 func dllprt
endif
@@ -1211,6 +1226,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
@@ -1434,6 +1452,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC) $(HAIKUINC)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC) $(HAIKUINC)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC) $(HAIKUINC)
endif
@@ -1656,6 +1677,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(HAIKUINC)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(HAIKUINC)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(HAIKUINC)
endif
@@ -1878,6 +1902,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_TARGETDIR+=.
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_TARGETDIR+=.
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_TARGETDIR+=.
endif
@@ -2671,17 +2698,23 @@ ifdef ACROSSCOMPILE
override FPCOPT+=$(CROSSOPT)
endif
override COMPILER:=$(strip $(FPC) $(FPCOPT))
-ifeq (,$(findstring -s ,$(COMPILER)))
+ifneq (,$(findstring -sh ,$(COMPILER)))
+UseEXECPPAS=1
+endif
+ifneq (,$(findstring -s ,$(COMPILER)))
+ifeq ($(FULL_SOURCE),$(FULL_TARGET))
+UseEXECPPAS=1
+endif
+endif
+ifneq ($(UseEXECPPAS),1)
EXECPPAS=
else
-ifeq ($(FULL_SOURCE),$(FULL_TARGET))
ifdef RUNBATCH
EXECPPAS:=@$(RUNBATCH) $(PPAS)
else
EXECPPAS:=@$(PPAS)
endif
endif
-endif
.PHONY: fpc_loaders
ifneq ($(TARGET_LOADERS),)
override ALLTARGET+=fpc_loaders
@@ -3090,8 +3123,6 @@ system$(PPUEXT) : system.pp $(SYSDEPS) $(UNIXINC)/sysunixh.inc
uuchar$(PPUEXT): $(SYSTEMUNIT)$(PPUEXT) $(INC)/uuchar.pp
objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) -Fi$(OBJPASDIR) $(OBJPASDIR)/objpas.pp
-dateutils$(PPUEXT): $(OBJPASDIR)/dateutils.pp baseunix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) types$(PPUEXT)
- $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/dateutils.pp
strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc \
$(PROCINC)/strings.inc $(PROCINC)/stringss.inc \
$(SYSTEMUNIT)$(PPUEXT)
@@ -3106,13 +3137,6 @@ unixcp$(PPUEXT) : $(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) ba
dos$(PPUEXT) : $(UNIXINC)/dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \
unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) -I$(INC) -Fu$(INC) $(UNIXINC)/dos.pp
-crt$(PPUEXT) : crt.pp $(INC)/textrec.inc termio.pp system$(PPUEXT)
- $(COMPILER) $(UNIXINC)/crt.pp $(REDIR)
-video$(PPUEXT) : video.pp $(INC)/textrec.inc termio.pp system$(PPUEXT)
- $(COMPILER) -Fu$(UNIXINC) $(UNIXINC)/video.pp $(REDIR)
-keyboard$(PPUEXT) : $(UNIXINC)/keyboard.pp mouse$(PPUEXT) $(INC)/textrec.inc termio.pp system$(PPUEXT)
- $(COMPILER) $(UNIXINC)/keyboard.pp $(REDIR) -dNOGPM
-objects$(PPUEXT) : $(INC)/objects.pp system$(PPUEXT)
sysutils$(PPUEXT) : sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
objpas$(PPUEXT) $(OBJPASDIR)/sysconst$(PPUEXT) # beos$(PPUEXT)
$(COMPILER) -Fi$(OBJPASDIR)/sysutils -Fi$(UNIXINC) $(UNIXINC)/sysutils.pp
@@ -3125,28 +3149,12 @@ typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT)
$(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp
math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/math.pp
-gettext$(PPUEXT): $(OBJPASDIR)/gettext.pp objpas$(PPUEXT) sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/gettext.pp
-varutils$(PPUEXT) : $(OBJPASDIR)/cvarutil.inc $(OBJPASDIR)/varutils.inc \
- $(OBJPASDIR)/varutilh.inc varutils.pp
- $(COMPILER) -Fi$(OBJPASDIR) $(UNIXINC)/varutils.pp
-fmtbcd$(PPUEXT) : $(OBJPASDIR)/fmtbcd.pp objpas$(PPUEXT) sysutils$(PPUEXT) variants$(PPUEXT) classes$(PPUEXT) system$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/fmtbcd.pp
types$(PPUEXT) : $(OBJPASDIR/types.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/types.pp
sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/sysconst.pp
rtlconsts$(PPUEXT) : $(OBJPASDIR)/rtlconsts.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/rtlconsts.pp
-strutils$(PPUEXT) : $(OBJPASDIR)/strutils.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/strutils.pp
-convutils$(PPUEXT) : $(OBJPASDIR)/convutils.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/convutils.pp
-stdconvs$(PPUEXT) : $(OBJPASDIR)/stdconvs.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/stdconvs.pp
macpas$(PPUEXT) : $(INC)/macpas.pp objpas$(PPUEXT) math$(PPUEXT)
$(COMPILER) $(INC)/macpas.pp $(REDIR)
cpu$(PPUEXT) : $(PROCINC)/cpu.pp system$(PPUEXT)
@@ -3159,15 +3167,10 @@ lnfodwrf$(PPUEXT) : $(INC)/lnfodwrf.pp $(SYSTEMUNIT)$(PPUEXT) strings$(PPUEXT)
charset$(PPUEXT) : $(INC)/charset.pp objpas$(PPUEXT)
cpall$(PPUEXT): $(RTL)/charmaps/cpall.pas system$(PPUEXT) charset$(PPUEXT)
$(COMPILER) -Fu$(INC) -Fi$(RTL)/charmaps $(RTL)/charmaps/cpall.pas
-ucomplex$(PPUEXT) : $(INC)/ucomplex.pp math$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) math$(PPUEXT)
termio$(PPUEXT) : baseunix$(PPUEXT)
-mouse$(PPUEXT) : baseunix$(PPUEXT) video$(PPUEXT)
- $(COMPILER) $(UNIXINC)/mouse.pp $(REDIR) -dNOGPM
dl$(PPUEXT) : $(SYSTEMUNIT)$(PPUEXT) unixtype$(PPUEXT)
dynlibs$(PPUEXT) : $(INC)/dynlibs.pas $(UNIXINC)/dynlibs.inc dl$(PPUEXT) objpas$(PPUEXT)
cmem$(PPUEXT) : $(INC)/cmem.pp $(SYSTEMUNIT)$(PPUEXT)
ctypes$(PPUEXT) : $(INC)/ctypes.pp $(SYSTEMUNIT)$(PPUEXT)
-variants$(PPUEXT) : $(INC)/variants.pp sysutils$(PPUEXT) sysconst$(PPUEXT) varutils$(PPUEXT) typinfo$(PPUEXT) rtlconsts$(PPUEXT) math$(PPUEXT)
- $(COMPILER) -Fi$(INC) $(INC)/variants.pp
cthreads$(PPUEXT) : $(UNIXINC)/cthreads.pp $(SYSTEMUNIT)$(PPUEXT)
cwstring$(PPUEXT) : $(UNIXINC)/cwstring.pp $(SYSTEMUNIT)$(PPUEXT) sysutils$(PPUEXT) baseunix$(PPUEXT) unix$(PPUEXT) unixtype$(PPUEXT) ctypes$(PPUEXT) dynlibs$(PPUEXT)
diff --git a/rtl/haiku/Makefile.fpc b/rtl/haiku/Makefile.fpc
index 0751bb99b4..b1fd50f068 100644
--- a/rtl/haiku/Makefile.fpc
+++ b/rtl/haiku/Makefile.fpc
@@ -13,10 +13,10 @@ units=system uuchar baseunix unixtype ctypes objpas macpas iso7185 strings \
sysconst sysutils \
types charset cpall typinfo classes fgl math \
cpu mmx getopts heaptrc lineinfo lnfodwrf \
- rtlconsts syscall unix unixutil strutils termio initc \
+ rtlconsts syscall unix unixutil termio initc \
cmem \
dynlibs cwstring cthreads \
- fpintres clocale unixcp
+ fpintres unixcp
rsts=math typinfo sysconst rtlconsts
implicitunits=exeinfo \
cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 \
@@ -43,10 +43,10 @@ libname=libfprtl.so
libversion=2.0.0
libunits=$(SYSTEMUNIT) objpas strings \
unix \
- dos printer \
+ dos \
sysutils typinfo math \
$(CPU_UNITS) getopts heaptrc \
- errors ipc dynlibs
+ errors dynlibs
[prerules]
@@ -116,9 +116,6 @@ uuchar$(PPUEXT): $(SYSTEMUNIT)$(PPUEXT) $(INC)/uuchar.pp
objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) -Fi$(OBJPASDIR) $(OBJPASDIR)/objpas.pp
-dateutils$(PPUEXT): $(OBJPASDIR)/dateutils.pp baseunix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) types$(PPUEXT)
- $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/dateutils.pp
-
strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc \
$(PROCINC)/strings.inc $(PROCINC)/stringss.inc \
$(SYSTEMUNIT)$(PPUEXT)
@@ -152,18 +149,6 @@ dos$(PPUEXT) : $(UNIXINC)/dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(
unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) -I$(INC) -Fu$(INC) $(UNIXINC)/dos.pp
-crt$(PPUEXT) : crt.pp $(INC)/textrec.inc termio.pp system$(PPUEXT)
- $(COMPILER) $(UNIXINC)/crt.pp $(REDIR)
-
-video$(PPUEXT) : video.pp $(INC)/textrec.inc termio.pp system$(PPUEXT)
- $(COMPILER) -Fu$(UNIXINC) $(UNIXINC)/video.pp $(REDIR)
-
-keyboard$(PPUEXT) : $(UNIXINC)/keyboard.pp mouse$(PPUEXT) $(INC)/textrec.inc termio.pp system$(PPUEXT)
- $(COMPILER) $(UNIXINC)/keyboard.pp $(REDIR) -dNOGPM
-
-
-objects$(PPUEXT) : $(INC)/objects.pp system$(PPUEXT)
-
#
# Delphi Compatible Units
#
@@ -186,16 +171,6 @@ typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT)
math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/math.pp
-gettext$(PPUEXT): $(OBJPASDIR)/gettext.pp objpas$(PPUEXT) sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/gettext.pp
-
-varutils$(PPUEXT) : $(OBJPASDIR)/cvarutil.inc $(OBJPASDIR)/varutils.inc \
- $(OBJPASDIR)/varutilh.inc varutils.pp
- $(COMPILER) -Fi$(OBJPASDIR) $(UNIXINC)/varutils.pp
-
-fmtbcd$(PPUEXT) : $(OBJPASDIR)/fmtbcd.pp objpas$(PPUEXT) sysutils$(PPUEXT) variants$(PPUEXT) classes$(PPUEXT) system$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/fmtbcd.pp
-
types$(PPUEXT) : $(OBJPASDIR/types.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/types.pp
@@ -205,18 +180,6 @@ sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUE
rtlconsts$(PPUEXT) : $(OBJPASDIR)/rtlconsts.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/rtlconsts.pp
-strutils$(PPUEXT) : $(OBJPASDIR)/strutils.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/strutils.pp
-
-convutils$(PPUEXT) : $(OBJPASDIR)/convutils.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/convutils.pp
-
-stdconvs$(PPUEXT) : $(OBJPASDIR)/stdconvs.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/stdconvs.pp
-
#
# Mac Pascal Model
#
@@ -246,32 +209,21 @@ charset$(PPUEXT) : $(INC)/charset.pp objpas$(PPUEXT)
cpall$(PPUEXT): $(RTL)/charmaps/cpall.pas system$(PPUEXT) charset$(PPUEXT)
$(COMPILER) -Fu$(INC) -Fi$(RTL)/charmaps $(RTL)/charmaps/cpall.pas
-ucomplex$(PPUEXT) : $(INC)/ucomplex.pp math$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) math$(PPUEXT)
-
#
# Other system-dependent RTL Units
#
termio$(PPUEXT) : baseunix$(PPUEXT)
-mouse$(PPUEXT) : baseunix$(PPUEXT) video$(PPUEXT)
- $(COMPILER) $(UNIXINC)/mouse.pp $(REDIR) -dNOGPM
-
dl$(PPUEXT) : $(SYSTEMUNIT)$(PPUEXT) unixtype$(PPUEXT)
-
dynlibs$(PPUEXT) : $(INC)/dynlibs.pas $(UNIXINC)/dynlibs.inc dl$(PPUEXT) objpas$(PPUEXT)
cmem$(PPUEXT) : $(INC)/cmem.pp $(SYSTEMUNIT)$(PPUEXT)
ctypes$(PPUEXT) : $(INC)/ctypes.pp $(SYSTEMUNIT)$(PPUEXT)
-variants$(PPUEXT) : $(INC)/variants.pp sysutils$(PPUEXT) sysconst$(PPUEXT) varutils$(PPUEXT) typinfo$(PPUEXT) rtlconsts$(PPUEXT) math$(PPUEXT)
- $(COMPILER) -Fi$(INC) $(INC)/variants.pp
-
cthreads$(PPUEXT) : $(UNIXINC)/cthreads.pp $(SYSTEMUNIT)$(PPUEXT)
cwstring$(PPUEXT) : $(UNIXINC)/cwstring.pp $(SYSTEMUNIT)$(PPUEXT) sysutils$(PPUEXT) baseunix$(PPUEXT) unix$(PPUEXT) unixtype$(PPUEXT) ctypes$(PPUEXT) dynlibs$(PPUEXT)
-
-
diff --git a/rtl/haiku/system.pp b/rtl/haiku/system.pp
index 998c211406..914c65209a 100644
--- a/rtl/haiku/system.pp
+++ b/rtl/haiku/system.pp
@@ -409,13 +409,13 @@ begin
StackBottom := Sptr - StackLength;
ReturnNilIfGrowHeapFails := False;
- SysResetFPU;
- if not(IsLibrary) then
- SysInitFPU;
-
{ Set up signals handlers }
InstallSignals;
+{$ifdef cpui386}
+ fpc_cpucodeinit;
+{$endif}
+
{ Setup heap }
myheapsize:=4096*100;// $ 20000;
myheaprealsize:=4096*100;// $ 20000;
diff --git a/rtl/i386/cpu.pp b/rtl/i386/cpu.pp
index c5cc2dc788..ae78fd03d4 100644
--- a/rtl/i386/cpu.pp
+++ b/rtl/i386/cpu.pp
@@ -27,6 +27,8 @@ unit cpu;
function cr0 : longint;
function AVXSupport: boolean;inline;
+ function AVX2Support: boolean;inline;
+ function FMASupport: boolean;inline;
var
is_sse3_cpu : boolean = false;
@@ -35,7 +37,9 @@ unit cpu;
{$ASMMODE INTEL}
var
- _AVXSupport : boolean;
+ _AVXSupport,
+ _AVX2Support,
+ _FMASupport : boolean;
function cpuid_support : boolean;assembler;
{
@@ -90,7 +94,7 @@ unit cpu;
procedure SetupSupport;
var
- _ecx : longint;
+ _ecx,_ebx : longint;
begin
is_sse3_cpu:=false;
if cpuid_support then
@@ -110,6 +114,18 @@ unit cpu;
((XGETBV(0) and %110)=%110) and
{ avx supported? }
((_ecx and $10000000)<>0);
+
+ _FMASupport:=_AVXSupport and ((_ecx and $1000)<>0);
+
+ asm
+ pushl %ebx
+ movl $7,%eax
+ movl $0,%ecx
+ cpuid
+ movl %ebx,_ebx
+ popl %ebx
+ end;
+ _AVX2Support:=_AVXSupport and ((_ebx and $20)<>0);
end;
end;
@@ -119,6 +135,18 @@ unit cpu;
result:=_AVXSupport;
end;
+
+ function AVX2Support: boolean;inline;
+ begin
+ result:=_AVX2Support;
+ end;
+
+
+ function FMASupport: boolean;inline;
+ begin
+ result:=_FMASupport;
+ end;
+
begin
SetupSupport;
end.
diff --git a/rtl/i386/i386.inc b/rtl/i386/i386.inc
index 246664ea2b..8f316d7bff 100644
--- a/rtl/i386/i386.inc
+++ b/rtl/i386/i386.inc
@@ -22,83 +22,25 @@ var
{ this variable is set to true, if currently an sse check is executed and no sig ill should be generated }
sse_check : boolean;
-{$asmmode intel}
+{$asmmode ATT}
-function cpuid_support : boolean;assembler;
+function cpuid_support : boolean;assembler;nostackframe;
{
Check if the ID-flag can be changed, if changed then CpuID is supported.
Tested under go32v1 and Linux on c6x86 with CpuID enabled and disabled (PFV)
}
asm
- push ebx
- pushfd
- pushfd
- pop eax
- mov ebx,eax
- xor eax,200000h
- push eax
- popfd
- pushfd
- pop eax
- popfd
- and eax,200000h
- and ebx,200000h
- cmp eax,ebx
- setnz al
- pop ebx
- end;
-
-{$asmmode ATT}
-
-procedure check_sse_support;
- var
- _ecx,_edx : longint;
- begin
- if cpuid_support then
- begin
- asm
- pushl %ebx
- movl $1,%eax
- cpuid
- movl %edx,_edx
- movl %ecx,_ecx
- popl %ebx
- end;
- has_sse_support:=((_edx and $2000000)<>0) and os_supports_sse;
- has_sse2_support:=((_edx and $4000000)<>0) and os_supports_sse;
- has_sse3_support:=((_ecx and $200)<>0) and os_supports_sse;
- end
- else
- begin
- { a cpu with without cpuid instruction supports never sse }
- has_sse_support:=false;
- has_sse2_support:=false;
- has_sse3_support:=false;
- end;
- end;
-
-
-{ returns true, if the processor supports the mmx instructions }
-function mmx_support : boolean;
-
- var
- _edx : longint;
-
- begin
- if cpuid_support then
- begin
- asm
- pushl %ebx
- movl $1,%eax
- cpuid
- movl %edx,_edx
- popl %ebx
- end;
- mmx_support:=(_edx and $800000)<>0;
- end
- else
- { a cpu with without cpuid instruction supports never mmx }
- mmx_support:=false;
+ pushfl
+ movl (%esp),%eax
+ xorl $0x200000,%eax
+ pushl %eax
+ popfl
+ pushfl
+ popl %eax
+ xorl (%esp),%eax
+ popfl
+ testl $0x200000,%eax
+ setnz %al
end;
{$ifndef FPC_PIC}
@@ -116,10 +58,6 @@ procedure fpc_cpuinit;
has_mmx_support:=mmx_support;
setup_fastmove;
}
- os_supports_sse:=false;
- { don't let libraries influence the FPU cw set by the host program }
- if IsLibrary then
- Default8087CW:=Get8087CW;
end;
{$ifndef darwin}
@@ -1389,10 +1327,6 @@ const
FPU_StackOverflow = $40;
FPU_ExceptionMask = $ff;
- { use Default8087CW instead
- fpucw : word = $1300 or FPU_StackUnderflow or FPU_Underflow or FPU_Denormal;
- }
-
MM_MaskInvalidOp = %0000000010000000;
MM_MaskDenorm = %0000000100000000;
MM_MaskDivZero = %0000001000000000;
@@ -1400,31 +1334,10 @@ const
MM_MaskUnderflow = %0000100000000000;
MM_MaskPrecision = %0001000000000000;
- mxcsr : dword = MM_MaskUnderflow or MM_MaskPrecision or MM_MaskDenorm;
-
{$define FPC_SYSTEM_HAS_SYSINITFPU}
Procedure SysInitFPU;
- var
- { these locals are so we don't have to hack pic code in the assembler }
- localmxcsr: dword;
- localfpucw: word;
begin
- localfpucw:=Default8087CW;
- asm
- fninit
- fldcw localfpucw
- fwait
- end;
- if has_sse_support then
- begin
- localmxcsr:=mxcsr;
- asm
- { setup sse exceptions }
- ldmxcsr localmxcsr
- end;
- end;
- softfloat_exception_mask:=float_flag_underflow or float_flag_inexact or float_flag_denormal;
end;
@@ -1443,48 +1356,58 @@ Procedure SysResetFPU;
end;
if has_sse_support then
begin
- localmxcsr:=mxcsr;
+ localmxcsr:=DefaultMXCSR;
asm
{ setup sse exceptions }
ldmxcsr localmxcsr
end;
end;
- softfloat_exception_flags:=0;
end;
{ because of the brain dead sse detection on x86, this test is post poned }
procedure fpc_cpucodeinit;
+ var
+ _ecx,_edx : longint;
begin
- os_supports_sse:=true;
- check_sse_support;
- os_supports_sse:=has_sse_support;
- if os_supports_sse then
+ if cpuid_support then
begin
- sse_check:=true;
asm
- { force an sse exception if no sse is supported, the exception handler sets
- os_supports_sse to false then }
- { don't change this instruction, the code above depends on its size }
- movaps %xmm7, %xmm6
- end;
- sse_check:=false;
+ movl $1,%eax
+ cpuid
+ movl %edx,_edx
+ movl %ecx,_ecx
+ end ['ebx'];
+ has_mmx_support:=(_edx and $800000)<>0;
+ if ((_edx and $2000000)<>0) then
+ begin
+ os_supports_sse:=true;
+ sse_check:=true;
+ asm
+ { force an sse exception if no sse is supported, the exception handler sets
+ os_supports_sse to false then }
+ { don't change this instruction, the code above depends on its size }
+ movaps %xmm7, %xmm6
+ end;
+ sse_check:=false;
+ has_sse_support:=os_supports_sse;
+ end;
+ if has_sse_support then
+ begin
+ has_sse2_support:=((_edx and $4000000)<>0);
+ has_sse3_support:=((_ecx and $200)<>0);
+ end;
end;
- has_sse_support:=os_supports_sse;
- if not(has_sse_support) then
+
+ { don't let libraries influence the FPU cw set by the host program }
+ if IsLibrary then
begin
- has_sse2_support:=false;
- has_sse3_support:=false;
+ Default8087CW:=Get8087CW;
+ if has_sse_support then
+ DefaultMXCSR:=GetMXCSR;
end;
- { don't let libraries influence the FPU cw set by the host program }
- if has_sse_support and
- IsLibrary then
- mxcsr:=GetSSECSR;
- has_mmx_support:=mmx_support;
SysResetFPU;
- if not(IsLibrary) then
- SysInitFPU;
{$ifdef USE_FASTMOVE}
setup_fastmove;
{$endif}
@@ -1497,8 +1420,6 @@ procedure fpc_cpucodeinit;
{$ifdef FPC_HAS_FEATURE_ANSISTRINGS}
{$define FPC_SYSTEM_HAS_ANSISTR_DECR_REF}
-function fpc_freemem_x(p:pointer):ptrint; [external name 'FPC_FREEMEM_X'];
-
Procedure fpc_AnsiStr_Decr_Ref (Var S : Pointer); [Public,Alias:'FPC_ANSISTR_DECR_REF']; compilerproc; nostackframe; assembler;
asm
cmpl $0,(%eax)
@@ -1531,7 +1452,7 @@ asm
je .Lj3596
.Lj3620:
movl %esi,%eax
- call FPC_FREEMEM_X
+ call FPC_FREEMEM
.Lj3596:
popl %esi
.Lquit:
diff --git a/rtl/i386/math.inc b/rtl/i386/math.inc
index f2618a7c85..577ebc4d55 100644
--- a/rtl/i386/math.inc
+++ b/rtl/i386/math.inc
@@ -12,6 +12,30 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
**********************************************************************}
+{-------------------------------------------------------------------------
+ Using functions from AMath/DAMath libraries, which are covered by the
+ following license:
+
+ (C) Copyright 2009-2013 Wolfgang Ehrhardt
+
+ This software is provided 'as-is', without any express or implied warranty.
+ In no event will the authors be held liable for any damages arising from
+ the use of this software.
+
+ Permission is granted to anyone to use this software for any purpose,
+ including commercial applications, and to alter it and redistribute it
+ freely, subject to the following restrictions:
+
+ 1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software in
+ a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+
+ 2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+
+ 3. This notice may not be removed or altered from any source distribution.
+----------------------------------------------------------------------------}
{****************************************************************************
FPU Control word
@@ -37,16 +61,16 @@
end;
- procedure SetSSECSR(w : dword);
+ procedure SetMXCSR(w : dword);
begin
- mxcsr:=w;
+ defaultmxcsr:=w;
asm
ldmxcsr w
end;
end;
- function GetSSECSR : dword;
+ function GetMXCSR : dword;
var
_w : dword;
begin
@@ -56,17 +80,21 @@
result:=_w;
end;
+
+ procedure SetSSECSR(w : dword);
+ begin
+ SetMXCSR(w);
+ end;
+
+ function GetSSECSR: dword;
+ begin
+ result:=GetMXCSR;
+ end;
+
{****************************************************************************
EXTENDED data type routines
****************************************************************************}
- {$define FPC_SYSTEM_HAS_PI}
- function fpc_pi_real : ValReal;compilerproc;
- begin
- { Function is handled internal in the compiler }
- runerror(207);
- result:=0;
- end;
{$define FPC_SYSTEM_HAS_ABS}
function fpc_abs_real(d : ValReal) : ValReal;compilerproc;
begin
@@ -118,26 +146,68 @@
end;
{$define FPC_SYSTEM_HAS_EXP}
+ { exp function adapted from AMath library (C) Copyright 2009-2013 Wolfgang Ehrhardt
+ * translated into AT&T syntax
+ + PIC support
+ * return +Inf/0 for +Inf/-Inf input, instead of NaN }
function fpc_exp_real(d : ValReal) : ValReal;assembler;compilerproc;
- var
- cw1,cw2: word;
asm
- // comes from DJ GPP
fldt d
fldl2e
- fmulp %st,%st(1)
- fstcw CW1
- fstcw CW2
- fwait
- andw $0xf3ff,CW2
- orw $0x0400,CW2
- fldcw CW2
- fld %st(0)
+ fmul %st(1),%st { z = d * log2(e) }
frndint
- fldcw CW1
- fxch %st(1)
- fsub %st(1),%st
+ { Calculate frac(z) using modular arithmetic to avoid precision loss.
+ Avoid PIC hacks by using immediate operands (it's not the fastest,
+ but likely the cleanest solution). }
+ pushl $0x3fe62e42 { ln(2).hi=6.9314718036912382E-001 }
+ pushl $0xfee00000
+ fldl (%esp)
+ fmul %st(1),%st
+ fsubrp %st,%st(2)
+ pushl $0x3dea39ef { ln(2).lo=1.9082149292705877E-010 }
+ pushl $0x35793c76
+ fldl (%esp)
+ fmul %st(1),%st
+ fsubrp %st,%st(2)
+ fxch %st(1) { (d-int(z)*ln2_hi)-int(z)*ln2_lo }
+ fldl2e
+ fmulp %st,%st(1) { frac(z) }
+
+ { The above code can result in |frac(z)|>1, particularly when rounding mode
+ is not "round to nearest". f2xm1 is undefined in this case, so a check
+ is necessary. Furthermore, frac(z) evaluates to NaN for d=+-Inf. }
+ fld %st
+ fabs
+ fld1
+ fcompp
+ fstsw %ax
+ sahf
+ jp .L3 { NaN }
+ jae .L1 { frac(z) <= 1 }
+ fld %st(1)
+ fabs
+ pushl $0x46c00000 { single(24576.0) }
+ fcomps (%esp)
+ fstsw %ax
+ sahf
+ jb .L0 { int(z) < 24576 }
+.L3:
+ fstp %st { zero out frac(z), hard way because }
+ fldz { "fsub %st,%st" does not work for NaN }
+ jmp .L1
+.L0:
+ { Calculate 2**frac(z)-1 as N*(N+2), where N=2**(frac(z)/2)-1 }
+ pushl $0x3f000000 { single(0.5) }
+ fmuls (%esp)
f2xm1
+ fld %st
+ pushl $0x40000000 { single(2.0) }
+ fadds (%esp)
+ fmulp %st,%st(1)
+ jmp .L2
+.L1:
+ f2xm1
+.L2:
fld1
faddp %st,%st(1)
fscale
@@ -214,30 +284,4 @@
end;
- {$define FPC_SYSTEM_HAS_POWER}
- function power(bas,expo : ValReal) : ValReal;
- begin
- if bas=0 then
- begin
- if expo<>0 then
- power:=0.0
- else
- HandleError(207);
- end
- else if expo=0 then
- power:=1
- else
- { bas < 0 is not allowed when doing roots }
- if (bas<0) and (frac(expo) <> 0) then
- handleerror(207)
- else
- begin
- power:=exp(ln(abs(bas))*expo);
- if (bas < 0) and
- odd(trunc(expo)) then
- begin
- power := -power;
- end;
- end;
- end;
diff --git a/rtl/i386/mathu.inc b/rtl/i386/mathu.inc
index eb0826322f..a1ba0970d1 100644
--- a/rtl/i386/mathu.inc
+++ b/rtl/i386/mathu.inc
@@ -150,7 +150,7 @@ begin
CtlWord := Get8087CW;
Set8087CW((CtlWord and $F3FF) or (Ord(RoundMode) shl 10));
if has_sse_support then
- SetSSECSR((GetSSECSR and $ffff9fff) or (dword(RoundMode) shl 13));
+ SetMXCSR((GetMXCSR and $ffff9fff) or (dword(RoundMode) shl 13));
Result := TFPURoundingMode((CtlWord shr 10) and 3);
end;
@@ -180,8 +180,7 @@ begin
CtlWord := Get8087CW;
Set8087CW( (CtlWord and $FFC0) or Byte(Longint(Mask)) );
if has_sse_support then
- SetSSECSR((GetSSECSR and $ffffe07f) or (dword(Mask) shl 7));
- softfloat_exception_mask:=dword(Mask);
+ SetMXCSR((GetMXCSR and $ffffe07f) or (dword(Mask) shl 7));
Result := TFPUExceptionMask(Longint(CtlWord and $3F));
end;
diff --git a/rtl/i386/mathuh.inc b/rtl/i386/mathuh.inc
deleted file mode 100644
index c802e73fe0..0000000000
--- a/rtl/i386/mathuh.inc
+++ /dev/null
@@ -1,29 +0,0 @@
-{
- This file is part of the Free Pascal run time library.
- Copyright (c) 1999-2003 by Florian Klaempfl
- member of the Free Pascal 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.
-
- **********************************************************************}
-
-{ i386 fpu control word }
-type
- TFPURoundingMode = (rmNearest, rmDown, rmUp, rmTruncate);
- TFPUPrecisionMode = (pmSingle, pmReserved, pmDouble, pmExtended);
- TFPUException = (exInvalidOp, exDenormalized, exZeroDivide,
- exOverflow, exUnderflow, exPrecision);
- TFPUExceptionMask = set of TFPUException;
-
-function GetRoundMode: TFPURoundingMode;
-function SetRoundMode(const RoundMode: TFPURoundingMode): TFPURoundingMode;
-function GetPrecisionMode: TFPUPrecisionMode;
-function SetPrecisionMode(const Precision: TFPUPrecisionMode): TFPUPrecisionMode;
-function GetExceptionMask: TFPUExceptionMask;
-function SetExceptionMask(const Mask: TFPUExceptionMask): TFPUExceptionMask;
-procedure ClearExceptions(RaisePending: Boolean =true);
diff --git a/rtl/i8086/i8086.inc b/rtl/i8086/i8086.inc
index a7837bc558..bb52fd5b4e 100644
--- a/rtl/i8086/i8086.inc
+++ b/rtl/i8086/i8086.inc
@@ -72,10 +72,101 @@ end;
{$endif FPC_SYSTEM_HAS_FILLWORD}
+{$ifndef FPC_SYSTEM_HAS_FILLDWORD}
+{$define FPC_SYSTEM_HAS_FILLDWORD}
+procedure FillDWord(var x;count : SizeInt;value : dword);assembler;nostackframe;
+asm
+ mov bx, sp
+ mov cx, ss:[bx + 6 + extra_param_offset] // count
+ or cx, cx
+ jle @@Done
+{$ifdef FPC_X86_DATA_NEAR}
+ mov di, ss:[bx + 8 + extra_param_offset] // @x
+ mov ax, ds
+ mov es, ax
+{$else FPC_X86_DATA_NEAR}
+ les di, ss:[bx + 8 + extra_param_offset] // @x
+{$endif FPC_X86_DATA_NEAR}
+ mov ax, ss:[bx + 2 + extra_param_offset] // lo(value)
+ mov bx, ss:[bx + 4 + extra_param_offset] // hi(value)
+{$ifdef FPC_ENABLED_CLD}
+ cld
+{$endif FPC_ENABLED_CLD}
+ cmp ax, bx
+ jne @@lo_hi_different
+ shl cx, 1
+ rep stosw
+ jmp @@Done
+
+@@lo_hi_different:
+ stosw
+ xchg ax, bx
+ stosw
+ xchg ax, bx
+ loop @@lo_hi_different
+
+ @@Done:
+end;
+{$endif FPC_SYSTEM_HAS_FILLDWORD}
+
+
+{$ifndef FPC_SYSTEM_HAS_MOVE}
+{$define FPC_SYSTEM_HAS_MOVE}
+procedure Move(const source;var dest;count:SizeInt);[public, alias: 'FPC_MOVE'];assembler;nostackframe;
+asm
+ mov bx, sp
+ mov cx, ss:[bx + 2 + extra_param_offset] // count
+ or cx, cx
+ jle @@Done
+
+ mov ax, ds // for far data models, backup ds; for near data models, use to initialize es
+{$ifdef FPC_X86_DATA_NEAR}
+ mov es, ax
+ mov si, ss:[bx + 6 + extra_param_offset] // @source
+ mov di, ss:[bx + 4 + extra_param_offset] // @dest
+{$else FPC_X86_DATA_NEAR}
+ lds si, ss:[bx + 8 + extra_param_offset] // @source
+ les di, ss:[bx + 4 + extra_param_offset] // @dest
+{$endif FPC_X86_DATA_NEAR}
+
+ cmp si, di
+ jb @@BackwardsMove
+
+{$ifdef FPC_ENABLED_CLD}
+ cld
+{$endif FPC_ENABLED_CLD}
+ shr cx, 1
+ rep movsw
+ adc cx, cx
+ rep movsb
+ jmp @@AfterMove // todo, add mov ds,ax & ret here for performance reasons
+
+@@BackwardsMove:
+ std
+ add si, cx
+ add di, cx
+ dec si
+ dec di
+ rep movsb // todo: movsw
+ cld
+
+@@AfterMove:
+{$if defined(FPC_X86_DATA_FAR) or defined(FPC_X86_DATA_HUGE)}
+ mov ds, ax
+{$endif}
+
+@@Done:
+end;
+{$endif FPC_SYSTEM_HAS_MOVE}
+
+
{$define FPC_SYSTEM_HAS_SPTR}
Function Sptr : Pointer;assembler;nostackframe;
asm
mov ax, sp
+{$if defined(FPC_X86_DATA_FAR) or defined(FPC_X86_DATA_HUGE)}
+ mov dx, ss
+{$endif}
end;
{$define FPC_SYSTEM_HAS_PTR}
@@ -109,6 +200,9 @@ end;
function get_frame:pointer;assembler;nostackframe;{$ifdef SYSTEMINLINE}inline;{$endif}
asm
mov ax, bp
+{$if defined(FPC_X86_DATA_FAR) or defined(FPC_X86_DATA_HUGE)}
+ mov dx, ss
+{$endif}
end;
{$ENDIF not INTERNAL_BACKTRACE}
@@ -152,49 +246,124 @@ asm
@@Lgnf_null:
end;
-{TODO: fix, use smallint?}
+{TODO: use smallint?}
function InterLockedDecrement (var Target: longint) : longint;nostackframe;assembler;
asm
- push bp
- mov bp, sp
- mov bx, ss:[bp + 4 + extra_param_offset] // Target
+ mov si, sp
+{$ifdef FPC_X86_DATA_NEAR}
+ mov bx, ss:[si + 2 + extra_param_offset] // Target
+{$else FPC_X86_DATA_NEAR}
+ mov cx, ds
+ lds bx, ss:[si + 2 + extra_param_offset] // Target
+{$endif FPC_X86_DATA_NEAR}
+ pushf
+ cli
sub word [bx], 1
sbb word [bx+2], 0
mov ax, [bx]
mov dx, [bx+2]
- pop bp
+ popf
+{$if defined(FPC_X86_DATA_FAR) or defined(FPC_X86_DATA_HUGE)}
+ mov ds, cx
+{$endif}
end;
-{TODO: fix, use smallint?}
+{TODO: use smallint?}
function InterLockedIncrement (var Target: longint) : longint;nostackframe;assembler;
asm
- push bp
- mov bp, sp
- mov bx, ss:[bp + 4 + extra_param_offset] // Target
+ mov si, sp
+{$ifdef FPC_X86_DATA_NEAR}
+ mov bx, ss:[si + 2 + extra_param_offset] // Target
+{$else FPC_X86_DATA_NEAR}
+ mov cx, ds
+ lds bx, ss:[si + 2 + extra_param_offset] // Target
+{$endif FPC_X86_DATA_NEAR}
+ pushf
+ cli
add word [bx], 1
adc word [bx+2], 0
mov ax, [bx]
mov dx, [bx+2]
- pop bp
+ popf
+{$if defined(FPC_X86_DATA_FAR) or defined(FPC_X86_DATA_HUGE)}
+ mov ds, cx
+{$endif}
end;
-{TODO: fix, use smallint?}
-function InterLockedExchange (var Target: longint;Source : longint) : longint;
-begin
- InterLockedExchange := Target;
- Target := Source;
+{TODO: use smallint?}
+function InterLockedExchange (var Target: longint;Source : longint) : longint;nostackframe;assembler;
+asm
+ mov si, sp
+{$ifdef FPC_X86_DATA_NEAR}
+ mov bx, ss:[si + 6 + extra_param_offset] // Target
+{$else FPC_X86_DATA_NEAR}
+ mov cx, ds
+ lds bx, ss:[si + 6 + extra_param_offset] // Target
+{$endif FPC_X86_DATA_NEAR}
+ mov ax, ss:[si + 2 + extra_param_offset] // Lo(Source)
+ mov dx, ss:[si + 4 + extra_param_offset] // Hi(Source)
+ pushf
+ cli
+ xchg word [bx], ax
+ xchg word [bx+2], dx
+ popf
+{$if defined(FPC_X86_DATA_FAR) or defined(FPC_X86_DATA_HUGE)}
+ mov ds, cx
+{$endif}
end;
-{TODO: implement}
-function InterLockedExchangeAdd (var Target: longint;Source : longint) : longint;
-begin
- runerror(304);
+{TODO: use smallint?}
+function InterLockedExchangeAdd (var Target: longint;Source : longint) : longint;nostackframe;assembler;
+asm
+ mov si, sp
+{$ifdef FPC_X86_DATA_NEAR}
+ mov bx, ss:[si + 6 + extra_param_offset] // Target
+{$else FPC_X86_DATA_NEAR}
+ mov cx, ds
+ lds bx, ss:[si + 6 + extra_param_offset] // Target
+{$endif FPC_X86_DATA_NEAR}
+ mov di, ss:[si + 2 + extra_param_offset] // Lo(Source)
+ mov si, ss:[si + 4 + extra_param_offset] // Hi(Source)
+ pushf
+ cli
+ mov ax, [bx]
+ mov dx, [bx+2]
+ add word [bx], di
+ adc word [bx+2], si
+ popf
+{$if defined(FPC_X86_DATA_FAR) or defined(FPC_X86_DATA_HUGE)}
+ mov ds, cx
+{$endif}
end;
-{TODO: implement}
-function InterlockedCompareExchange(var Target: longint; NewValue: longint; Comperand: longint): longint;
-begin
- runerror(304);
+{TODO: use smallint?}
+function InterlockedCompareExchange(var Target: longint; NewValue: longint; Comperand: longint): longint;assembler;
+asm
+{$ifdef FPC_X86_DATA_NEAR}
+ mov bx, [Target] // Target
+{$else FPC_X86_DATA_NEAR}
+ mov cx, ds
+ lds bx, [Target] // Target
+{$endif FPC_X86_DATA_NEAR}
+ mov di, [Comperand]
+ mov si, [Comperand+2]
+ pushf
+ cli
+ mov ax, [bx]
+ mov dx, [bx+2]
+ cmp ax, di
+ jne @@not_equal
+ cmp dx, si
+ jne @@not_equal
+ mov di, [NewValue]
+ mov si, [NewValue+2]
+ mov [bx], di
+ mov [bx+2], si
+@@not_equal:
+ popf
+{$if defined(FPC_X86_DATA_FAR) or defined(FPC_X86_DATA_HUGE)}
+ mov ds, cx
+{$endif}
end;
@@ -354,6 +523,26 @@ end;
{****************************************************************************
+ HexStr
+****************************************************************************}
+
+{$define FPC_HAS_HEXSTR_POINTER_SHORTSTR}
+function HexStr(Val: NearPointer): ShortString;
+begin
+ HexStr:=HexStr(Word(Val),4);
+end;
+
+function HexStr(Val: FarPointer): ShortString;
+type
+ TFarPointerRec = record
+ Offset, Segment: Word;
+ end;
+begin
+ HexStr:=HexStr(TFarPointerRec(Val).Segment,4)+':'+HexStr(TFarPointerRec(Val).Offset,4);
+end;
+
+
+{****************************************************************************
FPU
****************************************************************************}
@@ -428,7 +617,6 @@ procedure DetectFPU;
Procedure SysInitFPU;
var
{ these locals are so we don't have to hack pic code in the assembler }
- localmxcsr: dword;
localfpucw: word;
begin
localfpucw:=Default8087CW;
@@ -437,7 +625,6 @@ Procedure SysInitFPU;
fldcw localfpucw
fwait
end;
- softfloat_exception_mask:=float_flag_underflow or float_flag_inexact or float_flag_denormal;
end;
@@ -445,7 +632,6 @@ Procedure SysInitFPU;
Procedure SysResetFPU;
var
{ these locals are so we don't have to hack pic code in the assembler }
- localmxcsr: dword;
localfpucw: word;
begin
localfpucw:=Default8087CW;
@@ -454,7 +640,6 @@ Procedure SysResetFPU;
fwait
fldcw localfpucw
end;
- softfloat_exception_flags:=0;
end;
{$I int32p.inc}
diff --git a/rtl/i8086/math.inc b/rtl/i8086/math.inc
index 75171809f4..198253f93d 100644
--- a/rtl/i8086/math.inc
+++ b/rtl/i8086/math.inc
@@ -14,7 +14,6 @@
**********************************************************************}
-{$asmmode intel}
{****************************************************************************
FPU Control word
@@ -34,26 +33,16 @@
function Get8087CW:word;assembler;
asm
- push bp
- mov bp, sp
- push ax
- fnstcw [bp - 2]
- pop ax
- mov sp, bp
- pop bp
+ push ax
+ mov bx, sp
+ fnstcw word ptr ss:[bx]
+ pop ax
end;
{****************************************************************************
EXTENDED data type routines
****************************************************************************}
- {$define FPC_SYSTEM_HAS_PI}
- function fpc_pi_real : ValReal;compilerproc;
- begin
- { Function is handled internal in the compiler }
- runerror(207);
- result:=0;
- end;
{$define FPC_SYSTEM_HAS_ABS}
function fpc_abs_real(d : ValReal) : ValReal;compilerproc;
begin
@@ -276,3 +265,17 @@
mov ax, [bp-2]
end;
+ {$define FPC_SYSTEM_HAS_ROUND}
+ function fpc_round_real(d : ValReal) : int64;assembler;compilerproc;
+ var
+ tmp: int64;
+ asm
+ fld tbyte [d]
+ fistp qword [tmp]
+ fwait
+ mov dx, [tmp]
+ mov cx, [tmp+2]
+ mov bx, [tmp+4]
+ mov ax, [tmp+6]
+ end;
+
diff --git a/rtl/i8086/mathu.inc b/rtl/i8086/mathu.inc
index b05820c1d0..95c1fe6fa3 100644
--- a/rtl/i8086/mathu.inc
+++ b/rtl/i8086/mathu.inc
@@ -12,7 +12,6 @@
**********************************************************************}
-{$ASMMODE intel}
{NOTE: the fpatan instruction on the 8087 and 80287 has the following restrictions:
0 <= ST(1) < ST(0) < +inf
@@ -175,7 +174,7 @@ end;
function GetExceptionMask: TFPUExceptionMask;
begin
- Result := TFPUExceptionMask(Longint(Get8087CW and $3F));
+ Result := TFPUExceptionMask(Byte(Get8087CW and $3F));
end;
function SetExceptionMask(const Mask: TFPUExceptionMask): TFPUExceptionMask;
@@ -183,11 +182,10 @@ var
CtlWord: Word;
begin
CtlWord := Get8087CW;
- Set8087CW( (CtlWord and $FFC0) or Byte(Longint(Mask)) );
+ Set8087CW( (CtlWord and $FFC0) or Byte(Mask) );
{ if has_sse_support then
SetSSECSR((GetSSECSR and $ffffe07f) or (dword(Mask) shl 7));}
- softfloat_exception_mask:=dword(Mask);
- Result := TFPUExceptionMask(Longint(CtlWord and $3F));
+ Result := TFPUExceptionMask(Byte(CtlWord and $3F));
end;
procedure ClearExceptions(RaisePending: Boolean);assembler;
diff --git a/rtl/i8086/mathuh.inc b/rtl/i8086/mathuh.inc
deleted file mode 100644
index c802e73fe0..0000000000
--- a/rtl/i8086/mathuh.inc
+++ /dev/null
@@ -1,29 +0,0 @@
-{
- This file is part of the Free Pascal run time library.
- Copyright (c) 1999-2003 by Florian Klaempfl
- member of the Free Pascal 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.
-
- **********************************************************************}
-
-{ i386 fpu control word }
-type
- TFPURoundingMode = (rmNearest, rmDown, rmUp, rmTruncate);
- TFPUPrecisionMode = (pmSingle, pmReserved, pmDouble, pmExtended);
- TFPUException = (exInvalidOp, exDenormalized, exZeroDivide,
- exOverflow, exUnderflow, exPrecision);
- TFPUExceptionMask = set of TFPUException;
-
-function GetRoundMode: TFPURoundingMode;
-function SetRoundMode(const RoundMode: TFPURoundingMode): TFPURoundingMode;
-function GetPrecisionMode: TFPUPrecisionMode;
-function SetPrecisionMode(const Precision: TFPUPrecisionMode): TFPUPrecisionMode;
-function GetExceptionMask: TFPUExceptionMask;
-function SetExceptionMask(const Mask: TFPUExceptionMask): TFPUExceptionMask;
-procedure ClearExceptions(RaisePending: Boolean =true);
diff --git a/rtl/i8086/setjump.inc b/rtl/i8086/setjump.inc
index e5fb790125..d6cbe03ac0 100644
--- a/rtl/i8086/setjump.inc
+++ b/rtl/i8086/setjump.inc
@@ -17,16 +17,22 @@ Function fpc_SetJmp (Var S : Jmp_buf) : smallint;assembler;nostackframe;[Public,
asm
mov si, sp
- mov bx, ss:[si + 2 + extra_param_offset] // S
- mov word [bx + Jmp_buf.bp], bp
+{$ifdef FPC_X86_DATA_NEAR}
+ mov di, ss:[si + 2 + extra_param_offset] // S
+ mov ax, ds
+ mov es, ax
+{$else FPC_X86_DATA_NEAR}
+ les di, ss:[si + 2 + extra_param_offset] // S
+{$endif FPC_X86_DATA_NEAR}
+ mov word es:[di + Jmp_buf.bp], bp
mov ax, word ss:[si]
- mov word [bx + Jmp_buf.ip], ax
+ mov word es:[di + Jmp_buf.ip], ax
{$ifdef FPC_X86_CODE_FAR}
mov ax, word ss:[si + 2]
- mov word [bx + Jmp_buf.cs], ax
+ mov word es:[di + Jmp_buf.cs], ax
{$endif FPC_X86_CODE_FAR}
- lea ax, [si + 4 + extra_param_offset]
- mov word [bx + Jmp_buf.sp], ax
+ lea ax, [si + 4 + extra_param_offset + extra_data_offset]
+ mov word es:[di + Jmp_buf.sp], ax
xor ax, ax
end;
@@ -36,22 +42,41 @@ Procedure fpc_longJmp (Var S : Jmp_buf; value : smallint); assembler;nostackfram
asm
mov si, sp
+{$ifdef FPC_X86_DATA_NEAR}
mov bx, ss:[si + 4 + extra_param_offset] // S
+{$else FPC_X86_DATA_NEAR}
+ les bx, ss:[si + 4 + extra_param_offset] // S
+{$endif FPC_X86_DATA_NEAR}
mov ax, ss:[si + 2 + extra_param_offset] // value
test ax, ax
jnz @@L1
inc ax
@@L1:
+{$ifdef FPC_X86_DATA_NEAR}
mov bp, word [bx + Jmp_buf.bp]
mov sp, word [bx + Jmp_buf.sp]
+{$else FPC_X86_DATA_NEAR}
+ mov bp, word es:[bx + Jmp_buf.bp]
+ mov sp, word es:[bx + Jmp_buf.sp]
+{$endif FPC_X86_DATA_NEAR}
// we should also clear the fpu
// fninit no must be done elsewhere PM
// or we should reset the control word also
-{$ifdef FPC_X86_CODE_NEAR}
- jmp word [bx + Jmp_buf.ip]
-{$else FPC_X86_CODE_NEAR}
- // the inline asm doesn't support jmp far yet, so we use db for now
- // jmp far [bx + Jmp_buf.ip]
- db 0FFh, 06Fh, Jmp_buf.ip
-{$endif FPC_X86_CODE_NEAR}
+{$ifdef FPC_X86_DATA_NEAR}
+ {$ifdef FPC_X86_CODE_NEAR}
+ jmp word [bx + Jmp_buf.ip]
+ {$else FPC_X86_CODE_NEAR}
+ // the inline asm doesn't support jmp far yet, so we use db for now
+ // jmp far [bx + Jmp_buf.ip]
+ db 0FFh, 06Fh, Jmp_buf.ip
+ {$endif FPC_X86_CODE_NEAR}
+{$else FPC_X86_DATA_NEAR}
+ {$ifdef FPC_X86_CODE_NEAR}
+ jmp word es:[bx + Jmp_buf.ip]
+ {$else FPC_X86_CODE_NEAR}
+ // the inline asm doesn't support jmp far yet, so we use db for now
+ // jmp far es:[bx + Jmp_buf.ip]
+ db 026h, 0FFh, 06Fh, Jmp_buf.ip
+ {$endif FPC_X86_CODE_NEAR}
+{$endif FPC_X86_DATA_NEAR}
end;
diff --git a/rtl/inc/astrings.inc b/rtl/inc/astrings.inc
index 5ec3c9910f..e9fda39988 100644
--- a/rtl/inc/astrings.inc
+++ b/rtl/inc/astrings.inc
@@ -292,7 +292,7 @@ procedure fpc_AnsiStr_Concat_multi (var DestS:RawByteString;const sarr:array of
Var
lowstart,
nonemptystart,
- i : NativeInt;
+ i : ObjpasInt;
p,pc : pointer;
Size,NewLen,
OldDestLen : SizeInt;
diff --git a/rtl/inc/cgenmath.inc b/rtl/inc/cgenmath.inc
index 4b70e934ca..174d224b8c 100644
--- a/rtl/inc/cgenmath.inc
+++ b/rtl/inc/cgenmath.inc
@@ -41,27 +41,27 @@
procedure checkexcepts;
var
feres: longint;
- sfexcepts: shortint;
+ sfexcepts: TFPUExceptionMask;
begin
feres:=fetestexcept(FE_ALL_EXCEPT);
- sfexcepts:=0;
+ sfexcepts:=[];
if feres<>0 then
begin
if (feres and FE_DIVBYZERO) <> 0 then
- sfexcepts:=sfexcepts or float_flag_divbyzero;
+ include(sfexcepts,float_flag_divbyzero);
if (feres and FE_INEXACT) <> 0 then
- sfexcepts:=sfexcepts or float_flag_inexact;
+ include(sfexcepts,float_flag_inexact);
if (feres and FE_INVALID) <> 0 then
- sfexcepts:=sfexcepts or float_flag_invalid;
+ include(sfexcepts,float_flag_invalid);
if (feres and FE_OVERFLOW) <> 0 then
- sfexcepts:=sfexcepts or float_flag_overflow;
+ include(sfexcepts,float_flag_overflow);
if (feres and FE_UNDERFLOW) <> 0 then
- sfexcepts:=sfexcepts or float_flag_underflow;
+ include(sfexcepts,float_flag_underflow);
end
{ unknown error }
else if (geterrno<>0) then
- sfexcepts:=sfexcepts or float_flag_invalid;
- if sfexcepts<>0 then
+ include(sfexcepts,float_flag_invalid);
+ if sfexcepts<>[] then
float_raise(sfexcepts);
end;
diff --git a/rtl/inc/compproc.inc b/rtl/inc/compproc.inc
index e2f6417497..f0ba77aa67 100644
--- a/rtl/inc/compproc.inc
+++ b/rtl/inc/compproc.inc
@@ -602,7 +602,6 @@ function fpc_exp_real(d : ValReal) : ValReal;compilerproc;{$ifdef MATHINLINE}inl
function fpc_frac_real(d : ValReal) : ValReal;compilerproc;
function fpc_int_real(d : ValReal) : ValReal;compilerproc;{$ifdef MATHINLINE}inline;{$endif}
function fpc_ln_real(d : ValReal) : ValReal;compilerproc;{$ifdef MATHINLINE}inline;{$endif}
-function fpc_pi_real : ValReal;compilerproc;
function fpc_sin_real(d : ValReal) : ValReal;compilerproc;{$ifdef MATHINLINE}inline;{$endif}
function fpc_sqr_real(d : ValReal) : ValReal;compilerproc;{$ifdef MATHINLINE}inline;{$endif}
function fpc_sqrt_real(d : ValReal) : ValReal;compilerproc;
@@ -643,8 +642,10 @@ function fpc_PopObjectStack : TObject; compilerproc;
function fpc_PopSecondObjectStack : TObject; compilerproc;
Procedure fpc_ReRaise; compilerproc;
Function fpc_Catches(Objtype : TClass) : TObject; compilerproc;
+{$ifdef VER2_6}
Procedure fpc_DestroyException(o : TObject); compilerproc;
function fpc_GetExceptionAddr : CodePointer; compilerproc;
+{$endif VER2_6}
function fpc_safecallhandler(obj: TObject): HResult; compilerproc;
function fpc_safecallcheck(res : hresult) : hresult; compilerproc; {$ifdef CPU86} register; {$endif}
procedure fpc_doneexception; compilerproc;
diff --git a/rtl/inc/dynlibs.pas b/rtl/inc/dynlibs.pas
index 9b276093a0..54e21251f1 100644
--- a/rtl/inc/dynlibs.pas
+++ b/rtl/inc/dynlibs.pas
@@ -87,7 +87,7 @@ Function DoSafeLoadLibrary(const Name : UnicodeString) : TLibHandle;
{$ifdef cpui386}
if has_sse_support then
{$endif cpui386}
- ssecw:=GetSSECSR;
+ ssecw:=GetMXCSR;
{$endif}
Result:=doloadlibrary(Name);
finally
@@ -96,7 +96,7 @@ Function DoSafeLoadLibrary(const Name : UnicodeString) : TLibHandle;
{$ifdef cpui386}
if has_sse_support then
{$endif cpui386}
- SetSSECSR(ssecw);
+ SetMXCSR(ssecw);
{$endif}
end;
end;
diff --git a/rtl/inc/except.inc b/rtl/inc/except.inc
index b33e3741ae..5ebe3b2c7a 100644
--- a/rtl/inc/except.inc
+++ b/rtl/inc/except.inc
@@ -47,7 +47,7 @@ Var
{$endif FPC_HAS_FEATURE_THREADING}
ExceptAddrStack : PExceptAddr;
ExceptObjectStack : PExceptObject;
- ExceptTryLevel : nativeint;
+ ExceptTryLevel : ObjpasInt;
Function RaiseList : PExceptObject;
begin
@@ -113,10 +113,8 @@ var
framecount : longint;
frames : PCodePointer;
prev_frame,
- curr_frame,
- caller_frame : Pointer;
- curr_addr,
- caller_addr : CodePointer;
+ curr_frame : Pointer;
+ curr_addr : CodePointer;
begin
{$ifdef excdebug}
writeln ('In PushExceptObject');
@@ -139,23 +137,20 @@ begin
{ The frame pointer of this procedure is used as initial stack bottom value. }
prev_frame:=get_frame;
while (framecount<RaiseMaxFrameCount) and (curr_frame > prev_frame) and
- (curr_frame<(StackBottom + StackLength)) do
+ (curr_frame<StackTop) do
Begin
- caller_addr := get_caller_addr(curr_frame, curr_addr);
- caller_frame := get_caller_frame(curr_frame, curr_addr);
- if (caller_addr=nil) or
- (caller_frame=nil) then
+ prev_frame:=curr_frame;
+ get_caller_stackinfo(curr_frame,curr_addr);
+ if (curr_addr=nil) or
+ (curr_frame=nil) then
break;
if (framecount>=framebufsize) then
begin
inc(framebufsize,16);
reallocmem(frames,framebufsize*sizeof(codepointer));
end;
- frames[framecount]:=caller_addr;
+ frames[framecount]:=curr_addr;
inc(framecount);
- prev_frame:=curr_frame;
- curr_addr:=caller_addr;
- curr_frame:=caller_frame;
End;
NewObj^.framecount:=framecount;
NewObj^.frames:=frames;
@@ -340,6 +335,7 @@ begin
end;
end;
+{$ifdef VER2_6}
Procedure fpc_DestroyException(o : TObject);[Public, Alias : 'FPC_DESTROYEXCEPTION']; compilerproc;
begin
{ with free we're on the really safe side }
@@ -357,6 +353,7 @@ begin
else
fpc_GetExceptionAddr:=_ExceptObjectStack^.Addr;
end;
+{$endif VER2_6}
Procedure SysInitExceptions;
{
diff --git a/rtl/inc/file.inc b/rtl/inc/file.inc
index 8deaf8e3d9..8b986df03f 100644
--- a/rtl/inc/file.inc
+++ b/rtl/inc/file.inc
@@ -430,10 +430,14 @@ End;
Procedure Erase(var f : File);[IOCheck];
Begin
- If InOutRes <> 0 then
- exit;
- If FileRec(f).mode=fmClosed Then
- Do_Erase(PFileTextRecChar(@FileRec(f).Name),false);
+ if InOutRes<>0 then
+ exit;
+ if FileRec(f).mode<>fmClosed then
+ begin
+ InOutRes:=102;
+ exit;
+ end;
+ Do_Erase(PFileTextRecChar(@FileRec(f).Name),false);
End;
@@ -443,9 +447,13 @@ var
fs: RawByteString;
{$endif FPCRTL_FILESYSTEM_SINGLE_BYTE_API}
Begin
- If (InOutRes<>0) or
- (FileRec(f).mode<>fmClosed) then
+ if InOutRes<>0 then
exit;
+ if FileRec(f).mode<>fmClosed then
+ begin
+ InOutRes:=102;
+ exit;
+ end;
{$ifdef FPCRTL_FILESYSTEM_SINGLE_BYTE_API}
{ it's slightly faster to convert the unicodestring here to rawbytestring
than doing it in do_rename(), because here we still know the length }
@@ -476,9 +484,13 @@ var
{$endif FPCRTL_FILESYSTEM_SINGLE_BYTE_API}
dstchangeable: boolean;
Begin
- If (InOutRes<>0) or
- (FileRec(f).mode<>fmClosed) then
+ if InOutRes<>0 then
exit;
+ if FileRec(f).mode<>fmClosed then
+ begin
+ InOutRes:=102;
+ exit;
+ end;
{$ifdef FPCRTL_FILESYSTEM_SINGLE_BYTE_API}
dstchangeable:=false;
pdst:=PAnsiChar(s);
@@ -532,19 +544,21 @@ End;
var
len: SizeInt
Begin
- If InOutRes<>0 then
+ if InOutRes<>0 then
exit;
- If FileRec(f).mode=fmClosed Then
- Begin
- Do_Rename(PFileTextRecChar(@FileRec(f).Name),p,false);
- { check error code of do_rename }
- If InOutRes=0 then
- begin
- len:=min(StrLen(p),high(FileRec(f).Name));
- Move(p^,FileRec(f).Name,len);
- FileRec(f).Name[len]:=#0;
- end;
- End;
+ if FileRec(f).mode<>fmClosed then
+ begin
+ InOutRes:=102;
+ exit;
+ end;
+ Do_Rename(PFileTextRecChar(@FileRec(f).Name),p,false);
+ { check error code of do_rename }
+ if InOutRes=0 then
+ begin
+ len:=min(StrLen(p),high(FileRec(f).Name));
+ Move(p^,FileRec(f).Name,len);
+ FileRec(f).Name[len]:=#0;
+ end;
End;
{$endif FPC_HAS_FEATURE_ANSISTRINGS}
diff --git a/rtl/inc/generic.inc b/rtl/inc/generic.inc
index d69803ffdd..406a3e666f 100644
--- a/rtl/inc/generic.inc
+++ b/rtl/inc/generic.inc
@@ -740,7 +740,7 @@ end;
type
pobjectvmt=^tobjectvmt;
tobjectvmt=record
- size,msize:ptruint;
+ size,msize:sizeuint;
parent:pointer;
end;
@@ -1356,7 +1356,7 @@ end;
{$ifndef FPC_SYSTEM_HAS_DIV_DWORD}
function fpc_div_dword(n,z : dword) : dword; [public,alias: 'FPC_DIV_DWORD']; compilerproc;
var
- shift,lzz,lzn : nativeint;
+ shift,lzz,lzn : ObjpasInt;
begin
result:=0;
if n=0 then
@@ -1388,7 +1388,7 @@ function fpc_div_dword(n,z : dword) : dword; [public,alias: 'FPC_DIV_DWORD']; co
{$ifndef FPC_SYSTEM_HAS_MOD_DWORD}
function fpc_mod_dword(n,z : dword) : dword; [public,alias: 'FPC_MOD_DWORD']; compilerproc;
var
- shift,lzz,lzn : nativeint;
+ shift,lzz,lzn : ObjpasInt;
begin
result:=0;
if n=0 then
@@ -1818,7 +1818,7 @@ end;
procedure SysResetFpu;{$ifdef SYSTEMINLINE}inline;{$endif}
begin
- softfloat_exception_flags:=0;
+ softfloat_exception_flags:=[];
end;
{$endif FPC_SYSTEM_HAS_SYSRESETFPU}
@@ -1827,7 +1827,7 @@ end;
procedure SysInitFpu;{$ifdef SYSTEMINLINE}inline;{$endif}
begin
- softfloat_exception_mask:=float_flag_underflow or float_flag_inexact or float_flag_denormal;
+ softfloat_exception_mask:=[float_flag_underflow,float_flag_inexact,float_flag_denormal];
end;
{$endif FPC_SYSTEM_HAS_SYSINITFPU}
diff --git a/rtl/inc/genmath.inc b/rtl/inc/genmath.inc
index 4a5f25c562..6eac64fd77 100644
--- a/rtl/inc/genmath.inc
+++ b/rtl/inc/genmath.inc
@@ -34,6 +34,30 @@
{-------------------------------------------------------------------------}
{ Copyright (c) 1997 Carl Eric Codere }
{-------------------------------------------------------------------------}
+{-------------------------------------------------------------------------
+ Using functions from AMath/DAMath libraries, which are covered by the
+ following license:
+
+ (C) Copyright 2009-2013 Wolfgang Ehrhardt
+
+ This software is provided 'as-is', without any express or implied warranty.
+ In no event will the authors be held liable for any damages arising from
+ the use of this software.
+
+ Permission is granted to anyone to use this software for any purpose,
+ including commercial applications, and to alter it and redistribute it
+ freely, subject to the following restrictions:
+
+ 1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software in
+ a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+
+ 2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+
+ 3. This notice may not be removed or altered from any source distribution.
+----------------------------------------------------------------------------}
type
PReal = ^Real;
@@ -60,23 +84,14 @@ type
const
- PIO2 = 1.57079632679489661923; { pi/2 }
PIO4 = 7.85398163397448309616E-1; { pi/4 }
SQRT2 = 1.41421356237309504880; { sqrt(2) }
- SQRTH = 7.07106781186547524401E-1; { sqrt(2)/2 }
LOG2E = 1.4426950408889634073599; { 1/log(2) }
- SQ2OPI = 7.9788456080286535587989E-1; { sqrt( 2/pi )}
- LOGE2 = 6.93147180559945309417E-1; { log(2) }
- LOGSQ2 = 3.46573590279972654709E-1; { log(2)/2 }
- THPIO4 = 2.35619449019234492885; { 3*pi/4 }
- TWOOPI = 6.36619772367581343075535E-1; { 2/pi }
lossth = 1.073741824e9;
MAXLOG = 8.8029691931113054295988E1; { log(2**127) }
MINLOG = -8.872283911167299960540E1; { log(2**-128) }
- DP1 = 7.85398125648498535156E-1;
- DP2 = 3.77489470793079817668E-8;
- DP3 = 2.69515142907905952645E-15;
+ zero: double = 0;
{$if not defined(FPC_SYSTEM_HAS_SIN) or not defined(FPC_SYSTEM_HAS_COS)}
const sincof : array[0..5] of Real = (
@@ -103,31 +118,46 @@ to substitute a result value. If traps are not implemented, this routine
should be simply `softfloat_exception_flags |= flags;'.
-------------------------------------------------------------------------------
*}
-procedure float_raise(i: shortint);
+procedure float_raise(i: TFPUException);
+begin
+ float_raise([i]);
+end;
+
+procedure float_raise(i: TFPUExceptionMask);
var
- pflags: pbyte;
- unmasked_flags: byte;
+ pflags: ^TFPUExceptionMask;
+ unmasked_flags: TFPUExceptionMask;
Begin
{ taking address of threadvar produces somewhat more compact code }
pflags := @softfloat_exception_flags;
- pflags^ := pflags^ or i;
- unmasked_flags := pflags^ and (not softfloat_exception_mask);
- if (unmasked_flags and float_flag_invalid) <> 0 then
+ pflags^:=pflags^ + i;
+ unmasked_flags := pflags^ - softfloat_exception_mask;
+ if (float_flag_invalid in unmasked_flags) then
HandleError(207)
else
- if (unmasked_flags and float_flag_divbyzero) <> 0 then
+ if (float_flag_divbyzero in unmasked_flags) then
HandleError(200)
else
- if (unmasked_flags and float_flag_overflow) <> 0 then
+ if (float_flag_overflow in unmasked_flags) then
HandleError(205)
else
- if (unmasked_flags and float_flag_underflow) <> 0 then
+ if (float_flag_underflow in unmasked_flags) then
HandleError(206)
else
- if (unmasked_flags and float_flag_inexact) <> 0 then
+ if (float_flag_inexact in unmasked_flags) then
HandleError(207);
end;
+
+{ This function does nothing, but its argument is expected to be an expression
+ which causes FPE when calculated. If exception is masked, it just returns true,
+ allowing to use it in expressions. }
+function fpe_helper(x: valreal): boolean;
+begin
+ result:=true;
+end;
+
+
{$ifdef SUPPORT_DOUBLE}
{$ifndef FPC_HAS_FLOAT64HIGH}
@@ -188,9 +218,9 @@ type
begin
if aExp>=$43e then
begin
- if (a.high<>$C3E00000) or (a.low<>0) then
+ if (a.high<>longint($C3E00000)) or (a.low<>0) then
begin
- float_raise(float_flag_invalid);
+ fpe_helper(zero/zero);
if (longint(a.high)>=0) or ((aExp=$7FF) and
(aSig<>$0010000000000000 )) then
begin
@@ -238,7 +268,7 @@ type
Begin
if ( a <> Float32($DF000000) ) then
Begin
- float_raise( float_flag_invalid );
+ fpe_helper( zero/zero );
if ( (longint(a)>=0) or ( ( aExp = $FF ) and (aSig<>0) ) ) then
Begin
result:=$7fffffffffffffff;
@@ -362,6 +392,7 @@ type
{$ifndef SYSTEM_HAS_LDEXP}
{$ifdef SUPPORT_DOUBLE}
+{ ldexpd function adapted from DAMath library (C) Copyright 2013 Wolfgang Ehrhardt }
function ldexp( x: Real; N: Integer):Real;
{* ldexp() multiplies x by 2**n. *}
var
@@ -886,6 +917,9 @@ type
function rem_pio2(x: double; out z: double): sizeint;
const
tol: double = 2.384185791015625E-7; {lossth*eps_d}
+ DP1 = double(7.85398125648498535156E-1);
+ DP2 = double(3.77489470793079817668E-8);
+ DP3 = double(2.69515142907905952645E-15);
var
i,e0,nx: longint;
y: double;
@@ -917,6 +951,12 @@ type
end;
z := abs(x);
e0 := (float64high(z) shr 20)-1046;
+ if (e0 = ($7ff-1046)) then { z is Inf or NaN }
+ begin
+ z := x - x;
+ result:=0;
+ exit;
+ end;
float64sethigh(z,float64high(z) - (e0 shl 20));
tx[0] := trunc(z);
z := (z-tx[0])*two24;
@@ -942,12 +982,6 @@ type
end;
{$endif}
-{$ifndef FPC_SYSTEM_HAS_PI}
- function fpc_pi_real : ValReal;compilerproc;{$ifdef MATHINLINE}inline;{$endif}
- begin
- result := 3.1415926535897932385;
- end;
-{$endif}
{$ifndef FPC_SYSTEM_HAS_SQRT}
@@ -976,11 +1010,10 @@ type
begin
if( d <= 0.0 ) then
begin
- if d < 0.0 then begin
- float_raise(float_flag_invalid);
- d := 0/0;
- end;
- result := 0.0;
+ if d < 0.0 then
+ result:=(d-d)/zero
+ else
+ result := 0.0;
end
else
begin
@@ -1288,177 +1321,212 @@ type
{$ifndef FPC_SYSTEM_HAS_ROUND}
function fpc_round_real(d : ValReal) : int64;compilerproc;
var
- fr: ValReal;
- tr: Int64;
+ tmp: double;
+ j0: longint;
+ hx: longword;
+ sx: longint;
+ const
+ H2_52: array[0..1] of double = (
+ 4.50359962737049600000e+15,
+ -4.50359962737049600000e+15
+ );
Begin
- fr := abs(Frac(d));
- tr := Trunc(d);
- result:=0;
- case softfloat_rounding_mode of
- float_round_nearest_even:
- begin
- if fr > 0.5 then
- if d >= 0 then
- result:=tr+1
- else
- result:=tr-1
- else
- if fr < 0.5 then
- result:=tr
- else { fr = 0.5 }
- { check sign to decide ... }
- { as in Turbo Pascal... }
- begin
- if d >= 0.0 then
- result:=tr+1
- else
- result:=tr;
- { round to even }
- result:=result and not(1);
- end;
- end;
- float_round_down:
- if (d >= 0.0) or
- (fr = 0.0) then
- result:=tr
+ { This basically calculates trunc((d+2**52)-2**52) }
+ hx:=float64high(d);
+ j0:=((hx shr 20) and $7ff) - $3ff;
+ sx:=hx shr 31;
+ hx:=(hx and $fffff) or $100000;
+
+ if j0>=52 then { No fraction bits, already integer }
+ begin
+ if j0>=63 then { Overflow, let trunc() raise an exception }
+ exit(trunc(d)) { and/or return +/-MaxInt64 if it's masked }
else
- result:=tr-1;
- float_round_up:
- if (d >= 0.0) and
- (fr <> 0.0) then
- result:=tr+1
+ result:=((int64(hx) shl 32) or float64low(d)) shl (j0-52);
+ end
+ else
+ begin
+ { Rounding happens here. It is important that the expression is not
+ optimized by selecting a larger type to store 'tmp'. }
+ tmp:=H2_52[sx]+d;
+ d:=tmp-H2_52[sx];
+ hx:=float64high(d);
+ j0:=((hx shr 20) and $7ff)-$3ff;
+ hx:=(hx and $fffff) or $100000;
+ if j0<=20 then
+ begin
+ if j0<0 then
+ exit(0)
+ else { more than 32 fraction bits, low dword discarded }
+ result:=hx shr (20-j0);
+ end
else
- result:=tr;
- float_round_to_zero:
- result:=tr;
- else
- { needed for jvm: result must be initialized on all paths }
- result:=0;
- end;
+ result:=(int64(hx) shl (j0-20)) or (float64low(d) shr (52-j0));
+ end;
+ if sx<>0 then
+ result:=-result;
end;
{$endif FPC_SYSTEM_HAS_ROUND}
{$ifndef FPC_SYSTEM_HAS_LN}
function fpc_ln_real(d:ValReal):ValReal;compilerproc;
+ {
+ This code was translated from uclib code, the original code
+ had the following copyright notice:
+
+ *
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ *}
+
{*****************************************************************}
{ Natural Logarithm }
{*****************************************************************}
- { }
- { SYNOPSIS: }
- { }
- { double x, y, log(); }
- { }
- { y = ln( x ); }
- { }
- { DESCRIPTION: }
- { }
- { Returns the base e (2.718...) logarithm of x. }
- { }
- { The argument is separated into its exponent and fractional }
- { parts. If the exponent is between -1 and +1, the logarithm }
- { of the fraction is approximated by }
- { }
- { log(1+x) = x - 0.5 x**2 + x**3 P(x)/Q(x). }
- { }
- { Otherwise, setting z = 2(x-1)/x+1), }
- { }
- { log(x) = z + z**3 P(z)/Q(z). }
- { }
- {*****************************************************************}
- const P : array[0..6] of Real = (
- { Coefficients for log(1+x) = x - x**2/2 + x**3 P(x)/Q(x)
- 1/sqrt(2) <= x < sqrt(2) }
-
- 4.58482948458143443514E-5,
- 4.98531067254050724270E-1,
- 6.56312093769992875930E0,
- 2.97877425097986925891E1,
- 6.06127134467767258030E1,
- 5.67349287391754285487E1,
- 1.98892446572874072159E1);
- Q : array[0..5] of Real = (
- 1.50314182634250003249E1,
- 8.27410449222435217021E1,
- 2.20664384982121929218E2,
- 3.07254189979530058263E2,
- 2.14955586696422947765E2,
- 5.96677339718622216300E1);
-
- { Coefficients for log(x) = z + z**3 P(z)/Q(z),
- where z = 2(x-1)/(x+1)
- 1/sqrt(2) <= x < sqrt(2) }
-
- R : array[0..2] of Real = (
- -7.89580278884799154124E-1,
- 1.63866645699558079767E1,
- -6.41409952958715622951E1);
- S : array[0..2] of Real = (
- -3.56722798256324312549E1,
- 3.12093766372244180303E2,
- -7.69691943550460008604E2);
-
- var e : Integer;
- z, y : Real;
+ {*
+ * SYNOPSIS:
+ *
+ * double x, y, log();
+ *
+ * y = ln( x );
+ *
+ * DESCRIPTION:
+ *
+ * Returns the base e (2.718...) logarithm of x.
+ *
+ * Method :
+ * 1. Argument Reduction: find k and f such that
+ * x = 2^k * (1+f),
+ * where sqrt(2)/2 < 1+f < sqrt(2) .
+ *
+ * 2. Approximation of log(1+f).
+ * Let s = f/(2+f) ; based on log(1+f) = log(1+s) - log(1-s)
+ * = 2s + 2/3 s**3 + 2/5 s**5 + .....,
+ * = 2s + s*R
+ * We use a special Reme algorithm on [0,0.1716] to generate
+ * a polynomial of degree 14 to approximate R The maximum error
+ * of this polynomial approximation is bounded by 2**-58.45. In
+ * other words,
+ * 2 4 6 8 10 12 14
+ * R(z) ~ Lg1*s +Lg2*s +Lg3*s +Lg4*s +Lg5*s +Lg6*s +Lg7*s
+ * (the values of Lg1 to Lg7 are listed in the program)
+ * and
+ * | 2 14 | -58.45
+ * | Lg1*s +...+Lg7*s - R(z) | <= 2
+ * | |
+ * Note that 2s = f - s*f = f - hfsq + s*hfsq, where hfsq = f*f/2.
+ * In order to guarantee error in log below 1ulp, we compute log
+ * by
+ * log(1+f) = f - s*(f - R) (if f is not too large)
+ * log(1+f) = f - (hfsq - s*(hfsq+R)). (better accuracy)
+ *
+ * 3. Finally, log(x) = k*ln2 + log(1+f).
+ * = k*ln2_hi+(f-(hfsq-(s*(hfsq+R)+k*ln2_lo)))
+ * Here ln2 is split into two floating point number:
+ * ln2_hi + ln2_lo,
+ * where n*ln2_hi is always exact for |n| < 2000.
+ *
+ * Special cases:
+ * log(x) is NaN with signal if x < 0 (including -INF) ;
+ * log(+INF) is +INF; log(0) is -INF with signal;
+ * log(NaN) is that NaN with no signal.
+ *
+ * Accuracy:
+ * according to an error analysis, the error is always less than
+ * 1 ulp (unit in the last place).
+ *}
+ const
+ ln2_hi: double = 6.93147180369123816490e-01; { 3fe62e42 fee00000 }
+ ln2_lo: double = 1.90821492927058770002e-10; { 3dea39ef 35793c76 }
+ two54: double = 1.80143985094819840000e+16; { 43500000 00000000 }
+ Lg1: double = 6.666666666666735130e-01; { 3FE55555 55555593 }
+ Lg2: double = 3.999999999940941908e-01; { 3FD99999 9997FA04 }
+ Lg3: double = 2.857142874366239149e-01; { 3FD24924 94229359 }
+ Lg4: double = 2.222219843214978396e-01; { 3FCC71C5 1D8E78AF }
+ Lg5: double = 1.818357216161805012e-01; { 3FC74664 96CB03DE }
+ Lg6: double = 1.531383769920937332e-01; { 3FC39A09 D078C69F }
+ Lg7: double = 1.479819860511658591e-01; { 3FC2F112 DF3E5244 }
+
+ zero: double = 0.0;
+ var
+ hfsq,f,s,z,R,w,t1,t2,dk: double;
+ k,hx,i,j: longint;
+ lx: longword;
begin
- if( d <= 0.0 ) then
- begin
- float_raise(float_flag_invalid);
- exit;
- end;
- d := frexp( d, e );
+ hx := float64high(d);
+ lx := float64low(d);
- { logarithm using log(x) = z + z**3 P(z)/Q(z),
- where z = 2(x-1)/x+1) }
-
- if( (e > 2) or (e < -2) ) then
- begin
- if( d < SQRTH ) then
- begin
- { 2( 2x-1 )/( 2x+1 ) }
- Dec(e, 1);
- z := d - 0.5;
- y := 0.5 * z + 0.5;
- end
- else
- begin
- { 2 (x-1)/(x+1) }
- z := d - 0.5;
- z := z - 0.5;
- y := 0.5 * d + 0.5;
- end;
- d := z / y;
- { /* rational form */ }
- z := d*d;
- z := d + d * ( z * polevl( z, R, 2 ) / p1evl( z, S, 3 ) );
- end
- else
- begin
- { logarithm using log(1+x) = x - .5x**2 + x**3 P(x)/Q(x) }
- if( d < SQRTH ) then
- begin
- Dec(e, 1);
- d := ldexp( d, 1 ) - 1.0; { 2x - 1 }
- end
- else
- d := d - 1.0;
-
- { rational form }
- z := d*d;
- y := d * ( z * polevl( d, P, 6 ) / p1evl( d, Q, 6 ) );
- y := y - ldexp( z, -1 ); { y - 0.5 * z }
- z := d + y;
- end;
- { recombine with exponent term }
- if( e <> 0 ) then
- begin
- y := e;
- z := z - y * 2.121944400546905827679e-4;
- z := z + y * 0.693359375;
- end;
-
- result:= z;
+ k := 0;
+ if (hx < $00100000) then { x < 2**-1022 }
+ begin
+ if (((hx and $7fffffff) or lx)=0) then
+ exit(-two54/zero); { log(+-0)=-inf }
+ if (hx<0) then
+ exit((d-d)/zero); { log(-#) = NaN }
+ dec(k, 54); d := d * two54; { subnormal number, scale up x }
+ hx := float64high(d);
+ end;
+ if (hx >= $7ff00000) then
+ exit(d+d);
+ inc(k, (hx shr 20)-1023);
+ hx := hx and $000fffff;
+ i := (hx + $95f64) and $100000;
+ float64sethigh(d,hx or (i xor $3ff00000)); { normalize x or x/2 }
+ inc(k, (i shr 20));
+ f := d-1.0;
+ if (($000fffff and (2+hx))<3) then { |f| < 2**-20 }
+ begin
+ if (f=zero) then
+ begin
+ if (k=0) then
+ exit(zero)
+ else
+ begin
+ dk := k;
+ exit(dk*ln2_hi+dk*ln2_lo);
+ end;
+ end;
+ R := f*f*(0.5-0.33333333333333333*f);
+ if (k=0) then
+ exit(f-R)
+ else
+ begin
+ dk := k;
+ exit(dk*ln2_hi-((R-dk*ln2_lo)-f));
+ end;
+ end;
+ s := f/(2.0+f);
+ dk := k;
+ z := s*s;
+ i := hx-$6147a;
+ w := z*z;
+ j := $6b851-hx;
+ t1 := w*(Lg2+w*(Lg4+w*Lg6));
+ t2 := z*(Lg1+w*(Lg3+w*(Lg5+w*Lg7)));
+ i := i or j;
+ R := t2+t1;
+ if (i>0) then
+ begin
+ hfsq := 0.5*f*f;
+ if (k=0) then
+ result := f-(hfsq-s*(hfsq+R))
+ else
+ result := dk*ln2_hi-((hfsq-(s*(hfsq+R)+dk*ln2_lo))-f);
+ end
+ else
+ begin
+ if (k=0) then
+ result := f-s*(f-R)
+ else
+ result := dk*ln2_hi-((s*(f-R)-dk*ln2_lo)-f);
+ end;
end;
{$endif}
@@ -1491,6 +1559,9 @@ type
j : sizeint;
begin
+ { This seemingly useless condition ensures that sin(-0.0)=-0.0 }
+ if (d=0.0) then
+ exit(d);
j := rem_pio2(d,z) and 3;
zz := z * z;
diff --git a/rtl/inc/heap.inc b/rtl/inc/heap.inc
index 8d816ef074..d9ccb69752 100644
--- a/rtl/inc/heap.inc
+++ b/rtl/inc/heap.inc
@@ -311,7 +311,7 @@ end;
{ Delphi style }
-function FreeMem(p:pointer):ptruint;[Public,Alias:'FPC_FREEMEM_X'];
+function FreeMem(p:pointer):ptruint;
begin
FreeMem := MemoryManager.FreeMem(p);
end;
diff --git a/rtl/inc/heaptrc.pp b/rtl/inc/heaptrc.pp
index 337485326d..faec837e60 100644
--- a/rtl/inc/heaptrc.pp
+++ b/rtl/inc/heaptrc.pp
@@ -23,7 +23,6 @@ interface
{$endif FPC_HEAPTRC_EXTRA}
{$checkpointer off}
-{$goto on}
{$TYPEDADDRESS on}
{$if defined(win32) or defined(wince)}
@@ -465,10 +464,7 @@ end;
Function TraceGetMem(size:ptruint):pointer;
var
- allocsize,i : ptruint;
- oldbp,
- bp : pointer;
- pcaddr : codepointer;
+ allocsize : ptruint;
pl : pdword;
p : pointer;
pp : pheap_mem_info;
@@ -532,19 +528,7 @@ begin
{ clear the memory }
fillchar(p^,size,#255);
{ retrieve backtrace info }
- bp:=get_frame;
- pcaddr:=get_pc_addr;
- get_caller_stackinfo(bp,pcaddr);
- { valid bp? }
- if (bp>=StackBottom) and (bp<(StackBottom + StackLength)) then
- for i:=1 to tracesize do
- begin
- oldbp:=bp;
- get_caller_stackinfo(bp,pcaddr);
- pp^.calls[i]:=pcaddr;
- if (bp<oldbp) or (bp>(StackBottom + StackLength)) then
- break;
- end;
+ CaptureBacktrace(1,tracesize-1,@pp^.calls[1]);
{ insert in the linked list }
if loc_info^.heap_mem_root<>nil then
@@ -576,9 +560,6 @@ end;
function CheckFreeMemSize(loc_info: pheap_info; pp: pheap_mem_info;
size, ppsize: ptruint): boolean; inline;
var
- i: ptruint;
- bp : pointer;
- pcaddr : codepointer;
ptext : ^text;
{$ifdef EXTRA}
pp2 : pheap_mem_info;
@@ -636,20 +617,8 @@ begin
loc_info^.heap_mem_root:=loc_info^.heap_mem_root^.previous;
end
else
- begin
- bp:=get_frame;
- pcaddr:=get_pc_addr;
- get_caller_stackinfo(bp,pcaddr);
+ CaptureBacktrace(1,(tracesize div 2)-1,@pp^.calls[(tracesize div 2)+1]);
- if (bp>=StackBottom) and (bp<(StackBottom + StackLength)) then
- for i:=(tracesize div 2)+1 to tracesize do
- begin
- get_caller_stackinfo(bp,pcaddr);
- pp^.calls[i]:=pcaddr;
- if not((bp>=StackBottom) and (bp<(StackBottom + StackLength))) then
- break;
- end;
- end;
inc(loc_info^.freemem_cnt);
{ clear the memory, $F0 will lead to GFP if used as pointer ! }
fillchar((pointer(pp)+sizeof(theap_mem_info))^,size,#240);
@@ -800,11 +769,7 @@ function TraceReAllocMem(var p:pointer;size:ptruint):Pointer;
var
newP: pointer;
allocsize,
- movesize,
- i : ptruint;
- oldbp,
- bp : pointer;
- pcaddr : codepointer;
+ movesize : ptruint;
pl : pdword;
pp : pheap_mem_info;
oldsize,
@@ -919,18 +884,7 @@ begin
inc(loc_info^.getmem_size,size);
inc(loc_info^.getmem8_size,(size+7) and not 7);
{ generate new backtrace }
- bp:=get_frame;
- pcaddr:=get_pc_addr;
- get_caller_stackinfo(bp,pcaddr);
- if (bp>=StackBottom) and (bp<(StackBottom + StackLength)) then
- for i:=1 to tracesize do
- begin
- oldbp:=bp;
- get_caller_stackinfo(bp,pcaddr);
- pp^.calls[i]:=pcaddr;
- if (bp<oldbp) or (bp>(StackBottom + StackLength)) then
- break;
- end;
+ CaptureBacktrace(1,tracesize-1,@pp^.calls[1]);
{ regenerate signature }
if usecrc then
pp^.sig:=calculate_sig(pp);
@@ -1007,14 +961,9 @@ var
{$ifdef windows}
datap : pointer;
{$endif windows}
-{$ifdef morphos}
- stack_top: longword;
-{$endif morphos}
bp : pointer;
pcaddr : codepointer;
ptext : ^text;
-label
- _exit;
begin
if p=nil then
runerror(204);
@@ -1037,11 +986,11 @@ begin
stack_top:=__stkbottom+__stklen;
{ allow all between start of code and end of bss }
if ptruint(p)<=bss_end then
- goto _exit;
+ exit;
{ stack can be above heap !! }
if (ptruint(p)>=get_ebp) and (ptruint(p)<=stack_top) then
- goto _exit;
+ exit;
{$endif go32v2}
{ I don't know where the stack is in other OS !! }
@@ -1049,21 +998,21 @@ begin
{ inside stack ? }
if (ptruint(p)>ptruint(get_frame)) and
(p<StackTop) then
- goto _exit;
+ exit;
{ inside data ? }
if (ptruint(p)>=ptruint(@sdata)) and (ptruint(p)<ptruint(@edata)) then
- goto _exit;
+ exit;
{ inside bss ? }
if (ptruint(p)>=ptruint(@sbss)) and (ptruint(p)<ptruint(@ebss)) then
- goto _exit;
+ exit;
{ is program multi-threaded and p inside Threadvar range? }
if TlsKey<>-1 then
begin
datap:=TlsGetValue(tlskey);
if ((ptruint(p)>=ptruint(datap)) and
(ptruint(p)<ptruint(datap)+TlsSize)) then
- goto _exit;
+ exit;
end;
{$endif windows}
@@ -1071,27 +1020,26 @@ begin
{ inside stack ? }
if (PtrUInt (P) > PtrUInt (Get_Frame)) and
(PtrUInt (P) < PtrUInt (StackTop)) then
- goto _exit;
+ exit;
{ inside data or bss ? }
if (PtrUInt (P) >= PtrUInt (@etext)) and (PtrUInt (P) < PtrUInt (@eend)) then
- goto _exit;
+ exit;
{$ENDIF OS2}
{$ifdef linux}
{ inside stack ? }
if (ptruint(p)>ptruint(get_frame)) and
(ptruint(p)<$c0000000) then //todo: 64bit!
- goto _exit;
+ exit;
{ inside data or bss ? }
if (ptruint(p)>=ptruint(@etext)) and (ptruint(p)<ptruint(@eend)) then
- goto _exit;
+ exit;
{$endif linux}
{$ifdef morphos}
{ inside stack ? }
- stack_top:=ptruint(StackBottom)+StackLength;
- if (ptruint(p)<stack_top) and (ptruint(p)>ptruint(StackBottom)) then
- goto _exit;
+ if (ptruint(p)<ptruint(StackTop)) and (ptruint(p)>ptruint(StackBottom)) then
+ exit;
{ inside data or bss ? }
{$WARNING data and bss checking missing }
{$endif morphos}
@@ -1105,7 +1053,7 @@ begin
// if we find the address in a known area in our current process,
// then it is a valid one
if area_for(p) <> B_ERROR then
- goto _exit;
+ exit;
{$endif BEOS}
{ first try valid list faster }
@@ -1125,7 +1073,7 @@ begin
{ special case of the fill_extra_info call }
((pp=loc_info^.heap_valid_last) and usecrc and (pp^.sig=$DEADBEEF)
and loc_info^.inside_trace_getmem) then
- goto _exit
+ exit
else
begin
writeln(ptext^,'corrupted heap_mem_info');
@@ -1153,7 +1101,7 @@ begin
{ allocated block }
if ((pp^.sig=$DEADBEEF) and not usecrc) or
((pp^.sig=calculate_sig(pp)) and usecrc) then
- goto _exit
+ exit
else
begin
writeln(ptext^,'pointer $',hexstr(p),' points into invalid memory block');
@@ -1174,7 +1122,6 @@ begin
get_caller_stackinfo(bp,pcaddr);
dump_stack(ptext^,bp,pcaddr);
runerror(204);
-_exit:
end;
{*****************************************************************************
diff --git a/rtl/inc/innr.inc b/rtl/inc/innr.inc
index dd655b4d6f..aec400c1b3 100644
--- a/rtl/inc/innr.inc
+++ b/rtl/inc/innr.inc
@@ -115,6 +115,10 @@ const
fpc_in_arctan_real = 130;
fpc_in_ln_real = 131;
fpc_in_sin_real = 132;
+ fpc_in_fma_single = 133;
+ fpc_in_fma_double = 134;
+ fpc_in_fma_extended = 135;
+ fpc_in_fma_float128 = 136;
{ MMX functions }
{ these contants are used by the mmx unit }
diff --git a/rtl/inc/mathh.inc b/rtl/inc/mathh.inc
index 7967ef1c10..b58e5a3eee 100644
--- a/rtl/inc/mathh.inc
+++ b/rtl/inc/mathh.inc
@@ -20,45 +20,59 @@
procedure Set8087CW(cw:word);
function Get8087CW:word;
- {$ifndef cpui8086}
- procedure SetSSECSR(w : dword);
- function GetSSECSR : dword;
- {$endif not cpui8086}
{$endif}
+{$if defined (cpui386) or defined(cpux86_64)}
+ const
+ DefaultMXCSR: dword = $1900;
+
+ procedure SetMXCSR(w: dword);
+ function GetMXCSR: dword;
+ procedure SetSSECSR(w : dword); deprecated 'Renamed to SetMXCSR';
+ function GetSSECSR : dword; deprecated 'Renamed to GetMXCSR';
+{$endif}
+
+ type
+ TFPURoundingMode = (rmNearest, rmDown, rmUp, rmTruncate);
+ TFPUPrecisionMode = (pmSingle, pmReserved, pmDouble, pmExtended);
+ TFPUException = (exInvalidOp, exDenormalized, exZeroDivide,
+ exOverflow, exUnderflow, exPrecision);
+ TFPUExceptionMask = set of TFPUException;
+
const
{*
-------------------------------------------------------------------------------
Software IEC/IEEE floating-point exception flags.
-------------------------------------------------------------------------------
*}
- float_flag_invalid = 1;
- float_flag_denormal = 2;
- float_flag_divbyzero = 4;
- float_flag_overflow = 8;
- float_flag_underflow = 16;
- float_flag_inexact = 32;
+ float_flag_invalid = exInvalidOp;
+ float_flag_denormal = exDenormalized;
+ float_flag_divbyzero = exZeroDivide;
+ float_flag_overflow = exOverflow;
+ float_flag_underflow = exUnderflow;
+ float_flag_inexact = exPrecision;
{*
-------------------------------------------------------------------------------
Software IEC/IEEE floating-point rounding mode.
-------------------------------------------------------------------------------
*}
- float_round_nearest_even = 0;
- float_round_down = 1;
- float_round_up = 2;
- float_round_to_zero = 3;
+ float_round_nearest_even = rmNearest;
+ float_round_down = rmDown;
+ float_round_up = rmUp;
+ float_round_to_zero = rmTruncate;
{$ifdef FPC_HAS_FEATURE_THREADING}
ThreadVar
{$else FPC_HAS_FEATURE_THREADING}
Var
{$endif FPC_HAS_FEATURE_THREADING}
- softfloat_exception_mask : Byte;
- softfloat_exception_flags : Byte;
- softfloat_rounding_mode : Byte;
+ softfloat_exception_mask : TFPUExceptionMask;
+ softfloat_exception_flags : TFPUExceptionMask;
+ softfloat_rounding_mode : TFPURoundingMode;
-procedure float_raise(i: shortint);
+procedure float_raise(i: TFPUException);
+procedure float_raise(i: TFPUExceptionMask);
{$ifdef cpui386}
{$define INTERNMATH}
@@ -101,3 +115,15 @@ procedure float_raise(i: shortint);
operator := (b:real48) e:extended;
{$endif SUPPORT_EXTENDED}
+
+ function fma(s1,s2,s3 : single) : single;[internproc:fpc_in_fma_single];
+{$ifdef SUPPORT_DOUBLE}
+ function fma(d1,d2,d3 : double) : double;[internproc:fpc_in_fma_double];
+{$endif SUPPORT_DOUBLE}
+{$ifdef SUPPORT_EXTENDED}
+ function fma(e1,e2,e3 : extended) : extended;[internproc:fpc_in_fma_extended];
+{$endif SUPPORT_EXTENDED}
+{$ifdef SUPPORT_FLOAT128}
+ function fma(f1,f2,f3 : float128) : float128;[internproc:fpc_in_fma_float128];
+{$endif SUPPORT_FLOAT128}
+
diff --git a/rtl/inc/objpash.inc b/rtl/inc/objpash.inc
index c03a0f79f5..9eb394404e 100644
--- a/rtl/inc/objpash.inc
+++ b/rtl/inc/objpash.inc
@@ -31,7 +31,7 @@
const
vmtInstanceSize = 0;
- vmtParent = sizeof(ptruint)*2;
+ vmtParent = sizeof(SizeInt)*2;
{ These were negative value's, but are now positive, else classes
couldn't be used with shared linking which copies only all data from
the .global directive and not the data before the directive (PFV) }
@@ -164,7 +164,7 @@
tinterfaceentry = record
IID : pguid; { if assigned(IID) then Com else Corba}
VTable : Pointer;
- IOffset : ptruint;
+ IOffset : sizeuint;
IIDStr : pshortstring; { never nil. Com: upper(GuidToString(IID^)) }
case boolean of
{$ifdef ENDIAN_BIG}
@@ -172,11 +172,11 @@
{$else ENDIAN_BIG}
true : (IType : tinterfaceentrytype);
{$endif ENDIAN_BIG}
- false : (__pad_dummy : pointer);
+ false : (__pad_dummy : sizeint);
end;
tinterfacetable = record
- EntryCount : ptruint;
+ EntryCount : sizeuint;
Entries : array[0..0] of tinterfaceentry;
end;
diff --git a/rtl/inc/rtti.inc b/rtl/inc/rtti.inc
index 14265fc6c9..fdf3954759 100644
--- a/rtl/inc/rtti.inc
+++ b/rtl/inc/rtti.inc
@@ -16,12 +16,19 @@
{ the tk* constants are now declared in system.inc }
+{$ifndef FPC_REQUIRES_PROPER_ALIGNMENT}
+ {$define USE_PACKED}
+{$endif}
+{$ifdef VER2_6}
+ {$define USE_PACKED}
+{$endif}
+
type
PRecordElement=^TRecordElement;
TRecordElement=
-{$ifndef FPC_REQUIRES_PROPER_ALIGNMENT}
+{$ifdef USE_PACKED}
packed
-{$endif FPC_REQUIRES_PROPER_ALIGNMENT}
+{$endif USE_PACKED}
record
TypeInfo: Pointer;
{$ifdef VER2_6}
@@ -33,9 +40,9 @@ type
PRecordInfo=^TRecordInfo;
TRecordInfo=
-{$ifndef FPC_REQUIRES_PROPER_ALIGNMENT}
+{$ifdef USE_PACKED}
packed
-{$endif FPC_REQUIRES_PROPER_ALIGNMENT}
+{$endif USE_PACKED}
record
Size: Longint;
Count: Longint;
@@ -44,9 +51,9 @@ type
PArrayInfo=^TArrayInfo;
TArrayInfo=
-{$ifndef FPC_REQUIRES_PROPER_ALIGNMENT}
+{$ifdef USE_PACKED}
packed
-{$endif FPC_REQUIRES_PROPER_ALIGNMENT}
+{$endif USE_PACKED}
record
Size: SizeInt;
ElCount: SizeInt;
diff --git a/rtl/inc/softfpu.pp b/rtl/inc/softfpu.pp
index 179292565a..557f3d709b 100644
--- a/rtl/inc/softfpu.pp
+++ b/rtl/inc/softfpu.pp
@@ -582,6 +582,13 @@ implementation
(* ---------------------------------------------------------------------------*)
(*****************************************************************************)
+{ This procedure serves as a single access point to softfloat_exception_flags.
+ It also helps to reduce code size a bit because softfloat_exception_flags is
+ a threadvar. }
+procedure set_inexact_flag;
+begin
+ include(softfloat_exception_flags,float_flag_inexact);
+end;
{*----------------------------------------------------------------------------
| Takes a 64-bit fixed-point value `absZ' with binary point between bits 6
@@ -596,7 +603,7 @@ implementation
function roundAndPackInt32( zSign: flag; absZ : bits64): int32;
var
- roundingMode: int8;
+ roundingMode: TFPURoundingMode;
roundNearestEven: flag;
roundIncrement, roundBits: int8;
z: int32;
@@ -639,7 +646,7 @@ begin
exit;
end;
if ( roundBits<>0 ) then
- softfloat_exception_flags := softfloat_exception_flags or float_flag_inexact;
+ set_inexact_flag;
result:=z;
end;
@@ -657,7 +664,7 @@ end;
function roundAndPackInt64( zSign: flag; absZ0: bits64; absZ1 : bits64): int64;
var
- roundingMode: int8;
+ roundingMode: TFPURoundingMode;
roundNearestEven, increment: flag;
z: int64;
label
@@ -703,7 +710,7 @@ begin
exit;
end;
if ( absZ1<>0 ) then
- softfloat_exception_flags := softfloat_exception_flags or float_flag_inexact;
+ set_inexact_flag;
result:=z;
end;
@@ -797,7 +804,7 @@ begin
end
else if ( count < 64 ) then begin
z1 := ( a0 shl negCount ) or ( a1 shr count ) or ord( ( a1 shl negCount ) <> 0 );
- z0 := a0>>count;
+ z0 := a0 shr count;
end
else begin
if ( count = 64 ) then begin
@@ -1687,18 +1694,6 @@ End;
{*
-------------------------------------------------------------------------------
-Returns 1 if the 64-bit value formed by concatenating `a0' and `a1' is
-equal to the 64-bit value formed by concatenating `b0' and `b1'. Otherwise,
-returns 0.
--------------------------------------------------------------------------------
-*}
-Function eq64( a0: bits32; a1:bits32 ;b0:bits32; b1:bits32 ): flag;
-Begin
- eq64 := flag( a0 = b0 ) and flag( a1 = b1 );
-End;
-
-{*
--------------------------------------------------------------------------------
Returns 1 if the 64-bit value formed by concatenating `a0' and `a1' is less
than or equal to the 64-bit value formed by concatenating `b0' and `b1'.
Otherwise, returns 0.
@@ -1723,18 +1718,6 @@ Begin
lt64 := flag( a0 < b0 ) or flag( ( a0 = b0 ) and ( a1 < b1 ) );
End;
-{*
--------------------------------------------------------------------------------
-Returns 1 if the 64-bit value formed by concatenating `a0' and `a1' is not
-equal to the 64-bit value formed by concatenating `b0' and `b1'. Otherwise,
-returns 0.
--------------------------------------------------------------------------------
-*}
-Function ne64( a0: bits32; a1:bits32 ;b0:bits32; b1:bits32 ): flag;
-Begin
- ne64:= flag( a0 <> b0 ) or flag( a1 <> b1 );
-End;
-
const
float128_default_nan_high = qword($FFFFFFFFFFFFFFFF);
float128_default_nan_low = qword($FFFFFFFFFFFFFFFF);
@@ -1796,7 +1779,7 @@ Function float32_is_signaling_nan( a : float32 ): flag;
Begin
float32_is_signaling_nan := flag
- ( ( ( a shr 22 ) and $1FF ) = $1FE ) and( a and $003FFFFF );
+ (( ( ( a shr 22 ) and $1FF ) = $1FE ) and (( a and $003FFFFF )<>0));
End;
@@ -1912,8 +1895,8 @@ Function float64_is_nan( a : float64 ) : flag;
Begin
float64_is_nan :=
- flag( $FFE00000 <= bits32 ( a.high shl 1 ) )
- and ( a.low or ( a.high and $000FFFFF ) );
+ flag(( $FFE00000 <= bits32 ( a.high shl 1 ) )
+ and (( a.low or ( a.high and $000FFFFF ) )<>0));
End;
@@ -2439,7 +2422,7 @@ Binary Floating-Point Arithmetic.
*}
Function roundAndPackFloat32( zSign : Flag; zExp : Int16; zSig : Bits32 ) : float32;
Var
- roundingMode : BYTE;
+ roundingMode : TFPURoundingMode;
roundNearestEven : Flag;
roundIncrement, roundBits : BYTE;
IsTiny : Flag;
@@ -2476,7 +2459,7 @@ Function roundAndPackFloat32( zSign : Flag; zExp : Int16; zSig : Bits32 ) : floa
Begin
if (( $FD < zExp ) OR ( zExp = $FD ) AND ( sbits32 ( zSig + roundIncrement ) < 0 ) ) then
Begin
- float_raise( float_flag_overflow OR float_flag_inexact );
+ float_raise( [float_flag_overflow,float_flag_inexact] );
roundAndPackFloat32:=packFloat32( zSign, $FF, 0 ) - Flag( roundIncrement = 0 );
exit;
End;
@@ -2494,7 +2477,7 @@ Function roundAndPackFloat32( zSign : Flag; zExp : Int16; zSig : Bits32 ) : floa
End;
End;
if ( roundBits )<> 0 then
- softfloat_exception_flags := float_flag_inexact OR softfloat_exception_flags;
+ set_inexact_flag;
zSig := ( zSig + roundIncrement ) shr 7;
zSig := zSig AND not bits32( bits32( ( roundBits XOR $40 ) = 0 ) and roundNearestEven );
if ( zSig = 0 ) then zExp := 0;
@@ -2690,7 +2673,7 @@ Procedure
roundAndPackFloat64(
zSign: Flag; zExp: Int16; zSig0: Bits32; zSig1: Bits32; zSig2: Bits32; Var c: Float64 );
Var
- roundingMode : Int8;
+ roundingMode : TFPURoundingMode;
roundNearestEven, increment, isTiny : Flag;
Begin
@@ -2705,11 +2688,11 @@ Procedure
Begin
if ( zSign )<> 0 then
Begin
- increment := flag( roundingMode = float_round_down ) and zSig2;
+ increment := flag(( roundingMode = float_round_down ) and (zSig2<>0));
End
else
Begin
- increment := flag( roundingMode = float_round_up ) and zSig2;
+ increment := flag(( roundingMode = float_round_up ) and (zSig2<>0));
End
End
End;
@@ -2717,12 +2700,12 @@ Procedure
Begin
if (( $7FD < zExp )
or (( zExp = $7FD )
- and (eq64( $001FFFFF, $FFFFFFFF, zSig0, zSig1 )<>0)
- and (increment<>0)
+ and (zSig0=$001FFFFF) and (zSig1=$FFFFFFFF)
+ and (increment<>0)
)
) then
Begin
- float_raise( float_flag_overflow OR float_flag_inexact );
+ float_raise( [float_flag_overflow,float_flag_inexact] );
if (( roundingMode = float_round_to_zero )
or ( (zSign<>0) and ( roundingMode = float_round_up ) )
or ( (zSign = 0) and ( roundingMode = float_round_down ) )
@@ -2753,17 +2736,17 @@ Procedure
Begin
if ( zSign )<>0 then
Begin
- increment := flag( roundingMode = float_round_down ) and zSig2;
+ increment := flag(( roundingMode = float_round_down ) and (zSig2<>0));
End
else
Begin
- increment := flag( roundingMode = float_round_up ) and zSig2;
+ increment := flag(( roundingMode = float_round_up ) and (zSig2<>0));
End
End;
End;
End;
if ( zSig2 )<>0 then
- softfloat_exception_flags := softfloat_exception_flags OR float_flag_inexact;
+ set_inexact_flag;
if ( increment )<>0 then
Begin
add64( zSig0, zSig1, 0, 1, zSig0, zSig1 );
@@ -2800,7 +2783,7 @@ Procedure
function roundAndPackFloat64( zSign: flag; zExp: int16; zSig : bits64): float64;
var
- roundingMode: int8;
+ roundingMode: TFPURoundingMode;
roundNearestEven: flag;
roundIncrement, roundBits: int16;
isTiny: flag;
@@ -2835,7 +2818,7 @@ begin
and ( sbits64( zSig + roundIncrement ) < 0 ) )
) then
begin
- float_raise( float_flag_overflow or float_flag_inexact );
+ float_raise( [float_flag_overflow,float_flag_inexact] );
result := float64(qword(packFloat64( zSign, $7FF, 0 )) - ord( roundIncrement = 0 ));
exit;
end;
@@ -2853,7 +2836,7 @@ begin
end
end;
if ( roundBits<>0 ) then
- softfloat_exception_flags := softfloat_exception_flags or float_flag_inexact;
+ set_inexact_flag;
zSig := ( zSig + roundIncrement ) shr 10;
zSig := zSig and not(qword(ord( ( roundBits xor $200 ) = 0 ) and roundNearestEven ));
if ( zSig = 0 ) then
@@ -3053,7 +3036,7 @@ Function float32_to_int32( a : float32rec) : int32;compilerproc;
aExp, shiftCount: int16;
aSig, aSigExtra: bits32;
z: int32;
- roundingMode: int8;
+ roundingMode: TFPURoundingMode;
Begin
aSig := extractFloat32Frac( a.float32 );
@@ -3093,8 +3076,7 @@ Function float32_to_int32( a : float32rec) : int32;compilerproc;
z := aSig shr ( - shiftCount );
End;
if ( aSigExtra<>0 ) then
- softfloat_exception_flags := softfloat_exception_flags
- or float_flag_inexact;
+ set_inexact_flag;
roundingMode := softfloat_rounding_mode;
if ( roundingMode = float_round_nearest_even ) then
Begin
@@ -3164,8 +3146,7 @@ Function float32_to_int32_round_to_zero( a: Float32rec ): int32;compilerproc;
if ( aExp <= $7E ) then
Begin
if ( aExp or aSig )<>0 then
- softfloat_exception_flags :=
- softfloat_exception_flags or float_flag_inexact;
+ set_inexact_flag;
float32_to_int32_round_to_zero := 0;
exit;
End;
@@ -3173,8 +3154,7 @@ Function float32_to_int32_round_to_zero( a: Float32rec ): int32;compilerproc;
z := aSig shr ( - shiftCount );
if ( bits32 ( aSig shl ( shiftCount and 31 ) )<> 0 ) then
Begin
- softfloat_exception_flags :=
- softfloat_exception_flags or float_flag_inexact;
+ set_inexact_flag;
End;
if ( aSign<>0 ) then z := - z;
float32_to_int32_round_to_zero := z;
@@ -3251,7 +3231,7 @@ begin
exit;
end
else if ( aExp <= $7E ) then begin
- if ( aExp or aSig <> 0 ) then softfloat_exception_flags := softfloat_exception_flags or float_flag_inexact;
+ if ( aExp or aSig <> 0 ) then set_inexact_flag;
result := 0;
exit;
end;
@@ -3259,7 +3239,7 @@ begin
aSig64 := aSig64 shl 40;
z := aSig64 shr ( - shiftCount );
if bits64( aSig64 shl ( shiftCount and 63 ) ) <> 0 then
- softfloat_exception_flags := softfloat_exception_flags or float_flag_inexact;
+ set_inexact_flag;
if ( aSign <> 0 ) then z := - z;
result := z;
end;
@@ -3416,7 +3396,7 @@ Function float32_round_to_int( a: float32rec): float32rec;compilerproc;
aSign: flag;
aExp: int16;
lastBitMask, roundBitsMask: bits32;
- roundingMode: int8;
+ roundingMode: TFPURoundingMode;
z: float32;
Begin
aExp := extractFloat32Exp( a.float32 );
@@ -3437,8 +3417,7 @@ Function float32_round_to_int( a: float32rec): float32rec;compilerproc;
float32_round_to_int:=a;
exit;
end;
- softfloat_exception_flags
- := softfloat_exception_flags OR float_flag_inexact;
+ set_inexact_flag;
aSign := extractFloat32Sign( a.float32 );
case ( softfloat_rounding_mode ) of
@@ -3491,7 +3470,7 @@ Function float32_round_to_int( a: float32rec): float32rec;compilerproc;
End;
z := z and not roundBitsMask;
if ( z <> a.float32 ) then
- softfloat_exception_flags := softfloat_exception_flags or float_flag_inexact;
+ set_inexact_flag;
float32_round_to_int.float32 := z;
End;
@@ -4325,7 +4304,7 @@ var
aExp, shiftCount: int16;
aSig0, aSig1, absZ, aSigExtra: bits32;
z: int32;
- roundingMode: int8;
+ roundingMode: TFPURoundingMode;
label invalid;
Begin
aSig1 := extractFloat64Frac1( a );
@@ -4399,7 +4378,7 @@ Begin
exit;
End;
if ( aSigExtra <> 0) then
- softfloat_exception_flags := softfloat_exception_flags or float_flag_inexact;
+ set_inexact_flag;
float64_to_int32 := z;
End;
@@ -4446,8 +4425,7 @@ Var
Begin
if ( aExp OR aSig0 OR aSig1 )<>0 then
Begin
- softfloat_exception_flags :=
- softfloat_exception_flags or float_flag_inexact;
+ set_inexact_flag;
End;
float64_to_int32_round_to_zero := 0;
exit;
@@ -4471,7 +4449,7 @@ Var
exit;
End;
if ( aSigExtra <> 0) then
- softfloat_exception_flags := softfloat_exception_flags or float_flag_inexact;
+ set_inexact_flag;
float64_to_int32_round_to_zero := z;
End;
@@ -4559,13 +4537,13 @@ begin
end
else begin
if ( aExp < $3FE ) then begin
- if ( aExp or aSig <> 0 ) then softfloat_exception_flags := softfloat_exception_flags or float_flag_inexact;
+ if ( aExp or aSig <> 0 ) then set_inexact_flag;
result := 0;
exit;
end;
z := aSig shr ( - shiftCount );
if ( bits64( aSig shl ( shiftCount and 63 ) ) <> 0 ) then
- softfloat_exception_flags := softfloat_exception_flags or float_flag_inexact;
+ set_inexact_flag;
end;
if ( aSign <> 0 ) then z := - z;
result := z;
@@ -4662,7 +4640,7 @@ Var
aSign: flag;
aExp: int16;
lastBitMask, roundBitsMask: bits32;
- roundingMode: int8;
+ roundingMode: TFPURoundingMode;
z: float64;
Begin
aExp := extractFloat64Exp( a );
@@ -4725,8 +4703,7 @@ Begin
result := a;
exit;
End;
- softfloat_exception_flags := softfloat_exception_flags or
- float_flag_inexact;
+ set_inexact_flag;
aSign := extractFloat64Sign( a );
case ( softfloat_rounding_mode ) of
float_round_nearest_even:
@@ -4787,8 +4764,7 @@ Begin
End;
if ( ( z.low <> a.low ) OR ( z.high <> a.high ) ) then
Begin
- softfloat_exception_flags :=
- softfloat_exception_flags or float_flag_inexact;
+ set_inexact_flag;
End;
result := z;
End;
@@ -6365,7 +6341,7 @@ begin
zExp := 0;
roundBits := zSig0 and roundMask;
if ( isTiny <> 0 ) and ( roundBits <> 0 ) then float_raise( float_flag_underflow );
- if ( roundBits <> 0 ) then softfloat_exception_flags := softfloat_exception_flags or float_flag_inexact;
+ if ( roundBits <> 0 ) then set_inexact_flag;
inc( zSig0, roundIncrement );
if ( sbits64( zSig0 ) < 0 ) then zExp := 1;
roundIncrement := roundMask + 1;
@@ -6377,7 +6353,7 @@ begin
exit;
end;
end;
- if ( roundBits <> 0 ) then softfloat_exception_flags := softfloat_exception_flags or float_flag_inexact;
+ if ( roundBits <> 0 ) then set_inexact_flag;
inc( zSig0, roundIncrement );
if ( zSig0 < roundIncrement ) then begin
inc(zExp);
@@ -6415,7 +6391,7 @@ begin
) then begin
roundMask := 0;
overflow:
- float_raise( float_flag_overflow or float_flag_inexact );
+ float_raise( [float_flag_overflow,float_flag_inexact] );
if ( ( roundingMode = float_round_to_zero )
or ( ( zSign <> 0) and ( roundingMode = float_round_up ) )
or ( ( zSign = 0) and ( roundingMode = float_round_down ) )
@@ -6435,7 +6411,7 @@ begin
shift64ExtraRightJamming( zSig0, zSig1, 1 - zExp, zSig0, zSig1 );
zExp := 0;
if ( ( isTiny <> 0 ) and ( zSig1 <> 0 ) ) then float_raise( float_flag_underflow );
- if ( zSig1 <> 0 ) then softfloat_exception_flags := softfloat_exception_flags or float_flag_inexact;
+ if ( zSig1 <> 0 ) then set_inexact_flag;
if ( roundNearestEven <> 0 ) then begin
increment := ord( sbits64( zSig1 ) < 0 );
end
@@ -6457,7 +6433,7 @@ begin
exit;
end;
end;
- if ( zSig1 <> 0 ) then softfloat_exception_flags := softfloat_exception_flags or float_flag_inexact;
+ if ( zSig1 <> 0 ) then set_inexact_flag;
if ( increment <> 0 ) then begin
inc(zSig0);
if ( zSig0 = 0 ) then begin
@@ -6555,7 +6531,7 @@ begin
goto invalid;
end
else if ( aExp < $3FFF ) then begin
- if ( aExp or aSig <> 0 ) then softfloat_exception_flags := softfloat_exception_flags or float_flag_inexact;
+ if ( aExp or aSig <> 0 ) then set_inexact_flag;
result := 0;
exit;
end;
@@ -6571,7 +6547,7 @@ begin
exit;
end;
if ( ( aSig shl shiftCount ) <> savedASig ) then begin
- softfloat_exception_flags := softfloat_exception_flags or float_flag_inexact;
+ set_inexact_flag;
end;
result := z;
@@ -6654,13 +6630,13 @@ begin
exit;
end
else if ( aExp < $3FFF ) then begin
- if ( aExp or aSig <> 0 ) then softfloat_exception_flags := softfloat_exception_flags or float_flag_inexact;
+ if ( aExp or aSig <> 0 ) then set_inexact_flag;
result := 0;
exit;
end;
z := aSig shr ( - shiftCount );
if bits64( aSig shl ( shiftCount and 63 ) ) <> 0 then begin
- softfloat_exception_flags := softfloat_exception_flags or float_flag_inexact;
+ set_inexact_flag;
end;
if ( aSign <> 0 ) then z := - z;
result := z;
@@ -6716,7 +6692,7 @@ end;
function floatx80_is_nan(a : floatx80 ): flag;
begin
- result := ord( ( ( a.high and $7FFF ) = $7FFF ) and ( bits64( a.low<<1 ) <> 0 ) );
+ result := ord( ( ( a.high and $7FFF ) = $7FFF ) and ( bits64( a.low shl 1 ) <> 0 ) );
end;
{*----------------------------------------------------------------------------
@@ -6883,7 +6859,7 @@ begin
result := a;
exit;
end;
- softfloat_exception_flags := softfloat_exception_flags or float_flag_inexact;
+ set_inexact_flag;
aSign := extractFloatx80Sign( a );
case softfloat_rounding_mode of
float_round_nearest_even:
@@ -6930,7 +6906,7 @@ begin
inc(z.high);
z.low := bits64( $8000000000000000 );
end;
- if ( z.low <> a.low ) then softfloat_exception_flags := softfloat_exception_flags or float_flag_inexact;
+ if ( z.low <> a.low ) then set_inexact_flag;
result := z;
end;
@@ -7467,8 +7443,8 @@ begin
end;
normalizeFloatx80Subnormal( aSig0, aExp, aSig0 );
end;
- zExp := ( ( aExp - $3FFF )>>1 ) + $3FFF;
- zSig0 := estimateSqrt32( aExp, aSig0>>32 );
+ zExp := ( ( aExp - $3FFF ) shr 1 ) + $3FFF;
+ zSig0 := estimateSqrt32( aExp, aSig0 shr 32 );
shift128Right( aSig0, 0, 2 + ( aExp and 1 ), aSig0, aSig1 );
zSig0 := estimateDiv128To64( aSig0, aSig1, zSig0 shl 32 ) + ( zSig0 shl 30 );
doubleZSig0 := zSig0 shl 1;
@@ -7477,7 +7453,7 @@ begin
while ( sbits64( rem0 ) < 0 ) do begin
dec(zSig0);
dec( doubleZSig0, 2 );
- add128( rem0, rem1, zSig0>>63, doubleZSig0 or 1, rem0, rem1 );
+ add128( rem0, rem1, zSig0 shr 63, doubleZSig0 or 1, rem0, rem1 );
end;
zSig1 := estimateDiv128To64( rem1, 0, doubleZSig0 );
if ( ( zSig1 and $3FFFFFFFFFFFFFFF ) <= 5 ) then begin
@@ -7866,7 +7842,7 @@ begin
)
)<>0 then
begin
- float_raise( float_flag_overflow or float_flag_inexact );
+ float_raise( [float_flag_overflow,float_flag_inexact] );
if ( ord( roundingMode = float_round_to_zero )
or ( zSign and ord( roundingMode = float_round_up ) )
or ( ord( zSign = 0) and ord( roundingMode = float_round_down ) )
@@ -7917,7 +7893,7 @@ begin
end;
end;
if ( zSig2<>0 ) then
- softfloat_exception_flags := softfloat_exception_flags or float_flag_inexact;
+ set_inexact_flag;
if ( increment<>0 ) then
begin
add128( zSig0, zSig1, 0, 1, zSig0, zSig1 );
@@ -8031,7 +8007,7 @@ begin
else if ( aExp < $3FFF ) then
begin
if ( aExp or aSig0 )<>0 then
- softfloat_exception_flags := softfloat_exception_flags or float_flag_inexact;
+ set_inexact_flag;
result := 0;
exit;
end;
@@ -8054,7 +8030,7 @@ begin
end;
if ( ( aSig0 shl shiftCount ) <> savedASig ) then
begin
- softfloat_exception_flags := softfloat_exception_flags or float_flag_inexact;
+ set_inexact_flag;
end;
result := z;
end;
@@ -8141,7 +8117,7 @@ begin
and ( aSig1 < int64( $0002000000000000 ) ) ) then
begin
if ( aSig1<>0 ) then
- softfloat_exception_flags := softfloat_exception_flags or float_flag_inexact;
+ set_inexact_flag;
end
else begin
float_raise( float_flag_invalid );
@@ -8154,10 +8130,10 @@ begin
result := int64( $8000000000000000 );
exit;
end;
- z := ( aSig0 shl shiftCount ) or ( aSig1>>( ( - shiftCount ) and 63 ) );
+ z := ( aSig0 shl shiftCount ) or ( aSig1 shr ( ( - shiftCount ) and 63 ) );
if ( int64( aSig1 shl shiftCount )<>0 ) then
begin
- softfloat_exception_flags := softfloat_exception_flags or float_flag_inexact;
+ set_inexact_flag;
end;
end
else begin
@@ -8165,7 +8141,7 @@ begin
begin
if ( aExp or aSig0 or aSig1 )<>0 then
begin
- softfloat_exception_flags := softfloat_exception_flags or float_flag_inexact;
+ set_inexact_flag;
end;
result := 0;
exit;
@@ -8174,7 +8150,7 @@ begin
if ( (aSig1<>0)
or ( (shiftCount<>0) and (int64( aSig0 shl ( shiftCount and 63 ) )<>0) ) ) then
begin
- softfloat_exception_flags := softfloat_exception_flags or float_flag_inexact;
+ set_inexact_flag;
end;
end;
if ( aSign<>0 ) then
@@ -8375,7 +8351,7 @@ begin
result := a;
exit;
end;
- softfloat_exception_flags := softfloat_exception_flags or float_flag_inexact;
+ set_inexact_flag;
aSign := extractFloat128Sign( a );
case softfloat_rounding_mode of
float_round_nearest_even:
@@ -8430,7 +8406,7 @@ begin
z.high := z.high and not(roundBitsMask);
end;
if ( ( z.low <> a.low ) or ( z.high <> a.high ) ) then begin
- softfloat_exception_flags := softfloat_exception_flags or float_flag_inexact;
+ set_inexact_flag;
end;
result := z;
@@ -9048,9 +9024,9 @@ begin
end;
normalizeFloat128Subnormal( aSig0, aSig1, aExp, aSig0, aSig1 );
end;
- zExp := ( ( aExp - $3FFF )>>1 ) + $3FFE;
+ zExp := ( ( aExp - $3FFF ) shr 1 ) + $3FFE;
aSig0 := aSig0 or int64( $0001000000000000 );
- zSig0 := estimateSqrt32( aExp, aSig0>>17 );
+ zSig0 := estimateSqrt32( aExp, aSig0 shr 17 );
shortShift128Left( aSig0, aSig1, 13 - ( aExp and 1 ), aSig0, aSig1 );
zSig0 := estimateDiv128To64( aSig0, aSig1, zSig0 shl 32 ) + ( zSig0 shl 30 );
doubleZSig0 := zSig0 shl 1;
diff --git a/rtl/inc/sstrings.inc b/rtl/inc/sstrings.inc
index 14edd56fc9..23dad25481 100644
--- a/rtl/inc/sstrings.inc
+++ b/rtl/inc/sstrings.inc
@@ -205,7 +205,7 @@ const
function upcase(c : char) : char;
{$IFDEF IBM_CHAR_SET}
var
- i : sizeint;
+ i : ObjpasInt;
{$ENDIF}
begin
if (c in ['a'..'z']) then
@@ -230,7 +230,7 @@ end;
{$define FPC_UPCASE_SHORTSTR}
function upcase(const s : shortstring) : shortstring;
var
- i : sizeint;
+ i : ObjpasInt;
begin
upcase[0]:=s[0];
for i := 1 to length (s) do
@@ -244,7 +244,7 @@ end;
function lowercase(c : char) : char;overload;
{$IFDEF IBM_CHAR_SET}
var
- i : sizeint;
+ i : ObjpasInt;
{$ENDIF}
begin
if (c in ['A'..'Z']) then
@@ -269,7 +269,7 @@ end;
{$define FPC_LOWERCASE_SHORTSTR}
function lowercase(const s : shortstring) : shortstring; overload;
var
- i : sizeint;
+ i : ObjpasInt;
begin
lowercase [0]:=s[0];
for i:=1 to length(s) do
@@ -282,7 +282,7 @@ const
function hexstr(val : longint;cnt : byte) : shortstring;
var
- i : sizeint;
+ i : ObjpasInt;
begin
hexstr[0]:=char(cnt);
for i:=cnt downto 1 do
@@ -294,7 +294,7 @@ end;
function octstr(val : longint;cnt : byte) : shortstring;
var
- i : sizeint;
+ i : ObjpasInt;
begin
octstr[0]:=char(cnt);
for i:=cnt downto 1 do
@@ -307,7 +307,7 @@ end;
function binstr(val : longint;cnt : byte) : shortstring;
var
- i : sizeint;
+ i : ObjpasInt;
begin
binstr[0]:=char(cnt);
for i:=cnt downto 1 do
@@ -320,7 +320,7 @@ end;
function hexstr(val : int64;cnt : byte) : shortstring;
var
- i : sizeint;
+ i : ObjpasInt;
begin
hexstr[0]:=char(cnt);
for i:=cnt downto 1 do
@@ -333,7 +333,7 @@ end;
function octstr(val : int64;cnt : byte) : shortstring;
var
- i : sizeint;
+ i : ObjpasInt;
begin
octstr[0]:=char(cnt);
for i:=cnt downto 1 do
@@ -346,7 +346,7 @@ end;
function binstr(val : int64;cnt : byte) : shortstring;
var
- i : sizeint;
+ i : ObjpasInt;
begin
binstr[0]:=char(cnt);
for i:=cnt downto 1 do
@@ -387,7 +387,7 @@ end;
{$define FPC_HAS_HEXSTR_POINTER_SHORTSTR}
function hexstr(val : pointer) : shortstring;
var
- i : sizeint;
+ i : ObjpasInt;
v : ptruint;
begin
v:=ptruint(val);
diff --git a/rtl/inc/system.inc b/rtl/inc/system.inc
index d1209758f8..3d87b2f32a 100644
--- a/rtl/inc/system.inc
+++ b/rtl/inc/system.inc
@@ -12,6 +12,16 @@
**********************************************************************}
+{ ObjpasInt is the integer type, equivalent to Objpas.Integer (the Integer
+ type in ObjFpc and Delphi modes). It is defined here for use in the
+ implementation part of the System unit. }
+{$ifdef CPU16}
+type
+ ObjpasInt = SmallInt;
+{$else CPU16}
+type
+ ObjpasInt = LongInt;
+{$endif CPU16}
{ The RTTI is implemented through a series of constants : }
@@ -682,6 +692,13 @@ End;
Miscellaneous
*****************************************************************************}
+{$ifndef FPC_SYSTEM_HAS_STACKTOP}
+function StackTop: pointer;
+begin
+ result:=StackBottom+StackLength;
+end;
+{$endif FPC_SYSTEM_HAS_STACKTOP}
+
{$ifndef FPC_SYSTEM_HAS_GET_PC_ADDR}
{ This provides a dummy implementation
of get_pc_addr function, for CPU's that don't need
@@ -832,7 +849,7 @@ type
end;
TInitFinalTable = record
TableCount,
- InitCount : {$ifdef VER2_6}longint{$else}nativeint{$endif};
+ InitCount : {$ifdef VER2_6}longint{$else}sizeint{$endif};
Procs : array[1..maxunits] of TInitFinalRec;
end;
PInitFinalTable = ^TInitFinalTable;
@@ -846,7 +863,7 @@ var
procedure fpc_InitializeUnits;[public,alias:'FPC_INITIALIZEUNITS']; compilerproc;
var
- i : nativeint;
+ i : ObjpasInt;
{$ifdef DEBUG}
pt : PInitFinalTable;
{$endif}
@@ -968,11 +985,7 @@ Begin
pstdout:=@stdout;
If erroraddr<>nil Then
Begin
-{$if defined(CPUI8086) and defined(FPC_X86_CODE_FAR)}
- Writeln(pstdout^,'Runtime error ',Errorcode,' at $',hexstr(DWord(erroraddr) shr 16,4),':',hexstr(DWord(erroraddr) and $FFFF,4));
-{$else}
Writeln(pstdout^,'Runtime error ',Errorcode,' at $',hexstr(erroraddr));
-{$endif}
{ to get a nice symify }
Writeln(pstdout^,BackTraceStrFunc(Erroraddr));
dump_stack(pstdout^,ErrorBase,ErrorAddr);
@@ -1052,11 +1065,37 @@ end;
function SysBackTraceStr (Addr: CodePointer): ShortString;
begin
-{$if defined(CPUI8086) and defined(FPC_X86_CODE_FAR)}
- SysBackTraceStr:=' $'+hexstr(DWord(addr) shr 16,4)+':'+hexstr(DWord(addr) and $FFFF,4);
-{$else}
SysBackTraceStr:=' $'+hexstr(addr);
-{$endif}
+end;
+
+
+function CaptureBacktrace(skipframes,count:sizeint;frames:PCodePointer):sizeint;
+var
+ curr_frame,prev_frame: pointer;
+ curr_addr: codepointer;
+ i: sizeint;
+begin
+ curr_frame:=get_frame;
+ curr_addr:=get_pc_addr;
+ prev_frame:=curr_frame;
+ get_caller_stackinfo(curr_frame,curr_addr);
+ i:=-skipframes;
+ while (i<count) and (curr_frame>prev_frame) and
+ (curr_frame<StackTop) do
+ begin
+ prev_frame:=curr_frame;
+ get_caller_stackinfo(curr_frame,curr_addr);
+ if (curr_addr=nil) or
+ (curr_frame=nil) then
+ break;
+ if (i>=0) then
+ frames[i]:=curr_addr;
+ inc(i);
+ end;
+ if i<0 then
+ result:=0
+ else
+ result:=i;
end;
@@ -1141,36 +1180,29 @@ Procedure dump_stack(var f : text;fp : Pointer; addr : CodePointer);
var
i : Longint;
prevfp : Pointer;
- prevaddr : CodePointer;
is_dev : boolean;
- caller_frame : Pointer;
- caller_addr : CodePointer;
Begin
{$ifdef FPC_HAS_FEATURE_EXCEPTIONS}
try
{$endif FPC_HAS_FEATURE_EXCEPTIONS}
- prevfp:=fp-1;
- prevaddr:=nil;
+ { Frame of this procedure acts as StackBottom, fp values below that are invalid. }
+ prevfp:=get_frame;
i:=0;
is_dev:=do_isdevice(textrec(f).Handle);
{ sanity checks, new frame pointer must be always greater than the old one, further
it must point into the stack area, else something went wrong }
- while (fp>prevfp) and (fp<StackTop) and (fp>StackBottom) Do
+ while (fp>prevfp) and (fp<StackTop) do
Begin
- caller_addr := get_caller_addr(fp,addr);
- caller_frame := get_caller_frame(fp,addr);
- if (caller_addr=nil) then
+ prevfp:=fp;
+ get_caller_stackinfo(fp,addr);
+ if (addr=nil) then
break;
- Writeln(f,BackTraceStrFunc(caller_addr));
- if (caller_frame=nil) then
+ Writeln(f,BackTraceStrFunc(addr));
+ if (fp=nil) then
break;
Inc(i);
If ((i>max_frame_dump) and is_dev) or (i>256) Then
break;
- prevfp:=fp;
- prevaddr:=addr;
- fp:=caller_frame;
- addr:=caller_addr;
End;
{$ifdef FPC_HAS_FEATURE_EXCEPTIONS}
except
diff --git a/rtl/inc/systemh.inc b/rtl/inc/systemh.inc
index 229e4a73c1..93eb0d44a6 100644
--- a/rtl/inc/systemh.inc
+++ b/rtl/inc/systemh.inc
@@ -78,8 +78,14 @@
{$define FPC_HAS_FEATURE_STACKCHECK}
{$define FPC_HAS_FEATURE_DYNLIBS}
{$define FPC_HAS_FEATURE_OBJECTIVEC1}
+{$define FPC_HAS_FEATURE_UNICODESTRINGS}
{$endif FPC_HAS_FEATURE_SUPPORT}
+{ bootstrapping, the starting compiler cannot be a downstripped compiler without unicodestring support }
+{$ifdef VER2_6}
+{$define FPC_HAS_FEATURE_UNICODESTRINGS}
+{$endif VER2_6}
+
{****************************************************************************
Global Types and Constants
****************************************************************************}
@@ -332,8 +338,6 @@ Type
PtrUInt = QWord;
ValSInt = int64;
ValUInt = qword;
- NativeInt = PtrInt;
- NativeUint = PtrUint;
CodePointer = Pointer;
CodePtrInt = PtrInt;
CodePtrUInt = PtrUInt;
@@ -346,8 +350,6 @@ Type
PtrUInt = DWord;
ValSInt = Longint;
ValUInt = Cardinal;
- NativeInt = PtrInt;
- NativeUint = PtrUint;
CodePointer = Pointer;
CodePtrInt = PtrInt;
CodePtrUInt = PtrUInt;
@@ -378,10 +380,18 @@ Type
{$endif}
ValSInt = Integer;
ValUInt = Word;
- NativeInt = Integer;
- NativeUint = Word;
{$endif CPU16}
+ { NativeInt and NativeUInt are Delphi compatibility types. Even though Delphi
+ has IntPtr and UIntPtr, the Delphi documentation for NativeInt states that
+ 'The size of NativeInt is equivalent to the size of the pointer on the
+ current platform'. Because of the misleading names, these types shouldn't be
+ used in the FPC RTL. Note that on i8086 their size changes between 16-bit
+ and 32-bit according to the memory model, so they're not really a 'native
+ int' type there at all. }
+ NativeInt = PtrInt;
+ NativeUInt = PtrUInt;
+
Int8 = ShortInt;
Int16 = SmallInt;
Int32 = Longint;
@@ -695,10 +705,10 @@ Var
StdErr : Text;
InOutRes : Word;
{ Stack checking }
- StackTop,
StackBottom : Pointer;
StackLength : SizeUInt;
+function StackTop: Pointer;
{ Numbers for routines that have compiler magic }
{$I innr.inc}
@@ -1070,7 +1080,12 @@ Function binStr(Val:int64;cnt:byte):shortstring;
Function hexStr(Val:qword;cnt:byte):shortstring;
Function OctStr(Val:qword;cnt:byte):shortstring;
Function binStr(Val:qword;cnt:byte):shortstring;
+{$ifdef CPUI8086}
+Function hexStr(Val:NearPointer):shortstring;
+Function hexStr(Val:FarPointer):shortstring;
+{$else CPUI8086}
Function hexStr(Val:Pointer):shortstring;
+{$endif CPUI8086}
{ Char functions }
Function chr(b : byte) : Char; [INTERNPROC: fpc_in_chr_byte];
@@ -1264,6 +1279,10 @@ function get_frame:pointer;{$ifdef SYSTEMINLINE}inline;{$endif}
Function Get_pc_addr : CodePointer;
+{ Writes at most 'count' caller stack frames to pre-allocated buffer pointed to
+ by 'frames', skipping 'skipframes' initial frames. Returns number of frames written. }
+function CaptureBacktrace(skipframes,count:sizeint;frames:PCodePointer):sizeint;
+
function get_caller_addr(framebp:pointer;addr:codepointer=nil):codepointer;
function get_caller_frame(framebp:pointer;addr:codepointer=nil):pointer;
procedure get_caller_stackinfo(var framebp : pointer; var addr : codepointer);
diff --git a/rtl/inc/text.inc b/rtl/inc/text.inc
index e2afb77874..75379c70da 100644
--- a/rtl/inc/text.inc
+++ b/rtl/inc/text.inc
@@ -255,10 +255,14 @@ End;
Procedure Erase(var t:Text);[IOCheck];
Begin
- If InOutRes <> 0 then
- exit;
- If TextRec(t).mode=fmClosed Then
- Do_Erase(PFileTextRecChar(@TextRec(t).Name),false);
+ if InOutRes<>0 then
+ exit;
+ if TextRec(t).mode<>fmClosed then
+ begin
+ InOutRes:=102;
+ exit;
+ end;
+ Do_Erase(PFileTextRecChar(@TextRec(t).Name),false);
End;
@@ -268,9 +272,13 @@ var
fs: RawByteString;
{$endif FPCRTL_FILESYSTEM_SINGLE_BYTE_API}
Begin
- If (InOutRes<>0) or
- (TextRec(t).mode<>fmClosed) then
+ if InOutRes<>0 then
exit;
+ if TextRec(t).mode<>fmClosed then
+ begin
+ InOutRes:=102;
+ exit;
+ end;
{$ifdef FPCRTL_FILESYSTEM_SINGLE_BYTE_API}
{ it's slightly faster to convert the unicodestring here to rawbytestring
than doing it in do_rename(), because here we still know the length }
@@ -301,9 +309,13 @@ var
{$endif FPCRTL_FILESYSTEM_SINGLE_BYTE_API}
dstchangeable: boolean;
Begin
- If (InOutRes<>0) or
- (TextRec(t).mode<>fmClosed) then
+ if InOutRes<>0 then
exit;
+ if TextRec(t).mode<>fmClosed then
+ begin
+ InOutRes:=102;
+ exit;
+ end;
{$ifdef FPCRTL_FILESYSTEM_SINGLE_BYTE_API}
dstchangeable:=false;
pdst:=PAnsiChar(s);
@@ -356,19 +368,21 @@ End;
var
len: SizeInt
Begin
- If InOutRes<>0 then
+ if InOutRes<>0 then
exit;
- If TextRec(t).mode=fmClosed Then
- Begin
- Do_Rename(PFileTextRecChar(@TextRec(t).Name),p,false);
- { check error code of do_rename }
- If InOutRes=0 then
- begin
- len:=min(StrLen(p),high(TextRec(t).Name));
- Move(p^,TextRec(t).Name,len);
- TextRec(t).Name[len]:=#0;
- end;
- End;
+ if TextRec(f).mode<>fmClosed then
+ begin
+ InOutRes:=102;
+ exit;
+ end;
+ Do_Rename(PFileTextRecChar(@TextRec(t).Name),p,false);
+ { check error code of do_rename }
+ if InOutRes=0 then
+ begin
+ len:=min(StrLen(p),high(TextRec(t).Name));
+ Move(p^,TextRec(t).Name,len);
+ TextRec(t).Name[len]:=#0;
+ end;
End;
{$endif FPC_HAS_FEATURE_ANSISTRINGS}
diff --git a/rtl/inc/thread.inc b/rtl/inc/thread.inc
index 0ad1a836c3..081ed1c012 100644
--- a/rtl/inc/thread.inc
+++ b/rtl/inc/thread.inc
@@ -325,6 +325,26 @@ begin
currenttm.rtleventWaitForTimeout(state,timeout);
end;
+function SemaphoreInit: pointer;
+begin
+ result:=currenttm.SemaphoreInit();
+end;
+
+procedure SemaphoreDestroy(const sem: pointer);
+begin
+ currenttm.SemaphoreDestroy(sem);
+end;
+
+procedure SemaphoreWait(const sem: pointer);
+begin
+ currenttm.SemaphoreWait(sem);
+end;
+
+procedure SemaphorePost(const sem: pointer);
+begin
+ currenttm.SemaphorePost(sem);
+end;
+
{ ---------------------------------------------------------------------
ThreadManager which gives run-time error. Use if no thread support.
---------------------------------------------------------------------}
diff --git a/rtl/inc/threadh.inc b/rtl/inc/threadh.inc
index 9d991b8813..56901ca7f9 100644
--- a/rtl/inc/threadh.inc
+++ b/rtl/inc/threadh.inc
@@ -175,3 +175,8 @@ procedure RTLeventResetEvent(state:pRTLEvent);
procedure RTLeventWaitFor(state:pRTLEvent);
procedure RTLeventWaitFor(state:pRTLEvent;timeout : longint);
+function SemaphoreInit: Pointer;
+procedure SemaphoreDestroy(const sem: Pointer);
+procedure SemaphoreWait(const sem: Pointer);
+procedure SemaphorePost(const sem: Pointer);
+
diff --git a/rtl/inc/ustrings.inc b/rtl/inc/ustrings.inc
index 85503bdd74..c5c52b2f4d 100644
--- a/rtl/inc/ustrings.inc
+++ b/rtl/inc/ustrings.inc
@@ -2324,9 +2324,9 @@ procedure initunicodestringmanager;
{$endif HAS_WIDESTRINGMANAGER}
widestringmanager.CompareWideStringProc:=@CompareUnicodeString;
widestringmanager.CompareTextWideStringProc:=@CompareTextUnicodeString;
+{$endif FPC_WIDESTRING_EQUAL_UNICODESTRING}
widestringmanager.CharLengthPCharProc:=@DefaultCharLengthPChar;
widestringmanager.CodePointLengthProc:=@DefaultCodePointLength;
-{$endif FPC_WIDESTRING_EQUAL_UNICODESTRING}
widestringmanager.GetStandardCodePageProc:=@DefaultGetStandardCodePage;
end;
{$endif FPC_HAS_BUILTIN_WIDESTR_MANAGER}
diff --git a/rtl/inc/wstrings.inc b/rtl/inc/wstrings.inc
index b8bab978b9..403b8c9552 100644
--- a/rtl/inc/wstrings.inc
+++ b/rtl/inc/wstrings.inc
@@ -942,46 +942,28 @@ function UTF8Encode(const s : WideString) : RawByteString;
end;
end;
-
-const
- SNoWidestrings = 'This binary has no widestrings support compiled in.';
- SRecompileWithWidestrings = 'Recompile the application with a widestrings-manager in the program uses clause.';
-
-procedure unimplementedwidestring;
- begin
-{$ifdef FPC_HAS_FEATURE_CONSOLEIO}
- If IsConsole then
- begin
- Writeln(StdErr,SNoWidestrings);
- Writeln(StdErr,SRecompileWithWidestrings);
- end;
-{$endif FPC_HAS_FEATURE_CONSOLEIO}
- HandleErrorAddrFrameInd(233,get_pc_addr,get_frame);
- end;
+procedure unimplementedunicodestring; forward;
{$warnings off}
function GenericWideCase(const s : WideString) : WideString;
begin
- unimplementedwidestring;
+ unimplementedunicodestring;
end;
function CompareWideString(const s1, s2 : WideString) : PtrInt;
begin
- unimplementedwidestring;
+ unimplementedunicodestring;
end;
function CompareTextWideString(const s1, s2 : WideString): PtrInt;
begin
- unimplementedwidestring;
+ unimplementedunicodestring;
end;
{$warnings on}
-function DefaultCharLengthPChar(const Str: PChar): PtrInt;forward;
-function DefaultCodePointLength(const Str: PChar; MaxLookAead: PtrInt): Ptrint;forward;
-
procedure initwidestringmanager;
begin
@@ -994,6 +976,4 @@ procedure initwidestringmanager;
{$endif HAS_WIDESTRINGMANAGER}
widestringmanager.CompareWideStringProc:=@CompareWideString;
widestringmanager.CompareTextWideStringProc:=@CompareTextWideString;
- widestringmanager.CharLengthPCharProc:=@DefaultCharLengthPChar;
- widestringmanager.CodePointLengthProc:=@DefaultCodePointLength;
end;
diff --git a/rtl/java/Makefile b/rtl/java/Makefile
index da079672ef..50dc34d176 100644
--- a/rtl/java/Makefile
+++ b/rtl/java/Makefile
@@ -1,8 +1,8 @@
#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-04-01 rev 27428]
#
default: all
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos
BSDs = freebsd netbsd openbsd darwin
UNIXs = linux $(BSDs) solaris qnx haiku aix
LIMIT83fs = go32v2 os2 emx watcom msdos
@@ -185,6 +185,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t
endif
override FPCOPT+=-Cp$(SUBARCH)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+ifeq ($(SUBARCH),)
+$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined)
+endif
+override FPCOPT+=-Cp$(SUBARCH)
+endif
ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
TARGETSUFFIX=$(OS_TARGET)
SOURCESUFFIX=$(OS_SOURCE)
@@ -548,6 +554,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas jdk15
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas jdk15
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas jdk15
endif
@@ -771,6 +780,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
endif
@@ -993,6 +1005,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
endif
@@ -1786,17 +1801,23 @@ ifdef ACROSSCOMPILE
override FPCOPT+=$(CROSSOPT)
endif
override COMPILER:=$(strip $(FPC) $(FPCOPT))
-ifeq (,$(findstring -s ,$(COMPILER)))
+ifneq (,$(findstring -sh ,$(COMPILER)))
+UseEXECPPAS=1
+endif
+ifneq (,$(findstring -s ,$(COMPILER)))
+ifeq ($(FULL_SOURCE),$(FULL_TARGET))
+UseEXECPPAS=1
+endif
+endif
+ifneq ($(UseEXECPPAS),1)
EXECPPAS=
else
-ifeq ($(FULL_SOURCE),$(FULL_TARGET))
ifdef RUNBATCH
EXECPPAS:=@$(RUNBATCH) $(PPAS)
else
EXECPPAS:=@$(PPAS)
endif
endif
-endif
.PHONY: fpc_units
ifneq ($(TARGET_UNITS)$(TARGET_IMPLICITUNITS),)
override ALLTARGET+=fpc_units
diff --git a/rtl/java/jcompproc.inc b/rtl/java/jcompproc.inc
index 15e9d8a5bd..b02b3cc740 100644
--- a/rtl/java/jcompproc.inc
+++ b/rtl/java/jcompproc.inc
@@ -458,7 +458,6 @@ function fpc_exp_real(d : ValReal) : ValReal;compilerproc;{$ifdef MATHINLINE}inl
function fpc_frac_real(d : ValReal) : ValReal;compilerproc;
function fpc_int_real(d : ValReal) : ValReal;compilerproc;{$ifdef MATHINLINE}inline;{$endif}
function fpc_ln_real(d : ValReal) : ValReal;compilerproc;{$ifdef MATHINLINE}inline;{$endif}
-function fpc_pi_real : ValReal;compilerproc;
function fpc_sin_real(d : ValReal) : ValReal;compilerproc;{$ifdef MATHINLINE}inline;{$endif}
function fpc_sqr_real(d : ValReal) : ValReal;compilerproc;{$ifdef MATHINLINE}inline;{$endif}
function fpc_sqrt_real(d : ValReal) : ValReal;compilerproc;
diff --git a/rtl/java/jsystem.inc b/rtl/java/jsystem.inc
index 15af20fffa..aed4455d7c 100644
--- a/rtl/java/jsystem.inc
+++ b/rtl/java/jsystem.inc
@@ -12,6 +12,16 @@
**********************************************************************}
+{ ObjpasInt is the integer type, equivalent to Objpas.Integer (the Integer
+ type in ObjFpc and Delphi modes). It is defined here for use in the
+ implementation part of the System unit. }
+{$ifdef CPU16}
+type
+ ObjpasInt = SmallInt;
+{$else CPU16}
+type
+ ObjpasInt = LongInt;
+{$endif CPU16}
{ The RTTI is implemented through a series of constants : }
diff --git a/rtl/jvm/jvm.inc b/rtl/jvm/jvm.inc
index 3d74ad2749..1fa3139a3c 100644
--- a/rtl/jvm/jvm.inc
+++ b/rtl/jvm/jvm.inc
@@ -23,13 +23,13 @@
{$define FPC_SYSTEM_HAS_SYSINITFPU}
Procedure SysInitFPU;{$ifdef SYSTEMINLINE}inline;{$endif}
begin
- softfloat_exception_mask:=float_flag_underflow or float_flag_inexact or float_flag_denormal;
+ softfloat_exception_mask:=[float_flag_underflow, float_flag_inexact, float_flag_denormal];
end;
{$define FPC_SYSTEM_HAS_SYSRESETFPU}
Procedure SysResetFPU;{$ifdef SYSTEMINLINE}inline;{$endif}
begin
- softfloat_exception_flags:=0;
+ softfloat_exception_flags:=[];
end;
diff --git a/rtl/linux/Makefile b/rtl/linux/Makefile
index 6987da8298..75c86228ea 100644
--- a/rtl/linux/Makefile
+++ b/rtl/linux/Makefile
@@ -1,8 +1,8 @@
#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-04-01 rev 27428]
#
default: all
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos
BSDs = freebsd netbsd openbsd darwin
UNIXs = linux $(BSDs) solaris qnx haiku aix
LIMIT83fs = go32v2 os2 emx watcom msdos
@@ -185,6 +185,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t
endif
override FPCOPT+=-Cp$(SUBARCH)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+ifeq ($(SUBARCH),)
+$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined)
+endif
+override FPCOPT+=-Cp$(SUBARCH)
+endif
ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
TARGETSUFFIX=$(OS_TARGET)
SOURCESUFFIX=$(OS_SOURCE)
@@ -342,7 +348,7 @@ SYSINIT_UNITS=si_prc si_c21g si_c21 si_c si_dll si_uc
endif
ifeq ($(ARCH),x86_64)
CPU_UNITS=x86 ports cpu
-SYSINIT_UNITS= # si_prc si_c si_dll
+SYSINIT_UNITS=si_prc si_c si_g si_dll
endif
ifeq ($(ARCH),mipsel)
override FPCOPT+=-Ur
@@ -356,448 +362,454 @@ override FPCOPT+=-Ur
endif
OBJPASDIR=$(RTL)/objpas
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) printer linuxvcs sysutils typinfo math charset cpall buildcollations character unixcp getopts errors ipc serial terminfo dl dynlibs types sysconst fpwidestring cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil heaptrc lineinfo lnfodwrf termio unix linux initc cmem $(CPU_UNITS) linuxvcs sysutils typinfo math charset cpall character unixcp getopts errors dl dynlibs types sysconst fpwidestring cthreads classes fgl rtlconsts dos cwstring fpcylix
endif
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-linux)
override TARGET_LOADERS+=$(LOADERS)
@@ -1009,6 +1021,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_LOADERS+=$(LOADERS)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_LOADERS+=$(LOADERS)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_LOADERS+=$(LOADERS)
endif
@@ -1231,6 +1246,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_RSTS+=math typinfo sysconst rtlconsts
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_RSTS+=math typinfo sysconst rtlconsts
endif
@@ -1453,6 +1471,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override CLEAN_UNITS+=syslinux linux
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override CLEAN_UNITS+=syslinux linux
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override CLEAN_UNITS+=syslinux linux
endif
@@ -1465,7 +1486,6 @@ endif
ifeq ($(FULL_TARGET),i8086-msdos)
override CLEAN_UNITS+=syslinux linux
endif
-override INSTALL_BUILDUNIT=buildcollations
override INSTALL_FPCPACKAGE=y
ifeq ($(FULL_TARGET),i386-linux)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(ARCH)
@@ -1677,6 +1697,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(ARCH)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(ARCH)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(ARCH)
endif
@@ -1899,6 +1922,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(ARCH) $(COMMON)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(ARCH) $(COMMON)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(ARCH) $(COMMON)
endif
@@ -2121,6 +2147,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_TARGETDIR+=.
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_TARGETDIR+=.
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_TARGETDIR+=.
endif
@@ -2915,17 +2944,23 @@ ifdef ACROSSCOMPILE
override FPCOPT+=$(CROSSOPT)
endif
override COMPILER:=$(strip $(FPC) $(FPCOPT))
-ifeq (,$(findstring -s ,$(COMPILER)))
+ifneq (,$(findstring -sh ,$(COMPILER)))
+UseEXECPPAS=1
+endif
+ifneq (,$(findstring -s ,$(COMPILER)))
+ifeq ($(FULL_SOURCE),$(FULL_TARGET))
+UseEXECPPAS=1
+endif
+endif
+ifneq ($(UseEXECPPAS),1)
EXECPPAS=
else
-ifeq ($(FULL_SOURCE),$(FULL_TARGET))
ifdef RUNBATCH
EXECPPAS:=@$(RUNBATCH) $(PPAS)
else
EXECPPAS:=@$(PPAS)
endif
endif
-endif
.PHONY: fpc_loaders
ifneq ($(TARGET_LOADERS),)
override ALLTARGET+=fpc_loaders
@@ -3384,8 +3419,6 @@ uuchar$(PPUEXT): $(SYSTEMUNIT)$(PPUEXT) $(INC)/uuchar.pp
$(COMPILER) $(INC)/uuchar.pp
objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/objpas.pp
-dateutils$(PPUEXT): $(OBJPASDIR)/dateutils.pp $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/dateutils.pp
strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc\
$(PROCINC)/strings.inc $(PROCINC)/stringss.inc\
$(SYSTEMUNIT)$(PPUEXT)
@@ -3419,10 +3452,6 @@ unixcp$(PPUEXT) : $(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) ba
dos$(PPUEXT) : $(UNIXINC)/dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \
unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(UNIXINC)/dos.pp
-objects$(PPUEXT) : $(INC)/objects.pp $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) $(INC)/objects.pp
-printer$(PPUEXT) : $(UNIXINC)/printer.pp $(INC)/textrec.inc unix$(PPUEXT) strings$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) $(UNIXINC)/printer.pp
sysutils$(PPUEXT) : $(UNIXINC)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
objpas$(PPUEXT) unix$(PPUEXT) errors$(PPUEXT) sysconst$(PPUEXT)
$(COMPILER) -Fi$(OBJPASDIR)/sysutils $(UNIXINC)/sysutils.pp
@@ -3431,19 +3460,10 @@ classes$(PPUEXT) : $(UNIXINC)/classes.pp $(wildcard $(OBJPASDIR)/classes/*.inc)
$(COMPILER) -Fi$(OBJPASDIR)/classes $(UNIXINC)/classes.pp
typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT) sysutils$(PPUEXT) rtlconsts$(PPUEXT)
$(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp
-character$(PPUEXT): sysutils$(PPUEXT) $(OBJPASDIR)/character.pas objpas$(PPUEXT) rtlconsts$(PPUEXT) buildcollations$(PPUEXT)
+character$(PPUEXT): sysutils$(PPUEXT) $(OBJPASDIR)/character.pas objpas$(PPUEXT) rtlconsts$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/character.pas
math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/math.pp
-gettext$(PPUEXT): $(OBJPASDIR)/gettext.pp objpas$(PPUEXT) sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/gettext.pp
-varutils$(PPUEXT) : $(OBJPASDIR)/cvarutil.inc $(OBJPASDIR)/varutils.inc \
- $(OBJPASDIR)/varutilh.inc $(UNIXINC)/varutils.pp sysutils$(PPUEXT)
- $(COMPILER) -I$(OBJPASDIR) $(UNIXINC)/varutils.pp
-variants$(PPUEXT) : $(INC)/variants.pp sysutils$(PPUEXT) sysconst$(PPUEXT) varutils$(PPUEXT) typinfo$(PPUEXT) rtlconsts$(PPUEXT)
- $(COMPILER) -Fi$(INC) $(INC)/variants.pp
-fmtbcd$(PPUEXT) : $(OBJPASDIR)/fmtbcd.pp objpas$(PPUEXT) sysutils$(PPUEXT) variants$(PPUEXT) classes$(PPUEXT) system$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/fmtbcd.pp
fgl$(PPUEXT) : $(OBJPASDIR)/fgl.pp objpas$(PPUEXT) types$(PPUEXT) system$(PPUEXT) sysutils$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/fgl.pp
types$(PPUEXT) : $(OBJPASDIR)/types.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
@@ -3452,15 +3472,6 @@ sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUE
$(COMPILER) $(OBJPASDIR)/sysconst.pp
rtlconsts$(PPUEXT) : $(OBJPASDIR)/rtlconsts.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/rtlconsts.pp
-strutils$(PPUEXT) : $(OBJPASDIR)/strutils.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/strutils.pp
-convutils$(PPUEXT) : $(OBJPASDIR)/convutils.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/convutils.pp
-stdconvs$(PPUEXT) : $(OBJPASDIR)/stdconvs.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/stdconvs.pp
macpas$(PPUEXT) : $(INC)/macpas.pp objpas$(PPUEXT) math$(PPUEXT)
$(COMPILER) $(INC)/macpas.pp $(REDIR)
ifeq ($(ARCH),x86_64)
@@ -3486,12 +3497,6 @@ charset$(PPUEXT) : $(INC)/charset.pp $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(INC)/charset.pp
cpall$(PPUEXT): $(RTL)/charmaps/cpall.pas system$(PPUEXT) charset$(PPUEXT)
$(COMPILER) -Fu$(INC) -Fi$(RTL)/charmaps $(RTL)/charmaps/cpall.pas
-buildcollations$(PPUEXT): $(OBJPASDIR)/collations/buildcollations.pas system$(PPUEXT) objpas$(PPUEXT) sysutils$(PPUEXT)
- $(COMPILER) -Fu$(OBJPASDIR) -Fi$(OBJPASDIR)/collations -I$(OBJPASDIR)/collations $(OBJPASDIR)/collations/buildcollations.pas
-matrix$(PPUEXT) : $(INC)/matrix.pp $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) $(INC)/matrix.pp
-ucomplex$(PPUEXT) : $(INC)/ucomplex.pp math$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) $(INC)/ucomplex.pp
iso7185$(PPUEXT) : $(INC)/iso7185.pp $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(INC)/iso7185.pp
fpintres$(PPUEXT) : $(INC)/fpintres.pp $(SYSTEMUNIT)$(PPUEXT)
@@ -3500,23 +3505,15 @@ fpwidestring$(PPUEXT): $(OBJPASDIR)/fpwidestring.pp character$(PPUEXT) unixcp$(P
$(COMPILER) $(OBJPASDIR)/fpwidestring.pp
errors$(PPUEXT) : $(UNIXINC)/errors.pp strings$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(UNIXINC)/errors.pp
-ipc$(PPUEXT) : $(UNIXINC)/ipc.pp unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) $(UNIXINC)/ipc.pp
-terminfo$(PPUEXT) : $(UNIXINC)/terminfo.pp unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) $(UNIXINC)/terminfo.pp
callspec$(PPUEXT) : $(INC)/callspec.pp $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(INC)/callspec.pp
cmem$(PPUEXT) : $(INC)/cmem.pp $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(INC)/cmem.pp
cthreads$(PPUEXT) : $(UNIXINC)/cthreads.pp $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(UNIXINC)/cthreads.pp
-serial$(PPUEXT) : $(UNIXINC)/serial.pp $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) $(UNIXINC)/serial.pp
cwstring$(PPUEXT) : $(UNIXINC)/cwstring.pp $(SYSTEMUNIT)$(PPUEXT) sysutils$(PPUEXT) baseunix$(PPUEXT) unix$(PPUEXT) unixtype$(PPUEXT) ctypes$(PPUEXT) dynlibs$(PPUEXT)
$(COMPILER) $(UNIXINC)/cwstring.pp
ctypes$(PPUEXT) : $(INC)/ctypes.pp unixtype$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(INC)/ctypes.pp
-clocale$(PPUEXT) : $(UNIXINC)/clocale.pp sysutils$(PPUEXT) unixtype$(PPUEXT) initc$(PPUEXT) objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) $(UNIXINC)/clocale.pp
fpcylix$(PPUEXT) : fpcylix.pp cthreads$(PPUEXT) cwstring$(PPUEXT) dynlibs$(PPUEXT) objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) fpcylix.pp
diff --git a/rtl/linux/Makefile.fpc b/rtl/linux/Makefile.fpc
index e4e2c71fb8..ca7059ca2d 100644
--- a/rtl/linux/Makefile.fpc
+++ b/rtl/linux/Makefile.fpc
@@ -11,17 +11,16 @@ units=$(SYSTEMUNIT) fpintres $(SYSINIT_UNITS) \
uuchar unixtype ctypes baseunix strings objpas macpas iso7185 syscall unixutil \
heaptrc lineinfo lnfodwrf \
termio unix linux initc cmem $(CPU_UNITS) \
- printer linuxvcs \
+ linuxvcs \
sysutils typinfo math \
- charset cpall buildcollations character unixcp getopts \
- errors ipc serial terminfo dl dynlibs \
+ charset cpall character unixcp getopts \
+ errors dl dynlibs \
types sysconst fpwidestring \
- cthreads classes fgl strutils rtlconsts dos cwstring fpcylix clocale
+ cthreads classes fgl rtlconsts dos cwstring fpcylix
implicitunits=exeinfo \
cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 \
- cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 \
- unicodedata unicodeducet unicodenumtable \
- collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+ cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 \
+ unicodedata unicodenumtable
rsts=math typinfo sysconst rtlconsts
@@ -33,7 +32,6 @@ units=syslinux linux
[install]
fpcpackage=y
-buildunit=buildcollations
[default]
fpcdir=../..
@@ -78,7 +76,7 @@ endif
ifeq ($(ARCH),x86_64)
CPU_UNITS=x86 ports cpu
-SYSINIT_UNITS= # si_prc si_c si_dll
+SYSINIT_UNITS=si_prc si_c si_g si_dll
endif
# mipsel reuses mips files by including so some file names exist
@@ -214,9 +212,6 @@ uuchar$(PPUEXT): $(SYSTEMUNIT)$(PPUEXT) $(INC)/uuchar.pp
objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/objpas.pp
-dateutils$(PPUEXT): $(OBJPASDIR)/dateutils.pp $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/dateutils.pp
-
strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc\
$(PROCINC)/strings.inc $(PROCINC)/stringss.inc\
$(SYSTEMUNIT)$(PPUEXT)
@@ -270,15 +265,6 @@ dos$(PPUEXT) : $(UNIXINC)/dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(
unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(UNIXINC)/dos.pp
-#crt$(PPUEXT) : $(UNIXINC)/crt.pp $(INC)/textrec.inc unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-# $(COMPILER) $(UNIXINC)/crt.pp
-
-objects$(PPUEXT) : $(INC)/objects.pp $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) $(INC)/objects.pp
-
-printer$(PPUEXT) : $(UNIXINC)/printer.pp $(INC)/textrec.inc unix$(PPUEXT) strings$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) $(UNIXINC)/printer.pp
-
#
# Delphi Compatible Units
#
@@ -295,15 +281,12 @@ typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT) sysutils$(PPUEXT) rtlc
$(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp
# let it depend on buildcollations to prevent simultaneous building of unicodedata
-character$(PPUEXT): sysutils$(PPUEXT) $(OBJPASDIR)/character.pas objpas$(PPUEXT) rtlconsts$(PPUEXT) buildcollations$(PPUEXT)
+character$(PPUEXT): sysutils$(PPUEXT) $(OBJPASDIR)/character.pas objpas$(PPUEXT) rtlconsts$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/character.pas
math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/math.pp
-gettext$(PPUEXT): $(OBJPASDIR)/gettext.pp objpas$(PPUEXT) sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/gettext.pp
-
fgl$(PPUEXT) : $(OBJPASDIR)/fgl.pp objpas$(PPUEXT) types$(PPUEXT) system$(PPUEXT) sysutils$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/fgl.pp
@@ -316,10 +299,6 @@ sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUE
rtlconsts$(PPUEXT) : $(OBJPASDIR)/rtlconsts.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/rtlconsts.pp
-strutils$(PPUEXT) : $(OBJPASDIR)/strutils.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/strutils.pp
-
#
# Mac Pascal Model
#
@@ -363,9 +342,6 @@ charset$(PPUEXT) : $(INC)/charset.pp $(SYSTEMUNIT)$(PPUEXT)
cpall$(PPUEXT): $(RTL)/charmaps/cpall.pas system$(PPUEXT) charset$(PPUEXT)
$(COMPILER) -Fu$(INC) -Fi$(RTL)/charmaps $(RTL)/charmaps/cpall.pas
-buildcollations$(PPUEXT): $(OBJPASDIR)/collations/buildcollations.pas system$(PPUEXT) objpas$(PPUEXT) sysutils$(PPUEXT)
- $(COMPILER) -Fu$(OBJPASDIR) -Fi$(OBJPASDIR)/collations -I$(OBJPASDIR)/collations $(OBJPASDIR)/collations/buildcollations.pas
-
iso7185$(PPUEXT) : $(INC)/iso7185.pp $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(INC)/iso7185.pp
@@ -381,12 +357,6 @@ fpwidestring$(PPUEXT): $(OBJPASDIR)/fpwidestring.pp character$(PPUEXT) unixcp$(P
errors$(PPUEXT) : $(UNIXINC)/errors.pp strings$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(UNIXINC)/errors.pp
-ipc$(PPUEXT) : $(UNIXINC)/ipc.pp unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) $(UNIXINC)/ipc.pp
-
-terminfo$(PPUEXT) : $(UNIXINC)/terminfo.pp unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) $(UNIXINC)/terminfo.pp
-
callspec$(PPUEXT) : $(INC)/callspec.pp $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(INC)/callspec.pp
@@ -396,17 +366,11 @@ cmem$(PPUEXT) : $(INC)/cmem.pp $(SYSTEMUNIT)$(PPUEXT)
cthreads$(PPUEXT) : $(UNIXINC)/cthreads.pp $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(UNIXINC)/cthreads.pp
-serial$(PPUEXT) : $(UNIXINC)/serial.pp $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) $(UNIXINC)/serial.pp
-
cwstring$(PPUEXT) : $(UNIXINC)/cwstring.pp $(SYSTEMUNIT)$(PPUEXT) sysutils$(PPUEXT) baseunix$(PPUEXT) unix$(PPUEXT) unixtype$(PPUEXT) ctypes$(PPUEXT) dynlibs$(PPUEXT)
$(COMPILER) $(UNIXINC)/cwstring.pp
ctypes$(PPUEXT) : $(INC)/ctypes.pp unixtype$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(INC)/ctypes.pp
-clocale$(PPUEXT) : $(UNIXINC)/clocale.pp sysutils$(PPUEXT) unixtype$(PPUEXT) initc$(PPUEXT) objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) $(UNIXINC)/clocale.pp
-
fpcylix$(PPUEXT) : fpcylix.pp cthreads$(PPUEXT) cwstring$(PPUEXT) dynlibs$(PPUEXT) objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) fpcylix.pp
diff --git a/rtl/linux/mips/sighnd.inc b/rtl/linux/mips/sighnd.inc
index c2d8938b1f..cd4279d101 100644
--- a/rtl/linux/mips/sighnd.inc
+++ b/rtl/linux/mips/sighnd.inc
@@ -31,19 +31,15 @@ begin
case siginfo^.si_code of
FPE_INTDIV:
- res:=200;
+ res:=200; // maps to EDivByZero
FPE_INTOVF:
res:=215;
FPE_FLTDIV:
- res:=200;
+ res:=208; // maps to EZeroDivide
FPE_FLTOVF:
res:=205;
FPE_FLTUND:
res:=206;
- FPE_FLTRES,
- FPE_FLTINV,
- FPE_FLTSUB:
- res:=216;
else
res:=207;
end;
diff --git a/rtl/linux/sparc/dllprt0.as b/rtl/linux/sparc/dllprt0.as
index e69de29bb2..c82f28634d 100644
--- a/rtl/linux/sparc/dllprt0.as
+++ b/rtl/linux/sparc/dllprt0.as
@@ -0,0 +1,68 @@
+/*
+ This file is part of the Free Pascal run time library.
+ Copyright (c) 2013 by Free Pascal development team
+
+ Startup code for elf32-sparc
+
+ 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.
+*/
+
+.globl FPC_SHARED_LIB_START
+.type FPC_SHARED_LIB_START,#function
+FPC_SHARED_LIB_START:
+ save %o6,-96,%o6
+ call 1f
+ sethi %hi(_GLOBAL_OFFSET_TABLE_+4),%l7
+1: or %l7,%lo(_GLOBAL_OFFSET_TABLE_+8),%l7
+ add %l7,%o7,%l7
+
+ sethi %hi(operatingsystem_parameter_argc),%o0
+ or %o0,%lo(operatingsystem_parameter_argc),%o0
+ ld [%o0+%l7],%o1
+ st %i0,[%o1]
+
+ sethi %hi(operatingsystem_parameter_argv),%o0
+ or %o0,%lo(operatingsystem_parameter_argv),%o0
+ ld [%o0+%l7],%o1
+ st %i1,[%o1]
+
+ sethi %hi(operatingsystem_parameter_envp),%o0
+ or %o0,%lo(operatingsystem_parameter_envp),%o0
+ ld [%o0+%l7],%o1
+ st %i2,[%o1]
+
+ sethi %hi(__stkptr),%o0
+ or %o0,%lo(__stkptr),%o0
+ ld [%o0+%l7],%o1
+ st %sp,[%o1]
+
+ call PASCALMAIN
+ nop
+ ret
+ restore
+
+.size FPC_SHARED_LIB_START,.-FPC_SHARED_LIB_START
+
+
+.globl _haltproc
+.type _haltproc,#function
+_haltproc:
+ mov 188,%g1
+ ta 16
+ unimp
+
+.size _haltproc,.-_haltproc
+
+ .comm __stkptr,4
+ .comm __dl_fini,4
+
+ .comm operatingsystem_parameter_envp,4
+ .comm operatingsystem_parameter_argc,4
+ .comm operatingsystem_parameter_argv,4
+
+.section .note.GNU-stack,"",@progbits
diff --git a/rtl/linux/system.pp b/rtl/linux/system.pp
index 40ed6c1bb7..a337d87cf6 100644
--- a/rtl/linux/system.pp
+++ b/rtl/linux/system.pp
@@ -36,13 +36,13 @@ Unit System;
function get_cmdline:Pchar;
property cmdline:Pchar read get_cmdline;
-{$if defined(CPUARM) or defined(CPUM68K) or defined(CPUSPARC)}
+{$if defined(CPUARM) or defined(CPUM68K) or (defined(CPUSPARC) and defined(VER2_6))}
{$define fpc_softfpu_interface}
{$i softfpu.pp}
{$undef fpc_softfpu_interface}
-{$endif defined(CPUARM) or defined(CPUM68K) or defined(CPUSPARC)}
+{$endif defined(CPUARM) or defined(CPUM68K) or (defined(CPUSPARC) and defined(VER2_6))}
{*****************************************************************************}
implementation
@@ -55,7 +55,7 @@ var
const calculated_cmdline:Pchar=nil;
-{$if defined(CPUARM) or defined(CPUM68K) or defined(CPUSPARC) }
+{$if defined(CPUARM) or defined(CPUM68K) or (defined(CPUSPARC) and defined(VER2_6))}
{$define fpc_softfpu_implementation}
{$i softfpu.pp}
@@ -73,7 +73,7 @@ const calculated_cmdline:Pchar=nil;
{$define FPC_SYSTEM_HAS_extractFloat32Exp}
{$define FPC_SYSTEM_HAS_extractFloat32Sign}
-{$endif defined(CPUARM) or defined(CPUM68K) or defined(CPUSPARC) }
+{$endif defined(CPUARM) or defined(CPUM68K) or (defined(CPUSPARC) and defined(VER2_6))}
{$I system.inc}
@@ -341,9 +341,6 @@ begin
{$endif}
{$ifndef FPUNONE}
- SysResetFPU;
- if not(IsLibrary) then
- SysInitFPU;
{$if defined(cpupowerpc)}
// some PPC kernels set the exception bits FE0/FE1 in the MSR to zero,
// disabling all FPU exceptions. Enable them again.
@@ -351,9 +348,8 @@ begin
{$endif}
{$endif}
IsConsole := TRUE;
- StackTop := initialstkptr;
StackLength := CheckInitialStkLen(initialStkLen);
- StackBottom := StackTop - StackLength;
+ StackBottom := initialstkptr - StackLength;
{ Set up signals handlers (may be needed by init code to test cpu features) }
InstallSignals;
{$if defined(cpui386) or defined(cpuarm)}
diff --git a/rtl/linux/x86_64/si_c.inc b/rtl/linux/x86_64/si_c.inc
index f7d66310dd..5bf0f83516 100644
--- a/rtl/linux/x86_64/si_c.inc
+++ b/rtl/linux/x86_64/si_c.inc
@@ -57,12 +57,13 @@ procedure main_stub; assembler; nostackframe;
// stack alignment
pushq %rax
- movq %rax,fpc_ret
- movq %rbp,fpc_ret_rbp
+ movq %rax,fpc_ret(%rip)
+ movq %rbp,fpc_ret_rbp(%rip)
pushq %rax
{ Save initial stackpointer }
- movq %rsp,__stkptr
+ movq initialstkptr@GOTPCREL(%rip),%rax
+ movq %rsp,(%rax)
{ start the program }
xorq %rbp,%rbp
@@ -71,9 +72,8 @@ procedure main_stub; assembler; nostackframe;
end;
-procedure ini_dummy; assembler; nostackframe
- asm
- ret
+procedure ini_dummy;
+ begin
end;
{******************************************************************************
@@ -105,14 +105,17 @@ procedure _FPC_libc_start; assembler; nostackframe; public name '_start';
popq %rsi { Pop the argument count. }
movq %rsp, %rdx { argv starts just at the current stack top. }
- movq %rsi,operatingsystem_parameter_argc
- movq %rsp,operatingsystem_parameter_argv { argv starts just at the current stack top. }
+ movq operatingsystem_parameter_argc@GOTPCREL(%rip),%rax
+ movq %rsi,(%rax)
+ movq operatingsystem_parameter_argv@GOTPCREL(%rip),%rax
+ movq %rsp,(%rax)
leaq 8(,%rsi,8),%rax
addq %rsp,%rax
- movq %rax,operatingsystem_parameter_envp
+ movq operatingsystem_parameter_envp@GOTPCREL(%rip),%rcx
+ movq %rax,(%rcx)
{ Align the stack to a 16 byte boundary to follow the ABI. }
- andq $~15, %rsp
+ andq $0xfffffffffffffff0, %rsp
pushq %rax { Push garbage because we push 8 more bytes. }
@@ -135,6 +138,7 @@ procedure _FPC_libc_start; assembler; nostackframe; public name '_start';
{ We need this stuff to make gdb behave itself, otherwise
gdb will chokes with SIGILL when trying to debug apps.
}
+(*
.section ".note.ABI-tag", "a"
.align 4
.long 1f - 0f
@@ -145,17 +149,16 @@ procedure _FPC_libc_start; assembler; nostackframe; public name '_start';
2: .long 0
.long 2,4,0
3: .align 4
-
- .section .note.GNU-stack,"",@progbits
+ *)
end;
procedure _FPC_libc_haltproc; assembler; nostackframe; public name '_haltproc';
asm
- movzwq operatingsystem_result,%rax { load and save exitcode }
+ movq ExitCode@GOTPCREL(%rip),%rax
+ movzwq (%rax),%rax { load and save exitcode }
- movq ___fpc_ret,%rdx { return to libc }
- movq ___fpc_ret_rbp,%rbp
+ movq fpc_ret(%rip),%rdx { return to libc }
+ movq fpc_ret_rbp(%rip),%rbp
pushq %rdx
- ret
end;
diff --git a/rtl/linux/x86_64/si_dll.inc b/rtl/linux/x86_64/si_dll.inc
new file mode 100644
index 0000000000..fa2bbe970c
--- /dev/null
+++ b/rtl/linux/x86_64/si_dll.inc
@@ -0,0 +1,61 @@
+{
+ This file is part of the Free Pascal run time library.
+ Copyright (c) 2006 by Florian Klaempfl
+ members of the Free Pascal 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.
+
+ **********************************************************************}
+
+
+procedure PASCALMAIN; external name 'PASCALMAIN';
+
+procedure _FPC_shared_lib_start(argc:dword; argv,envp:pointer); cdecl; public name 'FPC_SHARED_LIB_START'; public name '_start';
+begin
+ operatingsystem_parameter_argc:=argc;
+ operatingsystem_parameter_argv:=argv;
+ operatingsystem_parameter_envp:=envp;
+ InitialStkPtr:=get_frame;
+ PASCALMAIN;
+end;
+
+{ this routine is only called when the halt() routine of the RTL embedded in
+ the shared library is called }
+procedure _FPC_shared_lib_haltproc(e:longint); cdecl; assembler; nostackframe; public name '_haltproc';
+asm
+ movl e,%edi
+ movl $231,%eax { exit_group call }
+ syscall
+ jmp _FPC_shared_lib_haltproc
+end;
+
+{ Define a symbol for the first piece of initialized data. }
+(* .data
+ .globl __data_start
+__data_start:
+ .long 0
+ .weak data_start
+ data_start = __data_start *)
+
+
+(* We need this stuff to make gdb behave itself, otherwise
+ gdb will chokes with SIGILL when trying to debug apps.
+
+Makes ld choke:
+ .section ".note.ABI-tag", "a"
+ .align 4
+ .long 1f - 0f
+ .long 3f - 2f
+ .long 1
+0: .asciz "GNU"
+1: .align 4
+2: .long 0
+ .long 2,4,0
+3: .align 4
+*)
+
diff --git a/rtl/linux/x86_64/si_g.inc b/rtl/linux/x86_64/si_g.inc
new file mode 100644
index 0000000000..32f11f89c3
--- /dev/null
+++ b/rtl/linux/x86_64/si_g.inc
@@ -0,0 +1,174 @@
+{
+ This file is part of the Free Pascal run time library.
+ Copyright (c) 2005 by Michael Van Canneyt, Peter Vreman,
+ & Daniel Mantione, members of the Free Pascal 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.
+
+ **********************************************************************}
+
+{
+ Linux ELF startup code for Free Pascal
+
+
+ Stack layout at program start:
+
+ nil
+ envn
+ ....
+ .... ENVIRONMENT VARIABLES
+ env1
+ env0
+ nil
+ argn
+ ....
+ .... COMMAND LINE OPTIONS
+ arg1
+ arg0
+ argc <--- esp
+}
+
+var
+ libc_environ: pchar; external name '__environ';
+ libc_fpu_control: word; external name '__fpu_control';
+ libc_init_proc: procedure; external name '_init';
+ libc_fini_proc: procedure; external name '_fini';
+ _etext: pointer; external name '_etext';
+
+ fpc_ret,fpc_ret_rbp : pointer;
+
+procedure libc_atexit; external name '__libc_atexit';
+procedure libc_exit; external name '__libc_exit';
+procedure libc_init; external name '__libc_init';
+procedure libc_setfpucw; external name '__setfpucw';
+procedure libc_start_main; external name '__libc_start_main';
+
+procedure gmon_monstartup; external name 'monstartup';
+procedure gmon_mcleanup; external name '_mcleanup';
+
+procedure PASCALMAIN; external name 'PASCALMAIN';
+procedure main_stub; forward;
+
+procedure ini_dummy;
+ begin
+ end;
+
+{******************************************************************************
+ C library start/halt
+ ******************************************************************************}
+
+procedure _FPC_libc_start; assembler; nostackframe; public name '_start';
+ asm
+ { Clear the frame pointer. The ABI suggests this be done, to mark
+ the outermost frame obviously. }
+ xorq %rbp, %rbp
+
+ { Extract the arguments as encoded on the stack and set up
+ the arguments for __libc_start_main (int (*main) (int, char **, char **),
+ int argc, char *argv,
+ void (*init) (void), void (*fini) (void),
+ void (*rtld_fini) (void), void *stack_end).
+ The arguments are passed via registers and on the stack:
+ main: %rdi
+ argc: %rsi
+ argv: %rdx
+ init: %rcx
+ fini: %r8
+ rtld_fini: %r9
+ stack_end: stack. }
+
+ movq %rdx, %r9 { Address of the shared library termination
+ function. }
+ popq %rsi { Pop the argument count. }
+ movq %rsp, %rdx { argv starts just at the current stack top. }
+
+ movq operatingsystem_parameter_argc@GOTPCREL(%rip),%rax
+ movq %rsi,(%rax)
+ movq operatingsystem_parameter_argv@GOTPCREL(%rip),%rax
+ movq %rsp,(%rax)
+ leaq 8(,%rsi,8),%rax
+ addq %rsp,%rax
+ movq operatingsystem_parameter_envp@GOTPCREL(%rip),%rcx
+ movq %rax,(%rcx)
+
+ { Align the stack to a 16 byte boundary to follow the ABI. }
+ andq $0xfffffffffffffff0, %rsp
+
+ pushq %rax { Push garbage because we push 8 more bytes. }
+
+ { Provide the highest stack address to the user code (for stacks
+ which grow downwards). }
+ pushq %rsp
+
+ { Pass address of our own entry points to .fini and .init. }
+ movq $ini_dummy, %r8
+ movq $ini_dummy, %rcx
+
+ movq $main_stub, %rdi
+
+ { Call the user's main function, and exit with its value.
+ But let the libc call main. }
+ call libc_start_main@PLT
+
+ hlt { Crash if somehow `exit' does return. }
+
+ { We need this stuff to make gdb behave itself, otherwise
+ gdb will chokes with SIGILL when trying to debug apps.
+ }
+(*
+ .section ".note.ABI-tag", "a"
+ .align 4
+ .long 1f - 0f
+ .long 3f - 2f
+ .long 1
+0: .asciz "GNU"
+1: .align 4
+2: .long 0
+ .long 2,4,0
+3: .align 4
+*)
+ end;
+
+procedure main_stub; assembler; nostackframe;
+ asm
+ { save return address }
+ popq %rax
+
+ // stack alignment
+ pushq %rax
+
+ movq %rax,fpc_ret(%rip)
+ movq %rbp,fpc_ret_rbp(%rip)
+ pushq %rax
+
+ { Initialize gmon }
+ movq _etext@GOTPCREL(%rip),%rsi
+ movq _FPC_libc_start@GOTPCREL(%rip),%rdi
+ call gmon_monstartup@PLT
+
+ movq gmon_mcleanup@GOTPCREL(%rip),%rdi
+ call libc_atexit@PLT
+ { Save initial stackpointer }
+ movq initialstkptr(%rip),%rax
+ movq %rsp,(%rax)
+
+ { start the program }
+ xorq %rbp,%rbp
+ call PASCALMAIN@PLT
+ hlt
+ end;
+
+procedure _FPC_libc_haltproc; assembler; nostackframe; public name '_haltproc';
+ asm
+ movq ExitCode@GOTPCREL(%rip),%rax
+ movzwq (%rax),%rax { load and save exitcode }
+
+ movq fpc_ret(%rip),%rdx { return to libc }
+ movq fpc_ret_rbp(%rip),%rbp
+ pushq %rdx
+ end;
diff --git a/rtl/linux/x86_64/si_prc.inc b/rtl/linux/x86_64/si_prc.inc
index 5f0bcd3e0d..9161465c39 100644
--- a/rtl/linux/x86_64/si_prc.inc
+++ b/rtl/linux/x86_64/si_prc.inc
@@ -43,15 +43,19 @@ var
procedure _FPC_proc_start; assembler; nostackframe; public name '_start';
asm
popq %rsi { Pop the argument count. }
- movq %rsi,operatingsystem_parameter_argc
- movq %rsp,operatingsystem_parameter_argv { argv starts just at the current stack top. }
+ movq operatingsystem_parameter_argc@GOTPCREL(%rip),%rax
+ movq %rsi,(%rax)
+ movq operatingsystem_parameter_argv@GOTPCREL(%rip),%rax
+ movq %rsp,(%rax) { argv starts just at the current stack top. }
leaq 8(,%rsi,8),%rax
addq %rsp,%rax
- movq %rax,operatingsystem_parameter_envp
+ movq operatingsystem_parameter_envp@GOTPCREL(%rip),%rsi
+ movq %rax,(%rsi)
andq $0xfffffffffffffff0,%rsp { Align the stack to a 16 byte boundary to follow the ABI. }
{ Save initial stackpointer }
- movq %rsp,__stkptr
+ movq initialstkptr@GOTPCREL(%rip),%rax
+ movq %rsp,(%rax)
xorq %rbp, %rbp
call PASCALMAIN
@@ -59,13 +63,15 @@ procedure _FPC_proc_start; assembler; nostackframe; public name '_start';
procedure _FPC_dynamic_proc_start; assembler; nostackframe; public name '_dynamic_start';
asm
- movq %rdx,dlexitproc
+ movq dlexitproc@GOTPCREL(%rip),%rax
+ movq %rdx,(%rax)
jmp _FPC_proc_start
end;
procedure _FPC_proc_haltproc; assembler; nostackframe; public name '_haltproc';
asm
- movq dlexitproc,%rdx
+ movq dlexitproc@GOTPCREL(%rip),%rax
+ movq (%rax),%rdx
testq %rdx,%rdx
jz .Lhaltproc
@@ -73,13 +79,15 @@ procedure _FPC_proc_haltproc; assembler; nostackframe; public name '_haltproc';
.Lhaltproc:
movl $231,%eax { exit_group call }
- movzwl operatingsystem_result,%edi
+ movq ExitCode@GOTPCREL(%rip),%rdi
+ movzwl (%rdi),%edi
syscall
jmp .Lhaltproc
{ We need this stuff to make gdb behave itself, otherwise
gdb will chokes with SIGILL when trying to debug apps.
}
+(*
.section ".note.ABI-tag", "a"
.align 4
.long 1f - 0f
@@ -91,6 +99,6 @@ procedure _FPC_proc_haltproc; assembler; nostackframe; public name '_haltproc';
.long 2,4,0
3: .align 4
- .section .note.GNU-stack,"",@progbits
+ .section .note.GNU-stack,"",@progbits *)
end;
diff --git a/rtl/linux/x86_64/sighnd.inc b/rtl/linux/x86_64/sighnd.inc
index cbab9aea05..e8fa3cac0c 100644
--- a/rtl/linux/x86_64/sighnd.inc
+++ b/rtl/linux/x86_64/sighnd.inc
@@ -22,9 +22,11 @@ const
function GetFPUState(const SigContext : TSigContext) : word;
begin
if assigned(SigContext.fpstate) then
- GetfpuState:=SigContext.fpstate^.swd;
+ GetfpuState:=SigContext.fpstate^.swd
+ else
+ GetFPUState:=0;
{$ifdef SYSTEM_DEBUG}
- writeln('xx:',sigcontext.en_tw,' ',sigcontext.en_cw);
+ writeln('xx:',sigcontext.twd,' ',sigcontext.cwd);
{$endif SYSTEM_DEBUG}
{$ifdef SYSTEM_DEBUG}
Writeln(stderr,'FpuState = ',result);
@@ -55,10 +57,8 @@ procedure SignalToRunerror(sig : longint; SigInfo: PSigInfo; SigContext: PSigCon
res:=206
else if (FpuState and FPU_Denormal)<>0 then
res:=216
- else if (FpuState and (FPU_StackOverflow or FPU_StackUnderflow))<>0 Then
+ else if (FpuState and (FPU_StackOverflow or FPU_StackUnderflow or FPU_Invalid))<>0 Then
res:=207
- else if (FpuState and FPU_Invalid)<>0 then
- res:=216
else
res:=207; {'Coprocessor Error'}
end;
diff --git a/rtl/m68k/mathu.inc b/rtl/m68k/mathu.inc
index 5cc8d6722c..9e872c81e8 100644
--- a/rtl/m68k/mathu.inc
+++ b/rtl/m68k/mathu.inc
@@ -12,15 +12,40 @@
**********************************************************************}
-{$warning TODO}
-
function GetExceptionMask: TFPUExceptionMask;
begin
- Result := [];
+ Result := softfloat_exception_mask;
end;
function SetExceptionMask(const Mask: TFPUExceptionMask): TFPUExceptionMask;
begin
- { TODO }
+ result:=softfloat_exception_mask;
+ softfloat_exception_mask:=mask;
+end;
+
+function GetRoundMode: TFPURoundingMode;
+begin
+ Result:=softfloat_rounding_mode;
+end;
+
+function SetRoundMode(const RoundMode: TFPURoundingMode): TFPURoundingMode;
+begin
+ Result:=softfloat_rounding_mode;
+ softfloat_rounding_mode:=RoundMode;
+end;
+
+function GetPrecisionMode: TFPUPrecisionMode;
+begin
+ result:=pmDouble;
+end;
+
+function SetPrecisionMode(const Precision: TFPUPrecisionMode): TFPUPrecisionMode;
+begin
+ result:=pmDouble;
+end;
+
+procedure ClearExceptions(RaisePending: Boolean);
+begin
+ softfloat_exception_flags:=[];
end;
diff --git a/rtl/m68k/mathuh.inc b/rtl/m68k/mathuh.inc
deleted file mode 100644
index 9b50e37640..0000000000
--- a/rtl/m68k/mathuh.inc
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- This file is part of the Free Pascal run time library.
- Copyright (c) 2012 by Sven Barth
- member of the Free Pascal 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.
-
- **********************************************************************}
-
-{$warning TODO}
-
-type
- TFPUException = (exInvalidOp, exDenormalized, exZeroDivide,
- exOverflow, exUnderflow, exPrecision);
- TFPUExceptionMask = set of TFPUException;
-
-function GetExceptionMask: TFPUExceptionMask;
-function SetExceptionMask(const Mask: TFPUExceptionMask): TFPUExceptionMask;
-
diff --git a/rtl/macos/Makefile b/rtl/macos/Makefile
index 5ceba9d97b..b1e530f3a4 100644
--- a/rtl/macos/Makefile
+++ b/rtl/macos/Makefile
@@ -1,8 +1,8 @@
#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-04-01 rev 27428]
#
default: all
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos
BSDs = freebsd netbsd openbsd darwin
UNIXs = linux $(BSDs) solaris qnx haiku aix
LIMIT83fs = go32v2 os2 emx watcom msdos
@@ -185,6 +185,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t
endif
override FPCOPT+=-Cp$(SUBARCH)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+ifeq ($(SUBARCH),)
+$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined)
+endif
+override FPCOPT+=-Cp$(SUBARCH)
+endif
ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
TARGETSUFFIX=$(OS_TARGET)
SOURCESUFFIX=$(OS_SOURCE)
@@ -339,226 +345,229 @@ endif
OBJPASDIR=$(RTL)/objpas
GRAPHDIR=$(INC)/graph
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos objects matrix cmem charset cpall ctypes
+override TARGET_UNITS+=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils unixutil dos cmem charset cpall ctypes
endif
ifeq ($(FULL_TARGET),i386-linux)
override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
@@ -770,6 +779,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
endif
@@ -993,6 +1005,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
endif
@@ -1215,6 +1230,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
endif
@@ -2008,17 +2026,23 @@ ifdef ACROSSCOMPILE
override FPCOPT+=$(CROSSOPT)
endif
override COMPILER:=$(strip $(FPC) $(FPCOPT))
-ifeq (,$(findstring -s ,$(COMPILER)))
+ifneq (,$(findstring -sh ,$(COMPILER)))
+UseEXECPPAS=1
+endif
+ifneq (,$(findstring -s ,$(COMPILER)))
+ifeq ($(FULL_SOURCE),$(FULL_TARGET))
+UseEXECPPAS=1
+endif
+endif
+ifneq ($(UseEXECPPAS),1)
EXECPPAS=
else
-ifeq ($(FULL_SOURCE),$(FULL_TARGET))
ifdef RUNBATCH
EXECPPAS:=@$(RUNBATCH) $(PPAS)
else
EXECPPAS:=@$(PPAS)
endif
endif
-endif
.PHONY: fpc_units
ifneq ($(TARGET_UNITS)$(TARGET_IMPLICITUNITS),)
override ALLTARGET+=fpc_units
diff --git a/rtl/macos/Makefile.fpc b/rtl/macos/Makefile.fpc
index f3c486e39a..97bc465014 100644
--- a/rtl/macos/Makefile.fpc
+++ b/rtl/macos/Makefile.fpc
@@ -8,9 +8,9 @@ main=rtl
[target]
loaders=
units=system uuchar strings objpas macpas iso7185 heaptrc getopts macostp macutils \
- unixutil dos objects matrix cmem charset cpall ctypes
+ unixutil dos cmem charset cpall ctypes
# exec \
-# crt printer \
+# printer \
# lineinfo lnfodwrf graph \
# sysutils math typinfo
# rsts=math
diff --git a/rtl/mips/mathu.inc b/rtl/mips/mathu.inc
index eaec203b01..8a4be08746 100644
--- a/rtl/mips/mathu.inc
+++ b/rtl/mips/mathu.inc
@@ -36,24 +36,6 @@ const
fpu_rounding_plus_inf = 2;
fpu_rounding_minus_inf = 3;
-
-function FPUExceptionMaskToSoftFloatMask(const Mask: TFPUExceptionMask): byte;
-begin
- result:=0;
- if exInvalidOp in Mask then
- result:=result or (1 shl ord(exInvalidOp));
- if exDenormalized in Mask then
- result:=result or (1 shl ord(exDenormalized));
- if exZeroDivide in Mask then
- result:=result or (1 shl ord(exZeroDivide));
- if exOverflow in Mask then
- result:=result or (1 shl ord(exOverflow));
- if exUnderflow in Mask then
- result:=result or (1 shl ord(exUnderflow));
- if exPrecision in Mask then
- result:=result or (1 shl ord(exPrecision));
-end;
-
const
roundmode2fsr : array [TFPURoundingMode] of byte=(
fpu_rounding_nearest,
@@ -78,7 +60,6 @@ function SetRoundMode(const RoundMode: TFPURoundingMode): TFPURoundingMode;
var
fsr: longword;
begin
- softfloat_rounding_mode:=byte(RoundMode);
fsr:=get_fsr;
result:=fsr2roundmode[fsr and fpu_rounding_mask];
set_fsr((fsr and not fpu_rounding_mask) or roundmode2fsr[RoundMode]);
@@ -160,8 +141,6 @@ function SetExceptionMask(const Mask: TFPUExceptionMask): TFPUExceptionMask;
{ update control register contents }
set_fsr(fsr);
-
- softfloat_exception_mask:=FPUExceptionMaskToSoftFloatMask(mask);
end;
diff --git a/rtl/mips/mathuh.inc b/rtl/mips/mathuh.inc
deleted file mode 100644
index a1d8b4ea2b..0000000000
--- a/rtl/mips/mathuh.inc
+++ /dev/null
@@ -1,29 +0,0 @@
-{
- This file is part of the Free Pascal run time library.
- Copyright (c) 1999-2000 by Florian Klaempfl
- member of the Free Pascal 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.
-
- **********************************************************************}
-
- type
- TFPURoundingMode = (rmNearest, rmDown, rmUp, rmTruncate);
- TFPUPrecisionMode = (pmSingle, pmReserved, pmDouble, pmExtended);
- TFPUException = (exInvalidOp, exDenormalized, exZeroDivide,
- exOverflow, exUnderflow, exPrecision);
- TFPUExceptionMask = set of TFPUException;
-
-function GetRoundMode: TFPURoundingMode;
-function SetRoundMode(const RoundMode: TFPURoundingMode): TFPURoundingMode;
-function GetPrecisionMode: TFPUPrecisionMode;
-function SetPrecisionMode(const Precision: TFPUPrecisionMode): TFPUPrecisionMode;
-function GetExceptionMask: TFPUExceptionMask;
-function SetExceptionMask(const Mask: TFPUExceptionMask): TFPUExceptionMask;
-procedure ClearExceptions(RaisePending: Boolean =true);
-
diff --git a/rtl/mips/mips.inc b/rtl/mips/mips.inc
index 7cceb20d9b..79516915b9 100644
--- a/rtl/mips/mips.inc
+++ b/rtl/mips/mips.inc
@@ -53,26 +53,26 @@ const
fpu_rounding_plus_inf = 2;
fpu_rounding_minus_inf = 3;
+ fpu_all_bits = fpu_enable_mask or fpu_flags_mask or fpu_cause_mask or fpu_rounding_mask;
-procedure fpc_cpuinit;
-var
- tmp32: longint;
+{$define FPC_SYSTEM_HAS_SYSINITFPU}
+procedure SysInitFPU;
begin
- { don't let libraries influence the FPU cw set by the host program }
- if not IsLibrary then
- begin
- tmp32 := get_fsr();
- { enable div by 0 and invalid operation fpu exceptions,
- disable the other exceptions }
- tmp32 := (tmp32 and not fpu_enable_mask) or default_fpu_enable;
- { Reset flags and cause }
- tmp32 := tmp32 and not (fpu_flags_mask or fpu_cause_mask);
+ set_fsr(get_fsr and (not fpu_all_bits) or (default_fpu_enable or fpu_rounding_nearest));
+ end;
- { round towards nearest; ieee compliant arithmetics }
- tmp32 := (tmp32 and not fpu_rounding_mask) or fpu_rounding_nearest;
- set_fsr(tmp32);
- end;
+{$define FPC_SYSTEM_HAS_SYSRESETFPU}
+procedure SysResetFPU;
+ begin
+ end;
+
+
+procedure fpc_cpuinit;
+ begin
+ SysResetFPU;
+ if (not IsLibrary) then
+ SysInitFPU;
end;
diff --git a/rtl/mipsel/mathuh.inc b/rtl/mipsel/mathuh.inc
deleted file mode 100644
index 8bc813db9b..0000000000
--- a/rtl/mipsel/mathuh.inc
+++ /dev/null
@@ -1 +0,0 @@
-{$i ../mips/mathuh.inc} \ No newline at end of file
diff --git a/rtl/morphos/Makefile b/rtl/morphos/Makefile
index 295c9a5be1..882d392583 100644
--- a/rtl/morphos/Makefile
+++ b/rtl/morphos/Makefile
@@ -1,8 +1,8 @@
#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-04-01 rev 27428]
#
default: all
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos
BSDs = freebsd netbsd openbsd darwin
UNIXs = linux $(BSDs) solaris qnx haiku aix
LIMIT83fs = go32v2 os2 emx watcom msdos
@@ -186,6 +186,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t
endif
override FPCOPT+=-Cp$(SUBARCH)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+ifeq ($(SUBARCH),)
+$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined)
+endif
+override FPCOPT+=-Cp$(SUBARCH)
+endif
ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
TARGETSUFFIX=$(OS_TARGET)
SOURCESUFFIX=$(OS_SOURCE)
@@ -335,448 +341,454 @@ endif
OBJPASDIR=$(RTL)/objpas
GRAPHDIR=$(INC)/graph
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl math typinfo charset cpall getopts types rtlconsts sysconst exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-linux)
override TARGET_LOADERS+=prt0
@@ -988,6 +1000,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_LOADERS+=prt0
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_LOADERS+=prt0
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_LOADERS+=prt0
endif
@@ -1210,6 +1225,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
endif
@@ -1433,6 +1451,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
endif
@@ -1655,6 +1676,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
endif
@@ -2448,17 +2472,23 @@ ifdef ACROSSCOMPILE
override FPCOPT+=$(CROSSOPT)
endif
override COMPILER:=$(strip $(FPC) $(FPCOPT))
-ifeq (,$(findstring -s ,$(COMPILER)))
+ifneq (,$(findstring -sh ,$(COMPILER)))
+UseEXECPPAS=1
+endif
+ifneq (,$(findstring -s ,$(COMPILER)))
+ifeq ($(FULL_SOURCE),$(FULL_TARGET))
+UseEXECPPAS=1
+endif
+endif
+ifneq ($(UseEXECPPAS),1)
EXECPPAS=
else
-ifeq ($(FULL_SOURCE),$(FULL_TARGET))
ifdef RUNBATCH
EXECPPAS:=@$(RUNBATCH) $(PPAS)
else
EXECPPAS:=@$(PPAS)
endif
endif
-endif
.PHONY: fpc_loaders
ifneq ($(TARGET_LOADERS),)
override ALLTARGET+=fpc_loaders
@@ -2865,7 +2895,6 @@ strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc \
$(SYSTEMUNIT)$(PPUEXT)
dos$(PPUEXT) : dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \
$(SYSTEMUNIT)$(PPUEXT)
-objects$(PPUEXT) : $(INC)/objects.pp dos$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
sysutils$(PPUEXT) : sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
objpas$(PPUEXT) dos$(PPUEXT) sysconst$(PPUEXT)
$(COMPILER) -Fi$(OBJPASDIR)/sysutils sysutils.pp
@@ -2874,29 +2903,18 @@ classes$(PPUEXT) : classes.pp $(wildcard $(OBJPASDIR)/classes/*.inc) \
$(COMPILER) -Fi$(OBJPASDIR)/classes classes.pp
fgl$(PPUEXT) : $(OBJPASDIR)/fgl.pp objpas$(PPUEXT) types$(PPUEXT) system$(PPUEXT) sysutils$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/fgl.pp
-strutils$(PPUEXT) : $(OBJPASDIR)/strutils.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/strutils.pp
typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT)
$(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp $(REDIR)
math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/math.pp $(REDIR)
-varutils$(PPUEXT) : $(OBJPASDIR)/cvarutil.inc $(OBJPASDIR)/varutils.inc \
- $(OBJPASDIR)/varutilh.inc varutils.pp
- $(COMPILER) -I$(OBJPASDIR) varutils.pp $(REDIR)
-fmtbcd$(PPUEXT) : $(OBJPASDIR)/fmtbcd.pp objpas$(PPUEXT) sysutils$(PPUEXT) variants$(PPUEXT) classes$(PPUEXT) system$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/fmtbcd.pp
types$(PPUEXT) : $(OBJPASDIR/types.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/types.pp
rtlconsts$(PPUEXT) : $(OBJPASDIR)/rtlconsts.pp
$(COMPILER) $(OBJPASDIR)/rtlconsts.pp
sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/sysconst.pp
-dateutil$(PPUEXT) : $(OBJPASDIR)/dateutil.pp
- $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/dateutil.pp
macpas$(PPUEXT) : $(INC)/macpas.pp objpas$(PPUEXT) math$(PPUEXT)
$(COMPILER) $(INC)/macpas.pp $(REDIR)
-ucomplex$(PPUEXT): $(INC)/ucomplex.pp math$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
getopts$(PPUEXT) : $(INC)/getopts.pp $(SYSTEMUNIT)$(PPUEXT)
heaptrc$(PPUEXT) : $(INC)/heaptrc.pp $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) -Sg $(INC)/heaptrc.pp $(REDIR)
@@ -2924,6 +2942,4 @@ tinygl$(PPUEXT): tinygl.pp exec$(PPUEXT)
get9$(PPUEXT): get9.pas exec$(PPUEXT)
muihelper$(PPUEXT): muihelper.pas intuition$(PPUEXT) mui$(PPUEXT) doslib$(PPUEXT) utility$(PPUEXT)
kvm$(PPUEXT) : kvm.pp
-mouse$(PPUEXT) : mouse.pp
-keyboard$(PPUEXT) : keyboard.pp
ctypes$(PPUEXT) : $(INC)/ctypes.pp $(SYSTEMUNIT)$(PPUEXT)
diff --git a/rtl/morphos/Makefile.fpc b/rtl/morphos/Makefile.fpc
index ecd476fcb7..ef63a5513c 100644
--- a/rtl/morphos/Makefile.fpc
+++ b/rtl/morphos/Makefile.fpc
@@ -9,7 +9,7 @@ main=rtl
loaders=prt0
units=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings \
dos heaptrc ctypes \
- sysutils classes fgl strutils math typinfo \
+ sysutils classes fgl math typinfo \
charset cpall getopts \
types rtlconsts sysconst \
exec timer doslib utility hardware inputevent keymap graphics layers \
@@ -22,7 +22,7 @@ units=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings \
clipboard datatypes asl ahi tinygl get9 muihelper
#implicitunits=exeinfo\
implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 \
- cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+ cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
rsts=math rtlconsts typinfo classes sysconst
@@ -115,14 +115,6 @@ strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc \
dos$(PPUEXT) : dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \
$(SYSTEMUNIT)$(PPUEXT)
-#crt$(PPUEXT) : crt.pas $(INC)/textrec.inc $(SYSTEMUNIT)$(PPUEXT)
-
-objects$(PPUEXT) : $(INC)/objects.pp dos$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-
-#printer$(PPUEXT) : printer.pas $(INC)/textrec.inc $(SYSTEMUNIT)$(PPUEXT)
-
-#graph$(PPUEXT) : graph.pp
-
#
# Delphi Compatible Units
#
@@ -138,23 +130,12 @@ classes$(PPUEXT) : classes.pp $(wildcard $(OBJPASDIR)/classes/*.inc) \
fgl$(PPUEXT) : $(OBJPASDIR)/fgl.pp objpas$(PPUEXT) types$(PPUEXT) system$(PPUEXT) sysutils$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/fgl.pp
-strutils$(PPUEXT) : $(OBJPASDIR)/strutils.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/strutils.pp
-
typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT)
$(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp $(REDIR)
math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/math.pp $(REDIR)
-varutils$(PPUEXT) : $(OBJPASDIR)/cvarutil.inc $(OBJPASDIR)/varutils.inc \
- $(OBJPASDIR)/varutilh.inc varutils.pp
- $(COMPILER) -I$(OBJPASDIR) varutils.pp $(REDIR)
-
-fmtbcd$(PPUEXT) : $(OBJPASDIR)/fmtbcd.pp objpas$(PPUEXT) sysutils$(PPUEXT) variants$(PPUEXT) classes$(PPUEXT) system$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/fmtbcd.pp
-
types$(PPUEXT) : $(OBJPASDIR/types.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/types.pp
@@ -164,9 +145,6 @@ rtlconsts$(PPUEXT) : $(OBJPASDIR)/rtlconsts.pp
sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/sysconst.pp
-dateutil$(PPUEXT) : $(OBJPASDIR)/dateutil.pp
- $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/dateutil.pp
-
#
# Mac Pascal Model
#
@@ -178,8 +156,6 @@ macpas$(PPUEXT) : $(INC)/macpas.pp objpas$(PPUEXT) math$(PPUEXT)
# Other system-independent RTL Units
#
-ucomplex$(PPUEXT): $(INC)/ucomplex.pp math$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-
getopts$(PPUEXT) : $(INC)/getopts.pp $(SYSTEMUNIT)$(PPUEXT)
heaptrc$(PPUEXT) : $(INC)/heaptrc.pp $(SYSTEMUNIT)$(PPUEXT)
@@ -235,17 +211,7 @@ get9$(PPUEXT): get9.pas exec$(PPUEXT)
muihelper$(PPUEXT): muihelper.pas intuition$(PPUEXT) mui$(PPUEXT) doslib$(PPUEXT) utility$(PPUEXT)
-
kvm$(PPUEXT) : kvm.pp
-#video$(PPUEXT) : video.pp
-#windows$(PPUEXT) dos$(PPUEXT)
-
-mouse$(PPUEXT) : mouse.pp
-#windows$(PPUEXT) dos$(PPUEXT) winevent$(PPUEXT)
-
-keyboard$(PPUEXT) : keyboard.pp
-#windows$(PPUEXT) dos$(PPUEXT) winevent$(PPUEXT)
-
ctypes$(PPUEXT) : $(INC)/ctypes.pp $(SYSTEMUNIT)$(PPUEXT)
diff --git a/rtl/morphos/dos.pp b/rtl/morphos/dos.pp
index b8a8f74274..4691d9f2f2 100644
--- a/rtl/morphos/dos.pp
+++ b/rtl/morphos/dos.pp
@@ -225,7 +225,7 @@ begin
IOReq := NIL;
if port <> NIL then
begin
- IOReq := execAllocMem(size, MEMF_CLEAR or MEMF_PUBLIC);
+ IOReq := execAllocMem(size, MEMF_CLEAR);
if IOReq <> NIL then
begin
IOReq^.io_Message.mn_Node.ln_Type := 7;
@@ -254,7 +254,7 @@ var
begin
sigbit := AllocSignal(-1);
if sigbit = -1 then CreatePort := nil;
- port := execAllocMem(sizeof(tMsgPort),MEMF_CLEAR or MEMF_PUBLIC);
+ port := execAllocMem(sizeof(tMsgPort),MEMF_CLEAR);
if port = nil then begin
FreeSignal(sigbit);
CreatePort := nil;
diff --git a/rtl/morphos/sysheap.inc b/rtl/morphos/sysheap.inc
index e89c43081d..50f9db727f 100644
--- a/rtl/morphos/sysheap.inc
+++ b/rtl/morphos/sysheap.inc
@@ -30,7 +30,7 @@ begin
values[0]:=dword(result);
values[1]:=dword(size);
values[2]:=DWord(Sptr-StackBottom);
- RawDoFmt('FPC_MEM_DEBUG: $%lx:=SysOSAlloc(%ld), free stack: %ld bytes'+#10,@values,pointer(1),nil);
+ RawDoFmt('FPC_MEM_DEBUG: $%lx:=SysOSAlloc(%lu), free stack: %ld bytes'+#10,@values,pointer(1),nil);
{$ENDIF}
end;
@@ -46,6 +46,6 @@ begin
values[0]:=dword(p);
values[1]:=dword(size);
values[2]:=DWord(Sptr-StackBottom);
- RawDoFmt('FPC_MEM_DEBUG: SysOSFree($%lx,%ld), free stack: %ld bytes'+#10,@values,pointer(1),nil);
+ RawDoFmt('FPC_MEM_DEBUG: SysOSFree($%lx,%lu), free stack: %ld bytes'+#10,@values,pointer(1),nil);
{$ENDIF}
end;
diff --git a/rtl/morphos/system.pp b/rtl/morphos/system.pp
index 3e8e019acf..25c559f15f 100644
--- a/rtl/morphos/system.pp
+++ b/rtl/morphos/system.pp
@@ -402,9 +402,6 @@ begin
IsConsole := TRUE;
StackLength := CheckInitialStkLen(InitialStkLen);
StackBottom := Sptr - StackLength;
- SysResetFPU;
- if not(IsLibrary) then
- SysInitFPU;
{ OS specific startup }
MOS_ambMsg:=nil;
MOS_origDir:=0;
diff --git a/rtl/msdos/Makefile b/rtl/msdos/Makefile
index 2acfb6fb01..e52a2b4f00 100644
--- a/rtl/msdos/Makefile
+++ b/rtl/msdos/Makefile
@@ -1,8 +1,8 @@
#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-04-01 rev 27428]
#
default: all
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos
BSDs = freebsd netbsd openbsd darwin
UNIXs = linux $(BSDs) solaris qnx haiku aix
LIMIT83fs = go32v2 os2 emx watcom msdos
@@ -186,6 +186,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t
endif
override FPCOPT+=-Cp$(SUBARCH)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+ifeq ($(SUBARCH),)
+$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined)
+endif
+override FPCOPT+=-Cp$(SUBARCH)
+endif
ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
TARGETSUFFIX=$(OS_TARGET)
SOURCESUFFIX=$(OS_SOURCE)
@@ -337,226 +343,229 @@ ifdef NO_EXCEPTIONS_IN_SYSTEM
override FPCOPT+=-dNO_EXCEPTIONS_IN_SYSTEM
endif
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types strutils getopts fgl classes msmouse ports printer charset cpall ctypes
+override TARGET_UNITS+=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils math macpas iso7185 rtlconst typinfo types getopts fgl classes msmouse ports charset cpall ctypes
endif
ifeq ($(FULL_TARGET),i386-linux)
override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
@@ -768,6 +777,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
@@ -781,226 +793,229 @@ ifeq ($(FULL_TARGET),i8086-msdos)
override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_LOADERS+=prt0s prt0t prt0m # exceptn fpu
+override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
endif
override INSTALL_FPCPACKAGE=y
ifeq ($(FULL_TARGET),i386-linux)
@@ -1213,6 +1228,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
endif
@@ -1435,6 +1453,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
endif
@@ -2228,17 +2249,23 @@ ifdef ACROSSCOMPILE
override FPCOPT+=$(CROSSOPT)
endif
override COMPILER:=$(strip $(FPC) $(FPCOPT))
-ifeq (,$(findstring -s ,$(COMPILER)))
+ifneq (,$(findstring -sh ,$(COMPILER)))
+UseEXECPPAS=1
+endif
+ifneq (,$(findstring -s ,$(COMPILER)))
+ifeq ($(FULL_SOURCE),$(FULL_TARGET))
+UseEXECPPAS=1
+endif
+endif
+ifneq ($(UseEXECPPAS),1)
EXECPPAS=
else
-ifeq ($(FULL_SOURCE),$(FULL_TARGET))
ifdef RUNBATCH
EXECPPAS:=@$(RUNBATCH) $(PPAS)
else
EXECPPAS:=@$(PPAS)
endif
endif
-endif
.PHONY: fpc_loaders
ifneq ($(TARGET_LOADERS),)
override ALLTARGET+=fpc_loaders
@@ -2634,24 +2661,35 @@ SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
include $(PROCINC)/makefile.cpu
SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
-prt0s$(OEXT) : prt0s.asm prt0stm.asm
+prt0s$(OEXT) : prt0s.asm prt0comn.asm
$(NASM) -f obj -o $(UNITTARGETDIRPREFIX)prt0s$(OEXT) prt0s.asm
-prt0t$(OEXT) : prt0t.asm prt0stm.asm
+prt0t$(OEXT) : prt0t.asm prt0comn.asm
$(NASM) -f obj -o $(UNITTARGETDIRPREFIX)prt0t$(OEXT) prt0t.asm
-prt0m$(OEXT) : prt0m.asm prt0stm.asm
+prt0m$(OEXT) : prt0m.asm prt0comn.asm
$(NASM) -f obj -o $(UNITTARGETDIRPREFIX)prt0m$(OEXT) prt0m.asm
+prt0c$(OEXT) : prt0c.asm prt0comn.asm
+ $(NASM) -f obj -o $(UNITTARGETDIRPREFIX)prt0c$(OEXT) prt0c.asm
+prt0l$(OEXT) : prt0l.asm prt0comn.asm
+ $(NASM) -f obj -o $(UNITTARGETDIRPREFIX)prt0l$(OEXT) prt0l.asm
+prt0h$(OEXT) : prt0h.asm prt0comn.asm
+ $(NASM) -f obj -o $(UNITTARGETDIRPREFIX)prt0h$(OEXT) prt0h.asm
system$(PPUEXT) : system.pp $(SYSDEPS)
$(COMPILER) -Us -Sg system.pp
+ $(EXECPPAS)
uuchar$(PPUEXT): $(SYSTEMUNIT)$(PPUEXT) $(INC)/uuchar.pp
$(COMPILER) $(INC)/uuchar.pp
+ $(EXECPPAS)
objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc system$(PPUEXT)
$(COMPILER) -Fi$(OBJPASDIR) $(OBJPASDIR)/objpas.pp
+ $(EXECPPAS)
strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc \
$(PROCINC)/strings.inc $(PROCINC)/stringss.inc \
system$(PPUEXT)
$(COMPILER) $(INC)/strings.pp
+ $(EXECPPAS)
iso7185$(PPUEXT) : $(INC)/iso7185.pp system$(PPUEXT)
$(COMPILER) $(INC)/iso7185.pp
+ $(EXECPPAS)
initc$(PPUEXT) : initc.pp system$(PPUEXT)
profile$(PPUEXT) : profile.pp dpmiexcp$(PPUEXT) go32$(PPUEXT)
dxetype$(PPUEXT) : dxetype.pp system$(PPUEXT)
@@ -2660,74 +2698,76 @@ emu387$(PPUEXT) : emu387.pp fpu$(OEXT) strings$(PPUEXT) dxeload$(PPUEXT) \
dpmiexcp$(PPUEXT)
ports$(PPUEXT) : ports.pp objpas$(PPUEXT) system$(PPUEXT)
$(COMPILER) ports.pp
+ $(EXECPPAS)
dos$(PPUEXT) : dos.pp $(INC)/filerec.inc $(INC)/textrec.inc \
strings$(PPUEXT) system$(PPUEXT)
$(COMPILER) dos.pp
-crt$(PPUEXT) : crt.pp $(INC)/textrec.inc dos$(PPUEXT) system$(PPUEXT)
- $(COMPILER) crt.pp
-objects$(PPUEXT) : $(INC)/objects.pp system$(PPUEXT)
- $(COMPILER) $(INC)/objects.pp
-printer$(PPUEXT) : printer.pp system$(PPUEXT)
- $(COMPILER) printer.pp
+ $(EXECPPAS)
sysutils$(PPUEXT) : sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
objpas$(PPUEXT) dos$(PPUEXT) sysconst$(PPUEXT)
$(COMPILER) -Fi$(OBJPASDIR)/sysutils sysutils.pp
+ $(EXECPPAS)
classes$(PPUEXT) : classes.pp $(wildcard $(OBJPASDIR)/classes/*.inc) \
sysutils$(PPUEXT) typinfo$(PPUEXT) rtlconst$(PPUEXT) types$(PPUEXT) fgl$(PPUEXT)
$(COMPILER) -Fi$(OBJPASDIR)/classes classes.pp
+ $(EXECPPAS)
fgl$(PPUEXT) : $(OBJPASDIR)/fgl.pp objpas$(PPUEXT) types$(PPUEXT) system$(PPUEXT) sysutils$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/fgl.pp
+ $(EXECPPAS)
math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/math.pp
+ $(EXECPPAS)
typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT) rtlconst$(PPUEXT)
$(COMPILER) -Sg -Fi$(OBJPASDIR) $(OBJPASDIR)/typinfo.pp
-varutils$(PPUEXT) : $(OBJPASDIR)/cvarutil.inc $(OBJPASDIR)/varutils.inc \
- $(OBJPASDIR)/varutilh.inc varutils.pp sysutils$(PPUEXT)
- $(COMPILER) -I$(OBJPASDIR) varutils.pp
-variants$(PPUEXT) : $(INC)/variants.pp varutils$(PPUEXT) sysutils$(PPUEXT) sysconst$(PPUEXT) typinfo$(PPUEXT) rtlconst$(PPUEXT)
- $(COMPILER) -Fi$(INC) $(INC)/variants.pp
-fmtbcd$(PPUEXT) : $(OBJPASDIR)/fmtbcd.pp objpas$(PPUEXT) sysutils$(PPUEXT) variants$(PPUEXT) classes$(PPUEXT) system$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/fmtbcd.pp
+ $(EXECPPAS)
types$(PPUEXT) : $(OBJPASDIR)/types.pp objpas$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/types.pp
+ $(EXECPPAS)
rtlconst$(PPUEXT) : $(OBJPASDIR)/rtlconst.pp
$(COMPILER) -Fi$(OBJPASDIR) $(OBJPASDIR)/rtlconst.pp
+ $(EXECPPAS)
sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/sysconst.pp
-dateutil$(PPUEXT) : $(OBJPASDIR)/dateutil.pp
- $(COMPILER) -Fi$(OBJPASDIR) $(OBJPASDIR)/dateutil.pp
-convutil$(PPUEXT) : $(OBJPASDIR)/convutil.pp
- $(COMPILER) -Fi$(OBJPASDIR) $(OBJPASDIR)/convutil.pp
-strutils$(PPUEXT) : $(OBJPASDIR)/strutils.pp
- $(COMPILER) $(OBJPASDIR)/strutils.pp
-stdconvs$(PPUEXT) : $(OBJPASDIR)/stdconvs.pp objpas$(PPUEXT) system$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/stdconvs.pp
+ $(EXECPPAS)
macpas$(PPUEXT) : $(INC)/macpas.pp objpas$(PPUEXT) math$(PPUEXT)
$(COMPILER) $(INC)/macpas.pp $(REDIR)
+ $(EXECPPAS)
cpu$(PPUEXT) : $(PROCINC)/cpu.pp system$(PPUEXT)
$(COMPILER) (PROCINC)/cpu.pp $(REDIR)
+ $(EXECPPAS)
mmx$(PPUEXT) : $(PROCINC)/mmx.pp cpu$(PPUEXT) system$(PPUEXT)
$(COMPILER) (PROCINC)/mmx.pp $(REDIR)
+ $(EXECPPAS)
getopts$(PPUEXT) : $(INC)/getopts.pp system$(PPUEXT)
$(COMPILER) $(INC)/getopts.pp $(REDIR)
+ $(EXECPPAS)
heaptrc$(PPUEXT) : $(INC)/heaptrc.pp system$(PPUEXT)
$(COMPILER) -Sg $(INC)/heaptrc.pp
+ $(EXECPPAS)
lineinfo$(PPUEXT) : $(INC)/lineinfo.pp system$(PPUEXT)
$(COMPILER) $(INC)/lineinfo.pp
+ $(EXECPPAS)
lnfodwrf$(PPUEXT) : $(INC)/lnfodwrf.pp system$(PPUEXT)
$(COMPILER) $(INC)/lnfodwrf.pp
+ $(EXECPPAS)
charset$(PPUEXT) : $(INC)/charset.pp system$(PPUEXT)
$(COMPILER) $(INC)/charset.pp
+ $(EXECPPAS)
cpall$(PPUEXT): $(RTL)/charmaps/cpall.pas system$(PPUEXT) charset$(PPUEXT)
$(COMPILER) -Fu$(INC) -Fi$(RTL)/charmaps $(RTL)/charmaps/cpall.pas
+ $(EXECPPAS)
matrix$(PPUEXT) : $(INC)/matrix.pp system$(PPUEXT)
$(COMPILER) $(INC)/matrix.pp
+ $(EXECPPAS)
ucomplex$(PPUEXT) : $(INC)/ucomplex.pp math$(PPUEXT) system$(PPUEXT)
$(COMPILER) $(INC)/ucomplex.pp $(REDIR)
+ $(EXECPPAS)
msmouse$(PPUEXT) : msmouse.pp system$(PPUEXT)
$(COMPILER) msmouse.pp $(REDIR)
+ $(EXECPPAS)
callspec$(PPUEXT) : $(INC)/callspec.pp system$(PPUEXT)
$(COMPILER) $(INC)/callspec.pp $(REDIR)
+ $(EXECPPAS)
ctypes$(PPUEXT) : $(INC)/ctypes.pp system$(PPUEXT)
$(COMPILER) $(INC)/ctypes.pp $(REDIR)
+ $(EXECPPAS)
diff --git a/rtl/msdos/Makefile.fpc b/rtl/msdos/Makefile.fpc
index 98dab390bd..46a4b453be 100644
--- a/rtl/msdos/Makefile.fpc
+++ b/rtl/msdos/Makefile.fpc
@@ -4,21 +4,21 @@
[package]
main=rtl
[target]
-loaders=prt0s prt0t prt0m # exceptn fpu
+loaders=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
units=system uuchar objpas strings dos heaptrc lineinfo sysconst sysutils \
math macpas iso7185 rtlconst typinfo types \
- strutils getopts fgl classes \
+ getopts fgl classes \
msmouse ports \
- printer charset cpall ctypes
+ charset cpall ctypes
# cmem
# initc profile dxetype dxeload emu387 \
# cpu mmx lnfodwrf \
-# video mouse vesamode \
-# rsts=math varutils typinfo classes variants dateutil sysconst
+# vesamode \
+# rsts=math typinfo classes dateutil sysconst
implicitunits=exeinfo \
cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 \
cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
-# cp932 cp936 cp949 cp950
+
[require]
nortl=y
[install]
@@ -65,31 +65,42 @@ SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
#
# Loaders
#
-prt0s$(OEXT) : prt0s.asm prt0stm.asm
+prt0s$(OEXT) : prt0s.asm prt0comn.asm
$(NASM) -f obj -o $(UNITTARGETDIRPREFIX)prt0s$(OEXT) prt0s.asm
-prt0t$(OEXT) : prt0t.asm prt0stm.asm
+prt0t$(OEXT) : prt0t.asm prt0comn.asm
$(NASM) -f obj -o $(UNITTARGETDIRPREFIX)prt0t$(OEXT) prt0t.asm
-prt0m$(OEXT) : prt0m.asm prt0stm.asm
+prt0m$(OEXT) : prt0m.asm prt0comn.asm
$(NASM) -f obj -o $(UNITTARGETDIRPREFIX)prt0m$(OEXT) prt0m.asm
+prt0c$(OEXT) : prt0c.asm prt0comn.asm
+ $(NASM) -f obj -o $(UNITTARGETDIRPREFIX)prt0c$(OEXT) prt0c.asm
+prt0l$(OEXT) : prt0l.asm prt0comn.asm
+ $(NASM) -f obj -o $(UNITTARGETDIRPREFIX)prt0l$(OEXT) prt0l.asm
+prt0h$(OEXT) : prt0h.asm prt0comn.asm
+ $(NASM) -f obj -o $(UNITTARGETDIRPREFIX)prt0h$(OEXT) prt0h.asm
#
# System Units (System, Objpas, Strings)
#
system$(PPUEXT) : system.pp $(SYSDEPS)
$(COMPILER) -Us -Sg system.pp
+ $(EXECPPAS)
uuchar$(PPUEXT): $(SYSTEMUNIT)$(PPUEXT) $(INC)/uuchar.pp
$(COMPILER) $(INC)/uuchar.pp
+ $(EXECPPAS)
objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc system$(PPUEXT)
$(COMPILER) -Fi$(OBJPASDIR) $(OBJPASDIR)/objpas.pp
+ $(EXECPPAS)
strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc \
$(PROCINC)/strings.inc $(PROCINC)/stringss.inc \
system$(PPUEXT)
$(COMPILER) $(INC)/strings.pp
+ $(EXECPPAS)
iso7185$(PPUEXT) : $(INC)/iso7185.pp system$(PPUEXT)
$(COMPILER) $(INC)/iso7185.pp
+ $(EXECPPAS)
#
# System Dependent Units
#
@@ -103,21 +114,14 @@ emu387$(PPUEXT) : emu387.pp fpu$(OEXT) strings$(PPUEXT) dxeload$(PPUEXT) \
ports$(PPUEXT) : ports.pp objpas$(PPUEXT) system$(PPUEXT)
$(COMPILER) ports.pp
+ $(EXECPPAS)
#
# TP7 Compatible RTL Units
#
dos$(PPUEXT) : dos.pp $(INC)/filerec.inc $(INC)/textrec.inc \
strings$(PPUEXT) system$(PPUEXT)
$(COMPILER) dos.pp
-
-crt$(PPUEXT) : crt.pp $(INC)/textrec.inc dos$(PPUEXT) system$(PPUEXT)
- $(COMPILER) crt.pp
-
-objects$(PPUEXT) : $(INC)/objects.pp system$(PPUEXT)
- $(COMPILER) $(INC)/objects.pp
-
-printer$(PPUEXT) : printer.pp system$(PPUEXT)
- $(COMPILER) printer.pp
+ $(EXECPPAS)
#
# Delphi Compatible Units
@@ -125,99 +129,99 @@ printer$(PPUEXT) : printer.pp system$(PPUEXT)
sysutils$(PPUEXT) : sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
objpas$(PPUEXT) dos$(PPUEXT) sysconst$(PPUEXT)
$(COMPILER) -Fi$(OBJPASDIR)/sysutils sysutils.pp
+ $(EXECPPAS)
classes$(PPUEXT) : classes.pp $(wildcard $(OBJPASDIR)/classes/*.inc) \
sysutils$(PPUEXT) typinfo$(PPUEXT) rtlconst$(PPUEXT) types$(PPUEXT) fgl$(PPUEXT)
$(COMPILER) -Fi$(OBJPASDIR)/classes classes.pp
+ $(EXECPPAS)
fgl$(PPUEXT) : $(OBJPASDIR)/fgl.pp objpas$(PPUEXT) types$(PPUEXT) system$(PPUEXT) sysutils$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/fgl.pp
+ $(EXECPPAS)
math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/math.pp
+ $(EXECPPAS)
typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT) rtlconst$(PPUEXT)
$(COMPILER) -Sg -Fi$(OBJPASDIR) $(OBJPASDIR)/typinfo.pp
-
-varutils$(PPUEXT) : $(OBJPASDIR)/cvarutil.inc $(OBJPASDIR)/varutils.inc \
- $(OBJPASDIR)/varutilh.inc varutils.pp sysutils$(PPUEXT)
- $(COMPILER) -I$(OBJPASDIR) varutils.pp
-
-variants$(PPUEXT) : $(INC)/variants.pp varutils$(PPUEXT) sysutils$(PPUEXT) sysconst$(PPUEXT) typinfo$(PPUEXT) rtlconst$(PPUEXT)
- $(COMPILER) -Fi$(INC) $(INC)/variants.pp
-
-fmtbcd$(PPUEXT) : $(OBJPASDIR)/fmtbcd.pp objpas$(PPUEXT) sysutils$(PPUEXT) variants$(PPUEXT) classes$(PPUEXT) system$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/fmtbcd.pp
+ $(EXECPPAS)
types$(PPUEXT) : $(OBJPASDIR)/types.pp objpas$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/types.pp
+ $(EXECPPAS)
rtlconst$(PPUEXT) : $(OBJPASDIR)/rtlconst.pp
$(COMPILER) -Fi$(OBJPASDIR) $(OBJPASDIR)/rtlconst.pp
+ $(EXECPPAS)
sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/sysconst.pp
+ $(EXECPPAS)
-dateutil$(PPUEXT) : $(OBJPASDIR)/dateutil.pp
- $(COMPILER) -Fi$(OBJPASDIR) $(OBJPASDIR)/dateutil.pp
-
-convutil$(PPUEXT) : $(OBJPASDIR)/convutil.pp
- $(COMPILER) -Fi$(OBJPASDIR) $(OBJPASDIR)/convutil.pp
-
-strutils$(PPUEXT) : $(OBJPASDIR)/strutils.pp
- $(COMPILER) $(OBJPASDIR)/strutils.pp
-
-stdconvs$(PPUEXT) : $(OBJPASDIR)/stdconvs.pp objpas$(PPUEXT) system$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/stdconvs.pp
#
# Mac Pascal Model
#
macpas$(PPUEXT) : $(INC)/macpas.pp objpas$(PPUEXT) math$(PPUEXT)
$(COMPILER) $(INC)/macpas.pp $(REDIR)
+ $(EXECPPAS)
#
# Other system-independent RTL Units
#
cpu$(PPUEXT) : $(PROCINC)/cpu.pp system$(PPUEXT)
$(COMPILER) (PROCINC)/cpu.pp $(REDIR)
+ $(EXECPPAS)
mmx$(PPUEXT) : $(PROCINC)/mmx.pp cpu$(PPUEXT) system$(PPUEXT)
$(COMPILER) (PROCINC)/mmx.pp $(REDIR)
+ $(EXECPPAS)
getopts$(PPUEXT) : $(INC)/getopts.pp system$(PPUEXT)
$(COMPILER) $(INC)/getopts.pp $(REDIR)
+ $(EXECPPAS)
heaptrc$(PPUEXT) : $(INC)/heaptrc.pp system$(PPUEXT)
$(COMPILER) -Sg $(INC)/heaptrc.pp
+ $(EXECPPAS)
lineinfo$(PPUEXT) : $(INC)/lineinfo.pp system$(PPUEXT)
$(COMPILER) $(INC)/lineinfo.pp
+ $(EXECPPAS)
lnfodwrf$(PPUEXT) : $(INC)/lnfodwrf.pp system$(PPUEXT)
$(COMPILER) $(INC)/lnfodwrf.pp
+ $(EXECPPAS)
charset$(PPUEXT) : $(INC)/charset.pp system$(PPUEXT)
$(COMPILER) $(INC)/charset.pp
+ $(EXECPPAS)
cpall$(PPUEXT): $(RTL)/charmaps/cpall.pas system$(PPUEXT) charset$(PPUEXT)
$(COMPILER) -Fu$(INC) -Fi$(RTL)/charmaps $(RTL)/charmaps/cpall.pas
+ $(EXECPPAS)
matrix$(PPUEXT) : $(INC)/matrix.pp system$(PPUEXT)
$(COMPILER) $(INC)/matrix.pp
+ $(EXECPPAS)
ucomplex$(PPUEXT) : $(INC)/ucomplex.pp math$(PPUEXT) system$(PPUEXT)
$(COMPILER) $(INC)/ucomplex.pp $(REDIR)
+ $(EXECPPAS)
#
# Other system-dependent RTL Units
#
msmouse$(PPUEXT) : msmouse.pp system$(PPUEXT)
$(COMPILER) msmouse.pp $(REDIR)
+ $(EXECPPAS)
callspec$(PPUEXT) : $(INC)/callspec.pp system$(PPUEXT)
$(COMPILER) $(INC)/callspec.pp $(REDIR)
+ $(EXECPPAS)
ctypes$(PPUEXT) : $(INC)/ctypes.pp system$(PPUEXT)
$(COMPILER) $(INC)/ctypes.pp $(REDIR)
+ $(EXECPPAS)
diff --git a/rtl/msdos/dos.pp b/rtl/msdos/dos.pp
index 1cb8d928e9..16a6bd7561 100644
--- a/rtl/msdos/dos.pp
+++ b/rtl/msdos/dos.pp
@@ -14,7 +14,6 @@
**********************************************************************}
{$inline on}
-{$asmmode intel}
unit dos;
@@ -432,18 +431,15 @@ var
sectreq : TCDSectSizeReq;
sizereq : TCDVolSizeReq;
i : integer;
- status,byteswritten : word;
drnum : byte;
begin
DiskData_CDROM:=false;
- exit;
- { TODO: implement }
-(* drnum:=drive-1; //for MSCDEX, 0 = a, 1 = b etc, unlike int21/36
+ drnum:=drive-1; //for MSCDEX, 0 = a, 1 = b etc, unlike int21/36
{ Is this a CDROM drive? }
dosregs.ax:=$150b;
dosregs.cx:=drnum;
- realintr($2f,dosregs);
+ intr($2f,dosregs);
if (dosregs.bx<>$ADAD) or (dosregs.ax=0) then
exit; // no, it isn't
@@ -451,8 +447,8 @@ var
FillByte(req,sizeof(req),0);
req.length:=sizeof(req);
req.command:=IOCTL_INPUT;
- req.transf_ofs:=tb_offset+sizeof(req); //CDROM control block will follow
- req.transf_seg:=tb_segment; //the request header
+ req.transf_ofs:=Ofs(sectreq);
+ req.transf_seg:=Seg(sectreq);
req.numbytes:=sizeof(sectreq);
{ We're asking the sector size }
@@ -463,23 +459,23 @@ var
for i:=1 to 2 do
begin
{ Send the request to the cdrom driver }
- dosmemput(tb_segment,tb_offset,req,sizeof(req));
- dosmemput(tb_segment,tb_offset+sizeof(req),sectreq,sizeof(sectreq));
dosregs.ax:=$1510;
dosregs.cx:=drnum;
- dosregs.es:=tb_segment;
- dosregs.bx:=tb_offset;
- realintr($2f,dosregs);
- dosmemget(tb_segment,tb_offset+3,status,2);
+ dosregs.es:=Seg(req);
+ dosregs.bx:=Ofs(req);
+ intr($2f,dosregs);
{ status = $800F means "disk changed". Try once more. }
- if (status and $800F) <> $800F then break;
+ if (req.status and $800F) <> $800F then break;
end;
- dosmemget(tb_segment,tb_offset+$12,byteswritten,2);
- if (status<>$0100) or (byteswritten<>sizeof(sectreq)) then
+ if (req.status<>$0100) or (req.numbytes<>sizeof(sectreq)) then
exit; //An error occurred
- dosmemget(tb_segment,tb_offset+sizeof(req),sectreq,sizeof(sectreq));
{ Update the request header for the next request }
+ FillByte(req,sizeof(req),0);
+ req.length:=sizeof(req);
+ req.command:=IOCTL_INPUT;
+ req.transf_ofs:=Ofs(sizereq);
+ req.transf_seg:=Seg(sizereq);
req.numbytes:=sizeof(sizereq);
{ We're asking the volume size (in blocks) }
@@ -487,22 +483,18 @@ var
sizereq.size:=0;
{ Send the request to the cdrom driver }
- dosmemput(tb_segment,tb_offset,req,sizeof(req));
- dosmemput(tb_segment,tb_offset+sizeof(req),sizereq,sizeof(sizereq));
dosregs.ax:=$1510;
dosregs.cx:=drnum;
- dosregs.es:=tb_segment;
- dosregs.bx:=tb_offset;
- realintr($2f,dosregs);
- dosmemget(tb_segment,tb_offset,req,sizeof(req));
+ dosregs.es:=Seg(req);
+ dosregs.bx:=Ofs(req);
+ intr($2f,dosregs);
if (req.status<>$0100) or (req.numbytes<>sizeof(sizereq)) then
exit; //An error occurred
- dosmemget(tb_segment,tb_offset+sizeof(req)+1,sizereq.size,4);
blocksize:=sectreq.secsize;
freeblocks:=0; //always 0 for a cdrom
totblocks:=sizereq.size;
- DiskData_CDROM:=true;*)
+ DiskData_CDROM:=true;
end;
begin
@@ -560,7 +552,7 @@ type
procedure LFNSearchRec2Dos(const w:LFNSearchRec;hdl:longint;var d:Searchrec;from_findfirst : boolean);
var
- Len : longint;
+ Len : integer;
begin
With w do
begin
@@ -591,7 +583,6 @@ var
procedure LFNFindFirst(path:pchar;attr:longint;var s:searchrec);
var
- i : longint;
w : LFNSearchRec;
begin
{ allow slash as backslash }
@@ -675,7 +666,7 @@ end;
procedure dossearchrec2searchrec(var f : searchrec);
var
- len : longint;
+ len : integer;
begin
{ Check is necessary!! OS/2's VDM doesn't clear the name with #0 if the }
{ file doesn't exist! (JM) }
@@ -753,21 +744,18 @@ begin
end;
-type swap_proc = procedure;
-
+procedure SwapIntVec(IntNo: Byte; var Vector: FarPointer);
var
- _swap_in : swap_proc;external name '_swap_in';
- _swap_out : swap_proc;external name '_swap_out';
- _exception_exit : pointer;external name '_exception_exit';
- _v2prt0_exceptions_on : longbool;external name '_v2prt0_exceptions_on';
+ tmpvec: FarPointer;
+begin
+ GetIntVec(IntNo, tmpvec);
+ SetIntVec(IntNo, Vector);
+ Vector := tmpvec;
+end;
-procedure swapvectors;
+procedure SwapVectors;
begin
- if _exception_exit<>nil then
- if _v2prt0_exceptions_on then
- _swap_out()
- else
- _swap_in();
+ SwapIntVec(0, SaveInt00);
end;
@@ -778,7 +766,7 @@ end;
Function FSearch(path: pathstr; dirlist: string): pathstr;
var
- i,p1 : longint;
+ p1 : integer;
s : searchrec;
newdir : pathstr;
begin
@@ -886,7 +874,7 @@ begin
dosregs.ax:=$5700;
msdos(dosregs);
loaddoserror;
- time:=(dosregs.dx shl 16)+dosregs.cx;
+ time:=(longint(dosregs.dx) shl 16)+dosregs.cx;
end;
@@ -1013,7 +1001,7 @@ end;
Function GetEnv(envvar: string): string;
var
hs : string;
- eqpos : longint;
+ eqpos : integer;
I : integer;
begin
envvar:=upcase(envvar);
@@ -1040,10 +1028,22 @@ asm
mov ah, 35h
int 21h
xchg ax, bx
+{$if defined(FPC_MM_TINY) or defined(FPC_MM_SMALL) or defined(FPC_MM_MEDIUM)}
mov bx, vector
mov [bx], ax
mov ax, es
mov [bx + 2], ax
+{$else}
+ {$ifdef FPC_ENABLED_CLD}
+ cld
+ {$endif FPC_ENABLED_CLD}
+ push es
+ pop bx
+ les di, vector
+ stosw
+ xchg ax, bx
+ stosw
+{$endif}
end;
procedure SetIntVec(intno: Byte; vector: farpointer); assembler;
diff --git a/rtl/msdos/msmouse.pp b/rtl/msdos/msmouse.pp
index 2a4c7fbd10..53a069e3be 100644
--- a/rtl/msdos/msmouse.pp
+++ b/rtl/msdos/msmouse.pp
@@ -102,7 +102,6 @@ Var
Implementation
-{$asmmode INTEL}
Function InitMouse: Boolean;
begin
@@ -153,6 +152,7 @@ begin
push bp
int $33
pop bp
+{$if defined(FPC_MM_TINY) or defined(FPC_MM_SMALL) or defined(FPC_MM_MEDIUM)}
mov di, x
mov [di], cx
mov word [di + 2], 0
@@ -162,6 +162,19 @@ begin
mov di, buttons
mov [di], bx
mov word [di + 2], 0
+{$else}
+ mov ax, ds
+ lds di, x
+ mov [di], cx
+ mov word [di + 2], 0
+ lds di, y
+ mov [di], dx
+ mov word [di + 2], 0
+ lds di, buttons
+ mov [di], bx
+ mov word [di + 2], 0
+ mov ds, ax
+{$endif}
end;
end;
@@ -235,12 +248,23 @@ Begin
int $33
pop bp
mov @Result, bx
+{$if defined(FPC_MM_TINY) or defined(FPC_MM_SMALL) or defined(FPC_MM_MEDIUM)}
mov di, x
mov [di], cx
mov word [di + 2], 0
mov di, y
mov [di], dx
mov word [di + 2], 0
+{$else}
+ mov si, ds
+ lds di, x
+ mov [di], cx
+ mov word [di + 2], 0
+ lds di, y
+ mov [di], dx
+ mov word [di + 2], 0
+ mov ds, si
+{$endif}
end;
end;
@@ -256,12 +280,23 @@ begin
int $33
pop bp
mov @Result, bx
+{$if defined(FPC_MM_TINY) or defined(FPC_MM_SMALL) or defined(FPC_MM_MEDIUM)}
mov di, x
mov [di], cx
mov word [di + 2], 0
mov di, y
mov [di], dx
mov word [di + 2], 0
+{$else}
+ mov si, ds
+ lds di, x
+ mov [di], cx
+ mov word [di + 2], 0
+ lds di, y
+ mov [di], dx
+ mov word [di + 2], 0
+ mov ds, si
+{$endif}
end;
end;
diff --git a/rtl/msdos/ports.pp b/rtl/msdos/ports.pp
index 587fee8f6f..55bfacbd29 100644
--- a/rtl/msdos/ports.pp
+++ b/rtl/msdos/ports.pp
@@ -50,8 +50,6 @@ var
implementation
-{$asmmode INTEL}
-
{ to give easy port access like tp with port[] }
procedure tport.writeport(p : word;data : byte);assembler;
diff --git a/rtl/msdos/prt0c.asm b/rtl/msdos/prt0c.asm
new file mode 100644
index 0000000000..4191e64762
--- /dev/null
+++ b/rtl/msdos/prt0c.asm
@@ -0,0 +1,3 @@
+; nasm -f obj -o prt0c.o prt0c.asm
+%define __COMPACT__
+%include "prt0comn.asm"
diff --git a/rtl/msdos/prt0stm.asm b/rtl/msdos/prt0comn.asm
index 4a639cdceb..2b5b067998 100644
--- a/rtl/msdos/prt0stm.asm
+++ b/rtl/msdos/prt0comn.asm
@@ -1,9 +1,25 @@
-; common startup code for the SMALL, TINY and MEDIUM memory models
+; common startup code for all the memory models
-%ifdef __MEDIUM__
+%ifdef __TINY__
+ %define __NEAR_CODE__
+ %define __NEAR_DATA__
+%elifdef __SMALL__
+ %define __NEAR_CODE__
+ %define __NEAR_DATA__
+%elifdef __MEDIUM__
%define __FAR_CODE__
-%else
+ %define __NEAR_DATA__
+%elifdef __COMPACT__
%define __NEAR_CODE__
+ %define __FAR_DATA__
+%elifdef __LARGE__
+ %define __FAR_CODE__
+ %define __FAR_DATA__
+%elifdef __HUGE__
+ %define __FAR_CODE__
+ %define __FAR_DATA__
+%else
+ %fatal "Memory model not defined."
%endif
%ifdef __FAR_CODE__
@@ -12,6 +28,12 @@
extra_param_offset equ 0
%endif
+%ifdef __FAR_DATA__
+ extra_data_offset equ 2
+%else
+ extra_data_offset equ 0
+%endif
+
cpu 8086
segment text use16 class=code
@@ -42,10 +64,12 @@
%ifdef __TINY__
mov bx, cs
%else
- ; init the stack
mov bx, dgroup
+ %ifdef __NEAR_DATA__
+ ; init the stack
mov ss, bx
mov sp, stacktop
+ %endif
%endif
; zero fill the BSS section
@@ -104,6 +128,11 @@
cpu_detect_done:
mov [__Test8086], bl
+%ifdef __NEAR_DATA__
+; ****************************************************************************
+; ** near data memory layout setup **
+; ****************************************************************************
+
; allocate max heap
; TODO: also support user specified heap size
; try to resize our main DOS memory block until the end of the data segment
@@ -161,6 +190,30 @@ skip_mem_realloc:
dec bx
mov word [__nearheap_end], bx
+; ****************************************************************************
+; ** near data setup done **
+; ****************************************************************************
+%endif
+
+
+%ifdef __FAR_DATA__
+ mov word [__stktop], sp
+ mov word [__stkbottom], 0
+ mov ax, ss
+ mov word [__stkbottom + 2], ax
+ mov word [__stktop + 2], ax
+
+ mov dx, sp
+ add dx, 15
+ mov cl, 4
+ shr dx, cl
+ add ax, dx
+ mov word [__nearheap_start], 0
+ mov word [__nearheap_end], 0FFF0h
+ mov word [__nearheap_start + 2], ax
+ mov word [__nearheap_end + 2], ax
+%endif
+
%ifdef __FAR_CODE__
jmp far PASCALMAIN
%else
@@ -298,7 +351,13 @@ FPC_MSDOS:
pop bx
%endif
pop cx
+%ifdef __FAR_DATA__
+ pop si
+%endif
push ax
+%ifdef __FAR_DATA__
+ push si
+%endif
push cx
%ifdef __FAR_CODE__
push bx
@@ -308,10 +367,14 @@ FPC_MSDOS:
FPC_INTR:
push bp
mov bp, sp
- mov al, byte [bp + 6 + extra_param_offset]
+ mov al, byte [bp + 6 + extra_param_offset + extra_data_offset]
mov byte [cs:int_number], al
mov si, [bp + 4 + extra_param_offset]
push ds
+%ifdef __FAR_DATA__
+ mov ax, [bp + 6 + extra_param_offset]
+ mov ds, ax
+%endif
mov ax, word [si + 16]
mov es, ax
mov ax, word [si + 14] ; ds
@@ -334,7 +397,11 @@ int_number:
push si
push bp
mov bp, sp
+%ifdef __FAR_DATA__
+ mov si, [bp + 16 + extra_param_offset]
+%else
mov si, word [bp + 8]
+%endif
mov ds, si
mov si, word [bp + 14 + extra_param_offset]
mov word [si], ax
@@ -402,9 +469,15 @@ __nullarea:
segment _AFTERNULL align=2 class=BEGDATA
dw 0
+ %ifdef __NEAR_DATA__
segment stack stack class=stack
resb 256
stacktop:
+ %else
+ ; todo: make FPC create the stack segment in far data models
+ segment stack stack class=stack align=16
+ resb 16384
+ %endif
%endif
%ifdef __TINY__
diff --git a/rtl/msdos/prt0h.asm b/rtl/msdos/prt0h.asm
new file mode 100644
index 0000000000..f97c5b7dad
--- /dev/null
+++ b/rtl/msdos/prt0h.asm
@@ -0,0 +1,3 @@
+; nasm -f obj -o prt0h.o prt0h.asm
+%define __HUGE__
+%include "prt0comn.asm"
diff --git a/rtl/msdos/prt0l.asm b/rtl/msdos/prt0l.asm
new file mode 100644
index 0000000000..44e85c8eb8
--- /dev/null
+++ b/rtl/msdos/prt0l.asm
@@ -0,0 +1,3 @@
+; nasm -f obj -o prt0l.o prt0l.asm
+%define __LARGE__
+%include "prt0comn.asm"
diff --git a/rtl/msdos/prt0m.asm b/rtl/msdos/prt0m.asm
index 29a35583fe..2345559cec 100644
--- a/rtl/msdos/prt0m.asm
+++ b/rtl/msdos/prt0m.asm
@@ -1,3 +1,3 @@
; nasm -f obj -o prt0m.o prt0m.asm
%define __MEDIUM__
-%include "prt0stm.asm"
+%include "prt0comn.asm"
diff --git a/rtl/msdos/prt0s.asm b/rtl/msdos/prt0s.asm
index 7baeff8ee4..c7488ee863 100644
--- a/rtl/msdos/prt0s.asm
+++ b/rtl/msdos/prt0s.asm
@@ -1,3 +1,3 @@
; nasm -f obj -o prt0s.o prt0s.asm
%define __SMALL__
-%include "prt0stm.asm"
+%include "prt0comn.asm"
diff --git a/rtl/msdos/prt0t.asm b/rtl/msdos/prt0t.asm
index 46bcf0c944..7f76362978 100644
--- a/rtl/msdos/prt0t.asm
+++ b/rtl/msdos/prt0t.asm
@@ -1,3 +1,3 @@
; nasm -f obj -o prt0t.o prt0t.asm
%define __TINY__
-%include "prt0stm.asm"
+%include "prt0comn.asm"
diff --git a/rtl/msdos/sysdir.inc b/rtl/msdos/sysdir.inc
index eb8c941840..c58de85680 100644
--- a/rtl/msdos/sysdir.inc
+++ b/rtl/msdos/sysdir.inc
@@ -21,7 +21,7 @@
procedure DosDir(func:byte;s: rawbytestring);
var
regs : Registers;
- len : Longint;
+ len : Integer;
begin
DoDirSeparators(s);
{ True DOS does not like backslashes at end
@@ -60,7 +60,7 @@ end;
Procedure do_ChDir(const s: rawbytestring);
var
regs : Registers;
- len : Longint;
+ len : Integer;
begin
len:=Length(s);
{ First handle Drive changes }
@@ -88,7 +88,7 @@ end;
procedure do_GetDir (DriveNr: byte; var Dir: RawByteString);
var
temp : array[0..260] of char;
- i : longint;
+ i : integer;
regs : Registers;
begin
regs.DX:=drivenr;
diff --git a/rtl/msdos/sysfile.inc b/rtl/msdos/sysfile.inc
index 7758881a98..4b78e71d43 100644
--- a/rtl/msdos/sysfile.inc
+++ b/rtl/msdos/sysfile.inc
@@ -158,7 +158,7 @@ begin
do_filepos:=0;
end
else
- do_filepos:=(regs.DX shl 16) + regs.AX;
+ do_filepos:=(longint(regs.DX) shl 16) + regs.AX;
end;
@@ -192,7 +192,7 @@ begin
do_seekend:=0;
end
else
- do_seekend:=(regs.DX shl 16) + regs.AX;
+ do_seekend:=(longint(regs.DX) shl 16) + regs.AX;
end;
@@ -250,7 +250,7 @@ procedure do_open(var f;p:pchar;flags:longint; pchangeable: boolean);
}
var
regs : Registers;
- action : longint;
+ action : word;
oldp : pchar;
begin
{ close first if opened }
diff --git a/rtl/msdos/system.pp b/rtl/msdos/system.pp
index cc34aeb588..5b4e7a9960 100644
--- a/rtl/msdos/system.pp
+++ b/rtl/msdos/system.pp
@@ -1,7 +1,5 @@
unit system;
-{$ASMMODE intel}
-
interface
{$DEFINE FPC_NO_DEFAULT_HEAP}
@@ -49,6 +47,9 @@ const
segA000: Word = $A000;
segB000: Word = $B000;
segB800: Word = $B800;
+{ The value that needs to be added to the segment to move the pointer by
+ 64K bytes (BP7 compatibility) }
+ SelectorInc: Word = $1000;
var
{ Mem[] support }
@@ -74,11 +75,11 @@ const
LFNSupport = false;
{$endif RTLLITE}
-procedure DebugWrite(const S: string);
-procedure DebugWriteLn(const S: string);
-
implementation
+procedure DebugWrite(const S: string); forward;
+procedure DebugWriteLn(const S: string); forward;
+
const
fCarry = 1;
@@ -90,6 +91,11 @@ const
{$else FPC_X86_CODE_FAR}
extra_param_offset = 0;
{$endif FPC_X86_CODE_FAR}
+{$if defined(FPC_X86_DATA_FAR) or defined(FPC_X86_DATA_HUGE)}
+ extra_data_offset = 2;
+{$else}
+ extra_data_offset = 0;
+{$endif}
type
PFarByte = ^Byte;far;
@@ -125,10 +131,19 @@ function CheckNullArea: Boolean; external name 'FPC_CHECK_NULLAREA';
procedure DebugWrite(const S: string);
begin
asm
+{$if defined(FPC_X86_DATA_FAR) or defined(FPC_X86_DATA_HUGE)}
+ push ds
+ lds si, S
+{$else}
mov si, S
+{$endif}
+{$ifdef FPC_ENABLED_CLD}
+ cld
+{$endif FPC_ENABLED_CLD}
lodsb
mov cl, al
xor ch, ch
+ jcxz @@zero_length
mov ah, 2
@@1:
@@ -136,6 +151,10 @@ begin
mov dl, al
int 21h
loop @@1
+@@zero_length:
+{$if defined(FPC_X86_DATA_FAR) or defined(FPC_X86_DATA_HUGE)}
+ pop ds
+{$endif}
end ['ax','bx','cx','dx','si','di'];
end;
@@ -197,16 +216,9 @@ var
len, I: Integer;
begin
len := PFarByte(Ptr(dos_psp, $80))^;
-{$ifdef CG_BUG}
- { doesn't work due to a code generator bug }
SetLength(GetCommandLine, len);
for I := 1 to len do
GetCommandLine[I] := PFarChar(Ptr(dos_psp, $80 + I))^;
-{$else CG_BUG}
- GetCommandLine := '';
- for I := 1 to len do
- GetCommandLine := GetCommandLine + PFarChar(Ptr(dos_psp, $80 + I))^;
-{$endif CG_BUG}
end;
@@ -340,7 +352,6 @@ begin
end;
begin
- StackTop := __stktop;
StackBottom := __stkbottom;
StackLength := __stktop - __stkbottom;
InstallInterruptHandlers;
diff --git a/rtl/nativent/Makefile b/rtl/nativent/Makefile
index 79dfb6ada6..3561cacd7b 100644
--- a/rtl/nativent/Makefile
+++ b/rtl/nativent/Makefile
@@ -1,8 +1,8 @@
#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-04-01 rev 27428]
#
default: all
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos
BSDs = freebsd netbsd openbsd darwin
UNIXs = linux $(BSDs) solaris qnx haiku aix
LIMIT83fs = go32v2 os2 emx watcom msdos
@@ -185,6 +185,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t
endif
override FPCOPT+=-Cp$(SUBARCH)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+ifeq ($(SUBARCH),)
+$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined)
+endif
+override FPCOPT+=-Cp$(SUBARCH)
+endif
ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
TARGETSUFFIX=$(OS_TARGET)
SOURCESUFFIX=$(OS_SOURCE)
@@ -554,6 +560,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl
endif
@@ -567,448 +576,454 @@ ifeq ($(FULL_TARGET),i8086-msdos)
override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl
endif
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types strutils typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes strings rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst
+override TARGET_RSTS+=math typinfo classes sysconst
endif
override INSTALL_FPCPACKAGE=y
ifeq ($(FULL_TARGET),i386-linux)
@@ -1221,6 +1236,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(DDKINC) $(NDKINC)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(DDKINC) $(NDKINC)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(DDKINC) $(NDKINC)
endif
@@ -1443,6 +1461,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
endif
@@ -2236,17 +2257,23 @@ ifdef ACROSSCOMPILE
override FPCOPT+=$(CROSSOPT)
endif
override COMPILER:=$(strip $(FPC) $(FPCOPT))
-ifeq (,$(findstring -s ,$(COMPILER)))
+ifneq (,$(findstring -sh ,$(COMPILER)))
+UseEXECPPAS=1
+endif
+ifneq (,$(findstring -s ,$(COMPILER)))
+ifeq ($(FULL_SOURCE),$(FULL_TARGET))
+UseEXECPPAS=1
+endif
+endif
+ifneq ($(UseEXECPPAS),1)
EXECPPAS=
else
-ifeq ($(FULL_SOURCE),$(FULL_TARGET))
ifdef RUNBATCH
EXECPPAS:=@$(RUNBATCH) $(PPAS)
else
EXECPPAS:=@$(PPAS)
endif
endif
-endif
.PHONY: fpc_units
ifneq ($(TARGET_UNITS)$(TARGET_IMPLICITUNITS),)
override ALLTARGET+=fpc_units
diff --git a/rtl/nativent/Makefile.fpc b/rtl/nativent/Makefile.fpc
index fc09c510d5..b2ac965236 100644
--- a/rtl/nativent/Makefile.fpc
+++ b/rtl/nativent/Makefile.fpc
@@ -13,19 +13,19 @@ implicitunits=ndk ndkutils ddk \
ctypes strings \
# heaptrc
# initc cmem dynlibs signals \
-# dos crt objects \
+# dos \
rtlconsts sysconst sysutils math types \
- strutils typinfo fgl classes \
+ typinfo fgl classes \
$(CPU_UNITS) charset getopts \
# sockets printer \
-# video mouse keyboard
+# keyboard
# sharemem exeinfo fpintres \
cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 \
- cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+ cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
# shared=$(DLLS)
-rsts=math varutils typinfo variants classes dateutils sysconst
+rsts=math typinfo classes sysconst
[require]
nortl=y
diff --git a/rtl/nds/Makefile b/rtl/nds/Makefile
index ad986cb988..08f1da4a12 100644
--- a/rtl/nds/Makefile
+++ b/rtl/nds/Makefile
@@ -1,8 +1,8 @@
#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-04-01 rev 27428]
#
default: all
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos
BSDs = freebsd netbsd openbsd darwin
UNIXs = linux $(BSDs) solaris qnx haiku aix
LIMIT83fs = go32v2 os2 emx watcom msdos
@@ -186,6 +186,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t
endif
override FPCOPT+=-Cp$(SUBARCH)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+ifeq ($(SUBARCH),)
+$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined)
+endif
+override FPCOPT+=-Cp$(SUBARCH)
+endif
ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
TARGETSUFFIX=$(OS_TARGET)
SOURCESUFFIX=$(OS_SOURCE)
@@ -335,226 +341,229 @@ endif
OBJPASDIR=$(RTL)/objpas
GRAPHDIR=$(INC)/graph
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings sysutils classes math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-linux)
override TARGET_LOADERS+=prt07 prt09 cprt07 cprt09
@@ -766,6 +775,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_LOADERS+=prt07 prt09 cprt07 cprt09
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_LOADERS+=prt07 prt09 cprt07 cprt09
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_LOADERS+=prt07 prt09 cprt07 cprt09
endif
@@ -989,6 +1001,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
endif
@@ -1211,6 +1226,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
endif
@@ -2004,17 +2022,23 @@ ifdef ACROSSCOMPILE
override FPCOPT+=$(CROSSOPT)
endif
override COMPILER:=$(strip $(FPC) $(FPCOPT))
-ifeq (,$(findstring -s ,$(COMPILER)))
+ifneq (,$(findstring -sh ,$(COMPILER)))
+UseEXECPPAS=1
+endif
+ifneq (,$(findstring -s ,$(COMPILER)))
+ifeq ($(FULL_SOURCE),$(FULL_TARGET))
+UseEXECPPAS=1
+endif
+endif
+ifneq ($(UseEXECPPAS),1)
EXECPPAS=
else
-ifeq ($(FULL_SOURCE),$(FULL_TARGET))
ifdef RUNBATCH
EXECPPAS:=@$(RUNBATCH) $(PPAS)
else
EXECPPAS:=@$(PPAS)
endif
endif
-endif
.PHONY: fpc_loaders
ifneq ($(TARGET_LOADERS),)
override ALLTARGET+=fpc_loaders
@@ -2428,7 +2452,6 @@ strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc \
$(SYSTEMUNIT)$(PPUEXT)
dos$(PPUEXT) : dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \
$(SYSTEMUNIT)$(PPUEXT)
-objects$(PPUEXT) : $(INC)/objects.pp dos$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
sysutils$(PPUEXT) : sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
objpas$(PPUEXT) dos$(PPUEXT) sysconst$(PPUEXT)
$(COMPILER) -Fi$(OBJPASDIR)/sysutils sysutils.pp
@@ -2440,11 +2463,6 @@ typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT)
$(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp $(REDIR)
math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/math.pp $(REDIR)
-varutils$(PPUEXT) : $(OBJPASDIR)/cvarutil.inc $(OBJPASDIR)/varutils.inc \
- $(OBJPASDIR)/varutilh.inc varutils.pp
- $(COMPILER) -I$(OBJPASDIR) varutils.pp $(REDIR)
-fmtbcd$(PPUEXT) : $(OBJPASDIR)/fmtbcd.pp objpas$(PPUEXT) sysutils$(PPUEXT) variants$(PPUEXT) classes$(PPUEXT) system$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/fmtbcd.pp
types$(PPUEXT) : $(OBJPASDIR/types.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/types.pp
rtlconsts$(PPUEXT) : $(OBJPASDIR)/rtlconsts.pp
@@ -2453,11 +2471,8 @@ sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUE
$(COMPILER) $(OBJPASDIR)/sysconst.pp
fgl$(PPUEXT): $(OBJPASDIR)/fgl.pp objpas$(PPUEXT) types$(PPUEXT) system$(PPUEXT) sysutils$(PPUEXT)
$(COMPILER) -Sg $(OBJPASDIR)/fgl.pp $(REDIR)
-dateutil$(PPUEXT) : $(OBJPASDIR)/dateutil.pp
- $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/dateutil.pp
macpas$(PPUEXT) : $(INC)/macpas.pp objpas$(PPUEXT) math$(PPUEXT)
$(COMPILER) $(INC)/macpas.pp $(REDIR)
-ucomplex$(PPUEXT): $(INC)/ucomplex.pp math$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
getopts$(PPUEXT) : $(INC)/getopts.pp $(SYSTEMUNIT)$(PPUEXT)
heaptrc$(PPUEXT) : $(INC)/heaptrc.pp $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) -Sg $(INC)/heaptrc.pp $(REDIR)
diff --git a/rtl/nds/Makefile.fpc b/rtl/nds/Makefile.fpc
index d985b22d4d..88dc62b539 100644
--- a/rtl/nds/Makefile.fpc
+++ b/rtl/nds/Makefile.fpc
@@ -19,7 +19,7 @@ units=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings \
#rsts=math rtlconsts varutils typinfo variants classes sysconst dateutil fpmkunit
#implicitunits=exeinfo \
implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 \
- cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+ cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
[require]
nortl=y
@@ -121,10 +121,6 @@ strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc \
dos$(PPUEXT) : dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \
$(SYSTEMUNIT)$(PPUEXT)
-#crt$(PPUEXT) : crt.pas $(INC)/textrec.inc $(SYSTEMUNIT)$(PPUEXT)
-
-objects$(PPUEXT) : $(INC)/objects.pp dos$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-
#printer$(PPUEXT) : printer.pas $(INC)/textrec.inc $(SYSTEMUNIT)$(PPUEXT)
#graph$(PPUEXT) : graph.pp
@@ -148,13 +144,6 @@ typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT)
math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/math.pp $(REDIR)
-varutils$(PPUEXT) : $(OBJPASDIR)/cvarutil.inc $(OBJPASDIR)/varutils.inc \
- $(OBJPASDIR)/varutilh.inc varutils.pp
- $(COMPILER) -I$(OBJPASDIR) varutils.pp $(REDIR)
-
-fmtbcd$(PPUEXT) : $(OBJPASDIR)/fmtbcd.pp objpas$(PPUEXT) sysutils$(PPUEXT) variants$(PPUEXT) classes$(PPUEXT) system$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/fmtbcd.pp
-
types$(PPUEXT) : $(OBJPASDIR/types.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/types.pp
@@ -167,9 +156,6 @@ sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUE
fgl$(PPUEXT): $(OBJPASDIR)/fgl.pp objpas$(PPUEXT) types$(PPUEXT) system$(PPUEXT) sysutils$(PPUEXT)
$(COMPILER) -Sg $(OBJPASDIR)/fgl.pp $(REDIR)
-dateutil$(PPUEXT) : $(OBJPASDIR)/dateutil.pp
- $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/dateutil.pp
-
#
# Mac Pascal Model
#
@@ -181,8 +167,6 @@ macpas$(PPUEXT) : $(INC)/macpas.pp objpas$(PPUEXT) math$(PPUEXT)
# Other system-independent RTL Units
#
-ucomplex$(PPUEXT): $(INC)/ucomplex.pp math$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-
getopts$(PPUEXT) : $(INC)/getopts.pp $(SYSTEMUNIT)$(PPUEXT)
heaptrc$(PPUEXT) : $(INC)/heaptrc.pp $(SYSTEMUNIT)$(PPUEXT)
diff --git a/rtl/nds/system.pp b/rtl/nds/system.pp
index dc3e27abf0..dfecec99fc 100644
--- a/rtl/nds/system.pp
+++ b/rtl/nds/system.pp
@@ -272,7 +272,7 @@ end;
begin
StackLength := CheckInitialStkLen(InitialStkLen);
- StackBottom := StackTop - StackLength;
+ StackBottom := Sptr - StackLength;
{ OS specific startup }
{ Set up signals handlers }
diff --git a/rtl/netbsd/Makefile b/rtl/netbsd/Makefile
index 8c81df6ae4..02deef73b5 100644
--- a/rtl/netbsd/Makefile
+++ b/rtl/netbsd/Makefile
@@ -1,8 +1,8 @@
#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-04-01 rev 27428]
#
default: all
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos
BSDs = freebsd netbsd openbsd darwin
UNIXs = linux $(BSDs) solaris qnx haiku aix
LIMIT83fs = go32v2 os2 emx watcom msdos
@@ -185,6 +185,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t
endif
override FPCOPT+=-Cp$(SUBARCH)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+ifeq ($(SUBARCH),)
+$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined)
+endif
+override FPCOPT+=-Cp$(SUBARCH)
+endif
ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
TARGETSUFFIX=$(OS_TARGET)
SOURCESUFFIX=$(OS_SOURCE)
@@ -350,448 +356,454 @@ ifeq ($(ARCH),i386)
CPU_UNITS=x86 ports cpu mmx
endif
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio printer sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo errors ipc terminfo bsd serial sysconst cthreads strutils dos cwstring fpintres clocale unixcp fpwidestring
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 strings syscall sysctl baseunix unixutil character unix rtlconsts initc cmem dl termio sysutils math typinfo types classes fgl dynlibs $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo errors bsd sysconst cthreads dos cwstring fpintres unixcp fpwidestring
endif
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-linux)
override TARGET_LOADERS+=prt0 cprt0 dllprt0
@@ -1003,6 +1015,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_LOADERS+=prt0 cprt0 dllprt0
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_LOADERS+=prt0 cprt0 dllprt0
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_LOADERS+=prt0 cprt0 dllprt0
endif
@@ -1225,6 +1240,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_RSTS+=math typinfo classes sysconst
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_RSTS+=math typinfo classes sysconst
endif
@@ -1448,6 +1466,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(BSDINC) $(BSDPROCINC) $(TARGETPROCINC)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(BSDINC) $(BSDPROCINC) $(TARGETPROCINC)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(BSDINC) $(BSDPROCINC) $(TARGETPROCINC)
endif
@@ -1670,6 +1691,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(BSDINC)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(BSDINC)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(BSDINC)
endif
@@ -2463,17 +2487,23 @@ ifdef ACROSSCOMPILE
override FPCOPT+=$(CROSSOPT)
endif
override COMPILER:=$(strip $(FPC) $(FPCOPT))
-ifeq (,$(findstring -s ,$(COMPILER)))
+ifneq (,$(findstring -sh ,$(COMPILER)))
+UseEXECPPAS=1
+endif
+ifneq (,$(findstring -s ,$(COMPILER)))
+ifeq ($(FULL_SOURCE),$(FULL_TARGET))
+UseEXECPPAS=1
+endif
+endif
+ifneq ($(UseEXECPPAS),1)
EXECPPAS=
else
-ifeq ($(FULL_SOURCE),$(FULL_TARGET))
ifdef RUNBATCH
EXECPPAS:=@$(RUNBATCH) $(PPAS)
else
EXECPPAS:=@$(PPAS)
endif
endif
-endif
.PHONY: fpc_loaders
ifneq ($(TARGET_LOADERS),)
override ALLTARGET+=fpc_loaders
@@ -2888,6 +2918,7 @@ baseunix$(PPUEXT) : errno.inc ptypes.inc $(UNIXINC)/ctypes.inc \
$(BSDINC)/bunxsysc.inc $(BSDPROCINC)/syscallh.inc sysnr.inc \
$(BSDINC)/ostypes.inc $(BSDINC)/osmacro.inc $(UNIXINC)/gensigset.inc \
$(UNIXINC)/genfuncs.inc $(SYSTEMUNIT)$(PPUEXT) sysctl$(PPUEXT)
+unixtype$(PPUEXT): $(UNIXINC)/unixtype.pp $(UNIXINC)/ctypes.inc ptypes.inc $(SYSTEMUNIT)$(PPUEXT)
unix$(PPUEXT) : $(UNIXINC)/unix.pp strings$(PPUEXT) $(INC)/textrec.inc $(INC)/filerec.inc \
syscalls.inc systypes.inc sysconst.inc $(UNIXINC)/timezone.inc \
unxsysc.inc baseunix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
@@ -2897,44 +2928,23 @@ unixcp$(PPUEXT) : $(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) ba
$(COMPILER) $(UNIXINC)/unixcp.pp
dos$(PPUEXT) : $(UNIXINC)/dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \
unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-crt$(PPUEXT) : $(UNIXINC)/crt.pp $(INC)/textrec.inc unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-objects$(PPUEXT) : $(INC)/objects.pp $(SYSTEMUNIT)$(PPUEXT)
-printer$(PPUEXT) : $(UNIXINC)/printer.pp $(INC)/textrec.inc unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
sysutils$(PPUEXT) : $(UNIXINC)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
objpas$(PPUEXT) unix$(PPUEXT) errors$(PPUEXT) sysconst$(PPUEXT)
$(COMPILER) -Fi$(OBJPASDIR)/sysutils $(UNIXINC)/sysutils.pp
-dateutils$(PPUEXT): $(OBJPASDIR)/dateutils.pp $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/dateutils.pp
rtlconsts$(PPUEXT) : $(OBJPASDIR)/rtlconsts.pp
- $(COMPILER): $(OBJPASDIR)/rtlconsts.pp
+ $(COMPILER) $(OBJPASDIR)/rtlconsts.pp
classes$(PPUEXT) : $(UNIXINC)/classes.pp $(wildcard $(OBJPASDIR)/classes/*.inc) \
sysutils$(PPUEXT) typinfo$(PPUEXT) rtlconsts$(PPUEXT) fgl$(PPUEXT)
$(COMPILER) -Fi$(OBJPASDIR)/classes $(UNIXINC)/classes.pp
fgl$(PPUEXT) : $(OBJPASDIR)/fgl.pp objpas$(PPUEXT) types$(PPUEXT) system$(PPUEXT) sysutils$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/fgl.pp
-strutils$(PPUEXT) : $(OBJPASDIR)/strutils.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/strutils.pp
-convutils$(PPUEXT) : $(OBJPASDIR)/convutils.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/convutils.pp
-stdconvs$(PPUEXT) : $(OBJPASDIR)/stdconvs.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/stdconvs.pp
typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT)
$(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp
math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/math.pp
-gettext$(PPUEXT): $(OBJPASDIR)/gettext.pp objpas$(PPUEXT) sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/gettext.pp
-varutils$(PPUEXT) : $(OBJPASDIR)/cvarutil.inc $(OBJPASDIR)/varutils.inc \
- $(OBJPASDIR)/varutilh.inc varutils.pp
- $(COMPILER) -I$(OBJPASDIR) $(UNIXINC)/varutils.pp
types$(PPUEXT) : $(OBJPASDIR/types.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/types.pp
-fmtbcd$(PPUEXT) : $(OBJPASDIR)/fmtbcd.pp objpas$(PPUEXT) sysutils$(PPUEXT) variants$(PPUEXT) classes$(PPUEXT) system$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/fmtbcd.pp
-character$(PPUEXT): sysutils$(PPUEXT) $(OBJPASDIR)/character.pas objpas$(PPUEXT) rtlconsts$(PPUEXT) buildcollations$(PPUEXT)
+character$(PPUEXT): sysutils$(PPUEXT) $(OBJPASDIR)/character.pas objpas$(PPUEXT) rtlconsts$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/character.pas
macpas$(PPUEXT) : $(INC)/macpas.pp objpas$(PPUEXT) math$(PPUEXT)
$(COMPILER) $(INC)/macpas.pp $(REDIR)
@@ -2952,16 +2962,10 @@ lnfodwrf$(PPUEXT) : $(INC)/lnfodwrf.pp $(SYSTEMUNIT)$(PPUEXT)
charset$(PPUEXT) : $(INC)/charset.pp $(SYSTEMUNIT)$(PPUEXT)
cpall$(PPUEXT): $(RTL)/charmaps/cpall.pas system$(PPUEXT) charset$(PPUEXT)
$(COMPILER) -Fu$(INC) -Fi$(RTL)/charmaps $(RTL)/charmaps/cpall.pas
-buildcollations$(PPUEXT): $(OBJPASDIR)/collations/buildcollations.pas system$(PPUEXT) objpas$(PPUEXT) sysutils$(PPUEXT)
- $(COMPILER) -Fu$(OBJPASDIR) -Fi$(OBJPASDIR)/collations -I$(OBJPASDIR)/collations $(OBJPASDIR)/collations/buildcollations.pas
-matrix$(PPUEXT) : $(INC)/matrix.pp $(SYSTEMUNIT)$(PPUEXT)
-ucomplex$(PPUEXT) : $(INC)/ucomplex.pp math$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
fpmkunit$(PPUEXT) : $(COMMON)/fpmkunit.pp classes$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
fpwidestring$(PPUEXT): $(OBJPASDIR)/fpwidestring.pp character$(PPUEXT) unixcp$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/fpwidestring.pp
errors$(PPUEXT) : $(UNIXINC)/errors.pp strings$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-ipc$(PPUEXT) : $(UNIXINC)/ipc.pp unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-terminfo$(PPUEXT) : terminfo.pp unix$(PPUEXT)
callspec$(PPUEXT) : $(INC)/callspec.pp $(SYSTEMUNIT)$(PPUEXT)
sysctl$(PPUEXT) : $(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) syscall$(PPUEXT)
syscall$(PPUEXT) : $(UNIXINC)/syscall.pp $(SYSTEMUNIT)$(PPUEXT)
diff --git a/rtl/netbsd/Makefile.fpc b/rtl/netbsd/Makefile.fpc
index 4931336dc2..a0988efe00 100644
--- a/rtl/netbsd/Makefile.fpc
+++ b/rtl/netbsd/Makefile.fpc
@@ -13,18 +13,16 @@ loaders=prt0 cprt0 dllprt0
units=$(SYSTEMUNIT) uuchar unixtype ctypes objpas macpas iso7185 \
strings syscall sysctl baseunix unixutil character \
unix rtlconsts initc cmem \
- dl termio printer \
+ dl termio \
sysutils math typinfo types classes fgl dynlibs \
- $(CPU_UNITS) charset cpall buildcollations getopts heaptrc lnfodwrf lineinfo \
- errors ipc terminfo bsd \
- serial \
- sysconst cthreads strutils dos cwstring \
- fpintres clocale unixcp fpwidestring
+ $(CPU_UNITS) charset cpall getopts heaptrc lnfodwrf lineinfo \
+ errors bsd \
+ sysconst cthreads dos cwstring \
+ fpintres unixcp fpwidestring
implicitunits=exeinfo \
cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 \
- cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 \
- unicodedata unicodeducet unicodenumtable \
- collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+ cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 \
+ unicodedata unicodenumtable
rsts=math typinfo classes sysconst
@@ -48,10 +46,10 @@ libname=libfprtl.so
libversion=2.0.0
libunits=$(SYSTEMUNIT) objpas strings \
unix \
- dos crt objects printer \
+ dos \
sysutils typinfo math \
cpu mmx getopts heaptrc \
- errors ipc
+ errors
[prerules]
RTL=..
@@ -155,6 +153,8 @@ baseunix$(PPUEXT) : errno.inc ptypes.inc $(UNIXINC)/ctypes.inc \
$(UNIXINC)/genfuncs.inc $(SYSTEMUNIT)$(PPUEXT) sysctl$(PPUEXT)
+unixtype$(PPUEXT): $(UNIXINC)/unixtype.pp $(UNIXINC)/ctypes.inc ptypes.inc $(SYSTEMUNIT)$(PPUEXT)
+
unix$(PPUEXT) : $(UNIXINC)/unix.pp strings$(PPUEXT) $(INC)/textrec.inc $(INC)/filerec.inc \
syscalls.inc systypes.inc sysconst.inc $(UNIXINC)/timezone.inc \
unxsysc.inc baseunix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
@@ -175,12 +175,6 @@ unixcp$(PPUEXT) : $(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) ba
dos$(PPUEXT) : $(UNIXINC)/dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \
unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-crt$(PPUEXT) : $(UNIXINC)/crt.pp $(INC)/textrec.inc unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-
-objects$(PPUEXT) : $(INC)/objects.pp $(SYSTEMUNIT)$(PPUEXT)
-
-printer$(PPUEXT) : $(UNIXINC)/printer.pp $(INC)/textrec.inc unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-
#
# Graph
#
@@ -193,11 +187,8 @@ sysutils$(PPUEXT) : $(UNIXINC)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.in
objpas$(PPUEXT) unix$(PPUEXT) errors$(PPUEXT) sysconst$(PPUEXT)
$(COMPILER) -Fi$(OBJPASDIR)/sysutils $(UNIXINC)/sysutils.pp
-dateutils$(PPUEXT): $(OBJPASDIR)/dateutils.pp $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/dateutils.pp
-
rtlconsts$(PPUEXT) : $(OBJPASDIR)/rtlconsts.pp
- $(COMPILER): $(OBJPASDIR)/rtlconsts.pp
+ $(COMPILER) $(OBJPASDIR)/rtlconsts.pp
classes$(PPUEXT) : $(UNIXINC)/classes.pp $(wildcard $(OBJPASDIR)/classes/*.inc) \
sysutils$(PPUEXT) typinfo$(PPUEXT) rtlconsts$(PPUEXT) fgl$(PPUEXT)
@@ -206,39 +197,17 @@ classes$(PPUEXT) : $(UNIXINC)/classes.pp $(wildcard $(OBJPASDIR)/classes/*.inc)
fgl$(PPUEXT) : $(OBJPASDIR)/fgl.pp objpas$(PPUEXT) types$(PPUEXT) system$(PPUEXT) sysutils$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/fgl.pp
-strutils$(PPUEXT) : $(OBJPASDIR)/strutils.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/strutils.pp
-
-convutils$(PPUEXT) : $(OBJPASDIR)/convutils.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/convutils.pp
-
-stdconvs$(PPUEXT) : $(OBJPASDIR)/stdconvs.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/stdconvs.pp
-
typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT)
$(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp
math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/math.pp
-gettext$(PPUEXT): $(OBJPASDIR)/gettext.pp objpas$(PPUEXT) sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/gettext.pp
-
-varutils$(PPUEXT) : $(OBJPASDIR)/cvarutil.inc $(OBJPASDIR)/varutils.inc \
- $(OBJPASDIR)/varutilh.inc varutils.pp
- $(COMPILER) -I$(OBJPASDIR) $(UNIXINC)/varutils.pp
-
types$(PPUEXT) : $(OBJPASDIR/types.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/types.pp
-fmtbcd$(PPUEXT) : $(OBJPASDIR)/fmtbcd.pp objpas$(PPUEXT) sysutils$(PPUEXT) variants$(PPUEXT) classes$(PPUEXT) system$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/fmtbcd.pp
-
# let it depend on buildcollations to prevent simultaneous building of unicodedata
-character$(PPUEXT): sysutils$(PPUEXT) $(OBJPASDIR)/character.pas objpas$(PPUEXT) rtlconsts$(PPUEXT) buildcollations$(PPUEXT)
+character$(PPUEXT): sysutils$(PPUEXT) $(OBJPASDIR)/character.pas objpas$(PPUEXT) rtlconsts$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/character.pas
@@ -275,12 +244,6 @@ charset$(PPUEXT) : $(INC)/charset.pp $(SYSTEMUNIT)$(PPUEXT)
cpall$(PPUEXT): $(RTL)/charmaps/cpall.pas system$(PPUEXT) charset$(PPUEXT)
$(COMPILER) -Fu$(INC) -Fi$(RTL)/charmaps $(RTL)/charmaps/cpall.pas
-buildcollations$(PPUEXT): $(OBJPASDIR)/collations/buildcollations.pas system$(PPUEXT) objpas$(PPUEXT) sysutils$(PPUEXT)
- $(COMPILER) -Fu$(OBJPASDIR) -Fi$(OBJPASDIR)/collations -I$(OBJPASDIR)/collations $(OBJPASDIR)/collations/buildcollations.pas
-
-matrix$(PPUEXT) : $(INC)/matrix.pp $(SYSTEMUNIT)$(PPUEXT)
-ucomplex$(PPUEXT) : $(INC)/ucomplex.pp math$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-
fpmkunit$(PPUEXT) : $(COMMON)/fpmkunit.pp classes$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
fpwidestring$(PPUEXT): $(OBJPASDIR)/fpwidestring.pp character$(PPUEXT) unixcp$(PPUEXT)
@@ -292,10 +255,6 @@ fpwidestring$(PPUEXT): $(OBJPASDIR)/fpwidestring.pp character$(PPUEXT) unixcp$(P
errors$(PPUEXT) : $(UNIXINC)/errors.pp strings$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-ipc$(PPUEXT) : $(UNIXINC)/ipc.pp unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-
-terminfo$(PPUEXT) : terminfo.pp unix$(PPUEXT)
-
callspec$(PPUEXT) : $(INC)/callspec.pp $(SYSTEMUNIT)$(PPUEXT)
sysctl$(PPUEXT) : $(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) syscall$(PPUEXT)
diff --git a/rtl/netware/Makefile b/rtl/netware/Makefile
index 9c03209d47..a4144a6c3c 100644
--- a/rtl/netware/Makefile
+++ b/rtl/netware/Makefile
@@ -1,8 +1,8 @@
#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-04-01 rev 27428]
#
default: all
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos
BSDs = freebsd netbsd openbsd darwin
UNIXs = linux $(BSDs) solaris qnx haiku aix
LIMIT83fs = go32v2 os2 emx watcom msdos
@@ -186,6 +186,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t
endif
override FPCOPT+=-Cp$(SUBARCH)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+ifeq ($(SUBARCH),)
+$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined)
+endif
+override FPCOPT+=-Cp$(SUBARCH)
+endif
ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
TARGETSUFFIX=$(OS_TARGET)
SOURCESUFFIX=$(OS_SOURCE)
@@ -343,448 +349,454 @@ requestr.imp socklib.imp streams.imp threads.imp \
tli.imp vollib.imp ws2_32.imp ws2nlm.imp unicode.imp \
nwpre.imp
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math cmem dynlibs aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-linux)
override TARGET_LOADERS+=nwpre prelude
@@ -996,6 +1008,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_LOADERS+=nwpre prelude
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_LOADERS+=nwpre prelude
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_LOADERS+=nwpre prelude
endif
@@ -1218,6 +1233,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_RSTS+=math typinfo classes sysconst rtlconsts
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_RSTS+=math typinfo classes sysconst rtlconsts
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_RSTS+=math typinfo classes sysconst rtlconsts
endif
@@ -1441,6 +1459,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
endif
@@ -1663,6 +1684,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
endif
@@ -2456,17 +2480,23 @@ ifdef ACROSSCOMPILE
override FPCOPT+=$(CROSSOPT)
endif
override COMPILER:=$(strip $(FPC) $(FPCOPT))
-ifeq (,$(findstring -s ,$(COMPILER)))
+ifneq (,$(findstring -sh ,$(COMPILER)))
+UseEXECPPAS=1
+endif
+ifneq (,$(findstring -s ,$(COMPILER)))
+ifeq ($(FULL_SOURCE),$(FULL_TARGET))
+UseEXECPPAS=1
+endif
+endif
+ifneq ($(UseEXECPPAS),1)
EXECPPAS=
else
-ifeq ($(FULL_SOURCE),$(FULL_TARGET))
ifdef RUNBATCH
EXECPPAS:=@$(RUNBATCH) $(PPAS)
else
EXECPPAS:=@$(PPAS)
endif
endif
-endif
.PHONY: fpc_loaders
ifneq ($(TARGET_LOADERS),)
override ALLTARGET+=fpc_loaders
@@ -2876,13 +2906,8 @@ strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc\
$(SYSTEMUNIT)$(PPUEXT)
nwpre$(PPUEXT) : nwpre.pp $(SYSTEMUNIT)$(PPUEXT)
netware$(PPUEXT) : netware.pp $(SYSTEMUNIT)$(PPUEXT)
-winsock$(PPUEXT) : winsock.pp $(SYSTEMUNIT)$(PPUEXT)
-sockets$(PPUEXT) : sockets.pp netware$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- $(INC)/sockets.inc $(INC)/socketsh.inc
initc$(PPUEXT) : initc.pp ctypes$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
dos$(PPUEXT) : dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) nwserv$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-crt$(PPUEXT) : crt.pp $(INC)/textrec.inc $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) dos$(PPUEXT)
-objects$(PPUEXT) : $(INC)/objects.pp $(SYSTEMUNIT)$(PPUEXT)
sysutils$(PPUEXT) : sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
objpas$(PPUEXT) dos$(PPUEXT) nwsys.inc sysconst$(PPUEXT)
$(COMPILER) -Fi$(OBJPASDIR)/sysutils sysutils.pp
@@ -2896,30 +2921,12 @@ typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT)
$(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp
math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/math.pp
-gettext$(PPUEXT): $(OBJPASDIR)/gettext.pp objpas$(PPUEXT) sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/gettext.pp
-varutils$(PPUEXT) : varutils.pp $(OBJPASDIR)/cvarutil.inc \
- objpas$(PPUEXT) $(OBJPASDIR)/varutilh.inc
- $(COMPILER) -I$(OBJPASDIR) varutils.pp
-freebidi$(PPUEXT) : $(OBJPASDIR)/freebidi.pp
-utf8bidi$(PPUEXT) : $(OBJPASDIR)/utf8bidi.pp freebidi$(PPUEXT)
- $(COMPILER) -Sc $(OBJPASDIR)/utf8bidi.pp
-variants$(PPUEXT) : $(INC)/variants.pp sysutils$(PPUEXT) sysconst$(PPUEXT) varutils$(PPUEXT) typinfo$(PPUEXT) rtlconsts$(PPUEXT) math$(PPUEXT)
- $(COMPILER) -Fi$(INC) $(INC)/variants.pp
types$(PPUEXT) : $(OBJPASDIR)/types.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/types.pp
-fmtbcd$(PPUEXT) : $(OBJPASDIR)/fmtbcd.pp objpas$(PPUEXT) sysutils$(PPUEXT) variants$(PPUEXT) classes$(PPUEXT) system$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/fmtbcd.pp
rtlconsts$(PPUEXT) : $(OBJPASDIR)/rtlconsts.pp
$(COMPILER) $(OBJPASDIR)/rtlconsts.pp
sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/sysconst.pp
-dateutils$(PPUEXT) : $(OBJPASDIR)/dateutils.pp
- $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/dateutils.pp
-convutils$(PPUEXT) : $(OBJPASDIR)/convutils.pp
- $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/convutils.pp
-strutils$(PPUEXT) : $(OBJPASDIR)/strutils.pp
- $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/strutils.pp
macpas$(PPUEXT) : $(INC)/macpas.pp objpas$(PPUEXT) math$(PPUEXT)
$(COMPILER) $(INC)/macpas.pp $(REDIR)
cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT)
@@ -2932,10 +2939,6 @@ lnfodwrf$(PPUEXT) : $(INC)/lnfodwrf.pp $(SYSTEMUNIT)$(PPUEXT)
charset$(PPUEXT) : $(INC)/charset.pp $(SYSTEMUNIT)$(PPUEXT)
cpall$(PPUEXT): $(RTL)/charmaps/cpall.pas system$(PPUEXT) charset$(PPUEXT)
$(COMPILER) -Fu$(INC) -Fi$(RTL)/charmaps $(RTL)/charmaps/cpall.pas
-ucomplex$(PPUEXT) : $(INC)/ucomplex.pp math$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-mouse$(PPUEXT) : $(INC)/mouseh.inc $(SYSTEMUNIT)$(PPUEXT)
-video$(PPUEXT) : $(INC)/video.inc $(SYSTEMUNIT)$(PPUEXT)
-keyboard$(PPUEXT) : $(INC)/keyboard.inc $(INC)/keybrdh.inc $(SYSTEMUNIT)$(PPUEXT)
cmem$(PPUEXT) : $(INC)/cmem.pp $(SYSTEMUNIT)$(PPUEXT)
ctypes$(PPUEXT) : $(INC)/ctypes.pp $(SYSTEMUNIT)$(PPUEXT)
callspec$(PPUEXT) : $(INC)/callspec.pp $(SYSTEMUNIT)$(PPUEXT)
diff --git a/rtl/netware/Makefile.fpc b/rtl/netware/Makefile.fpc
index 2c1cd265e9..08afc32d3d 100644
--- a/rtl/netware/Makefile.fpc
+++ b/rtl/netware/Makefile.fpc
@@ -8,19 +8,18 @@ main=rtl
[target]
loaders=nwpre prelude
units=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings \
- lineinfo lnfodwrf winsock heaptrc matrix \
+ lineinfo lnfodwrf heaptrc \
dos sysconst \
initc sysutils types typinfo fgl classes \
cpu mmx getopts \
- strutils \
charset cpall \
- rtlconsts math freebidi utf8bidi \
- cmem dynlibs sockets \
+ rtlconsts math \
+ cmem dynlibs \
aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
rsts=math typinfo classes sysconst rtlconsts
implicitunits=exeinfo \
cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 \
- cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+ cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
[require]
nortl=y
@@ -140,11 +139,6 @@ nwpre$(PPUEXT) : nwpre.pp $(SYSTEMUNIT)$(PPUEXT)
netware$(PPUEXT) : netware.pp $(SYSTEMUNIT)$(PPUEXT)
-winsock$(PPUEXT) : winsock.pp $(SYSTEMUNIT)$(PPUEXT)
-
-sockets$(PPUEXT) : sockets.pp netware$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- $(INC)/sockets.inc $(INC)/socketsh.inc
-
#dynlibs$(PPUEXT) : $(INC)/dynlibs.pas windows$(PPUEXT)
initc$(PPUEXT) : initc.pp ctypes$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
@@ -156,10 +150,6 @@ initc$(PPUEXT) : initc.pp ctypes$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
dos$(PPUEXT) : dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) nwserv$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-crt$(PPUEXT) : crt.pp $(INC)/textrec.inc $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) dos$(PPUEXT)
-
-objects$(PPUEXT) : $(INC)/objects.pp $(SYSTEMUNIT)$(PPUEXT)
-
#
# Delphi Compatible Units
#
@@ -182,42 +172,15 @@ typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT)
math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/math.pp
-gettext$(PPUEXT): $(OBJPASDIR)/gettext.pp objpas$(PPUEXT) sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/gettext.pp
-
-varutils$(PPUEXT) : varutils.pp $(OBJPASDIR)/cvarutil.inc \
- objpas$(PPUEXT) $(OBJPASDIR)/varutilh.inc
- $(COMPILER) -I$(OBJPASDIR) varutils.pp
-
-freebidi$(PPUEXT) : $(OBJPASDIR)/freebidi.pp
-
-utf8bidi$(PPUEXT) : $(OBJPASDIR)/utf8bidi.pp freebidi$(PPUEXT)
- $(COMPILER) -Sc $(OBJPASDIR)/utf8bidi.pp
-
-variants$(PPUEXT) : $(INC)/variants.pp sysutils$(PPUEXT) sysconst$(PPUEXT) varutils$(PPUEXT) typinfo$(PPUEXT) rtlconsts$(PPUEXT) math$(PPUEXT)
- $(COMPILER) -Fi$(INC) $(INC)/variants.pp
-
types$(PPUEXT) : $(OBJPASDIR)/types.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/types.pp
-fmtbcd$(PPUEXT) : $(OBJPASDIR)/fmtbcd.pp objpas$(PPUEXT) sysutils$(PPUEXT) variants$(PPUEXT) classes$(PPUEXT) system$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/fmtbcd.pp
-
rtlconsts$(PPUEXT) : $(OBJPASDIR)/rtlconsts.pp
$(COMPILER) $(OBJPASDIR)/rtlconsts.pp
sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/sysconst.pp
-dateutils$(PPUEXT) : $(OBJPASDIR)/dateutils.pp
- $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/dateutils.pp
-
-convutils$(PPUEXT) : $(OBJPASDIR)/convutils.pp
- $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/convutils.pp
-
-strutils$(PPUEXT) : $(OBJPASDIR)/strutils.pp
- $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/strutils.pp
-
#
# Mac Pascal Model
#
@@ -247,14 +210,6 @@ charset$(PPUEXT) : $(INC)/charset.pp $(SYSTEMUNIT)$(PPUEXT)
cpall$(PPUEXT): $(RTL)/charmaps/cpall.pas system$(PPUEXT) charset$(PPUEXT)
$(COMPILER) -Fu$(INC) -Fi$(RTL)/charmaps $(RTL)/charmaps/cpall.pas
-ucomplex$(PPUEXT) : $(INC)/ucomplex.pp math$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-
-mouse$(PPUEXT) : $(INC)/mouseh.inc $(SYSTEMUNIT)$(PPUEXT)
-
-video$(PPUEXT) : $(INC)/video.inc $(SYSTEMUNIT)$(PPUEXT)
-
-keyboard$(PPUEXT) : $(INC)/keyboard.inc $(INC)/keybrdh.inc $(SYSTEMUNIT)$(PPUEXT)
-
cmem$(PPUEXT) : $(INC)/cmem.pp $(SYSTEMUNIT)$(PPUEXT)
ctypes$(PPUEXT) : $(INC)/ctypes.pp $(SYSTEMUNIT)$(PPUEXT)
diff --git a/rtl/netwlibc/Makefile b/rtl/netwlibc/Makefile
index 25d83cb503..842c7e499a 100644
--- a/rtl/netwlibc/Makefile
+++ b/rtl/netwlibc/Makefile
@@ -1,8 +1,8 @@
#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-04-01 rev 27428]
#
default: all
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos
BSDs = freebsd netbsd openbsd darwin
UNIXs = linux $(BSDs) solaris qnx haiku aix
LIMIT83fs = go32v2 os2 emx watcom msdos
@@ -185,6 +185,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t
endif
override FPCOPT+=-Cp$(SUBARCH)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+ifeq ($(SUBARCH),)
+$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined)
+endif
+override FPCOPT+=-Cp$(SUBARCH)
+endif
ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
TARGETSUFFIX=$(OS_TARGET)
SOURCESUFFIX=$(OS_SOURCE)
@@ -336,448 +342,454 @@ CREATESMART=1
OBJPASDIR=$(RTL)/objpas
override BINUTILSPREFIX=$(CPU_TARGET)-netware-
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts strutils charset cpall rtlconsts math freebidi utf8bidi dynlibs cmem sockets ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings lineinfo lnfodwrf heaptrc nwsnut libc dos sysconst initc sysutils types typinfo fgl classes cpu mmx getopts charset cpall rtlconsts math dynlibs cmem ctypes
endif
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-linux)
override TARGET_LOADERS+=nwplibc nwl_main nwl_dlle
@@ -989,6 +1001,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_LOADERS+=nwplibc nwl_main nwl_dlle
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_LOADERS+=nwplibc nwl_main nwl_dlle
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_LOADERS+=nwplibc nwl_main nwl_dlle
endif
@@ -1211,6 +1226,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_RSTS+=math typinfo classes sysconst rtlconsts system
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_RSTS+=math typinfo classes sysconst rtlconsts system
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_RSTS+=math typinfo classes sysconst rtlconsts system
endif
@@ -1434,6 +1452,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
endif
@@ -1656,6 +1677,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
endif
@@ -2449,17 +2473,23 @@ ifdef ACROSSCOMPILE
override FPCOPT+=$(CROSSOPT)
endif
override COMPILER:=$(strip $(FPC) $(FPCOPT))
-ifeq (,$(findstring -s ,$(COMPILER)))
+ifneq (,$(findstring -sh ,$(COMPILER)))
+UseEXECPPAS=1
+endif
+ifneq (,$(findstring -s ,$(COMPILER)))
+ifeq ($(FULL_SOURCE),$(FULL_TARGET))
+UseEXECPPAS=1
+endif
+endif
+ifneq ($(UseEXECPPAS),1)
EXECPPAS=
else
-ifeq ($(FULL_SOURCE),$(FULL_TARGET))
ifdef RUNBATCH
EXECPPAS:=@$(RUNBATCH) $(PPAS)
else
EXECPPAS:=@$(PPAS)
endif
endif
-endif
.PHONY: fpc_loaders
ifneq ($(TARGET_LOADERS),)
override ALLTARGET+=fpc_loaders
@@ -2875,15 +2905,10 @@ strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc\
$(SYSTEMUNIT)$(PPUEXT)
netware$(PPUEXT) : netware.pp $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) -I$(WININC) netware.pp
-winsock$(PPUEXT) : winsock.pp ../netware/winsock.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT)
nwsnut$(PPUEXT) : nwsnut.pp ../netware/nwsnut.pp libc$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-sockets$(PPUEXT) : sockets.pp winsock$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- $(INC)/sockets.inc $(INC)/socketsh.inc
dynlibs$(PPUEXT) : $(INC)/dynlibs.pas libc$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
initc$(PPUEXT) : initc.pp ctypes$(PPUEXT) libc$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
dos$(PPUEXT) : dos.pp libc.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-crt$(PPUEXT) : crt.pp libc.pp $(INC)/textrec.inc $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) dos$(PPUEXT)
-objects$(PPUEXT) : $(INC)/objects.pp $(SYSTEMUNIT)$(PPUEXT)
sysutils$(PPUEXT) : sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
objpas$(PPUEXT) dos$(PPUEXT) libc.pp sysconst$(PPUEXT)
$(COMPILER) -Fi$(OBJPASDIR)/sysutils sysutils.pp
@@ -2898,30 +2923,12 @@ typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT)
$(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp
math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/math.pp
-gettext$(PPUEXT): $(OBJPASDIR)/gettext.pp objpas$(PPUEXT) sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/gettext.pp
-varutils$(PPUEXT) : varutils.pp $(OBJPASDIR)/cvarutil.inc \
- objpas$(PPUEXT) $(OBJPASDIR)/varutilh.inc
- $(COMPILER) -I$(OBJPASDIR) varutils.pp
-freebidi$(PPUEXT) : $(OBJPASDIR)/freebidi.pp
-utf8bidi$(PPUEXT) : $(OBJPASDIR)/utf8bidi.pp freebidi$(PPUEXT)
- $(COMPILER) -Sc $(OBJPASDIR)/utf8bidi.pp
-variants$(PPUEXT) : $(INC)/variants.pp sysutils$(PPUEXT) sysconst$(PPUEXT) varutils$(PPUEXT) typinfo$(PPUEXT) rtlconsts$(PPUEXT) math$(PPUEXT)
- $(COMPILER) -Fi$(INC) $(INC)/variants.pp
-fmtbcd$(PPUEXT) : $(OBJPASDIR)/fmtbcd.pp objpas$(PPUEXT) sysutils$(PPUEXT) variants$(PPUEXT) classes$(PPUEXT) system$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/fmtbcd.pp
types$(PPUEXT) : $(OBJPASDIR)/types.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/types.pp
rtlconsts$(PPUEXT) : $(OBJPASDIR)/rtlconsts.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/rtlconsts.pp
sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/sysconst.pp
-dateutils$(PPUEXT) : $(OBJPASDIR)/dateutils.pp $(OBJPASDIR)/dateutil.inc
- $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/dateutils.pp
-convutils$(PPUEXT) : $(OBJPASDIR)/convutils.pp
- $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/convutils.pp
-strutils$(PPUEXT) : $(OBJPASDIR)/strutils.pp
- $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/strutils.pp
macpas$(PPUEXT) : $(INC)/macpas.pp objpas$(PPUEXT) math$(PPUEXT)
$(COMPILER) $(INC)/macpas.pp $(REDIR)
cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT)
@@ -2934,10 +2941,6 @@ lnfodwrf$(PPUEXT) : $(INC)/lnfodwrf.pp $(SYSTEMUNIT)$(PPUEXT)
charset$(PPUEXT) : $(INC)/charset.pp $(SYSTEMUNIT)$(PPUEXT)
cpall$(PPUEXT): $(RTL)/charmaps/cpall.pas system$(PPUEXT) charset$(PPUEXT)
$(COMPILER) -Fu$(INC) -Fi$(RTL)/charmaps $(RTL)/charmaps/cpall.pas
-ucomplex$(PPUEXT) : $(INC)/ucomplex.pp math$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-mouse$(PPUEXT) : $(INC)/mouseh.inc $(SYSTEMUNIT)$(PPUEXT)
-video$(PPUEXT) : $(INC)/video.inc $(SYSTEMUNIT)$(PPUEXT)
-keyboard$(PPUEXT) : $(INC)/keyboard.inc $(INC)/keybrdh.inc $(SYSTEMUNIT)$(PPUEXT)
cmem$(PPUEXT) : $(INC)/cmem.pp $(SYSTEMUNIT)$(PPUEXT)
ctypes$(PPUEXT) : $(INC)/ctypes.pp $(SYSTEMUNIT)$(PPUEXT)
callspec$(PPUEXT) : $(INC)/callspec.pp $(SYSTEMUNIT)$(PPUEXT)
diff --git a/rtl/netwlibc/Makefile.fpc b/rtl/netwlibc/Makefile.fpc
index bbe7983622..49ace1a648 100644
--- a/rtl/netwlibc/Makefile.fpc
+++ b/rtl/netwlibc/Makefile.fpc
@@ -8,19 +8,18 @@ main=rtl
[target]
loaders=nwplibc nwl_main nwl_dlle
units=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings \
- lineinfo lnfodwrf winsock heaptrc \
+ lineinfo lnfodwrf heaptrc \
nwsnut libc dos sysconst \
initc sysutils types typinfo fgl classes \
cpu mmx getopts \
- strutils \
charset cpall \
- rtlconsts math freebidi utf8bidi \
- dynlibs cmem sockets ctypes
+ rtlconsts math \
+ dynlibs cmem ctypes
rsts=math typinfo classes sysconst rtlconsts system
implicitunits=exeinfo \
cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 \
- cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+ cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
[require]
nortl=y
@@ -97,8 +96,6 @@ SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
copyimpfiles:
$(COPY) $(IMPFILES) $(COMPILER_UNITTARGETDIR)
-
-
#
# Loaders
#
@@ -143,14 +140,8 @@ strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc\
netware$(PPUEXT) : netware.pp $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) -I$(WININC) netware.pp
-
-winsock$(PPUEXT) : winsock.pp ../netware/winsock.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT)
-
nwsnut$(PPUEXT) : nwsnut.pp ../netware/nwsnut.pp libc$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-sockets$(PPUEXT) : sockets.pp winsock$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- $(INC)/sockets.inc $(INC)/socketsh.inc
-
dynlibs$(PPUEXT) : $(INC)/dynlibs.pas libc$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
initc$(PPUEXT) : initc.pp ctypes$(PPUEXT) libc$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
@@ -162,10 +153,6 @@ initc$(PPUEXT) : initc.pp ctypes$(PPUEXT) libc$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
dos$(PPUEXT) : dos.pp libc.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-crt$(PPUEXT) : crt.pp libc.pp $(INC)/textrec.inc $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) dos$(PPUEXT)
-
-objects$(PPUEXT) : $(INC)/objects.pp $(SYSTEMUNIT)$(PPUEXT)
-
#
# Delphi Compatible Units
#
@@ -189,25 +176,6 @@ typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT)
math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/math.pp
-gettext$(PPUEXT): $(OBJPASDIR)/gettext.pp objpas$(PPUEXT) sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/gettext.pp
-
-varutils$(PPUEXT) : varutils.pp $(OBJPASDIR)/cvarutil.inc \
- objpas$(PPUEXT) $(OBJPASDIR)/varutilh.inc
- $(COMPILER) -I$(OBJPASDIR) varutils.pp
-
-freebidi$(PPUEXT) : $(OBJPASDIR)/freebidi.pp
-
-utf8bidi$(PPUEXT) : $(OBJPASDIR)/utf8bidi.pp freebidi$(PPUEXT)
- $(COMPILER) -Sc $(OBJPASDIR)/utf8bidi.pp
-
-
-variants$(PPUEXT) : $(INC)/variants.pp sysutils$(PPUEXT) sysconst$(PPUEXT) varutils$(PPUEXT) typinfo$(PPUEXT) rtlconsts$(PPUEXT) math$(PPUEXT)
- $(COMPILER) -Fi$(INC) $(INC)/variants.pp
-
-fmtbcd$(PPUEXT) : $(OBJPASDIR)/fmtbcd.pp objpas$(PPUEXT) sysutils$(PPUEXT) variants$(PPUEXT) classes$(PPUEXT) system$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/fmtbcd.pp
-
types$(PPUEXT) : $(OBJPASDIR)/types.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/types.pp
@@ -217,15 +185,6 @@ rtlconsts$(PPUEXT) : $(OBJPASDIR)/rtlconsts.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PP
sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/sysconst.pp
-dateutils$(PPUEXT) : $(OBJPASDIR)/dateutils.pp $(OBJPASDIR)/dateutil.inc
- $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/dateutils.pp
-
-convutils$(PPUEXT) : $(OBJPASDIR)/convutils.pp
- $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/convutils.pp
-
-strutils$(PPUEXT) : $(OBJPASDIR)/strutils.pp
- $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/strutils.pp
-
#
# Mac Pascal Model
#
@@ -255,14 +214,6 @@ charset$(PPUEXT) : $(INC)/charset.pp $(SYSTEMUNIT)$(PPUEXT)
cpall$(PPUEXT): $(RTL)/charmaps/cpall.pas system$(PPUEXT) charset$(PPUEXT)
$(COMPILER) -Fu$(INC) -Fi$(RTL)/charmaps $(RTL)/charmaps/cpall.pas
-ucomplex$(PPUEXT) : $(INC)/ucomplex.pp math$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-
-mouse$(PPUEXT) : $(INC)/mouseh.inc $(SYSTEMUNIT)$(PPUEXT)
-
-video$(PPUEXT) : $(INC)/video.inc $(SYSTEMUNIT)$(PPUEXT)
-
-keyboard$(PPUEXT) : $(INC)/keyboard.inc $(INC)/keybrdh.inc $(SYSTEMUNIT)$(PPUEXT)
-
cmem$(PPUEXT) : $(INC)/cmem.pp $(SYSTEMUNIT)$(PPUEXT)
ctypes$(PPUEXT) : $(INC)/ctypes.pp $(SYSTEMUNIT)$(PPUEXT)
diff --git a/rtl/netwlibc/pre/libcpre.gcc.o b/rtl/netwlibc/pre/libcpre.gcc.o
deleted file mode 100644
index 444830a82a..0000000000
--- a/rtl/netwlibc/pre/libcpre.gcc.o
+++ /dev/null
Binary files differ
diff --git a/rtl/objpas/classes/classes.inc b/rtl/objpas/classes/classes.inc
index d561096635..c12728dbf5 100644
--- a/rtl/objpas/classes/classes.inc
+++ b/rtl/objpas/classes/classes.inc
@@ -15,6 +15,13 @@
* Class implementations are in separate files. *
**********************************************************************}
+type
+{$ifdef CPU16}
+ TFilerFlagsInt = Byte;
+{$else CPU16}
+ TFilerFlagsInt = LongInt;
+{$endif CPU16}
+
var
ClassList : TThreadlist;
ClassAliasList : TStringList;
diff --git a/rtl/objpas/classes/classesh.inc b/rtl/objpas/classes/classesh.inc
index c6e0fdea00..60669bb9fb 100644
--- a/rtl/objpas/classes/classesh.inc
+++ b/rtl/objpas/classes/classesh.inc
@@ -854,8 +854,8 @@ type
procedure WriteComponentRes(const ResName: string; Instance: TComponent);
procedure WriteDescendent(Instance, Ancestor: TComponent);
procedure WriteDescendentRes(const ResName: string; Instance, Ancestor: TComponent);
- procedure WriteResourceHeader(const ResName: string; {!!!:out} var FixupInfo: Integer);
- procedure FixupResourceHeader(FixupInfo: Integer);
+ procedure WriteResourceHeader(const ResName: string; {!!!:out} var FixupInfo: Longint);
+ procedure FixupResourceHeader(FixupInfo: Longint);
procedure ReadResHeader;
function ReadByte : Byte;
function ReadWord : Word;
@@ -881,7 +881,7 @@ type
function Read(var Buffer; Count: Longint): Longint; override;
function Write(const Buffer; Count: Longint): Longint; override;
function Seek(const Offset: int64; Origin: TSeekOrigin): int64; override;
- procedure Check(err:longint); virtual;
+ procedure Check(err:integer); virtual;
end;
{ TOwnerStream }
diff --git a/rtl/objpas/classes/compon.inc b/rtl/objpas/classes/compon.inc
index bc92fb63cb..4a4b1d7416 100644
--- a/rtl/objpas/classes/compon.inc
+++ b/rtl/objpas/classes/compon.inc
@@ -661,7 +661,7 @@ begin
Result := E_NOINTERFACE;
end;
-function TComponent._AddRef: Integer;{$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
+function TComponent._AddRef: Longint;{$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
begin
if Assigned(VCLComObject) then
Result := IVCLComObject(VCLComObject)._AddRef
@@ -669,7 +669,7 @@ begin
Result := -1;
end;
-function TComponent._Release: Integer;{$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
+function TComponent._Release: Longint;{$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
begin
if Assigned(VCLComObject) then
Result := IVCLComObject(VCLComObject)._Release
diff --git a/rtl/objpas/classes/persist.inc b/rtl/objpas/classes/persist.inc
index 438170952b..824f823616 100644
--- a/rtl/objpas/classes/persist.inc
+++ b/rtl/objpas/classes/persist.inc
@@ -142,7 +142,7 @@ begin
end;
-function TInterfacedPersistent._AddRef: Integer;{$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
+function TInterfacedPersistent._AddRef: Longint;{$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
begin
if assigned(FOwnerInterface) then
Result:=FOwnerInterface._AddRef
@@ -151,7 +151,7 @@ begin
end;
-function TInterfacedPersistent._Release: Integer;{$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
+function TInterfacedPersistent._Release: Longint;{$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
begin
if assigned(FOwnerInterface) then
Result:=FOwnerInterface._Release
diff --git a/rtl/objpas/classes/reader.inc b/rtl/objpas/classes/reader.inc
index 9efde71708..9bd66c4e1d 100644
--- a/rtl/objpas/classes/reader.inc
+++ b/rtl/objpas/classes/reader.inc
@@ -165,7 +165,7 @@ begin
if (Byte(NextValue) and $f0) = $f0 then
begin
Prefix := Byte(ReadValue);
- Flags := TFilerFlags(longint(Prefix and $0f));
+ Flags := TFilerFlags(TFilerFlagsInt(Prefix and $0f));
if ffChildPos in Flags then
begin
ValueType := ReadValue;
@@ -289,7 +289,9 @@ end;
function TBinaryObjectReader.ReadSet(EnumType: Pointer): Integer;
type
- tset = set of 0..31;
+{$packset 1}
+ tset = set of 0..(SizeOf(Integer)*8-1);
+{$packset default}
var
Name: String;
Value: Integer;
diff --git a/rtl/objpas/classes/streams.inc b/rtl/objpas/classes/streams.inc
index 12d5ce9bd4..63e5895aee 100644
--- a/rtl/objpas/classes/streams.inc
+++ b/rtl/objpas/classes/streams.inc
@@ -306,7 +306,7 @@ end;
procedure TStream.WriteDescendentRes(const ResName: string; Instance, Ancestor: TComponent);
var
- FixupInfo: Integer;
+ FixupInfo: Longint;
begin
@@ -319,7 +319,7 @@ end;
end;
- procedure TStream.WriteResourceHeader(const ResName: string; {!!!: out} var FixupInfo: Integer);
+ procedure TStream.WriteResourceHeader(const ResName: string; {!!!: out} var FixupInfo: Longint);
var
ResType, Flags : word;
begin
@@ -342,10 +342,10 @@ end;
FixupInfo := Position;
end;
- procedure TStream.FixupResourceHeader(FixupInfo: Integer);
+ procedure TStream.FixupResourceHeader(FixupInfo: Longint);
var
- ResSize,TmpResSize : Integer;
+ ResSize,TmpResSize : Longint;
begin
diff --git a/rtl/objpas/classes/writer.inc b/rtl/objpas/classes/writer.inc
index 982a7ae798..4a14decef0 100644
--- a/rtl/objpas/classes/writer.inc
+++ b/rtl/objpas/classes/writer.inc
@@ -132,7 +132,7 @@ begin
{ Only write the flags if they are needed! }
if Flags <> [] then
begin
- Prefix := Integer(Flags) or $f0;
+ Prefix := TFilerFlagsInt(Flags) or $f0;
Write(Prefix, 1);
if ffChildPos in Flags then
WriteInteger(ChildPos);
diff --git a/rtl/objpas/math.pp b/rtl/objpas/math.pp
index d0cc11d13e..35e876690c 100644
--- a/rtl/objpas/math.pp
+++ b/rtl/objpas/math.pp
@@ -11,6 +11,30 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
**********************************************************************}
+{-------------------------------------------------------------------------
+ Using functions from AMath/DAMath libraries, which are covered by the
+ following license:
+
+ (C) Copyright 2009-2013 Wolfgang Ehrhardt
+
+ This software is provided 'as-is', without any express or implied warranty.
+ In no event will the authors be held liable for any damages arising from
+ the use of this software.
+
+ Permission is granted to anyone to use this software for any purpose,
+ including commercial applications, and to alter it and redistribute it
+ freely, subject to the following restrictions:
+
+ 1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software in
+ a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+
+ 2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+
+ 3. This notice may not be removed or altered from any source distribution.
+----------------------------------------------------------------------------}
{
This unit is an equivalent to the Delphi math unit
(with some improvements)
@@ -151,10 +175,10 @@ function EnsureRange(const AValue, AMin, AMax: Double): Double;inline; overload
{$endif FPC_HAS_TYPE_DOUBLE}
-procedure DivMod(Dividend: Integer; Divisor: Word; var Result, Remainder: Word);
-procedure DivMod(Dividend: Integer; Divisor: Word; var Result, Remainder: SmallInt);
+procedure DivMod(Dividend: LongInt; Divisor: Word; var Result, Remainder: Word);
+procedure DivMod(Dividend: LongInt; Divisor: Word; var Result, Remainder: SmallInt);
procedure DivMod(Dividend: DWord; Divisor: DWord; var Result, Remainder: DWord);
-procedure DivMod(Dividend: Integer; Divisor: Integer; var Result, Remainder: Integer);
+procedure DivMod(Dividend: LongInt; Divisor: LongInt; var Result, Remainder: LongInt);
// Sign functions
Type
@@ -244,6 +268,15 @@ function gradtodeg(grad : float) : float;inline;
{ one cycle are 2*Pi rad }
function cycletorad(cycle : float) : float;inline;
function radtocycle(rad : float) : float;inline;
+{$ifdef FPC_HAS_TYPE_SINGLE}
+Function DegNormalize(deg : single) : single; inline;
+{$ENDIF}
+{$ifdef FPC_HAS_TYPE_DOUBLE}
+Function DegNormalize(deg : double) : double; inline;
+{$ENDIF}
+{$ifdef FPC_HAS_TYPE_EXTENDED}
+Function DegNormalize(deg : extended) : extended; inline;
+{$ENDIF}
{ trigoniometric functions }
@@ -532,8 +565,21 @@ function RandomFrom(const AValues: array of Double): Double; overload;
function RandomFrom(const AValues: array of Integer): Integer; overload;
function RandomFrom(const AValues: array of Int64): Int64; overload;
-{ include cpu specific stuff }
-{$i mathuh.inc}
+{ cpu specific stuff }
+type
+ TFPURoundingMode = system.TFPURoundingMode;
+ TFPUPrecisionMode = system.TFPUPrecisionMode;
+ TFPUException = system.TFPUException;
+ TFPUExceptionMask = system.TFPUExceptionMask;
+
+function GetRoundMode: TFPURoundingMode;
+function SetRoundMode(const RoundMode: TFPURoundingMode): TFPURoundingMode;
+function GetPrecisionMode: TFPUPrecisionMode;
+function SetPrecisionMode(const Precision: TFPUPrecisionMode): TFPUPrecisionMode;
+function GetExceptionMask: TFPUExceptionMask;
+function SetExceptionMask(const Mask: TFPUExceptionMask): TFPUExceptionMask;
+procedure ClearExceptions(RaisePending: Boolean =true);
+
implementation
@@ -657,6 +703,31 @@ function radtocycle(rad : float) : float;inline;
radtocycle:=rad*(1/(2*pi));
end;
+{$ifdef FPC_HAS_TYPE_SINGLE}
+Function DegNormalize(deg : single) : single;
+
+begin
+ Result:=Deg-Trunc(Deg/360)*360;
+ If Result<0 then Result:=Result+360;
+end;
+{$ENDIF}
+{$ifdef FPC_HAS_TYPE_DOUBLE}
+Function DegNormalize(deg : double) : double; inline;
+
+begin
+ Result:=Deg-Trunc(Deg/360)*360;
+ If (Result<0) then Result:=Result+360;
+end;
+{$ENDIF}
+{$ifdef FPC_HAS_TYPE_EXTENDED}
+Function DegNormalize(deg : extended) : extended; inline;
+
+begin
+ Result:=Deg-Trunc(Deg/360)*360;
+ If Result<0 then Result:=Result+360;
+end;
+{$ENDIF}
+
{$ifndef FPC_MATH_HAS_TAN}
function tan(x : float) : float;
var
@@ -736,7 +807,7 @@ begin
csc := cosecant(x);
end;
-
+{ arcsin and arccos functions from AMath library (C) Copyright 2009-2013 Wolfgang Ehrhardt }
function arcsin(x : float) : float;
begin
arcsin:=arctan2(x,sqrt((1.0-x)*(1.0+x)));
@@ -834,6 +905,7 @@ function artanh(x : float) : float;
artanh:=(lnxp1(x)-lnxp1(-x))*0.5;
end;
+{ hypot function from AMath library (C) Copyright 2009-2013 Wolfgang Ehrhardt }
function hypot(x,y : float) : float;
begin
x:=abs(x);
@@ -863,6 +935,7 @@ function logn(n,x : float) : float;
logn:=ln(x)/ln(n);
end;
+{ lnxp1 function from AMath library (C) Copyright 2009-2013 Wolfgang Ehrhardt }
function lnxp1(x : float) : float;
var
y: float;
@@ -875,7 +948,11 @@ function lnxp1(x : float) : float;
if (y=1.0) then
lnxp1:=x
else
- lnxp1:=ln(y)+(x-(y-1.0))/y;
+ begin
+ lnxp1:=ln(y); { lnxp1(-1) = ln(0) = -Inf }
+ if y>0.0 then
+ lnxp1:=lnxp1+(x-(y-1.0))/y;
+ end;
end;
end;
@@ -2174,7 +2251,7 @@ end;
// Some CPUs probably allow a faster way of doing this in a single operation...
// There weshould define FPC_MATH_HAS_CPUDIVMOD in the header mathuh.inc and implement it using asm.
{$ifndef FPC_MATH_HAS_DIVMOD}
-procedure DivMod(Dividend: Integer; Divisor: Word; var Result, Remainder: Word);
+procedure DivMod(Dividend: LongInt; Divisor: Word; var Result, Remainder: Word);
begin
if Dividend < 0 then
begin
@@ -2195,7 +2272,7 @@ begin
end;
-procedure DivMod(Dividend: Integer; Divisor: Word; var Result, Remainder: SmallInt);
+procedure DivMod(Dividend: LongInt; Divisor: Word; var Result, Remainder: SmallInt);
begin
if Dividend < 0 then
begin
@@ -2223,7 +2300,7 @@ begin
end;
-procedure DivMod(Dividend: Integer; Divisor: Integer; var Result, Remainder: Integer);
+procedure DivMod(Dividend: LongInt; Divisor: LongInt; var Result, Remainder: LongInt);
begin
if Dividend < 0 then
begin
diff --git a/rtl/objpas/objpas.pp b/rtl/objpas/objpas.pp
index af2e75a7ba..8e29605604 100644
--- a/rtl/objpas/objpas.pp
+++ b/rtl/objpas/objpas.pp
@@ -22,25 +22,33 @@ unit objpas;
interface
{ first, in object pascal, the integer type must be redefined }
+{$ifdef CPU16}
+ const
+ MaxInt = MaxSmallint;
+ type
+ Integer = smallint;
+ PInteger = ^Integer;
+{$else CPU16}
const
MaxInt = MaxLongint;
type
Integer = longint;
PInteger = ^Integer;
+{$endif CPU16}
{ Ansistring are the default }
PString = PAnsiString;
{ array types }
{$ifdef CPU16}
- IntegerArray = array[0..$eff] of Integer;
+ IntegerArray = array[0..(32768 div SizeOf(Integer))-2] of Integer;
{$else CPU16}
IntegerArray = array[0..$effffff] of Integer;
{$endif CPU16}
TIntegerArray = IntegerArray;
PIntegerArray = ^IntegerArray;
{$ifdef CPU16}
- PointerArray = array [0..16*1024-2] of Pointer;
+ PointerArray = array [0..(32768 div SizeOf(Pointer))-2] of Pointer;
{$else CPU16}
PointerArray = array [0..512*1024*1024-2] of Pointer;
{$endif CPU16}
@@ -295,7 +303,7 @@ Type
end;
TResourceStringTableList = Packed Record
- Count : nativeint;
+ Count : sizeint;
Tables : Array[{$ifdef cpu16}Byte{$else cpu16}Word{$endif cpu16}] of record
TableStart,
TableEnd : PResourceStringRecord;
@@ -311,7 +319,7 @@ Type
end;
TResStrInitTable = packed record
- Count: {$ifdef VER2_6}longint{$else}nativeint{$endif};
+ Count: {$ifdef VER2_6}longint{$else}sizeint{$endif};
Tables: packed array[1..{$ifdef cpu16}8191{$else cpu16}32767{$endif cpu16}] of PResStrInitEntry;
end;
@@ -320,7 +328,7 @@ var
procedure UpdateResourceStringRefs;
var
- i: nativeint;
+ i: integer;
ptable: PResStrInitEntry;
begin
for i:=1 to ResStrInitTable.Count do
@@ -341,7 +349,7 @@ Var
Procedure SetResourceStrings (SetFunction : TResourceIterator;arg:pointer);
Var
ResStr : PResourceStringRecord;
- i : nativeint;
+ i : integer;
s : AnsiString;
begin
With ResourceStringTable do
@@ -369,7 +377,7 @@ end;
Procedure SetUnitResourceStrings (const UnitName:string;SetFunction : TResourceIterator;arg:pointer);
Var
ResStr : PResourceStringRecord;
- i : nativeint;
+ i : integer;
s,
UpUnitName : AnsiString;
begin
@@ -403,7 +411,7 @@ end;
Procedure ResetResourceTables;
Var
ResStr : PResourceStringRecord;
- i : nativeint;
+ i : integer;
begin
With ResourceStringTable do
begin
@@ -425,7 +433,7 @@ end;
Procedure FinalizeResourceTables;
Var
ResStr : PResourceStringRecord;
- i : nativeint;
+ i : integer;
begin
With ResourceStringTable do
begin
diff --git a/rtl/objpas/sysutils/dati.inc b/rtl/objpas/sysutils/dati.inc
index 165d866de8..a832d87bd8 100644
--- a/rtl/objpas/sysutils/dati.inc
+++ b/rtl/objpas/sysutils/dati.inc
@@ -160,7 +160,10 @@ begin
end
else
begin
- Date:=Date+1/(msecsperday*2);
+ if Date>0 then
+ Date:=Date+1/(msecsperday*2)
+ else
+ Date:=Date-1/(msecsperday*2);
j := pred((Trunc(System.Int(Date)) + 693900) SHL 2);
ly:= j DIV 146097;
j:= j - 146097 * cardinal(ly);
@@ -368,6 +371,8 @@ var
YearMoreThenTwoDigits : boolean;
begin
ErrorMsg:=''; Result:=0;
+ While (Len>0) and (S[Len-1] in [' ',#8,#9,#10,#12,#13]) do
+ Dec(len);
if (Len=0) then
begin
FixErrorMsg(SInvalidDateFormat,'');
diff --git a/rtl/objpas/sysutils/datih.inc b/rtl/objpas/sysutils/datih.inc
index b8dde2ea2b..76f66272a5 100644
--- a/rtl/objpas/sysutils/datih.inc
+++ b/rtl/objpas/sysutils/datih.inc
@@ -89,8 +89,8 @@ type
{$endif windows}
TTimeStamp = record
- Time: integer; { Number of milliseconds since midnight }
- Date: integer; { One plus number of days since 1/1/0001 }
+ Time: longint; { Number of milliseconds since midnight }
+ Date: longint; { One plus number of days since 1/1/0001 }
end ;
diff --git a/rtl/objpas/sysutils/sysstr.inc b/rtl/objpas/sysutils/sysstr.inc
index 271ec667c8..4f183440ef 100644
--- a/rtl/objpas/sysutils/sysstr.inc
+++ b/rtl/objpas/sysutils/sysstr.inc
@@ -723,7 +723,7 @@ end ;
{ IntToStr returns a string representing the value of Value }
-function IntToStr(Value: integer): string;
+function IntToStr(Value: Longint): string;
begin
System.Str(Value, result);
end ;
@@ -745,7 +745,7 @@ end ;
const
HexDigits: array[0..15] of char = '0123456789ABCDEF';
-function IntToHex(Value: integer; Digits: integer): string;
+function IntToHex(Value: Longint; Digits: integer): string;
var i: integer;
begin
If Digits=0 then
@@ -784,7 +784,7 @@ begin
result:=IntToHex(Int64(Value),Digits);
end;
-function TryStrToInt(const s: string; out i : integer) : boolean;
+function TryStrToInt(const s: string; out i : Longint) : boolean;
var Error : word;
begin
Val(s, i, Error);
@@ -794,7 +794,7 @@ end;
{ StrToInt converts the string S to an integer value,
if S does not represent a valid integer value EConvertError is raised }
-function StrToInt(const S: string): integer;
+function StrToInt(const S: string): Longint;
var Error: word;
begin
Val(S, result, Error);
@@ -836,7 +836,7 @@ end;
{ StrToIntDef converts the string S to an integer value,
Default is returned in case S does not represent a valid integer value }
-function StrToIntDef(const S: string; Default: integer): integer;
+function StrToIntDef(const S: string; Default: Longint): Longint;
var Error: word;
begin
Val(S, result, Error);
diff --git a/rtl/objpas/sysutils/sysstrh.inc b/rtl/objpas/sysutils/sysstrh.inc
index 81ca37a47f..71f5b7ef9f 100644
--- a/rtl/objpas/sysutils/sysstrh.inc
+++ b/rtl/objpas/sysutils/sysstrh.inc
@@ -104,19 +104,19 @@ function AnsiExtractQuotedStr(var Src: PChar; Quote: Char): string;
function AdjustLineBreaks(const S: string): string;
function AdjustLineBreaks(const S: string; Style: TTextLineBreakStyle): string;
function IsValidIdent(const Ident: string): boolean;
-function IntToStr(Value: integer): string;
+function IntToStr(Value: Longint): string;
function IntToStr(Value: Int64): string;
function IntToStr(Value: QWord): string;
-function IntToHex(Value: integer; Digits: integer): string;
+function IntToHex(Value: Longint; Digits: integer): string;
function IntToHex(Value: Int64; Digits: integer): string;
function IntToHex(Value: QWord; Digits: integer): string;
-function StrToInt(const s: string): integer;
-function TryStrToInt(const s: string; Out i : integer) : boolean;
+function StrToInt(const s: string): Longint;
+function TryStrToInt(const s: string; Out i : Longint) : boolean;
function StrToInt64(const s: string): int64;
function TryStrToInt64(const s: string; Out i : int64) : boolean;
function StrToQWord(const s: string): QWord;
function TryStrToQWord(const s: string; Out Q : QWord) : boolean;
-function StrToIntDef(const S: string; Default: integer): integer;
+function StrToIntDef(const S: string; Default: Longint): Longint;
function StrToInt64Def(const S: string; Default: int64): int64;
function StrToQWordDef(const S: string; Default: QWord): QWord;
function LoadStr(Ident: integer): string;
diff --git a/rtl/objpas/sysutils/sysuthrd.inc b/rtl/objpas/sysutils/sysuthrd.inc
index eb067d1b42..a2a692a46f 100644
--- a/rtl/objpas/sysutils/sysuthrd.inc
+++ b/rtl/objpas/sysutils/sysuthrd.inc
@@ -50,17 +50,21 @@ begin
System.InitCriticalSection(fwritelock);
fwaitingwriterlock:=RTLEventCreate;
RTLEventResetEvent(fwaitingwriterlock);
- { make sure all threads see the initialisation of fwritelock and
- freadercount (we only use atomic operation further on as well) }
+ { atomic initialisation because BeginRead does not contain a memory barrier
+ before it modifies freadercount (with an atomic operation), so we have
+ to ensure that it sees this initial value }
System.InterlockedExchange(freadercount,0);
- System.InterlockedExchange(fwritelocked,0);
+ fwritelocked:=0;
freaderqueue:=BasicEventCreate(nil,true,false,'');
+ { synchronize initialization with later reads/writes }
+ ReadWriteBarrier;
end;
destructor TMultiReadExclusiveWriteSynchronizer.Destroy;
begin
- System.InterlockedExchange(fwritelocked,0);
+ { synchronize destruction with previous endread/write operations }
+ ReadWriteBarrier;
System.DoneCriticalSection(fwritelock);
RtlEventDestroy(fwaitingwriterlock);
BasicEventDestroy(freaderqueue);
@@ -85,13 +89,13 @@ begin
decrement instead of setting 1/0, because a single thread can
recursively acquire the write lock multiple times }
System.InterlockedIncrement(fwritelocked);
+ { order increment vs freadercount check }
+ ReadWriteBarrier;
- { wait until all readers are gone -- freadercount and fwritelocked are only
- accessed using atomic operations (that's why we use
- InterLockedExchangeAdd(x,0) below) -> always in-order. The writer always
- first sets fwritelocked and then checks freadercount, while the readers
+ { wait until all readers are gone. The writer always first sets
+ fwritelocked and then checks freadercount, while the readers
always first increase freadercount and then check fwritelocked }
- while (System.InterLockedExchangeAdd(freadercount,0)<>0) do
+ while freadercount<>0 do
RTLEventWaitFor(fwaitingwriterlock);
{ Make sure that out-of-order execution cannot already perform reads
@@ -106,7 +110,7 @@ end;
procedure TMultiReadExclusiveWriteSynchronizer.Endwrite;
begin
{ Finish all writes inside the section so that everything executing
- afterwards will certainly see these results }
+ afterwards will certainly see those results }
WriteBarrier;
{ signal potential readers that the coast is clear if all recursive
@@ -133,12 +137,16 @@ Const
wrError = 3;
begin
System.InterlockedIncrement(freadercount);
+ { order vs fwritelocked check }
+ ReadWriteBarrier;
{ wait until there is no more writer }
- while System.InterLockedExchangeAdd(fwritelocked,0)<>0 do
+ while fwritelocked<>0 do
begin
{ there's a writer busy or wanting to start -> wait until it's
finished; a writer may already be blocked in the mean time, so
- wake it up if we're the last to go to sleep }
+ wake it up if we're the last to go to sleep -- order frwritelocked
+ check above vs freadercount check/modification below }
+ ReadWriteBarrier;
if System.InterlockedDecrement(freadercount)=0 then
RTLEventSetEvent(fwaitingwriterlock);
if (BasicEventWaitFor(high(cardinal),freaderqueue) in [wrAbandoned,wrError]) then
@@ -146,23 +154,31 @@ begin
{ and try again: first increase freadercount, only then check
fwritelocked }
System.InterlockedIncrement(freadercount);
+ { order vs fwritelocked check at the start of the loop }
+ ReadWriteBarrier;
end;
- { Make sure that out-of-order execution cannot perform reads
- inside the critical section before the lock has been acquired }
- ReadBarrier;
end;
procedure TMultiReadExclusiveWriteSynchronizer.Endread;
begin
+ { order freadercount decrement to all operations in the critical section
+ (otherwise, freadercount could become zero in another thread/cpu before
+ all reads in the protected section were committed, so a writelock could
+ become active and change things that we will still see) }
+ ReadWriteBarrier;
{ If no more readers, wake writer in the ready-queue if any. Since a writer
- always first atomically sets fwritelocked and then atomically checks the
- freadercount, first modifying freadercount and then checking fwritelock
+ always first sets fwritelocked and then checks the freadercount (with a
+ barrier in between) first modifying freadercount and then checking fwritelock
ensures that we cannot miss one of the events regardless of execution
order. }
- if (System.InterlockedDecrement(freadercount)=0) and
- (System.InterLockedExchangeAdd(fwritelocked,0)<>0) then
- RTLEventSetEvent(fwaitingwriterlock);
+ if System.InterlockedDecrement(freadercount)=0 then
+ begin
+ { order fwritelocked check vs freadercount modification }
+ ReadWriteBarrier;
+ if fwritelocked<>0 then
+ RTLEventSetEvent(fwaitingwriterlock);
+ end;
end;
{$endif FPC_HAS_FEATURE_THREADING}
diff --git a/rtl/objpas/sysutils/sysutilh.inc b/rtl/objpas/sysutils/sysutilh.inc
index 905a8e88e6..18ca2c2472 100644
--- a/rtl/objpas/sysutils/sysutilh.inc
+++ b/rtl/objpas/sysutils/sysutilh.inc
@@ -113,12 +113,12 @@ type
constructor CreateFmt(const msg : string; const args : array of const);
constructor CreateRes(ResString: PString);
constructor CreateResFmt(ResString: PString; const Args: array of const);
- constructor CreateHelp(const Msg: string; AHelpContext: Integer);
+ constructor CreateHelp(const Msg: string; AHelpContext: Longint);
constructor CreateFmtHelp(const Msg: string; const Args: array of const;
- AHelpContext: Integer);
- constructor CreateResHelp(ResString: PString; AHelpContext: Integer);
+ AHelpContext: Longint);
+ constructor CreateResHelp(ResString: PString; AHelpContext: Longint);
constructor CreateResFmtHelp(ResString: PString; const Args: array of const;
- AHelpContext: Integer);
+ AHelpContext: Longint);
Function ToString : String; override;
{ !!!! }
property HelpContext : longint read fhelpcontext write fhelpcontext;
@@ -156,7 +156,7 @@ type
{ Run-time and I/O Errors }
EInOutError = class(Exception)
public
- ErrorCode : Longint;
+ ErrorCode : Integer;
end;
EHeapMemoryError = class(Exception)
diff --git a/rtl/objpas/sysutils/sysutils.inc b/rtl/objpas/sysutils/sysutils.inc
index 815c13815e..12067f969c 100644
--- a/rtl/objpas/sysutils/sysutils.inc
+++ b/rtl/objpas/sysutils/sysutils.inc
@@ -194,7 +194,7 @@ end;
end;
- constructor Exception.CreateHelp(const Msg: string; AHelpContext: Integer);
+ constructor Exception.CreateHelp(const Msg: string; AHelpContext: Longint);
begin
inherited create;
@@ -204,7 +204,7 @@ end;
constructor Exception.CreateFmtHelp(const Msg: string; const Args: array of const;
- AHelpContext: Integer);
+ AHelpContext: Longint);
begin
inherited create;
@@ -213,7 +213,7 @@ end;
end;
- constructor Exception.CreateResHelp(ResString: PString; AHelpContext: Integer);
+ constructor Exception.CreateResHelp(ResString: PString; AHelpContext: Longint);
begin
inherited create;
@@ -223,7 +223,7 @@ end;
constructor Exception.CreateResFmtHelp(ResString: PString; const Args: array of const;
- AHelpContext: Integer);
+ AHelpContext: Longint);
begin
inherited create;
@@ -291,10 +291,7 @@ Var
hstdout : ^text;
begin
hstdout:=@stdout;
-{$if defined(CPUI8086) and (defined(FPC_MM_MEDIUM) or defined(FPC_MM_LARGE) or defined(FPC_MM_HUGE))}
-{$else}
Writeln(hstdout^,'An unhandled exception occurred at $',HexStr(Addr),':');
-{$endif}
if Obj is exception then
Writeln(hstdout^,Obj.ClassName,': ',Exception(Obj).Message)
else
@@ -698,7 +695,7 @@ function SafeLoadLibrary(const FileName: AnsiString;
{$ifdef cpui386}
if has_sse_support then
{$endif cpui386}
- ssecw:=GetSSECSR;
+ ssecw:=GetMXCSR;
{$endif}
{$if defined(windows) or defined(win32)}
Result:=LoadLibraryA(PChar(Filename));
@@ -711,7 +708,7 @@ function SafeLoadLibrary(const FileName: AnsiString;
{$ifdef cpui386}
if has_sse_support then
{$endif cpui386}
- SetSSECSR(ssecw);
+ SetMXCSR(ssecw);
{$endif}
{$if defined(win64) or defined(win32)}
SetErrorMode(mode);
diff --git a/rtl/objpas/typinfo.pp b/rtl/objpas/typinfo.pp
index 8aa08f3068..3b44545d41 100644
--- a/rtl/objpas/typinfo.pp
+++ b/rtl/objpas/typinfo.pp
@@ -299,7 +299,7 @@ unit typinfo;
TProcInfoProc = Procedure(PropInfo : PPropInfo) of object;
PPropList = ^TPropList;
- TPropList = array[0..{$ifdef cpu16}32765 div sizeof(PPropInfo){$else}65535{$endif}] of PPropInfo;
+ TPropList = array[0..{$ifdef cpu16}(32768 div sizeof(PPropInfo))-2{$else}65535{$endif}] of PPropInfo;
const
tkString = tkSString;
diff --git a/rtl/openbsd/Makefile b/rtl/openbsd/Makefile
index 0ca77b83f7..3dd677e043 100644
--- a/rtl/openbsd/Makefile
+++ b/rtl/openbsd/Makefile
@@ -1,8 +1,8 @@
#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-04-01 rev 27428]
#
default: all
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos
BSDs = freebsd netbsd openbsd darwin
UNIXs = linux $(BSDs) solaris qnx haiku aix
LIMIT83fs = go32v2 os2 emx watcom msdos
@@ -185,6 +185,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t
endif
override FPCOPT+=-Cp$(SUBARCH)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+ifeq ($(SUBARCH),)
+$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined)
+endif
+override FPCOPT+=-Cp$(SUBARCH)
+endif
ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
TARGETSUFFIX=$(OS_TARGET)
SOURCESUFFIX=$(OS_SOURCE)
@@ -355,448 +361,454 @@ ifndef USELIBGGI
USELIBGGI=NO
endif
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos printer rtlconsts sysutils fgl classes typinfo math charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf errors ipc terminfo strutils serial types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp clocale
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd initc $(CPU_UNITS) dos rtlconsts sysutils fgl classes typinfo math charset cpall character getopts heaptrc lineinfo lnfodwrf errors types sysctl sysconst fpintres dynlibs cwstring cmem dl termio cthreads unixcp
endif
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-linux)
override TARGET_LOADERS+=prt0 cprt0 dllprt0
@@ -1008,6 +1020,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_LOADERS+=prt0 cprt0 dllprt0
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_LOADERS+=prt0 cprt0 dllprt0
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_LOADERS+=prt0 cprt0 dllprt0
endif
@@ -1230,6 +1245,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_RSTS+=math typinfo classes sysconst
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_RSTS+=math typinfo classes sysconst
endif
@@ -1453,6 +1471,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(BSDINC) $(BSDPROCINC) $(TARGETPROCINC)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(BSDINC) $(BSDPROCINC) $(TARGETPROCINC)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(BSDINC) $(BSDPROCINC) $(TARGETPROCINC)
endif
@@ -1675,6 +1696,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(BSDINC)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(BSDINC)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(BSDINC)
endif
@@ -2468,17 +2492,23 @@ ifdef ACROSSCOMPILE
override FPCOPT+=$(CROSSOPT)
endif
override COMPILER:=$(strip $(FPC) $(FPCOPT))
-ifeq (,$(findstring -s ,$(COMPILER)))
+ifneq (,$(findstring -sh ,$(COMPILER)))
+UseEXECPPAS=1
+endif
+ifneq (,$(findstring -s ,$(COMPILER)))
+ifeq ($(FULL_SOURCE),$(FULL_TARGET))
+UseEXECPPAS=1
+endif
+endif
+ifneq ($(UseEXECPPAS),1)
EXECPPAS=
else
-ifeq ($(FULL_SOURCE),$(FULL_TARGET))
ifdef RUNBATCH
EXECPPAS:=@$(RUNBATCH) $(PPAS)
else
EXECPPAS:=@$(PPAS)
endif
endif
-endif
.PHONY: fpc_loaders
ifneq ($(TARGET_LOADERS),)
override ALLTARGET+=fpc_loaders
@@ -2885,8 +2915,6 @@ $(SYSTEMUNIT)$(PPUEXT) : $(BSDINC)/$(SYSTEMUNIT).pp sysconst.inc systypes.inc sy
uuchar$(PPUEXT): $(SYSTEMUNIT)$(PPUEXT) $(INC)/uuchar.pp
objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/objpas.pp
-dateutils$(PPUEXT): $(OBJPASDIR)/dateutils.pp baseunix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/dateutils.pp
strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc\
$(PROCINC)/strings.inc $(PROCINC)/stringss.inc\
$(SYSTEMUNIT)$(PPUEXT)
@@ -2904,15 +2932,12 @@ unixcp$(PPUEXT) : $(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) ba
$(COMPILER) $(UNIXINC)/unixcp.pp
dos$(PPUEXT) : $(UNIXINC)/dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \
unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-crt$(PPUEXT) : $(UNIXINC)/crt.pp $(INC)/textrec.inc unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-objects$(PPUEXT) : $(INC)/objects.pp $(SYSTEMUNIT)$(PPUEXT)
-printer$(PPUEXT) : $(UNIXINC)/printer.pp $(INC)/textrec.inc unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
sysutils$(PPUEXT) : $(UNIXINC)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
objpas$(PPUEXT) unix$(PPUEXT) errors$(PPUEXT) sysconst$(PPUEXT)
$(COMPILER) -Fi$(OBJPASDIR)/sysutils $(UNIXINC)/sysutils.pp
-classes$(PPUEXT) : classes.pp $(wildcard $(OBJPASDIR)/classes/*.inc) \
+classes$(PPUEXT) : $(UNIXINC)/classes.pp $(wildcard $(OBJPASDIR)/classes/*.inc) \
sysutils$(PPUEXT) typinfo$(PPUEXT) fgl$(PPUEXT)
- $(COMPILER) -Fi$(OBJPASDIR)/classes classes.pp
+ $(COMPILER) -Fi$(OBJPASDIR)/classes $(UNIXINC)/classes.pp
fgl$(PPUEXT) : $(OBJPASDIR)/fgl.pp objpas$(PPUEXT) types$(PPUEXT) system$(PPUEXT) sysutils$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/fgl.pp
rtlconsts$(PPUEXT) : $(OBJPASDIR)/rtlconsts.pp
@@ -2921,30 +2946,12 @@ typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT)
$(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp
math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/math.pp
-gettext$(PPUEXT): $(OBJPASDIR)/gettext.pp objpas$(PPUEXT) sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/gettext.pp
-varutils$(PPUEXT) : $(OBJPASDIR)/cvarutil.inc $(OBJPASDIR)/varutils.inc \
- $(OBJPASDIR)/varutilh.inc varutils.pp
- $(COMPILER) -I$(OBJPASDIR) $(UNIXINC)/varutils.pp
-strutils$(PPUEXT) : $(OBJPASDIR)/strutils.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/strutils.pp
-variants$(PPUEXT) : $(INC)/variants.pp sysutils$(PPUEXT) sysconst$(PPUEXT) varutils$(PPUEXT) typinfo$(PPUEXT) rtlconsts$(PPUEXT) math$(PPUEXT)
- $(COMPILER) -Fi$(INC) $(INC)/variants.pp
-fmtbcd$(PPUEXT) : $(OBJPASDIR)/fmtbcd.pp objpas$(PPUEXT) sysutils$(PPUEXT) variants$(PPUEXT) classes$(PPUEXT) system$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/fmtbcd.pp
types$(PPUEXT) : $(OBJPASDIR/types.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/types.pp
ctypes$(PPUEXT) : $(INC)/ctypes.pp $(SYSTEMUNIT)$(PPUEXT)
-convutils$(PPUEXT) : $(OBJPASDIR)/convutils.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/convutils.pp
-stdconvs$(PPUEXT) : $(OBJPASDIR)/stdconvs.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/stdconvs.pp
dynlibs$(PPUEXT) : $(INC)/dynlibs.pas $(UNIXINC)/dynlibs.inc dl$(PPUEXT) objpas$(PPUEXT)
cwstring$(PPUEXT) : $(UNIXINC)/cwstring.pp $(SYSTEMUNIT)$(PPUEXT) sysutils$(PPUEXT) baseunix$(PPUEXT) unix$(PPUEXT) unixtype$(PPUEXT) ctypes$(PPUEXT) dynlibs$(PPUEXT)
-character$(PPUEXT): sysutils$(PPUEXT) $(OBJPASDIR)/character.pas objpas$(PPUEXT) rtlconsts$(PPUEXT) buildcollations$(PPUEXT)
+character$(PPUEXT): sysutils$(PPUEXT) $(OBJPASDIR)/character.pas objpas$(PPUEXT) rtlconsts$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/character.pas
macpas$(PPUEXT) : $(INC)/macpas.pp objpas$(PPUEXT) math$(PPUEXT)
$(COMPILER) $(INC)/macpas.pp $(REDIR)
@@ -2962,13 +2969,7 @@ lnfodwrf$(PPUEXT) : $(INC)/lnfodwrf.pp $(SYSTEMUNIT)$(PPUEXT)
charset$(PPUEXT) : $(INC)/charset.pp $(SYSTEMUNIT)$(PPUEXT)
cpall$(PPUEXT): $(RTL)/charmaps/cpall.pas system$(PPUEXT) charset$(PPUEXT)
$(COMPILER) -Fu$(INC) -Fi$(RTL)/charmaps $(RTL)/charmaps/cpall.pas
-buildcollations$(PPUEXT): $(OBJPASDIR)/collations/buildcollations.pas system$(PPUEXT) objpas$(PPUEXT) sysutils$(PPUEXT)
- $(COMPILER) -Fu$(OBJPASDIR) -Fi$(OBJPASDIR)/collations -I$(OBJPASDIR)/collations $(OBJPASDIR)/collations/buildcollations.pas
-matrix$(PPUEXT) : $(INC)/matrix.pp $(SYSTEMUNIT)$(PPUEXT)
-ucomplex$(PPUEXT) : $(INC)/ucomplex.pp math$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
errors$(PPUEXT) : $(UNIXINC)/errors.pp strings$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-ipc$(PPUEXT) : $(UNIXINC)/ipc.pp unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-terminfo$(PPUEXT) : terminfo.pp unix$(PPUEXT)
callspec$(PPUEXT) : $(INC)/callspec.pp $(SYSTEMUNIT)$(PPUEXT)
sysctl$(PPUEXT) : $(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) syscall$(PPUEXT) unixtype$(PPUEXT)
syscall$(PPUEXT) : $(UNIXINC)/syscall.pp
@@ -2977,5 +2978,3 @@ sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUE
cthreads$(PPUEXT) : $(UNIXINC)/cthreads.pp
rtlconst$(PPUEXT) : $(OBJPASDIR)/rtlconst.pp
$(COMPILER) $(OBJPASDIR)/rtlconst.pp
-mouse$(PPUEXT) : $(UNIXINC)/mouse.pp
- $(COMPILER) -dNOMOUSE $(UNIXINC)/mouse.pp
diff --git a/rtl/openbsd/Makefile.fpc b/rtl/openbsd/Makefile.fpc
index 84df56ac88..5fc8c41052 100644
--- a/rtl/openbsd/Makefile.fpc
+++ b/rtl/openbsd/Makefile.fpc
@@ -12,20 +12,19 @@ fpcpackage=y
loaders=prt0 cprt0 dllprt0
units=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings syscall baseunix \
$(LINUXUNIT) unixtype unixutil unix ctypes bsd initc \
- $(CPU_UNITS) dos printer rtlconsts \
+ $(CPU_UNITS) dos rtlconsts \
sysutils fgl classes typinfo math \
- charset cpall buildcollations character getopts heaptrc lineinfo lnfodwrf \
- errors ipc terminfo strutils \
- serial types sysctl sysconst \
+ charset cpall character getopts heaptrc lineinfo lnfodwrf \
+ errors \
+ types sysctl sysconst \
fpintres dynlibs cwstring cmem dl termio \
- cthreads unixcp clocale
+ cthreads unixcp
rsts=math typinfo classes sysconst
implicitunits=exeinfo \
cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 \
- cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 \
- unicodedata unicodeducet unicodenumtable \
- collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+ cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 \
+ unicodedata unicodenumtable
[require]
nortl=y
@@ -47,10 +46,10 @@ libname=libfprtl.so
libversion=2.0.0
libunits=$(SYSTEMUNIT) objpas strings \
unix \
- dos crt objects printer \
+ dos \
sysutils typinfo math \
cpu mmx getopts heaptrc \
- errors ipc
+ errors
[prerules]
RTL=..
@@ -144,9 +143,6 @@ uuchar$(PPUEXT): $(SYSTEMUNIT)$(PPUEXT) $(INC)/uuchar.pp
objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/objpas.pp
-dateutils$(PPUEXT): $(OBJPASDIR)/dateutils.pp baseunix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/dateutils.pp
-
strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc\
$(PROCINC)/strings.inc $(PROCINC)/stringss.inc\
$(SYSTEMUNIT)$(PPUEXT)
@@ -180,12 +176,6 @@ unixcp$(PPUEXT) : $(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) ba
dos$(PPUEXT) : $(UNIXINC)/dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \
unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-crt$(PPUEXT) : $(UNIXINC)/crt.pp $(INC)/textrec.inc unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-
-objects$(PPUEXT) : $(INC)/objects.pp $(SYSTEMUNIT)$(PPUEXT)
-
-printer$(PPUEXT) : $(UNIXINC)/printer.pp $(INC)/textrec.inc unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-
#
# Graph
#
@@ -198,9 +188,9 @@ sysutils$(PPUEXT) : $(UNIXINC)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.in
objpas$(PPUEXT) unix$(PPUEXT) errors$(PPUEXT) sysconst$(PPUEXT)
$(COMPILER) -Fi$(OBJPASDIR)/sysutils $(UNIXINC)/sysutils.pp
-classes$(PPUEXT) : classes.pp $(wildcard $(OBJPASDIR)/classes/*.inc) \
+classes$(PPUEXT) : $(UNIXINC)/classes.pp $(wildcard $(OBJPASDIR)/classes/*.inc) \
sysutils$(PPUEXT) typinfo$(PPUEXT) fgl$(PPUEXT)
- $(COMPILER) -Fi$(OBJPASDIR)/classes classes.pp
+ $(COMPILER) -Fi$(OBJPASDIR)/classes $(UNIXINC)/classes.pp
fgl$(PPUEXT) : $(OBJPASDIR)/fgl.pp objpas$(PPUEXT) types$(PPUEXT) system$(PPUEXT) sysutils$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/fgl.pp
@@ -214,42 +204,17 @@ typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT)
math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/math.pp
-gettext$(PPUEXT): $(OBJPASDIR)/gettext.pp objpas$(PPUEXT) sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/gettext.pp
-
-varutils$(PPUEXT) : $(OBJPASDIR)/cvarutil.inc $(OBJPASDIR)/varutils.inc \
- $(OBJPASDIR)/varutilh.inc varutils.pp
- $(COMPILER) -I$(OBJPASDIR) $(UNIXINC)/varutils.pp
-
-strutils$(PPUEXT) : $(OBJPASDIR)/strutils.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/strutils.pp
-
-variants$(PPUEXT) : $(INC)/variants.pp sysutils$(PPUEXT) sysconst$(PPUEXT) varutils$(PPUEXT) typinfo$(PPUEXT) rtlconsts$(PPUEXT) math$(PPUEXT)
- $(COMPILER) -Fi$(INC) $(INC)/variants.pp
-
-fmtbcd$(PPUEXT) : $(OBJPASDIR)/fmtbcd.pp objpas$(PPUEXT) sysutils$(PPUEXT) variants$(PPUEXT) classes$(PPUEXT) system$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/fmtbcd.pp
-
types$(PPUEXT) : $(OBJPASDIR/types.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/types.pp
ctypes$(PPUEXT) : $(INC)/ctypes.pp $(SYSTEMUNIT)$(PPUEXT)
-convutils$(PPUEXT) : $(OBJPASDIR)/convutils.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/convutils.pp
-
-stdconvs$(PPUEXT) : $(OBJPASDIR)/stdconvs.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/stdconvs.pp
-
dynlibs$(PPUEXT) : $(INC)/dynlibs.pas $(UNIXINC)/dynlibs.inc dl$(PPUEXT) objpas$(PPUEXT)
cwstring$(PPUEXT) : $(UNIXINC)/cwstring.pp $(SYSTEMUNIT)$(PPUEXT) sysutils$(PPUEXT) baseunix$(PPUEXT) unix$(PPUEXT) unixtype$(PPUEXT) ctypes$(PPUEXT) dynlibs$(PPUEXT)
# let it depend on buildcollations to prevent simultaneous building of unicodedata
-character$(PPUEXT): sysutils$(PPUEXT) $(OBJPASDIR)/character.pas objpas$(PPUEXT) rtlconsts$(PPUEXT) buildcollations$(PPUEXT)
+character$(PPUEXT): sysutils$(PPUEXT) $(OBJPASDIR)/character.pas objpas$(PPUEXT) rtlconsts$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/character.pas
#
@@ -285,12 +250,6 @@ charset$(PPUEXT) : $(INC)/charset.pp $(SYSTEMUNIT)$(PPUEXT)
cpall$(PPUEXT): $(RTL)/charmaps/cpall.pas system$(PPUEXT) charset$(PPUEXT)
$(COMPILER) -Fu$(INC) -Fi$(RTL)/charmaps $(RTL)/charmaps/cpall.pas
-buildcollations$(PPUEXT): $(OBJPASDIR)/collations/buildcollations.pas system$(PPUEXT) objpas$(PPUEXT) sysutils$(PPUEXT)
- $(COMPILER) -Fu$(OBJPASDIR) -Fi$(OBJPASDIR)/collations -I$(OBJPASDIR)/collations $(OBJPASDIR)/collations/buildcollations.pas
-
-matrix$(PPUEXT) : $(INC)/matrix.pp $(SYSTEMUNIT)$(PPUEXT)
-ucomplex$(PPUEXT) : $(INC)/ucomplex.pp math$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-
#
# Other system-dependent RTL Units
#
@@ -298,10 +257,6 @@ ucomplex$(PPUEXT) : $(INC)/ucomplex.pp math$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
errors$(PPUEXT) : $(UNIXINC)/errors.pp strings$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-ipc$(PPUEXT) : $(UNIXINC)/ipc.pp unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-
-terminfo$(PPUEXT) : terminfo.pp unix$(PPUEXT)
-
callspec$(PPUEXT) : $(INC)/callspec.pp $(SYSTEMUNIT)$(PPUEXT)
sysctl$(PPUEXT) : $(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) syscall$(PPUEXT) unixtype$(PPUEXT)
@@ -316,5 +271,3 @@ cthreads$(PPUEXT) : $(UNIXINC)/cthreads.pp
rtlconst$(PPUEXT) : $(OBJPASDIR)/rtlconst.pp
$(COMPILER) $(OBJPASDIR)/rtlconst.pp
-mouse$(PPUEXT) : $(UNIXINC)/mouse.pp
- $(COMPILER) -dNOMOUSE $(UNIXINC)/mouse.pp
diff --git a/rtl/openbsd/classes.pp b/rtl/openbsd/classes.pp
deleted file mode 100644
index 2918878c09..0000000000
--- a/rtl/openbsd/classes.pp
+++ /dev/null
@@ -1,53 +0,0 @@
-{
- This file is part of the Free Component Library (FCL)
- Copyright (c) 1999-2000 by Michael Van Canneyt and Florian Klaempfl
-
- Classes unit for OpenBSD
-
- 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.
-
- **********************************************************************}
-
-{$mode objfpc}
-
-{ determine the type of the resource/form file }
-{$define Win16Res}
-
-unit Classes;
-
-interface
-
-uses
- sysutils,
- rtlconsts,
- types,
-{$ifdef FPC_TESTGENERICS}
- fgl,
-{$endif}
- typinfo;
-
-{$i classesh.inc}
-
-implementation
-
-uses
- baseunix,unix;
-
-{ OS - independent class implementations are in /inc directory. }
-{$i classes.inc}
-
-
-initialization
- CommonInit;
-
-finalization
- CommonCleanup;
-
- if ThreadsInited then
- DoneThreads;
-end.
diff --git a/rtl/openbsd/i386/sighnd.inc b/rtl/openbsd/i386/sighnd.inc
index c9a9da5005..2979c765b3 100644
--- a/rtl/openbsd/i386/sighnd.inc
+++ b/rtl/openbsd/i386/sighnd.inc
@@ -28,7 +28,7 @@ function getaltfpustate(sigcontext:psigcontextrec):longint; {inline;}
begin
if assigned(sigcontext) then
begin
- if mmx_support then
+ if has_mmx_support then
getaltfpustate:=sigcontext^.sc_fpustate^.xmmState.fx_fsw
else
getaltfpustate:=sigcontext^.sc_fpustate^.x87state.en_sw
diff --git a/rtl/os2/Makefile b/rtl/os2/Makefile
index 009abc0e01..cd98e1a082 100644
--- a/rtl/os2/Makefile
+++ b/rtl/os2/Makefile
@@ -1,8 +1,8 @@
#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-04-01 rev 27428]
#
default: all
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos
BSDs = freebsd netbsd openbsd darwin
UNIXs = linux $(BSDs) solaris qnx haiku aix
LIMIT83fs = go32v2 os2 emx watcom msdos
@@ -186,6 +186,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t
endif
override FPCOPT+=-Cp$(SUBARCH)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+ifeq ($(SUBARCH),)
+$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined)
+endif
+override FPCOPT+=-Cp$(SUBARCH)
+endif
ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
TARGETSUFFIX=$(OS_TARGET)
SOURCESUFFIX=$(OS_SOURCE)
@@ -339,448 +345,454 @@ endif
OBJPASDIR=$(RTL)/objpas
GRAPHDIR=$(INC)/graph
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos printer sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst strutils so32dll
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos sysutils fgl classes math typinfo charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs types rtlconst sysconst so32dll
endif
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-linux)
override TARGET_LOADERS+=prt0
@@ -992,6 +1004,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_LOADERS+=prt0
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_LOADERS+=prt0
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_LOADERS+=prt0
endif
@@ -1214,6 +1229,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_RSTS+=math typinfo pmhelp classes sysconst
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_RSTS+=math typinfo pmhelp classes sysconst
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_RSTS+=math typinfo pmhelp classes sysconst
endif
@@ -1437,6 +1455,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
endif
@@ -1659,6 +1680,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
endif
@@ -2452,17 +2476,23 @@ ifdef ACROSSCOMPILE
override FPCOPT+=$(CROSSOPT)
endif
override COMPILER:=$(strip $(FPC) $(FPCOPT))
-ifeq (,$(findstring -s ,$(COMPILER)))
+ifneq (,$(findstring -sh ,$(COMPILER)))
+UseEXECPPAS=1
+endif
+ifneq (,$(findstring -s ,$(COMPILER)))
+ifeq ($(FULL_SOURCE),$(FULL_TARGET))
+UseEXECPPAS=1
+endif
+endif
+ifneq ($(UseEXECPPAS),1)
EXECPPAS=
else
-ifeq ($(FULL_SOURCE),$(FULL_TARGET))
ifdef RUNBATCH
EXECPPAS:=@$(RUNBATCH) $(PPAS)
else
EXECPPAS:=@$(PPAS)
endif
endif
-endif
.PHONY: fpc_loaders
ifneq ($(TARGET_LOADERS),)
override ALLTARGET+=fpc_loaders
@@ -2889,9 +2919,6 @@ pmbidi$(PPUEXT) : pmbidi.pas os2def$(PPUEXT) pmwin$(PPUEXT) $(SYSTEMUNIT)$(PPUEX
dynlibs$(PPUEXT) : $(INC)/dynlibs.pas doscalls$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
dos$(PPUEXT) : dos.pas $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \
doscalls$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-crt$(PPUEXT) : crt.pas $(INC)/textrec.inc $(SYSTEMUNIT)$(PPUEXT)
-objects$(PPUEXT) : $(INC)/objects.pp dos$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-printer$(PPUEXT) : printer.pas $(INC)/textrec.inc $(SYSTEMUNIT)$(PPUEXT)
sysutils$(PPUEXT) : sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
objpas$(PPUEXT) doscalls$(PPUEXT) sysconst$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) -Fi$(OBJPASDIR)/sysutils sysutils.pp
@@ -2905,31 +2932,14 @@ math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT) $(SYSTEMUN
$(COMPILER) $(OBJPASDIR)/math.pp
typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT) rtlconst$(PPUEXT)
$(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp
-varutils$(PPUEXT) : $(OBJPASDIR)/cvarutil.inc $(OBJPASDIR)/varutils.inc \
- $(OBJPASDIR)/varutilh.inc varutils.pp sysutils$(PPUEXT)
- $(COMPILER) -Fi$(OBJPASDIR) varutils.pp
-variants$(PPUEXT) : $(INC)/variants.pp varutils$(PPUEXT) sysutils$(PPUEXT) sysconst$(PPUEXT) typinfo$(PPUEXT) rtlconst$(PPUEXT)
- $(COMPILER) -Fi$(INC) $(INC)/variants.pp
types$(PPUEXT) : $(OBJPASDIR)/types.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/types.pp
rtlconst$(PPUEXT) : $(OBJPASDIR)/rtlconst.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) -Fi$(OBJPASDIR) $(OBJPASDIR)/rtlconst.pp
sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/sysconst.pp
-dateutil$(PPUEXT) : $(OBJPASDIR)/dateutil.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) -Fi$(OBJPASDIR) $(OBJPASDIR)/dateutil.pp
-convutil$(PPUEXT) : $(OBJPASDIR)/convutil.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) -Fi$(OBJPASDIR) $(OBJPASDIR)/convutil.pp
-strutils$(PPUEXT) : $(OBJPASDIR)/strutils.pp sysutils$(PPUEXT) objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/strutils.pp
-stdconvs$(PPUEXT) : $(OBJPASDIR)/stdconvs.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/stdconvs.pp
-fmtbcd$(PPUEXT) : $(OBJPASDIR)/fmtbcd.pp objpas$(PPUEXT) sysutils$(PPUEXT) variants$(PPUEXT) classes$(PPUEXT) system$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/fmtbcd.pp
macpas$(PPUEXT) : $(INC)/macpas.pp objpas$(PPUEXT) math$(PPUEXT)
$(COMPILER) $(INC)/macpas.pp $(REDIR)
-ucomplex$(PPUEXT): $(INC)/ucomplex.pp math$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT)
mmx$(PPUEXT) : $(PROCINC)/mmx.pp cpu$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
getopts$(PPUEXT) : $(INC)/getopts.pp $(SYSTEMUNIT)$(PPUEXT)
diff --git a/rtl/os2/Makefile.fpc b/rtl/os2/Makefile.fpc
index 841dd8d53d..bdc78e468e 100644
--- a/rtl/os2/Makefile.fpc
+++ b/rtl/os2/Makefile.fpc
@@ -10,15 +10,15 @@ loaders=prt0
units=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings \
ports os2def doscalls moncalls kbdcalls moucalls viocalls \
pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi \
- dos printer \
+ dos \
sysutils fgl classes math typinfo \
charset cpall cpu mmx getopts heaptrc lineinfo lnfodwrf dynlibs \
types rtlconst sysconst \
- strutils so32dll
+ so32dll
rsts=math typinfo pmhelp classes sysconst
implicitunits=exeinfo \
cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 \
- cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+ cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
[require]
nortl=y
@@ -151,12 +151,6 @@ dynlibs$(PPUEXT) : $(INC)/dynlibs.pas doscalls$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
dos$(PPUEXT) : dos.pas $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \
doscalls$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-crt$(PPUEXT) : crt.pas $(INC)/textrec.inc $(SYSTEMUNIT)$(PPUEXT)
-
-objects$(PPUEXT) : $(INC)/objects.pp dos$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-
-printer$(PPUEXT) : printer.pas $(INC)/textrec.inc $(SYSTEMUNIT)$(PPUEXT)
-
#graph$(PPUEXT) : graph.pp
#
@@ -181,13 +175,6 @@ math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT) $(SYSTEMUN
typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT) rtlconst$(PPUEXT)
$(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp
-varutils$(PPUEXT) : $(OBJPASDIR)/cvarutil.inc $(OBJPASDIR)/varutils.inc \
- $(OBJPASDIR)/varutilh.inc varutils.pp sysutils$(PPUEXT)
- $(COMPILER) -Fi$(OBJPASDIR) varutils.pp
-
-variants$(PPUEXT) : $(INC)/variants.pp varutils$(PPUEXT) sysutils$(PPUEXT) sysconst$(PPUEXT) typinfo$(PPUEXT) rtlconst$(PPUEXT)
- $(COMPILER) -Fi$(INC) $(INC)/variants.pp
-
types$(PPUEXT) : $(OBJPASDIR)/types.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/types.pp
@@ -197,22 +184,6 @@ rtlconst$(PPUEXT) : $(OBJPASDIR)/rtlconst.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUE
sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/sysconst.pp
-dateutil$(PPUEXT) : $(OBJPASDIR)/dateutil.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) -Fi$(OBJPASDIR) $(OBJPASDIR)/dateutil.pp
-
-convutil$(PPUEXT) : $(OBJPASDIR)/convutil.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) -Fi$(OBJPASDIR) $(OBJPASDIR)/convutil.pp
-
-strutils$(PPUEXT) : $(OBJPASDIR)/strutils.pp sysutils$(PPUEXT) objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/strutils.pp
-
-stdconvs$(PPUEXT) : $(OBJPASDIR)/stdconvs.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/stdconvs.pp
-
-fmtbcd$(PPUEXT) : $(OBJPASDIR)/fmtbcd.pp objpas$(PPUEXT) sysutils$(PPUEXT) variants$(PPUEXT) classes$(PPUEXT) system$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/fmtbcd.pp
-
#
# Mac Pascal Model
#
@@ -224,8 +195,6 @@ macpas$(PPUEXT) : $(INC)/macpas.pp objpas$(PPUEXT) math$(PPUEXT)
# Other system-independent RTL Units
#
-ucomplex$(PPUEXT): $(INC)/ucomplex.pp math$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-
cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT)
mmx$(PPUEXT) : $(PROCINC)/mmx.pp cpu$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
diff --git a/rtl/os2/system.pas b/rtl/os2/system.pas
index 31e93f1e82..e0b55edcdc 100644
--- a/rtl/os2/system.pas
+++ b/rtl/os2/system.pas
@@ -1121,15 +1121,12 @@ begin
xorl %eax,%eax
movw %ss,%ax
movl %eax,_SS
- call SysResetFPU
end;
{$ENDIF OS2EXCEPTIONS}
DosGetInfoBlocks (@TIB, @PIB);
- StackBottom := TIB^.Stack;
-{ $IFNDEF OS2EXCEPTIONS}
- StackTop := TIB^.StackLimit;
-{ $ENDIF OS2EXCEPTIONS}
StackLength := CheckInitialStkLen (InitialStkLen);
+ { OS/2 has top of stack in TIB^.StackLimit - unlike Windows where it is in TIB^.Stack }
+ StackBottom := TIB^.StackLimit - StackLength;
{Set type of application}
ApplicationType := PIB^.ProcType;
diff --git a/rtl/palmos/Makefile b/rtl/palmos/Makefile
index d0de349e6a..1d59af8bb3 100644
--- a/rtl/palmos/Makefile
+++ b/rtl/palmos/Makefile
@@ -1,8 +1,8 @@
#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-04-01 rev 27428]
#
default: all
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos
BSDs = freebsd netbsd openbsd darwin
UNIXs = linux $(BSDs) solaris qnx haiku aix
LIMIT83fs = go32v2 os2 emx watcom msdos
@@ -185,6 +185,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t
endif
override FPCOPT+=-Cp$(SUBARCH)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+ifeq ($(SUBARCH),)
+$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined)
+endif
+override FPCOPT+=-Cp$(SUBARCH)
+endif
ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
TARGETSUFFIX=$(OS_TARGET)
SOURCESUFFIX=$(OS_SOURCE)
@@ -544,6 +550,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings lnfodwrf lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes fmtbcd strutils convutils math dateutils varutils variants matrix ucomplex charset cpall getopts winsock sockets
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings lnfodwrf lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes fmtbcd strutils convutils math dateutils varutils variants matrix ucomplex charset cpall getopts winsock sockets
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings lnfodwrf lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes fmtbcd strutils convutils math dateutils varutils variants matrix ucomplex charset cpall getopts winsock sockets
endif
@@ -557,226 +566,229 @@ ifeq ($(FULL_TARGET),i8086-msdos)
override TARGET_UNITS+=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings lnfodwrf lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes fmtbcd strutils convutils math dateutils varutils variants matrix ucomplex charset cpall getopts winsock sockets
endif
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-linux)
override TARGET_LOADERS+=prt0
@@ -988,6 +1000,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_LOADERS+=prt0
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_LOADERS+=prt0
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_LOADERS+=prt0
endif
@@ -1211,6 +1226,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/palmos
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/palmos
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/palmos
endif
@@ -1433,6 +1451,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
endif
@@ -2226,17 +2247,23 @@ ifdef ACROSSCOMPILE
override FPCOPT+=$(CROSSOPT)
endif
override COMPILER:=$(strip $(FPC) $(FPCOPT))
-ifeq (,$(findstring -s ,$(COMPILER)))
+ifneq (,$(findstring -sh ,$(COMPILER)))
+UseEXECPPAS=1
+endif
+ifneq (,$(findstring -s ,$(COMPILER)))
+ifeq ($(FULL_SOURCE),$(FULL_TARGET))
+UseEXECPPAS=1
+endif
+endif
+ifneq ($(UseEXECPPAS),1)
EXECPPAS=
else
-ifeq ($(FULL_SOURCE),$(FULL_TARGET))
ifdef RUNBATCH
EXECPPAS:=@$(RUNBATCH) $(PPAS)
else
EXECPPAS:=@$(PPAS)
endif
endif
-endif
.PHONY: fpc_loaders
ifneq ($(TARGET_LOADERS),)
override ALLTARGET+=fpc_loaders
diff --git a/rtl/palmos/Makefile.fpc b/rtl/palmos/Makefile.fpc
index 1974b19daa..3f7bb422ad 100644
--- a/rtl/palmos/Makefile.fpc
+++ b/rtl/palmos/Makefile.fpc
@@ -24,7 +24,7 @@ units=$(SYSTEMUNIT) uuchar ctypes objpas macpas iso7185 strings \
# winsysut
implicitunits=exeinfo \
cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 \
- cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+ cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
# rsts=math varutils typinfo variants classes dateutils sysconst
diff --git a/rtl/powerpc/math.inc b/rtl/powerpc/math.inc
index 1495a13d0c..9785339c54 100644
--- a/rtl/powerpc/math.inc
+++ b/rtl/powerpc/math.inc
@@ -25,14 +25,6 @@ const
EXTENDED data type routines
****************************************************************************}
- {$define FPC_SYSTEM_HAS_PI}
- function fpc_pi_real : valreal;compilerproc;
- begin
- { Function is handled internal in the compiler }
- runerror(207);
- result:=0;
- end;
-
{$define FPC_SYSTEM_HAS_ABS}
function fpc_abs_real(d : valreal) : valreal;compilerproc;
begin
diff --git a/rtl/powerpc/mathu.inc b/rtl/powerpc/mathu.inc
index 0554e36016..7d204f341b 100644
--- a/rtl/powerpc/mathu.inc
+++ b/rtl/powerpc/mathu.inc
@@ -82,26 +82,23 @@ function SetRoundMode(const RoundMode: TFPURoundingMode): TFPURoundingMode;
var
mode : DWord;
begin
+ softfloat_rounding_mode:=RoundMode;
case (RoundMode) of
rmNearest :
begin
mode := FP_RND_RN;
- softfloat_rounding_mode := float_round_nearest_even;
end;
rmTruncate :
begin
mode := FP_RND_RZ;
- softfloat_rounding_mode := float_round_to_zero;
end;
rmUp :
begin
mode := FP_RND_RP;
- softfloat_rounding_mode := float_round_up;
end;
rmDown :
begin
mode := FP_RND_RM;
- softfloat_rounding_mode := float_round_down;
end;
end;
{$ifndef aix}
@@ -158,35 +155,30 @@ var
mode : DWord;
begin
mode := 0;
- softfloat_exception_mask := 0;
+ softfloat_exception_mask := mask;
if (exInvalidOp in Mask) then
begin
mode := mode or InvalidOperationMask;
- softfloat_exception_mask := softfloat_exception_mask or float_flag_invalid;
end;
if (exOverflow in Mask) then
begin
mode := mode or OverflowMask;
- softfloat_exception_mask := softfloat_exception_mask or float_flag_overflow;
end;
if (exUnderflow in Mask) then
begin
mode := mode or UnderflowMask;
- softfloat_exception_mask := softfloat_exception_mask or float_flag_underflow;
end;
if (exZeroDivide in Mask) then
begin
mode := mode or ZeroDivideMask;
- softfloat_exception_mask := softfloat_exception_mask or float_flag_divbyzero;
end;
if (exPrecision in Mask) then
begin
mode := mode or InexactMask;
- softfloat_exception_mask := softfloat_exception_mask or float_flag_inexact;
end;
setFPSCR((getFPSCR or ExceptionMask) and not mode and not ExceptionsPendingMask);
- softfloat_exception_flags := 0;;
+ softfloat_exception_flags := [];
{ also clear out pending exceptions on AIX }
{$ifdef aix}
{ clear pending exceptions }
@@ -206,7 +198,7 @@ begin
{ clear pending exceptions }
feclearexcept(AllExceptionsMask);
{$endif}
- softfloat_exception_flags := 0;
+ softfloat_exception_flags := [];
{ RaisePending has no effect on PPC, always raises them at the correct location }
setFPSCR(getFPSCR and (not ExceptionsPendingMask));
end;
diff --git a/rtl/powerpc/mathuh.inc b/rtl/powerpc/mathuh.inc
deleted file mode 100644
index 223294f25f..0000000000
--- a/rtl/powerpc/mathuh.inc
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- This file is part of the Free Pascal run time library.
- Copyright (c) 1999-2005 by Florian Klaempfl
- member of the Free Pascal 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.
-
- **********************************************************************}
-
-type
- TFPURoundingMode = (rmNearest, rmDown, rmUp, rmTruncate);
- TFPUPrecisionMode = (pmSingle, pmReserved, pmDouble, pmExtended);
- TFPUException = (
- exInvalidOp, exDenormalized, exZeroDivide,
- exOverflow, exUnderflow, exPrecision);
- TFPUExceptionMask = set of TFPUException;
-
-function GetRoundMode: TFPURoundingMode;
-function SetRoundMode(const RoundMode: TFPURoundingMode): TFPURoundingMode;
-
-function GetPrecisionMode: TFPUPrecisionMode;
-
-function SetPrecisionMode(const Precision: TFPUPrecisionMode): TFPUPrecisionMode;
-function GetExceptionMask: TFPUExceptionMask;
-function SetExceptionMask(const Mask: TFPUExceptionMask): TFPUExceptionMask;
-
-procedure ClearExceptions(RaisePending: Boolean = true);
-
diff --git a/rtl/powerpc/powerpc.inc b/rtl/powerpc/powerpc.inc
index 278d53df68..3051a5f32e 100644
--- a/rtl/powerpc/powerpc.inc
+++ b/rtl/powerpc/powerpc.inc
@@ -1194,14 +1194,14 @@ begin
mtfsf 7,f1
end;
{ powerpc might use softfloat code }
- softfloat_exception_flags:=0;
- softfloat_exception_mask:=float_flag_underflow or float_flag_inexact or float_flag_denormal;
+ softfloat_exception_flags:=[];
+ softfloat_exception_mask:=[float_flag_underflow, float_flag_inexact, float_flag_denormal];
end;
{$define FPC_SYSTEM_HAS_SYSRESETFPU}
procedure SysResetFPU;{$ifdef SYSTEMINLINE}inline;{$endif}
begin
- softfloat_exception_flags:=0;
+ softfloat_exception_flags:=[];
end;
{$ENDIF}
diff --git a/rtl/powerpc64/math.inc b/rtl/powerpc64/math.inc
index ee453207ae..d69552cf96 100644
--- a/rtl/powerpc64/math.inc
+++ b/rtl/powerpc64/math.inc
@@ -18,14 +18,6 @@
EXTENDED data type routines
****************************************************************************}
-{$define FPC_SYSTEM_HAS_PI}
-function fpc_pi_real : valreal;compilerproc;
-begin
- { Function is handled internal in the compiler }
- runerror(207);
- result:=0;
-end;
-
{$define FPC_SYSTEM_HAS_ABS}
function fpc_abs_real(d : valreal) : valreal;compilerproc;
begin
diff --git a/rtl/powerpc64/mathu.inc b/rtl/powerpc64/mathu.inc
index 3737d16610..3f68672f59 100644
--- a/rtl/powerpc64/mathu.inc
+++ b/rtl/powerpc64/mathu.inc
@@ -82,26 +82,23 @@ function SetRoundMode(const RoundMode: TFPURoundingMode): TFPURoundingMode;
var
mode : DWord;
begin
+ softfloat_rounding_mode:=RoundMode;
case (RoundMode) of
rmNearest :
begin
mode := FP_RND_RN;
- softfloat_rounding_mode := float_round_nearest_even;
end;
rmTruncate :
begin
mode := FP_RND_RZ;
- softfloat_rounding_mode := float_round_to_zero;
end;
rmUp :
begin
mode := FP_RND_RP;
- softfloat_rounding_mode := float_round_up;
end;
rmDown :
begin
mode := FP_RND_RM;
- softfloat_rounding_mode := float_round_down;
end;
end;
{$ifndef aix}
@@ -158,35 +155,30 @@ var
mode : DWord;
begin
mode := 0;
- softfloat_exception_mask := 0;
+ softfloat_exception_mask := mask;
if (exInvalidOp in Mask) then
begin
mode := mode or InvalidOperationMask;
- softfloat_exception_mask := softfloat_exception_mask or float_flag_invalid;
end;
if (exOverflow in Mask) then
begin
mode := mode or OverflowMask;
- softfloat_exception_mask := softfloat_exception_mask or float_flag_overflow;
end;
if (exUnderflow in Mask) then
begin
mode := mode or UnderflowMask;
- softfloat_exception_mask := softfloat_exception_mask or float_flag_underflow;
end;
if (exZeroDivide in Mask) then
begin
mode := mode or ZeroDivideMask;
- softfloat_exception_mask := softfloat_exception_mask or float_flag_divbyzero;
end;
if (exPrecision in Mask) then
begin
mode := mode or InexactMask;
- softfloat_exception_mask := softfloat_exception_mask or float_flag_inexact;
end;
setFPSCR((getFPSCR or ExceptionMask) and not mode and not ExceptionsPendingMask);
- softfloat_exception_flags := 0;;
+ softfloat_exception_flags := [];;
{ also clear out pending exceptions on AIX }
{$ifdef aix}
{ clear pending exceptions }
@@ -206,7 +198,7 @@ begin
{ clear pending exceptions }
feclearexcept(AllExceptionsMask);
{$endif}
- softfloat_exception_flags := 0;
+ softfloat_exception_flags := [];
{ RaisePending has no effect on PPC, always raises them at the correct location }
setFPSCR(getFPSCR and (not ExceptionsPendingMask));
end;
diff --git a/rtl/powerpc64/mathuh.inc b/rtl/powerpc64/mathuh.inc
deleted file mode 100644
index 223294f25f..0000000000
--- a/rtl/powerpc64/mathuh.inc
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- This file is part of the Free Pascal run time library.
- Copyright (c) 1999-2005 by Florian Klaempfl
- member of the Free Pascal 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.
-
- **********************************************************************}
-
-type
- TFPURoundingMode = (rmNearest, rmDown, rmUp, rmTruncate);
- TFPUPrecisionMode = (pmSingle, pmReserved, pmDouble, pmExtended);
- TFPUException = (
- exInvalidOp, exDenormalized, exZeroDivide,
- exOverflow, exUnderflow, exPrecision);
- TFPUExceptionMask = set of TFPUException;
-
-function GetRoundMode: TFPURoundingMode;
-function SetRoundMode(const RoundMode: TFPURoundingMode): TFPURoundingMode;
-
-function GetPrecisionMode: TFPUPrecisionMode;
-
-function SetPrecisionMode(const Precision: TFPUPrecisionMode): TFPUPrecisionMode;
-function GetExceptionMask: TFPUExceptionMask;
-function SetExceptionMask(const Mask: TFPUExceptionMask): TFPUExceptionMask;
-
-procedure ClearExceptions(RaisePending: Boolean = true);
-
diff --git a/rtl/qnx/Makefile b/rtl/qnx/Makefile
index 720f42bbe9..3a3d424224 100644
--- a/rtl/qnx/Makefile
+++ b/rtl/qnx/Makefile
@@ -1,8 +1,8 @@
#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-03-19 rev 27188]
#
default: all
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos
BSDs = freebsd netbsd openbsd darwin
UNIXs = linux $(BSDs) solaris qnx haiku aix
LIMIT83fs = go32v2 os2 emx watcom msdos
@@ -186,6 +186,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t
endif
override FPCOPT+=-Cp$(SUBARCH)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+ifeq ($(SUBARCH),)
+$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined)
+endif
+override FPCOPT+=-Cp$(SUBARCH)
+endif
ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
TARGETSUFFIX=$(OS_TARGET)
SOURCESUFFIX=$(OS_SOURCE)
@@ -549,6 +555,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_UNITS+=system uuchar dos objpas objects strings sysutils typinfo math cpu mmx getopts heaptrc lineinfo posix
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_UNITS+=system uuchar dos objpas objects strings sysutils typinfo math cpu mmx getopts heaptrc lineinfo posix
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_UNITS+=system uuchar dos objpas objects strings sysutils typinfo math cpu mmx getopts heaptrc lineinfo posix
endif
@@ -771,6 +780,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_LOADERS+=cprt0 crti crtn
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_LOADERS+=cprt0 crti crtn
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_LOADERS+=cprt0 crti crtn
endif
@@ -993,6 +1005,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_RSTS+=math typinfo
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_RSTS+=math typinfo
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_RSTS+=math typinfo
endif
@@ -1216,6 +1231,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(POSIXINC) $(SYSCALLINC)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(POSIXINC) $(SYSCALLINC)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(POSIXINC) $(SYSCALLINC)
endif
@@ -1438,6 +1456,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(POSIXINC) $(SYSCALLINC)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(POSIXINC) $(SYSCALLINC)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(POSIXINC) $(SYSCALLINC)
endif
@@ -1660,6 +1681,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_TARGETDIR+=.
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_TARGETDIR+=.
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_TARGETDIR+=.
endif
@@ -2879,8 +2903,6 @@ strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc\
dos$(PPUEXT) : dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \
posix$(PPUEXT) system$(PPUEXT)
$(COMPILER) $(POSIXINC)/dos.pp
-objects$(PPUEXT) : $(INC)/objects.pp $(POSIXINC)/objinc.inc system$(PPUEXT)
- $(COMPILER) $(INC)/objects.pp
sysutils$(PPUEXT) : $(POSIXINC)/sysutils.pp $(wildcard $(OBJPASDIR)/*.inc) \
objpas$(PPUEXT) dos$(PPUEXT)
$(COMPILER) -I$(OBJPASDIR) $(POSIXINC)/sysutils.pp
@@ -2888,8 +2910,6 @@ typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT)
$(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp
math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/math.pp
-gettext$(PPUEXT): $(OBJPASDIR)/gettext.pp objpas$(PPUEXT) sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/gettext.pp
cpu$(PPUEXT) : $(PROCINC)/cpu.pp system$(PPUEXT)
mmx$(PPUEXT) : $(PROCINC)/mmx.pp cpu$(PPUEXT) system$(PPUEXT)
getopts$(PPUEXT) : $(INC)/getopts.pp system$(PPUEXT)
diff --git a/rtl/qnx/Makefile.fpc b/rtl/qnx/Makefile.fpc
index fdad3f0a5a..10a0931244 100644
--- a/rtl/qnx/Makefile.fpc
+++ b/rtl/qnx/Makefile.fpc
@@ -114,9 +114,6 @@ dos$(PPUEXT) : dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \
posix$(PPUEXT) system$(PPUEXT)
$(COMPILER) $(POSIXINC)/dos.pp
-objects$(PPUEXT) : $(INC)/objects.pp $(POSIXINC)/objinc.inc system$(PPUEXT)
- $(COMPILER) $(INC)/objects.pp
-
#
# Delphi Compatible Units
#
@@ -131,13 +128,6 @@ typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT)
math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/math.pp
-gettext$(PPUEXT): $(OBJPASDIR)/gettext.pp objpas$(PPUEXT) sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/gettext.pp
-
-#varutils$(PPUEXT) : $(OBJPASDIR)/cvarutil.inc $(OBJPASDIR)/varutils.inc \
-# $(OBJPASDIR)/varutilh.inc varutils.pp
-# $(COMPILER) -I$(OBJPASDIR) $(UNIXINC)/varutils.pp
-
#
# Other system-independent RTL Units
#
diff --git a/rtl/solaris/Makefile b/rtl/solaris/Makefile
index 49cc3eb7e5..207e475c42 100644
--- a/rtl/solaris/Makefile
+++ b/rtl/solaris/Makefile
@@ -1,8 +1,8 @@
#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-04-01 rev 27428]
#
default: all
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos
BSDs = freebsd netbsd openbsd darwin
UNIXs = linux $(BSDs) solaris qnx haiku aix
LIMIT83fs = go32v2 os2 emx watcom msdos
@@ -185,6 +185,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t
endif
override FPCOPT+=-Cp$(SUBARCH)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+ifeq ($(SUBARCH),)
+$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined)
+endif
+override FPCOPT+=-Cp$(SUBARCH)
+endif
ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
TARGETSUFFIX=$(OS_TARGET)
SOURCESUFFIX=$(OS_SOURCE)
@@ -348,448 +354,454 @@ ifndef USELIBGGI
USELIBGGI=NO
endif
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem printer sysutils typinfo math fgl classes charset cpall buildcollations getopts errors terminfo dl dynlibs types sysconst character strutils rtlconsts cthreads dos cwstring fpintres clocale $(CPU_UNITS)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas heaptrc lineinfo lnfodwrf baseunix unixutil unixcp termio unix initc cmem sysutils typinfo math fgl classes charset cpall getopts errors dl dynlibs types sysconst character rtlconsts cthreads dos cwstring fpintres $(CPU_UNITS)
endif
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-linux)
override TARGET_RSTS+=math typinfo classes sysconst rtlconst
@@ -1001,6 +1013,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_RSTS+=math typinfo classes sysconst rtlconst
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_RSTS+=math typinfo classes sysconst rtlconst
endif
@@ -1224,6 +1239,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(OSPROCINC)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(OSPROCINC)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(OSPROCINC)
endif
@@ -1446,6 +1464,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(COMMON)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(COMMON)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(COMMON)
endif
@@ -2239,17 +2260,23 @@ ifdef ACROSSCOMPILE
override FPCOPT+=$(CROSSOPT)
endif
override COMPILER:=$(strip $(FPC) $(FPCOPT))
-ifeq (,$(findstring -s ,$(COMPILER)))
+ifneq (,$(findstring -sh ,$(COMPILER)))
+UseEXECPPAS=1
+endif
+ifneq (,$(findstring -s ,$(COMPILER)))
+ifeq ($(FULL_SOURCE),$(FULL_TARGET))
+UseEXECPPAS=1
+endif
+endif
+ifneq ($(UseEXECPPAS),1)
EXECPPAS=
else
-ifeq ($(FULL_SOURCE),$(FULL_TARGET))
ifdef RUNBATCH
EXECPPAS:=@$(RUNBATCH) $(PPAS)
else
EXECPPAS:=@$(PPAS)
endif
endif
-endif
.PHONY: fpc_units
ifneq ($(TARGET_UNITS)$(TARGET_IMPLICITUNITS),)
override ALLTARGET+=fpc_units
@@ -2623,8 +2650,6 @@ $(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
uuchar$(PPUEXT): $(SYSTEMUNIT)$(PPUEXT) $(INC)/uuchar.pp
objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/objpas.pp
-dateutils$(PPUEXT): objpas$(PPUEXT) sysutils$(PPUEXT) math$(PPUEXT) types$(PPUEXT) sysconst$(PPUEXT) $(OBJPASDIR)/dateutils.pp baseunix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/dateutils.pp
strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc \
$(PROCINC)/strings.inc $(PROCINC)/stringss.inc \
$(SYSTEMUNIT)$(PPUEXT)
@@ -2641,9 +2666,6 @@ unixcp$(PPUEXT) : $(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) ba
$(COMPILER) $(UNIXINC)/unixcp.pp
dos$(PPUEXT) : strings$(PPUEXT) unix$(PPUEXT) $(UNIXINC)/dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \
unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-crt$(PPUEXT) : unix$(PPUEXT) termio$(PPUEXT) $(UNIXINC)/crt.pp $(INC)/textrec.inc unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-objects$(PPUEXT) : dos$(PPUEXT) $(INC)/objects.pp $(SYSTEMUNIT)$(PPUEXT)
-printer$(PPUEXT) : unix$(PPUEXT) strings$(PPUEXT) baseunix$(PPUEXT) $(UNIXINC)/printer.pp $(INC)/textrec.inc unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
sysutils$(PPUEXT) : $(UNIXINC)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
objpas$(PPUEXT) unix$(PPUEXT) errors$(PPUEXT) sysconst$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) -Fi$(OBJPASDIR)/sysutils $(UNIXINC)/sysutils.pp
@@ -2657,41 +2679,16 @@ typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT) sysutils$(PPUEXT) rtlc
$(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp
math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/math.pp
-gettext$(PPUEXT): $(OBJPASDIR)/gettext.pp objpas$(PPUEXT) sysutils$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/gettext.pp
-varutils$(PPUEXT) : $(OBJPASDIR)/cvarutil.inc $(OBJPASDIR)/varutils.inc \
- $(OBJPASDIR)/varutilh.inc varutils.pp sysutils$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) -I$(OBJPASDIR) $(UNIXINC)/varutils.pp
-variants$(PPUEXT) : $(INC)/variants.pp sysutils$(PPUEXT) sysconst$(PPUEXT) varutils$(PPUEXT)\
- typinfo$(PPUEXT) rtlconsts$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) -Fi$(INC) $(INC)/variants.pp
-fmtbcd$(PPUEXT) : $(OBJPASDIR)/fmtbcd.pp objpas$(PPUEXT) sysutils$(PPUEXT) variants$(PPUEXT) classes$(PPUEXT) system$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/fmtbcd.pp
types$(PPUEXT) : $(OBJPASDIR)/types.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/types.pp
sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/sysconst.pp
rtlconsts$(PPUEXT) : $(OBJPASDIR)/rtlconsts.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/rtlconsts.pp
-strutils$(PPUEXT) : $(OBJPASDIR)/strutils.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/strutils.pp
-convutils$(PPUEXT) : $(OBJPASDIR)/convutils.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/convutils.pp
-stdconvs$(PPUEXT) : $(OBJPASDIR)/stdconvs.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/stdconvs.pp
-character$(PPUEXT): sysutils$(PPUEXT) $(OBJPASDIR)/character.pas objpas$(PPUEXT) rtlconsts$(PPUEXT) buildcollations$(PPUEXT)
+character$(PPUEXT): sysutils$(PPUEXT) $(OBJPASDIR)/character.pas objpas$(PPUEXT) rtlconsts$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/character.pas
macpas$(PPUEXT) : $(INC)/macpas.pp objpas$(PPUEXT) math$(PPUEXT)
$(COMPILER) $(INC)/macpas.pp $(REDIR)
-video$(PPUEXT) : $(SYSTEMUNIT)$(PPUEXT) $(INC)/video.inc $(INC)/videoh.inc $(UNIXINC)/video.pp \
- baseunix$(PPUEXT) strings$(PPUEXT) terminfo$(PPUEXT) termio$(PPUEXT)
-keyboard$(PPUEXT) : $(SYSTEMUNIT)$(PPUEXT) $(INC)/keyboard.inc $(INC)/keybrdh.inc $(UNIXINC)/keyboard.pp \
- strings$(PPUEXT) terminfo$(PPUEXT) termio$(PPUEXT) baseunix$(PPUEXT) mouse$(PPUEXT)
-mouse$(PPUEXT) : $(UNIXINC)/mouse.pp $(SYSTEMUNIT)$(PPUEXT) baseunix$(PPUEXT) video$(PPUEXT)
-matrix$(PPUEXT) : $(INC)/matrix.pp $(SYSTEMUNIT)$(PPUEXT)
ifeq ($(ARCH),x86_64)
cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT) sysutils$(PPUEXT)
else
@@ -2706,14 +2703,9 @@ lnfodwrf$(PPUEXT) : $(INC)/lnfodwrf.pp $(SYSTEMUNIT)$(PPUEXT)
charset$(PPUEXT) : $(INC)/charset.pp objpas$(PPUEXT)
cpall$(PPUEXT): $(RTL)/charmaps/cpall.pas system$(PPUEXT) charset$(PPUEXT)
$(COMPILER) -Fu$(INC) -Fi$(RTL)/charmaps $(RTL)/charmaps/cpall.pas
-ucomplex$(PPUEXT) : $(INC)/ucomplex.pp math$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) math$(PPUEXT)
-buildcollations$(PPUEXT): $(OBJPASDIR)/collations/buildcollations.pas system$(PPUEXT) objpas$(PPUEXT) sysutils$(PPUEXT)
- $(COMPILER) -Fu$(OBJPASDIR) -Fi$(OBJPASDIR)/collations -I$(OBJPASDIR)/collations $(OBJPASDIR)/collations/buildcollations.pas
errors$(PPUEXT) : errors.pp strings$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
dynlibs$(PPUEXT) : $(INC)/dynlibs.pas $(UNIXINC)/dynlibs.inc dl$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-ipc$(PPUEXT) : ipc.pp unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
termio$(PPUEXT) : termio.pp unixtype$(PPUEXT) baseunix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-terminfo$(PPUEXT) : terminfo.pp unix$(PPUEXT)
callspec$(PPUEXT) : $(INC)/callspec.pp $(SYSTEMUNIT)$(PPUEXT)
cmem$(PPUEXT) : $(INC)/cmem.pp $(SYSTEMUNIT)$(PPUEXT)
cthreads$(PPUEXT) : $(UNIXINC)/cthreads.pp sysutils$(PPUEXT) baseunix$(PPUEXT) unixtype$(PPUEXT) unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
diff --git a/rtl/solaris/Makefile.fpc b/rtl/solaris/Makefile.fpc
index b6b1e97b8f..012cc6fc4d 100644
--- a/rtl/solaris/Makefile.fpc
+++ b/rtl/solaris/Makefile.fpc
@@ -11,22 +11,19 @@ units=$(SYSTEMUNIT) uuchar unixtype ctypes strings objpas iso7185 macpas \
heaptrc lineinfo lnfodwrf \
baseunix unixutil unixcp \
termio unix initc cmem \
- printer \
sysutils typinfo math fgl classes \
- charset cpall buildcollations getopts \
- errors \
- # ipc serial
- terminfo dl dynlibs \
+ charset cpall getopts \
+ errors \
+ dl dynlibs \
types sysconst character \
- strutils rtlconsts cthreads \
+ rtlconsts cthreads \
dos \
- cwstring fpintres clocale $(CPU_UNITS)
+ cwstring fpintres $(CPU_UNITS)
implicitunits=exeinfo \
cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 \
- cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 \
- unicodedata unicodeducet unicodenumtable \
- collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+ cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 \
+ unicodedata unicodenumtable
rsts=math typinfo classes sysconst rtlconst
@@ -50,10 +47,10 @@ libname=libfprtl.so
libversion=2.0.0
libunits=$(SYSTEMUNIT) objpas strings \
unix \
- dos crt objects printer \
+ dos \
sysutils typinfo math \
$(CPU_UNITS) getopts heaptrc \
- errors ipc
+ errors
[prerules]
RTL=..
@@ -132,11 +129,6 @@ uuchar$(PPUEXT): $(SYSTEMUNIT)$(PPUEXT) $(INC)/uuchar.pp
objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/objpas.pp
-
-dateutils$(PPUEXT): objpas$(PPUEXT) sysutils$(PPUEXT) math$(PPUEXT) types$(PPUEXT) sysconst$(PPUEXT) $(OBJPASDIR)/dateutils.pp baseunix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/dateutils.pp
-
-
strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc \
$(PROCINC)/strings.inc $(PROCINC)/stringss.inc \
$(SYSTEMUNIT)$(PPUEXT)
@@ -168,12 +160,6 @@ unixcp$(PPUEXT) : $(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) ba
dos$(PPUEXT) : strings$(PPUEXT) unix$(PPUEXT) $(UNIXINC)/dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \
unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-crt$(PPUEXT) : unix$(PPUEXT) termio$(PPUEXT) $(UNIXINC)/crt.pp $(INC)/textrec.inc unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-
-objects$(PPUEXT) : dos$(PPUEXT) $(INC)/objects.pp $(SYSTEMUNIT)$(PPUEXT)
-
-printer$(PPUEXT) : unix$(PPUEXT) strings$(PPUEXT) baseunix$(PPUEXT) $(UNIXINC)/printer.pp $(INC)/textrec.inc unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-
#
# Graph
#
@@ -200,20 +186,6 @@ typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT) sysutils$(PPUEXT) rtlc
math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/math.pp
-gettext$(PPUEXT): $(OBJPASDIR)/gettext.pp objpas$(PPUEXT) sysutils$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/gettext.pp
-
-varutils$(PPUEXT) : $(OBJPASDIR)/cvarutil.inc $(OBJPASDIR)/varutils.inc \
- $(OBJPASDIR)/varutilh.inc varutils.pp sysutils$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) -I$(OBJPASDIR) $(UNIXINC)/varutils.pp
-
-variants$(PPUEXT) : $(INC)/variants.pp sysutils$(PPUEXT) sysconst$(PPUEXT) varutils$(PPUEXT)\
- typinfo$(PPUEXT) rtlconsts$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) -Fi$(INC) $(INC)/variants.pp
-
-fmtbcd$(PPUEXT) : $(OBJPASDIR)/fmtbcd.pp objpas$(PPUEXT) sysutils$(PPUEXT) variants$(PPUEXT) classes$(PPUEXT) system$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/fmtbcd.pp
-
types$(PPUEXT) : $(OBJPASDIR)/types.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/types.pp
@@ -223,20 +195,8 @@ sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUE
rtlconsts$(PPUEXT) : $(OBJPASDIR)/rtlconsts.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/rtlconsts.pp
-strutils$(PPUEXT) : $(OBJPASDIR)/strutils.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/strutils.pp
-
-convutils$(PPUEXT) : $(OBJPASDIR)/convutils.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/convutils.pp
-
-stdconvs$(PPUEXT) : $(OBJPASDIR)/stdconvs.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
- sysutils$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/stdconvs.pp
-
# let it depend on buildcollations to prevent simultaneous building of unicodedata
-character$(PPUEXT): sysutils$(PPUEXT) $(OBJPASDIR)/character.pas objpas$(PPUEXT) rtlconsts$(PPUEXT) buildcollations$(PPUEXT)
+character$(PPUEXT): sysutils$(PPUEXT) $(OBJPASDIR)/character.pas objpas$(PPUEXT) rtlconsts$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/character.pas
#
@@ -250,16 +210,6 @@ macpas$(PPUEXT) : $(INC)/macpas.pp objpas$(PPUEXT) math$(PPUEXT)
# Other system-independent RTL Units
#
-video$(PPUEXT) : $(SYSTEMUNIT)$(PPUEXT) $(INC)/video.inc $(INC)/videoh.inc $(UNIXINC)/video.pp \
- baseunix$(PPUEXT) strings$(PPUEXT) terminfo$(PPUEXT) termio$(PPUEXT)
-
-keyboard$(PPUEXT) : $(SYSTEMUNIT)$(PPUEXT) $(INC)/keyboard.inc $(INC)/keybrdh.inc $(UNIXINC)/keyboard.pp \
- strings$(PPUEXT) terminfo$(PPUEXT) termio$(PPUEXT) baseunix$(PPUEXT) mouse$(PPUEXT)
-
-mouse$(PPUEXT) : $(UNIXINC)/mouse.pp $(SYSTEMUNIT)$(PPUEXT) baseunix$(PPUEXT) video$(PPUEXT)
-
-matrix$(PPUEXT) : $(INC)/matrix.pp $(SYSTEMUNIT)$(PPUEXT)
-
ifeq ($(ARCH),x86_64)
cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT) sysutils$(PPUEXT)
else
@@ -282,12 +232,6 @@ charset$(PPUEXT) : $(INC)/charset.pp objpas$(PPUEXT)
cpall$(PPUEXT): $(RTL)/charmaps/cpall.pas system$(PPUEXT) charset$(PPUEXT)
$(COMPILER) -Fu$(INC) -Fi$(RTL)/charmaps $(RTL)/charmaps/cpall.pas
-ucomplex$(PPUEXT) : $(INC)/ucomplex.pp math$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) math$(PPUEXT)
-
-buildcollations$(PPUEXT): $(OBJPASDIR)/collations/buildcollations.pas system$(PPUEXT) objpas$(PPUEXT) sysutils$(PPUEXT)
- $(COMPILER) -Fu$(OBJPASDIR) -Fi$(OBJPASDIR)/collations -I$(OBJPASDIR)/collations $(OBJPASDIR)/collations/buildcollations.pas
-
-
#
# Other system-dependent RTL Units
#
@@ -297,12 +241,8 @@ errors$(PPUEXT) : errors.pp strings$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
dynlibs$(PPUEXT) : $(INC)/dynlibs.pas $(UNIXINC)/dynlibs.inc dl$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-ipc$(PPUEXT) : ipc.pp unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-
termio$(PPUEXT) : termio.pp unixtype$(PPUEXT) baseunix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-terminfo$(PPUEXT) : terminfo.pp unix$(PPUEXT)
-
callspec$(PPUEXT) : $(INC)/callspec.pp $(SYSTEMUNIT)$(PPUEXT)
cmem$(PPUEXT) : $(INC)/cmem.pp $(SYSTEMUNIT)$(PPUEXT)
diff --git a/rtl/solaris/system.pp b/rtl/solaris/system.pp
index 2184d9b09f..8c168d462d 100644
--- a/rtl/solaris/system.pp
+++ b/rtl/solaris/system.pp
@@ -28,18 +28,18 @@ var argc:longint;
argv:PPchar;
envp:PPchar;
-{$if defined(CPUARM) or defined(CPUM68K) or defined(CPUSPARC)}
+{$if defined(CPUARM) or defined(CPUM68K) or (defined(CPUSPARC) and defined(VER2_6))}
{$define fpc_softfpu_interface}
{$i softfpu.pp}
{$undef fpc_softfpu_interface}
-{$endif defined(CPUARM) or defined(CPUM68K) or defined(CPUSPARC)}
+{$endif defined(CPUARM) or defined(CPUM68K) or (defined(CPUSPARC) and defined(VER2_6))}
implementation
-{$if defined(CPUARM) or defined(CPUM68K) or defined(CPUSPARC)}
+{$if defined(CPUARM) or defined(CPUM68K) or (defined(CPUSPARC) and defined(VER2_6))}
{$define fpc_softfpu_implementation}
{$i softfpu.pp}
@@ -57,7 +57,7 @@ implementation
{$define FPC_SYSTEM_HAS_extractFloat32Exp}
{$define FPC_SYSTEM_HAS_extractFloat32Sign}
-{$endif defined(CPUARM) or defined(CPUM68K) or defined(CPUSPARC)}
+{$endif defined(CPUARM) or defined(CPUM68K) or (defined(CPUSPARC) and defined(VER2_6))}
{ OS independant parts}
diff --git a/rtl/sparc/mathu.inc b/rtl/sparc/mathu.inc
index 9bd2a2c9c9..6c002dd97b 100644
--- a/rtl/sparc/mathu.inc
+++ b/rtl/sparc/mathu.inc
@@ -16,42 +16,18 @@
function get_fsr : dword;external name 'FPC_GETFSR';
procedure set_fsr(fsr : dword);external name 'FPC_SETFSR';
-function FPUExceptionMaskToSoftFloatMask(const Mask: TFPUExceptionMask): byte;
-begin
- result:=0;
- if exInvalidOp in Mask then
- result:=result or (1 shl ord(exInvalidOp));
- if exDenormalized in Mask then
- result:=result or (1 shl ord(exDenormalized));
- if exZeroDivide in Mask then
- result:=result or (1 shl ord(exZeroDivide));
- if exOverflow in Mask then
- result:=result or (1 shl ord(exOverflow));
- if exUnderflow in Mask then
- result:=result or (1 shl ord(exUnderflow));
- if exPrecision in Mask then
- result:=result or (1 shl ord(exPrecision));
-end;
-
function GetRoundMode: TFPURoundingMode;
begin
result:=TFPURoundingMode(get_fsr shr 30);
end;
function SetRoundMode(const RoundMode: TFPURoundingMode): TFPURoundingMode;
+ var
+ cw: dword;
begin
- case (RoundMode) of
- rmNearest :
- softfloat_rounding_mode := float_round_nearest_even;
- rmTruncate :
- softfloat_rounding_mode := float_round_to_zero;
- rmUp :
- softfloat_rounding_mode := float_round_up;
- rmDown :
- softfloat_rounding_mode := float_round_down;
- end;
- set_fsr((get_fsr and $3fffffff) or (dword(RoundMode) shl 30));
- result:=TFPURoundingMode(get_fsr shr 30);
+ cw:=get_fsr;
+ result:=TFPURoundingMode(cw shr 30);
+ set_fsr((cw and $3fffffff) or (dword(RoundMode) shl 30));
end;
@@ -67,11 +43,8 @@ function SetPrecisionMode(const Precision: TFPUPrecisionMode): TFPUPrecisionMode
end;
-function GetExceptionMask: TFPUExceptionMask;
- var
- fsr : dword;
+function FSR2ExceptionMask(fsr: dword): TFPUExceptionMask;
begin
- fsr:=get_fsr;
result:=[];
{ invalid operation: bit 27 }
if (fsr and (1 shl 27))=0 then
@@ -95,12 +68,18 @@ function GetExceptionMask: TFPUExceptionMask;
end;
+function GetExceptionMask: TFPUExceptionMask;
+ begin
+ result:=FSR2ExceptionMask(get_fsr);
+ end;
+
function SetExceptionMask(const Mask: TFPUExceptionMask): TFPUExceptionMask;
var
fsr : dword;
begin
fsr:=get_fsr;
+ result:=FSR2ExceptionMask(fsr);
{ invalid operation: bit 27 }
if (exInvalidOp in mask) then
@@ -134,8 +113,6 @@ function SetExceptionMask(const Mask: TFPUExceptionMask): TFPUExceptionMask;
{ update control register contents }
set_fsr(fsr);
-
- softfloat_exception_mask:=FPUExceptionMaskToSoftFloatMask(mask);
end;
diff --git a/rtl/sparc/mathuh.inc b/rtl/sparc/mathuh.inc
deleted file mode 100644
index a1d8b4ea2b..0000000000
--- a/rtl/sparc/mathuh.inc
+++ /dev/null
@@ -1,29 +0,0 @@
-{
- This file is part of the Free Pascal run time library.
- Copyright (c) 1999-2000 by Florian Klaempfl
- member of the Free Pascal 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.
-
- **********************************************************************}
-
- type
- TFPURoundingMode = (rmNearest, rmDown, rmUp, rmTruncate);
- TFPUPrecisionMode = (pmSingle, pmReserved, pmDouble, pmExtended);
- TFPUException = (exInvalidOp, exDenormalized, exZeroDivide,
- exOverflow, exUnderflow, exPrecision);
- TFPUExceptionMask = set of TFPUException;
-
-function GetRoundMode: TFPURoundingMode;
-function SetRoundMode(const RoundMode: TFPURoundingMode): TFPURoundingMode;
-function GetPrecisionMode: TFPUPrecisionMode;
-function SetPrecisionMode(const Precision: TFPUPrecisionMode): TFPUPrecisionMode;
-function GetExceptionMask: TFPUExceptionMask;
-function SetExceptionMask(const Mask: TFPUExceptionMask): TFPUExceptionMask;
-procedure ClearExceptions(RaisePending: Boolean =true);
-
diff --git a/rtl/sparc/sparc.inc b/rtl/sparc/sparc.inc
index a36e825b15..7154129f87 100644
--- a/rtl/sparc/sparc.inc
+++ b/rtl/sparc/sparc.inc
@@ -49,7 +49,6 @@ function get_got : pointer;assembler;nostackframe;[public, alias: 'FPC_GETGOT'];
{$define FPC_SYSTEM_HAS_SYSINITFPU}
Procedure SysInitFPU;{$ifdef SYSTEMINLINE}inline;{$endif}
begin
- softfloat_exception_mask:=float_flag_underflow or float_flag_inexact or float_flag_denormal;
{ enable div by 0 and invalid operation fpu exceptions
round towards zero; ieee compliant arithmetics }
set_fsr((get_fsr and $3fbfffff) or $09000000);
@@ -58,7 +57,6 @@ Procedure SysInitFPU;{$ifdef SYSTEMINLINE}inline;{$endif}
{$define FPC_SYSTEM_HAS_SYSRESETFPU}
Procedure SysResetFPU;{$ifdef SYSTEMINLINE}inline;{$endif}
begin
- softfloat_exception_flags:=0;
end;
diff --git a/rtl/symbian/Makefile b/rtl/symbian/Makefile
index ec174f9211..ecba3609bd 100644
--- a/rtl/symbian/Makefile
+++ b/rtl/symbian/Makefile
@@ -1,8 +1,8 @@
#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-04-01 rev 27428]
#
default: all
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos
BSDs = freebsd netbsd openbsd darwin
UNIXs = linux $(BSDs) solaris qnx haiku aix
LIMIT83fs = go32v2 os2 emx watcom msdos
@@ -185,6 +185,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t
endif
override FPCOPT+=-Cp$(SUBARCH)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+ifeq ($(SUBARCH),)
+$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined)
+endif
+override FPCOPT+=-Cp$(SUBARCH)
+endif
ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
TARGETSUFFIX=$(OS_TARGET)
SOURCESUFFIX=$(OS_SOURCE)
@@ -541,6 +547,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl
endif
@@ -763,6 +772,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_IMPLICITUNITS+=ctypes strings symbian
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_IMPLICITUNITS+=ctypes strings symbian
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_IMPLICITUNITS+=ctypes strings symbian
endif
@@ -986,6 +998,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
endif
@@ -1208,6 +1223,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
endif
@@ -2001,17 +2019,23 @@ ifdef ACROSSCOMPILE
override FPCOPT+=$(CROSSOPT)
endif
override COMPILER:=$(strip $(FPC) $(FPCOPT))
-ifeq (,$(findstring -s ,$(COMPILER)))
+ifneq (,$(findstring -sh ,$(COMPILER)))
+UseEXECPPAS=1
+endif
+ifneq (,$(findstring -s ,$(COMPILER)))
+ifeq ($(FULL_SOURCE),$(FULL_TARGET))
+UseEXECPPAS=1
+endif
+endif
+ifneq ($(UseEXECPPAS),1)
EXECPPAS=
else
-ifeq ($(FULL_SOURCE),$(FULL_TARGET))
ifdef RUNBATCH
EXECPPAS:=@$(RUNBATCH) $(PPAS)
else
EXECPPAS:=@$(PPAS)
endif
endif
-endif
.PHONY: fpc_units
ifneq ($(TARGET_UNITS)$(TARGET_IMPLICITUNITS),)
override ALLTARGET+=fpc_units
diff --git a/rtl/unix/cthreads.pp b/rtl/unix/cthreads.pp
index 01f28c7964..9917fbc21f 100644
--- a/rtl/unix/cthreads.pp
+++ b/rtl/unix/cthreads.pp
@@ -290,6 +290,26 @@ Type PINTRTLEvent = ^TINTRTLEvent;
pthread_exit(ThreadMain);
end;
+ Procedure InitCThreading;
+
+ begin
+ if (InterLockedExchange(longint(IsMultiThread),ord(true)) = 0) then
+ begin
+ { We're still running in single thread mode, setup the TLS }
+ pthread_key_create(@TLSKey,nil);
+ InitThreadVars(@CRelocateThreadvar);
+ { used to clean up threads that we did not create ourselves:
+ a) the default value for a key (and hence also this one) in
+ new threads is NULL, and if it's still like that when the
+ thread terminates, nothing will happen
+ b) if it's non-NULL, the destructor routine will be called
+ when the thread terminates
+ -> we will set it to 1 if the threadvar relocation routine is
+ called from a thread we did not create, so that we can
+ clean up everything at the end }
+ pthread_key_create(@CleanupKey,@CthreadCleanup);
+ end
+ end;
function CBeginThread(sa : Pointer;stacksize : PtrUInt;
ThreadFunction : tthreadfunc;p : pointer;
@@ -303,24 +323,7 @@ Type PINTRTLEvent = ^TINTRTLEvent;
{$endif DEBUG_MT}
{ Initialize multithreading if not done }
if not IsMultiThread then
- begin
- if (InterLockedExchange(longint(IsMultiThread),ord(true)) = 0) then
- begin
- { We're still running in single thread mode, setup the TLS }
- pthread_key_create(@TLSKey,nil);
- InitThreadVars(@CRelocateThreadvar);
- { used to clean up threads that we did not create ourselves:
- a) the default value for a key (and hence also this one) in
- new threads is NULL, and if it's still like that when the
- thread terminates, nothing will happen
- b) if it's non-NULL, the destructor routine will be called
- when the thread terminates
- -> we will set it to 1 if the threadvar relocation routine is
- called from a thread we did not create, so that we can
- clean up everything at the end }
- pthread_key_create(@CleanupKey,@CthreadCleanup);
- end
- end;
+ InitCThreading;
{ the only way to pass data to the newly created thread
in a MT safe way, is to use the heap }
new(ti);
@@ -970,6 +973,8 @@ begin
{$ifdef DEBUG_MT}
Writeln('InitThreads : ',Result);
{$endif DEBUG_MT}
+ // We assume that if you set the thread manager, the application is multithreading.
+ InitCThreading;
end;
Function CDoneThreads : Boolean;
diff --git a/rtl/unix/sysutils.pp b/rtl/unix/sysutils.pp
index 117ccb45bb..fb456329d0 100644
--- a/rtl/unix/sysutils.pp
+++ b/rtl/unix/sysutils.pp
@@ -42,7 +42,11 @@ interface
{$define SYSUTILS_HAS_ANSISTR_ENVVAR_IMPL}
uses
- Unix,errors,sysconst,Unixtype;
+{$IFDEF LINUX}linux,{$ENDIF} Unix,errors,sysconst,Unixtype;
+
+{$IFDEF LINUX}
+{$DEFINE HAVECLOCKGETTIME}
+{$ENDIF}
{ Include platform independent interface part }
{$i sysutilh.inc}
@@ -329,7 +333,18 @@ End;
function GetTickCount64: QWord;
var
tp: TTimeVal;
+ {$IFDEF HAVECLOCKGETTIME}
+ ts: TTimeSpec;
+ {$ENDIF}
+
begin
+ {$IFDEF HAVECLOCKGETTIME}
+ if clock_gettime(CLOCK_MONOTONIC, @ts)=0 then
+ begin
+ Result := (Int64(ts.tv_sec) * 1000) + (ts.tv_nsec div 1000000);
+ exit;
+ end;
+ {$ENDIF}
fpgettimeofday(@tp, nil);
Result := (Int64(tp.tv_sec) * 1000) + (tp.tv_usec div 1000);
end;
diff --git a/rtl/unix/tthread.inc b/rtl/unix/tthread.inc
index eb5efad6a5..afc2001249 100644
--- a/rtl/unix/tthread.inc
+++ b/rtl/unix/tthread.inc
@@ -51,33 +51,11 @@
var
ThreadsInited: boolean = false;
- CurrentTM: TThreadManager;
const
// stupid, considering its not even implemented...
Priorities: array [TThreadPriority] of Integer =
(-20,-19,-10,0,9,18,19);
-procedure InitThreads;
-begin
- { This is not thread safe, but it doesn't matter if this is executed }
- { multiple times. Conversely, if one thread goes by this without the }
- { operation having been finished by another thread already, it will }
- { use an uninitialised thread manager -> leave as it is }
- if not ThreadsInited then
- begin
- GetThreadManager(CurrentTM);
-{$ifdef FPC_HAS_MEMBAR}
- { however, we have to ensure that a thread never sees ThreadsInited }
- { as true while CurrentTM hasn't been initialised yet }
- WriteBarrier;
- ThreadsInited := True;
-{$endif}
- end
- else
- { See double checked lock example at }
- { http://ridiculousfish.com/blog/archives/2007/02/17/barrier }
- ReadDependencyBarrier;
-end;
procedure DoneThreads;
begin
@@ -105,7 +83,7 @@ begin
if LThread.FInitialSuspended then
begin
WRITE_DEBUG('thread ', ptruint(LThread), ' waiting for semaphore ', ptruint(LThread.FSem));
- CurrentTM.SemaphoreWait(LThread.FSem);
+ SemaphoreWait(LThread.FSem);
if not(LThread.FTerminated) then
begin
if not LThread.FSuspended then
@@ -125,7 +103,7 @@ begin
begin
LThread.FSuspendedInternal := true;
WRITE_DEBUG('waiting for SuspendedInternal - ', LThread.ClassName);
- CurrentTM.SemaphoreWait(LThread.FSem);
+ SemaphoreWait(LThread.FSem);
CurrentThreadVar := LThread;
WRITE_DEBUG('going into LThread.Execute - ', LThread.ClassName);
LThread.Execute;
@@ -163,10 +141,6 @@ begin
// this function is the thread's main function (so it would have terminated
// already in case it was joined)
EndThread(Result);
- end
- else
- begin
- FlushThread;
end;
end;
@@ -174,10 +148,7 @@ end;
procedure TThread.SysCreate(CreateSuspended: Boolean;
const StackSize: SizeUInt);
begin
- // lets just hope that the user doesn't create a thread
- // via BeginThread and creates the first TThread Object in there!
- InitThreads;
- FSem := CurrentTM.SemaphoreInit();
+ FSem := SemaphoreInit();
if FSem = pointer(-1) then
raise EThread.create('Semaphore init failed (possibly too many concurrent threads)');
WRITE_DEBUG('thread ', ptruint(self), ' created semaphore ', ptruint(FSem));
@@ -203,7 +174,7 @@ begin
if (FHandle = TThreadID(0)) then
{ another exception in constructor }
begin
- CurrentTM.SemaphoreDestroy(FSem);
+ SemaphoreDestroy(FSem);
exit;
end;
if (FThreadID = GetCurrentThreadID) then
@@ -229,7 +200,7 @@ begin
WaitFor;
end;
end;
- CurrentTM.SemaphoreDestroy(FSem);
+ SemaphoreDestroy(FSem);
FFatalException.Free;
FFatalException := nil;
{ threadvars have been released by cthreads.ThreadMain -> DoneThread, or }
@@ -252,7 +223,7 @@ begin
begin
if not FSuspended and
(InterLockedExchange(longint(FSuspended),longint(longbool(true))) = longint(longbool(false))) then
- CurrentTM.SemaphoreWait(FSem)
+ SemaphoreWait(FSem)
end
else
begin
@@ -268,7 +239,7 @@ begin
if FSuspendedInternal and (InterLockedExchange(longint(FSuspendedInternal),ord(false)) = longint(longbool(true))) then
begin
WRITE_DEBUG('resuming thread after TThread construction',ptruint(self));
- CurrentTM.SemaphorePost(FSem);
+ SemaphorePost(FSem);
end
else if (not FSuspendedExternal) then
begin
@@ -278,7 +249,7 @@ begin
(InterLockedExchange(longint(FSuspended),longint(false)) <> longint(longbool(false))) then
begin
WRITE_DEBUG('resuming ',ptruint(self));
- CurrentTM.SemaphorePost(FSem);
+ SemaphorePost(FSem);
end
end
else
diff --git a/rtl/watcom/Makefile b/rtl/watcom/Makefile
index 089fc614d9..e7289d89ce 100644
--- a/rtl/watcom/Makefile
+++ b/rtl/watcom/Makefile
@@ -1,8 +1,8 @@
#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-03-19 rev 27188]
#
default: all
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos
BSDs = freebsd netbsd openbsd darwin
UNIXs = linux $(BSDs) solaris qnx haiku aix
LIMIT83fs = go32v2 os2 emx watcom msdos
@@ -186,6 +186,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t
endif
override FPCOPT+=-Cp$(SUBARCH)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+ifeq ($(SUBARCH),)
+$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined)
+endif
+override FPCOPT+=-Cp$(SUBARCH)
+endif
ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
TARGETSUFFIX=$(OS_TARGET)
SOURCESUFFIX=$(OS_SOURCE)
@@ -547,6 +553,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings watcom dos cpu charset cpall types getopts heaptrc lnfodwrf lineinfo ctypes fgl math typinfo mmx sysutils
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings watcom dos cpu charset cpall types getopts heaptrc lnfodwrf lineinfo ctypes fgl math typinfo mmx sysutils
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings watcom dos cpu charset cpall types getopts heaptrc lnfodwrf lineinfo ctypes fgl math typinfo mmx sysutils
endif
@@ -560,226 +569,229 @@ ifeq ($(FULL_TARGET),i8086-msdos)
override TARGET_UNITS+=system uuchar objpas macpas iso7185 strings watcom dos cpu charset cpall types getopts heaptrc lnfodwrf lineinfo ctypes fgl math typinfo mmx sysutils
endif
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-linux)
override TARGET_LOADERS+=prt0
@@ -991,6 +1003,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_LOADERS+=prt0
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_LOADERS+=prt0
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_LOADERS+=prt0
endif
@@ -1213,6 +1228,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_RSTS+=math typinfo classes sysconst
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_RSTS+=math typinfo classes sysconst
endif
@@ -1436,6 +1454,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
endif
@@ -1658,6 +1679,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC)
endif
@@ -2879,8 +2903,6 @@ emu387$(PPUEXT) : emu387.pp fpu$(OEXT) strings$(PPUEXT) dxeload$(PPUEXT) \
ports$(PPUEXT) : ports.pp objpas$(PPUEXT) system$(PPUEXT)
dos$(PPUEXT) : dos.pp $(INC)/filerec.inc $(INC)/textrec.inc \
watcom$(PPUEXT) strings$(PPUEXT) system$(PPUEXT)
-crt$(PPUEXT) : crt.pp $(INC)/textrec.inc watcom$(PPUEXT) system$(PPUEXT)
-objects$(PPUEXT) : $(INC)/objects.pp system$(PPUEXT)
printer$(PPUEXT) : printer.pp system$(PPUEXT)
sysutils$(PPUEXT) : sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
objpas$(PPUEXT) dos$(PPUEXT) watcom$(PPUEXT) sysconst$(PPUEXT)
@@ -2894,21 +2916,12 @@ typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT)
$(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp
math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/math.pp
-varutils$(PPUEXT) : $(OBJPASDIR)/cvarutil.inc $(OBJPASDIR)/varutils.inc \
- $(OBJPASDIR)/varutilh.inc varutils.pp
- $(COMPILER) -I$(OBJPASDIR) varutils.pp
types$(PPUEXT) : $(OBJPASDIR/types.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/types.pp
rtlconst$(PPUEXT) : $(OBJPASDIR)/rtlconst.pp
$(COMPILER) -Fi$(OBJPASDIR) $(OBJPASDIR)/rtlconst.pp
sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/sysconst.pp
-dateutil$(PPUEXT) : $(OBJPASDIR)/dateutil.pp
- $(COMPILER) -Fi$(OBJPASDIR) $(OBJPASDIR)/dateutil.pp
-convutil$(PPUEXT) : $(OBJPASDIR)/convutil.pp
- $(COMPILER) -Fi$(OBJPASDIR) $(OBJPASDIR)/convutil.pp
-strutils$(PPUEXT) : $(OBJPASDIR)/strutils.pp
- $(COMPILER) $(OBJPASDIR)/strutils.pp
macpas$(PPUEXT) : $(INC)/macpas.pp objpas$(PPUEXT) math$(PPUEXT)
$(COMPILER) $(INC)/macpas.pp $(REDIR)
cpu$(PPUEXT) : $(PROCINC)/cpu.pp system$(PPUEXT)
diff --git a/rtl/watcom/Makefile.fpc b/rtl/watcom/Makefile.fpc
index 1e8a3681a8..e1cc4674b4 100644
--- a/rtl/watcom/Makefile.fpc
+++ b/rtl/watcom/Makefile.fpc
@@ -14,7 +14,7 @@ units=system uuchar objpas macpas iso7185 strings watcom dos \
sysutils
implicitunits=exeinfo \
cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 \
- cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+ cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
# dpmiexcp initc ports profile dxeload emu387 \
# printer graph classes \
@@ -137,10 +137,6 @@ ports$(PPUEXT) : ports.pp objpas$(PPUEXT) system$(PPUEXT)
dos$(PPUEXT) : dos.pp $(INC)/filerec.inc $(INC)/textrec.inc \
watcom$(PPUEXT) strings$(PPUEXT) system$(PPUEXT)
-crt$(PPUEXT) : crt.pp $(INC)/textrec.inc watcom$(PPUEXT) system$(PPUEXT)
-
-objects$(PPUEXT) : $(INC)/objects.pp system$(PPUEXT)
-
printer$(PPUEXT) : printer.pp system$(PPUEXT)
#
@@ -175,10 +171,6 @@ typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT)
math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/math.pp
-varutils$(PPUEXT) : $(OBJPASDIR)/cvarutil.inc $(OBJPASDIR)/varutils.inc \
- $(OBJPASDIR)/varutilh.inc varutils.pp
- $(COMPILER) -I$(OBJPASDIR) varutils.pp
-
types$(PPUEXT) : $(OBJPASDIR/types.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/types.pp
@@ -186,12 +178,6 @@ rtlconst$(PPUEXT) : $(OBJPASDIR)/rtlconst.pp
$(COMPILER) -Fi$(OBJPASDIR) $(OBJPASDIR)/rtlconst.pp
sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/sysconst.pp
-dateutil$(PPUEXT) : $(OBJPASDIR)/dateutil.pp
- $(COMPILER) -Fi$(OBJPASDIR) $(OBJPASDIR)/dateutil.pp
-convutil$(PPUEXT) : $(OBJPASDIR)/convutil.pp
- $(COMPILER) -Fi$(OBJPASDIR) $(OBJPASDIR)/convutil.pp
-strutils$(PPUEXT) : $(OBJPASDIR)/strutils.pp
- $(COMPILER) $(OBJPASDIR)/strutils.pp
#
# Mac Pascal Model
diff --git a/rtl/wii/Makefile b/rtl/wii/Makefile
index eeaeac5fa5..ba3c9c425b 100644
--- a/rtl/wii/Makefile
+++ b/rtl/wii/Makefile
@@ -1,8 +1,8 @@
#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-04-01 rev 27428]
#
default: all
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos
BSDs = freebsd netbsd openbsd darwin
UNIXs = linux $(BSDs) solaris qnx haiku aix
LIMIT83fs = go32v2 os2 emx watcom msdos
@@ -186,6 +186,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t
endif
override FPCOPT+=-Cp$(SUBARCH)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+ifeq ($(SUBARCH),)
+$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined)
+endif
+override FPCOPT+=-Cp$(SUBARCH)
+endif
ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
TARGETSUFFIX=$(OS_TARGET)
SOURCESUFFIX=$(OS_SOURCE)
@@ -544,6 +550,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas strings sysutils math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl cmem
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas strings sysutils math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl cmem
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas strings sysutils math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl cmem
endif
@@ -557,226 +566,229 @@ ifeq ($(FULL_TARGET),i8086-msdos)
override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas strings sysutils math typinfo ctypes charset cpall getopts types rtlconsts sysconst lineinfo fgl cmem
endif
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
override INSTALL_FPCPACKAGE=y
ifeq ($(FULL_TARGET),i386-linux)
@@ -989,6 +1001,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
endif
@@ -1211,6 +1226,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
endif
@@ -2004,17 +2022,23 @@ ifdef ACROSSCOMPILE
override FPCOPT+=$(CROSSOPT)
endif
override COMPILER:=$(strip $(FPC) $(FPCOPT))
-ifeq (,$(findstring -s ,$(COMPILER)))
+ifneq (,$(findstring -sh ,$(COMPILER)))
+UseEXECPPAS=1
+endif
+ifneq (,$(findstring -s ,$(COMPILER)))
+ifeq ($(FULL_SOURCE),$(FULL_TARGET))
+UseEXECPPAS=1
+endif
+endif
+ifneq ($(UseEXECPPAS),1)
EXECPPAS=
else
-ifeq ($(FULL_SOURCE),$(FULL_TARGET))
ifdef RUNBATCH
EXECPPAS:=@$(RUNBATCH) $(PPAS)
else
EXECPPAS:=@$(PPAS)
endif
endif
-endif
.PHONY: fpc_units
ifneq ($(TARGET_UNITS)$(TARGET_IMPLICITUNITS),)
override ALLTARGET+=fpc_units
diff --git a/rtl/wii/Makefile.fpc b/rtl/wii/Makefile.fpc
index 3fbad0b914..2e1326a4c9 100644
--- a/rtl/wii/Makefile.fpc
+++ b/rtl/wii/Makefile.fpc
@@ -20,7 +20,7 @@ units=$(SYSTEMUNIT) uuchar objpas macpas strings \
#rsts=math rtlconsts varutils typinfo variants classes sysconst dateutil fpmkunit
#implicitunits=exeinfo \
implicitunits=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 \
- cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+ cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
[require]
nortl=y
diff --git a/rtl/wii/system.pp b/rtl/wii/system.pp
index 473de4bd2e..d59a503417 100644
--- a/rtl/wii/system.pp
+++ b/rtl/wii/system.pp
@@ -247,7 +247,7 @@ end;
begin
StackLength := CheckInitialStkLen(InitialStkLen);
- StackBottom := StackTop - StackLength;
+ StackBottom := Sptr - StackLength;
{ OS specific startup }
{ Set up signals handlers }
diff --git a/rtl/win/syswin.inc b/rtl/win/syswin.inc
index 604c56bbb8..b41ff3aa75 100644
--- a/rtl/win/syswin.inc
+++ b/rtl/win/syswin.inc
@@ -157,13 +157,24 @@ begin
STATUS_ACCESS_VIOLATION: result := 216; { reAccessViolation }
STATUS_CONTROL_C_EXIT: result := 217; { reControlBreak }
STATUS_PRIVILEGED_INSTRUCTION: result := 218; { rePrivilegedInstruction }
+ STATUS_FLOAT_MULTIPLE_TRAPS,
+ STATUS_FLOAT_MULTIPLE_FAULTS: result := -255; { indicate FPU reset }
else
result := 255; { reExternalException }
end;
end;
+procedure TranslateMxcsr(mxcsr: longword; var code: longint);
+begin
+ case (mxcsr and $3f) of
+ 1,32: code:=-207; { InvalidOp, Precision }
+ 2,16: code:=-206; { Denormal, Underflow }
+ 4: code:=-208; { !!reZeroDivide }
+ 8: code:=-205; { reOverflow }
+ end;
+end;
-function FilterException(var rec:TExceptionRecord; imagebase: PtrUInt; filterRva: DWord): Pointer;
+function FilterException(var rec:TExceptionRecord; imagebase: PtrUInt; filterRva: DWord; errcode: Longint): Pointer;
var
ExClass: TClass;
i: Longint;
@@ -174,7 +185,7 @@ begin
if rec.ExceptionCode=FPC_EXCEPTION_CODE then
ExClass:=TObject(rec.ExceptionInformation[1]).ClassType
else if Assigned(ExceptClsProc) then
- ExClass:=TClass(TExceptClsProc(ExceptClsProc)(abs(RunErrorCode(rec))))
+ ExClass:=TClass(TExceptClsProc(ExceptClsProc)(errcode))
else
Exit; { if we cannot determine type of exception, don't handle it }
Filter:=Pointer(imagebase+filterRva);
@@ -637,7 +648,7 @@ type
PWStrInitTablesTable = ^TWStrInitTablesTable;
TWStrInitTablesTable = packed record
- count : {$ifdef VER2_6}longint{$else}nativeint{$endif};
+ count : {$ifdef VER2_6}longint{$else}sizeint{$endif};
tables : packed array [1..32767] of PWStrInitEntry;
end;
diff --git a/rtl/win32/Makefile b/rtl/win32/Makefile
index d13d99f40f..d4b5c5205a 100644
--- a/rtl/win32/Makefile
+++ b/rtl/win32/Makefile
@@ -1,8 +1,8 @@
#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-04-01 rev 27428]
#
default: all
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos
BSDs = freebsd netbsd openbsd darwin
UNIXs = linux $(BSDs) solaris qnx haiku aix
LIMIT83fs = go32v2 os2 emx watcom msdos
@@ -185,6 +185,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t
endif
override FPCOPT+=-Cp$(SUBARCH)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+ifeq ($(SUBARCH),)
+$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined)
+endif
+override FPCOPT+=-Cp$(SUBARCH)
+endif
ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
TARGETSUFFIX=$(OS_TARGET)
SOURCESUFFIX=$(OS_SOURCE)
@@ -340,448 +346,454 @@ OBJPASDIR=$(RTL)/objpas
include $(WININC)/makefile.inc
WINDOWS_SOURCE_FILES=$(addprefix $(WININC)/,$(addsuffix .inc,$(WINDOWS_FILES)))
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types strutils typinfo fgl classes cpu mmx charset character getopts printer serial fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc windows initc cmem dynlibs signals dos messages rtlconsts sysconst sysutils math types typinfo fgl classes cpu mmx charset character getopts fpwidestring winsysut sharemem exeinfo fpintres windirs cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-linux)
override TARGET_LOADERS+=$(LOADERS)
@@ -993,6 +1005,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_LOADERS+=$(LOADERS)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_LOADERS+=$(LOADERS)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_LOADERS+=$(LOADERS)
endif
@@ -1215,6 +1230,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_RSTS+=math typinfo classes sysconst
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_RSTS+=math typinfo classes sysconst
endif
@@ -1227,7 +1245,7 @@ endif
ifeq ($(FULL_TARGET),i8086-msdos)
override TARGET_RSTS+=math typinfo classes sysconst
endif
-override INSTALL_BUILDUNIT=buildcollations$(PPUEXT) buildrtl
+override INSTALL_BUILDUNIT=buildrtl
override INSTALL_FPCPACKAGE=y
ifeq ($(FULL_TARGET),i386-linux)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(WINDIR)
@@ -1439,6 +1457,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(WINDIR)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(WINDIR)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(WINDIR)
endif
@@ -1661,6 +1682,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(WINDIR)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(WINDIR)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(WINDIR)
endif
@@ -2454,17 +2478,23 @@ ifdef ACROSSCOMPILE
override FPCOPT+=$(CROSSOPT)
endif
override COMPILER:=$(strip $(FPC) $(FPCOPT))
-ifeq (,$(findstring -s ,$(COMPILER)))
+ifneq (,$(findstring -sh ,$(COMPILER)))
+UseEXECPPAS=1
+endif
+ifneq (,$(findstring -s ,$(COMPILER)))
+ifeq ($(FULL_SOURCE),$(FULL_TARGET))
+UseEXECPPAS=1
+endif
+endif
+ifneq ($(UseEXECPPAS),1)
EXECPPAS=
else
-ifeq ($(FULL_SOURCE),$(FULL_TARGET))
ifdef RUNBATCH
EXECPPAS:=@$(RUNBATCH) $(PPAS)
else
EXECPPAS:=@$(PPAS)
endif
endif
-endif
.PHONY: fpc_loaders
ifneq ($(TARGET_LOADERS),)
override ALLTARGET+=fpc_loaders
@@ -2883,8 +2913,6 @@ buildrtl$(PPUEXT): buildrtl.pp system$(PPUEXT) objpas$(PPUEXT)
$(COMPILER) -Fi$(OBJPASDIR)/sysutils -Fi$(OBJPASDIR)/classes -Fu$(PROCINC) -I$(OBJPASDIR) -I$(WININC) -Fu$(WININC) -Fu$(WINDIR) -I$(INC) -Fu$(INC) -Fu$(OBJPASDIR) buildrtl
cpall$(PPUEXT): $(RTL)/charmaps/cpall.pas system$(PPUEXT) objpas$(PPUEXT)
$(COMPILER) -Fu$(INC) -Fi$(RTL)/charmaps $(RTL)/charmaps/cpall.pas
-buildcollations$(PPUEXT): $(OBJPASDIR)/collations/buildcollations.pas system$(PPUEXT) objpas$(PPUEXT)
- $(COMPILER) -Fu$(OBJPASDIR) -Fi$(OBJPASDIR)/collations -I$(OBJPASDIR)/collations $(OBJPASDIR)/collations/buildcollations.pas
softfpu$(PPUEXT) : ../inc/softfpu.pp system$(PPUEXT)
$(COMPILER) ../inc/softfpu.pp
sfpu128$(PPUEXT) : ../inc/sfpu128.pp system$(PPUEXT)
diff --git a/rtl/win32/Makefile.fpc b/rtl/win32/Makefile.fpc
index 8bb8b6487c..168e81ee7f 100644
--- a/rtl/win32/Makefile.fpc
+++ b/rtl/win32/Makefile.fpc
@@ -7,23 +7,20 @@ main=rtl
[target]
loaders=$(LOADERS)
-units=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+units=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
implicitunits=sysinitpas sysinitcyg sysinitgprof \
ctypes strings \
heaptrc \
windows initc cmem dynlibs signals \
dos messages \
rtlconsts sysconst sysutils math types \
- strutils typinfo fgl classes \
+ typinfo fgl classes \
cpu mmx charset character getopts \
- printer serial \
fpwidestring \
winsysut sharemem exeinfo fpintres windirs \
cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 \
- cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 \
- unicodedata unicodeducet unicodenumtable \
- collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
-
+ cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 \
+ unicodedata unicodenumtable
# shared=$(DLLS)
@@ -34,7 +31,7 @@ nortl=y
[install]
fpcpackage=y
-buildunit=buildcollations$(PPUEXT) buildrtl
+buildunit=buildrtl
[default]
fpcdir=../..
@@ -135,9 +132,6 @@ buildrtl$(PPUEXT): buildrtl.pp system$(PPUEXT) objpas$(PPUEXT)
cpall$(PPUEXT): $(RTL)/charmaps/cpall.pas system$(PPUEXT) objpas$(PPUEXT)
$(COMPILER) -Fu$(INC) -Fi$(RTL)/charmaps $(RTL)/charmaps/cpall.pas
-buildcollations$(PPUEXT): $(OBJPASDIR)/collations/buildcollations.pas system$(PPUEXT) objpas$(PPUEXT)
- $(COMPILER) -Fu$(OBJPASDIR) -Fi$(OBJPASDIR)/collations -I$(OBJPASDIR)/collations $(OBJPASDIR)/collations/buildcollations.pas
-
softfpu$(PPUEXT) : ../inc/softfpu.pp system$(PPUEXT)
$(COMPILER) ../inc/softfpu.pp
diff --git a/rtl/win32/buildrtl.pp b/rtl/win32/buildrtl.pp
index eea865216d..25ba48b02a 100644
--- a/rtl/win32/buildrtl.pp
+++ b/rtl/win32/buildrtl.pp
@@ -9,11 +9,10 @@ unit buildrtl;
windows, initc, cmem, dynlibs, signals,
dos, messages,
rtlconsts, sysconst, sysutils, math, types,
- strutils, typinfo, fgl, classes,
+ typinfo, fgl, classes,
cpu, mmx, charset, character, getopts,
- printer,
fpwidestring,
- winsysut, sharemem, fpintres, windirs, serial;
+ winsysut, sharemem, fpintres, windirs;
implementation
diff --git a/rtl/win32/seh32.inc b/rtl/win32/seh32.inc
index 27fff1a9e7..f487b0e138 100644
--- a/rtl/win32/seh32.inc
+++ b/rtl/win32/seh32.inc
@@ -48,23 +48,49 @@ end;
function GetBacktrace(Context: TContext; StartingFrame: Pointer; out Frames: PPointer): Longint;
+var
+ FrameCount: Longint;
+ oldebp: Cardinal;
begin
- // TODO
- Frames:=nil;
- result:=0;
+ Frames:=AllocMem(RaiseMaxFrameCount*sizeof(pointer));
+ FrameCount:=0;
+ repeat
+ oldebp:=context.ebp;
+ { get_caller_stackinfo checks against StackTop on i386 }
+ get_caller_stackinfo(pointer(Context.Ebp),codepointer(Context.Eip));
+ if (Context.ebp<=oldebp) or (FrameCount>=RaiseMaxFrameCount) then
+ break;
+ if (Pointer(Context.ebp)>StartingFrame) or (FrameCount>0) then
+ begin
+ Frames[FrameCount]:=Pointer(Context.eip);
+ Inc(FrameCount);
+ end;
+ until False;
+ result:=FrameCount;
+end;
+
+
+function RunErrorCode386(const rec: TExceptionRecord; const context: TContext): Longint;
+begin
+ result:=RunErrorCode(rec);
+ { deal with SSE exceptions }
+ if (result=-255) and ((context.ContextFlags and CONTEXT_EXTENDED_REGISTERS)<>0) then
+ TranslateMxcsr(PLongword(@context.ExtendedRegisters[24])^,result);
end;
procedure fpc_RaiseException(Obj: TObject; AnAddr,AFrame: Pointer); [public,alias: 'FPC_RAISEEXCEPTION']; compilerproc;
var
ctx: TContext;
- args: array[0..3] of PtrUint;
+ args: array[0..4] of PtrUint;
begin
- //RtlCaptureContext(ctx);
+ ctx.Ebp:=Cardinal(AFrame);
+ ctx.Eip:=Cardinal(AnAddr);
args[0]:=PtrUint(AnAddr);
args[1]:=PtrUint(Obj);
args[2]:=GetBacktrace(ctx,AFrame,PPointer(args[3]));
- RaiseException(FPC_EXCEPTION_CODE,EXCEPTION_NONCONTINUABLE,4,@args[0]);
+ args[4]:=PtrUInt(AFrame);
+ RaiseException(FPC_EXCEPTION_CODE,EXCEPTION_NONCONTINUABLE,5,@args[0]);
end;
@@ -141,35 +167,73 @@ var
code: longint;
Obj: TObject;
Adr: Pointer;
+ Frames: PCodePointer;
+ FrameCount: Longint;
begin
if (rec.ExceptionFlags and EXCEPTION_UNWIND)=0 then
begin
+ { Athlon prefetch bug? }
+ if (rec.ExceptionCode=STATUS_ACCESS_VIOLATION) and is_prefetch(pointer(context.eip)) then
+ begin
+ result:=ExceptionContinueExecution;
+ exit;
+ end
+ else if (rec.ExceptionCode=STATUS_ILLEGAL_INSTRUCTION) and sse_check then
+ begin
+ os_supports_sse:=False;
+ { skip the offending movaps %xmm7,%xmm6 instruction }
+ inc(context.eip,3);
+ result:=ExceptionContinueExecution;
+ exit;
+ end;
+
RtlUnwind(@frame,nil,@rec,nil);
+ asm
+ { RtlUnwind destroys nonvolatile registers, this assembler block prevents
+ regvar optimizations. }
+ end ['ebx','esi','edi'];
+
if rec.ExceptionCode<>FPC_EXCEPTION_CODE then
begin
- code:=RunErrorCode(rec);
+ code:=RunErrorCode386(rec,context);
if code<0 then
SysResetFPU;
+ code:=abs(code);
Adr:=rec.ExceptionAddress;
Obj:=nil;
if Assigned(ExceptObjProc) then
- Obj:=TObject(TExceptObjProc(ExceptObjProc)(abs(code),rec));
+ Obj:=TObject(TExceptObjProc(ExceptObjProc)(code,rec));
if Obj=nil then
- RunError(abs(code));
+ begin
+ { This works because RtlUnwind does not actually unwind the stack on i386
+ (and only on i386) }
+ errorcode:=word(code);
+ errorbase:=pointer(context.Ebp);
+ erroraddr:=pointer(context.Eip);
+ Halt(code);
+ end;
+ FrameCount:=GetBacktrace(context,nil,Frames);
end
else
begin
Obj:=TObject(rec.ExceptionInformation[1]);
Adr:=rec.ExceptionInformation[0];
+ Frames:=PCodePointer(rec.ExceptionInformation[3]);
+ FrameCount:=ptruint(rec.ExceptionInformation[2]);
code:=217;
end;
if Assigned(ExceptProc) then
begin
- ExceptProc(Obj,Adr,0,nil {TODO: backtrace});
+ ExceptProc(Obj,Adr,FrameCount,Frames);
Halt(217);
end
else
- RunError(abs(code));
+ begin
+ errorcode:=word(code);
+ errorbase:=pointer(rec.ExceptionInformation[4]);
+ erroraddr:=pointer(Adr);
+ Halt(code);
+ end;
end;
result:=ExceptionContinueExecution;
end;
@@ -210,7 +274,7 @@ begin
if rec.ExceptionCode<>FPC_EXCEPTION_CODE then
begin
Exc.FObject:=nil;
- code:=RunErrorCode(rec);
+ code:=RunErrorCode386(rec,context);
if Assigned(ExceptObjProc) then
Exc.FObject:=TObject(TExceptObjProc(ExceptObjProc)(abs(code),rec));
if (Exc.FObject=nil) and (frame.Addr<>Pointer(@__FPC_except_safecall)) then
@@ -301,7 +365,7 @@ begin
exit;
end;
{ Are we going to catch it? }
- TargetAddr:=FilterException(rec,0,PtrUInt(frame.HandlerArg));
+ TargetAddr:=FilterException(rec,0,PtrUInt(frame.HandlerArg),abs(RunErrorCode386(rec,context)));
if assigned(TargetAddr) then
CommonHandler(rec,frame,context,TargetAddr);
end;
diff --git a/rtl/win32/system.pp b/rtl/win32/system.pp
index 3ec73edfaa..17ebb76842 100644
--- a/rtl/win32/system.pp
+++ b/rtl/win32/system.pp
@@ -128,6 +128,12 @@ function main_wrapper(arg: Pointer; proc: Pointer): ptrint; forward;
procedure OutermostHandler; external name '__FPC_DEFAULT_HANDLER';
{$endif FPC_USE_WIN32_SEH}
+{$define FPC_SYSTEM_HAS_STACKTOP}
+function StackTop: pointer; assembler;nostackframe;
+asm
+ movl %fs:(4),%eax
+end;
+
{ include system independent routines }
{$I system.inc}
@@ -642,9 +648,6 @@ function CheckInitialStkLen(stklen : SizeUInt) : SizeUInt;
result:=tpeheader((pointer(getmodulehandle(nil))+(tdosheader(pointer(getmodulehandle(nil))^).e_lfanew))^).SizeOfStackReserve;
end;
-var
- st : Pointer;
-
begin
{ get some helpful informations }
GetStartupInfo(@startupinfo);
@@ -654,12 +657,6 @@ begin
MainInstance:=SysInstance;
- asm
- movl %fs:(4),%eax
- movl %eax,st
- end;
- StackTop:=st;
-
{ pass dummy value }
StackLength := CheckInitialStkLen($1000000);
StackBottom := StackTop - StackLength;
diff --git a/rtl/win64/Makefile b/rtl/win64/Makefile
index 28331f6b9f..84cbc724e6 100644
--- a/rtl/win64/Makefile
+++ b/rtl/win64/Makefile
@@ -1,8 +1,8 @@
#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-04-01 rev 27428]
#
default: all
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos
BSDs = freebsd netbsd openbsd darwin
UNIXs = linux $(BSDs) solaris qnx haiku aix
LIMIT83fs = go32v2 os2 emx watcom msdos
@@ -185,6 +185,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t
endif
override FPCOPT+=-Cp$(SUBARCH)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+ifeq ($(SUBARCH),)
+$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined)
+endif
+override FPCOPT+=-Cp$(SUBARCH)
+endif
ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
TARGETSUFFIX=$(OS_TARGET)
SOURCESUFFIX=$(OS_SOURCE)
@@ -336,448 +342,454 @@ endif
OBJPASDIR=$(RTL)/objpas
WINDOWS_SOURCE_FILES=$(addprefix $(WININC)/,$(addsuffix .inc,$(WINDOWS_FILES)))
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+override TARGET_UNITS+=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types strutils typinfo fgl classes getopts printer charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodeducet unicodenumtable collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc dos messages windows cmem dynlibs rtlconsts sysconst sysutils math types typinfo fgl classes getopts charset character fpwidestring sharemem exeinfo fpintres windirs cpu signals cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodedata unicodenumtable
endif
ifeq ($(FULL_TARGET),i386-linux)
override TARGET_LOADERS+=$(LOADERS)
@@ -989,6 +1001,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_LOADERS+=$(LOADERS)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_LOADERS+=$(LOADERS)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_LOADERS+=$(LOADERS)
endif
@@ -1211,6 +1226,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_RSTS+=math typinfo classes sysconst
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_RSTS+=math typinfo classes sysconst
endif
@@ -1223,7 +1241,7 @@ endif
ifeq ($(FULL_TARGET),i8086-msdos)
override TARGET_RSTS+=math typinfo classes sysconst
endif
-override INSTALL_BUILDUNIT=buildcollations$(PPUEXT) buildrtl
+override INSTALL_BUILDUNIT=buildrtl
override INSTALL_FPCPACKAGE=y
ifeq ($(FULL_TARGET),i386-linux)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
@@ -1435,6 +1453,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
endif
@@ -1657,6 +1678,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(WINDIR)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(WINDIR)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(WINDIR)
endif
@@ -2450,17 +2474,23 @@ ifdef ACROSSCOMPILE
override FPCOPT+=$(CROSSOPT)
endif
override COMPILER:=$(strip $(FPC) $(FPCOPT))
-ifeq (,$(findstring -s ,$(COMPILER)))
+ifneq (,$(findstring -sh ,$(COMPILER)))
+UseEXECPPAS=1
+endif
+ifneq (,$(findstring -s ,$(COMPILER)))
+ifeq ($(FULL_SOURCE),$(FULL_TARGET))
+UseEXECPPAS=1
+endif
+endif
+ifneq ($(UseEXECPPAS),1)
EXECPPAS=
else
-ifeq ($(FULL_SOURCE),$(FULL_TARGET))
ifdef RUNBATCH
EXECPPAS:=@$(RUNBATCH) $(PPAS)
else
EXECPPAS:=@$(PPAS)
endif
endif
-endif
.PHONY: fpc_loaders
ifneq ($(TARGET_LOADERS),)
override ALLTARGET+=fpc_loaders
@@ -2869,8 +2899,6 @@ buildrtl$(PPUEXT): buildrtl.pp system$(PPUEXT) objpas$(PPUEXT)
$(COMPILER) -Fi$(OBJPASDIR)/sysutils -Fi$(OBJPASDIR)/classes -Fu$(PROCINC) -I$(WINDIR) -I$(OBJPASDIR) -I$(WININC) -Fu$(WININC) -Fu$(WINDIR) -I$(INC) -Fu$(INC) -Fu$(OBJPASDIR) buildrtl
cpall$(PPUEXT): $(RTL)/charmaps/cpall.pas system$(PPUEXT) objpas$(PPUEXT)
$(COMPILER) -Fu$(INC) -Fi$(RTL)/charmaps $(RTL)/charmaps/cpall.pas
-buildcollations$(PPUEXT): $(OBJPASDIR)/collations/buildcollations.pas system$(PPUEXT) objpas$(PPUEXT)
- $(COMPILER) -Fu$(OBJPASDIR) -Fi$(OBJPASDIR)/collations -I$(OBJPASDIR)/collations $(OBJPASDIR)/collations/buildcollations.pas
iso7185$(PPUEXT) : $(INC)/iso7185.pp $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(INC)/iso7185.pp
lineinfo$(PPUEXT) : $(INC)/lineinfo.pp $(SYSTEMUNIT)$(PPUEXT)
diff --git a/rtl/win64/Makefile.fpc b/rtl/win64/Makefile.fpc
index d2e2e48811..672e9facca 100644
--- a/rtl/win64/Makefile.fpc
+++ b/rtl/win64/Makefile.fpc
@@ -7,21 +7,19 @@ main=rtl
[target]
loaders=$(LOADERS)
-units=system uuchar objpas macpas iso7185 buildrtl buildcollations cpall lineinfo lnfodwrf
+units=system uuchar objpas macpas iso7185 buildrtl cpall lineinfo lnfodwrf
implicitunits=ctypes strings \
heaptrc \
dos messages \
windows cmem dynlibs \
rtlconsts sysconst sysutils math types \
- strutils \
typinfo fgl classes getopts \
- printer charset character fpwidestring \
+ charset character fpwidestring \
sharemem exeinfo fpintres windirs \
cpu signals \
cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 \
- cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852 \
- unicodedata unicodeducet unicodenumtable \
- collation_de collation_es collation_fr_ca collation_ja collation_ko collation_ru collation_sv collation_zh
+ cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 \
+ unicodedata unicodenumtable
# mmx
# fpcmemdll
@@ -40,7 +38,7 @@ nortl=y
[install]
fpcpackage=y
-buildunit=buildcollations$(PPUEXT) buildrtl
+buildunit= buildrtl
[default]
fpcdir=../..
@@ -117,9 +115,6 @@ buildrtl$(PPUEXT): buildrtl.pp system$(PPUEXT) objpas$(PPUEXT)
cpall$(PPUEXT): $(RTL)/charmaps/cpall.pas system$(PPUEXT) objpas$(PPUEXT)
$(COMPILER) -Fu$(INC) -Fi$(RTL)/charmaps $(RTL)/charmaps/cpall.pas
-buildcollations$(PPUEXT): $(OBJPASDIR)/collations/buildcollations.pas system$(PPUEXT) objpas$(PPUEXT)
- $(COMPILER) -Fu$(OBJPASDIR) -Fi$(OBJPASDIR)/collations -I$(OBJPASDIR)/collations $(OBJPASDIR)/collations/buildcollations.pas
-
iso7185$(PPUEXT) : $(INC)/iso7185.pp $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(INC)/iso7185.pp
diff --git a/rtl/win64/buildrtl.pp b/rtl/win64/buildrtl.pp
index 1f76993154..38173992fa 100644
--- a/rtl/win64/buildrtl.pp
+++ b/rtl/win64/buildrtl.pp
@@ -8,9 +8,8 @@ unit buildrtl;
windows, cmem, dynlibs,
dos, messages,
rtlconsts, sysconst, sysutils, math, types,
- strutils, typinfo, fgl, classes,
+ typinfo, fgl, classes,
charset, character, getopts,
- printer,
fpwidestring,
sharemem, fpintres, windirs,
cpu, signals;
diff --git a/rtl/win64/seh64.inc b/rtl/win64/seh64.inc
index 52b8035eff..55073e4ed8 100644
--- a/rtl/win64/seh64.inc
+++ b/rtl/win64/seh64.inc
@@ -264,6 +264,15 @@ begin
Result:=FrameCount;
end;
+
+function RunErrorCodex64(const rec: TExceptionRecord; const context: TContext): Longint;
+begin
+ result:=RunErrorCode(rec);
+ if (result=-255) then
+ TranslateMxcsr(context.MxCsr,result);
+end;
+
+
{$push}
{$codealign localmin=16} { TContext record requires this }
procedure fpc_RaiseException(Obj: TObject; AnAddr,AFrame: Pointer); [public,alias: 'FPC_RAISEEXCEPTION']; compilerproc;
@@ -302,30 +311,6 @@ begin
RaiseException(FPC_EXCEPTION_CODE,EXCEPTION_NONCONTINUABLE,4,@args[0]);
end;
-{ The only difference from fpc_reraise is removing the topmost exception.
- Normally this is done in __FPC_specific_handler, but it won't work for implicit
- frames, as there's no room in scope record to store the end rva of 'except' part.
-
- This can only happen in functions which return managed result in register;
- eventually compiler must be fixed to return managed types in parameters only. }
-
-procedure fpc_reraise_implicit; [public,alias:'FPC_RERAISE_IMPLICIT'];
-var
- hp: PExceptObject;
- args: array[0..3] of PtrUInt;
-begin
- hp:=ExceptObjectStack;
- args[0]:=PtrUint(hp^.addr);
- args[1]:=PtrUint(hp^.FObject);
- args[2]:=hp^.FrameCount;
- args[3]:=PtrUint(hp^.Frames);
- hp^.refcount:=0;
- hp^.FObject:=nil;
- hp^.Frames:=nil;
- Internal_PopObjectStack.Free;
- RaiseException(FPC_EXCEPTION_CODE,EXCEPTION_NONCONTINUABLE,4,@args[0]);
-end;
-
{$ifdef DEBUG_SEH}
procedure PrintScope(idx: integer; scope: PScopeRec);
@@ -356,7 +341,7 @@ begin
begin
Obj:=nil;
Result:=False;
- code:=RunErrorCode(rec);
+ code:=RunErrorCodex64(rec,context);
if Assigned(ExceptObjProc) then
Obj:=TObject(TExceptObjProc(ExceptObjProc)(abs(code),rec));
if (Obj=nil) and (not AcceptNull) then
@@ -379,6 +364,8 @@ begin
Result:=True;
end;
+{ This is an outermost exception handler, installed using assembler around the
+ entrypoint and thread procedures. Its sole purpose is to provide sensible exitcode. }
function __FPC_default_handler(
var rec: TExceptionRecord;
frame: Pointer;
@@ -404,7 +391,7 @@ begin
begin
Exc:=ExceptObjectStack;
if Exc^.FObject=nil then
- RunError(abs(RunErrorCode(rec))) // !!prints wrong backtrace
+ RunError(abs(RunErrorCodex64(rec,context))) // !!prints wrong backtrace
else
begin
{ if ExceptObjProc=nil, ExceptProc is typically also nil,
@@ -415,12 +402,18 @@ begin
Halt(217);
end;
L1:
+ { RtlUnwindEx above resets execution context to the point where the handler
+ was installed, i.e. main_wrapper. It makes exiting this procedure no longer
+ possible, halting is the only possible action here. }
RunError(217);
end;
end;
result:=ExceptionContinueSearch;
end;
+
+{ This handler is installed by compiler for every try..finally and try..except statement,
+ including implicit ones. }
function __FPC_specific_handler(
var rec: TExceptionRecord;
frame: Pointer;
@@ -469,7 +462,7 @@ begin
if scope^.Typ>SCOPE_IMPLICIT then // filtering needed
begin
- TargetAddr:=FilterException(rec,dispatch.ImageBase,scope^.Typ);
+ TargetAddr:=FilterException(rec,dispatch.ImageBase,scope^.Typ,abs(RunErrorCodex64(rec,context)));
if TargetAddr=nil then
begin
Inc(ScopeIdx);
diff --git a/rtl/win64/system.pp b/rtl/win64/system.pp
index 12adb30b0d..4176cedbc1 100644
--- a/rtl/win64/system.pp
+++ b/rtl/win64/system.pp
@@ -116,6 +116,12 @@ asm
end;
{$endif FPC_USE_WIN64_SEH}
+{$define FPC_SYSTEM_HAS_STACKTOP}
+function StackTop: pointer; assembler;nostackframe;
+asm
+ movq %gs:(8),%rax
+end;
+
{ include system independent routines }
{$I system.inc}
@@ -581,14 +587,7 @@ function CheckInitialStkLen(stklen : SizeUInt) : SizeUInt;
result:=tpeheader((pointer(getmodulehandle(nil))+(tdosheader(pointer(getmodulehandle(nil))^).e_lfanew))^).SizeOfStackReserve;
end;
-
-function GetExceptionPointer : Pointer; assembler;nostackframe;
-asm
- movq %gs:(8),%rax
-end;
-
begin
- StackTop:=GetExceptionPointer;
{ pass dummy value }
StackLength := CheckInitialStkLen($1000000);
StackBottom := StackTop - StackLength;
diff --git a/rtl/wince/Makefile b/rtl/wince/Makefile
index 5f8223bdf5..416f7ee6d4 100644
--- a/rtl/wince/Makefile
+++ b/rtl/wince/Makefile
@@ -1,8 +1,8 @@
#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-04-01 rev 27428]
#
default: all
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos
BSDs = freebsd netbsd openbsd darwin
UNIXs = linux $(BSDs) solaris qnx haiku aix
LIMIT83fs = go32v2 os2 emx watcom msdos
@@ -185,6 +185,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t
endif
override FPCOPT+=-Cp$(SUBARCH)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+ifeq ($(SUBARCH),)
+$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined)
+endif
+override FPCOPT+=-Cp$(SUBARCH)
+endif
ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
TARGETSUFFIX=$(OS_TARGET)
SOURCESUFFIX=$(OS_SOURCE)
@@ -339,448 +345,454 @@ GRAPHDIR=$(INC)/graph
include $(WININC)/makefile.inc
WINDOWS_SOURCE_FILES=$(addprefix $(WININC)/,$(addsuffix .inc,$(WINDOWS_FILES)))
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes strutils math charset cpall getopts cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings lineinfo heaptrc windows messages dynlibs dos rtlconsts sysconst sysutils typinfo types fgl classes math charset cpall getopts cmem sharemem
endif
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i386-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),arm-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
endif
override INSTALL_FPCPACKAGE=y
ifeq ($(FULL_TARGET),i386-linux)
@@ -993,6 +1005,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
endif
@@ -1215,6 +1230,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
endif
@@ -2008,17 +2026,23 @@ ifdef ACROSSCOMPILE
override FPCOPT+=$(CROSSOPT)
endif
override COMPILER:=$(strip $(FPC) $(FPCOPT))
-ifeq (,$(findstring -s ,$(COMPILER)))
+ifneq (,$(findstring -sh ,$(COMPILER)))
+UseEXECPPAS=1
+endif
+ifneq (,$(findstring -s ,$(COMPILER)))
+ifeq ($(FULL_SOURCE),$(FULL_TARGET))
+UseEXECPPAS=1
+endif
+endif
+ifneq ($(UseEXECPPAS),1)
EXECPPAS=
else
-ifeq ($(FULL_SOURCE),$(FULL_TARGET))
ifdef RUNBATCH
EXECPPAS:=@$(RUNBATCH) $(PPAS)
else
EXECPPAS:=@$(PPAS)
endif
endif
-endif
.PHONY: fpc_units
ifneq ($(TARGET_UNITS)$(TARGET_IMPLICITUNITS),)
override ALLTARGET+=fpc_units
@@ -2407,8 +2431,6 @@ messages$(PPUEXT): messages.pp $(WININC)/messages.inc windows$(PPUEXT) $(SYSTEMU
dynlibs$(PPUEXT) : $(INC)/dynlibs.pas windows$(PPUEXT) rtlconsts$(PPUEXT) sysconst$(PPUEXT) sysutils$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(INC)/dynlibs.pas
dos$(PPUEXT) : dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) windows$(PPUEXT)
-objects$(PPUEXT) : $(INC)/objects.pp $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) $(INC)/objects.pp
sysutils$(PPUEXT) : sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
objpas$(PPUEXT) dos$(PPUEXT) windows$(PPUEXT) sysconst$(PPUEXT)
$(COMPILER) -Fi$(OBJPASDIR)/sysutils sysutils.pp
@@ -2422,25 +2444,12 @@ typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT)
$(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp
math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/math.pp
-varutils$(PPUEXT) : $(OBJPASDIR)/cvarutil.inc $(OBJPASDIR)/varutils.inc \
- $(OBJPASDIR)/varutilh.inc varutils.pp sysutils$(PPUEXT)
- $(COMPILER) -Fi$(OBJPASDIR) varutils.pp
-variants$(PPUEXT) : $(INC)/variants.pp varutils$(PPUEXT) sysutils$(PPUEXT) sysconst$(PPUEXT) typinfo$(PPUEXT) rtlconsts$(PPUEXT)
- $(COMPILER) -Fi$(INC) $(INC)/variants.pp
-fmtbcd$(PPUEXT) : $(OBJPASDIR)/fmtbcd.pp objpas$(PPUEXT) sysutils$(PPUEXT) variants$(PPUEXT) classes$(PPUEXT) system$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/fmtbcd.pp
types$(PPUEXT) : $(OBJPASDIR)/types.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/types.pp
rtlconsts$(PPUEXT) : objpas$(PPUEXT) $(OBJPASDIR)/rtlconsts.pp
$(COMPILER) $(OBJPASDIR)/rtlconsts.pp
sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/sysconst.pp
-dateutils$(PPUEXT) : $(OBJPASDIR)/dateutils.pp
- $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/dateutils.pp
-convutils$(PPUEXT) : $(OBJPASDIR)/convutils.pp
- $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/convutils.pp
-strutils$(PPUEXT) : $(OBJPASDIR)/strutils.pp
- $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/strutils.pp
macpas$(PPUEXT) : $(INC)/macpas.pp objpas$(PPUEXT) math$(PPUEXT)
$(COMPILER) $(INC)/macpas.pp $(REDIR)
getopts$(PPUEXT) : $(INC)/getopts.pp $(SYSTEMUNIT)$(PPUEXT)
diff --git a/rtl/wince/Makefile.fpc b/rtl/wince/Makefile.fpc
index 0ee28bbed9..684e65b230 100644
--- a/rtl/wince/Makefile.fpc
+++ b/rtl/wince/Makefile.fpc
@@ -12,7 +12,7 @@ units=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings \
dos \
rtlconsts sysconst sysutils \
typinfo types fgl classes \
- strutils math \
+ math \
charset cpall getopts \
cmem sharemem
# initc signals \
@@ -24,7 +24,7 @@ units=$(SYSTEMUNIT) uuchar fpintres ctypes objpas macpas iso7185 strings \
# rsts=math varutils typinfo variants classes dateutils sysconst
implicitunits=exeinfo \
cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 \
- cp437 cp646 cp850 cp856 cp866 cp874 cp932 cp936 cp949 cp950 cp8859_1 cp8859_5 cp8859_2 cp852
+ cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
# fake dll
# programs=fpcmemdll
@@ -148,11 +148,6 @@ dynlibs$(PPUEXT) : $(INC)/dynlibs.pas windows$(PPUEXT) rtlconsts$(PPUEXT) syscon
dos$(PPUEXT) : dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) windows$(PPUEXT)
-#crt$(PPUEXT) : crt.pp $(INC)/textrec.inc $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) dos$(PPUEXT) windows$(PPUEXT)
-
-objects$(PPUEXT) : $(INC)/objects.pp $(SYSTEMUNIT)$(PPUEXT)
- $(COMPILER) $(INC)/objects.pp
-
#
# Graph
#
@@ -190,16 +185,6 @@ typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT)
math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/math.pp
-varutils$(PPUEXT) : $(OBJPASDIR)/cvarutil.inc $(OBJPASDIR)/varutils.inc \
- $(OBJPASDIR)/varutilh.inc varutils.pp sysutils$(PPUEXT)
- $(COMPILER) -Fi$(OBJPASDIR) varutils.pp
-
-variants$(PPUEXT) : $(INC)/variants.pp varutils$(PPUEXT) sysutils$(PPUEXT) sysconst$(PPUEXT) typinfo$(PPUEXT) rtlconsts$(PPUEXT)
- $(COMPILER) -Fi$(INC) $(INC)/variants.pp
-
-fmtbcd$(PPUEXT) : $(OBJPASDIR)/fmtbcd.pp objpas$(PPUEXT) sysutils$(PPUEXT) variants$(PPUEXT) classes$(PPUEXT) system$(PPUEXT)
- $(COMPILER) $(OBJPASDIR)/fmtbcd.pp
-
types$(PPUEXT) : $(OBJPASDIR)/types.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/types.pp
@@ -209,15 +194,6 @@ rtlconsts$(PPUEXT) : objpas$(PPUEXT) $(OBJPASDIR)/rtlconsts.pp
sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/sysconst.pp
-dateutils$(PPUEXT) : $(OBJPASDIR)/dateutils.pp
- $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/dateutils.pp
-
-convutils$(PPUEXT) : $(OBJPASDIR)/convutils.pp
- $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/convutils.pp
-
-strutils$(PPUEXT) : $(OBJPASDIR)/strutils.pp
- $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/strutils.pp
-
#
# Mac Pascal Model
#
diff --git a/rtl/wince/system.pp b/rtl/wince/system.pp
index 60638cee05..bfb7cbec6a 100644
--- a/rtl/wince/system.pp
+++ b/rtl/wince/system.pp
@@ -1350,16 +1350,10 @@ end;
{$endif WINCE_EXCEPTION_HANDLING}
procedure Exe_entry;[public, alias : '_FPC_EXE_Entry'];
-var
- st: pointer;
begin
IsLibrary:=false;
{$ifdef CPUARM}
asm
- str sp,st
- end;
- StackTop:=st;
- asm
mov fp,#0
bl PASCALMAIN;
end;
@@ -1373,11 +1367,6 @@ begin
mov %esp,%fs:(0)
{$endif WINCE_EXCEPTION_HANDLING}
pushl %ebp
- movl %esp,%eax
- movl %eax,st
- end;
- StackTop:=st;
- asm
xorl %eax,%eax
movw %ss,%ax
movl %eax,_SS
@@ -1758,7 +1747,7 @@ initialization
if not(IsLibrary) then
SysInitFPU;
StackLength := CheckInitialStkLen(InitialStkLen);
- StackBottom := StackTop - StackLength;
+ StackBottom := Sptr - StackLength;
{ some misc stuff }
hprevinst:=0;
if not IsLibrary then
diff --git a/rtl/wince/wininc/defines.inc b/rtl/wince/wininc/defines.inc
index 80f332a099..6c85a5d130 100644
--- a/rtl/wince/wininc/defines.inc
+++ b/rtl/wince/wininc/defines.inc
@@ -5699,7 +5699,7 @@ PROCESSOR_ARM_V4TFP_INSTRUCTION PROCESSOR_ARM_V4TFP_INSTRUCTION
PF_ARM_L2CACHE_COPROC = $80000017;
-// Specific OEM extentions
+// Specific OEM extensions
PF_ARM_INTEL_XSCALE = $80010001;
PF_ARM_INTEL_PMU = $80010002;
PF_ARM_INTEL_WMMX = $80010003;
diff --git a/rtl/x86_64/cpu.pp b/rtl/x86_64/cpu.pp
index 65cfc11917..865560c135 100644
--- a/rtl/x86_64/cpu.pp
+++ b/rtl/x86_64/cpu.pp
@@ -31,6 +31,8 @@ unit cpu;
function InterlockedCompareExchange128Support : boolean;inline;
function AESSupport : boolean;inline;
function AVXSupport : boolean;inline;
+ function AVX2Support: boolean;inline;
+ function FMASupport: boolean;inline;
var
is_sse3_cpu : boolean = false;
@@ -42,22 +44,9 @@ unit cpu;
var
_AESSupport,
_AVXSupport,
- _InterlockedCompareExchange128Support : boolean;
-
- function InterlockedCompareExchange128Support : boolean;inline;
- begin
- result:=_InterlockedCompareExchange128Support;
- end;
-
- function AESSupport : boolean;inline;
- begin
- result:=_AESSupport;
- end;
-
- function AVXSupport: boolean;
- begin
- result:=_AVXSupport;
- end;
+ _InterlockedCompareExchange128Support,
+ _AVX2Support,
+ _FMASupport : boolean;
function InterlockedCompareExchange128(var Target: Int128Rec; NewValue: Int128Rec; Comperand: Int128Rec): Int128Rec; assembler;
{
@@ -140,7 +129,8 @@ unit cpu;
procedure SetupSupport;
var
- _ecx : longint;
+ _ecx,
+ _ebx : longint;
begin
asm
pushq %rbx
@@ -161,8 +151,51 @@ unit cpu;
((_ecx and $10000000)<>0);
is_sse3_cpu:=(_ecx and $1)<>0;
+
+ _FMASupport:=_AVXSupport and ((_ecx and $1000)<>0);
+
+ asm
+ pushq %rbx
+ movl $7,%eax
+ movl $0,%ecx
+ cpuid
+ movl %ebx,_ebx
+ popq %rbx
+ end;
+ _AVX2Support:=_AVXSupport and ((_ebx and $20)<>0);
end;
+
+ function InterlockedCompareExchange128Support : boolean;inline;
+ begin
+ result:=_InterlockedCompareExchange128Support;
+ end;
+
+
+ function AESSupport : boolean;inline;
+ begin
+ result:=_AESSupport;
+ end;
+
+
+ function AVXSupport: boolean;inline;
+ begin
+ result:=_AVXSupport;
+ end;
+
+
+ function AVX2Support: boolean;inline;
+ begin
+ result:=_AVX2Support;
+ end;
+
+
+ function FMASupport: boolean;inline;
+ begin
+ result:=_FMASupport;
+ end;
+
+
begin
SetupSupport;
end.
diff --git a/rtl/x86_64/math.inc b/rtl/x86_64/math.inc
index 1e7b1967fd..f6ed1a2384 100644
--- a/rtl/x86_64/math.inc
+++ b/rtl/x86_64/math.inc
@@ -45,16 +45,16 @@ const
end;
- procedure SetSSECSR(w : dword);
+ procedure SetMXCSR(w : dword);
begin
- mxcsr:=w;
+ defaultmxcsr:=w;
asm
ldmxcsr w
end;
end;
- function GetSSECSR : dword;assembler;
+ function GetMXCSR : dword;assembler;
var
_w : dword;
asm
@@ -62,19 +62,22 @@ const
movl _w,%eax
end;
+
+ procedure SetSSECSR(w : dword);
+ begin
+ SetMXCSR(w);
+ end;
+
+
+ function GetSSECSR: dword;
+ begin
+ result:=GetMXCSR;
+ end;
+
{****************************************************************************
EXTENDED data type routines
****************************************************************************}
- {$ifndef FPC_SYSTEM_HAS_PI}
- {$define FPC_SYSTEM_HAS_PI}
- function fpc_pi_real : ValReal;compilerproc;
- begin
- { Function is handled internal in the compiler }
- runerror(207);
- result:=0;
- end;
- {$endif FPC_SYSTEM_HAS_PI}
{$ifndef FPC_SYSTEM_HAS_ABS}
{$define FPC_SYSTEM_HAS_ABS}
function fpc_abs_real(d : ValReal) : ValReal;compilerproc;
@@ -252,29 +255,6 @@ const
end;
{$endif FPC_SYSTEM_HAS_ROUND}
-
- {$ifndef FPC_SYSTEM_HAS_POWER}
- {$define FPC_SYSTEM_HAS_POWER}
- function power(bas,expo : extended) : extended;
- begin
- if bas=0 then
- begin
- if expo<>0 then
- power:=0.0
- else
- HandleError(207);
- end
- else if expo=0 then
- power:=1
- else
- { bas < 0 is not allowed }
- if bas<0 then
- handleerror(207)
- else
- power:=exp(ln(bas)*expo);
- end;
- {$endif FPC_SYSTEM_HAS_POWER}
-
{$else FPC_HAS_TYPE_EXTENDED}
{$define FPC_SYSTEM_HAS_TRUNC}
diff --git a/rtl/x86_64/mathu.inc b/rtl/x86_64/mathu.inc
index bb9dce78af..2d17fcab2f 100644
--- a/rtl/x86_64/mathu.inc
+++ b/rtl/x86_64/mathu.inc
@@ -104,7 +104,7 @@ procedure sincos(theta : single;out sinus,cosinus : single);assembler;
function GetRoundMode: TFPURoundingMode;
begin
{$ifndef FPC_HAS_TYPE_EXTENDED}
- Result:=TFPURoundingMode((GetSSECSR shr 13) and $3);
+ Result:=TFPURoundingMode((GetMXCSR shr 13) and $3);
{$else win64}
Result:=TFPURoundingMode((Get8087CW shr 10) and $3);
{$endif win64}
@@ -113,11 +113,17 @@ end;
function SetRoundMode(const RoundMode: TFPURoundingMode): TFPURoundingMode;
var
CtlWord: Word;
+ SSECSR: dword;
begin
CtlWord:=Get8087CW;
+ SSECSR:=GetMXCSR;
Set8087CW((CtlWord and $F3FF) or (Ord(RoundMode) shl 10));
- SetSSECSR((GetSSECSR and $ffff9fff) or (dword(RoundMode) shl 13));
- Result:=GetRoundMode;
+ SetMXCSR((SSECSR and $ffff9fff) or (dword(RoundMode) shl 13));
+{$ifdef FPC_HAS_TYPE_EXTENDED}
+ Result:=TFPURoundingMode((CtlWord shr 10) and 3);
+{$else}
+ Result:=TFPURoundingMode((SSECSR shr 13) and 3);
+{$endif FPC_HAS_TYPE_EXTENDED}
end;
function GetPrecisionMode: TFPUPrecisionMode;
@@ -137,7 +143,7 @@ end;
function GetExceptionMask: TFPUExceptionMask;
begin
{$ifndef FPC_HAS_TYPE_EXTENDED}
- Result:=TFPUExceptionMask(dword((GetSSECSR shr 7) and $3f));
+ Result:=TFPUExceptionMask(dword((GetMXCSR shr 7) and $3f));
{$else win64}
Result:=TFPUExceptionMask(dword(Get8087CW and $3F));
{$endif win64}
@@ -146,12 +152,17 @@ end;
function SetExceptionMask(const Mask: TFPUExceptionMask): TFPUExceptionMask;
var
CtlWord: Word;
+ SSECSR: dword;
begin
CtlWord:=Get8087CW;
+ SSECSR:=GetMXCSR;
Set8087CW((CtlWord and $FFC0) or Byte(Longint(Mask)));
- SetSSECSR((GetSSECSR and $ffffe07f) or (dword(Mask) shl 7));
- softfloat_exception_mask:=dword(Mask);
- Result:=GetExceptionMask;
+ SetMXCSR((SSECSR and $ffffe07f) or (dword(Mask) shl 7));
+{$ifdef FPC_HAS_TYPE_EXTENDED}
+ Result:=TFPUExceptionMask(dword(CtlWord and $3F));
+{$else}
+ Result:=TFPUExceptionMask((SSECSR shr 7) and $3F);
+{$endif FPC_HAS_TYPE_EXTENDED}
end;
diff --git a/rtl/x86_64/mathuh.inc b/rtl/x86_64/mathuh.inc
deleted file mode 100644
index 238c8406f1..0000000000
--- a/rtl/x86_64/mathuh.inc
+++ /dev/null
@@ -1,29 +0,0 @@
-{
- This file is part of the Free Pascal run time library.
- Copyright (c) 1999-2004 by Florian Klaempfl
- member of the Free Pascal 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.
-
- **********************************************************************}
-
-{ x86-64 fpu control word }
-type
- TFPURoundingMode = (rmNearest, rmDown, rmUp, rmTruncate);
- TFPUPrecisionMode = (pmSingle, pmReserved, pmDouble, pmExtended);
- TFPUException = (exInvalidOp, exDenormalized, exZeroDivide,
- exOverflow, exUnderflow, exPrecision);
- TFPUExceptionMask = set of TFPUException;
-
-function GetRoundMode: TFPURoundingMode;
-function SetRoundMode(const RoundMode: TFPURoundingMode): TFPURoundingMode;
-function GetPrecisionMode: TFPUPrecisionMode;
-function SetPrecisionMode(const Precision: TFPUPrecisionMode): TFPUPrecisionMode;
-function GetExceptionMask: TFPUExceptionMask;
-function SetExceptionMask(const Mask: TFPUExceptionMask): TFPUExceptionMask;
-procedure ClearExceptions(RaisePending: Boolean =true);
diff --git a/rtl/x86_64/x86_64.inc b/rtl/x86_64/x86_64.inc
index d75e2383db..50d445580d 100644
--- a/rtl/x86_64/x86_64.inc
+++ b/rtl/x86_64/x86_64.inc
@@ -925,8 +925,6 @@ const
FPU_StackOverflow = $40;
FPU_ExceptionMask = $ff;
- fpucw : word = $1300 or FPU_StackUnderflow or FPU_Underflow or FPU_Denormal;
-
MM_MaskInvalidOp = %0000000010000000;
MM_MaskDenorm = %0000000100000000;
MM_MaskDivZero = %0000001000000000;
@@ -934,7 +932,6 @@ const
MM_MaskUnderflow = %0000100000000000;
MM_MaskPrecision = %0001000000000000;
- mxcsr : dword = MM_MaskUnderflow or MM_MaskPrecision or MM_MaskDenorm;
procedure fpc_cpuinit;
begin
@@ -942,30 +939,14 @@ procedure fpc_cpuinit;
if IsLibrary then
begin
Default8087CW:=Get8087CW;
- mxcsr:=GetSSECSR;
+ DefaultMXCSR:=GetMXCSR;
end;
SysResetFPU;
- if not(IsLibrary) then
- SysInitFPU;
end;
{$define FPC_SYSTEM_HAS_SYSINITFPU}
Procedure SysInitFPU;
- var
- { these locals are so we don't have to hack pic code in the assembler }
- localmxcsr: dword;
- localfpucw: word;
-
begin
- localmxcsr:=mxcsr;
- localfpucw:=fpucw;
- asm
- fldcw localfpucw
- { set sse exceptions }
- ldmxcsr localmxcsr
- end ['RAX'];
- { x86-64 might use softfloat code }
- softfloat_exception_mask:=float_flag_underflow or float_flag_inexact or float_flag_denormal;
end;
@@ -977,15 +958,13 @@ Procedure SysResetFPU;
localfpucw: word;
begin
localfpucw:=Default8087CW;
- localmxcsr:=mxcsr;
+ localmxcsr:=DefaultMXCSR;
asm
fninit
fwait
fldcw localfpucw
ldmxcsr localmxcsr
end;
- { x86-64 might use softfloat code }
- softfloat_exception_flags:=0;
end;
diff --git a/tests/Makefile b/tests/Makefile
index 32dbb4bc8f..60512a45ae 100644
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -1,8 +1,8 @@
#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-03-19 rev 27188]
#
default: allexectests
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos
BSDs = freebsd netbsd openbsd darwin
UNIXs = linux $(BSDs) solaris qnx haiku aix
LIMIT83fs = go32v2 os2 emx watcom msdos
@@ -184,6 +184,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t
endif
override FPCOPT+=-Cp$(SUBARCH)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+ifeq ($(SUBARCH),)
+$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined)
+endif
+override FPCOPT+=-Cp$(SUBARCH)
+endif
ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
TARGETSUFFIX=$(OS_TARGET)
SOURCESUFFIX=$(OS_SOURCE)
@@ -529,6 +535,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_PROGRAMS+=gparmake
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_PROGRAMS+=gparmake
+endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_PROGRAMS+=gparmake
endif
@@ -1391,6 +1400,9 @@ endif
ifeq ($(FULL_TARGET),mipsel-linux)
REQUIRE_PACKAGES_RTL=1
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+REQUIRE_PACKAGES_RTL=1
+endif
ifeq ($(FULL_TARGET),mipsel-android)
REQUIRE_PACKAGES_RTL=1
endif
@@ -2065,7 +2077,7 @@ export LOG:=$(TEST_OUTPUTDIR)/log
endif
LOGFILES=$(TEST_OUTPUTDIR)/log $(TEST_OUTPUTDIR)/longlog $(TEST_OUTPUTDIR)/faillist
LOGEXT=.testlog .tbslog .tbflog .webtbslog .webtbflog
-TESTSUBDIRS=cg cg/variants cg/cdecl cpu16 cpu16/i8086 library opt units/system units/dos units/crt units/objects units/strings units/sysutils units/math units/sharemem units/strutils units/matrix units/lineinfo units/ucomplex units/fpwidestring
+TESTSUBDIRS=cg cg/variants cg/cdecl cpu16 cpu16/i8086 library opt units/system units/dos units/crt units/objects units/strings units/sysutils units/math units/sharemem units/strutils units/matrix units/lineinfo units/ucomplex units/fpwidestring units/cpu
TESTPACKAGESUBDIRS=packages/win-base packages/webtbs packages/hash packages/fcl-registry packages/fcl-process packages/zlib packages/fcl-db packages/fcl-base packages/fcl-xml packages/cocoaint packages/bzip2
ifdef QUICKTEST
export QUICKTEST
diff --git a/tests/Makefile.fpc b/tests/Makefile.fpc
index b3fc85cc6a..af8b8508d2 100644
--- a/tests/Makefile.fpc
+++ b/tests/Makefile.fpc
@@ -154,7 +154,7 @@ LOGFILES=$(TEST_OUTPUTDIR)/log $(TEST_OUTPUTDIR)/longlog $(TEST_OUTPUTDIR)/faill
LOGEXT=.testlog .tbslog .tbflog .webtbslog .webtbflog
# Subdirs available in the test subdir
-TESTSUBDIRS=cg cg/variants cg/cdecl cpu16 cpu16/i8086 library opt units/system units/dos units/crt units/objects units/strings units/sysutils units/math units/sharemem units/strutils units/matrix units/lineinfo units/ucomplex units/fpwidestring
+TESTSUBDIRS=cg cg/variants cg/cdecl cpu16 cpu16/i8086 library opt units/system units/dos units/crt units/objects units/strings units/sysutils units/math units/sharemem units/strutils units/matrix units/lineinfo units/ucomplex units/fpwidestring units/cpu
TESTPACKAGESUBDIRS=packages/win-base packages/webtbs packages/hash packages/fcl-registry packages/fcl-process packages/zlib packages/fcl-db packages/fcl-base packages/fcl-xml packages/cocoaint packages/bzip2
ifdef QUICKTEST
diff --git a/tests/tbf/tb0239.pp b/tests/tbf/tb0239.pp
new file mode 100644
index 0000000000..0e133fb24c
--- /dev/null
+++ b/tests/tbf/tb0239.pp
@@ -0,0 +1,18 @@
+{ %FAIL }
+program tb0239;
+
+{$MODE objfpc}
+
+type
+ TMyClass = class
+ function GetMyProperty(Index: Integer): Integer;
+ property MyProperty: Integer index 10000000000000000 read GetMyProperty;
+ end;
+
+function TMyClass.GetMyProperty(Index: Integer): Integer;
+begin
+ Result := 10;
+end;
+
+begin
+end.
diff --git a/tests/tbs/tb0468a.pas b/tests/tbs/tb0468a.pas
new file mode 100644
index 0000000000..adbebc8ca6
--- /dev/null
+++ b/tests/tbs/tb0468a.pas
@@ -0,0 +1,27 @@
+{ %OPT=-Sg }
+
+procedure foo;
+begin
+end;
+
+procedure test;
+label
+ a,b,c,d;
+const
+ x: array[0..3] of pointer=(@a,@b,@c,@d);
+begin
+ foo;
+a:
+ foo;
+b:
+ foo;
+c:
+ foo;
+d:
+ foo;
+end;
+
+
+begin
+end.
+
diff --git a/tests/tbs/tb0606.pp b/tests/tbs/tb0606.pp
new file mode 100644
index 0000000000..b8bd24c34e
--- /dev/null
+++ b/tests/tbs/tb0606.pp
@@ -0,0 +1,32 @@
+{ %NORUN }
+
+program tb0606;
+
+{$mode delphi}
+
+type
+ TTest<T> = class
+ procedure Test;
+ end;
+
+procedure TTest<T>.Test;
+var
+ r: T;
+ i: LongInt;
+begin
+ r := i div r;
+ r := r div i;
+ r := i mod r;
+ r := r mod i;
+ r := i shl r;
+ r := r shl i;
+ r := i shr r;
+ r := r shr i;
+ r := - r;
+ r := not r;
+ r := + r;
+end;
+
+begin
+
+end.
diff --git a/tests/tbs/tb0607.pp b/tests/tbs/tb0607.pp
new file mode 100644
index 0000000000..54ed7d2163
--- /dev/null
+++ b/tests/tbs/tb0607.pp
@@ -0,0 +1,17 @@
+{ %opt=-O2 }
+
+var
+ a,b: longword;
+ i: int64;
+ l1, l2: longword;
+begin
+ a:=1;
+ b:=123456;
+ i:= (a-b) div 10;
+ l1:=longword(i);
+ l2:=longword((a-b) div 10);
+ writeln(l1);
+ writeln(l2);
+ if l1<>l2 then
+ halt(1);
+end.
diff --git a/tests/test/cg/obj/aix/powerpc64/cpptcl1.o b/tests/test/cg/obj/aix/powerpc64/cpptcl1.o
index a0c3826c0c..cdae002042 100644
--- a/tests/test/cg/obj/aix/powerpc64/cpptcl1.o
+++ b/tests/test/cg/obj/aix/powerpc64/cpptcl1.o
Binary files differ
diff --git a/tests/test/cg/obj/aix/powerpc64/cpptcl2.o b/tests/test/cg/obj/aix/powerpc64/cpptcl2.o
index 8f16722e22..b476fdb7b6 100644
--- a/tests/test/cg/obj/aix/powerpc64/cpptcl2.o
+++ b/tests/test/cg/obj/aix/powerpc64/cpptcl2.o
Binary files differ
diff --git a/tests/test/cg/obj/aix/powerpc64/ctest.o b/tests/test/cg/obj/aix/powerpc64/ctest.o
index 791cd9ab1c..3e5e49f6a2 100644
--- a/tests/test/cg/obj/aix/powerpc64/ctest.o
+++ b/tests/test/cg/obj/aix/powerpc64/ctest.o
Binary files differ
diff --git a/tests/test/cg/obj/aix/powerpc64/tcext3.o b/tests/test/cg/obj/aix/powerpc64/tcext3.o
index d515623d46..03973fe27f 100644
--- a/tests/test/cg/obj/aix/powerpc64/tcext3.o
+++ b/tests/test/cg/obj/aix/powerpc64/tcext3.o
Binary files differ
diff --git a/tests/test/cg/obj/aix/powerpc64/tcext4.o b/tests/test/cg/obj/aix/powerpc64/tcext4.o
index ed084fd07d..e8fe75952a 100644
--- a/tests/test/cg/obj/aix/powerpc64/tcext4.o
+++ b/tests/test/cg/obj/aix/powerpc64/tcext4.o
Binary files differ
diff --git a/tests/test/cg/obj/aix/powerpc64/tcext5.o b/tests/test/cg/obj/aix/powerpc64/tcext5.o
index 261baaf449..627338e07f 100644
--- a/tests/test/cg/obj/aix/powerpc64/tcext5.o
+++ b/tests/test/cg/obj/aix/powerpc64/tcext5.o
Binary files differ
diff --git a/tests/test/cg/obj/aix/powerpc64/tcext6.o b/tests/test/cg/obj/aix/powerpc64/tcext6.o
index 4ffde11fc2..cfc2507006 100644
--- a/tests/test/cg/obj/aix/powerpc64/tcext6.o
+++ b/tests/test/cg/obj/aix/powerpc64/tcext6.o
Binary files differ
diff --git a/tests/test/cg/obj/readme.txt b/tests/test/cg/obj/readme.txt
index 00441c84fd..e03a3fee0b 100644
--- a/tests/test/cg/obj/readme.txt
+++ b/tests/test/cg/obj/readme.txt
@@ -42,3 +42,5 @@ Android-arm : GCC 4.7
Android-i386 : GCC 4.7
Android-mipsel : GCC 4.7
haiku-i386 : gcc 2.95.3-haiku-100818
+aix-powerpc64 : gcc (GCC) 4.8.1 using "gcc -maix64" for TEST_CCOMPILER
+ on (AIX power-aix 1 7 00F84C0C4C00)
diff --git a/tests/test/cg/taddset4.pp b/tests/test/cg/taddset4.pp
index 47d515db1e..460ad42787 100644
--- a/tests/test/cg/taddset4.pp
+++ b/tests/test/cg/taddset4.pp
@@ -21,7 +21,7 @@ var
b:boolean;
begin
b:=true;
- t(longint([
+ t({$ifdef CPU16}byte{$else}longint{$endif}([
TCompilerIntfFlag(ord(ifHasGuid)*ord(b)),
TCompilerIntfFlag(ord(ifHasStrGUID)*ord(b)),
TCompilerIntfFlag(ord(ifDispInterface)*ord(b))
diff --git a/tests/test/cg/tcalcla1.pp b/tests/test/cg/tcalcla1.pp
index c9bdc98380..36570b1cac 100644
--- a/tests/test/cg/tcalcla1.pp
+++ b/tests/test/cg/tcalcla1.pp
@@ -29,6 +29,9 @@ program tcalcla1;
{$endif}
{$ifdef cpu8086}
{$define cpusmall}
+ {$if defined(FPC_MM_LARGE) or defined(FPC_MM_HUGE)}
+ {$hugecode on}
+ {$endif}
{$endif}
const
diff --git a/tests/test/cg/tcall1.pp b/tests/test/cg/tcall1.pp
index 5e333d80c9..96f6b7687f 100644
--- a/tests/test/cg/tcall1.pp
+++ b/tests/test/cg/tcall1.pp
@@ -85,7 +85,7 @@ type
tclass2 = class
constructor create_none; { class constructor }
public
- b: array[1..{$ifdef cpu16}32765{$else}$66666666{$endif}] of byte;
+ b: array[1..{$ifdef cpu16}32763{$else}$66666666{$endif}] of byte;
end;
diff --git a/tests/test/cg/tvec.pp b/tests/test/cg/tvec.pp
index dba060787b..7e6c8a432c 100644
--- a/tests/test/cg/tvec.pp
+++ b/tests/test/cg/tvec.pp
@@ -39,11 +39,19 @@ const
min_small_array = 0;
max_small_array = 255;
+{$IFDEF CPU16}
+ min_big_neg_array = -770;
+ max_big_neg_array = 770;
+
+ min_big_array = 0;
+ max_big_array = 770;
+{$ELSE CPU16}
min_big_neg_array = -77000;
max_big_neg_array = 77000;
min_big_array = 0;
max_big_array = 77000;
+{$ENDIF CPU16}
min_big_odd_array = 0;
max_big_odd_array = 255;
diff --git a/tests/test/cpu16/i8086/tfarptr3.pp b/tests/test/cpu16/i8086/tfarptr3.pp
new file mode 100644
index 0000000000..b2e6081503
--- /dev/null
+++ b/tests/test/cpu16/i8086/tfarptr3.pp
@@ -0,0 +1,178 @@
+{ %cpu=i8086 }
+
+{ far pointer arithmetic tests }
+
+{ far pointer arithmetic should work only on the offset,
+ without changing the segment }
+
+{$R-}
+
+var
+ ErrorCode: Integer;
+
+procedure Error(Code: Integer);
+begin
+ Writeln('Error: ', code);
+ ErrorCode := Code;
+end;
+
+var
+ FarPtr: FarPointer;
+ FarPtr2: FarPointer;
+ int16: Integer;
+ int32: LongInt;
+begin
+ ErrorCode := 0;
+
+ Writeln('farptr + int16_var');
+ FarPtr := Ptr($1234, $5678);
+ int16 := $F0AD;
+ FarPtr2 := nil;
+ FarPtr2 := FarPtr + int16;
+ if FarPtr2 <> Ptr($1234, $4725) then
+ Error(1);
+ Writeln('int16_var + farptr');
+ FarPtr := Ptr($1234, $5678);
+ int16 := $F0AD;
+ FarPtr2 := nil;
+ FarPtr2 := int16 + FarPtr;
+ if FarPtr2 <> Ptr($1234, $4725) then
+ Error(2);
+ Writeln('farptr + int32_var');
+ FarPtr := Ptr($1234, $5678);
+ int32 := $55AAF0AD;
+ FarPtr2 := nil;
+ FarPtr2 := FarPtr + int32;
+ if FarPtr2 <> Ptr($1234, $4725) then
+ Error(3);
+ Writeln('int32_var + farptr');
+ FarPtr := Ptr($1234, $5678);
+ int32 := $55AAF0AD;
+ FarPtr2 := nil;
+ FarPtr2 := int32 + FarPtr;
+ if FarPtr2 <> Ptr($1234, $4725) then
+ Error(4);
+ Writeln('farptr + int16_const');
+ FarPtr := Ptr($1234, $5678);
+ FarPtr2 := nil;
+ FarPtr2 := FarPtr + $F0AD;
+ if FarPtr2 <> Ptr($1234, $4725) then
+ Error(5);
+ Writeln('int16_const + farptr');
+ FarPtr := Ptr($1234, $5678);
+ FarPtr2 := nil;
+ FarPtr2 := $F0AD + FarPtr;
+ if FarPtr2 <> Ptr($1234, $4725) then
+ Error(6);
+ Writeln('farptr + int32_const');
+ FarPtr := Ptr($1234, $5678);
+ FarPtr2 := nil;
+ FarPtr2 := FarPtr + $55AAF0AD;
+ if FarPtr2 <> Ptr($1234, $4725) then
+ Error(7);
+ Writeln('int32_const + farptr');
+ FarPtr := Ptr($1234, $5678);
+ FarPtr2 := nil;
+ FarPtr2 := $55AAF0AD + FarPtr;
+ if FarPtr2 <> Ptr($1234, $4725) then
+ Error(8);
+ { const }
+ Writeln('farptr_const + int16_var');
+ int16 := $F0AD;
+ FarPtr2 := nil;
+ FarPtr2 := FarPointer($12345678) + int16;
+ if FarPtr2 <> Ptr($1234, $4725) then
+ Error(9);
+ Writeln('int16_var + farptr_const');
+ int16 := $F0AD;
+ FarPtr2 := nil;
+ FarPtr2 := int16 + FarPointer($12345678);
+ if FarPtr2 <> Ptr($1234, $4725) then
+ Error(10);
+ Writeln('farptr_const + int32_var');
+ int32 := $55AAF0AD;
+ FarPtr2 := nil;
+ FarPtr2 := FarPointer($12345678) + int32;
+ if FarPtr2 <> Ptr($1234, $4725) then
+ Error(11);
+ Writeln('int32_var + farptr_const');
+ int32 := $55AAF0AD;
+ FarPtr2 := nil;
+ FarPtr2 := int32 + FarPointer($12345678);
+ if FarPtr2 <> Ptr($1234, $4725) then
+ Error(12);
+ Writeln('farptr_const + int16_const');
+ FarPtr2 := nil;
+ FarPtr2 := FarPointer($12345678) + $F0AD;
+ if FarPtr2 <> Ptr($1234, $4725) then
+ Error(13);
+ Writeln('int16_const + farptr_const');
+ FarPtr2 := nil;
+ FarPtr2 := $F0AD + FarPointer($12345678);
+ if FarPtr2 <> Ptr($1234, $4725) then
+ Error(14);
+ Writeln('farptr_const + int32_const');
+ FarPtr2 := nil;
+ FarPtr2 := FarPointer($12345678) + $55AAF0AD;
+ if FarPtr2 <> Ptr($1234, $4725) then
+ Error(15);
+ Writeln('int32_const + farptr_const');
+ FarPtr2 := nil;
+ FarPtr2 := $55AAF0AD + FarPointer($12345678);
+ if FarPtr2 <> Ptr($1234, $4725) then
+ Error(16);
+
+ Writeln('farptr - int16_var');
+ FarPtr := Ptr($1234, $5678);
+ int16 := $F0AD;
+ FarPtr2 := nil;
+ FarPtr2 := FarPtr - int16;
+ if FarPtr2 <> Ptr($1234, $65CB) then
+ Error(17);
+ Writeln('farptr - int32_var');
+ FarPtr := Ptr($1234, $5678);
+ int32 := $55AAF0AD;
+ FarPtr2 := nil;
+ FarPtr2 := FarPtr - int32;
+ if FarPtr2 <> Ptr($1234, $65CB) then
+ Error(18);
+ Writeln('farptr - int16_const');
+ FarPtr := Ptr($1234, $5678);
+ FarPtr2 := nil;
+ FarPtr2 := FarPtr - $F0AD;
+ if FarPtr2 <> Ptr($1234, $65CB) then
+ Error(19);
+ Writeln('farptr - int32_const');
+ FarPtr := Ptr($1234, $5678);
+ FarPtr2 := nil;
+ FarPtr2 := FarPtr - $55AAF0AD;
+ if FarPtr2 <> Ptr($1234, $65CB) then
+ Error(20);
+ Writeln('farptr_const - int16_var');
+ int16 := $F0AD;
+ FarPtr2 := nil;
+ FarPtr2 := FarPointer($12345678) - int16;
+ if FarPtr2 <> Ptr($1234, $65CB) then
+ Error(21);
+ Writeln('farptr_const - int32_var');
+ int32 := $55AAF0AD;
+ FarPtr2 := nil;
+ FarPtr2 := FarPointer($12345678) - int32;
+ if FarPtr2 <> Ptr($1234, $65CB) then
+ Error(22);
+ Writeln('farptr_const - int16_const');
+ FarPtr2 := nil;
+ FarPtr2 := FarPointer($12345678) - $F0AD;
+ if FarPtr2 <> Ptr($1234, $65CB) then
+ Error(23);
+ Writeln('farptr_const - int32_const');
+ FarPtr2 := nil;
+ FarPtr2 := FarPointer($12345678) - $55AAF0AD;
+ if FarPtr2 <> Ptr($1234, $65CB) then
+ Error(24);
+
+ if ErrorCode = 0 then
+ Writeln('Success!')
+ else
+ Halt(ErrorCode);
+end.
diff --git a/tests/test/cpu16/i8086/tfarptr4.pp b/tests/test/cpu16/i8086/tfarptr4.pp
new file mode 100644
index 0000000000..6a1c359dd7
--- /dev/null
+++ b/tests/test/cpu16/i8086/tfarptr4.pp
@@ -0,0 +1,183 @@
+{ %cpu=i8086 }
+
+{ far pointer arithmetic tests }
+
+{ far pointer arithmetic should work only on the offset,
+ without changing the segment }
+
+{ this test is the same as tfarptr3, but with different numbers, designed to
+ expose buggy far pointer arithmetic, where the int16 int is treated as a
+ signed int and is sign extended to 32-bit and then added to the far pointer
+ as a 32-bit int }
+
+{$R-}
+
+var
+ ErrorCode: Integer;
+
+procedure Error(Code: Integer);
+begin
+ Writeln('Error: ', code);
+ ErrorCode := Code;
+end;
+
+var
+ FarPtr: FarPointer;
+ FarPtr2: FarPointer;
+ int16: Integer;
+ int32: LongInt;
+begin
+ ErrorCode := 0;
+
+ Writeln('farptr + int16_var');
+ FarPtr := Ptr($1234, $F678);
+ int16 := $7FFF;
+ FarPtr2 := nil;
+ FarPtr2 := FarPtr + int16;
+ if FarPtr2 <> Ptr($1234, $7677) then
+ Error(1);
+ Writeln('int16_var + farptr');
+ FarPtr := Ptr($1234, $F678);
+ int16 := $7FFF;
+ FarPtr2 := nil;
+ FarPtr2 := int16 + FarPtr;
+ if FarPtr2 <> Ptr($1234, $7677) then
+ Error(2);
+ Writeln('farptr + int32_var');
+ FarPtr := Ptr($1234, $F678);
+ int32 := $55AA7FFF;
+ FarPtr2 := nil;
+ FarPtr2 := FarPtr + int32;
+ if FarPtr2 <> Ptr($1234, $7677) then
+ Error(3);
+ Writeln('int32_var + farptr');
+ FarPtr := Ptr($1234, $F678);
+ int32 := $55AA7FFF;
+ FarPtr2 := nil;
+ FarPtr2 := int32 + FarPtr;
+ if FarPtr2 <> Ptr($1234, $7677) then
+ Error(4);
+ Writeln('farptr + int16_const');
+ FarPtr := Ptr($1234, $F678);
+ FarPtr2 := nil;
+ FarPtr2 := FarPtr + $7FFF;
+ if FarPtr2 <> Ptr($1234, $7677) then
+ Error(5);
+ Writeln('int16_const + farptr');
+ FarPtr := Ptr($1234, $F678);
+ FarPtr2 := nil;
+ FarPtr2 := $7FFF + FarPtr;
+ if FarPtr2 <> Ptr($1234, $7677) then
+ Error(6);
+ Writeln('farptr + int32_const');
+ FarPtr := Ptr($1234, $F678);
+ FarPtr2 := nil;
+ FarPtr2 := FarPtr + $55AA7FFF;
+ if FarPtr2 <> Ptr($1234, $7677) then
+ Error(7);
+ Writeln('int32_const + farptr');
+ FarPtr := Ptr($1234, $F678);
+ FarPtr2 := nil;
+ FarPtr2 := $55AA7FFF + FarPtr;
+ if FarPtr2 <> Ptr($1234, $7677) then
+ Error(8);
+ { const }
+ Writeln('farptr_const + int16_var');
+ int16 := $7FFF;
+ FarPtr2 := nil;
+ FarPtr2 := FarPointer($1234F678) + int16;
+ if FarPtr2 <> Ptr($1234, $7677) then
+ Error(9);
+ Writeln('int16_var + farptr_const');
+ int16 := $7FFF;
+ FarPtr2 := nil;
+ FarPtr2 := int16 + FarPointer($1234F678);
+ if FarPtr2 <> Ptr($1234, $7677) then
+ Error(10);
+ Writeln('farptr_const + int32_var');
+ int32 := $55AA7FFF;
+ FarPtr2 := nil;
+ FarPtr2 := FarPointer($1234F678) + int32;
+ if FarPtr2 <> Ptr($1234, $7677) then
+ Error(11);
+ Writeln('int32_var + farptr_const');
+ int32 := $55AA7FFF;
+ FarPtr2 := nil;
+ FarPtr2 := int32 + FarPointer($1234F678);
+ if FarPtr2 <> Ptr($1234, $7677) then
+ Error(12);
+ Writeln('farptr_const + int16_const');
+ FarPtr2 := nil;
+ FarPtr2 := FarPointer($1234F678) + $7FFF;
+ if FarPtr2 <> Ptr($1234, $7677) then
+ Error(13);
+ Writeln('int16_const + farptr_const');
+ FarPtr2 := nil;
+ FarPtr2 := $7FFF + FarPointer($1234F678);
+ if FarPtr2 <> Ptr($1234, $7677) then
+ Error(14);
+ Writeln('farptr_const + int32_const');
+ FarPtr2 := nil;
+ FarPtr2 := FarPointer($1234F678) + $55AA7FFF;
+ if FarPtr2 <> Ptr($1234, $7677) then
+ Error(15);
+ Writeln('int32_const + farptr_const');
+ FarPtr2 := nil;
+ FarPtr2 := $55AA7FFF + FarPointer($1234F678);
+ if FarPtr2 <> Ptr($1234, $7677) then
+ Error(16);
+
+ Writeln('farptr - int16_var');
+ FarPtr := Ptr($1234, $0678);
+ int16 := $7FFF;
+ FarPtr2 := nil;
+ FarPtr2 := FarPtr - int16;
+ if FarPtr2 <> Ptr($1234, $8679) then
+ Error(17);
+ Writeln('farptr - int32_var');
+ FarPtr := Ptr($1234, $0678);
+ int32 := $55AA7FFF;
+ FarPtr2 := nil;
+ FarPtr2 := FarPtr - int32;
+ if FarPtr2 <> Ptr($1234, $8679) then
+ Error(18);
+ Writeln('farptr - int16_const');
+ FarPtr := Ptr($1234, $0678);
+ FarPtr2 := nil;
+ FarPtr2 := FarPtr - $7FFF;
+ if FarPtr2 <> Ptr($1234, $8679) then
+ Error(19);
+ Writeln('farptr - int32_const');
+ FarPtr := Ptr($1234, $0678);
+ FarPtr2 := nil;
+ FarPtr2 := FarPtr - $55AA7FFF;
+ if FarPtr2 <> Ptr($1234, $8679) then
+ Error(20);
+ Writeln('farptr_const - int16_var');
+ int16 := $7FFF;
+ FarPtr2 := nil;
+ FarPtr2 := FarPointer($12340678) - int16;
+ if FarPtr2 <> Ptr($1234, $8679) then
+ Error(21);
+ Writeln('farptr_const - int32_var');
+ int32 := $55AA7FFF;
+ FarPtr2 := nil;
+ FarPtr2 := FarPointer($12340678) - int32;
+ if FarPtr2 <> Ptr($1234, $8679) then
+ Error(22);
+ Writeln('farptr_const - int16_const');
+ FarPtr2 := nil;
+ FarPtr2 := FarPointer($12340678) - $7FFF;
+ if FarPtr2 <> Ptr($1234, $8679) then
+ Error(23);
+ Writeln('farptr_const - int32_const');
+ FarPtr2 := nil;
+ FarPtr2 := FarPointer($12340678) - $55AA7FFF;
+ if FarPtr2 <> Ptr($1234, $8679) then
+ Error(24);
+
+ if ErrorCode = 0 then
+ Writeln('Success!')
+ else
+ Halt(ErrorCode);
+end.
diff --git a/tests/test/cpu16/i8086/tintr1.pp b/tests/test/cpu16/i8086/tintr1.pp
new file mode 100644
index 0000000000..91bec04b91
--- /dev/null
+++ b/tests/test/cpu16/i8086/tintr1.pp
@@ -0,0 +1,79 @@
+{ %target=msdos }
+
+program tintr1;
+
+{$ifdef FPC}
+ {$mode tp}
+{$endif FPC}
+
+uses
+ Dos;
+
+{$ifndef FPC}
+type
+ FarPointer = Pointer;
+{$endif FPC}
+
+const
+ IntNo = $F0; { some unused interrupt vector }
+
+var
+ Handled: Boolean;
+
+procedure TestFail;
+begin
+ Writeln('Failure!');
+ Halt(1);
+end;
+
+procedure OurHandler; interrupt;
+begin
+ Handled := True;
+end;
+
+var
+ regs: Registers;
+ OldHandler: FarPointer;
+begin
+ regs.DS := $BAAD;
+ regs.BP := $BEEF;
+ regs.ES := $4A11;
+ regs.AX := $1111;
+ regs.BX := $2222;
+ regs.CX := $3333;
+ regs.DX := $4444;
+ regs.SI := $5555;
+ regs.DI := $6666;
+ Handled := False;
+
+ GetIntVec(IntNo, OldHandler);
+ SetIntVec(IntNo, @OurHandler);
+
+ Intr(IntNo, regs);
+
+ SetIntVec(IntNo, OldHandler);
+
+ if not Handled then
+ TestFail;
+
+ if regs.DS <> $BAAD then
+ TestFail;
+ if regs.BP <> $BEEF then
+ TestFail;
+ if regs.ES <> $4A11 then
+ TestFail;
+ if regs.AX <> $1111 then
+ TestFail;
+ if regs.BX <> $2222 then
+ TestFail;
+ if regs.CX <> $3333 then
+ TestFail;
+ if regs.DX <> $4444 then
+ TestFail;
+ if regs.SI <> $5555 then
+ TestFail;
+ if regs.DI <> $6666 then
+ TestFail;
+
+ Writeln('Success!')
+end.
diff --git a/tests/test/cpu16/i8086/tintr2.pp b/tests/test/cpu16/i8086/tintr2.pp
new file mode 100644
index 0000000000..b636750af0
--- /dev/null
+++ b/tests/test/cpu16/i8086/tintr2.pp
@@ -0,0 +1,122 @@
+{ %target=msdos }
+
+program tintr2;
+
+{$ifdef FPC}
+ {$mode tp}
+{$endif FPC}
+
+uses
+ Dos;
+
+{$ifndef FPC}
+type
+ FarPointer = Pointer;
+{$endif FPC}
+
+const
+ IntNo = $F0; { some unused interrupt vector }
+
+var
+ Handled: Boolean;
+ HandledRegs: Registers;
+ HandledCS, HandledIP: Word;
+
+procedure TestFail;
+begin
+ Writeln('Failure!');
+ Halt(1);
+end;
+
+procedure OurHandler(Flags, CS, IP, AX, BX, CX, DX, SI, DI, DS, ES, BP: Word); interrupt;
+begin
+ Handled := True;
+ HandledRegs.Flags := Flags;
+ HandledCS := CS;
+ HandledIP := IP;
+ HandledRegs.AX := AX;
+ HandledRegs.BX := BX;
+ HandledRegs.CX := CX;
+ HandledRegs.DX := DX;
+ HandledRegs.SI := SI;
+ HandledRegs.DI := DI;
+ HandledRegs.DS := DS;
+ HandledRegs.ES := ES;
+ HandledRegs.BP := BP;
+
+ DS := $DAAB;
+ BP := $FEEB;
+ ES := $11A4;
+ AX := $FFFF;
+ BX := $EEEE;
+ CX := $DDDD;
+ DX := $CCCC;
+ SI := $BBBB;
+ DI := $AAAA;
+end;
+
+var
+ regs: Registers;
+ OldHandler: FarPointer;
+begin
+ regs.DS := $BAAD;
+ regs.BP := $BEEF;
+ regs.ES := $4A11;
+ regs.AX := $1111;
+ regs.BX := $2222;
+ regs.CX := $3333;
+ regs.DX := $4444;
+ regs.SI := $5555;
+ regs.DI := $6666;
+ Handled := False;
+
+ GetIntVec(IntNo, OldHandler);
+ SetIntVec(IntNo, @OurHandler);
+
+ Intr(IntNo, regs);
+
+ SetIntVec(IntNo, OldHandler);
+
+ if not Handled then
+ TestFail;
+
+ if HandledRegs.DS <> $BAAD then
+ TestFail;
+ if HandledRegs.BP <> $BEEF then
+ TestFail;
+ if HandledRegs.ES <> $4A11 then
+ TestFail;
+ if HandledRegs.AX <> $1111 then
+ TestFail;
+ if HandledRegs.BX <> $2222 then
+ TestFail;
+ if HandledRegs.CX <> $3333 then
+ TestFail;
+ if HandledRegs.DX <> $4444 then
+ TestFail;
+ if HandledRegs.SI <> $5555 then
+ TestFail;
+ if HandledRegs.DI <> $6666 then
+ TestFail;
+
+ if regs.DS <> $DAAB then
+ TestFail;
+ if regs.BP <> $FEEB then
+ TestFail;
+ if regs.ES <> $11A4 then
+ TestFail;
+ if regs.AX <> $FFFF then
+ TestFail;
+ if regs.BX <> $EEEE then
+ TestFail;
+ if regs.CX <> $DDDD then
+ TestFail;
+ if regs.DX <> $CCCC then
+ TestFail;
+ if regs.SI <> $BBBB then
+ TestFail;
+ if regs.DI <> $AAAA then
+ TestFail;
+
+ Writeln('Success!')
+end.
diff --git a/tests/test/jvm/testall.bat b/tests/test/jvm/testall.bat
index 277aae9a85..3dea723a5b 100644
--- a/tests/test/jvm/testall.bat
+++ b/tests/test/jvm/testall.bat
@@ -278,9 +278,19 @@ java -Dfile.encoding=UTF-8 -cp ..\..\..\rtl\units\jvm-java;. tjavalowercaseproc
if %errorlevel% neq 0 exit /b %errorlevel%
ppcjvm -O2 -g -B -CTinitlocals tinitvar
if %errorlevel% neq 0 exit /b %errorlevel%
-javaa -Dfile.encoding=UTF-8 -cp ..\..\..\rtl\units\jvm-java;. org.freepascal.test.tinitvar.tinitvar
+java -Dfile.encoding=UTF-8 -cp ..\..\..\rtl\units\jvm-java;. org.freepascal.test.tinitvar.tinitvar
if %errorlevel% neq 0 exit /b %errorlevel%
ppcjvm -O2 -g -B -CTinitlocals tsmallintarr
if %errorlevel% neq 0 exit /b %errorlevel%
-javaa -Dfile.encoding=UTF-8 -cp ..\..\..\rtl\units\jvm-java;. tsmallintarr
+java -Dfile.encoding=UTF-8 -cp ..\..\..\rtl\units\jvm-java;. tsmallintarr
+if %errorlevel% neq 0 exit /b %errorlevel%
+ppcjvm -O2 -g -vh toverload
+if %errorlevel% eq 0 exit /b 1
+echo " ** Compilation failed as expected"
+ppcjvm -O2 -g -B toverload2
+if %errorlevel% eq 0 exit /b 1
+echo " ** Compilation failed as expected"
+ppcjvm -O2 -g -B -CTinitlocals tptrdynarr
+if %errorlevel% neq 0 exit /b %errorlevel%
+java -Dfile.encoding=UTF-8 -cp ..\..\..\rtl\units\jvm-java;. tptrdynarr
if %errorlevel% neq 0 exit /b %errorlevel%
diff --git a/tests/test/jvm/testall.sh b/tests/test/jvm/testall.sh
index 80622e3e58..ef55845aba 100755
--- a/tests/test/jvm/testall.sh
+++ b/tests/test/jvm/testall.sh
@@ -158,3 +158,19 @@ $PPC -O2 -g -B -Sa -CTinitlocals tinitvar
java -Dfile.encoding=UTF-8 -cp ../../../rtl/units/$RTLDIR:. org.freepascal.test.tinitvar.tinitvar
$PPC -O2 -g -B -Sa tsmallintarr
java -Dfile.encoding=UTF-8 -cp ../../../rtl/units/$RTLDIR:. tsmallintarr
+set +e
+$PPC -O2 -g -B -Sa toverload
+if [ $? -eq 0 ]; then
+ echo " ** Should have failed compilation"
+else
+ echo " ** Compilation failed as expected"
+fi
+$PPC -O2 -g -B -Sa toverload2
+if [ $? -eq 0 ]; then
+ echo " ** Should have failed compilation"
+else
+ echo " ** Compilation failed as expected"
+fi
+set -e
+$PPC -O2 -g -B -Sa tptrdynarr
+java -Dfile.encoding=UTF-8 -cp ../../../rtl/units/$RTLDIR:. tptrdynarr
diff --git a/tests/test/jvm/toverload.pp b/tests/test/jvm/toverload.pp
new file mode 100644
index 0000000000..1e6bb0ae3e
--- /dev/null
+++ b/tests/test/jvm/toverload.pp
@@ -0,0 +1,12 @@
+{ %fail }
+
+procedure test(var b: byte);
+begin
+end;
+
+procedure test(const b: array of byte);
+begin
+end;
+
+begin
+end.
diff --git a/tests/test/jvm/toverload2.pp b/tests/test/jvm/toverload2.pp
new file mode 100644
index 0000000000..1844bd32b2
--- /dev/null
+++ b/tests/test/jvm/toverload2.pp
@@ -0,0 +1,19 @@
+{ %fail }
+
+{$mode objfpc}
+type
+ tc = class
+ procedure test(var b: byte);
+ procedure test(const b: array of byte);
+ end;
+
+procedure tc.test(var b: byte);
+begin
+end;
+
+procedure tc.test(const b: array of byte);
+begin
+end;
+
+begin
+end.
diff --git a/tests/test/jvm/tptrdynarr.pp b/tests/test/jvm/tptrdynarr.pp
new file mode 100644
index 0000000000..e63ecc4939
--- /dev/null
+++ b/tests/test/jvm/tptrdynarr.pp
@@ -0,0 +1,11 @@
+{$mode delphi}
+
+program tptrdynarr;
+
+var
+ p: pointer;
+ a: array of byte;
+begin
+ p:=nil;
+ a:=p;
+end.
diff --git a/tests/test/jvm/tsmallintarr.pp b/tests/test/jvm/tsmallintarr.pp
new file mode 100644
index 0000000000..bfc4ea5890
--- /dev/null
+++ b/tests/test/jvm/tsmallintarr.pp
@@ -0,0 +1,18 @@
+program tsmallintarr;
+
+procedure test;
+var
+ a: smallint;
+ l: longint;
+ b: array[smallint] of byte;
+begin
+ for a:=low(b) to high(b) do
+ b[a]:=a and 255;
+ for l:=low(b) to high(b) do
+ if b[l]<>(l and 255) then
+ halt(1);
+end;
+
+begin
+ test
+end.
diff --git a/tests/test/tbsx1.pp b/tests/test/tbsx1.pp
index d69560cf16..fe5aa1b524 100644
--- a/tests/test/tbsx1.pp
+++ b/tests/test/tbsx1.pp
@@ -83,7 +83,7 @@ var
begin
for i:=0 to 31 do
begin
- x32:=1 shl i;
+ x32:=cardinal(1) shl i;
f:=BsfDWord(x32);
if (f<>i) then
begin
diff --git a/tests/test/tfma1.pp b/tests/test/tfma1.pp
new file mode 100644
index 0000000000..6a519983c2
--- /dev/null
+++ b/tests/test/tfma1.pp
@@ -0,0 +1,514 @@
+{ %CPU=i386,x86_64 }
+{ %OPT=-Cfavx2 -Cpcoreavx2 }
+uses
+ cpu;
+var
+ d0,d1,d2,d3 : double;
+ s0,s1,s2,s3 : single;
+
+procedure testsingle;
+ var
+ l0,l1,l2,l3 : single;
+ begin
+ l1:=2;
+ l2:=3;
+ l3:=4;
+ s0:=0;
+
+ l0:=fma(l1,l2,l3);
+ writeln(l0);
+ if l0<>10.0 then
+ halt(1);
+
+ l0:=fma(l1+1.0,l2,l3);
+ writeln(l0);
+ if l0<>13.0 then
+ halt(1);
+
+ l0:=fma(l1,l1+1.0,l3);
+ writeln(l0);
+ if l0<>10.0 then
+ halt(1);
+
+ l0:=fma(s1,l2,l3);
+ writeln(l0);
+ if l0<>10.0 then
+ halt(1);
+
+ l0:=fma(l1,s2,l3);
+ writeln(l0);
+ if l0<>10.0 then
+ halt(1);
+
+ l0:=fma(l1,l2,s3);
+ writeln(l0);
+ if l0<>10.0 then
+ halt(1);
+
+ l0:=fma(s1,s2,l3);
+ writeln(l0);
+ if l0<>10.0 then
+ halt(1);
+
+ l0:=fma(s1,l2,s3);
+ writeln(l0);
+ if l0<>10.0 then
+ halt(1);
+
+ l0:=fma(l1,s2,s3);
+ writeln(l0);
+ if l0<>10.0 then
+ halt(1);
+
+ { first operand negative }
+ l0:=fma(-l1,l2,l3);
+ writeln(l0);
+ if l0<>-2.0 then
+ halt(1);
+
+ l0:=fma(-(l1+1.0),l2,l3);
+ writeln(l0);
+ if l0<>-5.0 then
+ halt(1);
+
+ l0:=fma(-l1,l1+1.0,l3);
+ writeln(l0);
+ if l0<>-2.0 then
+ halt(1);
+
+ l0:=fma(-s1,l2,l3);
+ writeln(l0);
+ if l0<>-2.0 then
+ halt(1);
+
+ l0:=fma(-l1,s2,l3);
+ writeln(l0);
+ if l0<>-2.0 then
+ halt(1);
+
+ l0:=fma(-l1,l2,s3);
+ writeln(l0);
+ if l0<>-2.0 then
+ halt(1);
+
+ l0:=fma(-s1,s2,l3);
+ writeln(l0);
+ if l0<>-2.0 then
+ halt(1);
+
+ l0:=fma(-s1,l2,s3);
+ writeln(l0);
+ if l0<>-2.0 then
+ halt(1);
+
+ l0:=fma(-l1,s2,s3);
+ writeln(l0);
+ if l0<>-2.0 then
+ halt(1);
+
+ { second operand negative }
+ l0:=fma(l1,-l2,l3);
+ writeln(l0);
+ if l0<>-2.0 then
+ halt(1);
+
+ l0:=fma(l1+1.0,-l2,l3);
+ writeln(l0);
+ if l0<>-5.0 then
+ halt(1);
+
+ l0:=fma(l1,-(l1+1.0),l3);
+ writeln(l0);
+ if l0<>-2.0 then
+ halt(1);
+
+ l0:=fma(s1,-l2,l3);
+ writeln(l0);
+ if l0<>-2.0 then
+ halt(1);
+
+ l0:=fma(l1,-s2,l3);
+ writeln(l0);
+ if l0<>-2.0 then
+ halt(1);
+
+ l0:=fma(l1,-l2,s3);
+ writeln(l0);
+ if l0<>-2.0 then
+ halt(1);
+
+ l0:=fma(s1,-s2,l3);
+ writeln(l0);
+ if l0<>-2.0 then
+ halt(1);
+
+ l0:=fma(s1,-l2,s3);
+ writeln(l0);
+ if l0<>-2.0 then
+ halt(1);
+
+ l0:=fma(l1,-s2,s3);
+ writeln(l0);
+ if l0<>-2.0 then
+ halt(1);
+
+ { third operand negative }
+ l0:=fma(l1,l2,-l3);
+ writeln(l0);
+ if l0<>2.0 then
+ halt(1);
+
+ l0:=fma(l1+1.0,l2,-l3);
+ writeln(l0);
+ if l0<>5.0 then
+ halt(1);
+
+ l0:=fma(l1,l1+1.0,-l3);
+ writeln(l0);
+ if l0<>2.0 then
+ halt(1);
+
+ l0:=fma(s1,l2,-l3);
+ writeln(l0);
+ if l0<>2.0 then
+ halt(1);
+
+ l0:=fma(l1,s2,-l3);
+ writeln(l0);
+ if l0<>2.0 then
+ halt(1);
+
+ l0:=fma(l1,l2,-s3);
+ writeln(l0);
+ if l0<>2.0 then
+ halt(1);
+
+ l0:=fma(s1,s2,-l3);
+ writeln(l0);
+ if l0<>2.0 then
+ halt(1);
+
+ l0:=fma(s1,l2,-s3);
+ writeln(l0);
+ if l0<>2.0 then
+ halt(1);
+
+ l0:=fma(l1,s2,-s3);
+ writeln(l0);
+ if l0<>2.0 then
+ halt(1);
+
+ { first and third operand negative }
+ l0:=fma(-l1,l2,-l3);
+ writeln(l0);
+ if l0<>-10.0 then
+ halt(1);
+
+ l0:=fma(-(l1+1.0),l2,-l3);
+ writeln(l0);
+ if l0<>-13.0 then
+ halt(1);
+
+ l0:=fma(-l1,l1+1.0,-l3);
+ writeln(l0);
+ if l0<>-10.0 then
+ halt(1);
+
+ l0:=fma(-s1,l2,-l3);
+ writeln(l0);
+ if l0<>-10.0 then
+ halt(1);
+
+ l0:=fma(-l1,s2,-l3);
+ writeln(l0);
+ if l0<>-10.0 then
+ halt(1);
+
+ l0:=fma(-l1,l2,-s3);
+ writeln(l0);
+ if l0<>-10.0 then
+ halt(1);
+
+ l0:=fma(-s1,s2,-l3);
+ writeln(l0);
+ if l0<>-10.0 then
+ halt(1);
+
+ l0:=fma(-s1,l2,-s3);
+ writeln(l0);
+ if l0<>-10.0 then
+ halt(1);
+
+ l0:=fma(-l1,s2,-s3);
+ writeln(l0);
+ if l0<>-10.0 then
+ halt(1);
+ end;
+
+
+procedure testdouble;
+ var
+ l0,l1,l2,l3 : double;
+ begin
+ l1:=2;
+ l2:=3;
+ l3:=4;
+ d0:=0;
+
+ l0:=fma(l1,l2,l3);
+ writeln(l0);
+ if l0<>10.0 then
+ halt(1);
+
+ l0:=fma(l1+1.0,l2,l3);
+ writeln(l0);
+ if l0<>13.0 then
+ halt(1);
+
+ l0:=fma(l1,l1+1.0,l3);
+ writeln(l0);
+ if l0<>10.0 then
+ halt(1);
+
+ l0:=fma(d1,l2,l3);
+ writeln(l0);
+ if l0<>10.0 then
+ halt(1);
+
+ l0:=fma(l1,d2,l3);
+ writeln(l0);
+ if l0<>10.0 then
+ halt(1);
+
+ l0:=fma(l1,l2,d3);
+ writeln(l0);
+ if l0<>10.0 then
+ halt(1);
+
+ l0:=fma(d1,d2,l3);
+ writeln(l0);
+ if l0<>10.0 then
+ halt(1);
+
+ l0:=fma(d1,l2,d3);
+ writeln(l0);
+ if l0<>10.0 then
+ halt(1);
+
+ l0:=fma(l1,d2,d3);
+ writeln(l0);
+ if l0<>10.0 then
+ halt(1);
+
+ { first operand negative }
+ l0:=fma(-l1,l2,l3);
+ writeln(l0);
+ if l0<>-2.0 then
+ halt(1);
+
+ l0:=fma(-(l1+1.0),l2,l3);
+ writeln(l0);
+ if l0<>-5.0 then
+ halt(1);
+
+ l0:=fma(-l1,l1+1.0,l3);
+ writeln(l0);
+ if l0<>-2.0 then
+ halt(1);
+
+ l0:=fma(-d1,l2,l3);
+ writeln(l0);
+ if l0<>-2.0 then
+ halt(1);
+
+ l0:=fma(-l1,d2,l3);
+ writeln(l0);
+ if l0<>-2.0 then
+ halt(1);
+
+ l0:=fma(-l1,l2,d3);
+ writeln(l0);
+ if l0<>-2.0 then
+ halt(1);
+
+ l0:=fma(-d1,d2,l3);
+ writeln(l0);
+ if l0<>-2.0 then
+ halt(1);
+
+ l0:=fma(-d1,l2,d3);
+ writeln(l0);
+ if l0<>-2.0 then
+ halt(1);
+
+ l0:=fma(-l1,d2,d3);
+ writeln(l0);
+ if l0<>-2.0 then
+ halt(1);
+
+ { second operand negative }
+ l0:=fma(l1,-l2,l3);
+ writeln(l0);
+ if l0<>-2.0 then
+ halt(1);
+
+ l0:=fma(l1+1.0,-l2,l3);
+ writeln(l0);
+ if l0<>-5.0 then
+ halt(1);
+
+ l0:=fma(l1,-(l1+1.0),l3);
+ writeln(l0);
+ if l0<>-2.0 then
+ halt(1);
+
+ l0:=fma(d1,-l2,l3);
+ writeln(l0);
+ if l0<>-2.0 then
+ halt(1);
+
+ l0:=fma(l1,-d2,l3);
+ writeln(l0);
+ if l0<>-2.0 then
+ halt(1);
+
+ l0:=fma(l1,-l2,d3);
+ writeln(l0);
+ if l0<>-2.0 then
+ halt(1);
+
+ l0:=fma(d1,-d2,l3);
+ writeln(l0);
+ if l0<>-2.0 then
+ halt(1);
+
+ l0:=fma(d1,-l2,d3);
+ writeln(l0);
+ if l0<>-2.0 then
+ halt(1);
+
+ l0:=fma(l1,-d2,d3);
+ writeln(l0);
+ if l0<>-2.0 then
+ halt(1);
+
+ { third operand negative }
+ l0:=fma(l1,l2,-l3);
+ writeln(l0);
+ if l0<>2.0 then
+ halt(1);
+
+ l0:=fma(l1+1.0,l2,-l3);
+ writeln(l0);
+ if l0<>5.0 then
+ halt(1);
+
+ l0:=fma(l1,l1+1.0,-l3);
+ writeln(l0);
+ if l0<>2.0 then
+ halt(1);
+
+ l0:=fma(d1,l2,-l3);
+ writeln(l0);
+ if l0<>2.0 then
+ halt(1);
+
+ l0:=fma(l1,d2,-l3);
+ writeln(l0);
+ if l0<>2.0 then
+ halt(1);
+
+ l0:=fma(l1,l2,-d3);
+ writeln(l0);
+ if l0<>2.0 then
+ halt(1);
+
+ l0:=fma(d1,d2,-l3);
+ writeln(l0);
+ if l0<>2.0 then
+ halt(1);
+
+ l0:=fma(d1,l2,-d3);
+ writeln(l0);
+ if l0<>2.0 then
+ halt(1);
+
+ l0:=fma(l1,d2,-d3);
+ writeln(l0);
+ if l0<>2.0 then
+ halt(1);
+
+ { first and third operand negative }
+ l0:=fma(-l1,l2,-l3);
+ writeln(l0);
+ if l0<>-10.0 then
+ halt(1);
+
+ l0:=fma(-(l1+1.0),l2,-l3);
+ writeln(l0);
+ if l0<>-13.0 then
+ halt(1);
+
+ l0:=fma(-l1,l1+1.0,-l3);
+ writeln(l0);
+ if l0<>-10.0 then
+ halt(1);
+
+ l0:=fma(-d1,l2,-l3);
+ writeln(l0);
+ if l0<>-10.0 then
+ halt(1);
+
+ l0:=fma(-l1,d2,-l3);
+ writeln(l0);
+ if l0<>-10.0 then
+ halt(1);
+
+ l0:=fma(-l1,l2,-d3);
+ writeln(l0);
+ if l0<>-10.0 then
+ halt(1);
+
+ l0:=fma(-d1,d2,-l3);
+ writeln(l0);
+ if l0<>-10.0 then
+ halt(1);
+
+ l0:=fma(-d1,l2,-d3);
+ writeln(l0);
+ if l0<>-10.0 then
+ halt(1);
+
+ l0:=fma(-l1,d2,-d3);
+ writeln(l0);
+ if l0<>-10.0 then
+ halt(1);
+ end;
+
+begin
+ if AVXSupport and FMASupport then
+ begin
+ d1:=2;
+ d2:=3;
+ d3:=4;
+ d0:=fma(d1,d2,d3);
+ writeln(d0);
+ if d0<>10.0 then
+ halt(1);
+
+ s1:=2;
+ s2:=3;
+ s3:=4;
+ s0:=fma(s1,s2,s3);
+ writeln(s0);
+ if s0<>10.0 then
+ halt(1);
+
+ testsingle;
+ testdouble;
+
+ writeln('ok');
+ end
+ else
+ writeln('Skipped because not supported by the CPU');
+end.
diff --git a/tests/test/tforin26.pp b/tests/test/tforin26.pp
new file mode 100644
index 0000000000..09acd589fa
--- /dev/null
+++ b/tests/test/tforin26.pp
@@ -0,0 +1,21 @@
+{$mode objfpc}
+Function Write(Const Args: Array of const) : Integer;
+
+Var
+ V : TVarRec;
+begin
+ result:=0;
+ For V in Args do
+ begin
+ if V.VType<>vtInteger then
+ halt(1);
+ inc(result);
+ end;
+end;
+
+begin
+ if Write([1,2,3,4])<>4 then
+ halt(1);
+ writeln('ok');
+end.
+
diff --git a/tests/test/tforin27.pp b/tests/test/tforin27.pp
new file mode 100644
index 0000000000..8f57d41a63
--- /dev/null
+++ b/tests/test/tforin27.pp
@@ -0,0 +1,32 @@
+{$mode objfpc}
+type
+ TIntegerDynArray = array of Integer;
+
+Function Write(Const Args: TIntegerDynArray) : Integer;
+
+function GetArgs : TIntegerDynArray;
+ begin
+ GetArgs:=Args;
+ end;
+
+Var
+ I : Integer;
+begin
+ result:=0;
+ For I in GetArgs do
+ begin
+ inc(result,i);
+ inc(result);
+ end;
+end;
+
+var
+ IntegerDynArray : TIntegerDynArray;
+
+begin
+ SetLength(IntegerDynArray,4);
+ if Write(IntegerDynArray)<>4 then
+ halt(1);
+ writeln('ok');
+end.
+
diff --git a/tests/test/theapthread.pp b/tests/test/theapthread.pp
index 9839929b75..1dde316e89 100644
--- a/tests/test/theapthread.pp
+++ b/tests/test/theapthread.pp
@@ -130,6 +130,10 @@ begin
begin
if ((pair.writeindex+1) mod fifolength) <> pair.readindex then
begin
+ { counterpart for the writebarrier in the consumer: ensure that we see
+ the write to pair.fifo[pair.readindex] now that we've seen the write
+ to pair.readindex }
+ readbarrier;
freemem(pair.fifo[pair.writeindex]);
pair.fifo[pair.writeindex] := getmem(((pair.writeindex*17) mod 520)+8);
writebarrier;
@@ -167,6 +171,10 @@ begin
begin
if pair.readindex <> pair.writeindex then
begin
+ { counterpart for the writebarrier in the producer: ensure that we see
+ the write to pair.fifo[pair.writeindex] now that we've seen the write
+ to pair.writeindex }
+ readbarrier;
freemem(pair.fifo[pair.readindex]);
pair.fifo[pair.readindex] := getmem(((pair.writeindex*17) mod 520)+8);
writebarrier;
diff --git a/tests/test/tover4.pas b/tests/test/tover4.pas
new file mode 100644
index 0000000000..c9a3e32e31
--- /dev/null
+++ b/tests/test/tover4.pas
@@ -0,0 +1,65 @@
+{ %cpu=i386,x86_64 }
+{ %skiptarget=win64 }
+{ Target must actually support Extended type }
+
+function test1(x: single): integer;
+begin
+ test1:=1;
+end;
+
+function test1(x: double): integer;
+begin
+ test1:=2;
+end;
+
+function test1(x: extended): integer;
+begin
+ test1:=3;
+end;
+
+
+function test2(x: single): integer;
+begin
+ test2:=1;
+end;
+
+function test2(x: double): integer;
+begin
+ test2:=2;
+end;
+
+
+function test3(x: single): integer;
+begin
+ test3:=1;
+end;
+
+function test3(x: double): integer;
+begin
+ test3:=2;
+end;
+
+function test3(x: cextended): integer;
+begin
+ test3:=3;
+end;
+
+
+var
+ a: cextended;
+ b: extended;
+begin
+ a:= 123.456;
+ b:= 123.456;
+ { test #1: single/double/extended available, passing cextended must select extended }
+ if test1(a)<>3 then
+ halt(1);
+
+ { test #2: single and double avaiable, passing cextended must select double }
+ if test2(a)<>2 then
+ halt(2);
+
+ { test #3: single/double/cextended available, passing extended must select cextended }
+ if test3(a)<>3 then
+ halt(3);
+end.
diff --git a/tests/test/tsetsize.pp b/tests/test/tsetsize.pp
index 288bdc1b36..9ba872fc5f 100644
--- a/tests/test/tsetsize.pp
+++ b/tests/test/tsetsize.pp
@@ -1,14 +1,35 @@
program SetSizes;
-{$APPTYPE CONSOLE}
-
{$ifdef fpc}
+ {$APPTYPE CONSOLE}
{$mode delphi}
- {$packset 1}
-{$endif}
+ {$ifdef CPU16}
+ {$define _16BITCOMPILER}
+ {$endif}
+{$else fpc}
+ {$ifdef VER70} { Turbo Pascal 7 }
+ {$define _16BITCOMPILER}
+ {$endif}
+ {$ifdef VER80} { Delphi 1 }
+ {$define _16BITCOMPILER}
+ uses
+ WinCrt;
+ {$endif}
+ {$ifdef WIN32}
+ {$APPTYPE CONSOLE}
+ {$endif}
+ {$ifdef WIN64}
+ {$APPTYPE CONSOLE}
+ {$endif}
+{$endif fpc}
const
_a= 0;
+{$ifdef _16BITCOMPILER}
+ three_or_four = 3;
+{$else}
+ three_or_four = 4;
+{$endif}
type
TIntRange1_a = 0 + _a.. Pred( 1 * 8) + _a;
@@ -134,7 +155,7 @@ begin
WriteLn(Low(TIntRange2_a),'..',High(TIntRange2_a),' -> ', SizeOf(TSet2_a));
test(SizeOf(TSet2_a),2);
WriteLn(Low(TIntRange3_a),'..',High(TIntRange3_a),' -> ', SizeOf(TSet3_a));
- test(SizeOf(TSet3_a),4);
+ test(SizeOf(TSet3_a),three_or_four);
WriteLn(Low(TIntRange4_a),'..',High(TIntRange4_a),' -> ', SizeOf(TSet4_a));
test(SizeOf(TSet4_a),4);
WriteLn(Low(TIntRange5_a),'..',High(TIntRange5_a),' -> ', SizeOf(TSet5_a));
@@ -167,7 +188,7 @@ begin
WriteLn(Low(TIntRange1_b),'..',High(TIntRange1_b),' -> ', SizeOf(TSet1_b));
test(SizeOf(TSet1_b),2);
WriteLn(Low(TIntRange2_b),'..',High(TIntRange2_b),' -> ', SizeOf(TSet2_b));
- test(SizeOf(TSet2_b),4);
+ test(SizeOf(TSet2_b),three_or_four);
WriteLn(Low(TIntRange3_b),'..',High(TIntRange3_b),' -> ', SizeOf(TSet3_b));
test(SizeOf(TSet3_b),4);
WriteLn(Low(TIntRange4_b),'..',High(TIntRange4_b),' -> ', SizeOf(TSet4_b));
@@ -202,7 +223,7 @@ begin
WriteLn(Low(TIntRange1_c),'..',High(TIntRange1_c),' -> ', SizeOf(TSet1_c));
test(SizeOf(TSet1_c),2);
WriteLn(Low(TIntRange2_c),'..',High(TIntRange2_c),' -> ', SizeOf(TSet2_c));
- test(SizeOf(TSet2_c),4);
+ test(SizeOf(TSet2_c),three_or_four);
WriteLn(Low(TIntRange3_c),'..',High(TIntRange3_c),' -> ', SizeOf(TSet3_c));
test(SizeOf(TSet3_c),4);
WriteLn(Low(TIntRange4_c),'..',High(TIntRange4_c),' -> ', SizeOf(TSet4_c));
diff --git a/tests/test/units/cpu/tcpu1.pp b/tests/test/units/cpu/tcpu1.pp
new file mode 100644
index 0000000000..85ea07b9b3
--- /dev/null
+++ b/tests/test/units/cpu/tcpu1.pp
@@ -0,0 +1,39 @@
+{ %cpu=x86_64,i386}
+
+uses
+ cpu;
+
+begin
+ write('AVX support: ');
+ if AVXSupport then
+ begin
+ writeln('yes');
+ asm
+ vpxor %xmm0,%xmm0,%xmm0
+ end;
+ end
+ else
+ writeln('no');
+ write('AVX2 support: ');
+ if AVX2Support then
+ begin
+ writeln('yes');
+ asm
+ vpxor %ymm0,%ymm0,%ymm0
+ end;
+ end
+ else
+ writeln('no');
+ write('FMA support: ');
+ if FMASupport then
+ begin
+ writeln('yes');
+ asm
+ pxor %xmm0,%xmm0
+ vfmadd132SS %xmm0,%xmm0,%xmm0
+ end;
+ end
+ else
+ writeln('no');
+end.
+
diff --git a/tests/test/units/math/tcmpnan.pp b/tests/test/units/math/tcmpnan.pp
new file mode 100644
index 0000000000..b6cae4808e
--- /dev/null
+++ b/tests/test/units/math/tcmpnan.pp
@@ -0,0 +1,62 @@
+{ Tests unordered comparison results. This is a basic codegeneration test, but it needs
+ Math unit to silence exceptions. }
+uses math;
+
+const
+ kNan = Sqrt(-1);
+ kX = 5.8E-7;
+var
+ vNan, vX: real;
+ code: longint;
+ b: boolean;
+begin
+ code:=0;
+ SetExceptionMask( [exInvalidOp, exDenormalized, exZeroDivide, exOverflow, exUnderflow, exPrecision]);
+ if kNan = kX then code:=1;
+ if kNan < kX then code:=code or 2;
+ if kNan <= kX then code:=code or 4;
+ if kNan > kX then code:=code or 8;
+ if kNan >= kX then code:=code or 16;
+ code:=code or 32;
+ if kX <> kNan then code:=code and (not 32);
+
+ vNan:= kNan;
+ vX:= kX;
+
+ { Test g_flag2reg/ref }
+ b:=(vNan = vX);
+ if b then code:=code or 64;
+ b:=(vNan < vX);
+ if b then code:=code or 128;
+ b:=(vNan <= vX);
+ if b then code:=code or 256;
+ b:=(vNan > vX);
+ if b then code:=code or 512;
+ b:=(vNan >= vX);
+ if b then code:=code or 1024;
+ b:=(vNan <> vX);
+ if (not b) then code:=code or 2048;
+
+ { Test a_jmp_flags }
+ if vNan = vX then
+ code:=code or 4096;
+ if vNan < vX then
+ code:=code or 8192;
+ if vNan <= vX then
+ code:=code or 16384;
+ if vNan > vX then
+ code:=code or 32768;
+ if vNan >= vX then
+ code:=code or 65536;
+
+ code:=code or 131072;
+ if vNan <> vX then
+ code:=code and (not 131072);
+
+ if code=0 then
+ writeln('ok')
+ else
+ writeln('error: ',hexstr(code,8));
+ Halt(code);
+end.
+ \ No newline at end of file
diff --git a/tests/test/units/math/tdivmod.pp b/tests/test/units/math/tdivmod.pp
index 5a3752055e..2dae96f33d 100644
--- a/tests/test/units/math/tdivmod.pp
+++ b/tests/test/units/math/tdivmod.pp
@@ -2,12 +2,12 @@
uses
math;
{ tests:
- procedure DivMod(Dividend: Integer; Divisor: Word; var Result, Remainder: Word);
- procedure DivMod(Dividend: Integer; Divisor: Word; var Result, Remainder: SmallInt);
+ procedure DivMod(Dividend: LongInt; Divisor: Word; var Result, Remainder: Word);
+ procedure DivMod(Dividend: LongInt; Divisor: Word; var Result, Remainder: SmallInt);
procedure DivMod(Dividend: DWord; Divisor: DWord; var Result, Remainder: DWord);
- procedure DivMod(Dividend: Integer; Divisor: Integer; var Result, Remainder: Integer);
+ procedure DivMod(Dividend: LongInt; Divisor: LongInt; var Result, Remainder: LongInt);
}
-procedure doerror(i : integer);
+procedure doerror(i : LongInt);
begin
writeln('Error: ',i);
halt(1);
@@ -18,7 +18,7 @@ var
QuotientWord,RemainderWord : Word;
QuotientSmallInt,RemainderSmallInt : SmallInt;
QuotientDWord,RemainderDWord : DWord;
- QuotientInteger,RemainderInteger : Integer;
+ QuotientLongInt,RemainderLongInt : LongInt;
begin
DivMod($ffff,65,QuotientWord,RemainderWord);
@@ -45,28 +45,28 @@ begin
if RemainderDWord<>15 then
doerror(2004);
- DivMod($ffff,65,QuotientInteger,RemainderInteger);
- if QuotientInteger<>1008 then
+ DivMod($ffff,65,QuotientLongInt,RemainderLongInt);
+ if QuotientLongInt<>1008 then
doerror(3001);
- if RemainderInteger<>15 then
+ if RemainderLongInt<>15 then
doerror(3002);
- DivMod(123456,23,QuotientInteger,RemainderInteger);
- if QuotientInteger<>5367 then
+ DivMod(123456,23,QuotientLongInt,RemainderLongInt);
+ if QuotientLongInt<>5367 then
doerror(3003);
- if RemainderInteger<>15 then
+ if RemainderLongInt<>15 then
doerror(3004);
- DivMod(-9, 5, QuotientInteger,RemainderInteger);
- if QuotientInteger<>-1 then
+ DivMod(-9, 5, QuotientLongInt,RemainderLongInt);
+ if QuotientLongInt<>-1 then
doerror(3005);
- if RemainderInteger<>-4 then
+ if RemainderLongInt<>-4 then
doerror(3006);
- DivMod(-9, -5, QuotientInteger,RemainderInteger);
- if QuotientInteger<>1 then
+ DivMod(-9, -5, QuotientLongInt,RemainderLongInt);
+ if QuotientLongInt<>1 then
doerror(3007);
- if RemainderInteger<>-4 then
+ if RemainderLongInt<>-4 then
doerror(3008);
end.
diff --git a/tests/test/units/system/tmem.pp b/tests/test/units/system/tmem.pp
index 7abb55226d..8716a2172b 100644
--- a/tests/test/units/system/tmem.pp
+++ b/tests/test/units/system/tmem.pp
@@ -336,7 +336,9 @@ begin
test_fillchar;
test_move;
test_move_large(500); // 512 longints=2048 bytes
+{$ifndef CPU16}
test_move_large(500000);
+{$endif CPU16}
{$ifdef fpc}
test_fillword;
test_filldword;
diff --git a/tests/test/units/system/tres5.pp b/tests/test/units/system/tres5.pp
new file mode 100644
index 0000000000..154df73240
--- /dev/null
+++ b/tests/test/units/system/tres5.pp
@@ -0,0 +1,61 @@
+{ Test for resources support from .rc files. }
+
+{%TARGET=win32,win64}
+
+{$mode objfpc}
+
+uses sysutils;
+
+{$R tres5.rc}
+
+procedure Fail(const Msg: string);
+begin
+ writeln(Msg);
+ Halt(1);
+end;
+
+function GetResource(ResourceName, ResourceType: PChar; PResSize: PLongInt = nil): pointer;
+var
+ hRes: TFPResourceHandle;
+ gRes: TFPResourceHGLOBAL;
+begin
+ hRes:=FindResource(HINSTANCE, ResourceName, ResourceType);
+ if hRes = 0 then
+ Fail('FindResource failed.');
+ gRes:=LoadResource(HINSTANCE, hRes);
+ if gRes = 0 then
+ Fail('LoadResource failed.');
+ if PResSize <> nil then begin
+ PResSize^:=SizeofResource(HINSTANCE, hRes);
+ if PResSize^ = 0 then
+ Fail('SizeofResource failed.');
+ end;
+ Result:=LockResource(gRes);
+ if Result = nil then
+ Fail('LockResource failed.');
+end;
+
+procedure DoTest;
+var
+ s: string;
+ p: PChar;
+ sz: longint;
+begin
+ p:=GetResource('TestFile', 'FILE', @sz);
+ SetString(s, p, sz);
+ if s <> 'test file.' then
+ Fail('Invalid resource loaded.');
+ writeln(s);
+
+ p:=GetResource('Test', 'TEXT', @sz);
+ SetString(s, p, sz);
+ if s <> 'Another test file.' then
+ Fail('Invalid resource loaded.');
+ writeln(s);
+end;
+
+begin
+ writeln('Resources test.');
+ DoTest;
+ writeln('Done.');
+end.
diff --git a/tests/test/units/system/tres5.rc b/tests/test/units/system/tres5.rc
new file mode 100644
index 0000000000..986f9c5835
--- /dev/null
+++ b/tests/test/units/system/tres5.rc
@@ -0,0 +1,2 @@
+TestFile FILE "tres1.txt"
+Test TEXT "tres2.txt"
diff --git a/tests/utils/avx/avxopcodes.pas b/tests/utils/avx/avxopcodes.pas
index cdc9c77b1c..ade1651c77 100644
--- a/tests/utils/avx/avxopcodes.pas
+++ b/tests/utils/avx/avxopcodes.pas
@@ -8,7 +8,7 @@ uses Classes;
type
- TTestFileTyp = (tfNasm, tfFPC);
+ TTestFileTyp = (tfNasm, tfFPC, tfFasm);
TAVXTestGenerator = class(TObject)
private
@@ -103,8 +103,7 @@ begin
FOpCodeList.Add('VCOMISS,1,1,XMMREG,XMMREG,,');
FOpCodeList.Add('VCVTDQ2PD,1,1,XMMREG,MEM64,,');
FOpCodeList.Add('VCVTDQ2PD,1,1,XMMREG,XMMREG,,');
- FOpCodeList.Add('VCVTDQ2PD,1,1,YMMREG,YMMREG,,');
- FOpCodeList.Add('VCVTDQ2PD,1,1,YMMREG,MEM128,,');
+ FOpCodeList.Add('VCVTDQ2PD,1,1,YMMREG,XMMRM,,');
FOpCodeList.Add('VCVTDQ2PS,1,1,XMMREG,XMMRM,,');
FOpCodeList.Add('VCVTDQ2PS,1,1,YMMREG,YMMRM,,');
FOpCodeList.Add('VCVTPD2DQ,1,1,XMMREG,XMMRM,,');
@@ -277,38 +276,68 @@ begin
FOpCodeList.Add('VORPS,1,1,XMMREG,XMMREG,XMMRM,');
FOpCodeList.Add('VORPS,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPABSB,1,1,XMMREG,XMMRM,,');
+ FOpCodeList.Add('VPABSB,1,1,YMMREG,YMMRM,,');
FOpCodeList.Add('VPABSD,1,1,XMMREG,XMMRM,,');
+ FOpCodeList.Add('VPABSD,1,1,YMMREG,YMMRM,,');
FOpCodeList.Add('VPABSW,1,1,XMMREG,XMMRM,,');
+ FOpCodeList.Add('VPABSW,1,1,YMMREG,YMMRM,,');
FOpCodeList.Add('VPACKSSDW,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPACKSSDW,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPACKSSWB,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPACKSSWB,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPACKUSDW,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPACKUSDW,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPACKUSWB,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPACKUSWB,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPADDB,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPADDB,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPADDD,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPADDD,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPADDQ,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPADDQ,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPADDSB,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPADDSB,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPADDSW,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPADDSW,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPADDUSB,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPADDUSB,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPADDUSW,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPADDUSW,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPADDW,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPADDW,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPALIGNR,1,1,XMMREG,XMMREG,XMMRM,IMM8');
+ FOpCodeList.Add('VPALIGNR,1,1,YMMREG,YMMREG,YMMRM,IMM8');
FOpCodeList.Add('VPAND,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPAND,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPANDN,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPANDN,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPAVGB,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPAVGB,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPAVGW,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPAVGW,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPBLENDVB,1,1,XMMREG,XMMREG,XMMRM,XMMREG');
+ FOpCodeList.Add('VPBLENDVB,1,1,YMMREG,YMMREG,YMMRM,YMMREG');
FOpCodeList.Add('VPBLENDW,1,1,XMMREG,XMMREG,XMMRM,IMM8');
+ FOpCodeList.Add('VPBLENDW,1,1,YMMREG,YMMREG,YMMRM,IMM8');
FOpCodeList.Add('VPCLMULQDQ,1,1,XMMREG,XMMREG,XMMRM,IMM8');
FOpCodeList.Add('VPCMPEQB,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPCMPEQB,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPCMPEQD,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPCMPEQD,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPCMPEQQ,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPCMPEQQ,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPCMPEQW,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPCMPEQW,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPCMPESTRI,1,1,XMMREG,XMMRM,IMM8,');
FOpCodeList.Add('VPCMPESTRM,1,1,XMMREG,XMMRM,IMM8,');
FOpCodeList.Add('VPCMPGTB,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPCMPGTB,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPCMPGTD,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPCMPGTD,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPCMPGTQ,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPCMPGTQ,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPCMPGTW,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPCMPGTW,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPCMPISTRI,1,1,XMMREG,XMMRM,IMM8,');
FOpCodeList.Add('VPCMPISTRM,1,1,XMMREG,XMMRM,IMM8,');
FOpCodeList.Add('VPERM2F128,1,1,YMMREG,YMMREG,YMMRM,IMM8');
@@ -331,12 +360,18 @@ begin
FOpCodeList.Add('VPEXTRW,1,1,MEM16,XMMREG,IMM8,');
FOpCodeList.Add('VPEXTRW,1,1,REG32,XMMREG,IMM8,');
FOpCodeList.Add('VPHADDD,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPHADDD,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPHADDSW,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPHADDSW,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPHADDW,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPHADDW,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPHMINPOSUW,1,1,XMMREG,XMMRM,,');
FOpCodeList.Add('VPHSUBD,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPHSUBD,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPHSUBSW,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPHSUBSW,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPHSUBW,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPHSUBW,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPINSRB,1,1,XMMREG,XMMREG,REG32,IMM8');
FOpCodeList.Add('VPINSRB,1,1,XMMREG,XMMREG,MEM8,IMM8');
FOpCodeList.Add('VPINSRD,1,1,XMMREG,XMMREG,RM32,IMM8');
@@ -344,98 +379,185 @@ begin
FOpCodeList.Add('VPINSRW,1,1,XMMREG,XMMREG,REG32,IMM8');
FOpCodeList.Add('VPINSRW,1,1,XMMREG,XMMREG,MEM16,IMM8');
FOpCodeList.Add('VPMADDUBSW,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPMADDUBSW,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPMADDWD,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPMADDWD,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPMAXSB,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPMAXSB,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPMAXSD,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPMAXSD,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPMAXSW,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPMAXSW,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPMAXUB,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPMAXUB,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPMAXUD,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPMAXUD,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPMAXUW,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPMAXUW,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPMINSB,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPMINSB,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPMINSD,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPMINSD,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPMINSW,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPMINSW,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPMINUB,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPMINUB,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPMINUD,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPMINUD,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPMINUW,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPMINUW,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPMOVMSKB,1,1,REG64,XMMREG,,');
+ FOpCodeList.Add('VPMOVMSKB,1,1,REG64,YMMREG,,');
FOpCodeList.Add('VPMOVMSKB,1,1,REG32,XMMREG,,');
+ FOpCodeList.Add('VPMOVMSKB,1,1,REG32,YMMREG,,');
FOpCodeList.Add('VPMOVSXBD,1,1,XMMREG,MEM32,,');
+ FOpCodeList.Add('VPMOVSXBD,1,1,YMMREG,MEM64,,');
FOpCodeList.Add('VPMOVSXBD,1,1,XMMREG,XMMREG,,');
+ FOpCodeList.Add('VPMOVSXBD,1,1,YMMREG,XMMREG,,');
FOpCodeList.Add('VPMOVSXBQ,1,1,XMMREG,MEM16,,');
+ FOpCodeList.Add('VPMOVSXBQ,1,1,YMMREG,MEM32,,');
FOpCodeList.Add('VPMOVSXBQ,1,1,XMMREG,XMMREG,,');
+ FOpCodeList.Add('VPMOVSXBQ,1,1,YMMREG,XMMREG,,');
FOpCodeList.Add('VPMOVSXBW,1,1,XMMREG,MEM64,,');
FOpCodeList.Add('VPMOVSXBW,1,1,XMMREG,XMMREG,,');
+ FOpCodeList.Add('VPMOVSXBW,1,1,YMMREG,XMMRM,,');
FOpCodeList.Add('VPMOVSXDQ,1,1,XMMREG,MEM64,,');
FOpCodeList.Add('VPMOVSXDQ,1,1,XMMREG,XMMREG,,');
+ FOpCodeList.Add('VPMOVSXDQ,1,1,YMMREG,XMMRM,,');
FOpCodeList.Add('VPMOVSXWD,1,1,XMMREG,MEM64,,');
FOpCodeList.Add('VPMOVSXWD,1,1,XMMREG,XMMREG,,');
+ FOpCodeList.Add('VPMOVSXWD,1,1,XMMREG,XMMRM,,');
FOpCodeList.Add('VPMOVSXWQ,1,1,XMMREG,MEM32,,');
+ FOpCodeList.Add('VPMOVSXWQ,1,1,YMMREG,MEM64,,');
FOpCodeList.Add('VPMOVSXWQ,1,1,XMMREG,XMMREG,,');
+ FOpCodeList.Add('VPMOVSXWQ,1,1,YMMREG,XMMREG,,');
FOpCodeList.Add('VPMOVZXBD,1,1,XMMREG,MEM32,,');
+ FOpCodeList.Add('VPMOVZXBD,1,1,YMMREG,MEM64,,');
FOpCodeList.Add('VPMOVZXBD,1,1,XMMREG,XMMREG,,');
+ FOpCodeList.Add('VPMOVZXBD,1,1,YMMREG,XMMREG,,');
FOpCodeList.Add('VPMOVZXBQ,1,1,XMMREG,MEM16,,');
+ FOpCodeList.Add('VPMOVZXBQ,1,1,YMMREG,MEM32,,');
FOpCodeList.Add('VPMOVZXBQ,1,1,XMMREG,XMMREG,,');
+ FOpCodeList.Add('VPMOVZXBQ,1,1,YMMREG,XMMREG,,');
FOpCodeList.Add('VPMOVZXBW,1,1,XMMREG,MEM64,,');
FOpCodeList.Add('VPMOVZXBW,1,1,XMMREG,XMMREG,,');
+ FOpCodeList.Add('VPMOVZXBW,1,1,YMMREG,XMMRM,,');
FOpCodeList.Add('VPMOVZXDQ,1,1,XMMREG,MEM64,,');
FOpCodeList.Add('VPMOVZXDQ,1,1,XMMREG,XMMREG,,');
+ FOpCodeList.Add('VPMOVZXDQ,1,1,YMMREG,XMMRM,,');
FOpCodeList.Add('VPMOVZXWD,1,1,XMMREG,MEM64,,');
FOpCodeList.Add('VPMOVZXWD,1,1,XMMREG,XMMREG,,');
+ FOpCodeList.Add('VPMOVZXWD,1,1,YMMREG,XMMRM,,');
FOpCodeList.Add('VPMOVZXWQ,1,1,XMMREG,MEM32,,');
+ FOpCodeList.Add('VPMOVZXWQ,1,1,YMMREG,MEM64,,');
FOpCodeList.Add('VPMOVZXWQ,1,1,XMMREG,XMMREG,,');
+ FOpCodeList.Add('VPMOVZXWQ,1,1,YMMREG,XMMREG,,');
FOpCodeList.Add('VPMULDQ,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPMULDQ,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPMULHRSW,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPMULHRSW,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPMULHUW,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPMULHUW,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPMULHW,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPMULHW,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPMULLD,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPMULLD,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPMULLW,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPMULLW,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPMULUDQ,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPMULUDQ,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPOR,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPOR,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPSADBW,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPSADBW,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPSHUFB,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPSHUFB,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPSHUFD,1,1,XMMREG,XMMRM,IMM8,');
+ FOpCodeList.Add('VPSHUFD,1,1,YMMREG,YMMRM,IMM8,');
FOpCodeList.Add('VPSHUFHW,1,1,XMMREG,XMMRM,IMM8,');
+ FOpCodeList.Add('VPSHUFHW,1,1,YMMREG,YMMRM,IMM8,');
FOpCodeList.Add('VPSHUFLW,1,1,XMMREG,XMMRM,IMM8,');
+ FOpCodeList.Add('VPSHUFLW,1,1,YMMREG,YMMRM,IMM8,');
FOpCodeList.Add('VPSIGNB,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPSIGNB,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPSIGND,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPSIGND,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPSIGNW,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPSIGNW,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPSLLD,1,1,XMMREG,XMMREG,IMM8,');
+ FOpCodeList.Add('VPSLLD,1,1,YMMREG,YMMREG,IMM8,');
FOpCodeList.Add('VPSLLD,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPSLLD,1,1,YMMREG,YMMREG,XMMRM,');
FOpCodeList.Add('VPSLLDQ,1,1,XMMREG,XMMREG,IMM8,');
+ FOpCodeList.Add('VPSLLDQ,1,1,YMMREG,YMMREG,IMM8,');
FOpCodeList.Add('VPSLLQ,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPSLLQ,1,1,YMMREG,YMMREG,XMMRM,');
FOpCodeList.Add('VPSLLQ,1,1,XMMREG,XMMREG,IMM8,');
+ FOpCodeList.Add('VPSLLQ,1,1,YMMREG,YMMREG,IMM8,');
FOpCodeList.Add('VPSLLW,1,1,XMMREG,XMMREG,IMM8,');
+ FOpCodeList.Add('VPSLLW,1,1,YMMREG,YMMREG,IMM8,');
FOpCodeList.Add('VPSLLW,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPSLLW,1,1,YMMREG,YMMREG,XMMRM,');
FOpCodeList.Add('VPSRAD,1,1,XMMREG,XMMREG,IMM8,');
+ FOpCodeList.Add('VPSRAD,1,1,YMMREG,YMMREG,IMM8,');
FOpCodeList.Add('VPSRAD,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPSRAD,1,1,YMMREG,YMMREG,XMMRM,');
FOpCodeList.Add('VPSRAW,1,1,XMMREG,XMMREG,IMM8,');
+ FOpCodeList.Add('VPSRAW,1,1,YMMREG,YMMREG,IMM8,');
FOpCodeList.Add('VPSRAW,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPSRAW,1,1,YMMREG,YMMREG,XMMRM,');
FOpCodeList.Add('VPSRLD,1,1,XMMREG,XMMREG,IMM8,');
+ FOpCodeList.Add('VPSRLD,1,1,YMMREG,YMMREG,IMM8,');
FOpCodeList.Add('VPSRLD,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPSRLD,1,1,YMMREG,YMMREG,XMMRM,');
FOpCodeList.Add('VPSRLDQ,1,1,XMMREG,XMMREG,IMM8,');
+ FOpCodeList.Add('VPSRLDQ,1,1,YMMREG,YMMREG,IMM8,');
FOpCodeList.Add('VPSRLQ,1,1,XMMREG,XMMREG,IMM8,');
+ FOpCodeList.Add('VPSRLQ,1,1,YMMREG,YMMREG,IMM8,');
FOpCodeList.Add('VPSRLQ,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPSRLQ,1,1,YMMREG,YMMREG,XMMRM,');
FOpCodeList.Add('VPSRLW,1,1,XMMREG,XMMREG,IMM8,');
+ FOpCodeList.Add('VPSRLW,1,1,YMMREG,YMMREG,IMM8,');
FOpCodeList.Add('VPSRLW,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPSRLW,1,1,YMMREG,YMMREG,XMMRM,');
FOpCodeList.Add('VPSUBB,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPSUBB,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPSUBD,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPSUBD,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPSUBQ,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPSUBQ,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPSUBSB,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPSUBSB,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPSUBSW,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPSUBSW,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPSUBUSB,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPSUBUSB,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPSUBUSW,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPSUBUSW,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPSUBW,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPSUBW,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPTEST,1,1,YMMREG,YMMRM,,');
+ FOpCodeList.Add('VPTEST,1,1,YMMREG,YMMRM,,');
+ FOpCodeList.Add('VPTEST,1,1,XMMREG,XMMRM,,');
FOpCodeList.Add('VPTEST,1,1,XMMREG,XMMRM,,');
FOpCodeList.Add('VPUNPCKHBW,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPUNPCKHBW,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPUNPCKHDQ,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPUNPCKHDQ,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPUNPCKHQDQ,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPUNPCKHQDQ,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPUNPCKHWD,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPUNPCKHWD,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPUNPCKLBW,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPUNPCKLBW,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPUNPCKLDQ,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPUNPCKLDQ,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPUNPCKLQDQ,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPUNPCKLQDQ,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPUNPCKLWD,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPUNPCKLWD,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VPXOR,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPXOR,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VRCPPS,1,1,XMMREG,XMMRM,,');
FOpCodeList.Add('VRCPPS,1,1,YMMREG,YMMRM,,');
FOpCodeList.Add('VRCPSS,1,1,XMMREG,XMMREG,MEM32,');
@@ -495,6 +617,162 @@ begin
FOpCodeList.Add('VXORPS,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VZEROALL,1,1,,,,');
FOpCodeList.Add('VZEROUPPER,1,1,,,,');
+
+
+ FOpCodeList.Add('VBROADCASTI128,1,1,YMMREG,MEM128,,');
+ FOpCodeList.Add('VEXTRACTI128,1,1,XMMRM,YMMREG,IMM8,');
+ FOpCodeList.Add('VINSERTI128,1,1,YMMREG,YMMREG,XMMRM,IMM8');
+ FOpCodeList.Add('VPBLENDD,1,1,YMMREG,YMMREG,YMMRM,IMM8');
+ FOpCodeList.Add('VPBLENDD,1,1,XMMREG,XMMREG,XMMRM,IMM8');
+ FOpCodeList.Add('VPBROADCASTB,1,1,XMMREG,XMMREG,,');
+ FOpCodeList.Add('VPBROADCASTB,1,1,YMMREG,XMMREG,,');
+ FOpCodeList.Add('VPBROADCASTB,1,1,XMMREG,MEM8,,');
+ FOpCodeList.Add('VPBROADCASTB,1,1,YMMREG,MEM8,,');
+ FOpCodeList.Add('VPBROADCASTD,1,1,YMMREG,XMMREG,,');
+ FOpCodeList.Add('VPBROADCASTD,1,1,XMMREG,MEM32,,');
+ FOpCodeList.Add('VPBROADCASTD,1,1,XMMREG,XMMREG,,');
+ FOpCodeList.Add('VPBROADCASTD,1,1,YMMREG,MEM32,,');
+ FOpCodeList.Add('VPBROADCASTQ,1,1,YMMREG,MEM64,,');
+ FOpCodeList.Add('VPBROADCASTQ,1,1,XMMREG,MEM64,,');
+ FOpCodeList.Add('VPBROADCASTQ,1,1,XMMREG,XMMREG,,');
+ FOpCodeList.Add('VPBROADCASTQ,1,1,YMMREG,XMMREG,,');
+ FOpCodeList.Add('VPBROADCASTW,1,1,XMMREG,MEM16,,');
+ FOpCodeList.Add('VPBROADCASTW,1,1,XMMREG,XMMREG,,');
+ FOpCodeList.Add('VPBROADCASTW,1,1,YMMREG,MEM16,,');
+ FOpCodeList.Add('VPBROADCASTW,1,1,YMMREG,XMMREG,,');
+ FOpCodeList.Add('VPERM2I128,1,1,YMMREG,YMMREG,YMMRM,IMM8');
+ FOpCodeList.Add('VPERMD,1,1,YMMREG,YMMREG,YMMRM,');
+ FOpCodeList.Add('VPERMPD,1,1,YMMREG,YMMRM,IMM8,');
+ FOpCodeList.Add('VPERMPS,1,1,YMMREG,YMMREG,YMMRM,');
+ FOpCodeList.Add('VPERMQ,1,1,YMMREG,YMMRM,IMM8,');
+ FOpCodeList.Add('VPMASKMOVD,1,1,XMMREG,XMMREG,MEM128,');
+ FOpCodeList.Add('VPMASKMOVD,1,1,MEM128,XMMREG,XMMREG,');
+ FOpCodeList.Add('VPMASKMOVD,1,1,YMMREG,YMMREG,MEM256,');
+ FOpCodeList.Add('VPMASKMOVD,1,1,MEM256,YMMREG,YMMREG,');
+ FOpCodeList.Add('VPMASKMOVQ,1,1,XMMREG,XMMREG,MEM128,');
+ FOpCodeList.Add('VPMASKMOVQ,1,1,MEM128,XMMREG,XMMREG,');
+ FOpCodeList.Add('VPMASKMOVQ,1,1,YMMREG,YMMREG,MEM256,');
+ FOpCodeList.Add('VPMASKMOVQ,1,1,MEM256,YMMREG,YMMREG,');
+ FOpCodeList.Add('VPSLLVD,1,1,YMMREG,YMMREG,YMMRM,');
+ FOpCodeList.Add('VPSLLVD,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPSLLVQ,1,1,YMMREG,YMMREG,YMMRM,');
+ FOpCodeList.Add('VPSLLVQ,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPSRAVD,1,1,YMMREG,YMMREG,YMMRM,');
+ FOpCodeList.Add('VPSRAVD,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPSRLVD,1,1,YMMREG,YMMREG,YMMRM,');
+ FOpCodeList.Add('VPSRLVD,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VPSRLVQ,1,1,YMMREG,YMMREG,YMMRM,');
+ FOpCodeList.Add('VPSRLVQ,1,1,XMMREG,XMMREG,XMMRM,');
+
+
+ FOpCodeList.Add('VFMADD132PD,1,1,YMMREG,YMMREG,YMMRM,');
+ FOpCodeList.Add('VFMADD132PD,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFMADD213PD,1,1,YMMREG,YMMREG,YMMRM,');
+ FOpCodeList.Add('VFMADD213PD,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFMADD132PD,1,1,YMMREG,YMMREG,YMMRM,');
+ FOpCodeList.Add('VFMADD132PD,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFMADD132PS,1,1,YMMREG,YMMREG,YMMRM,');
+ FOpCodeList.Add('VFMADD132PS,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFMADD213PS,1,1,YMMREG,YMMREG,YMMRM,');
+ FOpCodeList.Add('VFMADD213PS,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFMADD132PS,1,1,YMMREG,YMMREG,YMMRM,');
+ FOpCodeList.Add('VFMADD132PS,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFMADD132PD,1,1,YMMREG,YMMREG,YMMRM,');
+ FOpCodeList.Add('VFMADD132PD,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFMADD213PD,1,1,YMMREG,YMMREG,YMMRM,');
+ FOpCodeList.Add('VFMADD213PD,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFMADD231PD,1,1,YMMREG,YMMREG,YMMRM,');
+ FOpCodeList.Add('VFMADD231PD,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFMADD132PS,1,1,YMMREG,YMMREG,YMMRM,');
+ FOpCodeList.Add('VFMADD132PS,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFMADD213PS,1,1,YMMREG,YMMREG,YMMRM,');
+ FOpCodeList.Add('VFMADD213PS,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFMADD231PS,1,1,YMMREG,YMMREG,YMMRM,');
+ FOpCodeList.Add('VFMADD231PS,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFMADD132SD,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFMADD213SD,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFMADD231SD,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFMADD132SS,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFMADD213SS,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFMADD231SS,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFMADDSUB132PD,1,1,YMMREG,YMMREG,YMMRM,');
+ FOpCodeList.Add('VFMADDSUB132PD,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFMADDSUB213PD,1,1,YMMREG,YMMREG,YMMRM,');
+ FOpCodeList.Add('VFMADDSUB213PD,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFMADDSUB231PD,1,1,YMMREG,YMMREG,YMMRM,');
+ FOpCodeList.Add('VFMADDSUB231PD,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFMADDSUB132PS,1,1,YMMREG,YMMREG,YMMRM,');
+ FOpCodeList.Add('VFMADDSUB132PS,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFMADDSUB213PS,1,1,YMMREG,YMMREG,YMMRM,');
+ FOpCodeList.Add('VFMADDSUB213PS,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFMADDSUB231PS,1,1,YMMREG,YMMREG,YMMRM,');
+ FOpCodeList.Add('VFMADDSUB231PS,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFMSUBADD132PD,1,1,YMMREG,YMMREG,YMMRM,');
+ FOpCodeList.Add('VFMSUBADD132PD,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFMSUBADD213PD,1,1,YMMREG,YMMREG,YMMRM,');
+ FOpCodeList.Add('VFMSUBADD213PD,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFMSUBADD231PD,1,1,YMMREG,YMMREG,YMMRM,');
+ FOpCodeList.Add('VFMSUBADD231PD,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFMSUBADD132PS,1,1,YMMREG,YMMREG,YMMRM,');
+ FOpCodeList.Add('VFMSUBADD132PS,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFMSUBADD213PS,1,1,YMMREG,YMMREG,YMMRM,');
+ FOpCodeList.Add('VFMSUBADD213PS,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFMSUBADD231PS,1,1,YMMREG,YMMREG,YMMRM,');
+ FOpCodeList.Add('VFMSUBADD231PS,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFMSUB132PD,1,1,YMMREG,YMMREG,YMMRM,');
+ FOpCodeList.Add('VFMSUB132PD,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFMSUB213PD,1,1,YMMREG,YMMREG,YMMRM,');
+ FOpCodeList.Add('VFMSUB213PD,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFMSUB231PD,1,1,YMMREG,YMMREG,YMMRM,');
+ FOpCodeList.Add('VFMSUB231PD,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFMSUB132PS,1,1,YMMREG,YMMREG,YMMRM,');
+ FOpCodeList.Add('VFMSUB132PS,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFMSUB213PS,1,1,YMMREG,YMMREG,YMMRM,');
+ FOpCodeList.Add('VFMSUB213PS,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFMSUB231PS,1,1,YMMREG,YMMREG,YMMRM,');
+ FOpCodeList.Add('VFMSUB231PS,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFMSUB132SD,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFMSUB213SD,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFMSUB231SD,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFMSUB132SS,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFMSUB213SS,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFMSUB231SS,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFNMADD132PD,1,1,YMMREG,YMMREG,YMMRM,');
+ FOpCodeList.Add('VFNMADD132PD,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFNMADD213PD,1,1,YMMREG,YMMREG,YMMRM,');
+ FOpCodeList.Add('VFNMADD213PD,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFNMADD231PD,1,1,YMMREG,YMMREG,YMMRM,');
+ FOpCodeList.Add('VFNMADD231PD,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFNMADD132PS,1,1,YMMREG,YMMREG,YMMRM,');
+ FOpCodeList.Add('VFNMADD132PS,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFNMADD213PS,1,1,YMMREG,YMMREG,YMMRM,');
+ FOpCodeList.Add('VFNMADD213PS,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFNMADD231PS,1,1,YMMREG,YMMREG,YMMRM,');
+ FOpCodeList.Add('VFNMADD231PS,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFNMADD132SD,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFNMADD213SD,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFNMADD231SD,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFNMADD132SS,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFNMADD213SS,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFNMADD231SS,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFNMSUB132PD,1,1,YMMREG,YMMREG,YMMRM,');
+ FOpCodeList.Add('VFNMSUB132PD,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFNMSUB213PD,1,1,YMMREG,YMMREG,YMMRM,');
+ FOpCodeList.Add('VFNMSUB213PD,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFNMSUB231PD,1,1,YMMREG,YMMREG,YMMRM,');
+ FOpCodeList.Add('VFNMSUB231PD,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFNMSUB132PS,1,1,YMMREG,YMMREG,YMMRM,');
+ FOpCodeList.Add('VFNMSUB132PS,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFNMSUB213PS,1,1,YMMREG,YMMREG,YMMRM,');
+ FOpCodeList.Add('VFNMSUB213PS,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFNMSUB231PS,1,1,YMMREG,YMMREG,YMMRM,');
+ FOpCodeList.Add('VFNMSUB231PS,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFNMSUB132SD,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFNMSUB213SD,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFNMSUB231SD,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFNMSUB132SS,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFNMSUB213SS,1,1,XMMREG,XMMREG,XMMRM,');
+ FOpCodeList.Add('VFNMSUB231SS,1,1,XMMREG,XMMREG,XMMRM,');
end;
function TAVXTestGenerator.InternalMakeTestFiles(aX64: boolean; aDestPath, aFileExt: String;
@@ -552,7 +830,7 @@ begin
LastOpCode := NewOpCode;
end
else LastOpCode := NewOpCode;
- end;
+ end;
if (not(aX64) and (sl[1] = '1')) or // i386
(aX64 and (sl[2] = '1')) then // x86_64
@@ -591,7 +869,7 @@ var
FileExt: String;
i: integer;
const
- cPlatform: array[boolean] of String = (('i386'), ('x86_64'));
+ cPlatform: array[boolean] of String = (('i386'), ('x86_64'));
begin
result := false;
@@ -621,11 +899,32 @@ begin
slFooter.Add('end.');
end;
tfNasm: begin
- writeln(format('outputformat: fpc platform: %s path: %s',
+ writeln(format('outputformat: Nasm platform: %s path: %s',
[cPlatform[aX64], aDestPath]));
FileExt := '.asm';
+ if aX64 then slHeader.Add('[BITS 64]')
+ else slHeader.Add('[BITS 32]');
+
+ for i := 1 to 10 do
+ slHeader.Add('NOP');
+
+ for i := 1 to 10 do
+ slFooter.Add('NOP');
+ end;
+ tfFasm: begin
+ writeln(format('outputformat: Fasm platform: %s path: %s',
+ [cPlatform[aX64], aDestPath]));
+
+ FileExt := '.asm';
+
+ if aX64 then slHeader.Add('format MS64 COFF')
+ else slHeader.Add('format MS COFF');
+
+ slHeader.Add('section ''.text'' code readable executable');
+ slHeader.Add('myproc:');
+
for i := 1 to 10 do
slHeader.Add('NOP');
diff --git a/tests/utils/avx/avxtestfilecmp.pp b/tests/utils/avx/avxtestfilecmp.pp
index dd4d7d8a58..45893814b3 100644
--- a/tests/utils/avx/avxtestfilecmp.pp
+++ b/tests/utils/avx/avxtestfilecmp.pp
@@ -24,9 +24,9 @@ begin
writeln('');
writeln('-h help');
writeln('-m sourcefile mask');
- writeln('-n sourcefile extention');
+ writeln('-n sourcefile extension');
writeln('-d destination path');
- writeln('-e destinationfile extention');
+ writeln('-e destinationfile extension');
writeln('-s silent');
writeln('');
{$IFDEF WINDOWS}
@@ -44,25 +44,25 @@ begin
if ExtractFileExt(sm) = '' then
begin
- if trim(SourceFileExtention) <> '' then
+ if trim(SourceFileExtension) <> '' then
begin
- if copy(SourceFileExtention, 1, 1) <> '.' then sm := sm + '.' + SourceFileExtention
- else sm := sm + SourceFileExtention;
+ if copy(SourceFileExtension, 1, 1) <> '.' then sm := sm + '.' + SourceFileExtension
+ else sm := sm + SourceFileExtension;
end;
end;
if (ExtractFilePath(sm) = DestPath) and
- (DestFileExtention = '') then
+ (DestFileExtension = '') then
begin
writeln(format('Do you want compare the same files (sourcepath: "%s" destination path: "%s"). [Y/N]',
[ExtractFilePath(sm), DestPath]));
read(ch);
- if ch in ['Y', 'y', 'J', 'N'] then CompareFiles(NoSourceFileExtention, NoDestFileExtention, Silent,
- sm, DestPath, DestFileExtention);
+ if ch in ['Y', 'y', 'J', 'N'] then CompareFiles(NoSourceFileExtension, NoDestFileExtension, Silent,
+ sm, DestPath, DestFileExtension);
end
- else CompareFiles(NoSourceFileExtention, NoDestFileExtention, Silent,
- sm, DestPath, DestFileExtention);
+ else CompareFiles(NoSourceFileExtension, NoDestFileExtension, Silent,
+ sm, DestPath, DestFileExtension);
end;
finally
Free;
diff --git a/tests/utils/avx/avxtestgenerator.pp b/tests/utils/avx/avxtestgenerator.pp
index 1457f9ea99..02914ba7c4 100644
--- a/tests/utils/avx/avxtestgenerator.pp
+++ b/tests/utils/avx/avxtestgenerator.pp
@@ -42,7 +42,7 @@ begin
writeln('make avx assembler-testfiles');
writeln('');
writeln('-h help');
- writeln('-f [fpc,nasm] outputformat');
+ writeln('-f [fpc,nasm,fasm] outputformat');
writeln('-p [x8664] codegenerator for x86_64 platform');
writeln('-o destination path');
writeln('');
@@ -51,6 +51,7 @@ begin
begin
case OutputFormat of
'f': MakeTestFiles(tfFPC, x64, Path);
+ 'F': MakeTestFiles(tfFasm, x64, Path);
'n': MakeTestFiles(tfNasm, x64, Path);
end;
end;
diff --git a/tests/utils/avx/cmpoptions.pas b/tests/utils/avx/cmpoptions.pas
index 781dafee95..3dcfd2b854 100644
--- a/tests/utils/avx/cmpoptions.pas
+++ b/tests/utils/avx/cmpoptions.pas
@@ -11,12 +11,12 @@ type
TOptions = class(TObject)
private
FHelp: boolean;
- FNoDestFileExtention: boolean;
- FNoSourceFileExtention: boolean;
+ FNoDestFileExtension: boolean;
+ FNoSourceFileExtension: boolean;
FSilent: boolean;
- FSourceFileExtention: String;
+ FSourceFileExtension: String;
FSourceMask: String;
- FDestFileExtention: String;
+ FDestFileExtension: String;
FDestPath: String;
public
constructor Create;
@@ -25,12 +25,12 @@ type
property Help : boolean read FHelp write FHelp;
property SourceMask : String read FSourceMask write FSourceMask;
- property SourceFileExtention : String read FSourceFileExtention write FSourceFileExtention;
- property NoSourceFileExtention: boolean read FNoSourceFileExtention;
+ property SourceFileExtension : String read FSourceFileExtension write FSourceFileExtension;
+ property NoSourceFileExtension: boolean read FNoSourceFileExtension;
property DestPath : String read FDestPath write FDestPath;
- property DestFileExtention : String read FDestFileExtention write FDestFileExtention;
- property NoDestFileExtention : boolean read FNoDestFileExtention;
+ property DestFileExtension : String read FDestFileExtension write FDestFileExtension;
+ property NoDestFileExtension : boolean read FNoDestFileExtension;
property Silent : boolean read FSilent;
end;
@@ -44,8 +44,8 @@ constructor TOptions.Create;
begin
FHelp := false;
FSourceMask := '';
- FNoSourceFileExtention := false;
- FDestFileExtention := '';
+ FNoSourceFileExtension := false;
+ FDestFileExtension := '';
FDestPath := '';
FSilent := false;
end;
@@ -61,12 +61,12 @@ begin
else FHelp := false;
FSourceMask := IncludeTrailingBackslash(GetCurrentDir) + '*.*';
- FSourceFileExtention := '';
- FNoSourceFileExtention := false;
+ FSourceFileExtension := '';
+ FNoSourceFileExtension := false;
FDestPath := IncludeTrailingBackslash(GetCurrentDir);
- FDestFileExtention := '';
- FNoDestFileExtention := false;
+ FDestFileExtension := '';
+ FNoDestFileExtension := false;
FSilent := false;
@@ -89,8 +89,8 @@ begin
if ExtractFileName(FSourceMask) = '' then FSourceMask := FSourceMask + '*';
end;
'n': begin
- FSourceFileExtention := sValue;
- FNoSourceFileExtention := FSourceFileExtention = '';
+ FSourceFileExtension := sValue;
+ FNoSourceFileExtension := FSourceFileExtension = '';
end;
'd': begin
FDestPath := sValue;
@@ -99,8 +99,8 @@ begin
else FDestPath := ExpandFileName(FDestPath);
end;
'e': begin
- FDestFileExtention := sValue;
- FNoDestFileExtention := FDestFileExtention = '';
+ FDestFileExtension := sValue;
+ FNoDestFileExtension := FDestFileExtension = '';
end;
's': FSilent := true;
else begin
@@ -111,17 +111,17 @@ begin
end
else IsInvalidParam := true;
- if (FNoSourceFileExtention = false) and
- (FSourceFileExtention = '') then
+ if (FNoSourceFileExtension = false) and
+ (FSourceFileExtension = '') then
begin
- FSourceFileExtention := ExtractFileExt(FSourceMask);
+ FSourceFileExtension := ExtractFileExt(FSourceMask);
end
else if (ExtractFileExt(FSourceMask) <> '') and
- (FSourceFileExtention <> '') and
- (ExtractFileExt(FSourceMask) <> FSourceFileExtention) then
+ (FSourceFileExtension <> '') and
+ (ExtractFileExt(FSourceMask) <> FSourceFileExtension) then
begin
- writeln(format('parameter conflict: different sourcefile extention "%s" and "%s"',
- [ExtractFileExt(FSourceMask), FSourceFileExtention]));
+ writeln(format('parameter conflict: different sourcefile extension "%s" and "%s"',
+ [ExtractFileExt(FSourceMask), FSourceFileExtension]));
FHelp := true;
end;
diff --git a/tests/utils/avx/filecomparer.pas b/tests/utils/avx/filecomparer.pas
index e95d731738..b55049965a 100644
--- a/tests/utils/avx/filecomparer.pas
+++ b/tests/utils/avx/filecomparer.pas
@@ -16,7 +16,7 @@ type
function Compare(const aFileName1, aFilename2: String; var aMsg: String): boolean;
public
- procedure CompareFiles(aNoSourcefileExt, aNoDestfileExt, aSilent: boolean; const aSourceMask, aDestPath, aDestFileExtention: String);
+ procedure CompareFiles(aNoSourcefileExt, aNoDestfileExt, aSilent: boolean; const aSourceMask, aDestPath, aDestFileExtension: String);
end;
@@ -40,7 +40,7 @@ begin
begin
aMsg := format('file "%s" not found', [aFileName1]);
end
- else if not(FileExists(aFileName1)) then
+ else if not(FileExists(aFileName2)) then
begin
aMsg := format('file "%s" not found', [aFileName2]);
end
@@ -55,7 +55,11 @@ begin
MStream2.Position := 0;
if MStream1.Size < 1 then aMsg := format('file "%s": start or endmarker not found', [aFilename1])
- else if MStream2.Size < 1 then aMsg := format('file "%s": start or endmarker not found', [aFilename2])
+ else if MStream2.Size < 1 then
+ begin
+ aMsg := format('file "%s": start or endmarker not found', [aFilename2]);
+ aMsg := aMsg + #13#10 + format('Size: %d', [MStream2.Size]);
+ end
else
begin
if MStream1.Size <> MStream2.Size then aMsg := format('diff: file: "%s" size: %d - file: "%s" size: %d',
@@ -76,7 +80,7 @@ begin
end;
end;
-procedure TFileComparer.CompareFiles(aNoSourcefileExt, aNoDestfileExt, aSilent: boolean; const aSourceMask, aDestPath, aDestFileExtention: String);
+procedure TFileComparer.CompareFiles(aNoSourcefileExt, aNoDestfileExt, aSilent: boolean; const aSourceMask, aDestPath, aDestFileExtension: String);
var
i: integer;
sl: TStringList;
@@ -85,16 +89,16 @@ var
FileName: String;
SourceFileName: String;
DestFileName: String;
- DestFileExtention: String;
+ DestFileExtension: String;
Msg: String;
begin
Path := IncludeTrailingBackslash(ExtractFilePath(aSourceMask));
- DestFileExtention := aDestFileExtention;
+ DestFileExtension := aDestFileExtension;
- if (DestFileExtention <> '') and
- (copy(DestFileExtention, 1, 1) <> '.') then
+ if (DestFileExtension <> '') and
+ (copy(DestFileExtension, 1, 1) <> '.') then
begin
- DestFileExtention := '.' + DestFileExtention;
+ DestFileExtension := '.' + DestFileExtension;
end;
sl := TStringList.Create;
@@ -109,7 +113,7 @@ begin
begin
sl.Sort;
- if aDestFileExtention <> '' then
+ if aDestFileExtension <> '' then
begin
FileName := copy(sl[i], 1, length(sl[i]) - length(ExtractFileExt(sl[i])));
@@ -129,7 +133,7 @@ begin
end;
SourceFileName := Path + sl[i];
- DestFileName := IncludeTrailingBackslash(aDestpath) + FileName + DestFileExtention;
+ DestFileName := IncludeTrailingBackslash(aDestpath) + FileName + DestFileExtension;
if FileExists(SourceFileName) then
begin
@@ -173,9 +177,9 @@ var
NopCount := 0;
- while MStream.Position < MStream.Size do
+ while aStream.Position < aStream.Size do
begin
- MStream.Read(ch, 1);
+ aStream.Read(ch, 1);
if ch = 144 then
begin
inc(NopCount);
@@ -184,13 +188,25 @@ var
begin
if NopCount >= 10 then
begin
- if not(aEndPos) then result := MStream.Position
- else result := MStream.Position - NopCount - 1;
+ if not(aEndPos) then result := aStream.Position
+ else result := aStream.Position - NopCount - 1;
+
break;
end
else NopCount := 0;
end;
end;
+
+ if NopCount >= 10 then
+ begin
+ if (result < 0) and
+ (aStream.Position = aStream.Size) then
+ begin
+ if not(aEndPos) then result := aStream.Position
+ else result := aStream.Position - NopCount;
+ end;
+ end
+
end;
end;
@@ -209,7 +225,10 @@ begin
if MStream.Size > StartPos + 16384 then
begin
EndPos := FindPos(MStream, MStream.Size - 16384, true);
- if EndPos < 0 then EndPos := FindPos(MStream, StartPos, true);
+ if EndPos < 0 then
+ begin
+ EndPos := FindPos(MStream, StartPos, true);
+ end;
end
else EndPos := FindPos(MStream, StartPos, true);
end;
diff --git a/tests/utils/avx/options.pas b/tests/utils/avx/options.pas
index 9d75b8c047..d9e5a6088a 100644
--- a/tests/utils/avx/options.pas
+++ b/tests/utils/avx/options.pas
@@ -83,6 +83,7 @@ begin
'h': FHelp := true;
'f': if sValue = 'fpc' then FOutputFormat := 'f'
else if sValue = 'nasm' then FOutputFormat := 'n'
+ else if sValue = 'fasm' then FOutputFormat := 'F'
else IsInvalidParam := true;
'p': if sValue = 'x8664' then
begin
diff --git a/tests/utils/avx/readme.txt b/tests/utils/avx/readme.txt
index a403a53a09..d6954df602 100644
--- a/tests/utils/avx/readme.txt
+++ b/tests/utils/avx/readme.txt
@@ -2,17 +2,52 @@ create testfiles in shell (linux):
for i in `ls /tmp/avx/*.pp`; do /home/torsten/fpc/avx/ppcx64 -Fu/home/torsten/fpc/avx/rtl/units/x86_64-linux/ "$i"; done;
+On windows, complete testing would look like:
+
+i386:
+mkdir tmp
+fpc avxtestgenerator
+fpc avxtestfilecmp
+avxtestgenerator -ffpc -otmp
+cd tmp
+for %%p in (*.pp) do call fpc %%p -v0
+cd ..
+avxtestgenerator -fnasm -otmp
+cd tmp
+for %%a in (*.asm) do nasm -fwin32 %%a
+cd ..
+avxtestfilecmp -mtmp\*.obj -dtmp -eexe -s
+
+x86_64:
+fpc avxtestgenerator
+fpc avxtestfilecmp
+avxtestgenerator -px8664 -ffpc -otmp
+cd tmp
+for %%p in (*.pp) do call fpc -Px86_64 %%p -v0
+cd ..
+avxtestgenerator -px8664 -fnasm -otmp
+cd tmp
+for %%a in (*.asm) do nasm -fwin64 %%a
+cd ..
+avxtestfilecmp -mtmp\*.obj -dtmp -eexe -s
+
+****************************************************************************************************
+Note:
+While avxtestgenerator supports FASM output, testing with FASM does not work because
+FASM assembles slightly different from FPC, e.g. it swaps base and index register
+in references if this is benefical (e.g. [rbp+rax] => [rax+rbp] saves one byte).
+****************************************************************************************************
compare binary-files:
any instructions can have a different binary-streams
e.g.
- VMOVAPD XMM0, XMM1:
+ VMOVAPD XMM0, XMM1:
possible binary-codes:
VMOVAPD xmm1, xmm2/m128 [VEX.128.66.0F.28 /r]
- VMOVAPD xmm2/m128, xmm1 [VEX.128.66.0F.29 /r]
+ VMOVAPD xmm2/m128, xmm1 [VEX.128.66.0F.29 /r]
VMOVSD XMM1, XMM2, XMM3
@@ -21,10 +56,9 @@ e.g.
VMOVSD xmm1, xmm2, xmm3 [VEX.NDS.LIG.F2.0F.WIG.10 /r] operand encoding: RVM
VMOVSD xmm1, xmm2, xmm3 [VEX.NDS.LIG.F2.0F.WIG.11 /r] operand encoding: MVR
-
currently (AVX I):
-VMOVAPD
+VMOVAPD
VMOVAPS
VMOVDQA
VMOVDQU
diff --git a/tests/webtbf/tw25788.pp b/tests/webtbf/tw25788.pp
index 7d9c9aa5ce..25220b1ecc 100644
--- a/tests/webtbf/tw25788.pp
+++ b/tests/webtbf/tw25788.pp
@@ -1,7 +1,7 @@
{ %norun }
{ %opt=-Cg }
{ %fail }
-{ %target=linux,win64,freebsd,darwin }
+{ %target=linux,freebsd,darwin }
unit tw25788;
diff --git a/tests/webtbf/tw25861.pp b/tests/webtbf/tw25861.pp
new file mode 100644
index 0000000000..183fc5186b
--- /dev/null
+++ b/tests/webtbf/tw25861.pp
@@ -0,0 +1,8 @@
+{ %fail }
+
+{$MODE OBJFPC} {$MODESWITCH PROPERTIES-}
+program test;
+function GetBar(): Cardinal; begin Result := 0; end;
+property Bar: Cardinal read GetBar;
+begin Writeln(Bar); end.
+
diff --git a/tests/webtbf/tw25862.pp b/tests/webtbf/tw25862.pp
new file mode 100644
index 0000000000..a8b51d173c
--- /dev/null
+++ b/tests/webtbf/tw25862.pp
@@ -0,0 +1,8 @@
+{ %skipcpu=i386,powerpc }
+{ %fail }
+
+{$MODE OBJFPC} {$CHECKPOINTER ON}
+program test;
+
+begin
+end.
diff --git a/tests/webtbf/tw25915.pp b/tests/webtbf/tw25915.pp
new file mode 100644
index 0000000000..190ba627d7
--- /dev/null
+++ b/tests/webtbf/tw25915.pp
@@ -0,0 +1,21 @@
+{ %FAIL }
+
+{$MODE OBJFPC}
+program tw25915;
+
+type
+ TTestClass = class
+ FS: AnsiString;
+ procedure TestMethod();
+ end;
+
+procedure TTestClass.TestMethod();
+begin
+ FS := Default(FS); // 'Error: Identifier not found "FS"' and 'Error: Type identifier expected'
+end;
+
+var
+ S: AnsiString;
+begin
+ S := Default(S); // two times 'Error: Type identifier expected'
+end.
diff --git a/tests/webtbf/tw25951.pp b/tests/webtbf/tw25951.pp
new file mode 100644
index 0000000000..eb96a8f812
--- /dev/null
+++ b/tests/webtbf/tw25951.pp
@@ -0,0 +1,38 @@
+{ %fail }
+// Mainly used for compiler discovery and turning on global compiler settings.
+// This simplifies vwrdefines.inc maintenance, since vwrdefines.inc is per application, and this one is global
+
+// delphi 2009 related
+
+{$if compilerversion>=20} //D2009
+ {$define Delphiunicode}
+ {$define has_pointermath}
+{$ifend}
+{$if compilerversion>=21} // D2010
+ {$define has_debugthread}
+ {$define has_bigrtti}
+{$ifend}
+{$if compilerversion>=22} // DXE
+ {$define has_keyboard}
+{$ifend}
+{$if compilerversion>=23} // DXE2..DXE4 (5?)
+ {$define has_globalformatsettings}
+ {$define has_extendedTrect} // ?
+{$ifend}
+
+ {$ifdef has_pointermath}
+ {$pointermath on} // aka FPC emulation
+ {$endif}
+
+// most code nowadays probably won't compile under D2009. And even D2009 might be difficult
+// due to increased generics usage in 20.
+ {$ifndef ver150}{$define inlineon}{$endif} // if not D7, then can use inline. Nicer than version.
+ {$ifndef Delphiunicode}
+ {$define vstoldstring}
+ {$else}
+ {$define newvst}
+ {$define newcomport}
+{$endif}
+
+begin
+end.
diff --git a/tests/webtbs/tw10320.pp b/tests/webtbs/tw10320.pp
index 4517a8bde7..0551a7b7fb 100644
--- a/tests/webtbs/tw10320.pp
+++ b/tests/webtbs/tw10320.pp
@@ -14,7 +14,7 @@ type
function GetP(Index : integer) : Pointer;
constructor create;
public
- property P[Index: LongInt]: Pointer read GetP;
+ property P[Index: Integer]: Pointer read GetP;
end;
var a : TRgbArray;
diff --git a/tests/webtbs/tw10815.pp b/tests/webtbs/tw10815.pp
index 45e8332be5..f5a745c56b 100644
--- a/tests/webtbs/tw10815.pp
+++ b/tests/webtbs/tw10815.pp
@@ -55,17 +55,21 @@ begin
try
Inc(ThreadNumber);
thr:=ThProva.Create(Threadnumber);
- thr.resume;
+ thr.start;
Except on e: Exception do
begin
- WriteLn(e.Message);
- halt(1);
+ { maybe the previously started threads didn't finish yet -> give them some
+ more time to completely terminate }
+ sleep(1000);
+ try
+ thr:=ThProva.Create(Threadnumber);
+ thr.start;
+ except
+ WriteLn(e.Message);
+ halt(1);
+ end;
end;
end;
- if (threadnumber mod 16) = 0 then
- while (threadsfinished<>threadnumber) do
- { let the started threads to finish }
- sleep(70);
end;
while (threadsfinished<>threadnumber) do
{ give some time to the started threads to finish }
diff --git a/tests/webtbs/tw15415.pp b/tests/webtbs/tw15415.pp
index 6c22061d25..285b2f022b 100644
--- a/tests/webtbs/tw15415.pp
+++ b/tests/webtbs/tw15415.pp
@@ -2,7 +2,7 @@
type
TMyClass = class
- i, i2 :Integer;
+ i, i2 :LongInt;
end;
begin
diff --git a/tests/webtbs/tw16365.pp b/tests/webtbs/tw16365.pp
index cb9164b2bb..e22f7578dd 100644
--- a/tests/webtbs/tw16365.pp
+++ b/tests/webtbs/tw16365.pp
@@ -11,8 +11,8 @@ type
timpclass = class(tobject,itest)
protected
- function _addref: integer; virtual; {$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
- function _release: integer; virtual; {$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
+ function _addref: longint; virtual; {$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
+ function _release: longint; virtual; {$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
function QueryInterface(constref IID: TGUID; out Obj): HResult; {$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
public
function test: longint;
@@ -35,12 +35,12 @@ begin
result:=123456;
end;
-function timpclass._addref: integer; {$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
+function timpclass._addref: longint; {$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
begin
result:= -1;
end;
-function timpclass._release: integer; {$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
+function timpclass._release: longint; {$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
begin
result:= -1;
end;
@@ -51,7 +51,7 @@ begin
Result:=0
end
else begin
- result:= integer(e_nointerface);
+ result:= HResult(e_nointerface);
end;
end;
diff --git a/tests/webtbs/tw19697.pp b/tests/webtbs/tw19697.pp
new file mode 100644
index 0000000000..8514d0255f
--- /dev/null
+++ b/tests/webtbs/tw19697.pp
@@ -0,0 +1,16 @@
+{ %NORUN }
+
+program tw19697;
+
+{$mode objfpc}{$H+}
+
+uses
+ uw19697;
+
+type
+ TSpecialisedClass = specialize TGenericClass<Integer>;
+
+begin
+ TSpecialisedClass.Init;
+end.
+
diff --git a/tests/webtbs/tw20192.pp b/tests/webtbs/tw20192.pp
index 315e09cd06..9d1259890a 100644
--- a/tests/webtbs/tw20192.pp
+++ b/tests/webtbs/tw20192.pp
@@ -8,7 +8,7 @@ type
public
constructor Create(Val: _T);
- function Bug: Integer;
+ function Bug: LongInt;
end;
{--- TGen.Create ---}
@@ -19,7 +19,7 @@ begin
end;
{--- TGen.Bug ---}
-function TGen.Bug : Integer;
+function TGen.Bug : LongInt;
begin
Result := 100000 div SizeOf(_T); // *** DIVISION BY ZERO ***
diff --git a/tests/webtbs/tw2177.pp b/tests/webtbs/tw2177.pp
index 3250616a71..522d758dcf 100644
--- a/tests/webtbs/tw2177.pp
+++ b/tests/webtbs/tw2177.pp
@@ -16,25 +16,25 @@ type
Twii= class(TObject, ii)
s: string;
- function QueryInterface(constref IID: TGUID; out Obj): Integer; {$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
- function _AddRef: Integer; {$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
- function _Release: Integer; {$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
+ function QueryInterface(constref IID: TGUID; out Obj): Longint; {$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
+ function _AddRef: Longint; {$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
+ function _Release: Longint; {$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
procedure Show;stdcall;
end;
{________doomy interfaces______}
- function Twii.QueryInterface(constref IID: TGUID; out Obj): Integer; {$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
+ function Twii.QueryInterface(constref IID: TGUID; out Obj): Longint; {$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
begin
result:= -1;
end;
- function Twii._AddRef: Integer; {$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
+ function Twii._AddRef: Longint; {$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
begin
result:= -1;
end;
- function Twii._Release: Integer; {$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
+ function Twii._Release: Longint; {$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
begin
result:= -1;
end;
diff --git a/tests/webtbs/tw23776.pp b/tests/webtbs/tw23776.pp
new file mode 100644
index 0000000000..db8b8f9cc6
--- /dev/null
+++ b/tests/webtbs/tw23776.pp
@@ -0,0 +1,15 @@
+{ %NORUN }
+
+program tw23776;
+{$mode objfpc}
+type
+generic tg<T>= class
+ public
+ class function len(a: T): integer;
+end;
+ class function tg.len(a: T): integer;
+ begin
+ result:= length(a);
+ end;
+begin
+end.
diff --git a/tests/webtbs/tw25600.pp b/tests/webtbs/tw25600.pp
new file mode 100644
index 0000000000..3e44c2f1a6
--- /dev/null
+++ b/tests/webtbs/tw25600.pp
@@ -0,0 +1,19 @@
+{ %NORUN }
+{ %OPT=-g }
+
+program tw25600;
+
+{$MODE DELPHI}
+
+type
+ // maybe related to
+ // http://bugs.freepascal.org/view.php?id=25599
+ // http://bugs.freepascal.org/view.php?id=24848
+ TC<T> = class
+ public
+ class var F: array[0..T.X] of byte; // for normal fields all is ok
+ end;
+
+begin // Fatal: Internal error 200601281
+end.
+
diff --git a/tests/webtbs/tw25604.pp b/tests/webtbs/tw25604.pp
new file mode 100644
index 0000000000..b117977b32
--- /dev/null
+++ b/tests/webtbs/tw25604.pp
@@ -0,0 +1,24 @@
+{ %NORUN }
+
+program tw25604;
+
+{$MODE DELPHI}
+
+type
+ TA<T> = class
+ private
+ F1, F2: T;
+ procedure Foo;
+ end;
+
+procedure TA<T>.Foo;
+var
+ b: Integer;
+begin
+ b := (b and F1) shr F2; // pass
+ b := (b and not F1) or (b shl F2); // Error: Operator is not overloaded: "LongInt" shl "<undefined type>"
+end;
+
+begin
+end.
+
diff --git a/tests/webtbs/tw25605.pp b/tests/webtbs/tw25605.pp
new file mode 100644
index 0000000000..573e688e08
--- /dev/null
+++ b/tests/webtbs/tw25605.pp
@@ -0,0 +1,18 @@
+{ %NORUN }
+
+program tw25605; // Fatal: Compilation aborted
+
+{$MODE DELPHI}
+{$modeswitch typehelpers}
+
+type
+ TValueInt32Helper = record helper for Int32
+ const
+ C: Int32 = 0;
+ end;
+
+var
+ I: Int32;
+begin
+ I := Int32.C;
+end.
diff --git a/tests/webtbs/tw25610.pp b/tests/webtbs/tw25610.pp
new file mode 100644
index 0000000000..86bab00198
--- /dev/null
+++ b/tests/webtbs/tw25610.pp
@@ -0,0 +1,25 @@
+{ %recompile=-drecompile}
+{ %norun }
+
+{ This file was automatically created by Lazarus. Do not edit!
+ This source is only used to compile and install the package.
+ }
+
+unit tw25610;
+
+interface
+
+uses
+ uw25610a, uw25610b;
+
+implementation
+
+procedure Register;
+var
+ arr: array of byte;
+begin
+ setlength(arr,1);
+ DynArraySize(pointer(arr));
+end;
+
+end.
diff --git a/tests/webtbs/tw25781.pp b/tests/webtbs/tw25781.pp
new file mode 100644
index 0000000000..55a110ace8
--- /dev/null
+++ b/tests/webtbs/tw25781.pp
@@ -0,0 +1,11 @@
+{ %norun }
+
+{$mode delphi}
+
+begin
+ try
+ if true then
+ except
+ end
+end.
+
diff --git a/tests/webtbs/tw25869.pp b/tests/webtbs/tw25869.pp
new file mode 100644
index 0000000000..ba0d218b8f
--- /dev/null
+++ b/tests/webtbs/tw25869.pp
@@ -0,0 +1,17 @@
+{ %wpoparas=optvmts }
+{ %wpopasses=1 }
+
+{$MODE OBJFPC}
+program test;
+
+type
+ TFoo = class
+ type
+ TSubFoo = class
+ end;
+ end;
+
+begin
+ TFoo.TSubFoo.Create();
+end.
+
diff --git a/tests/webtbs/tw25895.pp b/tests/webtbs/tw25895.pp
new file mode 100644
index 0000000000..679cc4e2b7
--- /dev/null
+++ b/tests/webtbs/tw25895.pp
@@ -0,0 +1,14 @@
+{$MODE OBJFPC}
+program test;
+
+type
+ TDummy = record end;
+
+function Foo(): TDummy;
+begin
+ Result := Default(TDummy);
+end; // Fatal: Internal error 2010053111
+
+begin
+ Foo();
+end.
diff --git a/tests/webtbs/tw25929.pp b/tests/webtbs/tw25929.pp
new file mode 100644
index 0000000000..311b65aebe
--- /dev/null
+++ b/tests/webtbs/tw25929.pp
@@ -0,0 +1,25 @@
+{ %NORUN }
+
+program tw25929;
+
+{$MODE DELPHI}
+
+type
+ TR<T> = record
+ end;
+
+ TA<T> = class
+ procedure Foo;
+ end;
+
+procedure TA<T>.Foo;
+var
+ r: TR<T>;
+begin
+ r := Default(TR<T>);
+ r := Default(TR<T>); // Error: Duplicate identifier "zero_$P$PLC03_$$_TR$1"
+end;
+
+begin
+end.
+
diff --git a/tests/webtbs/tw25930.pp b/tests/webtbs/tw25930.pp
new file mode 100644
index 0000000000..ad837d00da
--- /dev/null
+++ b/tests/webtbs/tw25930.pp
@@ -0,0 +1,19 @@
+{ %norun }
+{ %opt=-Sx }
+
+{ this is file a.pas }
+
+begin try write('') finally write('') end end .
+
+{
+$
+$
+$ fpc -Mfpc -Sx a
+a.pas(3,13) Error: Identifier not found "try"
+. . . .
+$
+$
+$ fpc -Mfpc -Mexceptions a
+$
+$
+}
diff --git a/tests/webtbs/tw25931.pp b/tests/webtbs/tw25931.pp
new file mode 100644
index 0000000000..ffc436eee8
--- /dev/null
+++ b/tests/webtbs/tw25931.pp
@@ -0,0 +1,6 @@
+{ %result=3 }
+
+{$i+}
+begin
+ chdir('doestnotexistever');
+end .
diff --git a/tests/webtbs/tw25932.pp b/tests/webtbs/tw25932.pp
new file mode 100644
index 0000000000..23b5d57f46
--- /dev/null
+++ b/tests/webtbs/tw25932.pp
@@ -0,0 +1,105 @@
+{$mode delphi}
+
+uses
+ sysutils;
+
+procedure testfile;
+var
+ f: file;
+ s: shortstring;
+ a: ansistring;
+ u: unicodestring;
+begin
+ s:='a';
+ a:='b';
+ u:='c';
+
+ fillchar(f,sizeof(f),0);
+ try
+ erase(f);
+ except
+ on e: EInOutError do
+ if e.ErrorCode<>102 then
+ raise
+ end;
+
+ fillchar(f,sizeof(f),0);
+ try
+ rename(f,s);
+ except
+ on e: EInOutError do
+ if e.ErrorCode<>102 then
+ raise
+ end;
+
+ fillchar(f,sizeof(f),0);
+ try
+ rename(f,a);
+ except
+ on e: EInOutError do
+ if e.ErrorCode<>102 then
+ raise
+ end;
+
+ fillchar(f,sizeof(f),0);
+ try
+ rename(f,u);
+ except
+ on e: EInOutError do
+ if e.ErrorCode<>102 then
+ raise
+ end;
+end;
+
+procedure testtext;
+var
+ f: text;
+ s: shortstring;
+ a: ansistring;
+ u: unicodestring;
+begin
+ s:='a';
+ a:='b';
+ u:='c';
+
+ fillchar(f,sizeof(f),0);
+ try
+ erase(f);
+ except
+ on e: EInOutError do
+ if e.ErrorCode<>102 then
+ raise
+ end;
+
+ fillchar(f,sizeof(f),0);
+ try
+ rename(f,s);
+ except
+ on e: EInOutError do
+ if e.ErrorCode<>102 then
+ raise
+ end;
+
+ fillchar(f,sizeof(f),0);
+ try
+ rename(f,a);
+ except
+ on e: EInOutError do
+ if e.ErrorCode<>102 then
+ raise
+ end;
+
+ fillchar(f,sizeof(f),0);
+ try
+ rename(f,u);
+ except
+ on e: EInOutError do
+ if e.ErrorCode<>102 then
+ raise
+ end;
+end;
+
+begin
+ testfile;
+end.
+
diff --git a/tests/webtbs/tw25956.pp b/tests/webtbs/tw25956.pp
new file mode 100644
index 0000000000..92ca460b68
--- /dev/null
+++ b/tests/webtbs/tw25956.pp
@@ -0,0 +1,23 @@
+{$r+}
+program project1;
+{$t+}
+var
+ a : array of integer;
+ i : integer;
+
+procedure Foo(var c: array of integer);
+begin
+ writeln( (@c)^[1] );
+ i:=(@c)^[1];
+end;
+
+begin
+ i:=$1234;
+ SetLength(a,5);
+ a[0]:= 100;
+ a[1]:= 101;
+ foo(a);
+ if i<>101 then
+ halt(1);
+ writeln('ok');
+end.
diff --git a/tests/webtbs/tw25959.pp b/tests/webtbs/tw25959.pp
new file mode 100644
index 0000000000..f76a64664d
--- /dev/null
+++ b/tests/webtbs/tw25959.pp
@@ -0,0 +1,13 @@
+{ %NORUN }
+
+program tw25959;
+
+{$mode delphi}
+procedure test; deprecated;
+begin
+
+end;
+
+begin
+ test;
+end.
diff --git a/tests/webtbs/tw3157.pp b/tests/webtbs/tw3157.pp
index 6976c5e3aa..d229c942f6 100644
--- a/tests/webtbs/tw3157.pp
+++ b/tests/webtbs/tw3157.pp
@@ -30,7 +30,8 @@ begin
temp_float:=9/200;
try
- { This innocent instruction will raise EOverflow exception.
+ { The following expression triggers 'lost precision' condition;
+ RTL has no dedicated exception class for it and maps to EInvalidOp.
Note: if this will be changed to "Round(9/200)" then
this whole program will run with no exception
diff --git a/tests/webtbs/tw4778.pp b/tests/webtbs/tw4778.pp
index 09bfe2effb..4cd7de2eff 100644
--- a/tests/webtbs/tw4778.pp
+++ b/tests/webtbs/tw4778.pp
@@ -6,7 +6,7 @@ program Test1;
{$mode delphi}
var
- AnInt : Integer;
+ AnInt : Longint;
begin
diff --git a/tests/webtbs/tw8140h.pp b/tests/webtbs/tw8140h.pp
index a8eb57e25f..5ea3d09a7c 100644
--- a/tests/webtbs/tw8140h.pp
+++ b/tests/webtbs/tw8140h.pp
@@ -17,7 +17,7 @@ type
locateoptionsty = set of locateoptionty;
imselocate = interface(inullinterface)['{2680958F-F954-DA11-9015-00C0CA1308FF}']
- function locate(const key: integer; const field: tfield;
+ function locate(const key: longint; const field: tfield;
const options: locateoptionsty = []): locateresultty;
end;
diff --git a/tests/webtbs/uw19697.pp b/tests/webtbs/uw19697.pp
new file mode 100644
index 0000000000..255b3b175b
--- /dev/null
+++ b/tests/webtbs/uw19697.pp
@@ -0,0 +1,24 @@
+unit uw19697;
+
+{$mode objfpc}{$H+}
+
+interface
+
+type
+ generic TGenericClass<T> = class
+ private
+ class var
+ FItems: array of T;
+ public
+ class procedure Init;
+ end;
+
+implementation
+
+class procedure TGenericClass.Init;
+begin
+ SetLength(FItems, 1);
+end;
+
+end.
+
diff --git a/tests/webtbs/uw25610a.pp b/tests/webtbs/uw25610a.pp
new file mode 100644
index 0000000000..442091de86
--- /dev/null
+++ b/tests/webtbs/uw25610a.pp
@@ -0,0 +1,17 @@
+unit uw25610a;
+
+interface
+
+uses
+ uw25610b;
+
+{$ifdef recompile}
+{$error this unit should not be recompiled}
+{$endif}
+
+resourcestring
+ Foo = 'Foo';
+
+implementation
+
+end.
diff --git a/tests/webtbs/uw25610b.pp b/tests/webtbs/uw25610b.pp
new file mode 100644
index 0000000000..04357b2e14
--- /dev/null
+++ b/tests/webtbs/uw25610b.pp
@@ -0,0 +1,17 @@
+unit uw25610b;
+
+interface
+
+function DynArraySize(p : pointer): tdynarrayindex;
+
+implementation
+
+uses
+ uw25610a;
+
+function DynArraySize(p : pointer): tdynarrayindex; external name 'FPC_DYNARRAY_LENGTH';
+
+begin
+ upcase(Foo);
+end.
+
diff --git a/utils/fpcm/fpcmake.inc b/utils/fpcm/fpcmake.inc
index 9774740e4e..0485be5715 100644
--- a/utils/fpcm/fpcmake.inc
+++ b/utils/fpcm/fpcmake.inc
@@ -1,2408 +1,2360 @@
{$ifdef Delphi}
-const fpcmakeini : array[0..231] of string[240]=(
+const fpcmakeini : array[0..224] of string[240]=(
{$else Delphi}
-const fpcmakeini : array[0..231,1..240] of char=(
+const fpcmakeini : array[0..224,1..240] of char=(
{$endif Delphi}
- ';'#013#010+
- '; Templates used by fpcmake to create a Makefile from Makefile.fpc'#013+
- #010+
- ';'#013#010+
- #013#010+
- '[defines]'#013#010+
- '#####################################################################'#013+
- #010+
- '# Misc defines to be used by anyone'#013#010+
- '#############################################','#######################'+
- '#'#013#010+
- #013#010+
- '# OS categories'#013#010+
- 'BSDs = freebsd netbsd openbsd darwin'#013#010+
- 'UNIXs = linux $(BSDs) solaris qnx haiku aix'#013#010+
- 'LIMIT83fs = go32v2 os2 emx watcom msdos'#013#010+
- 'OSNeedsComspecToRunBatch = go32v2 watcom'#013#010+
- #013#010+
- '#Empty target for rules tha','t always should run. Needed if'#013#010+
- '#the target is non-phoney, and there is non-phony prereqisites.'#013#010+
- '#Then add FORCE as an prerequisite'#013#010+
- '#See gnu make manual: 4.7 Rules without Commands or Prerequisites'#013#010+
- 'FORCE:'#013#010+
- '.PHONY: FORCE'#013#010+
- #013#010+
- '[osdetect]'#013#010+
- '###','#################################################################'+
- '#'#013#010+
- '# Autodetect source OS (Linux or Dos or Windows NT or OS/2 or other)'#013+
- #010+
- '# define inUnix when running under Unix like environment'#013#010+
- '# (Linux,FreeBSD,NetBSD,OpenBS','D,Darwin,Cygwin)'#013#010+
- '# define inWinNT when running under WinNT'#013#010+
- '# define inOS2 when running under OS/2'#013#010+
- '# define inCygwin when running under Cygwin32'#013#010+
- '#####################################################################'#013+
- #010+
- #013#010+
- '# We need only / in',' the path also remove the current dir,'#013#010+
- '# also remove trailing /'#039's'#013#010+
- 'override PATH:=$(patsubst %/,%,$(subst \,/,$(PATH)))'#013#010+
- #013#010+
- '# Detect unix'#013#010+
- '# Darwin is handled specially'#013#010+
- 'ifneq ($(findstring darwin,$(OSTYPE)),)'#013#010+
- 'inUnix=1 #darwin'#013#010+
- 'SEARCHPATH:','=$(filter-out .,$(subst :, ,$(PATH)))'#013#010+
- 'else'#013#010+
- '# Determine if we'#039've a unix searchpath by looking for a ;'#013#010+
- '# that normally doesn'#039't exists in the unix PATH var.'#013#010+
- 'ifeq ($(findstring ;,$(PATH)),)'#013#010+
- 'inUnix=1'#013#010+
- 'SEARCHPATH:=$(filter-out .,$(subst :, ,','$(PATH)))'#013#010+
- 'else'#013#010+
- 'SEARCHPATH:=$(subst ;, ,$(PATH))'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Add path were make is located'#013#010+
- 'SEARCHPATH+=$(patsubst %/,%,$(subst \,/,$(dir $(MAKE))))'#013#010+
- #013#010+
- '# Search for PWD'#013#010+
- 'PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(SEARCHPATH))))'#013,#010+
- 'ifeq ($(PWD),)'#013#010+
- 'PWD:=$(strip $(wildcard $(addsuffix /pwd,$(SEARCHPATH))))'#013#010+
- 'ifeq ($(PWD),)'#013#010+
- '$(error You need the GNU utils package to use this Makefile)'#013#010+
- 'else'#013#010+
- 'PWD:=$(firstword $(PWD))'#013#010+
- 'SRCEXEEXT='#013#010+
- 'endif'#013#010+
- 'else'#013#010+
- 'PWD:=$(firstword $(PWD))'#013#010+
- 'SRC','EXEEXT=.exe'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Detect NT - NT sets OS to Windows_NT'#013#010+
- '# Detect OS/2 - OS/2 has OS2_SHELL defined'#013#010+
- 'ifndef inUnix'#013#010+
- 'ifeq ($(OS),Windows_NT)'#013#010+
- 'inWinNT=1'#013#010+
- 'else'#013#010+
- 'ifdef OS2_SHELL'#013#010+
- 'inOS2=1'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- 'else'#013#010+
- 'ifneq ($(findstring cygdrive,$(','PATH)),)'#013#010+
- 'inCygWin=1'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- #013#010+
- '# The extension of batch files / scripts'#013#010+
- 'ifdef inUnix'#013#010+
- 'SRCBATCHEXT=.sh'#013#010+
- 'else'#013#010+
- 'ifdef inOS2'#013#010+
- 'SRCBATCHEXT=.cmd'#013#010+
- 'else'#013#010+
- 'SRCBATCHEXT=.bat'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- #013#010+
- 'ifdef COMSPEC'#013#010+
- 'ifneq ($(findstring $(OS_SOURCE),$(OS','NeedsComspecToRunBatch)),)'#013#010+
- 'ifndef RUNBATCH'#013#010+
- 'RUNBATCH=$(COMSPEC) /C'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Path Separator, the subst trick is necessary for the \ that can'#039't'+
- ' exists'#013#010+
- '# at the end of a line'#013#010+
- 'ifdef inUnix'#013#010+
- 'PATHSEP=/'#013#010+
- 'else'#013#010+
- 'PATHSEP:=$(subst ','/,\,/)'#013#010+
- '# cygwin bash or sh can not handle backslashs'#013#010+
- 'ifdef inCygWin'#013#010+
- 'PATHSEP=/'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Base dir'#013#010+
- 'ifdef PWD'#013#010+
- 'BASEDIR:=$(subst \,/,$(shell $(PWD)))'#013#010+
- '# For Cygwin we need to replace /cygdrive/c/ with c:/'#013#010+
- 'ifdef inCygWin'#013#010+
- 'ifneq ($(','findstring /cygdrive/,$(BASEDIR)),)'#013#010+
- 'BASENODIR:=$(patsubst /cygdrive%,%,$(BASEDIR))'#013#010+
- 'BASEDRIVE:=$(firstword $(subst /, ,$(BASENODIR)))'#013#010+
- 'BASEDIR:=$(subst /cygdrive/$(BASEDRIVE)/,$(BASEDRIVE):/,$(BASEDIR))'#013+
- #010+
- 'endif'#013#010+
- 'endif'#013#010+
- 'else'#013#010+
- 'BASEDIR=.'#013#010+
- 'endi','f'#013#010+
- #013#010+
+ ';'#010+
+ '; Templates used by fpcmake to create a Makefile from Makefile.fpc'#010+
+ ';'#010+
+ #010+
+ '[defines]'#010+
+ '#####################################################################'#010+
+ '# Misc defines to be used by anyone'#010+
+ '####################################################','################'+
+ '#'#010+
+ #010+
+ '# OS categories'#010+
+ 'BSDs = freebsd netbsd openbsd darwin'#010+
+ 'UNIXs = linux $(BSDs) solaris qnx haiku aix'#010+
+ 'LIMIT83fs = go32v2 os2 emx watcom msdos'#010+
+ 'OSNeedsComspecToRunBatch = go32v2 watcom'#010+
+ #010+
+ '#Empty target for rules that always should',' run. Needed if'#010+
+ '#the target is non-phoney, and there is non-phony prereqisites.'#010+
+ '#Then add FORCE as an prerequisite'#010+
+ '#See gnu make manual: 4.7 Rules without Commands or Prerequisites'#010+
+ 'FORCE:'#010+
+ '.PHONY: FORCE'#010+
+ #010+
+ '[osdetect]'#010+
+ '##########################','##########################################'+
+ '#'#010+
+ '# Autodetect source OS (Linux or Dos or Windows NT or OS/2 or other)'#010+
+ '# define inUnix when running under Unix like environment'#010+
+ '# (Linux,FreeBSD,NetBSD,OpenBSD,Darwin,Cygwin)'#010+
+ '# define ','inWinNT when running under WinNT'#010+
+ '# define inOS2 when running under OS/2'#010+
+ '# define inCygwin when running under Cygwin32'#010+
+ '#####################################################################'#010+
+ #010+
+ '# We need only / in the path also remove the curren','t dir,'#010+
+ '# also remove trailing /'#039's'#010+
+ 'override PATH:=$(patsubst %/,%,$(subst \,/,$(PATH)))'#010+
+ #010+
+ '# Detect unix'#010+
+ '# Darwin is handled specially'#010+
+ 'ifneq ($(findstring darwin,$(OSTYPE)),)'#010+
+ 'inUnix=1 #darwin'#010+
+ 'SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))'#010+
+ 'el','se'#010+
+ '# Determine if we'#039've a unix searchpath by looking for a ;'#010+
+ '# that normally doesn'#039't exists in the unix PATH var.'#010+
+ 'ifeq ($(findstring ;,$(PATH)),)'#010+
+ 'inUnix=1'#010+
+ 'SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))'#010+
+ 'else'#010+
+ 'SEARCHPATH:=$(subst ;, ,$(PATH)',')'#010+
+ 'endif'#010+
+ 'endif'#010+
+ #010+
+ '# Add path were make is located'#010+
+ 'SEARCHPATH+=$(patsubst %/,%,$(subst \,/,$(dir $(MAKE))))'#010+
+ #010+
+ '# Search for PWD'#010+
+ 'PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(SEARCHPATH))))'#010+
+ 'ifeq ($(PWD),)'#010+
+ 'PWD:=$(strip $(wildcard $(addsuffix /pwd,','$(SEARCHPATH))))'#010+
+ 'ifeq ($(PWD),)'#010+
+ '$(error You need the GNU utils package to use this Makefile)'#010+
+ 'else'#010+
+ 'PWD:=$(firstword $(PWD))'#010+
+ 'SRCEXEEXT='#010+
+ 'endif'#010+
+ 'else'#010+
+ 'PWD:=$(firstword $(PWD))'#010+
+ 'SRCEXEEXT=.exe'#010+
+ 'endif'#010+
+ #010+
+ '# Detect NT - NT sets OS to Windows_NT'#010+
+ '# Detect ','OS/2 - OS/2 has OS2_SHELL defined'#010+
+ 'ifndef inUnix'#010+
+ 'ifeq ($(OS),Windows_NT)'#010+
+ 'inWinNT=1'#010+
+ 'else'#010+
+ 'ifdef OS2_SHELL'#010+
+ 'inOS2=1'#010+
+ 'endif'#010+
+ 'endif'#010+
+ 'else'#010+
+ 'ifneq ($(findstring cygdrive,$(PATH)),)'#010+
+ 'inCygWin=1'#010+
+ 'endif'#010+
+ 'endif'#010+
+ #010+
+ '# The extension of batch files / scripts'#010+
+ 'ifdef i','nUnix'#010+
+ 'SRCBATCHEXT=.sh'#010+
+ 'else'#010+
+ 'ifdef inOS2'#010+
+ 'SRCBATCHEXT=.cmd'#010+
+ 'else'#010+
+ 'SRCBATCHEXT=.bat'#010+
+ 'endif'#010+
+ 'endif'#010+
+ #010+
+ 'ifdef COMSPEC'#010+
+ 'ifneq ($(findstring $(OS_SOURCE),$(OSNeedsComspecToRunBatch)),)'#010+
+ 'ifndef RUNBATCH'#010+
+ 'RUNBATCH=$(COMSPEC) /C'#010+
+ 'endif'#010+
+ 'endif'#010+
+ 'endif'#010+
+ #010+
+ '# Path Separa','tor, the subst trick is necessary for the \ that can'#039+
+ 't exists'#010+
+ '# at the end of a line'#010+
+ 'ifdef inUnix'#010+
+ 'PATHSEP=/'#010+
+ 'else'#010+
+ 'PATHSEP:=$(subst /,\,/)'#010+
+ '# cygwin bash or sh can not handle backslashs'#010+
+ 'ifdef inCygWin'#010+
+ 'PATHSEP=/'#010+
+ 'endif'#010+
+ 'endif'#010+
+ #010+
+ '# Base dir'#010+
+ 'ifdef PW','D'#010+
+ 'BASEDIR:=$(subst \,/,$(shell $(PWD)))'#010+
+ '# For Cygwin we need to replace /cygdrive/c/ with c:/'#010+
+ 'ifdef inCygWin'#010+
+ 'ifneq ($(findstring /cygdrive/,$(BASEDIR)),)'#010+
+ 'BASENODIR:=$(patsubst /cygdrive%,%,$(BASEDIR))'#010+
+ 'BASEDRIVE:=$(firstword $(subst /, ,$(BA','SENODIR)))'#010+
+ 'BASEDIR:=$(subst /cygdrive/$(BASEDRIVE)/,$(BASEDRIVE):/,$(BASEDIR))'#010+
+ 'endif'#010+
+ 'endif'#010+
+ 'else'#010+
+ 'BASEDIR=.'#010+
+ 'endif'#010+
+ #010+
'# Echo is an internal command under OS/2 (and others), so it'#039's alw'+
- 'ays found'#013#010+
- 'ifdef inOS2'#013#010+
- 'ifndef ECHO'#013#010+
- 'ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))'+
- '))'#013#010+
- 'ifeq ($(ECHO),)'#013#010+
- 'ECHO:=$(strip $(wildcard $(addsuffix /ech','o$(SRCEXEEXT),$(SEARCHPATH)'+
- ')))'#013#010+
- 'ifeq ($(ECHO),)'#013#010+
- 'ECHO=echo'#013#010+
- 'else'#013#010+
- 'ECHO:=$(firstword $(ECHO))'#013#010+
- 'endif'#013#010+
- 'else'#013#010+
- 'ECHO:=$(firstword $(ECHO))'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- 'export ECHO'#013#010+
- 'endif'#013#010+
- #013#010+
- '[fpcdetect]'#013#010+
- '########################################################','############'+
- '#'#013#010+
- '# FPC Binary and Version Detection'#013#010+
- '#####################################################################'#013+
- #010+
- #013#010+
- '# Compatibility with old makefiles'#013#010+
- 'ifndef FPC'#013#010+
- 'ifdef PP'#013#010+
- 'FPC=$(PP)'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Try to detect the ppcXXX file',' to use by using "fpc -PB" option'#013+
- #010+
- '# to query for the default ppcXXX the fpc executable tries. When'#013#010+
- '# fpc is not found use ppc386 by default. Also when fpc -PB gives'#013#010+
- '# an error ppc386 will be used.'#013#010+
- 'ifndef FPC'#013#010+
- '# check if fpc exists'#013#010+
- 'FPCP','ROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPAT'+
- 'H))))'#013#010+
- 'ifneq ($(FPCPROG),)'#013#010+
- 'FPCPROG:=$(firstword $(FPCPROG))'#013#010+
- 'ifneq ($(CPU_TARGET),)'#013#010+
- 'FPC:=$(shell $(FPCPROG) -P$(CPU_TARGET) -PB)'#013#010+
- 'else'#013#010+
- 'FPC:=$(shell $(FPCPROG) -PB)'#013#010+
- 'endif'#013#010+
- '#',' Older fpc executables didn'#039't support it and return'#013#010+
- '# Error: Illegal processor... If found then fallback to ppc386'#013#010+
- 'ifneq ($(findstring Error,$(FPC)),)'#013#010+
+ 'ays found'#010+
+ 'ifdef inOS2'#010+
+ 'ifndef ECHO'#010+
+ 'ECHO:=$(strip $(wildcard $(','addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH'+
+ '))))'#010+
+ 'ifeq ($(ECHO),)'#010+
+ 'ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH)))'+
+ ')'#010+
+ 'ifeq ($(ECHO),)'#010+
+ 'ECHO=echo'#010+
+ 'else'#010+
+ 'ECHO:=$(firstword $(ECHO))'#010+
+ 'endif'#010+
+ 'else'#010+
+ 'ECHO:=$(firstword $(ECHO))'#010+
+ 'endif'#010+
+ 'endi','f'#010+
+ 'export ECHO'#010+
+ 'endif'#010+
+ #010+
+ '[fpcdetect]'#010+
+ '#####################################################################'#010+
+ '# FPC Binary and Version Detection'#010+
+ '#####################################################################'#010+
+ #010+
+ '# Compatibility with old makefi','les'#010+
+ 'ifndef FPC'#010+
+ 'ifdef PP'#010+
+ 'FPC=$(PP)'#010+
+ 'endif'#010+
+ 'endif'#010+
+ #010+
+ '# Try to detect the ppcXXX file to use by using "fpc -PB" option'#010+
+ '# to query for the default ppcXXX the fpc executable tries. When'#010+
+ '# fpc is not found use ppc386 by default. Also when fpc -PB giv','es'#010+
+ '# an error ppc386 will be used.'#010+
+ 'ifndef FPC'#010+
+ '# check if fpc exists'#010+
+ 'FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH)'+
+ ')))'#010+
+ 'ifneq ($(FPCPROG),)'#010+
+ 'FPCPROG:=$(firstword $(FPCPROG))'#010+
+ 'ifneq ($(CPU_TARGET),)'#010+
+ 'FPC:=$(shell $(FPCPROG',') -P$(CPU_TARGET) -PB)'#010+
+ 'else'#010+
+ 'FPC:=$(shell $(FPCPROG) -PB)'#010+
+ 'endif'#010+
+ '# Older fpc executables didn'#039't support it and return'#010+
+ '# Error: Illegal processor... If found then fallback to ppc386'#010+
+ 'ifneq ($(findstring Error,$(FPC)),)'#010+
+ 'override FPC=$(firstword ','$(strip $(wildcard $(addsuffix /ppc386$(SRC'+
+ 'EXEEXT),$(SEARCHPATH)))))'#010+
+ 'else'#010+
+ '# if the cross compiler is not found, fall back to fpc'#010+
+ 'ifeq ($(strip $(wildcard $(FPC))),)'#010+
+ 'FPC:=$(firstword $(FPCPROG))'#010+
+ 'endif'#010+
+ 'endif'#010+
+ 'else'#010+
+ '# fpc binary not found, fallb','ack to ppc386'#010+
'override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEX'+
- 'EEXT),$(SEARCHPA','TH)))))'#013#010+
- 'else'#013#010+
- '# if the cross compiler is not found, fall back to fpc'#013#010+
- 'ifeq ($(strip $(wildcard $(FPC))),)'#013#010+
- 'FPC:=$(firstword $(FPCPROG))'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- 'else'#013#010+
- '# fpc binary not found, fallback to ppc386'#013#010+
- 'override FPC=$(firstword $(strip $(wil','dcard $(addsuffix /ppc386$(SRC'+
- 'EXEEXT),$(SEARCHPATH)))))'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Get a clean executable name'#013#010+
- 'override FPC:=$(subst $(SRCEXEEXT),,$(FPC))'#013#010+
- 'override FPC:=$(subst \,/,$(FPC))$(SRCEXEEXT)'#013#010+
- #013#010+
- '# Try to find the binary direct first, oth','erwise in the path,'#013#010+
- '# if not found give an error'#013#010+
- 'FOUNDFPC:=$(strip $(wildcard $(FPC)))'#013#010+
- 'ifeq ($(FOUNDFPC),)'#013#010+
- 'FOUNDFPC=$(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))'#013#010+
- 'ifeq ($(FOUNDFPC),)'#013#010+
- '$(error Compiler $(FPC) not found)'#013#010+
- 'endif'#013,#010+
- 'endif'#013#010+
- #013#010+
- '# For 1.1 and up we can use a single compiler call to retrieve'#013#010+
- '# all needed information'#013#010+
- 'ifndef FPC_COMPILERINFO'#013#010+
- 'FPC_COMPILERINFO:=$(shell $(FPC) -iVSPTPSOTO)'#013#010+
- 'endif'#013#010+
- #013#010+
- '# FPC version'#013#010+
- 'ifndef FPC_VERSION'#013#010+
- 'FPC_VERSION:=$(word 1,$(','FPC_COMPILERINFO))'#013#010+
- 'endif'#013#010+
- #013#010+
- 'export FPC FPC_VERSION FPC_COMPILERINFO'#013#010+
- '# CHECKDEPEND should not be exported'#013#010+
- '# This should limit multiple checks'#013#010+
- 'unexport CHECKDEPEND ALLDEPENDENCIES'#013#010+
- #013#010+
- '#######################################################','#############'+
- '#'#013#010+
- '# FPC Target Detection'#013#010+
- '#####################################################################'#013+
- #010+
- #013#010+
- '# Fall back to default values if needed'#013#010+
- 'ifndef CPU_TARGET'#013#010+
- 'ifdef CPU_TARGET_DEFAULT'#013#010+
- 'CPU_TARGET=$(CPU_TARGET_DEFAULT)'#013#010+
- 'endif'#013#010,
- 'endif'#013#010+
- 'ifndef OS_TARGET'#013#010+
- 'ifdef OS_TARGET_DEFAULT'#013#010+
- 'OS_TARGET=$(OS_TARGET_DEFAULT)'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Retrieve Target/Source CPU and Target/Source OS'#013#010+
- 'ifndef CPU_SOURCE'#013#010+
- 'CPU_SOURCE:=$(word 2,$(FPC_COMPILERINFO))'#013#010+
- 'endif'#013#010+
- 'ifndef CPU_TARGET'#013#010+
- 'CPU','_TARGET:=$(word 3,$(FPC_COMPILERINFO))'#013#010+
- 'endif'#013#010+
- 'ifndef OS_SOURCE'#013#010+
- 'OS_SOURCE:=$(word 4,$(FPC_COMPILERINFO))'#013#010+
- 'endif'#013#010+
- 'ifndef OS_TARGET'#013#010+
- 'OS_TARGET:=$(word 5,$(FPC_COMPILERINFO))'#013#010+
- 'endif'#013#010+
- 'FULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)'#013#010+
- 'FULL_SOURCE=$(CPU_S','OURCE)-$(OS_SOURCE)'#013#010+
- #013#010+
- 'ifeq ($(CPU_TARGET),armeb)'#013#010+
- 'ARCH=arm'#013#010+
- 'override FPCOPT+=-Cb'#013#010+
- 'else'#013#010+
- 'ifeq ($(CPU_TARGET),armel)'#013#010+
- 'ARCH=arm'#013#010+
- 'override FPCOPT+=-CaEABI'#013#010+
- 'else'#013#010+
- 'ARCH=$(CPU_TARGET)'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- #013#010+
- 'ifeq ($(FULL_TARGET),arm-embedded)'#013#010+
- 'ifeq ($(S','UBARCH),)'#013#010+
- '# we don'#039't add a default here, people should explicitly add the SU'+
- 'BARCH'#013#010+
+ 'EEXT),$(SEARCHPATH)))))'#010+
+ 'endif'#010+
+ 'endif'#010+
+ #010+
+ '# Get a clean executable name'#010+
+ 'override FPC:=$(subst $(SRCEXEEXT),,$(FPC))'#010+
+ 'override FPC:=$(subst \,/,$(FPC))$(SRCEXEEXT)',#010+
+ #010+
+ '# Try to find the binary direct first, otherwise in the path,'#010+
+ '# if not found give an error'#010+
+ 'FOUNDFPC:=$(strip $(wildcard $(FPC)))'#010+
+ 'ifeq ($(FOUNDFPC),)'#010+
+ 'FOUNDFPC=$(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))'#010+
+ 'ifeq ($(FOUNDFPC),)'#010+
+ '$(er','ror Compiler $(FPC) not found)'#010+
+ 'endif'#010+
+ 'endif'#010+
+ #010+
+ '# For 1.1 and up we can use a single compiler call to retrieve'#010+
+ '# all needed information'#010+
+ 'ifndef FPC_COMPILERINFO'#010+
+ 'FPC_COMPILERINFO:=$(shell $(FPC) -iVSPTPSOTO)'#010+
+ 'endif'#010+
+ #010+
+ '# FPC version'#010+
+ 'ifndef FPC_VERSIO','N'#010+
+ 'FPC_VERSION:=$(word 1,$(FPC_COMPILERINFO))'#010+
+ 'endif'#010+
+ #010+
+ 'export FPC FPC_VERSION FPC_COMPILERINFO'#010+
+ '# CHECKDEPEND should not be exported'#010+
+ '# This should limit multiple checks'#010+
+ 'unexport CHECKDEPEND ALLDEPENDENCIES'#010+
+ #010+
+ '#####################################','###############################'+
+ '#'#010+
+ '# FPC Target Detection'#010+
+ '#####################################################################'#010+
+ #010+
+ '# Fall back to default values if needed'#010+
+ 'ifndef CPU_TARGET'#010+
+ 'ifdef CPU_TARGET_DEFAULT'#010+
+ 'CPU_TARGET=$(CPU_TARGET_DEFAUL','T)'#010+
+ 'endif'#010+
+ 'endif'#010+
+ 'ifndef OS_TARGET'#010+
+ 'ifdef OS_TARGET_DEFAULT'#010+
+ 'OS_TARGET=$(OS_TARGET_DEFAULT)'#010+
+ 'endif'#010+
+ 'endif'#010+
+ #010+
+ '# Retrieve Target/Source CPU and Target/Source OS'#010+
+ 'ifndef CPU_SOURCE'#010+
+ 'CPU_SOURCE:=$(word 2,$(FPC_COMPILERINFO))'#010+
+ 'endif'#010+
+ 'ifndef CPU_TARGET'#010+
+ 'CPU_TA','RGET:=$(word 3,$(FPC_COMPILERINFO))'#010+
+ 'endif'#010+
+ 'ifndef OS_SOURCE'#010+
+ 'OS_SOURCE:=$(word 4,$(FPC_COMPILERINFO))'#010+
+ 'endif'#010+
+ 'ifndef OS_TARGET'#010+
+ 'OS_TARGET:=$(word 5,$(FPC_COMPILERINFO))'#010+
+ 'endif'#010+
+ 'FULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)'#010+
+ 'FULL_SOURCE=$(CPU_SOURCE)-$(OS_','SOURCE)'#010+
+ #010+
+ 'ifeq ($(CPU_TARGET),armeb)'#010+
+ 'ARCH=arm'#010+
+ 'override FPCOPT+=-Cb'#010+
+ 'else'#010+
+ 'ifeq ($(CPU_TARGET),armel)'#010+
+ 'ARCH=arm'#010+
+ 'override FPCOPT+=-CaEABI'#010+
+ 'else'#010+
+ 'ARCH=$(CPU_TARGET)'#010+
+ 'endif'#010+
+ 'endif'#010+
+ #010+
+ 'ifeq ($(FULL_TARGET),arm-embedded)'#010+
+ 'ifeq ($(SUBARCH),)'#010+
+ '# we don'#039't add a ','default here, people should explicitly add the '+
+ 'SUBARCH'#010+
'$(error When compiling for arm-embedded, a sub-architecture (e.g. SUBA'+
- 'RCH=armv4t or SUBARCH=armv7m) must be defined)'#013#010+
- 'endif'#013#010+
- 'override FPCOPT+=-Cp$(SUBARCH)'#013,#010+
- 'endif'#013#010+
- #013#010+
- '# Full name of the target, including CPU and OS. For OSs limited'#013#010+
- '# to 8.3 we only use the target OS'#013#010+
- 'ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)'#013#010+
- 'TARGETSUFFIX=$(OS_TARGET)'#013#010+
- 'SOURCESUFFIX=$(OS_SOURCE)'#013#010+
- 'else'#013#010+
- 'ifneq ($(findstrin','g $(OS_TARGET),$(LIMIT83fs)),)'#013#010+
- 'TARGETSUFFIX=$(OS_TARGET)'#013#010+
- 'else'#013#010+
- 'TARGETSUFFIX=$(FULL_TARGET)'#013#010+
- 'endif'#013#010+
- 'SOURCESUFFIX=$(FULL_SOURCE)'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Cross compile flag'#013#010+
- 'ifneq ($(FULL_TARGET),$(FULL_SOURCE))'#013#010+
- 'CROSSCOMPILE=1'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Check if the ','Makefile supports this target, but not'#013#010+
- '# when the make target is to rebuild the makefile'#013#010+
- 'ifeq ($(findstring makefile,$(MAKECMDGOALS)),)'#013#010+
- 'ifeq ($(findstring $(FULL_TARGET),$(MAKEFILETARGETS)),)'#013#010+
- '$(error The Makefile doesn'#039't support target ','$(FULL_TARGET), plea'+
- 'se run fpcmake first)'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- #013#010+
- #013#010+
+ 'RCH=armv4t or SUBARCH=armv7m) must be defined)'#010+
+ 'endif'#010+
+ 'override FPCOPT+=-Cp$(SUBARCH)'#010+
+ 'endif'#010+
+ #010+
+ 'ifeq ($(FULL_TARGET),mip','sel-embedded)'#010+
+ 'ifeq ($(SUBARCH),)'#010+
+ '# we don'#039't add a default here, people should explicitly add the SU'+
+ 'BARCH'#010+
+ '$(error When compiling for mipsel-embedded, a sub-architecture (e.g. S'+
+ 'UBARCH=pic32mx) must be defined)'#010+
+ 'endif'#010+
+ 'override FPCOPT+=-Cp$(SUBA','RCH)'#010+
+ 'endif'#010+
+ #010+
+ '# Full name of the target, including CPU and OS. For OSs limited'#010+
+ '# to 8.3 we only use the target OS'#010+
+ 'ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)'#010+
+ 'TARGETSUFFIX=$(OS_TARGET)'#010+
+ 'SOURCESUFFIX=$(OS_SOURCE)'#010+
+ 'else'#010+
+ 'ifneq ($(findstring $(','OS_TARGET),$(LIMIT83fs)),)'#010+
+ 'TARGETSUFFIX=$(OS_TARGET)'#010+
+ 'else'#010+
+ 'TARGETSUFFIX=$(FULL_TARGET)'#010+
+ 'endif'#010+
+ 'SOURCESUFFIX=$(FULL_SOURCE)'#010+
+ 'endif'#010+
+ #010+
+ '# Cross compile flag'#010+
+ 'ifneq ($(FULL_TARGET),$(FULL_SOURCE))'#010+
+ 'CROSSCOMPILE=1'#010+
+ 'endif'#010+
+ #010+
+ '# Check if the Makefile supports',' this target, but not'#010+
+ '# when the make target is to rebuild the makefile'#010+
+ 'ifeq ($(findstring makefile,$(MAKECMDGOALS)),)'#010+
+ 'ifeq ($(findstring $(FULL_TARGET),$(MAKEFILETARGETS)),)'#010+
+ '$(error The Makefile doesn'#039't support target $(FULL_TARGET), pleas',
+ 'e run fpcmake first)'#010+
+ 'endif'#010+
+ 'endif'#010+
+ #010+
+ #010+
'# Detect BSD, since BSD uses a slightly different directory hierarchy.'+
- #013#010+
- 'ifneq ($(findstring $(OS_TARGET),$(BSDs)),)'#013#010+
- 'BSDhier=1'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Detect Linux, will also use its own dire','ctory hierarchy.'#013#010+
- 'ifeq ($(OS_TARGET),linux)'#013#010+
- 'linuxHier=1'#013#010+
- 'endif'#013#010+
- #013#010+
- 'ifndef CROSSCOMPILE'#013#010+
- 'BUILDFULLNATIVE=1'#013#010+
- 'export BUILDFULLNATIVE'#013#010+
- 'endif'#013#010+
- #013#010+
- 'ifdef BUILDFULLNATIVE'#013#010+
- 'BUILDNATIVE=1'#013#010+
- 'export BUILDNATIVE'#013#010+
- 'endif'#013#010+
- #013#010+
- 'export OS_TARGET OS_SOURCE ARCH C','PU_TARGET CPU_SOURCE FULL_TARGET FU'+
- 'LL_SOURCE TARGETSUFFIX SOURCESUFFIX CROSSCOMPILE'#013#010+
- #013#010+
- '[fpmakefpcdetect]'#013#010+
- '#####################################################################'#013+
- #010+
- '# FPC Binary and Version Detection'#013#010+
- '###########################','#########################################'+
- '#'#013#010+
- '# If FPCFPMAKE is not set and we'#039're cross-compiling, try to find a'+
- #013#010+
- '# native compiler.'#013#010+
- 'ifndef FPCFPMAKE'#013#010+
- #013#010+
- 'ifdef CROSSCOMPILE'#013#010+
- '# Search for the (native) ppc compiler which is used to do the lates','t'+
- ' build'#013#010+
- '# of the native rtl'#013#010+
- #013#010+
- 'ifeq ($(strip $(wildcard $(addsuffix /compiler/ppc$(SRCEXEEXT),$(FPCDI'+
- 'R)))),)'#013#010+
+ #010+
+ 'ifneq ($(findstring $(OS_TARGET),$(BSDs)),)'#010+
+ 'BSDhier=1'#010+
+ 'endif'#010+
+ #010+
+ '# Detect Linux, will also use its own directory hierarchy.'#010+
+ 'ifeq ($(OS_TAR','GET),linux)'#010+
+ 'linuxHier=1'#010+
+ 'endif'#010+
+ #010+
+ 'ifndef CROSSCOMPILE'#010+
+ 'BUILDFULLNATIVE=1'#010+
+ 'export BUILDFULLNATIVE'#010+
+ 'endif'#010+
+ #010+
+ 'ifdef BUILDFULLNATIVE'#010+
+ 'BUILDNATIVE=1'#010+
+ 'export BUILDNATIVE'#010+
+ 'endif'#010+
+ #010+
+ 'export OS_TARGET OS_SOURCE ARCH CPU_TARGET CPU_SOURCE FULL_TARGET FULL'+
+ '_SOURCE T','ARGETSUFFIX SOURCESUFFIX CROSSCOMPILE'#010+
+ #010+
+ '[fpmakefpcdetect]'#010+
+ '#####################################################################'#010+
+ '# FPC Binary and Version Detection'#010+
+ '#####################################################################'#010+
+ '# If FPC','FPMAKE is not set and we'#039're cross-compiling, try to find'+
+ ' a'#010+
+ '# native compiler.'#010+
+ 'ifndef FPCFPMAKE'#010+
+ #010+
+ 'ifdef CROSSCOMPILE'#010+
+ '# Search for the (native) ppc compiler which is used to do the latest '+
+ 'build'#010+
+ '# of the native rtl'#010+
+ #010+
+ 'ifeq ($(strip $(wildcard $(a','ddsuffix /compiler/ppc$(SRCEXEEXT),$(FPC'+
+ 'DIR)))),)'#010+
'# If that compiler is not found, use the common, installed native comp'+
- 'iler'#013#010+
- '# Note that in this case FPCFPMAKE is not exported, b','ecause it could'+
- ' be that'#013#010+
- '# a more suitable compiler is compiled later on'#013#010+
- '# check if fpc exists'#013#010+
+ 'iler'#010+
+ '# Note that in this case FPCFPMAKE is not exported, because it could b'+
+ 'e that'#010+
+ '# a more suitable compiler is compiled',' later on'#010+
+ '# check if fpc exists'#010+
'FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH)'+
- ')))'#013#010+
- 'ifneq ($(FPCPROG),)'#013#010+
- 'FPCPROG:=$(firstword $(FPCPROG))'#013#010+
- 'FPCFPMAKE:=$(','shell $(FPCPROG) -PB)'#013#010+
- '# if a native compiler is not found, fall back to fpc'#013#010+
- 'ifeq ($(strip $(wildcard $(FPCFPMAKE))),)'#013#010+
- 'FPCFPMAKE:=$(firstword $(FPCPROG))'#013#010+
- 'endif'#013#010+
- 'else'#013#010+
- '# fpc binary not found, fallback to ppc386'#013#010+
- 'override FPCFPMAKE=$(first','word $(strip $(wildcard $(addsuffix /ppc38'+
- '6$(SRCEXEEXT),$(SEARCHPATH)))))'#013#010+
- 'endif'#013#010+
- 'else'#013#010+
+ ')))'#010+
+ 'ifneq ($(FPCPROG),)'#010+
+ 'FPCPROG:=$(firstword $(FPCPROG))'#010+
+ 'FPCFPMAKE:=$(shell $(FPCPROG) -PB)'#010+
+ '# if a native compiler is not found, fall back',' to fpc'#010+
+ 'ifeq ($(strip $(wildcard $(FPCFPMAKE))),)'#010+
+ 'FPCFPMAKE:=$(firstword $(FPCPROG))'#010+
+ 'endif'#010+
+ 'else'#010+
+ '# fpc binary not found, fallback to ppc386'#010+
+ 'override FPCFPMAKE=$(firstword $(strip $(wildcard $(addsuffix /ppc386$'+
+ '(SRCEXEEXT),$(SEARCHPATH)))))'#010+
+ 'e','ndif'#010+
+ 'else'#010+
'# Use the ppc compiler. Because the path to the compiler is relative, '+
- 'do not'#013#010+
- '# evaluate the variable here, but do that on the fly.'#013#010+
- 'FPCFPMAKE=$(strip $','(wildcard $(addsuffix /compiler/ppc$(SRCEXEEXT),$'+
- '(FPCDIR))))'#013#010+
- 'FPMAKE_SKIP_CONFIG=-n'#013#010+
- 'export FPCFPMAKE'#013#010+
- 'export FPMAKE_SKIP_CONFIG'#013#010+
- 'endif'#013#010+
- #013#010+
- 'else'#013#010+
- 'FPMAKE_SKIP_CONFIG=-n'#013#010+
- 'FPCFPMAKE=$(FPC)'#013#010+
- 'endif'#013#010+
- #013#010+
- 'endif'#013#010+
- #013#010+
- #013#010+
- '[fpcdircheckenv]'#013#010+
- '################','####################################################'+
- '#'#013#010+
- '# FPCDIR Setting'#013#010+
- '#####################################################################'#013+
- #010+
- #013#010+
- '# Test FPCDIR to look if the RTL dir exists'#013#010+
- 'ifdef FPCDIR'#013#010+
- 'override FPCDIR:=$(subst \,/,$(FPCD','IR))'#013#010+
- 'ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)'#013#010+
- 'override FPCDIR=wrong'#013#010+
- 'endif'#013#010+
- 'else'#013#010+
- 'override FPCDIR=wrong'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Default FPCDIR from Makefile.fpc'#013#010+
- 'ifdef DEFAULT_FPCDIR'#013#010+
- 'ifeq ($(FPCDIR),wrong)'#013#010+
- 'override FPCDIR:=$(subst \,/,','$(DEFAULT_FPCDIR))'#013#010+
- 'ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)'#013#010+
- 'override FPCDIR=wrong'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- #013#010+
- '[fpcdirdetect]'#013#010+
- '# Detect FPCDIR'#013#010+
- 'ifeq ($(FPCDIR),wrong)'#013#010+
- 'ifdef inUnix'#013#010+
- 'override FPCDIR=/usr/local/lib/fpc/$(FPC_VERSION',')'#013#010+
- 'ifeq ($(wildcard $(FPCDIR)/units),)'#013#010+
- 'override FPCDIR=/usr/lib/fpc/$(FPC_VERSION)'#013#010+
- 'endif'#013#010+
- 'else'#013#010+
- 'override FPCDIR:=$(subst /$(FPC),,$(firstword $(strip $(wildcard $(add'+
- 'suffix /$(FPC),$(SEARCHPATH))))))'#013#010+
- 'override FPCDIR:=$(FPCDIR)/..'#013#010+
- 'ifeq (','$(wildcard $(addprefix $(FPCDIR)/,rtl units)),)'#013#010+
- 'override FPCDIR:=$(FPCDIR)/..'#013#010+
- 'ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)'#013#010+
- 'override FPCDIR:=$(BASEDIR)'#013#010+
- 'ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)'#013#010+
- 'override FPCDIR=c:/pp',#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Cross binaries dir'#013#010+
- 'ifndef CROSSBINDIR'#013#010+
- 'CROSSBINDIR:=$(wildcard $(FPCDIR)/bin/$(TARGETSUFFIX))'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Default binutils prefix for cross compile when the'#013#010+
- '# crossbindir is not set (except for Dar','win)'#013#010+
- 'ifneq ($(findstring $(OS_TARGET),darwin iphonesim),)'#013#010+
- 'ifeq ($(OS_SOURCE),darwin)'#013#010+
- 'DARWIN2DARWIN=1'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- #013#010+
- 'ifndef BINUTILSPREFIX'#013#010+
- 'ifndef CROSSBINDIR'#013#010+
- 'ifdef CROSSCOMPILE'#013#010+
- 'ifneq ($(OS_TARGET),msdos)'#013#010+
- 'ifndef DARWIN2DARWIN'#013#010+
- 'ifneq ','($(CPU_TARGET),jvm)'#013#010+
- 'BINUTILSPREFIX=$(CPU_TARGET)-$(OS_TARGET)-'#013#010+
- #013#010+
- '# For Android use standard NDK prefixes'#013#010+
- 'ifeq ($(OS_TARGET),android)'#013#010+
- 'ifeq ($(CPU_TARGET),arm)'#013#010+
- 'BINUTILSPREFIX=arm-linux-androideabi-'#013#010+
- 'else'#013#010+
- 'ifeq ($(CPU_TARGET),i386)'#013#010+
- 'BINUT','ILSPREFIX=i686-linux-android-'#013#010+
- 'else'#013#010+
- 'ifeq ($(CPU_TARGET),mipsel)'#013#010+
- 'BINUTILSPREFIX=mipsel-linux-android-'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- #013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- 'else'#013#010+
- 'BINUTILSPREFIX=$(OS_TARGET)-'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Try first the full targe','t name, otherwise try only'#013#010+
- '# the OS for backwards compatibility'#013#010+
- 'UNITSDIR:=$(wildcard $(FPCDIR)/units/$(TARGETSUFFIX))'#013#010+
- 'ifeq ($(UNITSDIR),)'#013#010+
- 'UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET))'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Packages dir'#013#010+
- 'PACKAGESDIR:=$(wildca','rd $(FPCDIR) $(FPCDIR)/packages $(FPCDIR)/packa'+
- 'ges/base $(FPCDIR)/packages/extra)'#013#010+
- #013#010+
- #013#010+
- '[shelltools]'#013#010+
- '#####################################################################'#013+
- #010+
- '# Shell tools'#013#010+
- '#####################################################','###############'+
- '#'#013#010+
- #013#010+
- '# Echo that can redir (must be able run in the default OS shell)'#013#010+
- 'ifndef ECHOREDIR'#013#010+
- 'ifndef inUnix'#013#010+
- 'ECHOREDIR=echo'#013#010+
- 'else'#013#010+
- 'ECHOREDIR=$(ECHO)'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- #013#010+
- '# To copy pograms'#013#010+
- 'ifndef COPY'#013#010+
- 'COPY:=$(CPPROG) -fp'#013#010+
- 'endif'#013#010+
- #013#010+
- '# ','Copy a whole tree'#013#010+
- 'ifndef COPYTREE'#013#010+
- 'COPYTREE:=$(CPPROG) -Rfp'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Copy a whole tree'#013#010+
- 'ifndef MKDIRTREE'#013#010+
- 'MKDIRTREE:=$(MKDIRPROG) -p'#013#010+
- 'endif'#013#010+
- #013#010+
- '# To move pograms'#013#010+
- 'ifndef MOVE'#013#010+
- 'MOVE:=$(MVPROG) -f'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Check delete program'#013#010+
- 'ifndef D','EL'#013#010+
- 'DEL:=$(RMPROG) -f'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Check deltree program'#013#010+
- 'ifndef DELTREE'#013#010+
- 'DELTREE:=$(RMPROG) -rf'#013#010+
- 'endif'#013#010+
- #013#010+
- '# To install files'#013#010+
- 'ifndef INSTALL'#013#010+
- 'ifdef inUnix'#013#010+
- 'INSTALL:=$(GINSTALL) -c -m 644'#013#010+
- 'else'#013#010+
- 'INSTALL:=$(COPY)'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- #013#010+
- '# To install',' programs'#013#010+
- 'ifndef INSTALLEXE'#013#010+
- 'ifdef inUnix'#013#010+
- 'INSTALLEXE:=$(GINSTALL) -c -m 755'#013#010+
- 'else'#013#010+
- 'INSTALLEXE:=$(COPY)'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- #013#010+
- '# To make a directory.'#013#010+
- 'ifndef MKDIR'#013#010+
- 'MKDIR:=$(GINSTALL) -m 755 -d'#013#010+
- 'endif'#013#010+
- #013#010+
- 'export ECHOREDIR COPY COPYTREE MOVE DEL D','ELTREE INSTALL INSTALLEXE M'+
- 'KDIR'#013#010+
- #013#010+
- #013#010+
- '[defaultdirs]'#013#010+
- '#####################################################################'#013+
- #010+
- '# Default Directories'#013#010+
- '#####################################################################'#013+
- #010+
- #013#010+
- '# Units dir'#013#010+
- 'ifdef RE','QUIRE_UNITSDIR'#013#010+
- 'override UNITSDIR+=$(REQUIRE_UNITSDIR)'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Units dir'#013#010+
- 'ifdef REQUIRE_PACKAGESDIR'#013#010+
- 'override PACKAGESDIR+=$(REQUIRE_PACKAGESDIR)'#013#010+
- 'endif'#013#010+
- #013#010+
- #013#010+
- '# Unixes use unix dirs with /usr/bin, /usr/lib'#013#010+
- '# When zipping use the target ','os default, when normal install then'#013+
- #010+
- '# use the source os as default'#013#010+
- 'ifdef ZIPINSTALL'#013#010+
- '# Zipinstall'#013#010+
- 'ifneq ($(findstring $(OS_TARGET),$(UNIXs)),)'#013#010+
- 'UNIXHier=1'#013#010+
- 'endif'#013#010+
- 'else'#013#010+
- '# Normal install'#013#010+
- 'ifneq ($(findstring $(OS_SOURCE),$(UNIXs)),)'#013#010+
- 'UNI','XHier=1'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- #013#010+
- '# When install prefix is not set try to use prefix'#013#010+
- 'ifndef INSTALL_PREFIX'#013#010+
- 'ifdef PREFIX'#013#010+
- 'INSTALL_PREFIX=$(PREFIX)'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- #013#010+
- '# set the prefix directory where to install everything'#013#010+
- 'ifndef INSTALL_PREFIX'#013#010+
- 'ifdef',' UNIXHier'#013#010+
- 'INSTALL_PREFIX=/usr/local'#013#010+
- 'else'#013#010+
- 'ifdef INSTALL_FPCPACKAGE'#013#010+
- 'INSTALL_BASEDIR:=/pp'#013#010+
- 'else'#013#010+
- 'INSTALL_BASEDIR:=/$(PACKAGE_NAME)'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- 'export INSTALL_PREFIX'#013#010+
- #013#010+
- '# Export also INSTALL_SOURCESUBDIR set so it will be'#013#010+
- '# used ','recursively for all subdirs'#013#010+
- 'ifdef INSTALL_FPCSUBDIR'#013#010+
- 'export INSTALL_FPCSUBDIR'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Where to place the resulting zip files'#013#010+
- 'ifndef DIST_DESTDIR'#013#010+
- 'DIST_DESTDIR:=$(BASEDIR)'#013#010+
- 'endif'#013#010+
- 'export DIST_DESTDIR'#013#010+
- #013#010+
- '# EXE/PPU Target directories'#013#010+
- 'if','ndef COMPILER_UNITTARGETDIR'#013#010+
- 'ifdef PACKAGEDIR_MAIN'#013#010+
- 'COMPILER_UNITTARGETDIR=$(PACKAGEDIR_MAIN)/units/$(TARGETSUFFIX)'#013#010+
- 'else'#013#010+
- 'COMPILER_UNITTARGETDIR=units/$(TARGETSUFFIX)'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- 'ifndef COMPILER_TARGETDIR'#013#010+
- 'COMPILER_TARGETDIR=.'#013#010+
- 'endif'#013#010+
- #013,#010+
- #013#010+
- '#####################################################################'#013+
- #010+
- '# Install Directories'#013#010+
- '#####################################################################'#013+
- #010+
- #013#010+
- '# set the base directory where to install everything'#013#010+
- 'ifndef INSTALL_B','ASEDIR'#013#010+
- 'ifdef UNIXHier'#013#010+
- 'ifdef INSTALL_FPCPACKAGE'#013#010+
- 'INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/fpc/$(FPC_VERSION)'#013#010+
- 'else'#013#010+
- 'INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/$(PACKAGE_NAME)'#013#010+
- 'endif'#013#010+
- 'else'#013#010+
- 'INSTALL_BASEDIR:=$(INSTALL_PREFIX)'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- #013#010+
- '# se','t the directory where to install the binaries'#013#010+
- 'ifndef INSTALL_BINDIR'#013#010+
- 'ifdef UNIXHier'#013#010+
- 'INSTALL_BINDIR:=$(INSTALL_PREFIX)/bin'#013#010+
- 'else'#013#010+
- 'INSTALL_BINDIR:=$(INSTALL_BASEDIR)/bin'#013#010+
- '# for FPC packages install the binaries under their target subdir'#013#010+
- 'if','def INSTALL_FPCPACKAGE'#013#010+
- 'ifdef CROSSCOMPILE'#013#010+
- 'ifdef CROSSINSTALL'#013#010+
- 'INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(SOURCESUFFIX)'#013#010+
- 'else'#013#010+
- 'INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX)'#013#010+
- 'endif'#013#010+
- 'else'#013#010+
- 'INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX)'#013#010+
- 'endi','f'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- #013#010+
- '# set the directory where to install the units.'#013#010+
- 'ifndef INSTALL_UNITDIR'#013#010+
- 'INSTALL_UNITDIR:=$(INSTALL_BASEDIR)/units/$(TARGETSUFFIX)'#013#010+
- 'ifdef INSTALL_FPCPACKAGE'#013#010+
- 'ifdef PACKAGE_NAME'#013#010+
- 'INSTALL_UNITDIR:=$(INSTALL_UNITDIR)/','$(PACKAGE_NAME)'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Where to install shared libraries'#013#010+
- 'ifndef INSTALL_LIBDIR'#013#010+
- 'ifdef UNIXHier'#013#010+
- 'INSTALL_LIBDIR:=$(INSTALL_PREFIX)/lib'#013#010+
- 'else'#013#010+
- 'INSTALL_LIBDIR:=$(INSTALL_UNITDIR)'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Where the source files wi','ll be stored'#013#010+
- 'ifndef INSTALL_SOURCEDIR'#013#010+
- 'ifdef UNIXHier'#013#010+
- 'ifdef BSDhier'#013#010+
- 'SRCPREFIXDIR=share/src'#013#010+
- 'else'#013#010+
- 'ifdef linuxHier'#013#010+
- 'SRCPREFIXDIR=share/src'#013#010+
- 'else'#013#010+
- 'SRCPREFIXDIR=src'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- 'ifdef INSTALL_FPCPACKAGE'#013#010+
- 'ifdef INSTALL_FPCSUBDIR'#013#010+
- 'INSTALL_S','OURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSI'+
- 'ON)/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)'#013#010+
- 'else'#013#010+
+ 'do not'#010+
+ '# evaluate the variable here, but do that on the fly.'#010+
+ 'FPCFPMAKE=$(strip $(wildcard $(addsuffix /compiler/ppc$(SRCEXEEXT),$(F'+
+ 'PCDIR))))'#010+
+ 'FPMAKE_SKIP_CONFIG=','-n'#010+
+ 'export FPCFPMAKE'#010+
+ 'export FPMAKE_SKIP_CONFIG'#010+
+ 'endif'#010+
+ #010+
+ 'else'#010+
+ 'FPMAKE_SKIP_CONFIG=-n'#010+
+ 'FPCFPMAKE=$(FPC)'#010+
+ 'endif'#010+
+ #010+
+ 'endif'#010+
+ #010+
+ #010+
+ '[fpcdircheckenv]'#010+
+ '#####################################################################'#010+
+ '# FPCDIR Setting'#010+
+ '########################','############################################'+
+ '#'#010+
+ #010+
+ '# Test FPCDIR to look if the RTL dir exists'#010+
+ 'ifdef FPCDIR'#010+
+ 'override FPCDIR:=$(subst \,/,$(FPCDIR))'#010+
+ 'ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)'#010+
+ 'override FPCDIR=wrong'#010+
+ 'endif'#010+
+ 'else'#010+
+ 'override ','FPCDIR=wrong'#010+
+ 'endif'#010+
+ #010+
+ '# Default FPCDIR from Makefile.fpc'#010+
+ 'ifdef DEFAULT_FPCDIR'#010+
+ 'ifeq ($(FPCDIR),wrong)'#010+
+ 'override FPCDIR:=$(subst \,/,$(DEFAULT_FPCDIR))'#010+
+ 'ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)'#010+
+ 'override FPCDIR=wrong'#010+
+ 'endif'#010+
+ 'endif'#010+
+ 'endif',#010+
+ #010+
+ '[fpcdirdetect]'#010+
+ '# Detect FPCDIR'#010+
+ 'ifeq ($(FPCDIR),wrong)'#010+
+ 'ifdef inUnix'#010+
+ 'override FPCDIR=/usr/local/lib/fpc/$(FPC_VERSION)'#010+
+ 'ifeq ($(wildcard $(FPCDIR)/units),)'#010+
+ 'override FPCDIR=/usr/lib/fpc/$(FPC_VERSION)'#010+
+ 'endif'#010+
+ 'else'#010+
+ 'override FPCDIR:=$(subst /$(FP','C),,$(firstword $(strip $(wildcard $(a'+
+ 'ddsuffix /$(FPC),$(SEARCHPATH))))))'#010+
+ 'override FPCDIR:=$(FPCDIR)/..'#010+
+ 'ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)'#010+
+ 'override FPCDIR:=$(FPCDIR)/..'#010+
+ 'ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),',')'#010+
+ 'override FPCDIR:=$(BASEDIR)'#010+
+ 'ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)'#010+
+ 'override FPCDIR=c:/pp'#010+
+ 'endif'#010+
+ 'endif'#010+
+ 'endif'#010+
+ 'endif'#010+
+ 'endif'#010+
+ #010+
+ '# Cross binaries dir'#010+
+ 'ifndef CROSSBINDIR'#010+
+ 'CROSSBINDIR:=$(wildcard $(FPCDIR)/bin/$(TARGETSUFFIX))'#010+
+ 'endif'#010+
+ #010+
+ '#',' Default binutils prefix for cross compile when the'#010+
+ '# crossbindir is not set (except for Darwin)'#010+
+ 'ifneq ($(findstring $(OS_TARGET),darwin iphonesim),)'#010+
+ 'ifeq ($(OS_SOURCE),darwin)'#010+
+ 'DARWIN2DARWIN=1'#010+
+ 'endif'#010+
+ 'endif'#010+
+ #010+
+ 'ifndef BINUTILSPREFIX'#010+
+ 'ifndef CROSS','BINDIR'#010+
+ 'ifdef CROSSCOMPILE'#010+
+ 'ifneq ($(OS_TARGET),msdos)'#010+
+ 'ifndef DARWIN2DARWIN'#010+
+ 'ifneq ($(CPU_TARGET),jvm)'#010+
+ 'BINUTILSPREFIX=$(CPU_TARGET)-$(OS_TARGET)-'#010+
+ #010+
+ '# For Android use standard NDK prefixes'#010+
+ 'ifeq ($(OS_TARGET),android)'#010+
+ 'ifeq ($(CPU_TARGET),arm)'#010+
+ 'BIN','UTILSPREFIX=arm-linux-androideabi-'#010+
+ 'else'#010+
+ 'ifeq ($(CPU_TARGET),i386)'#010+
+ 'BINUTILSPREFIX=i686-linux-android-'#010+
+ 'else'#010+
+ 'ifeq ($(CPU_TARGET),mipsel)'#010+
+ 'BINUTILSPREFIX=mipsel-linux-android-'#010+
+ 'endif'#010+
+ 'endif'#010+
+ 'endif'#010+
+ 'endif'#010+
+ #010+
+ 'endif'#010+
+ 'endif'#010+
+ 'else'#010+
+ 'BINUTILSPREFIX=$(OS_TARGET)','-'#010+
+ 'endif'#010+
+ 'endif'#010+
+ 'endif'#010+
+ 'endif'#010+
+ #010+
+ '# Try first the full target name, otherwise try only'#010+
+ '# the OS for backwards compatibility'#010+
+ 'UNITSDIR:=$(wildcard $(FPCDIR)/units/$(TARGETSUFFIX))'#010+
+ 'ifeq ($(UNITSDIR),)'#010+
+ 'UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET)',')'#010+
+ 'endif'#010+
+ #010+
+ '# Packages dir'#010+
+ 'PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages $(FPCDIR)/package'+
+ 's/base $(FPCDIR)/packages/extra)'#010+
+ #010+
+ #010+
+ '[shelltools]'#010+
+ '#####################################################################'#010+
+ '# Shell tools'#010+
+ '##############','######################################################'+
+ '#'#010+
+ #010+
+ '# Echo that can redir (must be able run in the default OS shell)'#010+
+ 'ifndef ECHOREDIR'#010+
+ 'ifndef inUnix'#010+
+ 'ECHOREDIR=echo'#010+
+ 'else'#010+
+ 'ECHOREDIR=$(ECHO)'#010+
+ 'endif'#010+
+ 'endif'#010+
+ #010+
+ '# To copy pograms'#010+
+ 'ifndef COPY'#010+
+ 'COPY:=','$(CPPROG) -fp'#010+
+ 'endif'#010+
+ #010+
+ '# Copy a whole tree'#010+
+ 'ifndef COPYTREE'#010+
+ 'COPYTREE:=$(CPPROG) -Rfp'#010+
+ 'endif'#010+
+ #010+
+ '# Copy a whole tree'#010+
+ 'ifndef MKDIRTREE'#010+
+ 'MKDIRTREE:=$(MKDIRPROG) -p'#010+
+ 'endif'#010+
+ #010+
+ '# To move pograms'#010+
+ 'ifndef MOVE'#010+
+ 'MOVE:=$(MVPROG) -f'#010+
+ 'endif'#010+
+ #010+
+ '# Check delete program'#010+
+ 'i','fndef DEL'#010+
+ 'DEL:=$(RMPROG) -f'#010+
+ 'endif'#010+
+ #010+
+ '# Check deltree program'#010+
+ 'ifndef DELTREE'#010+
+ 'DELTREE:=$(RMPROG) -rf'#010+
+ 'endif'#010+
+ #010+
+ '# To install files'#010+
+ 'ifndef INSTALL'#010+
+ 'ifdef inUnix'#010+
+ 'INSTALL:=$(GINSTALL) -c -m 644'#010+
+ 'else'#010+
+ 'INSTALL:=$(COPY)'#010+
+ 'endif'#010+
+ 'endif'#010+
+ #010+
+ '# To install programs'#010+
+ 'i','fndef INSTALLEXE'#010+
+ 'ifdef inUnix'#010+
+ 'INSTALLEXE:=$(GINSTALL) -c -m 755'#010+
+ 'else'#010+
+ 'INSTALLEXE:=$(COPY)'#010+
+ 'endif'#010+
+ 'endif'#010+
+ #010+
+ '# To make a directory.'#010+
+ 'ifndef MKDIR'#010+
+ 'MKDIR:=$(GINSTALL) -m 755 -d'#010+
+ 'endif'#010+
+ #010+
+ 'export ECHOREDIR COPY COPYTREE MOVE DEL DELTREE INSTALL INSTALLEXE',' M'+
+ 'KDIR'#010+
+ #010+
+ #010+
+ '[defaultdirs]'#010+
+ '#####################################################################'#010+
+ '# Default Directories'#010+
+ '#####################################################################'#010+
+ #010+
+ '# Units dir'#010+
+ 'ifdef REQUIRE_UNITSDIR'#010+
+ 'override UNITSDIR+=','$(REQUIRE_UNITSDIR)'#010+
+ 'endif'#010+
+ #010+
+ '# Units dir'#010+
+ 'ifdef REQUIRE_PACKAGESDIR'#010+
+ 'override PACKAGESDIR+=$(REQUIRE_PACKAGESDIR)'#010+
+ 'endif'#010+
+ #010+
+ #010+
+ '# Unixes use unix dirs with /usr/bin, /usr/lib'#010+
+ '# When zipping use the target os default, when normal install then'#010+
+ '# use th','e source os as default'#010+
+ 'ifdef ZIPINSTALL'#010+
+ '# Zipinstall'#010+
+ 'ifneq ($(findstring $(OS_TARGET),$(UNIXs)),)'#010+
+ 'UNIXHier=1'#010+
+ 'endif'#010+
+ 'else'#010+
+ '# Normal install'#010+
+ 'ifneq ($(findstring $(OS_SOURCE),$(UNIXs)),)'#010+
+ 'UNIXHier=1'#010+
+ 'endif'#010+
+ 'endif'#010+
+ #010+
+ '# When install prefix is not set t','ry to use prefix'#010+
+ 'ifndef INSTALL_PREFIX'#010+
+ 'ifdef PREFIX'#010+
+ 'INSTALL_PREFIX=$(PREFIX)'#010+
+ 'endif'#010+
+ 'endif'#010+
+ #010+
+ '# set the prefix directory where to install everything'#010+
+ 'ifndef INSTALL_PREFIX'#010+
+ 'ifdef UNIXHier'#010+
+ 'INSTALL_PREFIX=/usr/local'#010+
+ 'else'#010+
+ 'ifdef INSTALL_FPCPACKAGE'#010+
+ 'IN','STALL_BASEDIR:=/pp'#010+
+ 'else'#010+
+ 'INSTALL_BASEDIR:=/$(PACKAGE_NAME)'#010+
+ 'endif'#010+
+ 'endif'#010+
+ 'endif'#010+
+ 'export INSTALL_PREFIX'#010+
+ #010+
+ '# Export also INSTALL_SOURCESUBDIR set so it will be'#010+
+ '# used recursively for all subdirs'#010+
+ 'ifdef INSTALL_FPCSUBDIR'#010+
+ 'export INSTALL_FPCSUBDIR'#010+
+ 'endi','f'#010+
+ #010+
+ '# Where to place the resulting zip files'#010+
+ 'ifndef DIST_DESTDIR'#010+
+ 'DIST_DESTDIR:=$(BASEDIR)'#010+
+ 'endif'#010+
+ 'export DIST_DESTDIR'#010+
+ #010+
+ '# EXE/PPU Target directories'#010+
+ 'ifndef COMPILER_UNITTARGETDIR'#010+
+ 'ifdef PACKAGEDIR_MAIN'#010+
+ 'COMPILER_UNITTARGETDIR=$(PACKAGEDIR_MAIN)/u','nits/$(TARGETSUFFIX)'#010+
+ 'else'#010+
+ 'COMPILER_UNITTARGETDIR=units/$(TARGETSUFFIX)'#010+
+ 'endif'#010+
+ 'endif'#010+
+ 'ifndef COMPILER_TARGETDIR'#010+
+ 'COMPILER_TARGETDIR=.'#010+
+ 'endif'#010+
+ #010+
+ #010+
+ '#####################################################################'#010+
+ '# Install Directories'#010+
+ '##########','##########################################################'+
+ '#'#010+
+ #010+
+ '# set the base directory where to install everything'#010+
+ 'ifndef INSTALL_BASEDIR'#010+
+ 'ifdef UNIXHier'#010+
+ 'ifdef INSTALL_FPCPACKAGE'#010+
+ 'INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/fpc/$(FPC_VERSION)'#010+
+ 'else'#010,
+ 'INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/$(PACKAGE_NAME)'#010+
+ 'endif'#010+
+ 'else'#010+
+ 'INSTALL_BASEDIR:=$(INSTALL_PREFIX)'#010+
+ 'endif'#010+
+ 'endif'#010+
+ #010+
+ '# set the directory where to install the binaries'#010+
+ 'ifndef INSTALL_BINDIR'#010+
+ 'ifdef UNIXHier'#010+
+ 'INSTALL_BINDIR:=$(INSTALL_PREFIX)/bin'#010+
+ 'e','lse'#010+
+ 'INSTALL_BINDIR:=$(INSTALL_BASEDIR)/bin'#010+
+ '# for FPC packages install the binaries under their target subdir'#010+
+ 'ifdef INSTALL_FPCPACKAGE'#010+
+ 'ifdef CROSSCOMPILE'#010+
+ 'ifdef CROSSINSTALL'#010+
+ 'INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(SOURCESUFFIX)'#010+
+ 'else'#010+
+ 'INSTALL_BINDI','R:=$(INSTALL_BINDIR)/$(TARGETSUFFIX)'#010+
+ 'endif'#010+
+ 'else'#010+
+ 'INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX)'#010+
+ 'endif'#010+
+ 'endif'#010+
+ 'endif'#010+
+ 'endif'#010+
+ #010+
+ '# set the directory where to install the units.'#010+
+ 'ifndef INSTALL_UNITDIR'#010+
+ 'INSTALL_UNITDIR:=$(INSTALL_BASEDIR)/units/$(TA','RGETSUFFIX)'#010+
+ 'ifdef INSTALL_FPCPACKAGE'#010+
+ 'ifdef PACKAGE_NAME'#010+
+ 'INSTALL_UNITDIR:=$(INSTALL_UNITDIR)/$(PACKAGE_NAME)'#010+
+ 'endif'#010+
+ 'endif'#010+
+ 'endif'#010+
+ #010+
+ '# Where to install shared libraries'#010+
+ 'ifndef INSTALL_LIBDIR'#010+
+ 'ifdef UNIXHier'#010+
+ 'INSTALL_LIBDIR:=$(INSTALL_PREFIX)/lib'#010+
+ 'el','se'#010+
+ 'INSTALL_LIBDIR:=$(INSTALL_UNITDIR)'#010+
+ 'endif'#010+
+ 'endif'#010+
+ #010+
+ '# Where the source files will be stored'#010+
+ 'ifndef INSTALL_SOURCEDIR'#010+
+ 'ifdef UNIXHier'#010+
+ 'ifdef BSDhier'#010+
+ 'SRCPREFIXDIR=share/src'#010+
+ 'else'#010+
+ 'ifdef linuxHier'#010+
+ 'SRCPREFIXDIR=share/src'#010+
+ 'else'#010+
+ 'SRCPREFIXDIR=src'#010+
+ 'endif'#010,
+ 'endif'#010+
+ 'ifdef INSTALL_FPCPACKAGE'#010+
+ 'ifdef INSTALL_FPCSUBDIR'#010+
+ 'INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION'+
+ ')/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)'#010+
+ 'else'#010+
'INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION'+
- ')/$(PACKAGE_NAME)'#013#010+
- 'endif'#013#010+
- 'else'#013#010+
- 'INSTALL_SOURCEDIR:=$(INSTALL_PR','EFIX)/$(SRCPREFIXDIR)/$(PACKAGE_NAME)'+
- '-$(PACKAGE_VERSION)'#013#010+
- 'endif'#013#010+
- 'else'#013#010+
- 'ifdef INSTALL_FPCPACKAGE'#013#010+
- 'ifdef INSTALL_FPCSUBDIR'#013#010+
- 'INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(INSTALL_FPCSUBDIR)/$(PA'+
- 'CKAGE_NAME)'#013#010+
- 'else'#013#010+
- 'INSTALL_SOURCEDIR:=$(INSTALL_','BASEDIR)/source/$(PACKAGE_NAME)'#013#010+
- 'endif'#013#010+
- 'else'#013#010+
- 'INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Where the doc files will be stored'#013#010+
- 'ifndef INSTALL_DOCDIR'#013#010+
- 'ifdef UNIXHier'#013#010+
- 'ifdef BSDhier'#013#010+
- 'DOCPREFIXDIR=share/doc'#013#010+
- 'else'#013#010+
- 'ifd','ef linuxHier'#013#010+
- 'DOCPREFIXDIR=share/doc'#013#010+
- 'else'#013#010+
- 'DOCPREFIXDIR=doc'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- 'ifdef INSTALL_FPCPACKAGE'#013#010+
+ ')','/$(PACKAGE_NAME)'#010+
+ 'endif'#010+
+ 'else'#010+
+ 'INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/$(PACKAGE_NAME)-$'+
+ '(PACKAGE_VERSION)'#010+
+ 'endif'#010+
+ 'else'#010+
+ 'ifdef INSTALL_FPCPACKAGE'#010+
+ 'ifdef INSTALL_FPCSUBDIR'#010+
+ 'INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(INSTALL_FPCSUBDIR',')/$('+
+ 'PACKAGE_NAME)'#010+
+ 'else'#010+
+ 'INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(PACKAGE_NAME)'#010+
+ 'endif'#010+
+ 'else'#010+
+ 'INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source'#010+
+ 'endif'#010+
+ 'endif'#010+
+ 'endif'#010+
+ #010+
+ '# Where the doc files will be stored'#010+
+ 'ifndef INSTALL_DOCDIR'#010+
+ 'ifdef UNIXHier'#010+
+ 'ifdef B','SDhier'#010+
+ 'DOCPREFIXDIR=share/doc'#010+
+ 'else'#010+
+ 'ifdef linuxHier'#010+
+ 'DOCPREFIXDIR=share/doc'#010+
+ 'else'#010+
+ 'DOCPREFIXDIR=doc'#010+
+ 'endif'#010+
+ 'endif'#010+
+ 'ifdef INSTALL_FPCPACKAGE'#010+
'INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/fpc-$(FPC_VERSION)/$'+
- '(PACKAGE_NAME)'#013#010+
- 'else'#013#010+
- 'INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXD','IR)/$(PACKAGE_NAME)-$('+
- 'PACKAGE_VERSION)'#013#010+
- 'endif'#013#010+
- 'else'#013#010+
- 'ifdef INSTALL_FPCPACKAGE'#013#010+
- 'INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc/$(PACKAGE_NAME)'#013#010+
- 'else'#013#010+
- 'INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Where to install the examples, und','er linux we use the doc dir'#013#010+
- '# because the copytree command will create a subdir itself'#013#010+
- 'ifndef INSTALL_EXAMPLEDIR'#013#010+
- 'ifdef UNIXHier'#013#010+
- 'ifdef INSTALL_FPCPACKAGE'#013#010+
- #013#010+
- 'ifdef BSDhier'#013#010+
- 'INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/fpc-$(FPC_VE','RSI'+
- 'ON)/$(PACKAGE_NAME)'#013#010+
- 'else'#013#010+
- 'ifdef linuxHier'#013#010+
- 'INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples'#013#010+
- 'else'#013#010+
+ '(PACKAGE_NAME)'#010+
+ 'else'#010+
+ 'INSTALL_DOCDIR:=$','(INSTALL_PREFIX)/$(DOCPREFIXDIR)/$(PACKAGE_NAME)-$('+
+ 'PACKAGE_VERSION)'#010+
+ 'endif'#010+
+ 'else'#010+
+ 'ifdef INSTALL_FPCPACKAGE'#010+
+ 'INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc/$(PACKAGE_NAME)'#010+
+ 'else'#010+
+ 'INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc'#010+
+ 'endif'#010+
+ 'endif'#010+
+ 'endif'#010+
+ #010+
+ '# Where to install',' the examples, under linux we use the doc dir'#010+
+ '# because the copytree command will create a subdir itself'#010+
+ 'ifndef INSTALL_EXAMPLEDIR'#010+
+ 'ifdef UNIXHier'#010+
+ 'ifdef INSTALL_FPCPACKAGE'#010+
+ #010+
+ 'ifdef BSDhier'#010+
+ 'INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/f','pc-$(FPC_VERSI'+
+ 'ON)/$(PACKAGE_NAME)'#010+
+ 'else'#010+
+ 'ifdef linuxHier'#010+
+ 'INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples'#010+
+ 'else'#010+
'INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)/examples/'+
- '$(PACKAGE_NAME)'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- #013#010+
- 'else'#013#010+
- #013#010+
- 'ifdef BSDhier'#013#010+
- 'INSTALL_EXAMP','LEDIR:=$(INSTALL_PREFIX)/share/examples/$(PACKAGE_NAME)'+
- '-$(PACKAGE_VERSION)'#013#010+
- 'else'#013#010+
- 'ifdef linuxHier'#013#010+
+ '$(PACKAGE_NAME)'#010+
+ 'endif'#010+
+ 'endif'#010+
+ #010+
+ 'else'#010+
+ #010+
+ 'ifdef BSDhier'#010+
+ 'INSTALL_EXAMPL','EDIR:=$(INSTALL_PREFIX)/share/examples/$(PACKAGE_NAME)'+
+ '-$(PACKAGE_VERSION)'#010+
+ 'else'#010+
+ 'ifdef linuxHier'#010+
'INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples/$(PACKAGE_NAME)-$(PACKA'+
- 'GE_VERSION)'#013#010+
- 'else'#013#010+
- 'INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_','NAME)-$(PACKAGE_'+
- 'VERSION)'#013#010+
- 'endif'#013#010+
- #013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- 'else'#013#010+
- 'ifdef INSTALL_FPCPACKAGE'#013#010+
- 'INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples/$(PACKAGE_NAME)'#013#010+
- 'else'#013#010+
- 'INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Where the some',' extra (data)files will be stored'#013#010+
- 'ifndef INSTALL_DATADIR'#013#010+
- 'INSTALL_DATADIR=$(INSTALL_BASEDIR)'#013#010+
- 'endif'#013#010+
- #013#010+
- 'ifndef INSTALL_SHAREDDIR'#013#010+
- 'INSTALL_SHAREDDIR=$(INSTALL_PREFIX)/lib'#013#010+
- 'endif'#013#010+
- #013#010+
- '############################################################','########'+
- '#'#013#010+
- '# Cross compile dirs'#013#010+
- '#####################################################################'#013+
- #010+
- #013#010+
- 'ifdef CROSSCOMPILE'#013#010+
- '# Directory where the cross compile tools are stored.'#013#010+
- '# First check if they are available in FPCDIR. If no target','s/ subdir'+
- #013#010+
- '# is found use the targets/ subdir in INSTALL_BASEDIR.'#013#010+
- 'ifndef CROSSBINDIR'#013#010+
- 'CROSSBINDIR:=$(wildcard $(CROSSTARGETDIR)/bin/$(SOURCESUFFIX))'#013#010+
- 'ifeq ($(CROSSBINDIR),)'#013#010+
- 'CROSSBINDIR:=$(wildcard $(INSTALL_BASEDIR)/cross/$(TARGETSUFFIX)/','bin'+
- '/$(FULL_SOURCE))'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- 'else'#013#010+
- 'CROSSBINDIR='#013#010+
- 'endif'#013#010+
- #013#010+
- #013#010+
- '[dirlibc]'#013#010+
- '# On linux, try to find where libgcc.a is.'#013#010+
- 'ifeq ($(OS_SOURCE),linux)'#013#010+
- #013#010+
- '# Amd64 to i386?'#013#010+
- 'ifndef GCCLIBDIR'#013#010+
- 'ifeq ($(CPU_TARGET),i386)'#013#010+
- 'ifneq ($(findstring x86_64,','$(shell uname -a)),)'#013#010+
- 'ifeq ($(BINUTILSPREFIX),)'#013#010+
- 'GCCLIBDIR:=$(shell dirname `gcc -m32 -print-libgcc-file-name`)'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- 'ifeq ($(CPU_TARGET),powerpc64)'#013#010+
- 'ifeq ($(BINUTILSPREFIX),)'#013#010+
- 'GCCLIBDIR:=$(shell dirname `gcc -m64 -print-lib','gcc-file-name`)'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Try cross gcc'#013#010+
- 'ifndef GCCLIBDIR'#013#010+
+ 'GE_VERSION)'#010+
+ 'else'#010+
+ 'INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-','$(PACKAGE_'+
+ 'VERSION)'#010+
+ 'endif'#010+
+ #010+
+ 'endif'#010+
+ 'endif'#010+
+ 'else'#010+
+ 'ifdef INSTALL_FPCPACKAGE'#010+
+ 'INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples/$(PACKAGE_NAME)'#010+
+ 'else'#010+
+ 'INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples'#010+
+ 'endif'#010+
+ 'endif'#010+
+ 'endif'#010+
+ #010+
+ '# Where the some extra (data)files w','ill be stored'#010+
+ 'ifndef INSTALL_DATADIR'#010+
+ 'INSTALL_DATADIR=$(INSTALL_BASEDIR)'#010+
+ 'endif'#010+
+ #010+
+ 'ifndef INSTALL_SHAREDDIR'#010+
+ 'INSTALL_SHAREDDIR=$(INSTALL_PREFIX)/lib'#010+
+ 'endif'#010+
+ #010+
+ '#####################################################################'#010+
+ '# Cross compile dir','s'#010+
+ '#####################################################################'#010+
+ #010+
+ 'ifdef CROSSCOMPILE'#010+
+ '# Directory where the cross compile tools are stored.'#010+
+ '# First check if they are available in FPCDIR. If no targets/ subdir'#010+
+ '# is found use the target','s/ subdir in INSTALL_BASEDIR.'#010+
+ 'ifndef CROSSBINDIR'#010+
+ 'CROSSBINDIR:=$(wildcard $(CROSSTARGETDIR)/bin/$(SOURCESUFFIX))'#010+
+ 'ifeq ($(CROSSBINDIR),)'#010+
+ 'CROSSBINDIR:=$(wildcard $(INSTALL_BASEDIR)/cross/$(TARGETSUFFIX)/bin/$'+
+ '(FULL_SOURCE))'#010+
+ 'endif'#010+
+ 'endif'#010+
+ 'else'#010+
+ 'CRO','SSBINDIR='#010+
+ 'endif'#010+
+ #010+
+ #010+
+ '[dirlibc]'#010+
+ '# On linux, try to find where libgcc.a is.'#010+
+ 'ifeq ($(OS_SOURCE),linux)'#010+
+ #010+
+ '# Amd64 to i386?'#010+
+ 'ifndef GCCLIBDIR'#010+
+ 'ifeq ($(CPU_TARGET),i386)'#010+
+ 'ifneq ($(findstring x86_64,$(shell uname -a)),)'#010+
+ 'ifeq ($(BINUTILSPREFIX),)'#010+
+ 'GCCLIBDI','R:=$(shell dirname `gcc -m32 -print-libgcc-file-name`)'#010+
+ 'endif'#010+
+ 'endif'#010+
+ 'endif'#010+
+ 'ifeq ($(CPU_TARGET),powerpc64)'#010+
+ 'ifeq ($(BINUTILSPREFIX),)'#010+
+ 'GCCLIBDIR:=$(shell dirname `gcc -m64 -print-libgcc-file-name`)'#010+
+ 'endif'#010+
+ 'endif'#010+
+ 'endif'#010+
+ #010+
+ '# Try cross gcc'#010+
+ 'ifndef GCCLI','BDIR'#010+
'CROSSGCC=$(strip $(wildcard $(addsuffix /$(BINUTILSPREFIX)gcc$(SRCEXEE'+
- 'XT),$(SEARCHPATH))))'#013#010+
- 'ifneq ($(CROSSGCC),)'#013#010+
- 'GCCLIBDIR:=$(shell dirname `$(CROSSGCC) -print-libg','cc-file-name`)'#013+
- #010+
- 'endif'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Other libraries from ld.so.conf'#013#010+
- 'ifndef OTHERLIBDIR'#013#010+
+ 'XT),$(SEARCHPATH))))'#010+
+ 'ifneq ($(CROSSGCC),)'#010+
+ 'GCCLIBDIR:=$(shell dirname `$(CROSSGCC) -print-libgcc-file-name`)'#010+
+ 'endif'#010+
+ 'endif'#010+
+ #010+
+ '# Other libraries from ld.so.conf'#010+
+ 'ifndef OTH','ERLIBDIR'#010+
'OTHERLIBDIR:=$(shell grep -v "^\#" /etc/ld.so.conf | awk '#039'{ ORS=" '+
- '"; print $1 }'#039')'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- #013#010+
- 'ifdef inUnix'#013#010+
- 'ifeq ($(OS_SOURCE),netbsd)'#013#010+
- 'OTHERLIBDIR+','=/usr/pkg/lib'#013#010+
- 'endif'#013#010+
- 'export GCCLIBDIR OTHERLIB'#013#010+
- 'endif'#013#010+
- #013#010+
- #013#010+
- '[extensions]'#013#010+
- '#####################################################################'#013+
- #010+
- '# Default extensions'#013#010+
- '#####################################################################'#013+
- #010+
- #013#010,
- '# Default needed extensions (Go32v2,Linux)'#013#010+
- 'BATCHEXT=.bat'#013#010+
- 'LOADEREXT=.as'#013#010+
- 'EXEEXT=.exe'#013#010+
- 'PPLEXT=.ppl'#013#010+
- 'PPUEXT=.ppu'#013#010+
- 'OEXT=.o'#013#010+
- 'ASMEXT=.s'#013#010+
- 'SMARTEXT=.sl'#013#010+
- 'STATICLIBEXT=.a'#013#010+
- 'SHAREDLIBEXT=.so'#013#010+
- 'SHAREDLIBPREFIX=libfp'#013#010+
- 'STATICLIBPREFIX=libp'#013#010+
- 'IMPORTLIBPREF','IX=libimp'#013#010+
- 'RSTEXT=.rst'#013#010+
- '# external debug info for executable'#013#010+
- 'EXEDBGEXT=.dbg'#013#010+
- '#DEBUGSYMEXT #for debugger symbol files, define only for targets which'+
- ' has this'#013#010+
- #013#010+
- '# Go32v1'#013#010+
- 'ifeq ($(OS_TARGET),go32v1)'#013#010+
- 'STATICLIBPREFIX='#013#010+
- 'SHORTSUFFIX=v1'#013#010+
- 'endif'#013#010,
- #013#010+
- '# Go32v2'#013#010+
- 'ifeq ($(OS_TARGET),go32v2)'#013#010+
- 'STATICLIBPREFIX='#013#010+
- 'SHORTSUFFIX=dos'#013#010+
- 'IMPORTLIBPREFIX='#013#010+
- 'endif'#013#010+
- #013#010+
- '# watcom'#013#010+
- 'ifeq ($(OS_TARGET),watcom)'#013#010+
- 'STATICLIBPREFIX='#013#010+
- 'OEXT=.obj'#013#010+
- 'ASMEXT=.asm'#013#010+
- 'SHAREDLIBEXT=.dll'#013#010+
- 'SHORTSUFFIX=wat'#013#010+
- 'IMPORTLIBPREFIX='#013#010+
- 'endi','f'#013#010+
- #013#010+
- '# Android native'#013#010+
- 'ifneq ($(CPU_TARGET),jvm)'#013#010+
- 'ifeq ($(OS_TARGET),android)'#013#010+
- 'BATCHEXT=.sh'#013#010+
- 'EXEEXT='#013#010+
- 'HASSHAREDLIB=1'#013#010+
- 'SHORTSUFFIX=lnx'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Linux'#013#010+
- 'ifeq ($(OS_TARGET),linux)'#013#010+
- 'BATCHEXT=.sh'#013#010+
- 'EXEEXT='#013#010+
- 'HASSHAREDLIB=1'#013#010+
- 'SHORTSUFFIX=ln','x'#013#010+
- 'endif'#013#010+
- #013#010+
- '# FreeBSD'#013#010+
- 'ifeq ($(OS_TARGET),freebsd)'#013#010+
- 'BATCHEXT=.sh'#013#010+
- 'EXEEXT='#013#010+
- 'HASSHAREDLIB=1'#013#010+
- 'SHORTSUFFIX=fbs'#013#010+
- 'endif'#013#010+
- #013#010+
- '# NetBSD'#013#010+
- 'ifeq ($(OS_TARGET),netbsd)'#013#010+
- 'BATCHEXT=.sh'#013#010+
- 'EXEEXT='#013#010+
- 'HASSHAREDLIB=1'#013#010+
- 'SHORTSUFFIX=nbs'#013#010+
- 'endif'#013#010+
- #013#010+
- '# OpenBSD'#013#010+
- 'ifeq ($(O','S_TARGET),openbsd)'#013#010+
- 'BATCHEXT=.sh'#013#010+
- 'EXEEXT='#013#010+
- 'HASSHAREDLIB=1'#013#010+
- 'SHORTSUFFIX=obs'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Win32'#013#010+
- 'ifeq ($(OS_TARGET),win32)'#013#010+
- 'SHAREDLIBEXT=.dll'#013#010+
- 'SHORTSUFFIX=w32'#013#010+
- 'endif'#013#010+
- #013#010+
- '# OS/2'#013#010+
- 'ifeq ($(OS_TARGET),os2)'#013#010+
- 'BATCHEXT=.cmd'#013#010+
- 'AOUTEXT=.out'#013#010+
- 'STATICLIBPRE','FIX='#013#010+
- 'SHAREDLIBEXT=.dll'#013#010+
- 'SHORTSUFFIX=os2'#013#010+
- 'ECHO=echo'#013#010+
- 'IMPORTLIBPREFIX='#013#010+
- 'endif'#013#010+
- #013#010+
- '# EMX'#013#010+
- 'ifeq ($(OS_TARGET),emx)'#013#010+
- 'BATCHEXT=.cmd'#013#010+
- 'AOUTEXT=.out'#013#010+
- 'STATICLIBPREFIX='#013#010+
- 'SHAREDLIBEXT=.dll'#013#010+
- 'SHORTSUFFIX=emx'#013#010+
- 'ECHO=echo'#013#010+
- 'IMPORTLIBPREFIX='#013#010+
- 'endif'#013#010+
- #013#010+
- '# Amiga',#013#010+
- 'ifeq ($(OS_TARGET),amiga)'#013#010+
- 'EXEEXT='#013#010+
- 'SHAREDLIBEXT=.library'#013#010+
- 'SHORTSUFFIX=amg'#013#010+
- 'endif'#013#010+
- #013#010+
- '# MorphOS'#013#010+
- 'ifeq ($(OS_TARGET),morphos)'#013#010+
- 'EXEEXT='#013#010+
- 'SHAREDLIBEXT=.library'#013#010+
- 'SHORTSUFFIX=mos'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Atari'#013#010+
- 'ifeq ($(OS_TARGET),atari)'#013#010+
- 'EXEEXT=.ttp'#013#010+
- 'SHORTS','UFFIX=ata'#013#010+
- 'endif'#013#010+
- #013#010+
- '# BeOS'#013#010+
- 'ifeq ($(OS_TARGET),beos)'#013#010+
- 'BATCHEXT=.sh'#013#010+
- 'EXEEXT='#013#010+
- 'SHORTSUFFIX=be'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Haiku'#013#010+
- 'ifeq ($(OS_TARGET),haiku)'#013#010+
- 'BATCHEXT=.sh'#013#010+
- 'EXEEXT='#013#010+
- 'SHORTSUFFIX=hai'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Solaris'#013#010+
- 'ifeq ($(OS_TARGET),solaris)'#013#010+
- 'BATCHEXT=.sh'#013,#010+
- 'EXEEXT='#013#010+
- 'SHORTSUFFIX=sun'#013#010+
- 'endif'#013#010+
- #013#010+
- '# QNX'#013#010+
- 'ifeq ($(OS_TARGET),qnx)'#013#010+
- 'BATCHEXT=.sh'#013#010+
- 'EXEEXT='#013#010+
- 'SHORTSUFFIX=qnx'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Netware clib'#013#010+
- 'ifeq ($(OS_TARGET),netware)'#013#010+
- 'EXEEXT=.nlm'#013#010+
- 'STATICLIBPREFIX='#013#010+
- 'SHORTSUFFIX=nw'#013#010+
- 'IMPORTLIBPREFIX=imp'#013#010+
- 'endif'#013#010+
- #013#010+
- '#',' Netware libc'#013#010+
- 'ifeq ($(OS_TARGET),netwlibc)'#013#010+
- 'EXEEXT=.nlm'#013#010+
- 'STATICLIBPREFIX='#013#010+
- 'SHORTSUFFIX=nwl'#013#010+
- 'IMPORTLIBPREFIX=imp'#013#010+
- 'endif'#013#010+
- #013#010+
- '# MacOS'#013#010+
- 'ifeq ($(OS_TARGET),macos)'#013#010+
- 'BATCHEXT='#013#010+
- 'EXEEXT='#013#010+
- 'DEBUGSYMEXT=.xcoff'#013#010+
- 'SHORTSUFFIX=mac'#013#010+
- 'IMPORTLIBPREFIX=imp'#013#010+
- 'end','if'#013#010+
- #013#010+
- '# Darwin'#013#010+
- 'ifneq ($(findstring $(OS_TARGET),darwin iphonesim),)'#013#010+
- 'BATCHEXT=.sh'#013#010+
- 'EXEEXT='#013#010+
- 'HASSHAREDLIB=1'#013#010+
- 'SHORTSUFFIX=dwn'#013#010+
- 'EXEDBGEXT=.dSYM'#013#010+
- 'endif'#013#010+
- #013#010+
- '# gba'#013#010+
- 'ifeq ($(OS_TARGET),gba)'#013#010+
- 'EXEEXT=.gba'#013#010+
- 'SHAREDLIBEXT=.so'#013#010+
- 'SHORTSUFFIX=gba'#013#010+
- 'endif'#013#010+
- #013,#010+
- '# Symbian OS'#013#010+
- 'ifeq ($(OS_TARGET),symbian)'#013#010+
- 'SHAREDLIBEXT=.dll'#013#010+
- 'SHORTSUFFIX=symbian'#013#010+
- 'endif'#013#010+
- #013#010+
- '# NativeNT'#013#010+
- 'ifeq ($(OS_TARGET),NativeNT)'#013#010+
- 'SHAREDLIBEXT=.dll'#013#010+
- 'SHORTSUFFIX=nativent'#013#010+
- 'endif'#013#010+
- #013#010+
- '# wii'#013#010+
- 'ifeq ($(OS_TARGET),wii)'#013#010+
- 'EXEEXT=.dol'#013#010+
- 'SHAREDLIBE','XT=.so'#013#010+
- 'SHORTSUFFIX=wii'#013#010+
- 'endif'#013#010+
- #013#010+
- '# AIX'#013#010+
- 'ifeq ($(OS_TARGET),aix)'#013#010+
- 'BATCHEXT=.sh'#013#010+
- 'EXEEXT='#013#010+
- 'SHORTSUFFIX=aix'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Java'#013#010+
- 'ifeq ($(OS_TARGET),java)'#013#010+
- 'OEXT=.class'#013#010+
- 'ASMEXT=.j'#013#010+
- 'SHAREDLIBEXT=.jar'#013#010+
- 'SHORTSUFFIX=java'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Android java'#013#010+
- 'ifeq ','($(CPU_TARGET),jvm)'#013#010+
- 'ifeq ($(OS_TARGET),android)'#013#010+
- 'OEXT=.class'#013#010+
- 'ASMEXT=.j'#013#010+
- 'SHAREDLIBEXT=.jar'#013#010+
- 'SHORTSUFFIX=android'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- #013#010+
- '# MS-DOS'#013#010+
- 'ifeq ($(OS_TARGET),msdos)'#013#010+
- 'STATICLIBPREFIX='#013#010+
- 'STATICLIBEXT=.a'#013#010+
- 'SHORTSUFFIX=d16'#013#010+
- 'endif'#013#010+
- #013#010+
- #013#010+
- #013#010+
- '# For 8.','3 limited OS'#039's the short suffixes'#013#010+
- '# Otherwise use the full source/target names'#013#010+
- 'ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)'#013#010+
- 'FPCMADE=fpcmade.$(SHORTSUFFIX)'#013#010+
- 'ZIPSUFFIX=$(SHORTSUFFIX)'#013#010+
- 'ZIPCROSSPREFIX='#013#010+
- 'ZIPSOURCESUFFIX=src'#013#010+
- 'ZIPEXAMPLESUF','FIX=exm'#013#010+
- 'else'#013#010+
- 'FPCMADE=fpcmade.$(TARGETSUFFIX)'#013#010+
- 'ZIPSOURCESUFFIX=.source'#013#010+
- 'ZIPEXAMPLESUFFIX=.examples'#013#010+
- 'ifdef CROSSCOMPILE'#013#010+
- 'ZIPSUFFIX=.$(SOURCESUFFIX)'#013#010+
- 'ZIPCROSSPREFIX=$(TARGETSUFFIX)-'#013#010+
- 'else'#013#010+
- 'ZIPSUFFIX=.$(TARGETSUFFIX)'#013#010+
- 'ZIPCROSSPREFIX='#013#010+
- 'endif'#013#010,
- 'endif'#013#010+
- #013#010+
- '[defaulttools]'#013#010+
- '#####################################################################'#013+
- #010+
- '# Default Tools'#013#010+
- '#####################################################################'#013+
- #010+
- #013#010+
- '# Names of the binutils tools'#013#010+
- 'ASNAME=$(BINUTILSPREFIX',')as'#013#010+
- 'LDNAME=$(BINUTILSPREFIX)ld'#013#010+
- 'ARNAME=$(BINUTILSPREFIX)ar'#013#010+
- 'RCNAME=$(BINUTILSPREFIX)rc'#013#010+
- 'NASMNAME=$(BINUTILSPREFIX)nasm'#013#010+
- #013#010+
- '# assembler, redefine it if cross compiling'#013#010+
- 'ifndef ASPROG'#013#010+
- 'ifdef CROSSBINDIR'#013#010+
- 'ASPROG=$(CROSSBINDIR)/$(ASNAME)$(SRCEX','EEXT)'#013#010+
- 'else'#013#010+
- 'ASPROG=$(ASNAME)'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- #013#010+
- '# linker, but probably not used'#013#010+
- 'ifndef LDPROG'#013#010+
- 'ifdef CROSSBINDIR'#013#010+
- 'LDPROG=$(CROSSBINDIR)/$(LDNAME)$(SRCEXEEXT)'#013#010+
- 'else'#013#010+
- 'LDPROG=$(LDNAME)'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Resource compiler'#013#010+
- 'ifndef RCPROG'#013#010+
- 'ifdef',' CROSSBINDIR'#013#010+
- 'RCPROG=$(CROSSBINDIR)/$(RCNAME)$(SRCEXEEXT)'#013#010+
- 'else'#013#010+
- 'RCPROG=$(RCNAME)'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Archiver'#013#010+
- 'ifndef ARPROG'#013#010+
- 'ifdef CROSSBINDIR'#013#010+
- 'ARPROG=$(CROSSBINDIR)/$(ARNAME)$(SRCEXEEXT)'#013#010+
- 'else'#013#010+
- 'ARPROG=$(ARNAME)'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- #013#010+
- '# NASM ass','embler, redefine it if cross compiling'#013#010+
- 'ifndef NASMPROG'#013#010+
- 'ifdef CROSSBINDIR'#013#010+
- 'NASMPROG=$(CROSSBINDIR)/$(NASMNAME)$(SRCEXEEXT)'#013#010+
- 'else'#013#010+
- 'NASMPROG=$(NASMNAME)'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Override defaults'#013#010+
- 'AS=$(ASPROG)'#013#010+
- 'LD=$(LDPROG)'#013#010+
- 'RC=$(RCPROG)'#013#010+
- 'AR=$(ARP','ROG)'#013#010+
- 'NASM=$(NASMPROG)'#013#010+
- #013#010+
- '# ppas.bat / ppas.sh'#013#010+
- 'ifdef inUnix'#013#010+
- 'PPAS=./ppas$(SRCBATCHEXT)'#013#010+
- 'else'#013#010+
- 'PPAS=ppas$(SRCBATCHEXT)'#013#010+
- 'endif'#013#010+
- #013#010+
- '# ldconfig to rebuild .so cache'#013#010+
- 'ifdef inUnix'#013#010+
- 'LDCONFIG=ldconfig'#013#010+
- 'else'#013#010+
- 'LDCONFIG='#013#010+
- 'endif'#013#010+
- #013#010+
- 'ifdef DATE'#013#010+
- 'DATESTR',':=$(shell $(DATE) +%Y%m%d)'#013#010+
- 'else'#013#010+
- 'DATESTR='#013#010+
- 'endif'#013#010+
- #013#010+
- '# Zip options'#013#010+
- 'ZIPOPT=-9'#013#010+
- 'ZIPEXT=.zip'#013#010+
- #013#010+
- '# Tar options'#013#010+
- 'ifeq ($(USETAR),bz2)'#013#010+
- 'TAROPT=vj'#013#010+
- 'TAREXT=.tar.bz2'#013#010+
- 'else'#013#010+
- 'TAROPT=vz'#013#010+
- 'TAREXT=.tar.gz'#013#010+
- 'endif'#013#010+
- #013#010+
- #013#010+
- '[command_begin]'#013#010+
+ '"; print $1 }'#039')'#010+
+ 'endif'#010+
+ 'endif'#010+
+ #010+
+ 'ifdef inUnix'#010+
+ 'ifeq ($(OS_SOURCE),netbsd)'#010+
+ 'OTHERLIBDIR+=/usr/pkg/lib'#010+
+ 'endif'#010+
+ 'export GCCLIBDIR OTHERLIB'#010+
+ 'endif'#010+
+ #010+
+ #010+
+ '[extensions]'#010+
+ '#################','###################################################'+
+ '#'#010+
+ '# Default extensions'#010+
+ '#####################################################################'#010+
+ #010+
+ '# Default needed extensions (Go32v2,Linux)'#010+
+ 'BATCHEXT=.bat'#010+
+ 'LOADEREXT=.as'#010+
+ 'EXEEXT=.exe'#010+
+ 'PPLEXT=.ppl'#010,
+ 'PPUEXT=.ppu'#010+
+ 'OEXT=.o'#010+
+ 'ASMEXT=.s'#010+
+ 'SMARTEXT=.sl'#010+
+ 'STATICLIBEXT=.a'#010+
+ 'SHAREDLIBEXT=.so'#010+
+ 'SHAREDLIBPREFIX=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 targets whi'+
+ 'ch has this'#010+
+ #010+
+ '# Go32v1'#010+
+ 'ifeq ($(OS_TARGET),go32v1)'#010+
+ 'STATICLIBPREFIX='#010+
+ 'SHORTSUFFIX=v1'#010+
+ 'endif'#010+
+ #010+
+ '# Go32v2'#010+
+ 'ifeq ($(OS_TARGET),go32v2)'#010+
+ 'STATICLIBPREFIX='#010+
+ 'SHORTSUFFIX=dos'#010+
+ 'IMPORTLIBPREFIX='#010+
+ 'endif'#010+
+ #010+
+ '# watcom'#010+
+ 'ifeq ($(OS_TARGE','T),watcom)'#010+
+ 'STATICLIBPREFIX='#010+
+ 'OEXT=.obj'#010+
+ 'ASMEXT=.asm'#010+
+ 'SHAREDLIBEXT=.dll'#010+
+ 'SHORTSUFFIX=wat'#010+
+ 'IMPORTLIBPREFIX='#010+
+ 'endif'#010+
+ #010+
+ '# Android native'#010+
+ 'ifneq ($(CPU_TARGET),jvm)'#010+
+ 'ifeq ($(OS_TARGET),android)'#010+
+ 'BATCHEXT=.sh'#010+
+ 'EXEEXT='#010+
+ 'HASSHAREDLIB=1'#010+
+ 'SHORTSUFFIX=lnx'#010+
+ 'endif'#010+
+ 'end','if'#010+
+ #010+
+ '# Linux'#010+
+ 'ifeq ($(OS_TARGET),linux)'#010+
+ 'BATCHEXT=.sh'#010+
+ 'EXEEXT='#010+
+ 'HASSHAREDLIB=1'#010+
+ 'SHORTSUFFIX=lnx'#010+
+ 'endif'#010+
+ #010+
+ '# FreeBSD'#010+
+ 'ifeq ($(OS_TARGET),freebsd)'#010+
+ 'BATCHEXT=.sh'#010+
+ 'EXEEXT='#010+
+ 'HASSHAREDLIB=1'#010+
+ 'SHORTSUFFIX=fbs'#010+
+ 'endif'#010+
+ #010+
+ '# NetBSD'#010+
+ 'ifeq ($(OS_TARGET),netbsd)'#010+
+ 'BATCHEXT=.','sh'#010+
+ 'EXEEXT='#010+
+ 'HASSHAREDLIB=1'#010+
+ 'SHORTSUFFIX=nbs'#010+
+ 'endif'#010+
+ #010+
+ '# OpenBSD'#010+
+ 'ifeq ($(OS_TARGET),openbsd)'#010+
+ 'BATCHEXT=.sh'#010+
+ 'EXEEXT='#010+
+ 'HASSHAREDLIB=1'#010+
+ 'SHORTSUFFIX=obs'#010+
+ 'endif'#010+
+ #010+
+ '# Win32'#010+
+ 'ifeq ($(OS_TARGET),win32)'#010+
+ 'SHAREDLIBEXT=.dll'#010+
+ 'SHORTSUFFIX=w32'#010+
+ 'endif'#010+
+ #010+
+ '# OS/2'#010+
+ 'ifeq ($(OS_T','ARGET),os2)'#010+
+ 'BATCHEXT=.cmd'#010+
+ 'AOUTEXT=.out'#010+
+ 'STATICLIBPREFIX='#010+
+ 'SHAREDLIBEXT=.dll'#010+
+ 'SHORTSUFFIX=os2'#010+
+ 'ECHO=echo'#010+
+ 'IMPORTLIBPREFIX='#010+
+ 'endif'#010+
+ #010+
+ '# EMX'#010+
+ 'ifeq ($(OS_TARGET),emx)'#010+
+ 'BATCHEXT=.cmd'#010+
+ 'AOUTEXT=.out'#010+
+ 'STATICLIBPREFIX='#010+
+ 'SHAREDLIBEXT=.dll'#010+
+ 'SHORTSUFFIX=emx'#010+
+ 'ECHO=ech','o'#010+
+ 'IMPORTLIBPREFIX='#010+
+ 'endif'#010+
+ #010+
+ '# Amiga'#010+
+ 'ifeq ($(OS_TARGET),amiga)'#010+
+ 'EXEEXT='#010+
+ 'SHAREDLIBEXT=.library'#010+
+ 'SHORTSUFFIX=amg'#010+
+ 'endif'#010+
+ #010+
+ '# MorphOS'#010+
+ 'ifeq ($(OS_TARGET),morphos)'#010+
+ 'EXEEXT='#010+
+ 'SHAREDLIBEXT=.library'#010+
+ 'SHORTSUFFIX=mos'#010+
+ 'endif'#010+
+ #010+
+ '# Atari'#010+
+ 'ifeq ($(OS_TARGET),atari)'#010+
+ 'EX','EEXT=.ttp'#010+
+ 'SHORTSUFFIX=ata'#010+
+ 'endif'#010+
+ #010+
+ '# BeOS'#010+
+ 'ifeq ($(OS_TARGET),beos)'#010+
+ 'BATCHEXT=.sh'#010+
+ 'EXEEXT='#010+
+ 'SHORTSUFFIX=be'#010+
+ 'endif'#010+
+ #010+
+ '# Haiku'#010+
+ 'ifeq ($(OS_TARGET),haiku)'#010+
+ 'BATCHEXT=.sh'#010+
+ 'EXEEXT='#010+
+ 'SHORTSUFFIX=hai'#010+
+ 'endif'#010+
+ #010+
+ '# Solaris'#010+
+ 'ifeq ($(OS_TARGET),solaris)'#010+
+ 'BATCHEXT=.sh'#010+
+ 'EXE','EXT='#010+
+ 'SHORTSUFFIX=sun'#010+
+ 'endif'#010+
+ #010+
+ '# QNX'#010+
+ 'ifeq ($(OS_TARGET),qnx)'#010+
+ 'BATCHEXT=.sh'#010+
+ 'EXEEXT='#010+
+ 'SHORTSUFFIX=qnx'#010+
+ 'endif'#010+
+ #010+
+ '# Netware clib'#010+
+ 'ifeq ($(OS_TARGET),netware)'#010+
+ 'EXEEXT=.nlm'#010+
+ 'STATICLIBPREFIX='#010+
+ 'SHORTSUFFIX=nw'#010+
+ 'IMPORTLIBPREFIX=imp'#010+
+ 'endif'#010+
+ #010+
+ '# Netware libc'#010+
+ 'ifeq ($(O','S_TARGET),netwlibc)'#010+
+ 'EXEEXT=.nlm'#010+
+ 'STATICLIBPREFIX='#010+
+ 'SHORTSUFFIX=nwl'#010+
+ 'IMPORTLIBPREFIX=imp'#010+
+ 'endif'#010+
+ #010+
+ '# MacOS'#010+
+ 'ifeq ($(OS_TARGET),macos)'#010+
+ 'BATCHEXT='#010+
+ 'EXEEXT='#010+
+ 'DEBUGSYMEXT=.xcoff'#010+
+ 'SHORTSUFFIX=mac'#010+
+ 'IMPORTLIBPREFIX=imp'#010+
+ 'endif'#010+
+ #010+
+ '# Darwin'#010+
+ 'ifneq ($(findstring $(OS_','TARGET),darwin iphonesim),)'#010+
+ 'BATCHEXT=.sh'#010+
+ 'EXEEXT='#010+
+ 'HASSHAREDLIB=1'#010+
+ 'SHORTSUFFIX=dwn'#010+
+ 'EXEDBGEXT=.dSYM'#010+
+ 'endif'#010+
+ #010+
+ '# gba'#010+
+ 'ifeq ($(OS_TARGET),gba)'#010+
+ 'EXEEXT=.gba'#010+
+ 'SHAREDLIBEXT=.so'#010+
+ 'SHORTSUFFIX=gba'#010+
+ 'endif'#010+
+ #010+
+ '# Symbian OS'#010+
+ 'ifeq ($(OS_TARGET),symbian)'#010+
+ 'SHAREDLIBEXT=.','dll'#010+
+ 'SHORTSUFFIX=symbian'#010+
+ 'endif'#010+
+ #010+
+ '# NativeNT'#010+
+ 'ifeq ($(OS_TARGET),NativeNT)'#010+
+ 'SHAREDLIBEXT=.dll'#010+
+ 'SHORTSUFFIX=nativent'#010+
+ 'endif'#010+
+ #010+
+ '# wii'#010+
+ 'ifeq ($(OS_TARGET),wii)'#010+
+ 'EXEEXT=.dol'#010+
+ 'SHAREDLIBEXT=.so'#010+
+ 'SHORTSUFFIX=wii'#010+
+ 'endif'#010+
+ #010+
+ '# AIX'#010+
+ 'ifeq ($(OS_TARGET),aix)'#010+
+ 'BATCHEXT=.s','h'#010+
+ 'EXEEXT='#010+
+ 'SHORTSUFFIX=aix'#010+
+ 'endif'#010+
+ #010+
+ '# Java'#010+
+ 'ifeq ($(OS_TARGET),java)'#010+
+ 'OEXT=.class'#010+
+ 'ASMEXT=.j'#010+
+ 'SHAREDLIBEXT=.jar'#010+
+ 'SHORTSUFFIX=java'#010+
+ 'endif'#010+
+ #010+
+ '# Android java'#010+
+ 'ifeq ($(CPU_TARGET),jvm)'#010+
+ 'ifeq ($(OS_TARGET),android)'#010+
+ 'OEXT=.class'#010+
+ 'ASMEXT=.j'#010+
+ 'SHAREDLIBEXT=.jar'#010+
+ 'SHO','RTSUFFIX=android'#010+
+ 'endif'#010+
+ 'endif'#010+
+ #010+
+ '# MS-DOS'#010+
+ 'ifeq ($(OS_TARGET),msdos)'#010+
+ 'STATICLIBPREFIX='#010+
+ 'STATICLIBEXT=.a'#010+
+ 'SHORTSUFFIX=d16'#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_SOURC','E),$(LIMIT83fs)),)'#010+
+ 'FPCMADE=fpcmade.$(SHORTSUFFIX)'#010+
+ 'ZIPSUFFIX=$(SHORTSUFFIX)'#010+
+ 'ZIPCROSSPREFIX='#010+
+ 'ZIPSOURCESUFFIX=src'#010+
+ 'ZIPEXAMPLESUFFIX=exm'#010+
+ 'else'#010+
+ 'FPCMADE=fpcmade.$(TARGETSUFFIX)'#010+
+ 'ZIPSOURCESUFFIX=.source'#010+
+ 'ZIPEXAMPLESUFFIX=.examples'#010+
+ 'ifdef CROSSCOMPILE'#010+
+ 'Z','IPSUFFIX=.$(SOURCESUFFIX)'#010+
+ 'ZIPCROSSPREFIX=$(TARGETSUFFIX)-'#010+
+ 'else'#010+
+ 'ZIPSUFFIX=.$(TARGETSUFFIX)'#010+
+ 'ZIPCROSSPREFIX='#010+
+ 'endif'#010+
+ 'endif'#010+
+ #010+
+ '[defaulttools]'#010+
+ '#####################################################################'#010+
+ '# Default Tools'#010+
'####################','################################################'+
- '#'#013#010+
- '# Compiler Command Line'#013#010+
- '#####################################################################'#013+
- #010+
- #013#010+
- '# Load commandline OPTDEF and add FPC_CPU define, for compiling the'#013+
- #010+
- '# compiler this needs ','to be turned off'#013#010+
- 'ifndef NOCPUDEF'#013#010+
- 'override FPCOPTDEF=$(ARCH)'#013#010+
- 'endif'#013#010+
- #013#010+
- #013#010+
- '# Load commandline OPT and add target and unit dir to be sure'#013#010+
- 'ifneq ($(OS_TARGET),$(OS_SOURCE))'#013#010+
- 'override FPCOPT+=-T$(OS_TARGET)'#013#010+
- 'endif'#013#010+
- #013#010+
- 'ifneq ($(CPU_TARGET),$(CPU','_SOURCE))'#013#010+
- 'override FPCOPT+=-P$(ARCH)'#013#010+
- 'endif'#013#010+
- #013#010+
- 'ifeq ($(OS_SOURCE),openbsd)'#013#010+
- 'override FPCOPT+=-FD$(NEW_BINUTILS_PATH)'#013#010+
- 'override FPCMAKEOPT+=-FD$(NEW_BINUTILS_PATH)'#013#010+
- 'endif'#013#010+
- #013#010+
- 'ifndef CROSSBOOTSTRAP'#013#010+
- 'ifneq ($(BINUTILSPREFIX),)'#013#010+
- 'override FPCOPT','+=-XP$(BINUTILSPREFIX)'#013#010+
- 'endif'#013#010+
- 'ifneq ($(BINUTILSPREFIX),)'#013#010+
- 'override FPCOPT+=-Xr$(RLINKPATH)'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- #013#010+
+ '#'#010+
+ #010+
+ '# Names of the binutils tools'#010+
+ 'ASNAME=$(BINUTILSPREFIX)as'#010+
+ 'LDNAME=$(BINUTILSPREFIX)ld'#010+
+ 'ARNAME=$(BINUTILSPREFIX)ar'#010+
+ 'RCNAME=$(BINUTILSPREFIX)rc'#010+
+ 'NASMNAME=$(BINUTILSPREFIX)nasm'#010+
+ #010+
+ '# assembler, redefi','ne it if cross compiling'#010+
+ 'ifndef ASPROG'#010+
+ 'ifdef CROSSBINDIR'#010+
+ 'ASPROG=$(CROSSBINDIR)/$(ASNAME)$(SRCEXEEXT)'#010+
+ 'else'#010+
+ 'ASPROG=$(ASNAME)'#010+
+ 'endif'#010+
+ 'endif'#010+
+ #010+
+ '# linker, but probably not used'#010+
+ 'ifndef LDPROG'#010+
+ 'ifdef CROSSBINDIR'#010+
+ 'LDPROG=$(CROSSBINDIR)/$(LDNAME)$(SRCEXEE','XT)'#010+
+ 'else'#010+
+ 'LDPROG=$(LDNAME)'#010+
+ 'endif'#010+
+ 'endif'#010+
+ #010+
+ '# Resource compiler'#010+
+ 'ifndef RCPROG'#010+
+ 'ifdef CROSSBINDIR'#010+
+ 'RCPROG=$(CROSSBINDIR)/$(RCNAME)$(SRCEXEEXT)'#010+
+ 'else'#010+
+ 'RCPROG=$(RCNAME)'#010+
+ 'endif'#010+
+ 'endif'#010+
+ #010+
+ '# Archiver'#010+
+ 'ifndef ARPROG'#010+
+ 'ifdef CROSSBINDIR'#010+
+ 'ARPROG=$(CROSSBINDIR)/$(ARN','AME)$(SRCEXEEXT)'#010+
+ 'else'#010+
+ 'ARPROG=$(ARNAME)'#010+
+ 'endif'#010+
+ 'endif'#010+
+ #010+
+ '# NASM assembler, redefine it if cross compiling'#010+
+ 'ifndef NASMPROG'#010+
+ 'ifdef CROSSBINDIR'#010+
+ 'NASMPROG=$(CROSSBINDIR)/$(NASMNAME)$(SRCEXEEXT)'#010+
+ 'else'#010+
+ 'NASMPROG=$(NASMNAME)'#010+
+ 'endif'#010+
+ 'endif'#010+
+ #010+
+ '# Override default','s'#010+
+ 'AS=$(ASPROG)'#010+
+ 'LD=$(LDPROG)'#010+
+ 'RC=$(RCPROG)'#010+
+ 'AR=$(ARPROG)'#010+
+ 'NASM=$(NASMPROG)'#010+
+ #010+
+ '# ppas.bat / ppas.sh'#010+
+ 'ifdef inUnix'#010+
+ 'PPAS=./ppas$(SRCBATCHEXT)'#010+
+ 'else'#010+
+ 'PPAS=ppas$(SRCBATCHEXT)'#010+
+ 'endif'#010+
+ #010+
+ '# ldconfig to rebuild .so cache'#010+
+ 'ifdef inUnix'#010+
+ 'LDCONFIG=ldconfig'#010+
+ 'else'#010+
+ 'LDCO','NFIG='#010+
+ 'endif'#010+
+ #010+
+ 'ifdef DATE'#010+
+ 'DATESTR:=$(shell $(DATE) +%Y%m%d)'#010+
+ 'else'#010+
+ 'DATESTR='#010+
+ 'endif'#010+
+ #010+
+ '# Zip options'#010+
+ 'ZIPOPT=-9'#010+
+ 'ZIPEXT=.zip'#010+
+ #010+
+ '# Tar options'#010+
+ 'ifeq ($(USETAR),bz2)'#010+
+ 'TAROPT=vj'#010+
+ 'TAREXT=.tar.bz2'#010+
+ 'else'#010+
+ 'TAROPT=vz'#010+
+ 'TAREXT=.tar.gz'#010+
+ 'endif'#010+
+ #010+
+ #010+
+ '[command_begin]'#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+
+ #010+
+ #010+
+ '# Load commandline OPT and add target and unit dir to be sure'#010+
+ 'ifneq ($(OS_TARGET),$(OS_SOURCE))'#010+
+ 'override FPCOPT+=-T$(OS_TARGET)'#010+
+ 'endif'#010+
+ #010+
+ 'ifneq ($(CPU_TARGET),$(CPU_SOUR','CE))'#010+
+ 'override FPCOPT+=-P$(ARCH)'#010+
+ 'endif'#010+
+ #010+
+ 'ifeq ($(OS_SOURCE),openbsd)'#010+
+ 'override FPCOPT+=-FD$(NEW_BINUTILS_PATH)'#010+
+ 'override FPCMAKEOPT+=-FD$(NEW_BINUTILS_PATH)'#010+
+ 'endif'#010+
+ #010+
+ 'ifndef CROSSBOOTSTRAP'#010+
+ 'ifneq ($(BINUTILSPREFIX),)'#010+
+ 'override FPCOPT+=-XP$(BINUTILSP','REFIX)'#010+
+ 'endif'#010+
+ 'ifneq ($(BINUTILSPREFIX),)'#010+
+ 'override FPCOPT+=-Xr$(RLINKPATH)'#010+
+ 'endif'#010+
+ 'endif'#010+
+ #010+
'# When BINUTILSPREFIX is given and we are not cross-compiling then use'+
- #013#010+
- '# it while compiling the fpmake file. (For example to build',' i386-fre'+
- 'ebsd'#013#010+
- '# with BINUTILSPREFIX=i386-)'#013#010+
- 'ifndef CROSSCOMPILE'#013#010+
- 'ifneq ($(BINUTILSPREFIX),)'#013#010+
- 'override FPCMAKEOPT+=-XP$(BINUTILSPREFIX)'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- #013#010+
- '# User dirs should be first, so they are looked at first'#013#010+
- 'ifdef UNITDIR'#013#010+
- 'override FPCOP','T+=$(addprefix -Fu,$(UNITDIR))'#013#010+
- 'endif'#013#010+
- 'ifdef LIBDIR'#013#010+
- 'override FPCOPT+=$(addprefix -Fl,$(LIBDIR))'#013#010+
- 'endif'#013#010+
- 'ifdef OBJDIR'#013#010+
- 'override FPCOPT+=$(addprefix -Fo,$(OBJDIR))'#013#010+
- 'endif'#013#010+
- 'ifdef INCDIR'#013#010+
- 'override FPCOPT+=$(addprefix -Fi,$(INCDIR))'#013#010+
- 'endif'#013#010+
- #013#010+
- '#',' Smartlinking'#013#010+
- 'ifdef LINKSMART'#013#010+
- 'override FPCOPT+=-XX'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Smartlinking creation'#013#010+
- 'ifdef CREATESMART'#013#010+
- 'override FPCOPT+=-CX'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Debug'#013#010+
- 'ifdef DEBUG'#013#010+
- 'override FPCOPT+=-gl'#013#010+
- 'override FPCOPTDEF+=DEBUG'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Release mode'#013#010+
- '# (str','ip, optimize and don'#039't load fpc.cfg)'#013#010+
- '# fpc 2.1 has -O2 for all targets'#013#010+
- 'ifdef RELEASE'#013#010+
- 'ifneq ($(findstring 2.0.,$(FPC_VERSION)),)'#013#010+
- 'ifeq ($(CPU_TARGET),i386)'#013#010+
- 'FPCCPUOPT:=-OG2p3'#013#010+
- 'endif'#013#010+
- 'ifeq ($(CPU_TARGET),powerpc)'#013#010+
- 'FPCCPUOPT:=-O1r'#013#010+
- 'endif'#013#010+
- 'e','lse'#013#010+
- 'FPCCPUOPT:=-O2'#013#010+
- 'endif'#013#010+
- 'override FPCOPT+=-Ur -Xs $(FPCCPUOPT) -n'#013#010+
- 'override FPCOPTDEF+=RELEASE'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Strip'#013#010+
- 'ifdef STRIP'#013#010+
- 'override FPCOPT+=-Xs'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Optimizer'#013#010+
- 'ifdef OPTIMIZE'#013#010+
- 'override FPCOPT+=-O2'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Verbose settings ','(warning,note,info)'#013#010+
- 'ifdef VERBOSE'#013#010+
- 'override FPCOPT+=-vwni'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Needed compiler options'#013#010+
- 'ifdef COMPILER_OPTIONS'#013#010+
- 'override FPCOPT+=$(COMPILER_OPTIONS)'#013#010+
- 'endif'#013#010+
- 'ifdef COMPILER_UNITDIR'#013#010+
- 'override FPCOPT+=$(addprefix -Fu,$(COMPILER_UNITDIR','))'#013#010+
- 'endif'#013#010+
- 'ifdef COMPILER_LIBRARYDIR'#013#010+
- 'override FPCOPT+=$(addprefix -Fl,$(COMPILER_LIBRARYDIR))'#013#010+
- 'endif'#013#010+
- 'ifdef COMPILER_OBJECTDIR'#013#010+
- 'override FPCOPT+=$(addprefix -Fo,$(COMPILER_OBJECTDIR))'#013#010+
- 'endif'#013#010+
- 'ifdef COMPILER_INCLUDEDIR'#013#010+
- 'override FPCOPT+=$(a','ddprefix -Fi,$(COMPILER_INCLUDEDIR))'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Cross compiler utils'#013#010+
- 'ifdef CROSSBINDIR'#013#010+
- 'override FPCOPT+=-FD$(CROSSBINDIR)'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Target dirs and the prefix to use for clean/install'#013#010+
- 'ifdef COMPILER_TARGETDIR'#013#010+
- 'override FPCOPT+=-FE$(CO','MPILER_TARGETDIR)'#013#010+
- 'ifeq ($(COMPILER_TARGETDIR),.)'#013#010+
- 'override TARGETDIRPREFIX='#013#010+
- 'else'#013#010+
- 'override TARGETDIRPREFIX=$(COMPILER_TARGETDIR)/'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Unit target dir (default is units/<cpu>-<os>/'#013#010+
- 'ifdef COMPILER_UNITTARGETDIR'#013#010+
- 'override FPC','OPT+=-FU$(COMPILER_UNITTARGETDIR)'#013#010+
- 'ifeq ($(COMPILER_UNITTARGETDIR),.)'#013#010+
- 'override UNITTARGETDIRPREFIX='#013#010+
- 'else'#013#010+
- 'override UNITTARGETDIRPREFIX=$(COMPILER_UNITTARGETDIR)/'#013#010+
- 'endif'#013#010+
- 'else'#013#010+
- 'ifdef COMPILER_TARGETDIR'#013#010+
- 'override COMPILER_UNITTARGETDIR=$(CO','MPILER_TARGETDIR)'#013#010+
- 'override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX)'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- #013#010+
- 'ifdef CREATESHARED'#013#010+
- 'override FPCOPT+=-Cg'#013#010+
- 'endif'#013#010+
- #013#010+
- '# create always pic'#039'ed code on x86_64'#013#010+
- 'ifneq ($(findstring $(OS_TARGET),freebsd openbsd netbsd linux sola','ri'+
- 's),)'#013#010+
- 'ifeq ($(CPU_TARGET),x86_64)'#013#010+
- 'override FPCOPT+=-Cg'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- #013#010+
- 'ifdef LINKSHARED'#013#010+
- '#!!! deactived for testing override FPCOPT+=-XD'#013#010+
- 'endif'#013#010+
- #013#010+
- #013#010+
- '[command_libc]'#013#010+
- '# Add GCC lib path if asked'#013#010+
- 'ifdef GCCLIBDIR'#013#010+
- 'override FPCOPT+=-Fl$(GCC','LIBDIR)'#013#010+
- 'endif'#013#010+
- 'ifdef OTHERLIBDIR'#013#010+
- 'override FPCOPT+=$(addprefix -Fl,$(OTHERLIBDIR))'#013#010+
- 'endif'#013#010+
- #013#010+
- #013#010+
- '[command_end]'#013#010+
- '# Add commandline options last so they can override'#013#010+
- 'ifdef OPT'#013#010+
- 'override FPCOPT+=$(OPT)'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Add defines from FPCOPTDEF to',' FPCOPT'#013#010+
- 'ifdef FPCOPTDEF'#013#010+
- 'override FPCOPT+=$(addprefix -d,$(FPCOPTDEF))'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Was a config file specified ?'#013#010+
- 'ifdef CFGFILE'#013#010+
- 'override FPCOPT+=@$(CFGFILE)'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Use the environment to pass commandline options?'#013#010+
- 'ifdef USEENV'#013#010+
- 'overr','ide FPCEXTCMD:=$(FPCOPT)'#013#010+
- 'override FPCOPT:=!FPCEXTCMD'#013#010+
- 'export FPCEXTCMD'#013#010+
- 'endif'#013#010+
- #013#010+
- 'override AFULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)'#013#010+
- 'override AFULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)'#013#010+
- #013#010+
- 'ifneq ($(AFULL_TARGET),$(AFULL_SOURCE))'#013#010+
- 'override ACROSS','COMPILE=1'#013#010+
- 'endif'#013#010+
- #013#010+
- 'ifdef ACROSSCOMPILE'#013#010+
- 'override FPCOPT+=$(CROSSOPT)'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Compiler commandline'#013#010+
- 'override COMPILER:=$(strip $(FPC) $(FPCOPT))'#013#010+
- #013#010+
- '# also call ppas if with command option -s'#013#010+
- '# but only if the FULL_SOURCE and FULL_TARGE','T are equal'#013#010+
- 'ifeq (,$(findstring -s ,$(COMPILER)))'#013#010+
- 'EXECPPAS='#013#010+
- 'else'#013#010+
- 'ifeq ($(FULL_SOURCE),$(FULL_TARGET))'#013#010+
- 'ifdef RUNBATCH'#013#010+
- 'EXECPPAS:=@$(RUNBATCH) $(PPAS)'#013#010+
- 'else'#013#010+
- 'EXECPPAS:=@$(PPAS)'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- #013#010+
- #013#010+
- '[loaderrules]'#013#010+
- '###################','#################################################'+
- '#'#013#010+
- '# Loaders'#013#010+
- '#####################################################################'#013+
- #010+
- #013#010+
- '.PHONY: fpc_loaders'#013#010+
- #013#010+
- 'ifneq ($(TARGET_LOADERS),)'#013#010+
- 'override ALLTARGET+=fpc_loaders'#013#010+
- 'override CLEANTARGET','+=fpc_loaders_clean'#013#010+
- 'override INSTALLTARGET+=fpc_loaders_install'#013#010+
- #013#010+
- 'override LOADEROFILES:=$(addsuffix $(OEXT),$(TARGET_LOADERS))'#013#010+
- 'endif'#013#010+
- #013#010+
- '%$(OEXT): %$(LOADEREXT)'#013#010+
- 'ifdef COMPILER_UNITTARGETDIR'#013#010+
- ' $(AS) -o $(COMPILER_UNITTARGETDIR)/$*','$(OEXT) $<'#013#010+
- 'else'#013#010+
- ' $(AS) -o $*$(OEXT) $<'#013#010+
- 'endif'#013#010+
- #013#010+
- 'fpc_loaders: $(COMPILER_UNITTARGETDIR) $(LOADEROFILES)'#013#010+
- #013#010+
- 'fpc_loaders_clean:'#013#010+
- 'ifdef COMPILER_UNITTARGETDIR'#013#010+
+ #010+
+ '# it while compiling the fpmake file. (For example to build i386-freeb'+
+ 'sd'#010+
+ '# with BIN','UTILSPREFIX=i386-)'#010+
+ 'ifndef CROSSCOMPILE'#010+
+ 'ifneq ($(BINUTILSPREFIX),)'#010+
+ 'override FPCMAKEOPT+=-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+=$(addprefix -Fu,$(UNITDIR))'#010+
+ 'end','if'#010+
+ 'ifdef LIBDIR'#010+
+ 'override FPCOPT+=$(addprefix -Fl,$(LIBDIR))'#010+
+ 'endif'#010+
+ 'ifdef OBJDIR'#010+
+ 'override FPCOPT+=$(addprefix -Fo,$(OBJDIR))'#010+
+ 'endif'#010+
+ 'ifdef INCDIR'#010+
+ 'override FPCOPT+=$(addprefix -Fi,$(INCDIR))'#010+
+ 'endif'#010+
+ #010+
+ '# Smartlinking'#010+
+ 'ifdef LINKSMART'#010+
+ 'override FPCOPT+','=-XX'#010+
+ 'endif'#010+
+ #010+
+ '# Smartlinking creation'#010+
+ 'ifdef CREATESMART'#010+
+ 'override FPCOPT+=-CX'#010+
+ 'endif'#010+
+ #010+
+ '# Debug'#010+
+ 'ifdef DEBUG'#010+
+ 'override FPCOPT+=-gl'#010+
+ 'override FPCOPTDEF+=DEBUG'#010+
+ 'endif'#010+
+ #010+
+ '# Release mode'#010+
+ '# (strip, optimize and don'#039't load fpc.cfg)'#010+
+ '# fpc 2.1 has -O2 for all ','targets'#010+
+ 'ifdef RELEASE'#010+
+ 'ifneq ($(findstring 2.0.,$(FPC_VERSION)),)'#010+
+ 'ifeq ($(CPU_TARGET),i386)'#010+
+ 'FPCCPUOPT:=-OG2p3'#010+
+ 'endif'#010+
+ 'ifeq ($(CPU_TARGET),powerpc)'#010+
+ 'FPCCPUOPT:=-O1r'#010+
+ 'endif'#010+
+ 'else'#010+
+ 'FPCCPUOPT:=-O2'#010+
+ 'endif'#010+
+ 'override FPCOPT+=-Ur -Xs $(FPCCPUOPT) -n'#010+
+ 'overrid','e FPCOPTDEF+=RELEASE'#010+
+ 'endif'#010+
+ #010+
+ '# Strip'#010+
+ 'ifdef STRIP'#010+
+ 'override FPCOPT+=-Xs'#010+
+ 'endif'#010+
+ #010+
+ '# Optimizer'#010+
+ 'ifdef OPTIMIZE'#010+
+ 'override FPCOPT+=-O2'#010+
+ 'endif'#010+
+ #010+
+ '# Verbose settings (warning,note,info)'#010+
+ 'ifdef VERBOSE'#010+
+ 'override FPCOPT+=-vwni'#010+
+ 'endif'#010+
+ #010+
+ '# Needed 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_LIBRARYDIR'#010+
+ 'override FPCOPT+=$(addprefix -Fl,$(COMPILER_LIBRARYDIR))'#010+
+ 'endif'#010+
+ 'if','def COMPILER_OBJECTDIR'#010+
+ 'override FPCOPT+=$(addprefix -Fo,$(COMPILER_OBJECTDIR))'#010+
+ 'endif'#010+
+ 'ifdef COMPILER_INCLUDEDIR'#010+
+ 'override FPCOPT+=$(addprefix -Fi,$(COMPILER_INCLUDEDIR))'#010+
+ 'endif'#010+
+ #010+
+ '# Cross compiler utils'#010+
+ 'ifdef CROSSBINDIR'#010+
+ 'override FPCOPT+=-FD$(CR','OSSBINDIR)'#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+
+ 'override TARGETDIRPREFIX='#010+
+ 'else'#010+
+ 'override TARGETDIRPREFIX=$(COMPILER_TAR','GETDIR)/'#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_UNITTARGETDIR),.)'#010+
+ 'override UNITTARGETDIRPREFIX='#010+
+ 'else'#010+
+ 'override UNITTARGETDIRPRE','FIX=$(COMPILER_UNITTARGETDIR)/'#010+
+ 'endif'#010+
+ 'else'#010+
+ 'ifdef COMPILER_TARGETDIR'#010+
+ 'override COMPILER_UNITTARGETDIR=$(COMPILER_TARGETDIR)'#010+
+ 'override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX)'#010+
+ 'endif'#010+
+ 'endif'#010+
+ #010+
+ 'ifdef CREATESHARED'#010+
+ 'override FPCOPT+=-Cg'#010+
+ 'endif'#010+
+ #010+
+ '# create al','ways pic'#039'ed code on x86_64'#010+
+ 'ifneq ($(findstring $(OS_TARGET),freebsd openbsd netbsd linux solaris)'+
+ ',)'#010+
+ 'ifeq ($(CPU_TARGET),x86_64)'#010+
+ 'override FPCOPT+=-Cg'#010+
+ 'endif'#010+
+ 'endif'#010+
+ #010+
+ 'ifdef LINKSHARED'#010+
+ '#!!! deactived for testing override FPCOPT+=-XD'#010+
+ 'endif'#010+
+ #010+
+ #010+
+ '[comm','and_libc]'#010+
+ '# Add GCC lib path if asked'#010+
+ 'ifdef GCCLIBDIR'#010+
+ 'override FPCOPT+=-Fl$(GCCLIBDIR)'#010+
+ 'endif'#010+
+ 'ifdef OTHERLIBDIR'#010+
+ 'override FPCOPT+=$(addprefix -Fl,$(OTHERLIBDIR))'#010+
+ 'endif'#010+
+ #010+
+ #010+
+ '[command_end]'#010+
+ '# Add commandline options last so they can override'#010+
+ 'ifdef ','OPT'#010+
+ 'override FPCOPT+=$(OPT)'#010+
+ 'endif'#010+
+ #010+
+ '# Add defines from FPCOPTDEF to FPCOPT'#010+
+ 'ifdef FPCOPTDEF'#010+
+ 'override FPCOPT+=$(addprefix -d,$(FPCOPTDEF))'#010+
+ 'endif'#010+
+ #010+
+ '# Was a config file specified ?'#010+
+ 'ifdef CFGFILE'#010+
+ 'override FPCOPT+=@$(CFGFILE)'#010+
+ 'endif'#010+
+ #010+
+ '# Use the envir','onment to pass commandline options?'#010+
+ 'ifdef USEENV'#010+
+ 'override FPCEXTCMD:=$(FPCOPT)'#010+
+ 'override FPCOPT:=!FPCEXTCMD'#010+
+ 'export FPCEXTCMD'#010+
+ 'endif'#010+
+ #010+
+ 'override AFULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)'#010+
+ 'override AFULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)'#010+
+ #010+
+ 'ifneq ($(A','FULL_TARGET),$(AFULL_SOURCE))'#010+
+ 'override ACROSSCOMPILE=1'#010+
+ 'endif'#010+
+ #010+
+ 'ifdef ACROSSCOMPILE'#010+
+ 'override 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+
+ '# or if -sh is used'#010+
+ 'ifneq (,$(findstring -sh ,$(COMPILER)))'#010+
+ 'UseEXECPPAS=1'#010+
+ 'endif'#010+
+ 'ifneq (,$(findstring -s ,$(COMPILER)))'#010+
+ 'ifeq ($(FULL_SOURCE),$(FULL_TARGET))'#010+
+ 'UseEXECPPAS=1'#010+
+ 'endif'#010+
+ 'endif'#010+
+ 'ifneq ($(Use','EXECPPAS),1)'#010+
+ 'EXECPPAS='#010+
+ 'else'#010+
+ 'ifdef RUNBATCH'#010+
+ 'EXECPPAS:=@$(RUNBATCH) $(PPAS)'#010+
+ 'else'#010+
+ 'EXECPPAS:=@$(PPAS)'#010+
+ 'endif'#010+
+ 'endif'#010+
+ #010+
+ #010+
+ '[loaderrules]'#010+
+ '#####################################################################'#010+
+ '# Loaders'#010+
+ '##################################','##################################'+
+ '#'#010+
+ #010+
+ '.PHONY: fpc_loaders'#010+
+ #010+
+ 'ifneq ($(TARGET_LOADERS),)'#010+
+ 'override ALLTARGET+=fpc_loaders'#010+
+ 'override CLEANTARGET+=fpc_loaders_clean'#010+
+ 'override INSTALLTARGET+=fpc_loaders_install'#010+
+ #010+
+ 'override LOADEROFILES:=$(addsuffix $(O','EXT),$(TARGET_LOADERS))'#010+
+ 'endif'#010+
+ #010+
+ '%$(OEXT): %$(LOADEREXT)'#010+
+ 'ifdef COMPILER_UNITTARGETDIR'#010+
+ ' $(AS) -o $(COMPILER_UNITTARGETDIR)/$*$(OEXT) $<'#010+
+ 'else'#010+
+ ' $(AS) -o $*$(OEXT) $<'#010+
+ 'endif'#010+
+ #010+
+ 'fpc_loaders: $(COMPILER_UNITTARGETDIR) $(LOADEROFILES)'#010+
+ #010+
+ 'fp','c_loaders_clean:'#010+
+ 'ifdef COMPILER_UNITTARGETDIR'#010+
' -$(DEL) $(addprefix $(COMPILER_UNITTARGETDIR)/,$(LOADEROFILES)'+
- ')'#013#010+
- 'e','lse'#013#010+
- ' -$(DEL) $(LOADEROFILES)'#013#010+
- 'endif'#013#010+
- #013#010+
- 'fpc_loaders_install:'#013#010+
- ' $(MKDIR) $(INSTALL_UNITDIR)'#013#010+
- 'ifdef COMPILER_UNITTARGETDIR'#013#010+
+ ')'#010+
+ 'else'#010+
+ ' -$(DEL) $(LOADEROFILES)'#010+
+ 'endif'#010+
+ #010+
+ 'fpc_loaders_install:'#010+
+ ' $(MKDIR) $(INSTALL_UNITDIR)'#010+
+ 'ifdef COMPILER_UNITTA','RGETDIR'#010+
' $(INSTALL) $(addprefix $(COMPILER_UNITTARGETDIR)/,$(LOADEROFIL'+
- 'ES)) $(INSTALL_UNITDIR)'#013#010+
- 'else'#013#010+
- ' ',' $(INSTALL) $(LOADEROFILES) $(INSTALL_UNITDIR)'#013#010+
- 'endif'#013#010+
- #013#010+
- #013#010+
- '[unitrules]'#013#010+
- '#####################################################################'#013+
- #010+
- '# Units'#013#010+
- '#####################################################################'#013+
- #010+
- #013#010+
- '.PHONY: fpc','_units'#013#010+
- #013#010+
- 'ifneq ($(TARGET_UNITS)$(TARGET_IMPLICITUNITS),)'#013#010+
- 'override ALLTARGET+=fpc_units'#013#010+
- #013#010+
- 'override UNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET_UNITS))'#013#010+
+ 'ES)) $(INSTALL_UNITDIR)'#010+
+ 'else'#010+
+ ' $(INSTALL) $(LOADEROFILES) $(INSTALL_UNITDIR)'#010+
+ 'endif'#010+
+ #010+
+ #010+
+ '[unitrules]'#010+
+ '###########################################################','#########'+
+ '#'#010+
+ '# Units'#010+
+ '#####################################################################'#010+
+ #010+
+ '.PHONY: fpc_units'#010+
+ #010+
+ 'ifneq ($(TARGET_UNITS)$(TARGET_IMPLICITUNITS),)'#010+
+ 'override ALLTARGET+=fpc_units'#010+
+ #010+
+ 'override UNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET','_UNITS))'#010+
'override IMPLICITUNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET_IMPLICITU'+
- 'NITS))'#013#010+
- 'override',' INSTALLPPUFILES+=$(UNITPPUFILES) $(IMPLICITUNITPPUFILES)'#013+
- #010+
- 'override CLEANPPUFILES+=$(UNITPPUFILES) $(IMPLICITUNITPPUFILES)'#013#010+
- 'endif'#013#010+
- #013#010+
- 'fpc_units: $(COMPILER_UNITTARGETDIR) $(UNITPPUFILES)'#013#010+
- #013#010+
- #013#010+
- '[exerules]'#013#010+
- '#####################################','###############################'+
- '#'#013#010+
- '# Exes'#013#010+
- '#####################################################################'#013+
- #010+
- #013#010+
- '.PHONY: fpc_exes'#013#010+
- #013#010+
- '# Programs are not needed for a cross installation'#013#010+
- 'ifndef CROSSINSTALL'#013#010+
- 'ifneq ($(TARGET_PROGRAMS),)'#013#010+
- 'ove','rride EXEFILES=$(addsuffix $(EXEEXT),$(TARGET_PROGRAMS))'#013#010+
+ 'NITS))'#010+
+ 'override INSTALLPPUFILES+=$(UNITPPUFILES) $(IMPLICITUNITPPUFILES)'#010+
+ 'override CLEANPPUFILES+=$(UNITPPUFILES) $(IMPLICITUNITPPUFILES)'#010+
+ 'endif'#010+
+ #010+
+ 'fpc_units: $(COMP','ILER_UNITTARGETDIR) $(UNITPPUFILES)'#010+
+ #010+
+ #010+
+ '[exerules]'#010+
+ '#####################################################################'#010+
+ '# Exes'#010+
+ '#####################################################################'#010+
+ #010+
+ '.PHONY: fpc_exes'#010+
+ #010+
+ '# Programs are not needed',' for a cross installation'#010+
+ 'ifndef CROSSINSTALL'#010+
+ 'ifneq ($(TARGET_PROGRAMS),)'#010+
+ 'override EXEFILES=$(addsuffix $(EXEEXT),$(TARGET_PROGRAMS))'#010+
'override EXEOFILES:=$(addsuffix $(OEXT),$(TARGET_PROGRAMS)) $(addprefi'+
- 'x $(STATICLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_PROGRAMS))) '+
- '$(addprefix $(IMPORTLIBPREFIX),$(addsuffix',' $(STATICLIBEXT),$(TARGET_'+
- 'PROGRAMS)))'#013#010+
- 'override EXEDBGFILES:=$(addsuffix $(EXEDBGEXT),$(TARGET_PROGRAMS))'#013+
- #010+
- #013#010+
- 'override ALLTARGET+=fpc_exes'#013#010+
- 'override INSTALLEXEFILES+=$(EXEFILES)'#013#010+
- 'override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES)'#013#010+
- 'override CLE','ANEXEDBGFILES+=$(EXEDBGFILES)'#013#010+
- 'ifeq ($(OS_TARGET),os2)'#013#010+
- 'override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_PROGRAMS))'#013+
- #010+
- 'endif'#013#010+
- 'ifeq ($(OS_TARGET),emx)'#013#010+
- 'override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_PROGRAMS))'#013+
- #010+
- 'endif'#013#010+
- 'endif'#013#010+
- 'en','dif'#013#010+
- #013#010+
- 'fpc_exes: $(COMPILER_TARGETDIR) $(COMPILER_UNITTARGETDIR) $(EXEFILES)'#013+
- #010+
- #013#010+
- #013#010+
- '[rstrules]'#013#010+
- '#####################################################################'#013+
- #010+
- '# Resource strings'#013#010+
- '#######################################################','#############'+
- '#'#013#010+
- #013#010+
- 'ifdef TARGET_RSTS'#013#010+
- 'override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS))'#013#010+
- #013#010+
- 'override CLEANRSTFILES+=$(RSTFILES)'#013#010+
- 'endif'#013#010+
- #013#010+
- #013#010+
- '[examplerules]'#013#010+
- '#####################################################################'#013+
- #010+
- '# Example','s'#013#010+
- '#####################################################################'#013+
- #010+
- #013#010+
- '.PHONY: fpc_examples'#013#010+
- #013#010+
- 'ifneq ($(TARGET_EXAMPLES),)'#013#010+
- 'HASEXAMPLES=1'#013#010+
- 'override EXAMPLESOURCEFILES:=$(wildcard $(addsuffix .pp,$(TARGET_EXAMP'+
- 'LES)) $(addsuffix .pas,$(T','ARGET_EXAMPLES)) $(addsuffix .lpr,$(TARGET'+
- '_EXAMPLES)) $(addsuffix .dpr,$(TARGET_EXAMPLES)))'#013#010+
- 'override EXAMPLEFILES:=$(addsuffix $(EXEEXT),$(TARGET_EXAMPLES))'#013#010+
- 'override EXAMPLEOFILES:=$(addsuffix $(OEXT),$(TARGET_EXAMPLES)) $(addp'+
- 'refix $(STA','TICLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_EXAMPL'+
+ 'x $(STATICLIBPREFIX),$(addsuffix $(S','TATICLIBEXT),$(TARGET_PROGRAMS))'+
+ ') $(addprefix $(IMPORTLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_'+
+ 'PROGRAMS)))'#010+
+ 'override EXEDBGFILES:=$(addsuffix $(EXEDBGEXT),$(TARGET_PROGRAMS))'#010+
+ #010+
+ 'override ALLTARGET+=fpc_exes'#010+
+ 'override INSTALLEXEFILES+=$(E','XEFILES)'#010+
+ 'override CLEANEXEFILES+=$(EXEFILES) $(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 CLEANEXEFI','LES+=$(addsuffix $(AOUTEXT),$(TARGET_PROGRAMS))'#010+
+ 'endif'#010+
+ 'endif'#010+
+ 'endif'#010+
+ #010+
+ 'fpc_exes: $(COMPILER_TARGETDIR) $(COMPILER_UNITTARGETDIR) $(EXEFILES)'#010+
+ #010+
+ #010+
+ '[rstrules]'#010+
+ '#####################################################################'#010+
+ '# Resource strings'#010+
+ '#','###################################################################'+
+ '#'#010+
+ #010+
+ 'ifdef TARGET_RSTS'#010+
+ 'override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS))'#010+
+ #010+
+ 'override CLEANRSTFILES+=$(RSTFILES)'#010+
+ 'endif'#010+
+ #010+
+ #010+
+ '[examplerules]'#010+
+ '####################################','################################'+
+ '#'#010+
+ '# Examples'#010+
+ '#####################################################################'#010+
+ #010+
+ '.PHONY: fpc_examples'#010+
+ #010+
+ 'ifneq ($(TARGET_EXAMPLES),)'#010+
+ 'HASEXAMPLES=1'#010+
+ 'override EXAMPLESOURCEFILES:=$(wildcard $(addsuffix .pp,$(TA','RGET_EXA'+
+ 'MPLES)) $(addsuffix .pas,$(TARGET_EXAMPLES)) $(addsuffix .lpr,$(TARGET'+
+ '_EXAMPLES)) $(addsuffix .dpr,$(TARGET_EXAMPLES)))'#010+
+ 'override EXAMPLEFILES:=$(addsuffix $(EXEEXT),$(TARGET_EXAMPLES))'#010+
+ 'override EXAMPLEOFILES:=$(addsuffix $(OEXT),$(T','ARGET_EXAMPLES)) $(ad'+
+ 'dprefix $(STATICLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_EXAMPL'+
'ES))) $(addprefix $(IMPORTLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TAR'+
- 'GET_EXAMPLES)))'#013#010+
- 'override EXAMPLEDBGFILES:=$(addsuffix $(EXEDBGEXT),$(TARGET_EXAMPLES))'+
- #013#010+
- #013#010+
- 'override CLEANEXEFILES','+=$(EXAMPLEFILES) $(EXAMPLEOFILES)'#013#010+
- 'override CLEANEXEDBGFILES+=$(EXAMPLEDBGFILES)'#013#010+
- 'ifeq ($(OS_TARGET),os2)'#013#010+
- 'override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_EXAMPLES))'#013+
- #010+
- 'endif'#013#010+
- 'ifeq ($(OS_TARGET),emx)'#013#010+
- 'override CLEANEXEFILES+=$(addsuf','fix $(AOUTEXT),$(TARGET_EXAMPLES))'#013+
- #010+
- 'endif'#013#010+
- 'endif'#013#010+
- 'ifneq ($(TARGET_EXAMPLEDIRS),)'#013#010+
- 'HASEXAMPLES=1'#013#010+
- 'endif'#013#010+
- #013#010+
+ 'GET_EXAMPLES)))'#010+
+ 'override EXAMPLEDBGFILES:=$(addsuffix $(EXEDBGEXT),$(TARGET_EXA','MPLES'+
+ '))'#010+
+ #010+
+ 'override CLEANEXEFILES+=$(EXAMPLEFILES) $(EXAMPLEOFILES)'#010+
+ 'override CLEANEXEDBGFILES+=$(EXAMPLEDBGFILES)'#010+
+ 'ifeq ($(OS_TARGET),os2)'#010+
+ 'override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_EXAMPLES))'#010+
+ 'endif'#010+
+ 'ifeq ($(OS_TARGET),emx)'#010+
+ 'overrid','e CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_EXAMPLES))'#010+
+ 'endif'#010+
+ 'endif'#010+
+ 'ifneq ($(TARGET_EXAMPLEDIRS),)'#010+
+ 'HASEXAMPLES=1'#010+
+ 'endif'#010+
+ #010+
'fpc_examples: all $(EXAMPLEFILES) $(addsuffix _all,$(TARGET_EXAMPLEDIR'+
- 'S))'#013#010+
- #013#010+
- #013#010+
- '[compilerules]'#013#010+
- '#######################################','#############################'+
- '#'#013#010+
- '# General compile rules'#013#010+
- '#####################################################################'#013+
- #010+
- #013#010+
- '.PHONY: fpc_all fpc_smart fpc_debug fpc_release fpc_shared'#013#010+
- #013#010+
- '$(FPCMADE): $(ALLDEPENDENCIES) $(ALLTARGET)'#013#010+
- ' ',' @$(ECHOREDIR) Compiled > $(FPCMADE)'#013#010+
- #013#010+
- 'fpc_all: $(FPCMADE)'#013#010+
- #013#010+
- 'fpc_smart:'#013#010+
- ' $(MAKE) all LINKSMART=1 CREATESMART=1'#013#010+
- #013#010+
- 'fpc_debug:'#013#010+
- ' $(MAKE) all DEBUG=1'#013#010+
- #013#010+
- 'fpc_release:'#013#010+
- ' $(MAKE) all RELEASE=1'#013#010+
- #013#010+
- '# General compile rule','s, available for both possible .pp and .pas ex'+
- 'tensions'#013#010+
- #013#010+
- '.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .lpr .dpr .pp .rc .res'#013+
- #010+
- #013#010+
- '$(COMPILER_UNITTARGETDIR):'#013#010+
- ' $(MKDIRTREE) $(COMPILER_UNITTARGETDIR)'#013#010+
- #013#010+
- '$(COMPILER_TARGETDIR):'#013#010+
- ' $(','MKDIRTREE) $(COMPILER_TARGETDIR)'#013#010+
- #013#010+
- '%$(PPUEXT): %.pp'#013#010+
- ' $(COMPILER) $<'#013#010+
- ' $(EXECPPAS)'#013#010+
- #013#010+
- '%$(PPUEXT): %.pas'#013#010+
- ' $(COMPILER) $<'#013#010+
- ' $(EXECPPAS)'#013#010+
- #013#010+
- '%$(EXEEXT): %.pp'#013#010+
- ' $(COMPILER) $<'#013#010+
- ' $(EXECPPAS)'#013#010+
- #013#010+
- '%$(EXEEX','T): %.pas'#013#010+
- ' $(COMPILER) $<'#013#010+
- ' $(EXECPPAS)'#013#010+
- #013#010+
- '%$(EXEEXT): %.lpr'#013#010+
- ' $(COMPILER) $<'#013#010+
- ' $(EXECPPAS)'#013#010+
- #013#010+
- '%$(EXEEXT): %.dpr'#013#010+
- ' $(COMPILER) $<'#013#010+
- ' $(EXECPPAS)'#013#010+
- #013#010+
- '%.res: %.rc'#013#010+
- ' windres -i $< -o $@'#013#010+
- #013#010+
- '# Sear','ch paths for .ppu, .pp, .pas, .lpr, .dpr'#013#010+
- 'vpath %.pp $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)'#013#010+
- 'vpath %.pas $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)'#013#010+
- 'vpath %.lpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)'#013#010+
- 'vpath %.dpr $(COMPILER_SO','URCEDIR) $(COMPILER_INCLUDEDIR)'#013#010+
- 'vpath %.inc $(COMPILER_INCLUDEDIR)'#013#010+
- 'vpath %$(OEXT) $(COMPILER_UNITTARGETDIR)'#013#010+
- 'vpath %$(PPUEXT) $(COMPILER_UNITTARGETDIR)'#013#010+
- #013#010+
- '[sharedrules]'#013#010+
- '####################################################################','#'+
- #013#010+
- '# Library'#013#010+
- '#####################################################################'#013+
- #010+
- #013#010+
- '.PHONY: fpc_shared'#013#010+
- #013#010+
- 'override INSTALLTARGET+=fpc_shared_install'#013#010+
- #013#010+
- 'ifndef SHARED_LIBVERSION'#013#010+
- 'SHARED_LIBVERSION=$(FPC_VERSION)'#013#010+
- 'endif'#013#010+
- #013#010+
- 'ifndef SHARED_LI','BNAME'#013#010+
- 'SHARED_LIBNAME=$(PACKAGE_NAME)'#013#010+
- 'endif'#013#010+
- #013#010+
- 'ifndef SHARED_FULLNAME'#013#010+
+ 'S))'#010+
+ #010+
+ #010+
+ '[compilerules]'#010+
+ '#########################','###########################################'+
+ '#'#010+
+ '# General compile rules'#010+
+ '#####################################################################'#010+
+ #010+
+ '.PHONY: fpc_all fpc_smart fpc_debug fpc_release fpc_shared'#010+
+ #010+
+ '$(FPCMADE): $(ALLDEPENDENCIES) $(ALLTARG','ET)'#010+
+ ' @$(ECHOREDIR) Compiled > $(FPCMADE)'#010+
+ #010+
+ 'fpc_all: $(FPCMADE)'#010+
+ #010+
+ 'fpc_smart:'#010+
+ ' $(MAKE) all LINKSMART=1 CREATESMART=1'#010+
+ #010+
+ 'fpc_debug:'#010+
+ ' $(MAKE) all DEBUG=1'#010+
+ #010+
+ 'fpc_release:'#010+
+ ' $(MAKE) all RELEASE=1'#010+
+ #010+
+ '# General compile rules, ava','ilable for both possible .pp and .pas ex'+
+ 'tensions'#010+
+ #010+
+ '.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .lpr .dpr .pp .rc .res'#010+
+ #010+
+ '$(COMPILER_UNITTARGETDIR):'#010+
+ ' $(MKDIRTREE) $(COMPILER_UNITTARGETDIR)'#010+
+ #010+
+ '$(COMPILER_TARGETDIR):'#010+
+ ' $(MKDIRTREE) $(C','OMPILER_TARGETDIR)'#010+
+ #010+
+ '%$(PPUEXT): %.pp'#010+
+ ' $(COMPILER) $<'#010+
+ ' $(EXECPPAS)'#010+
+ #010+
+ '%$(PPUEXT): %.pas'#010+
+ ' $(COMPILER) $<'#010+
+ ' $(EXECPPAS)'#010+
+ #010+
+ '%$(EXEEXT): %.pp'#010+
+ ' $(COMPILER) $<'#010+
+ ' $(EXECPPAS)'#010+
+ #010+
+ '%$(EXEEXT): %.pas'#010+
+ ' $(COMPILER',') $<'#010+
+ ' $(EXECPPAS)'#010+
+ #010+
+ '%$(EXEEXT): %.lpr'#010+
+ ' $(COMPILER) $<'#010+
+ ' $(EXECPPAS)'#010+
+ #010+
+ '%$(EXEEXT): %.dpr'#010+
+ ' $(COMPILER) $<'#010+
+ ' $(EXECPPAS)'#010+
+ #010+
+ '%.res: %.rc'#010+
+ ' windres -i $< -o $@'#010+
+ #010+
+ '# Search paths for .ppu, .pp, .pas, .lpr, .dpr'#010+
+ 'vp','ath %.pp $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)'#010+
+ 'vpath %.pas $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)'#010+
+ 'vpath %.lpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)'#010+
+ 'vpath %.dpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)'#010+
+ 'vpath %.inc $(C','OMPILER_INCLUDEDIR)'#010+
+ 'vpath %$(OEXT) $(COMPILER_UNITTARGETDIR)'#010+
+ 'vpath %$(PPUEXT) $(COMPILER_UNITTARGETDIR)'#010+
+ #010+
+ '[sharedrules]'#010+
+ '#####################################################################'#010+
+ '# Library'#010+
+ '#########################################','###########################'+
+ '#'#010+
+ #010+
+ '.PHONY: fpc_shared'#010+
+ #010+
+ 'override INSTALLTARGET+=fpc_shared_install'#010+
+ #010+
+ 'ifndef SHARED_LIBVERSION'#010+
+ 'SHARED_LIBVERSION=$(FPC_VERSION)'#010+
+ 'endif'#010+
+ #010+
+ 'ifndef SHARED_LIBNAME'#010+
+ 'SHARED_LIBNAME=$(PACKAGE_NAME)'#010+
+ 'endif'#010+
+ #010+
+ 'ifndef SHARED_FULLNAM','E'#010+
'SHARED_FULLNAME=$(SHAREDLIBPREFIX)$(SHARED_LIBNAME)-$(SHARED_LIBVERSIO'+
- 'N)$(SHAREDLIBEXT)'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Default sharedlib units are all unit objects'#013#010+
- 'ifndef SHARED_LIBUNITS',#013#010+
- 'SHARED_LIBUNITS:=$(TARGET_UNITS) $(TARGET_IMPLICITUNITS)'#013#010+
- 'override SHARED_LIBUNITS:=$(filter-out $(INSTALL_BUILDUNIT),$(SHARED_L'+
- 'IBUNITS))'#013#010+
- 'endif'#013#010+
- #013#010+
- 'fpc_shared:'#013#010+
- 'ifdef HASSHAREDLIB'#013#010+
- ' $(MAKE) all CREATESHARED=1 LINKSHARED=1 CREATESMA','RT=1'#013#010+
- 'ifneq ($(SHARED_BUILD),n)'#013#010+
- ' $(PPUMOVE) -q $(SHARED_LIBUNITS) -i$(COMPILER_UNITTARGETDIR) -'+
- 'o$(SHARED_FULLNAME) -d$(COMPILER_UNITTARGETDIR)'#013#010+
- 'endif'#013#010+
- 'else'#013#010+
- ' @$(ECHO) Shared Libraries not supported'#013#010+
- 'endif'#013#010+
- #013#010+
- 'fpc_shared_instal','l:'#013#010+
- 'ifneq ($(SHARED_BUILD),n)'#013#010+
- 'ifneq ($(SHARED_LIBUNITS),)'#013#010+
- 'ifneq ($(wildcard $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME)),)'#013#010+
+ 'N)$(SHAREDLIBEXT)'#010+
+ 'endif'#010+
+ #010+
+ '# Default sharedlib units are all unit objects'#010+
+ 'ifndef SHARED_LIBUNITS'#010+
+ 'SHARED_LIBUNITS:=$(TARGET_UNITS) $(TARGET_IMPLICITUNITS)'#010+
+ 'override SHARED_','LIBUNITS:=$(filter-out $(INSTALL_BUILDUNIT),$(SHARED'+
+ '_LIBUNITS))'#010+
+ 'endif'#010+
+ #010+
+ 'fpc_shared:'#010+
+ 'ifdef HASSHAREDLIB'#010+
+ ' $(MAKE) all CREATESHARED=1 LINKSHARED=1 CREATESMART=1'#010+
+ 'ifneq ($(SHARED_BUILD),n)'#010+
+ ' $(PPUMOVE) -q $(SHARED_LIBUNITS) -i$(COMPI','LER_UNITTARGETDIR)'+
+ ' -o$(SHARED_FULLNAME) -d$(COMPILER_UNITTARGETDIR)'#010+
+ 'endif'#010+
+ 'else'#010+
+ ' @$(ECHO) Shared Libraries not supported'#010+
+ 'endif'#010+
+ #010+
+ 'fpc_shared_install:'#010+
+ 'ifneq ($(SHARED_BUILD),n)'#010+
+ 'ifneq ($(SHARED_LIBUNITS),)'#010+
+ 'ifneq ($(wildcard $(COMPILER_UNI','TTARGETDIR)/$(SHARED_FULLNAME)),)'#010+
' $(INSTALL) $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME) $(INST'+
- 'ALL_SHAREDDIR)'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- #013#010+
- '[ins','tallrules]'#013#010+
- '#####################################################################'#013+
- #010+
- '# Install rules'#013#010+
- '#####################################################################'#013+
- #010+
- #013#010+
- '.PHONY: fpc_install fpc_sourceinstall fpc_exampleinstall'#013#010+
- #013#010+
- 'ifdef I','NSTALL_UNITS'#013#010+
- 'override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(INSTALL_UNITS))'#013#010+
- 'endif'#013#010+
- #013#010+
- 'ifdef INSTALL_BUILDUNIT'#013#010+
+ 'ALL_SHAREDDIR)'#010+
+ 'endif'#010+
+ 'endif'#010+
+ 'endif'#010+
+ #010+
+ '[installrules]'#010+
+ '#####################################################################'#010+
+ '# Install rules'#010+
+ '#','###################################################################'+
+ '#'#010+
+ #010+
+ '.PHONY: fpc_install fpc_sourceinstall fpc_exampleinstall'#010+
+ #010+
+ 'ifdef INSTALL_UNITS'#010+
+ 'override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(INSTALL_UNITS))'#010+
+ 'endif'#010+
+ #010+
+ 'ifdef INSTALL_BUILD','UNIT'#010+
'override INSTALLPPUFILES:=$(filter-out $(INSTALL_BUILDUNIT)$(PPUEXT),$'+
- '(INSTALLPPUFILES))'#013#010+
- 'endif'#013#010+
- #013#010+
- 'ifdef INSTALLPPUFILES'#013#010+
- 'ove','rride INSTALLPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPU'+
- 'FILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEX'+
+ '(INSTALLPPUFILES))'#010+
+ 'endif'#010+
+ #010+
+ 'ifdef INSTALLPPUFILES'#010+
+ 'override INSTALLPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFI'+
+ 'LES)) $(addprefix $(STATICLIBPREFIX),$(subst $(','PPUEXT),$(STATICLIBEX'+
'T),$(INSTALLPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEX'+
- 'T),$(STATICLIBEXT),$(INSTALLPPUFILE','S)))'#013#010+
- 'ifneq ($(UNITTARGETDIRPREFIX),)'#013#010+
+ 'T),$(STATICLIBEXT),$(INSTALLPPUFILES)))'#010+
+ 'ifneq ($(UNITTARGETDIRPREFIX),)'#010+
'override INSTALLPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(notdir '+
- '$(INSTALLPPUFILES)))'#013#010+
+ '$(INSTA','LLPPUFILES)))'#010+
'override INSTALLPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPR'+
- 'EFIX),$(notdir $(INSTALLPPULINKFILES)))',')'#013#010+
- 'endif'#013#010+
- '# Implicitly install Package.fpc'#013#010+
- 'override INSTALL_CREATEPACKAGEFPC=1'#013#010+
- 'endif'#013#010+
- #013#010+
- 'ifdef INSTALLEXEFILES'#013#010+
- 'ifneq ($(TARGETDIRPREFIX),)'#013#010+
+ 'EFIX),$(notdir $(INSTALLPPULINKFILES))))'#010+
+ 'endif'#010+
+ '# Implicitly install Package.fpc'#010+
+ 'override INSTALL_CREATEPACKAGEFPC=1'#010+
+ 'endif'#010+
+ #010+
+ 'ifdef INSTALLEXEFILES'#010+
+ 'ifneq ($(TA','RGETDIRPREFIX),)'#010+
'override INSTALLEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(notdir $(IN'+
- 'STALLEXEFILES)))'#013#010+
- 'endif'#013#010+
- 'end','if'#013#010+
- #013#010+
- 'fpc_install: all $(INSTALLTARGET)'#013#010+
- 'ifdef INSTALLEXEFILES'#013#010+
- ' $(MKDIR) $(INSTALL_BINDIR)'#013#010+
- ' $(INSTALLEXE) $(INSTALLEXEFILES) $(INSTALL_BINDIR)'#013#010+
- 'endif'#013#010+
- 'ifdef INSTALL_CREATEPACKAGEFPC'#013#010+
- 'ifdef FPCMAKE'#013#010+
- '# If the fpcpackage variab','le is set then create and install Package.'+
- 'fpc,'#013#010+
- '# a safety check is done if Makefile.fpc is available'#013#010+
- 'ifdef PACKAGE_VERSION'#013#010+
- 'ifneq ($(wildcard Makefile.fpc),)'#013#010+
- ' $(FPCMAKE) -p -T$(CPU_TARGET)-$(OS_TARGET) Makefile.fpc'#013#010+
- ' $(MKDI','R) $(INSTALL_UNITDIR)'#013#010+
- ' $(INSTALL) Package.fpc $(INSTALL_UNITDIR)'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- 'ifdef INSTALLPPUFILES'#013#010+
- ' $(MKDIR) $(INSTALL_UNITDIR)'#013#010+
- ' $(INSTALL) $(INSTALLPPUFILES) $(INSTALL_UNITDIR)'#013#010+
- 'ifneq ($(INSTALLPPUL','INKFILES),)'#013#010+
- ' $(INSTALL) $(INSTALLPPULINKFILES) $(INSTALL_UNITDIR)'#013#010+
- 'endif'#013#010+
- 'ifneq ($(wildcard $(LIB_FULLNAME)),)'#013#010+
- ' $(MKDIR) $(INSTALL_LIBDIR)'#013#010+
- ' $(INSTALL) $(LIB_FULLNAME) $(INSTALL_LIBDIR)'#013#010+
- 'ifdef inUnix'#013#010+
- ' ln -sf $','(LIB_FULLNAME) $(INSTALL_LIBDIR)/$(LIB_NAME)'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- 'ifdef INSTALL_FILES'#013#010+
- ' $(MKDIR) $(INSTALL_DATADIR)'#013#010+
- ' $(INSTALL) $(INSTALL_FILES) $(INSTALL_DATADIR)'#013#010+
- 'endif'#013#010+
- #013#010+
- 'fpc_sourceinstall: distclean'#013#010+
- ' $(MKDIR) $(I','NSTALL_SOURCEDIR)'#013#010+
- ' $(COPYTREE) $(BASEDIR)/* $(INSTALL_SOURCEDIR)'#013#010+
- #013#010+
- 'fpc_exampleinstall: $(addsuffix _distclean,$(TARGET_EXAMPLEDIRS))'#013#010+
- 'ifdef HASEXAMPLES'#013#010+
- ' $(MKDIR) $(INSTALL_EXAMPLEDIR)'#013#010+
- 'endif'#013#010+
- 'ifdef EXAMPLESOURCEFILES'#013#010+
- ' ',' $(COPY) $(EXAMPLESOURCEFILES) $(INSTALL_EXAMPLEDIR)'#013#010+
- 'endif'#013#010+
- 'ifdef TARGET_EXAMPLEDIRS'#013#010+
+ 'STALLEXEFILES)))'#010+
+ 'endif'#010+
+ 'endif'#010+
+ #010+
+ 'fpc_install: all $(INSTALLTARGET)'#010+
+ 'ifdef INSTALLEXEFILES'#010+
+ ' $(MKDIR) $(INSTALL_BINDIR)'#010+
+ ' $(INSTALLEXE) $(INSTALLE','XEFILES) $(INSTALL_BINDIR)'#010+
+ 'endif'#010+
+ 'ifdef INSTALL_CREATEPACKAGEFPC'#010+
+ 'ifdef FPCMAKE'#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 ($(wild','card Makefile.fpc),)'#010+
+ ' $(FPCMAKE) -p -T$(CPU_TARGET)-$(OS_TARGET) Makefile.fpc'#010+
+ ' $(MKDIR) $(INSTALL_UNITDIR)'#010+
+ ' $(INSTALL) Package.fpc $(INSTALL_UNITDIR)'#010+
+ 'endif'#010+
+ 'endif'#010+
+ 'endif'#010+
+ 'endif'#010+
+ 'ifdef INSTALLPPUFILES'#010+
+ ' $(MKDIR) $(INST','ALL_UNITDIR)'#010+
+ ' $(INSTALL) $(INSTALLPPUFILES) $(INSTALL_UNITDIR)'#010+
+ 'ifneq ($(INSTALLPPULINKFILES),)'#010+
+ ' $(INSTALL) $(INSTALLPPULINKFILES) $(INSTALL_UNITDIR)'#010+
+ 'endif'#010+
+ 'ifneq ($(wildcard $(LIB_FULLNAME)),)'#010+
+ ' $(MKDIR) $(INSTALL_LIBDIR)',#010+
+ ' $(INSTALL) $(LIB_FULLNAME) $(INSTALL_LIBDIR)'#010+
+ 'ifdef inUnix'#010+
+ ' ln -sf $(LIB_FULLNAME) $(INSTALL_LIBDIR)/$(LIB_NAME)'#010+
+ 'endif'#010+
+ 'endif'#010+
+ 'endif'#010+
+ 'ifdef INSTALL_FILES'#010+
+ ' $(MKDIR) $(INSTALL_DATADIR)'#010+
+ ' $(INSTALL) $(INSTALL_FILES) $(','INSTALL_DATADIR)'#010+
+ 'endif'#010+
+ #010+
+ 'fpc_sourceinstall: distclean'#010+
+ ' $(MKDIR) $(INSTALL_SOURCEDIR)'#010+
+ ' $(COPYTREE) $(BASEDIR)/* $(INSTALL_SOURCEDIR)'#010+
+ #010+
+ 'fpc_exampleinstall: $(addsuffix _distclean,$(TARGET_EXAMPLEDIRS))'#010+
+ 'ifdef HASEXAMPLES'#010+
+ ' $(','MKDIR) $(INSTALL_EXAMPLEDIR)'#010+
+ 'endif'#010+
+ 'ifdef EXAMPLESOURCEFILES'#010+
+ ' $(COPY) $(EXAMPLESOURCEFILES) $(INSTALL_EXAMPLEDIR)'#010+
+ 'endif'#010+
+ 'ifdef TARGET_EXAMPLEDIRS'#010+
' $(COPYTREE) $(addsuffix /*,$(TARGET_EXAMPLEDIRS)) $(INSTALL_EX'+
- 'AMPLEDIR)'#013#010+
- 'endif'#013#010+
- #013#010+
- '[distinstallrules]'#013#010+
- '#########################################','###########################'+
- '#'#013#010+
- '# Dist Install'#013#010+
- '#####################################################################'#013+
- #010+
- #013#010+
- '.PHONY: fpc_distinstall'#013#010+
- #013#010+
- 'fpc_distinstall: install exampleinstall'#013#010+
- #013#010+
- #013#010+
- '[zipinstallrules]'#013#010+
- '##############################','######################################'+
- '#'#013#010+
- '# Zip'#013#010+
- '#####################################################################'#013+
- #010+
- #013#010+
- '.PHONY: fpc_zipinstall fpc_zipsourceinstall fpc_zipexampleinstall'#013#010+
- #013#010+
- '# Temporary path to pack a file, can only use a si','ngle deep'#013#010+
- '# subdir, because the deltree can'#039't see the whole tree to remove'#013+
- #010+
- 'ifndef PACKDIR'#013#010+
- 'ifndef inUnix'#013#010+
- 'PACKDIR=$(BASEDIR)/../fpc-pack'#013#010+
- 'else'#013#010+
- 'PACKDIR=/tmp/fpc-pack'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Maybe create default zipname from packagename'#013#010+
- 'ifndef',' ZIPNAME'#013#010+
- 'ifdef DIST_ZIPNAME'#013#010+
- 'ZIPNAME=$(DIST_ZIPNAME)'#013#010+
- 'else'#013#010+
- 'ZIPNAME=$(PACKAGE_NAME)'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- #013#010+
- 'ifndef FULLZIPNAME'#013#010+
- 'FULLZIPNAME=$(ZIPCROSSPREFIX)$(ZIPPREFIX)$(ZIPNAME)$(ZIPSUFFIX)'#013#010+
- 'endif'#013#010+
- #013#010+
- '# ZipTarget'#013#010+
- 'ifndef ZIPTARGET'#013#010+
- 'ifdef DIST_ZI','PTARGET'#013#010+
- 'ZIPTARGET=DIST_ZIPTARGET'#013#010+
- 'else'#013#010+
- 'ZIPTARGET=install'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Use tar by default under linux'#013#010+
- 'ifndef USEZIP'#013#010+
- 'ifdef inUnix'#013#010+
- 'USETAR=1'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Use a wrapper script by default for Os/2'#013#010+
- 'ifndef inUnix'#013#010+
- 'USEZIPWRAPPER=1'#013,#010+
- 'endif'#013#010+
- #013#010+
- '# We need to be able to run in the current OS so fix'#013#010+
- '# the path separator'#013#010+
- 'ifdef USEZIPWRAPPER'#013#010+
- 'ZIPPATHSEP=$(PATHSEP)'#013#010+
- 'ZIPWRAPPER=$(subst /,$(PATHSEP),$(DIST_DESTDIR)/fpczip$(SRCBATCHEXT))'#013+
- #010+
- 'else'#013#010+
- 'ZIPPATHSEP=/'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Create c','ommands to create the zip/tar file'#013#010+
- 'ZIPCMD_CDPACK:=cd $(subst /,$(ZIPPATHSEP),$(PACKDIR))'#013#010+
- 'ZIPCMD_CDBASE:=cd $(subst /,$(ZIPPATHSEP),$(BASEDIR))'#013#010+
- 'ifdef USETAR'#013#010+
- 'ZIPDESTFILE:=$(DIST_DESTDIR)/$(FULLZIPNAME)$(TAREXT)'#013#010+
- 'ZIPCMD_ZIP:=$(TARPROG) c$(','TAROPT)f $(ZIPDESTFILE) *'#013#010+
- 'else'#013#010+
- 'ZIPDESTFILE:=$(DIST_DESTDIR)/$(FULLZIPNAME)$(ZIPEXT)'#013#010+
+ 'AMPLEDIR)'#010+
+ 'endif'#010+
+ #010+
+ '[d','istinstallrules]'#010+
+ '#####################################################################'#010+
+ '# Dist Install'#010+
+ '#####################################################################'#010+
+ #010+
+ '.PHONY: fpc_distinstall'#010+
+ #010+
+ 'fpc_distinstall: install exampleinstall'#010+
+ #010+
+ #010,
+ '[zipinstallrules]'#010+
+ '#####################################################################'#010+
+ '# Zip'#010+
+ '#####################################################################'#010+
+ #010+
+ '.PHONY: fpc_zipinstall fpc_zipsourceinstall fpc_zipexampleinstall'#010+
+ #010+
+ '# Tempor','ary path to pack a file, can only use a single deep'#010+
+ '# subdir, because the deltree can'#039't see the whole tree to remove'#010+
+ 'ifndef PACKDIR'#010+
+ 'ifndef inUnix'#010+
+ 'PACKDIR=$(BASEDIR)/../fpc-pack'#010+
+ 'else'#010+
+ 'PACKDIR=/tmp/fpc-pack'#010+
+ 'endif'#010+
+ 'endif'#010+
+ #010+
+ '# Maybe create default ','zipname from packagename'#010+
+ 'ifndef ZIPNAME'#010+
+ 'ifdef DIST_ZIPNAME'#010+
+ 'ZIPNAME=$(DIST_ZIPNAME)'#010+
+ 'else'#010+
+ 'ZIPNAME=$(PACKAGE_NAME)'#010+
+ 'endif'#010+
+ 'endif'#010+
+ #010+
+ 'ifndef FULLZIPNAME'#010+
+ 'FULLZIPNAME=$(ZIPCROSSPREFIX)$(ZIPPREFIX)$(ZIPNAME)$(ZIPSUFFIX)'#010+
+ 'endif'#010+
+ #010+
+ '# ZipTarget'#010+
+ 'ifndef ZIPTAR','GET'#010+
+ 'ifdef DIST_ZIPTARGET'#010+
+ 'ZIPTARGET=DIST_ZIPTARGET'#010+
+ 'else'#010+
+ 'ZIPTARGET=install'#010+
+ 'endif'#010+
+ 'endif'#010+
+ #010+
+ '# Use tar by default under linux'#010+
+ 'ifndef USEZIP'#010+
+ 'ifdef inUnix'#010+
+ 'USETAR=1'#010+
+ 'endif'#010+
+ 'endif'#010+
+ #010+
+ '# Use a wrapper script by default for Os/2'#010+
+ 'ifndef inUnix'#010+
+ 'USEZIPWRAPPER=1',#010+
+ 'endif'#010+
+ #010+
+ '# We need to be able to run in the current OS so fix'#010+
+ '# the path separator'#010+
+ 'ifdef USEZIPWRAPPER'#010+
+ 'ZIPPATHSEP=$(PATHSEP)'#010+
+ 'ZIPWRAPPER=$(subst /,$(PATHSEP),$(DIST_DESTDIR)/fpczip$(SRCBATCHEXT))'#010+
+ 'else'#010+
+ 'ZIPPATHSEP=/'#010+
+ 'endif'#010+
+ #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 $(ZIPDE','STFILE) *'#010+
+ 'else'#010+
+ 'ZIPDESTFILE:=$(DIST_DESTDIR)/$(FULLZIPNAME)$(ZIPEXT)'#010+
'ZIPCMD_ZIP:=$(subst /,$(ZIPPATHSEP),$(ZIPPROG)) -Dr $(ZIPOPT) $(ZIPDES'+
- 'TFILE) *'#013#010+
- 'endif'#013#010+
- #013#010+
- 'fpc_zipinstall:'#013#010+
- ' $(MAKE) $(ZIPTARGET) INSTALL_PREFIX=$(P','ACKDIR) ZIPINSTALL=1'#013+
- #010+
- ' $(MKDIR) $(DIST_DESTDIR)'#013#010+
- ' $(DEL) $(ZIPDESTFILE)'#013#010+
- 'ifdef USEZIPWRAPPER'#013#010+
- '# Handle gecho separate as we need to espace \ with \\'#013#010+
- 'ifneq ($(ECHOREDIR),echo)'#013#010+
- ' $(ECHOREDIR) -e "$(subst \,\\,$(ZIPCMD_CD','PACK))" > $(ZIPWRAP'+
- 'PER)'#013#010+
- ' $(ECHOREDIR) -e "$(subst \,\\,$(ZIPCMD_ZIP))" >> $(ZIPWRAPPER)'+
- #013#010+
+ 'TFILE) *'#010+
+ 'endif'#010+
+ #010+
+ 'fpc_zipinstall:'#010+
+ ' $(MAKE) $(ZIPTARGET) INSTALL_PREFIX=$(PACKDIR) ZIPINSTALL=1'#010+
+ ' ',' $(MKDIR) $(DIST_DESTDIR)'#010+
+ ' $(DEL) $(ZIPDESTFILE)'#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+
+ ' ',' $(ECHOREDIR) -e "$(subst \,\\,$(ZIPCMD_ZIP))" >> $(ZIPWRAPPE'+
+ 'R)'#010+
' $(ECHOREDIR) -e "$(subst \,\\,$(ZIPCMD_CDBASE))" >> $(ZIPWRAPP'+
- 'ER)'#013#010+
- 'else'#013#010+
- ' echo $(ZIPCMD_CDPACK) > $(ZIPWRAPPER)'#013#010+
- ' echo $(','ZIPCMD_ZIP) >> $(ZIPWRAPPER)'#013#010+
- ' echo $(ZIPCMD_CDBASE) >> $(ZIPWRAPPER)'#013#010+
- 'endif'#013#010+
- 'ifdef inUnix'#013#010+
- ' /bin/sh $(ZIPWRAPPER)'#013#010+
- 'else'#013#010+
- 'ifdef RUNBATCH'#013#010+
- ' $(RUNBATCH) $(ZIPWRAPPER)'#013#010+
- 'else'#013#010+
- ' $(ZIPWRAPPER)'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- ' $(','DEL) $(ZIPWRAPPER)'#013#010+
- 'else'#013#010+
- ' $(ZIPCMD_CDPACK) ; $(ZIPCMD_ZIP) ; $(ZIPCMD_CDBASE)'#013#010+
- 'endif'#013#010+
- ' $(DELTREE) $(PACKDIR)'#013#010+
- #013#010+
- 'fpc_zipsourceinstall:'#013#010+
+ 'ER)'#010+
+ 'else'#010+
+ ' echo $(ZIPCMD_CDPACK) > $(ZIPWRAPPER)'#010+
+ ' echo $(ZIPCMD_ZIP) >> $(ZIPWRAPPER)'#010+
+ ' ',' echo $(ZIPCMD_CDBASE) >> $(ZIPWRAPPER)'#010+
+ 'endif'#010+
+ 'ifdef inUnix'#010+
+ ' /bin/sh $(ZIPWRAPPER)'#010+
+ 'else'#010+
+ 'ifdef RUNBATCH'#010+
+ ' $(RUNBATCH) $(ZIPWRAPPER)'#010+
+ 'else'#010+
+ ' $(ZIPWRAPPER)'#010+
+ 'endif'#010+
+ 'endif'#010+
+ ' $(DEL) $(ZIPWRAPPER)'#010+
+ 'else'#010+
+ ' $(ZIPCMD_CDPAC','K) ; $(ZIPCMD_ZIP) ; $(ZIPCMD_CDBASE)'#010+
+ 'endif'#010+
+ ' $(DELTREE) $(PACKDIR)'#010+
+ #010+
+ 'fpc_zipsourceinstall:'#010+
' $(MAKE) fpc_zipinstall ZIPTARGET=sourceinstall ZIPSUFFIX=$(ZIP'+
- 'SOURCESUFFIX)'#013#010+
- #013#010+
- 'fpc','_zipexampleinstall:'#013#010+
- 'ifdef HASEXAMPLES'#013#010+
- ' $(MAKE) fpc_zipinstall ZIPTARGET=exampleinstall ZIPSUFFIX=$(ZI'+
- 'PEXAMPLESUFFIX)'#013#010+
- 'endif'#013#010+
- #013#010+
- 'fpc_zipdistinstall:'#013#010+
- ' $(MAKE) fpc_zipinstall ZIPTARGET=distinstall'#013#010+
- #013#010+
- #013#010+
- '[cleanrules]'#013#010+
- '###########','#########################################################'+
- '#'#013#010+
- '# Clean rules'#013#010+
- '#####################################################################'#013+
- #010+
- #013#010+
- '.PHONY: fpc_clean fpc_cleanall fpc_distclean'#013#010+
- #013#010+
- 'ifdef EXEFILES'#013#010+
- 'override CLEANEXEFILES:=$(ad','dprefix $(TARGETDIRPREFIX),$(CLEANEXEFIL'+
- 'ES))'#013#010+
- 'override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDB'+
- 'GFILES))'#013#010+
- 'endif'#013#010+
- #013#010+
- 'ifdef CLEAN_PROGRAMS'#013#010+
+ 'SOURCESUFFIX)'#010+
+ #010+
+ 'fpc_zipexampleinstall:'#010+
+ 'ifdef HASEXAMPLES'#010+
+ ' $(MAKE) f','pc_zipinstall ZIPTARGET=exampleinstall ZIPSUFFIX=$('+
+ 'ZIPEXAMPLESUFFIX)'#010+
+ 'endif'#010+
+ #010+
+ 'fpc_zipdistinstall:'#010+
+ ' $(MAKE) fpc_zipinstall ZIPTARGET=distinstall'#010+
+ #010+
+ #010+
+ '[cleanrules]'#010+
+ '#####################################################################'#010+
+ '# Clea','n rules'#010+
+ '#####################################################################'#010+
+ #010+
+ '.PHONY: fpc_clean fpc_cleanall fpc_distclean'#010+
+ #010+
+ 'ifdef EXEFILES'#010+
+ 'override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES'+
+ '))'#010+
+ 'override CLEANEXEDBGFILES:=','$(addprefix $(TARGETDIRPREFIX),$(CLEANEXE'+
+ 'DBGFILES))'#010+
+ 'endif'#010+
+ #010+
+ 'ifdef CLEAN_PROGRAMS'#010+
'override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(E'+
- 'XEEXT), $(CLE','AN_PROGRAMS)))'#013#010+
- 'override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix '+
- '$(EXEDBGEXT), $(CLEAN_PROGRAMS)))'#013#010+
- 'endif'#013#010+
- #013#010+
- 'ifdef CLEAN_UNITS'#013#010+
- 'override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(CLEAN_UNITS))'#013#010+
- 'endif'#013#010+
- #013#010+
- 'ifdef CLEANPPUFILES',#013#010+
+ 'XEEXT), $(CLEAN_PROGRAMS)))'#010+
+ 'override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(ad','dsuffi'+
+ 'x $(EXEDBGEXT), $(CLEAN_PROGRAMS)))'#010+
+ 'endif'#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)'+
- ') $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(C'+
- 'LEANPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STA'+
- 'TICLIBEXT),$(CLEANPPUFILES))',')'#013#010+
- 'ifdef DEBUGSYMEXT'#013#010+
- 'override CLEANPPULINKFILES+=$(subst $(PPUEXT),$(DEBUGSYMEXT),$(CLEANPP'+
- 'UFILES))'#013#010+
- 'endif'#013#010+
+ ') $(addprefix ','$(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$'+
+ '(CLEANPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(S'+
+ 'TATICLIBEXT),$(CLEANPPUFILES)))'#010+
+ 'ifdef DEBUGSYMEXT'#010+
+ 'override CLEANPPULINKFILES+=$(subst $(PPUEXT),$(DEBUGSYMEXT),$(CLE','AN'+
+ 'PPUFILES))'#010+
+ 'endif'#010+
'override CLEANPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPUF'+
- 'ILES))'#013#010+
- 'override CLEANPPULINKFILES:=$(wildcard $(addprefix $(','UNITTARGETDIRPR'+
- 'EFIX),$(CLEANPPULINKFILES)))'#013#010+
- 'endif'#013#010+
- #013#010+
- 'fpc_clean: $(CLEANTARGET)'#013#010+
- 'ifdef CLEANEXEFILES'#013#010+
- ' -$(DEL) $(CLEANEXEFILES)'#013#010+
- 'endif'#013#010+
- '# DELTREE instead of DEL because on Mac OS X these are directories'#013+
- #010+
- 'ifdef CLEANEXEDBGFILES'#013#010+
- ' ',' -$(DELTREE) $(CLEANEXEDBGFILES)'#013#010+
- 'endif'#013#010+
- 'ifdef CLEANPPUFILES'#013#010+
- ' -$(DEL) $(CLEANPPUFILES)'#013#010+
- 'endif'#013#010+
- 'ifneq ($(CLEANPPULINKFILES),)'#013#010+
- ' -$(DEL) $(CLEANPPULINKFILES)'#013#010+
- 'endif'#013#010+
- 'ifdef CLEANRSTFILES'#013#010+
- ' -$(DEL) $(addprefix $(UNITTARG','ETDIRPREFIX),$(CLEANRSTFILES))'+
- #013#010+
- 'endif'#013#010+
- 'ifdef CLEAN_FILES'#013#010+
- ' -$(DEL) $(CLEAN_FILES)'#013#010+
- 'endif'#013#010+
- 'ifdef LIB_NAME'#013#010+
- ' -$(DEL) $(LIB_NAME) $(LIB_FULLNAME)'#013#010+
- 'endif'#013#010+
+ 'ILES))'#010+
+ 'override CLEANPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREF'+
+ 'IX),$(CLEANPPULINKFILES)))'#010+
+ 'endif'#010+
+ #010+
+ 'fpc_clean: $(CLEANTARGET)'#010+
+ 'ifdef CLEANEXE','FILES'#010+
+ ' -$(DEL) $(CLEANEXEFILES)'#010+
+ 'endif'#010+
+ '# DELTREE instead of DEL because on Mac OS X these are directories'#010+
+ 'ifdef CLEANEXEDBGFILES'#010+
+ ' -$(DELTREE) $(CLEANEXEDBGFILES)'#010+
+ 'endif'#010+
+ 'ifdef CLEANPPUFILES'#010+
+ ' -$(DEL) $(CLEANPPUFILES)'#010+
+ 'endif'#010,
+ 'ifneq ($(CLEANPPULINKFILES),)'#010+
+ ' -$(DEL) $(CLEANPPULINKFILES)'#010+
+ 'endif'#010+
+ 'ifdef CLEANRSTFILES'#010+
+ ' -$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))'#010+
+ 'endif'#010+
+ 'ifdef CLEAN_FILES'#010+
+ ' -$(DEL) $(CLEAN_FILES)'#010+
+ 'endif'#010+
+ 'ifdef LIB_NAME'#010+
+ ' ',' -$(DEL) $(LIB_NAME) $(LIB_FULLNAME)'#010+
+ 'endif'#010+
' -$(DEL) $(FPCMADE) Package.fpc $(PPAS) script.res link.res $(F'+
- 'PCEXT','FILE) $(REDIRFILE)'#013#010+
- ' -$(DEL) *$(ASMEXT) *_ppas$(BATCHEXT)'#013#010+
- #013#010+
- 'fpc_cleanall: $(CLEANTARGET)'#013#010+
- 'ifdef CLEANEXEFILES'#013#010+
- ' -$(DEL) $(CLEANEXEFILES)'#013#010+
- 'endif'#013#010+
- 'ifdef COMPILER_UNITTARGETDIR'#013#010+
- 'ifdef CLEANPPUFILES'#013#010+
- ' -$(DEL) $(CLEANPPUFIL','ES)'#013#010+
- 'endif'#013#010+
- 'ifneq ($(CLEANPPULINKFILES),)'#013#010+
- ' -$(DEL) $(CLEANPPULINKFILES)'#013#010+
- 'endif'#013#010+
- 'ifdef CLEANRSTFILES'#013#010+
- ' -$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))'#013+
- #010+
- 'endif'#013#010+
- 'endif'#013#010+
- 'ifdef CLEAN_FILES'#013#010+
- ' -$(DEL) $(CLEAN_FILE','S)'#013#010+
- 'endif'#013#010+
- ' -$(DELTREE) units'#013#010+
+ 'PCEXTFILE) $(REDIRFILE)'#010+
+ ' -$(DEL) *$(ASMEXT) *_ppas$(BATCHEXT)'#010+
+ #010+
+ 'fpc_cleanall: $(CLEANTARGET)'#010+
+ 'ifdef CLEANEXEFILES'#010+
+ ' ',' -$(DEL) $(CLEANEXEFILES)'#010+
+ 'endif'#010+
+ 'ifdef COMPILER_UNITTARGETDIR'#010+
+ 'ifdef CLEANPPUFILES'#010+
+ ' -$(DEL) $(CLEANPPUFILES)'#010+
+ 'endif'#010+
+ 'ifneq ($(CLEANPPULINKFILES),)'#010+
+ ' -$(DEL) $(CLEANPPULINKFILES)'#010+
+ 'endif'#010+
+ 'ifdef CLEANRSTFILES'#010+
+ ' -$(DEL) $(addpr','efix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))'+
+ #010+
+ 'endif'#010+
+ 'endif'#010+
+ 'ifdef CLEAN_FILES'#010+
+ ' -$(DEL) $(CLEAN_FILES)'#010+
+ 'endif'#010+
+ ' -$(DELTREE) units'#010+
' -$(DEL) *$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIB'+
- 'EXT) *$(SHAREDLIBEXT) *$(PPLEXT)'#013#010+
- 'ifneq ($(PPUEXT),.ppu)'#013#010+
- ' -$(DEL) *.o *.ppu *.a'#013#010+
- 'endif'#013#010+
- ' -$(DELTREE) *$(SMARTEXT)'#013#010+
- ' ',' -$(DEL) fpcmade.* Package.fpc $(PPAS) script.res link.res $('+
- 'FPCEXTFILE) $(REDIRFILE)'#013#010+
- ' -$(DEL) *_ppas$(BATCHEXT)'#013#010+
- 'ifdef AOUTEXT'#013#010+
- ' -$(DEL) *$(AOUTEXT)'#013#010+
- 'endif'#013#010+
- 'ifdef DEBUGSYMEXT'#013#010+
- ' -$(DEL) *$(DEBUGSYMEXT)'#013#010+
- 'endif'#013#010+
- #013#010+
- 'f','pc_distclean: cleanall'#013#010+
- #013#010+
- #013#010+
- '[baseinforules]'#013#010+
- '#####################################################################'#013+
- #010+
- '# Base info rules'#013#010+
- '#####################################################################'#013+
- #010+
- #013#010+
- '.PHONY: fpc_baseinfo'#013#010+
- #013#010+
- 'override',' INFORULES+=fpc_baseinfo'#013#010+
- #013#010+
- 'fpc_baseinfo:'#013#010+
- ' @$(ECHO)'#013#010+
- ' @$(ECHO) == Package info =='#013#010+
- ' @$(ECHO) Package Name..... $(PACKAGE_NAME)'#013#010+
- ' @$(ECHO) Package Version.. $(PACKAGE_VERSION)'#013#010+
- ' @$(ECHO)'#013#010+
- ' @$(ECH','O) == Configuration info =='#013#010+
- ' @$(ECHO)'#013#010+
- ' @$(ECHO) FPC.......... $(FPC)'#013#010+
- ' @$(ECHO) FPC Version.. $(FPC_VERSION)'#013#010+
- ' @$(ECHO) Source CPU... $(CPU_SOURCE)'#013#010+
- ' @$(ECHO) Target CPU... $(CPU_TARGET)'#013#010+
- ' @$','(ECHO) Source OS.... $(OS_SOURCE)'#013#010+
- ' @$(ECHO) Target OS.... $(OS_TARGET)'#013#010+
- ' @$(ECHO) Full Source.. $(FULL_SOURCE)'#013#010+
- ' @$(ECHO) Full Target.. $(FULL_TARGET)'#013#010+
- ' @$(ECHO) SourceSuffix. $(SOURCESUFFIX)'#013#010+
- ' @$(EC','HO) TargetSuffix. $(TARGETSUFFIX)'#013#010+
- ' @$(ECHO) FPC fpmake... $(FPCFPMAKE)'#013#010+
- ' @$(ECHO)'#013#010+
- ' @$(ECHO) == Directory info =='#013#010+
- ' @$(ECHO)'#013#010+
- ' @$(ECHO) Required pkgs... $(REQUIRE_PACKAGES)'#013#010+
- ' @$(ECHO)'#013#010+
- ' ','@$(ECHO) Basedir......... $(BASEDIR)'#013#010+
- ' @$(ECHO) FPCDir.......... $(FPCDIR)'#013#010+
- ' @$(ECHO) CrossBinDir..... $(CROSSBINDIR)'#013#010+
- ' @$(ECHO) UnitsDir........ $(UNITSDIR)'#013#010+
- ' @$(ECHO) PackagesDir..... $(PACKAGESDIR)'#013#010+
- ' ',' @$(ECHO)'#013#010+
- ' @$(ECHO) GCC library..... $(GCCLIBDIR)'#013#010+
- ' @$(ECHO) Other library... $(OTHERLIBDIR)'#013#010+
- ' @$(ECHO)'#013#010+
- ' @$(ECHO) == Tools info =='#013#010+
- ' @$(ECHO)'#013#010+
- ' @$(ECHO) As........ $(AS)'#013#010+
- ' @$(ECHO) L','d........ $(LD)'#013#010+
- ' @$(ECHO) Ar........ $(AR)'#013#010+
- ' @$(ECHO) Rc........ $(RC)'#013#010+
- ' @$(ECHO)'#013#010+
- ' @$(ECHO) Mv........ $(MVPROG)'#013#010+
- ' @$(ECHO) Cp........ $(CPPROG)'#013#010+
- ' @$(ECHO) Rm........ $(RMPROG)'#013#010+
- ' @$(EC','HO) GInstall.. $(GINSTALL)'#013#010+
- ' @$(ECHO) Echo...... $(ECHO)'#013#010+
- ' @$(ECHO) Shell..... $(SHELL)'#013#010+
- ' @$(ECHO) Date...... $(DATE)'#013#010+
- ' @$(ECHO) FPCMake... $(FPCMAKE)'#013#010+
- ' @$(ECHO) PPUMove... $(PPUMOVE)'#013#010+
- ' @$(ECH','O) Zip....... $(ZIPPROG)'#013#010+
- ' @$(ECHO)'#013#010+
- ' @$(ECHO) == Object info =='#013#010+
- ' @$(ECHO)'#013#010+
- ' @$(ECHO) Target Loaders........ $(TARGET_LOADERS)'#013#010+
- ' @$(ECHO) Target Units.......... $(TARGET_UNITS)'#013#010+
- ' @$(ECHO) Targ','et Implicit Units. $(TARGET_IMPLICITUNITS)'#013+
- #010+
- ' @$(ECHO) Target Programs....... $(TARGET_PROGRAMS)'#013#010+
- ' @$(ECHO) Target Dirs........... $(TARGET_DIRS)'#013#010+
- ' @$(ECHO) Target Examples....... $(TARGET_EXAMPLES)'#013#010+
- ' @$(ECHO) ',' Target ExampleDirs.... $(TARGET_EXAMPLEDIRS)'#013#010+
- ' @$(ECHO)'#013#010+
- ' @$(ECHO) Clean Units......... $(CLEAN_UNITS)'#013#010+
- ' @$(ECHO) Clean Files......... $(CLEAN_FILES)'#013#010+
- ' @$(ECHO)'#013#010+
- ' @$(ECHO) Install Units....... $(INSTAL','L_UNITS)'#013#010+
- ' @$(ECHO) Install Files....... $(INSTALL_FILES)'#013#010+
- ' @$(ECHO)'#013#010+
- ' @$(ECHO) == Install info =='#013#010+
- ' @$(ECHO)'#013#010+
- ' @$(ECHO) DateStr.............. $(DATESTR)'#013#010+
- ' @$(ECHO) ZipName.............. $(ZIPNA','ME)'#013#010+
- ' @$(ECHO) ZipPrefix............ $(ZIPPREFIX)'#013#010+
- ' @$(ECHO) ZipCrossPrefix....... $(ZIPCROSSPREFIX)'#013#010+
- ' @$(ECHO) ZipSuffix............ $(ZIPSUFFIX)'#013#010+
- ' @$(ECHO) FullZipName.......... $(FULLZIPNAME)'#013#010+
- ' @$(E','CHO) Install FPC Package.. $(INSTALL_FPCPACKAGE)'#013#010+
- ' @$(ECHO)'#013#010+
- ' @$(ECHO) Install base dir..... $(INSTALL_BASEDIR)'#013#010+
- ' @$(ECHO) Install binary dir... $(INSTALL_BINDIR)'#013#010+
- ' @$(ECHO) Install library dir.. $(INSTALL_LI','BDIR)'#013#010+
- ' @$(ECHO) Install units dir.... $(INSTALL_UNITDIR)'#013#010+
- ' @$(ECHO) Install source dir... $(INSTALL_SOURCEDIR)'#013#010+
- ' @$(ECHO) Install doc dir...... $(INSTALL_DOCDIR)'#013#010+
- ' @$(ECHO) Install example dir.. $(INSTALL_EX','AMPLEDIR)'#013#010+
- ' @$(ECHO) Install data dir..... $(INSTALL_DATADIR)'#013#010+
- ' @$(ECHO)'#013#010+
- ' @$(ECHO) Dist destination dir. $(DIST_DESTDIR)'#013#010+
- ' @$(ECHO) Dist zip name........ $(DIST_ZIPNAME)'#013#010+
- ' @$(ECHO)'#013#010+
- #013#010+
- '[inforules]'#013#010+
- '####','################################################################'+
- '#'#013#010+
- '# Info rules'#013#010+
- '#####################################################################'#013+
- #010+
- #013#010+
- '.PHONY: fpc_info'#013#010+
- #013#010+
- 'fpc_info: $(INFORULES)'#013#010+
- #013#010+
- '[makefilerules]'#013#010+
- '#######################','#############################################'+
- '#'#013#010+
- '# Rebuild Makefile'#013#010+
- '#####################################################################'#013+
- #010+
- #013#010+
+ 'EXT) *$(SHAREDLIBEXT) *$(PPLEXT',')'#010+
+ 'ifneq ($(PPUEXT),.ppu)'#010+
+ ' -$(DEL) *.o *.ppu *.a'#010+
+ 'endif'#010+
+ ' -$(DELTREE) *$(SMARTEXT)'#010+
+ ' -$(DEL) fpcmade.* Package.fpc $(PPAS) script.res link.res $(FP'+
+ 'CEXTFILE) $(REDIRFILE)'#010+
+ ' -$(DEL) *_ppas$(BATCHEXT)'#010+
+ 'ifdef AOUTEXT'#010+
+ ' ',' -$(DEL) *$(AOUTEXT)'#010+
+ 'endif'#010+
+ 'ifdef DEBUGSYMEXT'#010+
+ ' -$(DEL) *$(DEBUGSYMEXT)'#010+
+ 'endif'#010+
+ #010+
+ 'fpc_distclean: cleanall'#010+
+ #010+
+ #010+
+ '[baseinforules]'#010+
+ '#####################################################################'#010+
+ '# Base info rules'#010+
+ '########################','############################################'+
+ '#'#010+
+ #010+
+ '.PHONY: fpc_baseinfo'#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.. $(PACKAGE_VERSION)'#010+
+ ' @$(ECHO)'#010+
+ ' @$(ECHO) == Configuration info =='#010+
+ ' @$(ECHO)'#010+
+ ' @$(ECHO) FPC.......... $(FPC)'#010+
+ ' @$(ECHO) FPC Version.. $(FPC_VERSION)'#010+
+ ' @$(ECHO) Source CPU... $(CPU_S','OURCE)'#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) SourceSuffix. $(SOURCESUFFIX)'#010+
+ ' @$(ECHO) TargetSuffix. $(TARGETSUFFIX)'#010+
+ ' @$(ECHO) FPC fpmake... $(FPCFPMAKE)'#010+
+ ' @$(ECHO)'#010+
+ ' @$(ECHO) == Directory info =='#010+
+ ' @$(ECHO)'#010+
+ ' @$(ECHO) Required pk','gs... $(REQUIRE_PACKAGES)'#010+
+ ' @$(ECHO)'#010+
+ ' @$(ECHO) Basedir......... $(BASEDIR)'#010+
+ ' @$(ECHO) FPCDir.......... $(FPCDIR)'#010+
+ ' @$(ECHO) CrossBinDir..... $(CROSSBINDIR)'#010+
+ ' @$(ECHO) UnitsDir........ $(UNITSDIR)'#010+
+ ' @','$(ECHO) PackagesDir..... $(PACKAGESDIR)'#010+
+ ' @$(ECHO)'#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) 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) Shell..... $(SHELL)'#010+
+ ' @$(ECHO) Date...... $(DATE)'#010+
+ ' @$(ECHO) FPCMake... $(FPCMAKE)'#010+
+ ' @$(ECHO) PPUMove...',' $(PPUMOVE)'#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 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 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)'#010+
+ ' @$(ECHO) == Install info =='#010+
+ ' @$(ECHO)'#010+
+ ' @$(ECHO) DateStr.............. $(DATESTR)'#010+
+ ' @$(ECHO) ZipName.............. $(','ZIPNAME)'#010+
+ ' @$(ECHO) ZipPrefix............ $(ZIPPREFIX)'#010+
+ ' @$(ECHO) ZipCrossPrefix....... $(ZIPCROSSPREFIX)'#010+
+ ' @$(ECHO) ZipSuffix............ $(ZIPSUFFIX)'#010+
+ ' @$(ECHO) FullZipName.......... $(FULLZIPNAME)'#010+
+ ' @$(E','CHO) Install FPC Package.. $(INSTALL_FPCPACKAGE)'#010+
+ ' @$(ECHO)'#010+
+ ' @$(ECHO) Install base dir..... $(INSTALL_BASEDIR)'#010+
+ ' @$(ECHO) Install binary dir... $(INSTALL_BINDIR)'#010+
+ ' @$(ECHO) Install library dir.. $(INSTALL_LIBDIR',')'#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) 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+
+ #010+
+ '.PHONY: fpc_info'#010+
+ #010+
+ 'fpc_info: $(INFORULES)'#010+
+ #010+
+ '[makefilerules]'#010+
+ '################################################','####################'+
+ '#'#010+
+ '# Rebuild Makefile'#010+
+ '#####################################################################'#010+
+ #010+
'.PHONY: fpc_makefile fpc_makefiles fpc_makefile_sub1 fpc_makefile_sub2'+
- ' \'#013#010+
- ' fpc_makefile_dirs',#013#010+
- #013#010+
- 'fpc_makefile:'#013#010+
- ' $(FPCMAKE) -w -T$(OS_TARGET) Makefile.fpc'#013#010+
- #013#010+
- 'fpc_makefile_sub1:'#013#010+
- 'ifdef TARGET_DIRS'#013#010+
+ ' \'#010+
+ ' fpc_makefile_dirs'#010+
+ #010+
+ 'fpc_makefile:'#010+
+ ' $(FPCM','AKE) -w -T$(OS_TARGET) Makefile.fpc'#010+
+ #010+
+ 'fpc_makefile_sub1:'#010+
+ 'ifdef TARGET_DIRS'#010+
' $(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGE'+
- 'T_DIRS))'#013#010+
- 'endif'#013#010+
- 'ifdef TARGET_EXAMPLEDIRS'#013#010+
- ' $(FPCMAK','E) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TAR'+
- 'GET_EXAMPLEDIRS))'#013#010+
- 'endif'#013#010+
- #013#010+
+ 'T_DIRS))'#010+
+ 'endif'#010+
+ 'ifdef TARGET_EXAMPLEDIRS'#010+
+ ' $(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefi','le.fpc,$(TAR'+
+ 'GET_EXAMPLEDIRS))'#010+
+ 'endif'#010+
+ #010+
'fpc_makefile_sub2: $(addsuffix _makefile_dirs,$(TARGET_DIRS) $(TARGET_'+
- 'EXAMPLEDIRS))'#013#010+
- #013#010+
- 'fpc_makefile_dirs: fpc_makefile_sub1 fpc_makefile_sub2'#013#010+
- #013#010+
- 'fpc_makefiles: ','fpc_makefile fpc_makefile_dirs'#013#010+
- #013#010+
- '[localmakefile]'#013#010+
- '#####################################################################'#013+
- #010+
- '# Local Makefile'#013#010+
- '#####################################################################'#013+
- #010+
- #013#010+
- 'ifneq ($(wildcard fpcmake.l','oc),)'#013#010+
- 'include fpcmake.loc'#013#010+
- 'endif'#013#010+
- #013#010+
- #013#010+
- '[userrules]'#013#010+
- '#####################################################################'#013+
- #010+
- '# Users rules'#013#010+
- '#####################################################################'#013+
- #010+
- #013#010+
- '[lclrules]'#013#010+
- '#################','###################################################'+
- '#'#013#010+
- '# LCL Rules'#013#010+
- '#####################################################################'#013+
- #010+
- #013#010+
- '# LCL Platform'#013#010+
- 'ifndef LCL_PLATFORM'#013#010+
- 'ifneq ($(findstring $(OS_TARGET),win32 win64),)'#013#010+
- 'LCL_PLATFORM=w','in32'#013#010+
- 'else'#013#010+
- 'LCL_PLATFORM=gtk'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- 'export LCL_PLATFORM'#013#010+
- #013#010+
- '# Check if the specified LCLDIR is correct'#013#010+
- 'ifdef LCLDIR'#013#010+
- 'override LCLDIR:=$(subst \,/,$(LCLDIR))'#013#010+
- 'ifeq ($(wildcard $(LCLDIR)/units/$(LCL_PLATFORM)),)'#013#010+
- 'override LCLDIR=wrong',#013#010+
- 'endif'#013#010+
- 'else'#013#010+
- 'override LCLDIR=wrong'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Check if the default LCLDIR is correct'#013#010+
- 'ifdef DEFAULT_LCLDIR'#013#010+
- 'override LCLDIR:=$(subst \,/,$(DEFAULT_LCLDIR))'#013#010+
- 'ifeq ($(wildcard $(LCLDIR)/units/$(LCL_PLATFORM)),)'#013#010+
- 'override LCLDIR=wrong'#013#010+
- 'endi','f'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Check for development version'#013#010+
- 'ifeq ($(LCLDIR),wrong)'#013#010+
- 'override LCLDIR=$(subst /units/$(LCL_PLATFORM),,$(firstword $(wildcard'+
- ' $(addsuffix /units/$(LCL_PLATFORM),$(BASEDIR)/lcl $(BASEDIR)))))'#013#010+
- 'ifeq ($(LCLDIR),)'#013#010+
- 'override LCLDIR','=wrong'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Check for release version'#013#010+
- 'ifeq ($(LCLDIR),wrong)'#013#010+
- 'override LCLDIR=$(subst /units/$(LCL_PLATFORM),,$(firstword $(wildcard'+
- ' $(addsuffix /lib/lazarus/units/$(LCL_PLATFORM),/usr/local /usr))))'#013+
- #010+
- 'ifeq ($(LCLDIR),)'#013#010+
- 'overr','ide LCLDIR=wrong'#013#010+
- 'endif'#013#010+
- 'endif'#013#010+
- #013#010+
- '# Generate dirs'#013#010+
- 'override LCLUNITDIR:=$(wildcard $(LCLDIR)/units/$(LCL_PLATFORM) $(LCLD'+
- 'IR)/units)'#013#010+
+ '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+
+ '# Local Makefile'#010+
+ '#####################################################################'#010+
+ #010+
+ 'ifneq ($(wildcard fpcmake.loc),)'#010+
+ 'include fpcmake.loc'#010+
+ 'endif'#010+
+ #010+
+ #010+
+ '[userrules]'#010+
+ '########','############################################################'+
+ '#'#010+
+ '# Users rules'#010+
+ '#####################################################################'#010+
+ #010+
+ '[lclrules]'#010+
+ '#####################################################################'#010+
+ '# LCL Rules'#010,
+ '#####################################################################'#010+
+ #010+
+ '# LCL Platform'#010+
+ 'ifndef LCL_PLATFORM'#010+
+ 'ifneq ($(findstring $(OS_TARGET),win32 win64),)'#010+
+ 'LCL_PLATFORM=win32'#010+
+ 'else'#010+
+ 'LCL_PLATFORM=gtk'#010+
+ 'endif'#010+
+ 'endif'#010+
+ 'export LCL_PLATFORM'#010+
+ #010+
+ '# Check if t','he specified LCLDIR is correct'#010+
+ 'ifdef LCLDIR'#010+
+ 'override LCLDIR:=$(subst \,/,$(LCLDIR))'#010+
+ 'ifeq ($(wildcard $(LCLDIR)/units/$(LCL_PLATFORM)),)'#010+
+ 'override LCLDIR=wrong'#010+
+ 'endif'#010+
+ 'else'#010+
+ 'override LCLDIR=wrong'#010+
+ 'endif'#010+
+ #010+
+ '# Check if the default LCLDIR is correct'#010+
+ 'i','fdef DEFAULT_LCLDIR'#010+
+ 'override LCLDIR:=$(subst \,/,$(DEFAULT_LCLDIR))'#010+
+ 'ifeq ($(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),,$(firstword $(wildca'+
+ 'rd $(addsuffix /units/$(LCL_PLATFORM),$(BASEDIR)/lcl $(BASEDIR)))))'#010+
+ 'ifeq ($(LCLDIR),)'#010+
+ 'override LCLDIR=wrong'#010+
+ 'endif'#010+
+ 'endif'#010+
+ #010+
+ '# Check for release version'#010+
+ 'ifeq ($(LCLDIR),wrong)'#010+
+ 'override LCLDIR=$(subst /units','/$(LCL_PLATFORM),,$(firstword $(wildca'+
+ 'rd $(addsuffix /lib/lazarus/units/$(LCL_PLATFORM),/usr/local /usr))))'#010+
+ 'ifeq ($(LCLDIR),)'#010+
+ 'override LCLDIR=wrong'#010+
+ 'endif'#010+
+ 'endif'#010+
+ #010+
+ '# Generate dirs'#010+
+ 'override LCLUNITDIR:=$(wildcard $(LCLDIR)/units/$(LCL_PLATFORM)',' $(LC'+
+ 'LDIR)/units)'#010+
'override LCLCOMPONENTDIR:=$(wildcard $(LCLDIR)/.. $(LCLDIR)/../compone'+
- 'nts $(LCLDIR)/components)'#013#010+
- 'export LCL','DIR LCLUNITDIR LCLCOMPONENTDIR'#013#010+
- #013#010+
- '# Add LCL dirs to paths'#013#010+
- 'override REQUIRE_PACKAGESDIR+=$(LCLCOMPONENTDIR)'#013#010+
- 'override COMPILER_UNITDIR+=$(LCLUNITDIR)'#013#010+
- #013#010+
- '[lclinforules]'#013#010+
- '#####################################################################'#013+
- #010,
- '# LCL Info rules'#013#010+
- '#####################################################################'#013+
- #010+
- 'override INFORULES+=lclinfo'#013#010+
- #013#010+
- '.PHONY: lclinfo'#013#010+
- #013#010+
- 'lclinfo:'#013#010+
- ' @$(ECHO) == LCL info =='#013#010+
- ' @$(ECHO)'#013#010+
- ' @$(ECHO) Platform.............',' $(LCL_PLATFORM)'#013#010+
- ' @$(ECHO) LCLDIR............... $(LCLDIR)'#013#010+
- ' @$(ECHO) LCL Unit dir......... $(LCLUNITDIR)'#013#010+
- ' @$(ECHO) LCL Component dir.... $(LCLCOMPONENTDIR)'#013#010+
- ' @$(ECHO)'#013#010
+ 'nts $(LCLDIR)/components)'#010+
+ 'export LCLDIR LCLUNITDIR LCLCOMPONENTDIR'#010+
+ #010+
+ '# Add LCL dirs to paths'#010+
+ 'override REQUIRE_PACKAGESDIR+=$(LCLCOMPONENTDIR)'#010+
+ 'override CO','MPILER_UNITDIR+=$(LCLUNITDIR)'#010+
+ #010+
+ '[lclinforules]'#010+
+ '#####################################################################'#010+
+ '# LCL Info rules'#010+
+ '#####################################################################'#010+
+ 'override INFORULES+=lclinfo'#010+
+ #010+
+ '.PHONY: ','lclinfo'#010+
+ #010+
+ 'lclinfo:'#010+
+ ' @$(ECHO) == LCL info =='#010+
+ ' @$(ECHO)'#010+
+ ' @$(ECHO) Platform............. $(LCL_PLATFORM)'#010+
+ ' @$(ECHO) LCLDIR............... $(LCLDIR)'#010+
+ ' @$(ECHO) LCL Unit dir......... $(LCLUNITDIR)'#010+
+ ' @$(E','CHO) LCL Component dir.... $(LCLCOMPONENTDIR)'#010+
+ ' @$(ECHO)'#010
);
diff --git a/utils/fpcm/fpcmake.ini b/utils/fpcm/fpcmake.ini
index 89bd1ed2fb..d60b6d7fb1 100644
--- a/utils/fpcm/fpcmake.ini
+++ b/utils/fpcm/fpcmake.ini
@@ -272,6 +272,14 @@ endif
override FPCOPT+=-Cp$(SUBARCH)
endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+ifeq ($(SUBARCH),)
+# we don't add a default here, people should explicitly add the SUBARCH
+$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined)
+endif
+override FPCOPT+=-Cp$(SUBARCH)
+endif
+
# Full name of the target, including CPU and OS. For OSs limited
# to 8.3 we only use the target OS
ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
@@ -1441,17 +1449,24 @@ override COMPILER:=$(strip $(FPC) $(FPCOPT))
# also call ppas if with command option -s
# but only if the FULL_SOURCE and FULL_TARGET are equal
-ifeq (,$(findstring -s ,$(COMPILER)))
+# or if -sh is used
+ifneq (,$(findstring -sh ,$(COMPILER)))
+UseEXECPPAS=1
+endif
+ifneq (,$(findstring -s ,$(COMPILER)))
+ifeq ($(FULL_SOURCE),$(FULL_TARGET))
+UseEXECPPAS=1
+endif
+endif
+ifneq ($(UseEXECPPAS),1)
EXECPPAS=
else
-ifeq ($(FULL_SOURCE),$(FULL_TARGET))
ifdef RUNBATCH
EXECPPAS:=@$(RUNBATCH) $(PPAS)
else
EXECPPAS:=@$(PPAS)
endif
endif
-endif
[loaderrules]
diff --git a/utils/fpcm/fpcmmain.pp b/utils/fpcm/fpcmmain.pp
index 789df3f5a3..3f333acb46 100644
--- a/utils/fpcm/fpcmmain.pp
+++ b/utils/fpcm/fpcmmain.pp
@@ -138,7 +138,7 @@ interface
{ wince }( true, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false),
{ gba } ( false, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false),
{ nds } ( false, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false),
- { embedded }( true, true, true, true, true, true, true, true, true , false, false, false, false, false, false, false),
+ { embedded }( true, true, true, true, true, true, true, true, true , false, false, true , false, false, false, false),
{ symbian } ( true, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false),
{ nativent }( true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false),
{ iphonesim }( true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false),
diff --git a/utils/fpcm/fpmake.pp b/utils/fpcm/fpmake.pp
index 19a602abcd..1413e076cc 100644
--- a/utils/fpcm/fpmake.pp
+++ b/utils/fpcm/fpmake.pp
@@ -193,6 +193,7 @@ procedure add_fpcm(const ADirectory: string);
Var
P : TPackage;
T : TTarget;
+ Data2IncBin : String;
begin
With Installer do
@@ -221,6 +222,8 @@ begin
writeln('Process-unit not available. Svn-revision in fpmake executable might be out-of-date.');
{$endif HAS_UNIT_PROCESS}
+ Data2IncBin := AddProgramExtension('data2inc',Defaults.BuildOS);
+ p.Commands.AddCommand(caBeforeCompile, Data2IncBin, '-b -s fpcmake.ini fpcmake.inc fpcmakeini','fpcmake.inc','fpcmake.ini');
T:=P.Targets.AddUnit('fpcmmain.pp');
T.install:=false;
T.ResourceStrings:=true;
@@ -228,7 +231,7 @@ begin
P.Targets.AddUnit('fpcmwr.pp').install:=false;
P.Targets.AddUnit('fpcmpkg.pp').install:=false;
- P.Sources.AddSrc('fpcmake.ini');
+ // P.Sources.AddSrc('fpcmake.ini');
P.Sources.AddSrc('fpcmake.inc');
end;
end;
diff --git a/utils/fpcm/revision.inc b/utils/fpcm/revision.inc
index d7d933d938..aa95fc06b6 100644
--- a/utils/fpcm/revision.inc
+++ b/utils/fpcm/revision.inc
@@ -1 +1 @@
-'2014-02-06 rev 26692'
+'2014-04-01 rev 27428'
diff --git a/compiler/utils/fpcsubst.pp b/utils/fpcsubst.pp
index df4456c6ef..df4456c6ef 100644
--- a/compiler/utils/fpcsubst.pp
+++ b/utils/fpcsubst.pp
diff --git a/utils/fpmake.pp b/utils/fpmake.pp
index 42fec8d5f4..d0115cae8a 100644
--- a/utils/fpmake.pp
+++ b/utils/fpmake.pp
@@ -82,7 +82,9 @@ begin
P.Targets.AddProgram('postw32.pp');
P.Targets.AddProgram('rmcvsdir.pp');
P.Targets.AddProgram('grab_vcsa.pp',[linux]);
-
+ T:=P.Targets.AddProgram('fpcsubst.pp');
+ T.Dependencies.AddUnit('usubst');
+ P.Targets.AddUnit('usubst.pp').install:=false;
P.Targets.AddUnit('ptopu.pp').install:=false;
end;
end;
diff --git a/utils/pas2jni/writer.pas b/utils/pas2jni/writer.pas
index 37d4b81601..2d07f1fa7a 100644
--- a/utils/pas2jni/writer.pas
+++ b/utils/pas2jni/writer.pas
@@ -131,7 +131,7 @@ const
TextIndent = 2;
- ExcludeStd: array[1..43] of string = (
+ ExcludeStd: array[1..44] of string = (
'classes.TStream.ReadComponent', 'classes.TStream.ReadComponentRes', 'classes.TStream.WriteComponent', 'classes.TStream.WriteComponentRes',
'classes.TStream.WriteDescendent', 'classes.TStream.WriteDescendentRes', 'classes.TStream.WriteResourceHeader', 'classes.TStream.FixupResourceHeader',
'classes.TStream.ReadResHeader', 'classes.TComponent.WriteState', 'classes.TComponent.ExecuteAction', 'classes.TComponent.UpdateAction',
@@ -142,7 +142,8 @@ const
'system.TObject.GetInterfaceEntry', 'system.TObject.GetInterfaceTable', 'system.TObject.MethodAddress', 'system.TObject.MethodName',
'system.TObject.FieldAddress', 'classes.TComponent.ComponentState', 'classes.TComponent.ComponentStyle', 'classes.TList.GetEnumerator',
'classes.TList.List', 'classes.TList.FPOAttachObserver', 'classes.TList.FPODetachObserver', 'classes.TList.FPONotifyObservers',
- 'classes.TPersistent.FPOAttachObserver', 'classes.TPersistent.FPODetachObserver', 'classes.TPersistent.FPONotifyObservers'
+ 'classes.TPersistent.FPOAttachObserver', 'classes.TPersistent.FPODetachObserver', 'classes.TPersistent.FPONotifyObservers',
+ 'system.fma'
);
ExcludeDelphi7: array[1..25] of string = (
@@ -484,8 +485,28 @@ var
end;
end;
+ procedure WriteTypeCast(const AName: string; SecondPass: boolean);
+ var
+ s, ss: string;
+ begin
+ if d.DefType <> dtClass then
+ exit;
+ with TClassDef(d) do begin
+ if (AncestorClass = nil) and not (SecondPass and HasReplacedItems) then
+ // TObject
+ s:='_pasobj=obj._pasobj'
+ else
+ s:='super(obj)';
+ if HasReplacedItems and not SecondPass then
+ ss:='protected'
+ else
+ ss:='public';
+ Fjs.WriteLn(Format('%s %s(PascalObject obj) { %s; }', [ss, AName, s]))
+ end;
+ end;
+
var
- s, ss: string;
+ s, ss, n: string;
RegularClass: boolean;
begin
if PreInfo then begin
@@ -527,7 +548,8 @@ begin
s:='';
end;
WriteComment(d, s);
- s:='public static class ' + GetJavaClassName(d, nil) + ' extends ';
+ n:=GetJavaClassName(d, nil);
+ s:='public static class ' + n + ' extends ';
if d.DefType = dtClass then
with TClassDef(d) do begin
if AncestorClass <> nil then begin
@@ -550,6 +572,8 @@ begin
Fjs.WriteLn(Format('public int Size() { return %d; }', [TRecordDef(d).Size]));
end;
+ WriteTypeCast(n, False);
+
WrittenItems:=TList.Create;
try
RegularClass:=(d.DefType = dtClass) and not TClassDef(d).HasReplacedItems;
@@ -570,6 +594,7 @@ begin
Fjs.WriteLn(Format('public static class %s extends __%0:s {', [d.AliasName]));
Fjs.IncI;
+ WriteTypeCast(d.AliasName, True);
WriteConstructors;
WriteItems(False, True, True);
@@ -1195,6 +1220,7 @@ procedure TWriter.WriteUnit(u: TUnitDef);
var
d: TDef;
i: integer;
+ HasSystem: boolean;
begin
if u.Processed then
exit;
@@ -1213,11 +1239,17 @@ begin
Fjs:=TTextOutStream.Create(IncludeTrailingPathDelimiter(FPkgDir) + u.Name + '.java', fmCreate);
try
Fjs.WriteLn(Format('package %s;', [JavaPackage]));
+ HasSystem:=False;
if Length(u.UsedUnits) > 0 then begin
Fjs.WriteLn;
for i:=0 to High(u.UsedUnits) do
- if u.UsedUnits[i].IsUsed then
+ if u.UsedUnits[i].IsUsed then begin
Fjs.WriteLn(Format('import %s.%s.*;', [JavaPackage, LowerCase(u.UsedUnits[i].Name)]));
+ if AnsiCompareText(u.UsedUnits[i].Name, 'system') = 0 then
+ HasSystem:=True;
+ end;
+ if not HasSystem then
+ Fjs.WriteLn(Format('import %s.system.*;', [JavaPackage]));
end;
Fjs.WriteLn;
Fjs.WriteLn('public class ' + u.Name + ' {');
@@ -1970,6 +2002,7 @@ begin
Fps.WriteLn('begin');
Fps.IncI;
Fps.WriteLn('Result:=nil;');
+ Fps.WriteLn('if PasObj = nil then exit;');
Fps.WriteLn('Result:=env^^.AllocObject(env, ci.ClassRef);');
Fps.WriteLn('if Result = nil then exit;');
Fps.WriteLn('env^^.SetLongField(env, Result, ci.ObjFieldId, Int64(ptruint(PasObj)));');
diff --git a/utils/pas2js/Makefile b/utils/pas2js/Makefile
new file mode 100644
index 0000000000..bda117fb94
--- /dev/null
+++ b/utils/pas2js/Makefile
@@ -0,0 +1,2691 @@
+#
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692]
+#
+default: all
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos
+BSDs = freebsd netbsd openbsd darwin
+UNIXs = linux $(BSDs) solaris qnx haiku aix
+LIMIT83fs = go32v2 os2 emx watcom msdos
+OSNeedsComspecToRunBatch = go32v2 watcom
+FORCE:
+.PHONY: FORCE
+override PATH:=$(patsubst %/,%,$(subst \,/,$(PATH)))
+ifneq ($(findstring darwin,$(OSTYPE)),)
+inUnix=1 #darwin
+SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
+else
+ifeq ($(findstring ;,$(PATH)),)
+inUnix=1
+SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
+else
+SEARCHPATH:=$(subst ;, ,$(PATH))
+endif
+endif
+SEARCHPATH+=$(patsubst %/,%,$(subst \,/,$(dir $(MAKE))))
+PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(SEARCHPATH))))
+ifeq ($(PWD),)
+PWD:=$(strip $(wildcard $(addsuffix /pwd,$(SEARCHPATH))))
+ifeq ($(PWD),)
+$(error You need the GNU utils package to use this Makefile)
+else
+PWD:=$(firstword $(PWD))
+SRCEXEEXT=
+endif
+else
+PWD:=$(firstword $(PWD))
+SRCEXEEXT=.exe
+endif
+ifndef inUnix
+ifeq ($(OS),Windows_NT)
+inWinNT=1
+else
+ifdef OS2_SHELL
+inOS2=1
+endif
+endif
+else
+ifneq ($(findstring cygdrive,$(PATH)),)
+inCygWin=1
+endif
+endif
+ifdef inUnix
+SRCBATCHEXT=.sh
+else
+ifdef inOS2
+SRCBATCHEXT=.cmd
+else
+SRCBATCHEXT=.bat
+endif
+endif
+ifdef COMSPEC
+ifneq ($(findstring $(OS_SOURCE),$(OSNeedsComspecToRunBatch)),)
+ifndef RUNBATCH
+RUNBATCH=$(COMSPEC) /C
+endif
+endif
+endif
+ifdef inUnix
+PATHSEP=/
+else
+PATHSEP:=$(subst /,\,/)
+ifdef inCygWin
+PATHSEP=/
+endif
+endif
+ifdef PWD
+BASEDIR:=$(subst \,/,$(shell $(PWD)))
+ifdef inCygWin
+ifneq ($(findstring /cygdrive/,$(BASEDIR)),)
+BASENODIR:=$(patsubst /cygdrive%,%,$(BASEDIR))
+BASEDRIVE:=$(firstword $(subst /, ,$(BASENODIR)))
+BASEDIR:=$(subst /cygdrive/$(BASEDRIVE)/,$(BASEDRIVE):/,$(BASEDIR))
+endif
+endif
+else
+BASEDIR=.
+endif
+ifdef inOS2
+ifndef ECHO
+ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ECHO),)
+ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ECHO),)
+ECHO=echo
+else
+ECHO:=$(firstword $(ECHO))
+endif
+else
+ECHO:=$(firstword $(ECHO))
+endif
+endif
+export ECHO
+endif
+override DEFAULT_FPCDIR=../..
+ifndef FPC
+ifdef PP
+FPC=$(PP)
+endif
+endif
+ifndef FPC
+FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH))))
+ifneq ($(FPCPROG),)
+FPCPROG:=$(firstword $(FPCPROG))
+ifneq ($(CPU_TARGET),)
+FPC:=$(shell $(FPCPROG) -P$(CPU_TARGET) -PB)
+else
+FPC:=$(shell $(FPCPROG) -PB)
+endif
+ifneq ($(findstring Error,$(FPC)),)
+override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
+else
+ifeq ($(strip $(wildcard $(FPC))),)
+FPC:=$(firstword $(FPCPROG))
+endif
+endif
+else
+override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
+endif
+endif
+override FPC:=$(subst $(SRCEXEEXT),,$(FPC))
+override FPC:=$(subst \,/,$(FPC))$(SRCEXEEXT)
+FOUNDFPC:=$(strip $(wildcard $(FPC)))
+ifeq ($(FOUNDFPC),)
+FOUNDFPC=$(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))
+ifeq ($(FOUNDFPC),)
+$(error Compiler $(FPC) not found)
+endif
+endif
+ifndef FPC_COMPILERINFO
+FPC_COMPILERINFO:=$(shell $(FPC) -iVSPTPSOTO)
+endif
+ifndef FPC_VERSION
+FPC_VERSION:=$(word 1,$(FPC_COMPILERINFO))
+endif
+export FPC FPC_VERSION FPC_COMPILERINFO
+unexport CHECKDEPEND ALLDEPENDENCIES
+ifndef CPU_TARGET
+ifdef CPU_TARGET_DEFAULT
+CPU_TARGET=$(CPU_TARGET_DEFAULT)
+endif
+endif
+ifndef OS_TARGET
+ifdef OS_TARGET_DEFAULT
+OS_TARGET=$(OS_TARGET_DEFAULT)
+endif
+endif
+ifndef CPU_SOURCE
+CPU_SOURCE:=$(word 2,$(FPC_COMPILERINFO))
+endif
+ifndef CPU_TARGET
+CPU_TARGET:=$(word 3,$(FPC_COMPILERINFO))
+endif
+ifndef OS_SOURCE
+OS_SOURCE:=$(word 4,$(FPC_COMPILERINFO))
+endif
+ifndef OS_TARGET
+OS_TARGET:=$(word 5,$(FPC_COMPILERINFO))
+endif
+FULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
+FULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
+ifeq ($(CPU_TARGET),armeb)
+ARCH=arm
+override FPCOPT+=-Cb
+else
+ifeq ($(CPU_TARGET),armel)
+ARCH=arm
+override FPCOPT+=-CaEABI
+else
+ARCH=$(CPU_TARGET)
+endif
+endif
+ifeq ($(FULL_TARGET),arm-embedded)
+ifeq ($(SUBARCH),)
+$(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t or SUBARCH=armv7m) must be defined)
+endif
+override FPCOPT+=-Cp$(SUBARCH)
+endif
+ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
+TARGETSUFFIX=$(OS_TARGET)
+SOURCESUFFIX=$(OS_SOURCE)
+else
+ifneq ($(findstring $(OS_TARGET),$(LIMIT83fs)),)
+TARGETSUFFIX=$(OS_TARGET)
+else
+TARGETSUFFIX=$(FULL_TARGET)
+endif
+SOURCESUFFIX=$(FULL_SOURCE)
+endif
+ifneq ($(FULL_TARGET),$(FULL_SOURCE))
+CROSSCOMPILE=1
+endif
+ifeq ($(findstring makefile,$(MAKECMDGOALS)),)
+ifeq ($(findstring $(FULL_TARGET),$(MAKEFILETARGETS)),)
+$(error The Makefile doesn't support target $(FULL_TARGET), please run fpcmake first)
+endif
+endif
+ifneq ($(findstring $(OS_TARGET),$(BSDs)),)
+BSDhier=1
+endif
+ifeq ($(OS_TARGET),linux)
+linuxHier=1
+endif
+ifndef CROSSCOMPILE
+BUILDFULLNATIVE=1
+export BUILDFULLNATIVE
+endif
+ifdef BUILDFULLNATIVE
+BUILDNATIVE=1
+export BUILDNATIVE
+endif
+export OS_TARGET OS_SOURCE ARCH CPU_TARGET CPU_SOURCE FULL_TARGET FULL_SOURCE TARGETSUFFIX SOURCESUFFIX CROSSCOMPILE
+ifdef FPCDIR
+override FPCDIR:=$(subst \,/,$(FPCDIR))
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
+override FPCDIR=wrong
+endif
+else
+override FPCDIR=wrong
+endif
+ifdef DEFAULT_FPCDIR
+ifeq ($(FPCDIR),wrong)
+override FPCDIR:=$(subst \,/,$(DEFAULT_FPCDIR))
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
+override FPCDIR=wrong
+endif
+endif
+endif
+ifeq ($(FPCDIR),wrong)
+ifdef inUnix
+override FPCDIR=/usr/local/lib/fpc/$(FPC_VERSION)
+ifeq ($(wildcard $(FPCDIR)/units),)
+override FPCDIR=/usr/lib/fpc/$(FPC_VERSION)
+endif
+else
+override FPCDIR:=$(subst /$(FPC),,$(firstword $(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))))
+override FPCDIR:=$(FPCDIR)/..
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
+override FPCDIR:=$(FPCDIR)/..
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
+override FPCDIR:=$(BASEDIR)
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
+override FPCDIR=c:/pp
+endif
+endif
+endif
+endif
+endif
+ifndef CROSSBINDIR
+CROSSBINDIR:=$(wildcard $(FPCDIR)/bin/$(TARGETSUFFIX))
+endif
+ifneq ($(findstring $(OS_TARGET),darwin iphonesim),)
+ifeq ($(OS_SOURCE),darwin)
+DARWIN2DARWIN=1
+endif
+endif
+ifndef BINUTILSPREFIX
+ifndef CROSSBINDIR
+ifdef CROSSCOMPILE
+ifneq ($(OS_TARGET),msdos)
+ifndef DARWIN2DARWIN
+ifneq ($(CPU_TARGET),jvm)
+BINUTILSPREFIX=$(CPU_TARGET)-$(OS_TARGET)-
+ifeq ($(OS_TARGET),android)
+ifeq ($(CPU_TARGET),arm)
+BINUTILSPREFIX=arm-linux-androideabi-
+else
+ifeq ($(CPU_TARGET),i386)
+BINUTILSPREFIX=i686-linux-android-
+else
+ifeq ($(CPU_TARGET),mipsel)
+BINUTILSPREFIX=mipsel-linux-android-
+endif
+endif
+endif
+endif
+endif
+endif
+else
+BINUTILSPREFIX=$(OS_TARGET)-
+endif
+endif
+endif
+endif
+UNITSDIR:=$(wildcard $(FPCDIR)/units/$(TARGETSUFFIX))
+ifeq ($(UNITSDIR),)
+UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET))
+endif
+PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages $(FPCDIR)/packages/base $(FPCDIR)/packages/extra)
+ifndef FPCFPMAKE
+ifdef CROSSCOMPILE
+ifeq ($(strip $(wildcard $(addsuffix /compiler/ppc$(SRCEXEEXT),$(FPCDIR)))),)
+FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH))))
+ifneq ($(FPCPROG),)
+FPCPROG:=$(firstword $(FPCPROG))
+FPCFPMAKE:=$(shell $(FPCPROG) -PB)
+ifeq ($(strip $(wildcard $(FPCFPMAKE))),)
+FPCFPMAKE:=$(firstword $(FPCPROG))
+endif
+else
+override FPCFPMAKE=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
+endif
+else
+FPCFPMAKE=$(strip $(wildcard $(addsuffix /compiler/ppc$(SRCEXEEXT),$(FPCDIR))))
+FPMAKE_SKIP_CONFIG=-n
+export FPCFPMAKE
+export FPMAKE_SKIP_CONFIG
+endif
+else
+FPMAKE_SKIP_CONFIG=-n
+FPCFPMAKE=$(FPC)
+endif
+endif
+override PACKAGE_NAME=pas2js
+override PACKAGE_VERSION=2.7.1
+FPMAKE_BIN_CLEAN=$(wildcard ./fpmake$(SRCEXEEXT))
+ifdef OS_TARGET
+FPC_TARGETOPT+=--os=$(OS_TARGET)
+endif
+ifdef CPU_TARGET
+FPC_TARGETOPT+=--cpu=$(CPU_TARGET)
+endif
+LOCALFPMAKE=./fpmake$(SRCEXEEXT)
+override INSTALL_FPCPACKAGE=y
+ifdef REQUIRE_UNITSDIR
+override UNITSDIR+=$(REQUIRE_UNITSDIR)
+endif
+ifdef REQUIRE_PACKAGESDIR
+override PACKAGESDIR+=$(REQUIRE_PACKAGESDIR)
+endif
+ifdef ZIPINSTALL
+ifneq ($(findstring $(OS_TARGET),$(UNIXs)),)
+UNIXHier=1
+endif
+else
+ifneq ($(findstring $(OS_SOURCE),$(UNIXs)),)
+UNIXHier=1
+endif
+endif
+ifndef INSTALL_PREFIX
+ifdef PREFIX
+INSTALL_PREFIX=$(PREFIX)
+endif
+endif
+ifndef INSTALL_PREFIX
+ifdef UNIXHier
+INSTALL_PREFIX=/usr/local
+else
+ifdef INSTALL_FPCPACKAGE
+INSTALL_BASEDIR:=/pp
+else
+INSTALL_BASEDIR:=/$(PACKAGE_NAME)
+endif
+endif
+endif
+export INSTALL_PREFIX
+ifdef INSTALL_FPCSUBDIR
+export INSTALL_FPCSUBDIR
+endif
+ifndef DIST_DESTDIR
+DIST_DESTDIR:=$(BASEDIR)
+endif
+export DIST_DESTDIR
+ifndef COMPILER_UNITTARGETDIR
+ifdef PACKAGEDIR_MAIN
+COMPILER_UNITTARGETDIR=$(PACKAGEDIR_MAIN)/units/$(TARGETSUFFIX)
+else
+COMPILER_UNITTARGETDIR=units/$(TARGETSUFFIX)
+endif
+endif
+ifndef COMPILER_TARGETDIR
+COMPILER_TARGETDIR=.
+endif
+ifndef INSTALL_BASEDIR
+ifdef UNIXHier
+ifdef INSTALL_FPCPACKAGE
+INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/fpc/$(FPC_VERSION)
+else
+INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/$(PACKAGE_NAME)
+endif
+else
+INSTALL_BASEDIR:=$(INSTALL_PREFIX)
+endif
+endif
+ifndef INSTALL_BINDIR
+ifdef UNIXHier
+INSTALL_BINDIR:=$(INSTALL_PREFIX)/bin
+else
+INSTALL_BINDIR:=$(INSTALL_BASEDIR)/bin
+ifdef INSTALL_FPCPACKAGE
+ifdef CROSSCOMPILE
+ifdef CROSSINSTALL
+INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(SOURCESUFFIX)
+else
+INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX)
+endif
+else
+INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX)
+endif
+endif
+endif
+endif
+ifndef INSTALL_UNITDIR
+INSTALL_UNITDIR:=$(INSTALL_BASEDIR)/units/$(TARGETSUFFIX)
+ifdef INSTALL_FPCPACKAGE
+ifdef PACKAGE_NAME
+INSTALL_UNITDIR:=$(INSTALL_UNITDIR)/$(PACKAGE_NAME)
+endif
+endif
+endif
+ifndef INSTALL_LIBDIR
+ifdef UNIXHier
+INSTALL_LIBDIR:=$(INSTALL_PREFIX)/lib
+else
+INSTALL_LIBDIR:=$(INSTALL_UNITDIR)
+endif
+endif
+ifndef INSTALL_SOURCEDIR
+ifdef UNIXHier
+ifdef BSDhier
+SRCPREFIXDIR=share/src
+else
+ifdef linuxHier
+SRCPREFIXDIR=share/src
+else
+SRCPREFIXDIR=src
+endif
+endif
+ifdef INSTALL_FPCPACKAGE
+ifdef INSTALL_FPCSUBDIR
+INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
+else
+INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
+endif
+else
+INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
+endif
+else
+ifdef INSTALL_FPCPACKAGE
+ifdef INSTALL_FPCSUBDIR
+INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
+else
+INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(PACKAGE_NAME)
+endif
+else
+INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source
+endif
+endif
+endif
+ifndef INSTALL_DOCDIR
+ifdef UNIXHier
+ifdef BSDhier
+DOCPREFIXDIR=share/doc
+else
+ifdef linuxHier
+DOCPREFIXDIR=share/doc
+else
+DOCPREFIXDIR=doc
+endif
+endif
+ifdef INSTALL_FPCPACKAGE
+INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
+else
+INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
+endif
+else
+ifdef INSTALL_FPCPACKAGE
+INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc/$(PACKAGE_NAME)
+else
+INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc
+endif
+endif
+endif
+ifndef INSTALL_EXAMPLEDIR
+ifdef UNIXHier
+ifdef INSTALL_FPCPACKAGE
+ifdef BSDhier
+INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
+else
+ifdef linuxHier
+INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples
+else
+INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)/examples/$(PACKAGE_NAME)
+endif
+endif
+else
+ifdef BSDhier
+INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
+else
+ifdef linuxHier
+INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
+else
+INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
+endif
+endif
+endif
+else
+ifdef INSTALL_FPCPACKAGE
+INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples/$(PACKAGE_NAME)
+else
+INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples
+endif
+endif
+endif
+ifndef INSTALL_DATADIR
+INSTALL_DATADIR=$(INSTALL_BASEDIR)
+endif
+ifndef INSTALL_SHAREDDIR
+INSTALL_SHAREDDIR=$(INSTALL_PREFIX)/lib
+endif
+ifdef CROSSCOMPILE
+ifndef CROSSBINDIR
+CROSSBINDIR:=$(wildcard $(CROSSTARGETDIR)/bin/$(SOURCESUFFIX))
+ifeq ($(CROSSBINDIR),)
+CROSSBINDIR:=$(wildcard $(INSTALL_BASEDIR)/cross/$(TARGETSUFFIX)/bin/$(FULL_SOURCE))
+endif
+endif
+else
+CROSSBINDIR=
+endif
+BATCHEXT=.bat
+LOADEREXT=.as
+EXEEXT=.exe
+PPLEXT=.ppl
+PPUEXT=.ppu
+OEXT=.o
+ASMEXT=.s
+SMARTEXT=.sl
+STATICLIBEXT=.a
+SHAREDLIBEXT=.so
+SHAREDLIBPREFIX=libfp
+STATICLIBPREFIX=libp
+IMPORTLIBPREFIX=libimp
+RSTEXT=.rst
+EXEDBGEXT=.dbg
+ifeq ($(OS_TARGET),go32v1)
+STATICLIBPREFIX=
+SHORTSUFFIX=v1
+endif
+ifeq ($(OS_TARGET),go32v2)
+STATICLIBPREFIX=
+SHORTSUFFIX=dos
+IMPORTLIBPREFIX=
+endif
+ifeq ($(OS_TARGET),watcom)
+STATICLIBPREFIX=
+OEXT=.obj
+ASMEXT=.asm
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=wat
+IMPORTLIBPREFIX=
+endif
+ifneq ($(CPU_TARGET),jvm)
+ifeq ($(OS_TARGET),android)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=lnx
+endif
+endif
+ifeq ($(OS_TARGET),linux)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=lnx
+endif
+ifeq ($(OS_TARGET),freebsd)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=fbs
+endif
+ifeq ($(OS_TARGET),netbsd)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=nbs
+endif
+ifeq ($(OS_TARGET),openbsd)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=obs
+endif
+ifeq ($(OS_TARGET),win32)
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=w32
+endif
+ifeq ($(OS_TARGET),os2)
+BATCHEXT=.cmd
+AOUTEXT=.out
+STATICLIBPREFIX=
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=os2
+ECHO=echo
+IMPORTLIBPREFIX=
+endif
+ifeq ($(OS_TARGET),emx)
+BATCHEXT=.cmd
+AOUTEXT=.out
+STATICLIBPREFIX=
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=emx
+ECHO=echo
+IMPORTLIBPREFIX=
+endif
+ifeq ($(OS_TARGET),amiga)
+EXEEXT=
+SHAREDLIBEXT=.library
+SHORTSUFFIX=amg
+endif
+ifeq ($(OS_TARGET),morphos)
+EXEEXT=
+SHAREDLIBEXT=.library
+SHORTSUFFIX=mos
+endif
+ifeq ($(OS_TARGET),atari)
+EXEEXT=.ttp
+SHORTSUFFIX=ata
+endif
+ifeq ($(OS_TARGET),beos)
+BATCHEXT=.sh
+EXEEXT=
+SHORTSUFFIX=be
+endif
+ifeq ($(OS_TARGET),haiku)
+BATCHEXT=.sh
+EXEEXT=
+SHORTSUFFIX=hai
+endif
+ifeq ($(OS_TARGET),solaris)
+BATCHEXT=.sh
+EXEEXT=
+SHORTSUFFIX=sun
+endif
+ifeq ($(OS_TARGET),qnx)
+BATCHEXT=.sh
+EXEEXT=
+SHORTSUFFIX=qnx
+endif
+ifeq ($(OS_TARGET),netware)
+EXEEXT=.nlm
+STATICLIBPREFIX=
+SHORTSUFFIX=nw
+IMPORTLIBPREFIX=imp
+endif
+ifeq ($(OS_TARGET),netwlibc)
+EXEEXT=.nlm
+STATICLIBPREFIX=
+SHORTSUFFIX=nwl
+IMPORTLIBPREFIX=imp
+endif
+ifeq ($(OS_TARGET),macos)
+BATCHEXT=
+EXEEXT=
+DEBUGSYMEXT=.xcoff
+SHORTSUFFIX=mac
+IMPORTLIBPREFIX=imp
+endif
+ifneq ($(findstring $(OS_TARGET),darwin iphonesim),)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=dwn
+EXEDBGEXT=.dSYM
+endif
+ifeq ($(OS_TARGET),gba)
+EXEEXT=.gba
+SHAREDLIBEXT=.so
+SHORTSUFFIX=gba
+endif
+ifeq ($(OS_TARGET),symbian)
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=symbian
+endif
+ifeq ($(OS_TARGET),NativeNT)
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=nativent
+endif
+ifeq ($(OS_TARGET),wii)
+EXEEXT=.dol
+SHAREDLIBEXT=.so
+SHORTSUFFIX=wii
+endif
+ifeq ($(OS_TARGET),aix)
+BATCHEXT=.sh
+EXEEXT=
+SHORTSUFFIX=aix
+endif
+ifeq ($(OS_TARGET),java)
+OEXT=.class
+ASMEXT=.j
+SHAREDLIBEXT=.jar
+SHORTSUFFIX=java
+endif
+ifeq ($(CPU_TARGET),jvm)
+ifeq ($(OS_TARGET),android)
+OEXT=.class
+ASMEXT=.j
+SHAREDLIBEXT=.jar
+SHORTSUFFIX=android
+endif
+endif
+ifeq ($(OS_TARGET),msdos)
+STATICLIBPREFIX=
+STATICLIBEXT=.a
+SHORTSUFFIX=d16
+endif
+ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
+FPCMADE=fpcmade.$(SHORTSUFFIX)
+ZIPSUFFIX=$(SHORTSUFFIX)
+ZIPCROSSPREFIX=
+ZIPSOURCESUFFIX=src
+ZIPEXAMPLESUFFIX=exm
+else
+FPCMADE=fpcmade.$(TARGETSUFFIX)
+ZIPSOURCESUFFIX=.source
+ZIPEXAMPLESUFFIX=.examples
+ifdef CROSSCOMPILE
+ZIPSUFFIX=.$(SOURCESUFFIX)
+ZIPCROSSPREFIX=$(TARGETSUFFIX)-
+else
+ZIPSUFFIX=.$(TARGETSUFFIX)
+ZIPCROSSPREFIX=
+endif
+endif
+ifndef ECHO
+ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ECHO),)
+ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ECHO),)
+ECHO= __missing_command_ECHO
+else
+ECHO:=$(firstword $(ECHO))
+endif
+else
+ECHO:=$(firstword $(ECHO))
+endif
+endif
+export ECHO
+ifndef DATE
+DATE:=$(strip $(wildcard $(addsuffix /gdate$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(DATE),)
+DATE:=$(strip $(wildcard $(addsuffix /date$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(DATE),)
+DATE= __missing_command_DATE
+else
+DATE:=$(firstword $(DATE))
+endif
+else
+DATE:=$(firstword $(DATE))
+endif
+endif
+export DATE
+ifndef GINSTALL
+GINSTALL:=$(strip $(wildcard $(addsuffix /ginstall$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(GINSTALL),)
+GINSTALL:=$(strip $(wildcard $(addsuffix /install$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(GINSTALL),)
+GINSTALL= __missing_command_GINSTALL
+else
+GINSTALL:=$(firstword $(GINSTALL))
+endif
+else
+GINSTALL:=$(firstword $(GINSTALL))
+endif
+endif
+export GINSTALL
+ifndef CPPROG
+CPPROG:=$(strip $(wildcard $(addsuffix /cp$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(CPPROG),)
+CPPROG= __missing_command_CPPROG
+else
+CPPROG:=$(firstword $(CPPROG))
+endif
+endif
+export CPPROG
+ifndef RMPROG
+RMPROG:=$(strip $(wildcard $(addsuffix /rm$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(RMPROG),)
+RMPROG= __missing_command_RMPROG
+else
+RMPROG:=$(firstword $(RMPROG))
+endif
+endif
+export RMPROG
+ifndef MVPROG
+MVPROG:=$(strip $(wildcard $(addsuffix /mv$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(MVPROG),)
+MVPROG= __missing_command_MVPROG
+else
+MVPROG:=$(firstword $(MVPROG))
+endif
+endif
+export MVPROG
+ifndef MKDIRPROG
+MKDIRPROG:=$(strip $(wildcard $(addsuffix /gmkdir$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(MKDIRPROG),)
+MKDIRPROG:=$(strip $(wildcard $(addsuffix /mkdir$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(MKDIRPROG),)
+MKDIRPROG= __missing_command_MKDIRPROG
+else
+MKDIRPROG:=$(firstword $(MKDIRPROG))
+endif
+else
+MKDIRPROG:=$(firstword $(MKDIRPROG))
+endif
+endif
+export MKDIRPROG
+ifndef ECHOREDIR
+ifndef inUnix
+ECHOREDIR=echo
+else
+ECHOREDIR=$(ECHO)
+endif
+endif
+ifndef COPY
+COPY:=$(CPPROG) -fp
+endif
+ifndef COPYTREE
+COPYTREE:=$(CPPROG) -Rfp
+endif
+ifndef MKDIRTREE
+MKDIRTREE:=$(MKDIRPROG) -p
+endif
+ifndef MOVE
+MOVE:=$(MVPROG) -f
+endif
+ifndef DEL
+DEL:=$(RMPROG) -f
+endif
+ifndef DELTREE
+DELTREE:=$(RMPROG) -rf
+endif
+ifndef INSTALL
+ifdef inUnix
+INSTALL:=$(GINSTALL) -c -m 644
+else
+INSTALL:=$(COPY)
+endif
+endif
+ifndef INSTALLEXE
+ifdef inUnix
+INSTALLEXE:=$(GINSTALL) -c -m 755
+else
+INSTALLEXE:=$(COPY)
+endif
+endif
+ifndef MKDIR
+MKDIR:=$(GINSTALL) -m 755 -d
+endif
+export ECHOREDIR COPY COPYTREE MOVE DEL DELTREE INSTALL INSTALLEXE MKDIR
+ifndef PPUMOVE
+PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(PPUMOVE),)
+PPUMOVE= __missing_command_PPUMOVE
+else
+PPUMOVE:=$(firstword $(PPUMOVE))
+endif
+endif
+export PPUMOVE
+ifndef FPCMAKE
+FPCMAKE:=$(strip $(wildcard $(addsuffix /fpcmake$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(FPCMAKE),)
+FPCMAKE= __missing_command_FPCMAKE
+else
+FPCMAKE:=$(firstword $(FPCMAKE))
+endif
+endif
+export FPCMAKE
+ifndef ZIPPROG
+ZIPPROG:=$(strip $(wildcard $(addsuffix /zip$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ZIPPROG),)
+ZIPPROG= __missing_command_ZIPPROG
+else
+ZIPPROG:=$(firstword $(ZIPPROG))
+endif
+endif
+export ZIPPROG
+ifndef TARPROG
+TARPROG:=$(strip $(wildcard $(addsuffix /gtar$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(TARPROG),)
+TARPROG:=$(strip $(wildcard $(addsuffix /tar$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(TARPROG),)
+TARPROG= __missing_command_TARPROG
+else
+TARPROG:=$(firstword $(TARPROG))
+endif
+else
+TARPROG:=$(firstword $(TARPROG))
+endif
+endif
+export TARPROG
+ASNAME=$(BINUTILSPREFIX)as
+LDNAME=$(BINUTILSPREFIX)ld
+ARNAME=$(BINUTILSPREFIX)ar
+RCNAME=$(BINUTILSPREFIX)rc
+NASMNAME=$(BINUTILSPREFIX)nasm
+ifndef ASPROG
+ifdef CROSSBINDIR
+ASPROG=$(CROSSBINDIR)/$(ASNAME)$(SRCEXEEXT)
+else
+ASPROG=$(ASNAME)
+endif
+endif
+ifndef LDPROG
+ifdef CROSSBINDIR
+LDPROG=$(CROSSBINDIR)/$(LDNAME)$(SRCEXEEXT)
+else
+LDPROG=$(LDNAME)
+endif
+endif
+ifndef RCPROG
+ifdef CROSSBINDIR
+RCPROG=$(CROSSBINDIR)/$(RCNAME)$(SRCEXEEXT)
+else
+RCPROG=$(RCNAME)
+endif
+endif
+ifndef ARPROG
+ifdef CROSSBINDIR
+ARPROG=$(CROSSBINDIR)/$(ARNAME)$(SRCEXEEXT)
+else
+ARPROG=$(ARNAME)
+endif
+endif
+ifndef NASMPROG
+ifdef CROSSBINDIR
+NASMPROG=$(CROSSBINDIR)/$(NASMNAME)$(SRCEXEEXT)
+else
+NASMPROG=$(NASMNAME)
+endif
+endif
+AS=$(ASPROG)
+LD=$(LDPROG)
+RC=$(RCPROG)
+AR=$(ARPROG)
+NASM=$(NASMPROG)
+ifdef inUnix
+PPAS=./ppas$(SRCBATCHEXT)
+else
+PPAS=ppas$(SRCBATCHEXT)
+endif
+ifdef inUnix
+LDCONFIG=ldconfig
+else
+LDCONFIG=
+endif
+ifdef DATE
+DATESTR:=$(shell $(DATE) +%Y%m%d)
+else
+DATESTR=
+endif
+ZIPOPT=-9
+ZIPEXT=.zip
+ifeq ($(USETAR),bz2)
+TAROPT=vj
+TAREXT=.tar.bz2
+else
+TAROPT=vz
+TAREXT=.tar.gz
+endif
+override REQUIRE_PACKAGES=rtl pastojs fcl-js fcl-passrc
+ifeq ($(FULL_TARGET),i386-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),i386-go32v2)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),i386-win32)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),i386-os2)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),i386-freebsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),i386-beos)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),i386-haiku)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),i386-netbsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),i386-solaris)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),i386-qnx)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),i386-netware)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),i386-openbsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),i386-wdosx)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),i386-darwin)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),i386-emx)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),i386-watcom)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),i386-netwlibc)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),i386-wince)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),i386-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),i386-symbian)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),i386-nativent)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),i386-iphonesim)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),i386-android)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),m68k-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),m68k-freebsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),m68k-netbsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),m68k-amiga)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),m68k-atari)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),m68k-openbsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),m68k-palmos)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),m68k-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),powerpc-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),powerpc-netbsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),powerpc-amiga)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),powerpc-macos)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),powerpc-darwin)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),powerpc-morphos)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),powerpc-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),powerpc-wii)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),powerpc-aix)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),sparc-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),sparc-netbsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),sparc-solaris)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),sparc-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),x86_64-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),x86_64-freebsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),x86_64-netbsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),x86_64-solaris)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),x86_64-openbsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),x86_64-darwin)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),x86_64-win64)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),x86_64-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),arm-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),arm-palmos)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),arm-darwin)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),arm-wince)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),arm-gba)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),arm-nds)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),arm-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),arm-symbian)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),arm-android)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),powerpc64-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),powerpc64-darwin)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),powerpc64-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),powerpc64-aix)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),avr-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),armeb-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),armeb-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),mips-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),mipsel-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),mipsel-android)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),jvm-java)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),jvm-android)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifeq ($(FULL_TARGET),i8086-msdos)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-JS=1
+REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_PASTOJS=1
+endif
+ifdef REQUIRE_PACKAGES_RTL
+PACKAGEDIR_RTL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
+ifneq ($(PACKAGEDIR_RTL),)
+ifneq ($(wildcard $(PACKAGEDIR_RTL)/units/$(TARGETSUFFIX)),)
+UNITDIR_RTL=$(PACKAGEDIR_RTL)/units/$(TARGETSUFFIX)
+else
+UNITDIR_RTL=$(PACKAGEDIR_RTL)
+endif
+ifneq ($(wildcard $(PACKAGEDIR_RTL)/units/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_RTL=$(PACKAGEDIR_RTL)/units/$(SOURCESUFFIX)
+else
+ifneq ($(wildcard $(PACKAGEDIR_RTL)/units_bs/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_RTL=$(PACKAGEDIR_RTL)/units_bs/$(SOURCESUFFIX)
+else
+UNITDIR_FPMAKE_RTL=$(PACKAGEDIR_RTL)
+endif
+endif
+ifdef CHECKDEPEND
+$(PACKAGEDIR_RTL)/$(OS_TARGET)/$(FPCMADE):
+ $(MAKE) -C $(PACKAGEDIR_RTL)/$(OS_TARGET) $(FPCMADE)
+override ALLDEPENDENCIES+=$(PACKAGEDIR_RTL)/$(OS_TARGET)/$(FPCMADE)
+endif
+else
+PACKAGEDIR_RTL=
+UNITDIR_RTL:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /rtl/Package.fpc,$(UNITSDIR)))))
+ifneq ($(UNITDIR_RTL),)
+UNITDIR_RTL:=$(firstword $(UNITDIR_RTL))
+else
+UNITDIR_RTL=
+endif
+endif
+ifdef UNITDIR_RTL
+override COMPILER_UNITDIR+=$(UNITDIR_RTL)
+endif
+ifdef UNITDIR_FPMAKE_RTL
+override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_RTL)
+endif
+endif
+ifdef REQUIRE_PACKAGES_PASZLIB
+PACKAGEDIR_PASZLIB:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /paszlib/Makefile.fpc,$(PACKAGESDIR))))))
+ifneq ($(PACKAGEDIR_PASZLIB),)
+ifneq ($(wildcard $(PACKAGEDIR_PASZLIB)/units/$(TARGETSUFFIX)),)
+UNITDIR_PASZLIB=$(PACKAGEDIR_PASZLIB)/units/$(TARGETSUFFIX)
+else
+UNITDIR_PASZLIB=$(PACKAGEDIR_PASZLIB)
+endif
+ifneq ($(wildcard $(PACKAGEDIR_PASZLIB)/units/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_PASZLIB=$(PACKAGEDIR_PASZLIB)/units/$(SOURCESUFFIX)
+else
+ifneq ($(wildcard $(PACKAGEDIR_PASZLIB)/units_bs/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_PASZLIB=$(PACKAGEDIR_PASZLIB)/units_bs/$(SOURCESUFFIX)
+else
+UNITDIR_FPMAKE_PASZLIB=$(PACKAGEDIR_PASZLIB)
+endif
+endif
+ifdef CHECKDEPEND
+$(PACKAGEDIR_PASZLIB)/$(FPCMADE):
+ $(MAKE) -C $(PACKAGEDIR_PASZLIB) $(FPCMADE)
+override ALLDEPENDENCIES+=$(PACKAGEDIR_PASZLIB)/$(FPCMADE)
+endif
+else
+PACKAGEDIR_PASZLIB=
+UNITDIR_PASZLIB:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /paszlib/Package.fpc,$(UNITSDIR)))))
+ifneq ($(UNITDIR_PASZLIB),)
+UNITDIR_PASZLIB:=$(firstword $(UNITDIR_PASZLIB))
+else
+UNITDIR_PASZLIB=
+endif
+endif
+ifdef UNITDIR_PASZLIB
+override COMPILER_UNITDIR+=$(UNITDIR_PASZLIB)
+endif
+ifdef UNITDIR_FPMAKE_PASZLIB
+override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_PASZLIB)
+endif
+endif
+ifdef REQUIRE_PACKAGES_FCL-PROCESS
+PACKAGEDIR_FCL-PROCESS:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fcl-process/Makefile.fpc,$(PACKAGESDIR))))))
+ifneq ($(PACKAGEDIR_FCL-PROCESS),)
+ifneq ($(wildcard $(PACKAGEDIR_FCL-PROCESS)/units/$(TARGETSUFFIX)),)
+UNITDIR_FCL-PROCESS=$(PACKAGEDIR_FCL-PROCESS)/units/$(TARGETSUFFIX)
+else
+UNITDIR_FCL-PROCESS=$(PACKAGEDIR_FCL-PROCESS)
+endif
+ifneq ($(wildcard $(PACKAGEDIR_FCL-PROCESS)/units/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_FCL-PROCESS=$(PACKAGEDIR_FCL-PROCESS)/units/$(SOURCESUFFIX)
+else
+ifneq ($(wildcard $(PACKAGEDIR_FCL-PROCESS)/units_bs/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_FCL-PROCESS=$(PACKAGEDIR_FCL-PROCESS)/units_bs/$(SOURCESUFFIX)
+else
+UNITDIR_FPMAKE_FCL-PROCESS=$(PACKAGEDIR_FCL-PROCESS)
+endif
+endif
+ifdef CHECKDEPEND
+$(PACKAGEDIR_FCL-PROCESS)/$(FPCMADE):
+ $(MAKE) -C $(PACKAGEDIR_FCL-PROCESS) $(FPCMADE)
+override ALLDEPENDENCIES+=$(PACKAGEDIR_FCL-PROCESS)/$(FPCMADE)
+endif
+else
+PACKAGEDIR_FCL-PROCESS=
+UNITDIR_FCL-PROCESS:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /fcl-process/Package.fpc,$(UNITSDIR)))))
+ifneq ($(UNITDIR_FCL-PROCESS),)
+UNITDIR_FCL-PROCESS:=$(firstword $(UNITDIR_FCL-PROCESS))
+else
+UNITDIR_FCL-PROCESS=
+endif
+endif
+ifdef UNITDIR_FCL-PROCESS
+override COMPILER_UNITDIR+=$(UNITDIR_FCL-PROCESS)
+endif
+ifdef UNITDIR_FPMAKE_FCL-PROCESS
+override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_FCL-PROCESS)
+endif
+endif
+ifdef REQUIRE_PACKAGES_HASH
+PACKAGEDIR_HASH:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /hash/Makefile.fpc,$(PACKAGESDIR))))))
+ifneq ($(PACKAGEDIR_HASH),)
+ifneq ($(wildcard $(PACKAGEDIR_HASH)/units/$(TARGETSUFFIX)),)
+UNITDIR_HASH=$(PACKAGEDIR_HASH)/units/$(TARGETSUFFIX)
+else
+UNITDIR_HASH=$(PACKAGEDIR_HASH)
+endif
+ifneq ($(wildcard $(PACKAGEDIR_HASH)/units/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_HASH=$(PACKAGEDIR_HASH)/units/$(SOURCESUFFIX)
+else
+ifneq ($(wildcard $(PACKAGEDIR_HASH)/units_bs/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_HASH=$(PACKAGEDIR_HASH)/units_bs/$(SOURCESUFFIX)
+else
+UNITDIR_FPMAKE_HASH=$(PACKAGEDIR_HASH)
+endif
+endif
+ifdef CHECKDEPEND
+$(PACKAGEDIR_HASH)/$(FPCMADE):
+ $(MAKE) -C $(PACKAGEDIR_HASH) $(FPCMADE)
+override ALLDEPENDENCIES+=$(PACKAGEDIR_HASH)/$(FPCMADE)
+endif
+else
+PACKAGEDIR_HASH=
+UNITDIR_HASH:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /hash/Package.fpc,$(UNITSDIR)))))
+ifneq ($(UNITDIR_HASH),)
+UNITDIR_HASH:=$(firstword $(UNITDIR_HASH))
+else
+UNITDIR_HASH=
+endif
+endif
+ifdef UNITDIR_HASH
+override COMPILER_UNITDIR+=$(UNITDIR_HASH)
+endif
+ifdef UNITDIR_FPMAKE_HASH
+override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_HASH)
+endif
+endif
+ifdef REQUIRE_PACKAGES_LIBTAR
+PACKAGEDIR_LIBTAR:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /libtar/Makefile.fpc,$(PACKAGESDIR))))))
+ifneq ($(PACKAGEDIR_LIBTAR),)
+ifneq ($(wildcard $(PACKAGEDIR_LIBTAR)/units/$(TARGETSUFFIX)),)
+UNITDIR_LIBTAR=$(PACKAGEDIR_LIBTAR)/units/$(TARGETSUFFIX)
+else
+UNITDIR_LIBTAR=$(PACKAGEDIR_LIBTAR)
+endif
+ifneq ($(wildcard $(PACKAGEDIR_LIBTAR)/units/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_LIBTAR=$(PACKAGEDIR_LIBTAR)/units/$(SOURCESUFFIX)
+else
+ifneq ($(wildcard $(PACKAGEDIR_LIBTAR)/units_bs/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_LIBTAR=$(PACKAGEDIR_LIBTAR)/units_bs/$(SOURCESUFFIX)
+else
+UNITDIR_FPMAKE_LIBTAR=$(PACKAGEDIR_LIBTAR)
+endif
+endif
+ifdef CHECKDEPEND
+$(PACKAGEDIR_LIBTAR)/$(FPCMADE):
+ $(MAKE) -C $(PACKAGEDIR_LIBTAR) $(FPCMADE)
+override ALLDEPENDENCIES+=$(PACKAGEDIR_LIBTAR)/$(FPCMADE)
+endif
+else
+PACKAGEDIR_LIBTAR=
+UNITDIR_LIBTAR:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /libtar/Package.fpc,$(UNITSDIR)))))
+ifneq ($(UNITDIR_LIBTAR),)
+UNITDIR_LIBTAR:=$(firstword $(UNITDIR_LIBTAR))
+else
+UNITDIR_LIBTAR=
+endif
+endif
+ifdef UNITDIR_LIBTAR
+override COMPILER_UNITDIR+=$(UNITDIR_LIBTAR)
+endif
+ifdef UNITDIR_FPMAKE_LIBTAR
+override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_LIBTAR)
+endif
+endif
+ifdef REQUIRE_PACKAGES_FPMKUNIT
+PACKAGEDIR_FPMKUNIT:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fpmkunit/Makefile.fpc,$(PACKAGESDIR))))))
+ifneq ($(PACKAGEDIR_FPMKUNIT),)
+ifneq ($(wildcard $(PACKAGEDIR_FPMKUNIT)/units/$(TARGETSUFFIX)),)
+UNITDIR_FPMKUNIT=$(PACKAGEDIR_FPMKUNIT)/units/$(TARGETSUFFIX)
+else
+UNITDIR_FPMKUNIT=$(PACKAGEDIR_FPMKUNIT)
+endif
+ifneq ($(wildcard $(PACKAGEDIR_FPMKUNIT)/units/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_FPMKUNIT=$(PACKAGEDIR_FPMKUNIT)/units/$(SOURCESUFFIX)
+else
+ifneq ($(wildcard $(PACKAGEDIR_FPMKUNIT)/units_bs/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_FPMKUNIT=$(PACKAGEDIR_FPMKUNIT)/units_bs/$(SOURCESUFFIX)
+else
+UNITDIR_FPMAKE_FPMKUNIT=$(PACKAGEDIR_FPMKUNIT)
+endif
+endif
+ifdef CHECKDEPEND
+$(PACKAGEDIR_FPMKUNIT)/$(FPCMADE):
+ $(MAKE) -C $(PACKAGEDIR_FPMKUNIT) $(FPCMADE)
+override ALLDEPENDENCIES+=$(PACKAGEDIR_FPMKUNIT)/$(FPCMADE)
+endif
+else
+PACKAGEDIR_FPMKUNIT=
+UNITDIR_FPMKUNIT:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /fpmkunit/Package.fpc,$(UNITSDIR)))))
+ifneq ($(UNITDIR_FPMKUNIT),)
+UNITDIR_FPMKUNIT:=$(firstword $(UNITDIR_FPMKUNIT))
+else
+UNITDIR_FPMKUNIT=
+endif
+endif
+ifdef UNITDIR_FPMKUNIT
+override COMPILER_UNITDIR+=$(UNITDIR_FPMKUNIT)
+endif
+ifdef UNITDIR_FPMAKE_FPMKUNIT
+override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_FPMKUNIT)
+endif
+endif
+ifdef REQUIRE_PACKAGES_FCL-JS
+PACKAGEDIR_FCL-JS:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fcl-js/Makefile.fpc,$(PACKAGESDIR))))))
+ifneq ($(PACKAGEDIR_FCL-JS),)
+ifneq ($(wildcard $(PACKAGEDIR_FCL-JS)/units/$(TARGETSUFFIX)),)
+UNITDIR_FCL-JS=$(PACKAGEDIR_FCL-JS)/units/$(TARGETSUFFIX)
+else
+UNITDIR_FCL-JS=$(PACKAGEDIR_FCL-JS)
+endif
+ifneq ($(wildcard $(PACKAGEDIR_FCL-JS)/units/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_FCL-JS=$(PACKAGEDIR_FCL-JS)/units/$(SOURCESUFFIX)
+else
+ifneq ($(wildcard $(PACKAGEDIR_FCL-JS)/units_bs/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_FCL-JS=$(PACKAGEDIR_FCL-JS)/units_bs/$(SOURCESUFFIX)
+else
+UNITDIR_FPMAKE_FCL-JS=$(PACKAGEDIR_FCL-JS)
+endif
+endif
+ifdef CHECKDEPEND
+$(PACKAGEDIR_FCL-JS)/$(FPCMADE):
+ $(MAKE) -C $(PACKAGEDIR_FCL-JS) $(FPCMADE)
+override ALLDEPENDENCIES+=$(PACKAGEDIR_FCL-JS)/$(FPCMADE)
+endif
+else
+PACKAGEDIR_FCL-JS=
+UNITDIR_FCL-JS:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /fcl-js/Package.fpc,$(UNITSDIR)))))
+ifneq ($(UNITDIR_FCL-JS),)
+UNITDIR_FCL-JS:=$(firstword $(UNITDIR_FCL-JS))
+else
+UNITDIR_FCL-JS=
+endif
+endif
+ifdef UNITDIR_FCL-JS
+override COMPILER_UNITDIR+=$(UNITDIR_FCL-JS)
+endif
+ifdef UNITDIR_FPMAKE_FCL-JS
+override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_FCL-JS)
+endif
+endif
+ifdef REQUIRE_PACKAGES_FCL-PASSRC
+PACKAGEDIR_FCL-PASSRC:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fcl-passrc/Makefile.fpc,$(PACKAGESDIR))))))
+ifneq ($(PACKAGEDIR_FCL-PASSRC),)
+ifneq ($(wildcard $(PACKAGEDIR_FCL-PASSRC)/units/$(TARGETSUFFIX)),)
+UNITDIR_FCL-PASSRC=$(PACKAGEDIR_FCL-PASSRC)/units/$(TARGETSUFFIX)
+else
+UNITDIR_FCL-PASSRC=$(PACKAGEDIR_FCL-PASSRC)
+endif
+ifneq ($(wildcard $(PACKAGEDIR_FCL-PASSRC)/units/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_FCL-PASSRC=$(PACKAGEDIR_FCL-PASSRC)/units/$(SOURCESUFFIX)
+else
+ifneq ($(wildcard $(PACKAGEDIR_FCL-PASSRC)/units_bs/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_FCL-PASSRC=$(PACKAGEDIR_FCL-PASSRC)/units_bs/$(SOURCESUFFIX)
+else
+UNITDIR_FPMAKE_FCL-PASSRC=$(PACKAGEDIR_FCL-PASSRC)
+endif
+endif
+ifdef CHECKDEPEND
+$(PACKAGEDIR_FCL-PASSRC)/$(FPCMADE):
+ $(MAKE) -C $(PACKAGEDIR_FCL-PASSRC) $(FPCMADE)
+override ALLDEPENDENCIES+=$(PACKAGEDIR_FCL-PASSRC)/$(FPCMADE)
+endif
+else
+PACKAGEDIR_FCL-PASSRC=
+UNITDIR_FCL-PASSRC:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /fcl-passrc/Package.fpc,$(UNITSDIR)))))
+ifneq ($(UNITDIR_FCL-PASSRC),)
+UNITDIR_FCL-PASSRC:=$(firstword $(UNITDIR_FCL-PASSRC))
+else
+UNITDIR_FCL-PASSRC=
+endif
+endif
+ifdef UNITDIR_FCL-PASSRC
+override COMPILER_UNITDIR+=$(UNITDIR_FCL-PASSRC)
+endif
+ifdef UNITDIR_FPMAKE_FCL-PASSRC
+override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_FCL-PASSRC)
+endif
+endif
+ifdef REQUIRE_PACKAGES_PASTOJS
+PACKAGEDIR_PASTOJS:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /pastojs/Makefile.fpc,$(PACKAGESDIR))))))
+ifneq ($(PACKAGEDIR_PASTOJS),)
+ifneq ($(wildcard $(PACKAGEDIR_PASTOJS)/units/$(TARGETSUFFIX)),)
+UNITDIR_PASTOJS=$(PACKAGEDIR_PASTOJS)/units/$(TARGETSUFFIX)
+else
+UNITDIR_PASTOJS=$(PACKAGEDIR_PASTOJS)
+endif
+ifneq ($(wildcard $(PACKAGEDIR_PASTOJS)/units/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_PASTOJS=$(PACKAGEDIR_PASTOJS)/units/$(SOURCESUFFIX)
+else
+ifneq ($(wildcard $(PACKAGEDIR_PASTOJS)/units_bs/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_PASTOJS=$(PACKAGEDIR_PASTOJS)/units_bs/$(SOURCESUFFIX)
+else
+UNITDIR_FPMAKE_PASTOJS=$(PACKAGEDIR_PASTOJS)
+endif
+endif
+ifdef CHECKDEPEND
+$(PACKAGEDIR_PASTOJS)/$(FPCMADE):
+ $(MAKE) -C $(PACKAGEDIR_PASTOJS) $(FPCMADE)
+override ALLDEPENDENCIES+=$(PACKAGEDIR_PASTOJS)/$(FPCMADE)
+endif
+else
+PACKAGEDIR_PASTOJS=
+UNITDIR_PASTOJS:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /pastojs/Package.fpc,$(UNITSDIR)))))
+ifneq ($(UNITDIR_PASTOJS),)
+UNITDIR_PASTOJS:=$(firstword $(UNITDIR_PASTOJS))
+else
+UNITDIR_PASTOJS=
+endif
+endif
+ifdef UNITDIR_PASTOJS
+override COMPILER_UNITDIR+=$(UNITDIR_PASTOJS)
+endif
+ifdef UNITDIR_FPMAKE_PASTOJS
+override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_PASTOJS)
+endif
+endif
+ifndef NOCPUDEF
+override FPCOPTDEF=$(ARCH)
+endif
+ifneq ($(OS_TARGET),$(OS_SOURCE))
+override FPCOPT+=-T$(OS_TARGET)
+endif
+ifneq ($(CPU_TARGET),$(CPU_SOURCE))
+override FPCOPT+=-P$(ARCH)
+endif
+ifeq ($(OS_SOURCE),openbsd)
+override FPCOPT+=-FD$(NEW_BINUTILS_PATH)
+override FPCMAKEOPT+=-FD$(NEW_BINUTILS_PATH)
+endif
+ifndef CROSSBOOTSTRAP
+ifneq ($(BINUTILSPREFIX),)
+override FPCOPT+=-XP$(BINUTILSPREFIX)
+endif
+ifneq ($(BINUTILSPREFIX),)
+override FPCOPT+=-Xr$(RLINKPATH)
+endif
+endif
+ifndef CROSSCOMPILE
+ifneq ($(BINUTILSPREFIX),)
+override FPCMAKEOPT+=-XP$(BINUTILSPREFIX)
+endif
+endif
+ifdef UNITDIR
+override FPCOPT+=$(addprefix -Fu,$(UNITDIR))
+endif
+ifdef LIBDIR
+override FPCOPT+=$(addprefix -Fl,$(LIBDIR))
+endif
+ifdef OBJDIR
+override FPCOPT+=$(addprefix -Fo,$(OBJDIR))
+endif
+ifdef INCDIR
+override FPCOPT+=$(addprefix -Fi,$(INCDIR))
+endif
+ifdef LINKSMART
+override FPCOPT+=-XX
+endif
+ifdef CREATESMART
+override FPCOPT+=-CX
+endif
+ifdef DEBUG
+override FPCOPT+=-gl
+override FPCOPTDEF+=DEBUG
+endif
+ifdef RELEASE
+ifneq ($(findstring 2.0.,$(FPC_VERSION)),)
+ifeq ($(CPU_TARGET),i386)
+FPCCPUOPT:=-OG2p3
+endif
+ifeq ($(CPU_TARGET),powerpc)
+FPCCPUOPT:=-O1r
+endif
+else
+FPCCPUOPT:=-O2
+endif
+override FPCOPT+=-Ur -Xs $(FPCCPUOPT) -n
+override FPCOPTDEF+=RELEASE
+endif
+ifdef STRIP
+override FPCOPT+=-Xs
+endif
+ifdef OPTIMIZE
+override FPCOPT+=-O2
+endif
+ifdef VERBOSE
+override FPCOPT+=-vwni
+endif
+ifdef COMPILER_OPTIONS
+override FPCOPT+=$(COMPILER_OPTIONS)
+endif
+ifdef COMPILER_UNITDIR
+override FPCOPT+=$(addprefix -Fu,$(COMPILER_UNITDIR))
+endif
+ifdef COMPILER_LIBRARYDIR
+override FPCOPT+=$(addprefix -Fl,$(COMPILER_LIBRARYDIR))
+endif
+ifdef COMPILER_OBJECTDIR
+override FPCOPT+=$(addprefix -Fo,$(COMPILER_OBJECTDIR))
+endif
+ifdef COMPILER_INCLUDEDIR
+override FPCOPT+=$(addprefix -Fi,$(COMPILER_INCLUDEDIR))
+endif
+ifdef CROSSBINDIR
+override FPCOPT+=-FD$(CROSSBINDIR)
+endif
+ifdef COMPILER_TARGETDIR
+override FPCOPT+=-FE$(COMPILER_TARGETDIR)
+ifeq ($(COMPILER_TARGETDIR),.)
+override TARGETDIRPREFIX=
+else
+override TARGETDIRPREFIX=$(COMPILER_TARGETDIR)/
+endif
+endif
+ifdef COMPILER_UNITTARGETDIR
+override FPCOPT+=-FU$(COMPILER_UNITTARGETDIR)
+ifeq ($(COMPILER_UNITTARGETDIR),.)
+override UNITTARGETDIRPREFIX=
+else
+override UNITTARGETDIRPREFIX=$(COMPILER_UNITTARGETDIR)/
+endif
+else
+ifdef COMPILER_TARGETDIR
+override COMPILER_UNITTARGETDIR=$(COMPILER_TARGETDIR)
+override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX)
+endif
+endif
+ifdef CREATESHARED
+override FPCOPT+=-Cg
+endif
+ifneq ($(findstring $(OS_TARGET),freebsd openbsd netbsd linux solaris),)
+ifeq ($(CPU_TARGET),x86_64)
+override FPCOPT+=-Cg
+endif
+endif
+ifdef LINKSHARED
+endif
+ifdef OPT
+override FPCOPT+=$(OPT)
+endif
+ifdef FPCOPTDEF
+override FPCOPT+=$(addprefix -d,$(FPCOPTDEF))
+endif
+ifdef CFGFILE
+override FPCOPT+=@$(CFGFILE)
+endif
+ifdef USEENV
+override FPCEXTCMD:=$(FPCOPT)
+override FPCOPT:=!FPCEXTCMD
+export FPCEXTCMD
+endif
+override AFULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
+override AFULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
+ifneq ($(AFULL_TARGET),$(AFULL_SOURCE))
+override ACROSSCOMPILE=1
+endif
+ifdef ACROSSCOMPILE
+override FPCOPT+=$(CROSSOPT)
+endif
+override COMPILER:=$(strip $(FPC) $(FPCOPT))
+ifeq (,$(findstring -s ,$(COMPILER)))
+EXECPPAS=
+else
+ifeq ($(FULL_SOURCE),$(FULL_TARGET))
+ifdef RUNBATCH
+EXECPPAS:=@$(RUNBATCH) $(PPAS)
+else
+EXECPPAS:=@$(PPAS)
+endif
+endif
+endif
+ifdef TARGET_RSTS
+override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS))
+override CLEANRSTFILES+=$(RSTFILES)
+endif
+.PHONY: fpc_install fpc_sourceinstall fpc_exampleinstall
+ifdef INSTALL_UNITS
+override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(INSTALL_UNITS))
+endif
+ifdef INSTALL_BUILDUNIT
+override INSTALLPPUFILES:=$(filter-out $(INSTALL_BUILDUNIT)$(PPUEXT),$(INSTALLPPUFILES))
+endif
+ifdef INSTALLPPUFILES
+override INSTALLPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES)))
+ifneq ($(UNITTARGETDIRPREFIX),)
+override INSTALLPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(notdir $(INSTALLPPUFILES)))
+override INSTALLPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(notdir $(INSTALLPPULINKFILES))))
+endif
+override INSTALL_CREATEPACKAGEFPC=1
+endif
+ifdef INSTALLEXEFILES
+ifneq ($(TARGETDIRPREFIX),)
+override INSTALLEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(notdir $(INSTALLEXEFILES)))
+endif
+endif
+fpc_install: all $(INSTALLTARGET)
+ifdef INSTALLEXEFILES
+ $(MKDIR) $(INSTALL_BINDIR)
+ $(INSTALLEXE) $(INSTALLEXEFILES) $(INSTALL_BINDIR)
+endif
+ifdef INSTALL_CREATEPACKAGEFPC
+ifdef FPCMAKE
+ifdef PACKAGE_VERSION
+ifneq ($(wildcard Makefile.fpc),)
+ $(FPCMAKE) -p -T$(CPU_TARGET)-$(OS_TARGET) Makefile.fpc
+ $(MKDIR) $(INSTALL_UNITDIR)
+ $(INSTALL) Package.fpc $(INSTALL_UNITDIR)
+endif
+endif
+endif
+endif
+ifdef INSTALLPPUFILES
+ $(MKDIR) $(INSTALL_UNITDIR)
+ $(INSTALL) $(INSTALLPPUFILES) $(INSTALL_UNITDIR)
+ifneq ($(INSTALLPPULINKFILES),)
+ $(INSTALL) $(INSTALLPPULINKFILES) $(INSTALL_UNITDIR)
+endif
+ifneq ($(wildcard $(LIB_FULLNAME)),)
+ $(MKDIR) $(INSTALL_LIBDIR)
+ $(INSTALL) $(LIB_FULLNAME) $(INSTALL_LIBDIR)
+ifdef inUnix
+ ln -sf $(LIB_FULLNAME) $(INSTALL_LIBDIR)/$(LIB_NAME)
+endif
+endif
+endif
+ifdef INSTALL_FILES
+ $(MKDIR) $(INSTALL_DATADIR)
+ $(INSTALL) $(INSTALL_FILES) $(INSTALL_DATADIR)
+endif
+fpc_sourceinstall: distclean
+ $(MKDIR) $(INSTALL_SOURCEDIR)
+ $(COPYTREE) $(BASEDIR)/* $(INSTALL_SOURCEDIR)
+fpc_exampleinstall: $(addsuffix _distclean,$(TARGET_EXAMPLEDIRS))
+ifdef HASEXAMPLES
+ $(MKDIR) $(INSTALL_EXAMPLEDIR)
+endif
+ifdef EXAMPLESOURCEFILES
+ $(COPY) $(EXAMPLESOURCEFILES) $(INSTALL_EXAMPLEDIR)
+endif
+ifdef TARGET_EXAMPLEDIRS
+ $(COPYTREE) $(addsuffix /*,$(TARGET_EXAMPLEDIRS)) $(INSTALL_EXAMPLEDIR)
+endif
+.PHONY: fpc_distinstall
+fpc_distinstall: install exampleinstall
+.PHONY: fpc_zipinstall fpc_zipsourceinstall fpc_zipexampleinstall
+ifndef PACKDIR
+ifndef inUnix
+PACKDIR=$(BASEDIR)/../fpc-pack
+else
+PACKDIR=/tmp/fpc-pack
+endif
+endif
+ifndef ZIPNAME
+ifdef DIST_ZIPNAME
+ZIPNAME=$(DIST_ZIPNAME)
+else
+ZIPNAME=$(PACKAGE_NAME)
+endif
+endif
+ifndef FULLZIPNAME
+FULLZIPNAME=$(ZIPCROSSPREFIX)$(ZIPPREFIX)$(ZIPNAME)$(ZIPSUFFIX)
+endif
+ifndef ZIPTARGET
+ifdef DIST_ZIPTARGET
+ZIPTARGET=DIST_ZIPTARGET
+else
+ZIPTARGET=install
+endif
+endif
+ifndef USEZIP
+ifdef inUnix
+USETAR=1
+endif
+endif
+ifndef inUnix
+USEZIPWRAPPER=1
+endif
+ifdef USEZIPWRAPPER
+ZIPPATHSEP=$(PATHSEP)
+ZIPWRAPPER=$(subst /,$(PATHSEP),$(DIST_DESTDIR)/fpczip$(SRCBATCHEXT))
+else
+ZIPPATHSEP=/
+endif
+ZIPCMD_CDPACK:=cd $(subst /,$(ZIPPATHSEP),$(PACKDIR))
+ZIPCMD_CDBASE:=cd $(subst /,$(ZIPPATHSEP),$(BASEDIR))
+ifdef USETAR
+ZIPDESTFILE:=$(DIST_DESTDIR)/$(FULLZIPNAME)$(TAREXT)
+ZIPCMD_ZIP:=$(TARPROG) c$(TAROPT)f $(ZIPDESTFILE) *
+else
+ZIPDESTFILE:=$(DIST_DESTDIR)/$(FULLZIPNAME)$(ZIPEXT)
+ZIPCMD_ZIP:=$(subst /,$(ZIPPATHSEP),$(ZIPPROG)) -Dr $(ZIPOPT) $(ZIPDESTFILE) *
+endif
+fpc_zipinstall:
+ $(MAKE) $(ZIPTARGET) INSTALL_PREFIX=$(PACKDIR) ZIPINSTALL=1
+ $(MKDIR) $(DIST_DESTDIR)
+ $(DEL) $(ZIPDESTFILE)
+ifdef USEZIPWRAPPER
+ifneq ($(ECHOREDIR),echo)
+ $(ECHOREDIR) -e "$(subst \,\\,$(ZIPCMD_CDPACK))" > $(ZIPWRAPPER)
+ $(ECHOREDIR) -e "$(subst \,\\,$(ZIPCMD_ZIP))" >> $(ZIPWRAPPER)
+ $(ECHOREDIR) -e "$(subst \,\\,$(ZIPCMD_CDBASE))" >> $(ZIPWRAPPER)
+else
+ echo $(ZIPCMD_CDPACK) > $(ZIPWRAPPER)
+ echo $(ZIPCMD_ZIP) >> $(ZIPWRAPPER)
+ echo $(ZIPCMD_CDBASE) >> $(ZIPWRAPPER)
+endif
+ifdef inUnix
+ /bin/sh $(ZIPWRAPPER)
+else
+ifdef RUNBATCH
+ $(RUNBATCH) $(ZIPWRAPPER)
+else
+ $(ZIPWRAPPER)
+endif
+endif
+ $(DEL) $(ZIPWRAPPER)
+else
+ $(ZIPCMD_CDPACK) ; $(ZIPCMD_ZIP) ; $(ZIPCMD_CDBASE)
+endif
+ $(DELTREE) $(PACKDIR)
+fpc_zipsourceinstall:
+ $(MAKE) fpc_zipinstall ZIPTARGET=sourceinstall ZIPSUFFIX=$(ZIPSOURCESUFFIX)
+fpc_zipexampleinstall:
+ifdef HASEXAMPLES
+ $(MAKE) fpc_zipinstall ZIPTARGET=exampleinstall ZIPSUFFIX=$(ZIPEXAMPLESUFFIX)
+endif
+fpc_zipdistinstall:
+ $(MAKE) fpc_zipinstall ZIPTARGET=distinstall
+.PHONY: fpc_clean fpc_cleanall fpc_distclean
+ifdef EXEFILES
+override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES))
+override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
+endif
+ifdef CLEAN_PROGRAMS
+override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
+override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
+endif
+ifdef CLEAN_UNITS
+override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(CLEAN_UNITS))
+endif
+ifdef CLEANPPUFILES
+override CLEANPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES)))
+ifdef DEBUGSYMEXT
+override CLEANPPULINKFILES+=$(subst $(PPUEXT),$(DEBUGSYMEXT),$(CLEANPPUFILES))
+endif
+override CLEANPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPUFILES))
+override CLEANPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPULINKFILES)))
+endif
+fpc_clean: $(CLEANTARGET)
+ifdef CLEANEXEFILES
+ -$(DEL) $(CLEANEXEFILES)
+endif
+ifdef CLEANEXEDBGFILES
+ -$(DELTREE) $(CLEANEXEDBGFILES)
+endif
+ifdef CLEANPPUFILES
+ -$(DEL) $(CLEANPPUFILES)
+endif
+ifneq ($(CLEANPPULINKFILES),)
+ -$(DEL) $(CLEANPPULINKFILES)
+endif
+ifdef CLEANRSTFILES
+ -$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
+endif
+ifdef CLEAN_FILES
+ -$(DEL) $(CLEAN_FILES)
+endif
+ifdef LIB_NAME
+ -$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
+endif
+ -$(DEL) $(FPCMADE) Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
+ -$(DEL) *$(ASMEXT) *_ppas$(BATCHEXT)
+fpc_cleanall: $(CLEANTARGET)
+ifdef CLEANEXEFILES
+ -$(DEL) $(CLEANEXEFILES)
+endif
+ifdef COMPILER_UNITTARGETDIR
+ifdef CLEANPPUFILES
+ -$(DEL) $(CLEANPPUFILES)
+endif
+ifneq ($(CLEANPPULINKFILES),)
+ -$(DEL) $(CLEANPPULINKFILES)
+endif
+ifdef CLEANRSTFILES
+ -$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
+endif
+endif
+ifdef CLEAN_FILES
+ -$(DEL) $(CLEAN_FILES)
+endif
+ -$(DELTREE) units
+ -$(DEL) *$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
+ifneq ($(PPUEXT),.ppu)
+ -$(DEL) *.o *.ppu *.a
+endif
+ -$(DELTREE) *$(SMARTEXT)
+ -$(DEL) fpcmade.* Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
+ -$(DEL) *_ppas$(BATCHEXT)
+ifdef AOUTEXT
+ -$(DEL) *$(AOUTEXT)
+endif
+ifdef DEBUGSYMEXT
+ -$(DEL) *$(DEBUGSYMEXT)
+endif
+fpc_distclean: cleanall
+.PHONY: fpc_baseinfo
+override INFORULES+=fpc_baseinfo
+fpc_baseinfo:
+ @$(ECHO)
+ @$(ECHO) == Package info ==
+ @$(ECHO) Package Name..... $(PACKAGE_NAME)
+ @$(ECHO) Package Version.. $(PACKAGE_VERSION)
+ @$(ECHO)
+ @$(ECHO) == Configuration info ==
+ @$(ECHO)
+ @$(ECHO) FPC.......... $(FPC)
+ @$(ECHO) FPC Version.. $(FPC_VERSION)
+ @$(ECHO) Source CPU... $(CPU_SOURCE)
+ @$(ECHO) Target CPU... $(CPU_TARGET)
+ @$(ECHO) Source OS.... $(OS_SOURCE)
+ @$(ECHO) Target OS.... $(OS_TARGET)
+ @$(ECHO) Full Source.. $(FULL_SOURCE)
+ @$(ECHO) Full Target.. $(FULL_TARGET)
+ @$(ECHO) SourceSuffix. $(SOURCESUFFIX)
+ @$(ECHO) TargetSuffix. $(TARGETSUFFIX)
+ @$(ECHO) FPC fpmake... $(FPCFPMAKE)
+ @$(ECHO)
+ @$(ECHO) == Directory info ==
+ @$(ECHO)
+ @$(ECHO) Required pkgs... $(REQUIRE_PACKAGES)
+ @$(ECHO)
+ @$(ECHO) Basedir......... $(BASEDIR)
+ @$(ECHO) FPCDir.......... $(FPCDIR)
+ @$(ECHO) CrossBinDir..... $(CROSSBINDIR)
+ @$(ECHO) UnitsDir........ $(UNITSDIR)
+ @$(ECHO) PackagesDir..... $(PACKAGESDIR)
+ @$(ECHO)
+ @$(ECHO) GCC library..... $(GCCLIBDIR)
+ @$(ECHO) Other library... $(OTHERLIBDIR)
+ @$(ECHO)
+ @$(ECHO) == Tools info ==
+ @$(ECHO)
+ @$(ECHO) As........ $(AS)
+ @$(ECHO) Ld........ $(LD)
+ @$(ECHO) Ar........ $(AR)
+ @$(ECHO) Rc........ $(RC)
+ @$(ECHO)
+ @$(ECHO) Mv........ $(MVPROG)
+ @$(ECHO) Cp........ $(CPPROG)
+ @$(ECHO) Rm........ $(RMPROG)
+ @$(ECHO) GInstall.. $(GINSTALL)
+ @$(ECHO) Echo...... $(ECHO)
+ @$(ECHO) Shell..... $(SHELL)
+ @$(ECHO) Date...... $(DATE)
+ @$(ECHO) FPCMake... $(FPCMAKE)
+ @$(ECHO) PPUMove... $(PPUMOVE)
+ @$(ECHO) Zip....... $(ZIPPROG)
+ @$(ECHO)
+ @$(ECHO) == Object info ==
+ @$(ECHO)
+ @$(ECHO) Target Loaders........ $(TARGET_LOADERS)
+ @$(ECHO) Target Units.......... $(TARGET_UNITS)
+ @$(ECHO) Target Implicit Units. $(TARGET_IMPLICITUNITS)
+ @$(ECHO) Target Programs....... $(TARGET_PROGRAMS)
+ @$(ECHO) Target Dirs........... $(TARGET_DIRS)
+ @$(ECHO) Target Examples....... $(TARGET_EXAMPLES)
+ @$(ECHO) Target ExampleDirs.... $(TARGET_EXAMPLEDIRS)
+ @$(ECHO)
+ @$(ECHO) Clean Units......... $(CLEAN_UNITS)
+ @$(ECHO) Clean Files......... $(CLEAN_FILES)
+ @$(ECHO)
+ @$(ECHO) Install Units....... $(INSTALL_UNITS)
+ @$(ECHO) Install Files....... $(INSTALL_FILES)
+ @$(ECHO)
+ @$(ECHO) == Install info ==
+ @$(ECHO)
+ @$(ECHO) DateStr.............. $(DATESTR)
+ @$(ECHO) ZipName.............. $(ZIPNAME)
+ @$(ECHO) ZipPrefix............ $(ZIPPREFIX)
+ @$(ECHO) ZipCrossPrefix....... $(ZIPCROSSPREFIX)
+ @$(ECHO) ZipSuffix............ $(ZIPSUFFIX)
+ @$(ECHO) FullZipName.......... $(FULLZIPNAME)
+ @$(ECHO) Install FPC Package.. $(INSTALL_FPCPACKAGE)
+ @$(ECHO)
+ @$(ECHO) Install base dir..... $(INSTALL_BASEDIR)
+ @$(ECHO) Install binary dir... $(INSTALL_BINDIR)
+ @$(ECHO) Install library dir.. $(INSTALL_LIBDIR)
+ @$(ECHO) Install units dir.... $(INSTALL_UNITDIR)
+ @$(ECHO) Install source dir... $(INSTALL_SOURCEDIR)
+ @$(ECHO) Install doc dir...... $(INSTALL_DOCDIR)
+ @$(ECHO) Install example dir.. $(INSTALL_EXAMPLEDIR)
+ @$(ECHO) Install data dir..... $(INSTALL_DATADIR)
+ @$(ECHO)
+ @$(ECHO) Dist destination dir. $(DIST_DESTDIR)
+ @$(ECHO) Dist zip name........ $(DIST_ZIPNAME)
+ @$(ECHO)
+.PHONY: fpc_info
+fpc_info: $(INFORULES)
+.PHONY: fpc_makefile fpc_makefiles fpc_makefile_sub1 fpc_makefile_sub2 \
+ fpc_makefile_dirs
+fpc_makefile:
+ $(FPCMAKE) -w -T$(OS_TARGET) Makefile.fpc
+fpc_makefile_sub1:
+ifdef TARGET_DIRS
+ $(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_DIRS))
+endif
+ifdef TARGET_EXAMPLEDIRS
+ $(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_EXAMPLEDIRS))
+endif
+fpc_makefile_sub2: $(addsuffix _makefile_dirs,$(TARGET_DIRS) $(TARGET_EXAMPLEDIRS))
+fpc_makefile_dirs: fpc_makefile_sub1 fpc_makefile_sub2
+fpc_makefiles: fpc_makefile fpc_makefile_dirs
+units:
+examples:
+shared:
+sourceinstall: fpc_sourceinstall
+exampleinstall: fpc_exampleinstall
+zipsourceinstall: fpc_zipsourceinstall
+zipexampleinstall: fpc_zipexampleinstall
+info: fpc_info
+makefiles: fpc_makefiles
+.PHONY: units examples shared sourceinstall exampleinstall zipsourceinstall zipexampleinstall info makefiles
+ifneq ($(wildcard fpcmake.loc),)
+include fpcmake.loc
+endif
+override FPCOPT:=$(filter-out -FU%,$(FPCOPT))
+override FPCOPT:=$(filter-out -FE%,$(FPCOPT))
+ifdef FPMAKEOPT
+FPMAKE_OPT+=$(FPMAKEOPT)
+endif
+FPMAKE_OPT+=--localunitdir=../..
+FPMAKE_OPT+=--globalunitdir=../../packages
+FPMAKE_OPT+=$(FPC_TARGETOPT)
+FPMAKE_OPT+=$(addprefix -o ,$(FPCOPT))
+FPMAKE_OPT+=--compiler=$(FPC)
+FPMAKE_OPT+=-bu
+.NOTPARALLEL:
+fpmake: fpmake.pp
+ $(FPCFPMAKE) fpmake.pp $(FPMAKE_SKIP_CONFIG) $(addprefix -Fu,$(COMPILER_FPMAKE_UNITDIR)) $(FPCMAKEOPT) $(OPT)
+all: fpmake
+ $(LOCALFPMAKE) compile $(FPMAKE_OPT)
+smart: fpmake
+ $(LOCALFPMAKE) compile $(FPMAKE_OPT) -o -XX -o -CX
+release: fpmake
+ $(LOCALFPMAKE) compile $(FPMAKE_OPT) -o -dRELEASE
+debug: fpmake
+ $(LOCALFPMAKE) compile $(FPMAKE_OPT) -o -dDEBUG
+ifeq ($(FPMAKE_BIN_CLEAN),)
+clean:
+else
+clean:
+ $(FPMAKE_BIN_CLEAN) clean $(FPMAKE_OPT)
+endif
+ifeq ($(FPMAKE_BIN_CLEAN),)
+distclean: $(addsuffix _distclean,$(TARGET_DIRS)) fpc_cleanall
+else
+distclean:
+ifdef inUnix
+ { $(FPMAKE_BIN_CLEAN) distclean $(FPMAKE_OPT); if [ $$? != "0" ]; then { echo Something wrong with fpmake exectable. Remove the executable and call make recursively to recover.; $(DEL) $(FPMAKE_BIN_CLEAN); $(MAKE) fpc_cleanall; }; fi; }
+else
+ $(FPMAKE_BIN_CLEAN) distclean $(FPMAKE_OPT)
+endif
+ -$(DEL) $(LOCALFPMAKE)
+endif
+cleanall: distclean
+install: fpmake
+ifdef UNIXHier
+ $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_PREFIX) --baseinstalldir=$(INSTALL_LIBDIR)/fpc/$(FPC_VERSION) --unitinstalldir=$(INSTALL_UNITDIR)
+else
+ $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_BASEDIR) --unitinstalldir=$(INSTALL_UNITDIR)
+endif
+distinstall: fpmake
+ifdef UNIXHier
+ $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_PREFIX) --baseinstalldir=$(INSTALL_LIBDIR)/fpc/$(FPC_VERSION) --unitinstalldir=$(INSTALL_UNITDIR) -ie
+else
+ $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_BASEDIR) --unitinstalldir=$(INSTALL_UNITDIR) -ie
+endif
+zipinstall: fpmake
+ $(LOCALFPMAKE) zipinstall $(FPMAKE_OPT) --zipprefix=$(DIST_DESTDIR)/$(ZIPPREFIX)
+zipdistinstall: fpmake
+ $(LOCALFPMAKE) zipinstall $(FPMAKE_OPT) --zipprefix=$(DIST_DESTDIR)/$(ZIPPREFIX) -ie
diff --git a/utils/pas2js/Makefile.fpc b/utils/pas2js/Makefile.fpc
new file mode 100644
index 0000000000..a497343d9a
--- /dev/null
+++ b/utils/pas2js/Makefile.fpc
@@ -0,0 +1,93 @@
+#
+# Makefile.fpc for running fpmake
+#
+
+[package]
+name=pas2js
+version=2.7.1
+
+[require]
+packages=rtl pastojs fcl-js fcl-passrc
+
+[install]
+fpcpackage=y
+
+[default]
+fpcdir=../..
+
+[prerules]
+FPMAKE_BIN_CLEAN=$(wildcard ./fpmake$(SRCEXEEXT))
+ifdef OS_TARGET
+FPC_TARGETOPT+=--os=$(OS_TARGET)
+endif
+ifdef CPU_TARGET
+FPC_TARGETOPT+=--cpu=$(CPU_TARGET)
+endif
+LOCALFPMAKE=./fpmake$(SRCEXEEXT)
+
+[rules]
+# Do not pass the Makefile's unit and binary target locations. fpmake uses it's own.
+override FPCOPT:=$(filter-out -FU%,$(FPCOPT))
+override FPCOPT:=$(filter-out -FE%,$(FPCOPT))
+# Compose general fpmake-parameters
+ifdef FPMAKEOPT
+FPMAKE_OPT+=$(FPMAKEOPT)
+endif
+FPMAKE_OPT+=--localunitdir=../..
+FPMAKE_OPT+=--globalunitdir=../../packages
+FPMAKE_OPT+=$(FPC_TARGETOPT)
+FPMAKE_OPT+=$(addprefix -o ,$(FPCOPT))
+FPMAKE_OPT+=--compiler=$(FPC)
+FPMAKE_OPT+=-bu
+.NOTPARALLEL:
+
+fpmake: fpmake.pp
+ $(FPCFPMAKE) fpmake.pp $(FPMAKE_SKIP_CONFIG) $(addprefix -Fu,$(COMPILER_FPMAKE_UNITDIR)) $(FPCMAKEOPT) $(OPT)
+all: fpmake
+ $(LOCALFPMAKE) compile $(FPMAKE_OPT)
+smart: fpmake
+ $(LOCALFPMAKE) compile $(FPMAKE_OPT) -o -XX -o -CX
+release: fpmake
+ $(LOCALFPMAKE) compile $(FPMAKE_OPT) -o -dRELEASE
+debug: fpmake
+ $(LOCALFPMAKE) compile $(FPMAKE_OPT) -o -dDEBUG
+# If no fpmake exists and (dist)clean is called, do not try to build fpmake, it will
+# most often fail because the dependencies are cleared.
+# In case of a clean, simply do nothing
+ifeq ($(FPMAKE_BIN_CLEAN),)
+clean:
+else
+clean:
+ $(FPMAKE_BIN_CLEAN) clean $(FPMAKE_OPT)
+endif
+# In case of a distclean, perform an 'old'-style distclean. This to avoid problems
+# when the package is compiled using fpcmake prior to running this clean using fpmake
+ifeq ($(FPMAKE_BIN_CLEAN),)
+distclean: $(addsuffix _distclean,$(TARGET_DIRS)) fpc_cleanall
+else
+distclean:
+ifdef inUnix
+ { $(FPMAKE_BIN_CLEAN) distclean $(FPMAKE_OPT); if [ $$? != "0" ]; then { echo Something wrong with fpmake exectable. Remove the executable and call make recursively to recover.; $(DEL) $(FPMAKE_BIN_CLEAN); $(MAKE) fpc_cleanall; }; fi; }
+else
+ $(FPMAKE_BIN_CLEAN) distclean $(FPMAKE_OPT)
+endif
+ -$(DEL) $(LOCALFPMAKE)
+endif
+cleanall: distclean
+install: fpmake
+ifdef UNIXHier
+ $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_PREFIX) --baseinstalldir=$(INSTALL_LIBDIR)/fpc/$(FPC_VERSION) --unitinstalldir=$(INSTALL_UNITDIR)
+else
+ $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_BASEDIR) --unitinstalldir=$(INSTALL_UNITDIR)
+endif
+# distinstall also installs the example-sources
+distinstall: fpmake
+ifdef UNIXHier
+ $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_PREFIX) --baseinstalldir=$(INSTALL_LIBDIR)/fpc/$(FPC_VERSION) --unitinstalldir=$(INSTALL_UNITDIR) -ie
+else
+ $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_BASEDIR) --unitinstalldir=$(INSTALL_UNITDIR) -ie
+endif
+zipinstall: fpmake
+ $(LOCALFPMAKE) zipinstall $(FPMAKE_OPT) --zipprefix=$(DIST_DESTDIR)/$(ZIPPREFIX)
+zipdistinstall: fpmake
+ $(LOCALFPMAKE) zipinstall $(FPMAKE_OPT) --zipprefix=$(DIST_DESTDIR)/$(ZIPPREFIX) -ie
diff --git a/utils/pas2js/fpmake.pp b/utils/pas2js/fpmake.pp
new file mode 100644
index 0000000000..95596e7413
--- /dev/null
+++ b/utils/pas2js/fpmake.pp
@@ -0,0 +1,45 @@
+{$ifndef ALLPACKAGES}
+{$mode objfpc}{$H+}
+program fpmake;
+
+uses fpmkunit;
+{$endif ALLPACKAGES}
+
+procedure add_pas2js(const ADirectory: string);
+
+Var
+ P : TPackage;
+ T : TTarget;
+
+begin
+ With Installer do
+ begin
+ P:=AddPackage('pas2js');
+
+ P.Author := 'Free Pascal Team';
+ P.License := 'LGPL with modification';
+ P.HomepageURL := 'www.freepascal.org';
+ P.Description := 'Convert pascal sources to javascript.';
+ P.Email := 'michael@freepascal.org';
+ P.NeedLibC:= false;
+
+ P.Directory:=ADirectory;
+ P.Version:='2.7.1';
+ P.Dependencies.Add('fcl-js');
+ P.Dependencies.Add('fcl-passrc');
+ P.Dependencies.Add('pastojs');
+
+ T:=P.Targets.AddProgram('pas2js.pp');
+ end;
+end;
+
+{$ifndef ALLPACKAGES}
+begin
+ add_pas2js('');
+ Installer.Run;
+end.
+{$endif ALLPACKAGES}
+
+
+
+
diff --git a/utils/pas2js/pas2js.lpi b/utils/pas2js/pas2js.lpi
new file mode 100644
index 0000000000..e9ba2a56ca
--- /dev/null
+++ b/utils/pas2js/pas2js.lpi
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<CONFIG>
+ <ProjectOptions>
+ <Version Value="9"/>
+ <General>
+ <Flags>
+ <SaveOnlyProjectUnits Value="True"/>
+ <MainUnitHasCreateFormStatements Value="False"/>
+ <MainUnitHasTitleStatement Value="False"/>
+ <SaveJumpHistory Value="False"/>
+ <SaveFoldState Value="False"/>
+ </Flags>
+ <SessionStorage Value="InProjectDir"/>
+ <MainUnit Value="0"/>
+ <Title Value="pas2js"/>
+ <UseAppBundle Value="False"/>
+ <ResourceType Value="res"/>
+ </General>
+ <i18n>
+ <EnableI18N LFM="False"/>
+ </i18n>
+ <VersionInfo>
+ <StringTable ProductVersion=""/>
+ </VersionInfo>
+ <BuildModes Count="1">
+ <Item1 Name="Default" Default="True"/>
+ </BuildModes>
+ <PublishOptions>
+ <Version Value="2"/>
+ </PublishOptions>
+ <RunParams>
+ <local>
+ <FormatVersion Value="1"/>
+ </local>
+ </RunParams>
+ <Units Count="2">
+ <Unit0>
+ <Filename Value="pas2js.pp"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="pas2js"/>
+ </Unit0>
+ <Unit1>
+ <Filename Value="fppas2js.pp"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="fppas2js"/>
+ </Unit1>
+ </Units>
+ </ProjectOptions>
+ <CompilerOptions>
+ <Version Value="11"/>
+ <Target>
+ <Filename Value="pas2js"/>
+ </Target>
+ <SearchPaths>
+ <IncludeFiles Value="$(ProjOutDir)"/>
+ <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/>
+ </SearchPaths>
+ <Other>
+ <CompilerMessages>
+ <MsgFileName Value=""/>
+ </CompilerMessages>
+ <CompilerPath Value="$(CompPath)"/>
+ </Other>
+ </CompilerOptions>
+ <Debugging>
+ <Exceptions Count="3">
+ <Item1>
+ <Name Value="EAbort"/>
+ </Item1>
+ <Item2>
+ <Name Value="ECodetoolError"/>
+ </Item2>
+ <Item3>
+ <Name Value="EFOpenError"/>
+ </Item3>
+ </Exceptions>
+ </Debugging>
+</CONFIG>
diff --git a/utils/pas2js/pas2js.pp b/utils/pas2js/pas2js.pp
new file mode 100644
index 0000000000..fb0ecd11e4
--- /dev/null
+++ b/utils/pas2js/pas2js.pp
@@ -0,0 +1,121 @@
+{
+ This file is part of the Free Component Library (FCL)
+ Copyright (c) 2014 by Michael Van Canneyt
+
+ Pascal to Javascript converter program.
+
+ 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.
+
+ **********************************************************************}
+
+{$mode objfpc}
+{$h+}
+program pas2js;
+
+uses
+ sysutils, classes, pparser, fppas2js, pastree, jstree, jswriter;
+
+Type
+
+ { TContainer }
+
+ TContainer = Class(TPasTreeContainer)
+
+ public
+ function CreateElement(AClass: TPTreeElement; const AName: String;
+ AParent: TPasElement; AVisibility: TPasMemberVisibility;
+ const ASourceFilename: String; ASourceLinenumber: Integer): TPasElement;
+ overload; override;
+ function FindElement(const AName: String): TPasElement; override;
+ end;
+
+ { TConvertPascal }
+
+ TConvertPascal = Class(TComponent)
+ Procedure ConvertSource(ASource, ADest : String);
+ end;
+
+{ TContainer }
+
+function TContainer.CreateElement(AClass: TPTreeElement; const AName: String;
+ AParent: TPasElement; AVisibility: TPasMemberVisibility;
+ const ASourceFilename: String; ASourceLinenumber: Integer): TPasElement;
+begin
+ Result:=AClass.Create(AName,AParent);
+end;
+
+function TContainer.FindElement(const AName: String): TPasElement;
+begin
+ Result:=Nil;
+end;
+
+{ TConvertPascal }
+
+Procedure TConvertPascal.ConvertSource(ASource, ADest: String);
+
+Var
+ p : TPasParser;
+ C : TPAsTreeContainer;
+ M : TPasModule;
+ CV : TPasToJSConverter;
+ JS : TJSElement;
+ W : TJSWriter;
+
+begin
+ C:=TContainer.Create;
+ try
+ M:=ParseSource(C,ASource,'','',True);
+ try
+ CV:=TPasToJSConverter.Create;
+ try
+ JS:=CV.ConvertElement(M);
+ If JS=nil then
+ Writeln('No result');
+ finally
+ CV.Free;
+ end;
+ W:=TJSWriter.Create(ADest);
+ try
+ W.Options:=[woUseUTF8,woCompactArrayLiterals,woCompactObjectLiterals,woCompactArguments];
+ W.IndentSize:=2;
+ W.WriteJS(JS);
+ finally
+ W.Free;
+ end;
+ finally
+ M.Free;
+ end;
+ finally
+ C.Free;
+ end;
+
+end;
+
+Var
+ Src,Dest : String;
+
+begin
+ Src:=Paramstr(1);
+ Dest:=ParamStr(2);
+ if Dest='' then
+ Dest:=ChangeFileExt(Src,'.js');
+ With TConvertPascal.Create(Nil) do
+ try
+ ConvertSource(Src,Dest);
+ finally
+ Free;
+ end;
+ With TStringList.Create do
+ try
+ LoadFromFile(Dest);
+ Writeln(Text);
+ finally
+ Free;
+ end;
+end.
+
diff --git a/utils/pas2js/samples/arraydemo.pp b/utils/pas2js/samples/arraydemo.pp
new file mode 100644
index 0000000000..2a58deb4e4
--- /dev/null
+++ b/utils/pas2js/samples/arraydemo.pp
@@ -0,0 +1,12 @@
+var
+ a : Array[1..100] of integer;
+ i,j : Integer;
+
+begin
+ for I:=1 to 100 do
+ A[I]:=I;
+ for j:=1 to 100 do
+ writeln(A[j]);
+end.
+
+ \ No newline at end of file
diff --git a/utils/pas2js/samples/fordemo.pp b/utils/pas2js/samples/fordemo.pp
new file mode 100644
index 0000000000..25f6b333de
--- /dev/null
+++ b/utils/pas2js/samples/fordemo.pp
@@ -0,0 +1,8 @@
+program fordemo;
+
+var i : integer;
+
+begin
+ for I:=0 to 100 do
+ Writeln(i);
+end. \ No newline at end of file
diff --git a/utils/pas2js/samples/fordowndemo.pp b/utils/pas2js/samples/fordowndemo.pp
new file mode 100644
index 0000000000..d07cd31cbf
--- /dev/null
+++ b/utils/pas2js/samples/fordowndemo.pp
@@ -0,0 +1,8 @@
+program fordemo;
+
+var i : integer;
+
+begin
+ for I:=100 downto 0 do
+ Writeln(i);
+end. \ No newline at end of file
diff --git a/utils/pas2js/samples/hello.pas b/utils/pas2js/samples/hello.pas
new file mode 100644
index 0000000000..4b4686ecdd
--- /dev/null
+++ b/utils/pas2js/samples/hello.pas
@@ -0,0 +1,14 @@
+program hello;
+
+Procedure DoHello;
+
+begin
+ Writeln('Hello again');
+end;
+
+Var
+ A : Integer = 1;
+
+begin
+ Writeln('Hello, world');
+end. \ No newline at end of file
diff --git a/utils/pas2js/samples/ifdemo.pp b/utils/pas2js/samples/ifdemo.pp
new file mode 100644
index 0000000000..129b7ae6b4
--- /dev/null
+++ b/utils/pas2js/samples/ifdemo.pp
@@ -0,0 +1,13 @@
+program ifdemo;
+
+var
+ a : integer = 0;
+
+begin
+ if a=1 then
+ Writeln('This should not be');
+ if a=2 then
+ Writeln('This should also not be')
+ else
+ Writeln('This should be OK');
+end. \ No newline at end of file
diff --git a/utils/pas2js/samples/repeatdemo.pp b/utils/pas2js/samples/repeatdemo.pp
new file mode 100644
index 0000000000..5d02cef0eb
--- /dev/null
+++ b/utils/pas2js/samples/repeatdemo.pp
@@ -0,0 +1,11 @@
+program fordemo;
+
+var i : integer;
+
+begin
+ i:=0;
+ Repeat
+ writeln(i);
+ i:=i+1;
+ Until i=100;
+end. \ No newline at end of file
diff --git a/utils/pas2js/samples/whiledemo.pp b/utils/pas2js/samples/whiledemo.pp
new file mode 100644
index 0000000000..02a74da509
--- /dev/null
+++ b/utils/pas2js/samples/whiledemo.pp
@@ -0,0 +1,12 @@
+program fordemo;
+
+var i : integer;
+
+begin
+ i:=0;
+ While (i<100) do
+ begin
+ writeln(i);
+ i:=i+1;
+ end;
+end. \ No newline at end of file
diff --git a/compiler/utils/usubst.pp b/utils/usubst.pp
index cf553ae373..cf553ae373 100644
--- a/compiler/utils/usubst.pp
+++ b/utils/usubst.pp