Browse Source

Regenerate all rtl Makefile's

Pierre Muller 1 week ago
parent
commit
a17e5e81c8

+ 13 - 2
rtl/Makefile

@@ -1031,6 +1031,7 @@ STATICLIBPREFIX=libp
 IMPORTLIBPREFIX=libimp
 IMPORTLIBPREFIX=libimp
 RSTEXT=.rsj
 RSTEXT=.rsj
 EXEDBGEXT=.dbg
 EXEDBGEXT=.dbg
+ALL_EXEEXT=.exe
 ifeq ($(OS_TARGET),go32v1)
 ifeq ($(OS_TARGET),go32v1)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 SHORTSUFFIX=v1
 SHORTSUFFIX=v1
@@ -1127,6 +1128,7 @@ ifeq ($(OS_TARGET),atari)
 EXEEXT=.ttp
 EXEEXT=.ttp
 SHORTSUFFIX=ata
 SHORTSUFFIX=ata
 endif
 endif
+ALL_EXEEXT+=.ttp
 ifeq ($(OS_TARGET),beos)
 ifeq ($(OS_TARGET),beos)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1153,6 +1155,7 @@ STATICLIBPREFIX=
 SHORTSUFFIX=nw
 SHORTSUFFIX=nw
 IMPORTLIBPREFIX=imp
 IMPORTLIBPREFIX=imp
 endif
 endif
+ALL_EXEEXT+=.nlm
 ifeq ($(OS_TARGET),netwlibc)
 ifeq ($(OS_TARGET),netwlibc)
 EXEEXT=.nlm
 EXEEXT=.nlm
 STATICLIBPREFIX=
 STATICLIBPREFIX=
@@ -1178,6 +1181,7 @@ EXEEXT=.gba
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=gba
 SHORTSUFFIX=gba
 endif
 endif
+ALL_EXEEXT+=.gba
 ifeq ($(OS_TARGET),symbian)
 ifeq ($(OS_TARGET),symbian)
 SHAREDLIBEXT=.dll
 SHAREDLIBEXT=.dll
 SHORTSUFFIX=symbian
 SHORTSUFFIX=symbian
@@ -1191,6 +1195,7 @@ EXEEXT=.dol
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=wii
 SHORTSUFFIX=wii
 endif
 endif
+ALL_EXEEXT+=.dol
 ifeq ($(OS_TARGET),aix)
 ifeq ($(OS_TARGET),aix)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1233,6 +1238,7 @@ OEXT=.rel
 endif
 endif
 SHORTSUFFIX=emb
 SHORTSUFFIX=emb
 endif
 endif
+ALL_EXEEXT+=.bin
 ifeq ($(OS_TARGET),win16)
 ifeq ($(OS_TARGET),win16)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 STATICLIBEXT=.a
 STATICLIBEXT=.a
@@ -1245,6 +1251,7 @@ endif
 ifeq ($(OS_TARGET),wasip1)
 ifeq ($(OS_TARGET),wasip1)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
+ALL_EXEEXT+=.wasm
 ifeq ($(OS_TARGET),wasip1threads)
 ifeq ($(OS_TARGET),wasip1threads)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
@@ -1858,6 +1865,7 @@ override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
 endif
 endif
 ifdef CLEAN_PROGRAMS
 ifdef CLEAN_PROGRAMS
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
+override ALL_CLEANEXEFILES+=$(foreach lEXEEXT,$(ALL_EXEEXT),$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(lEXEEXT), $(CLEAN_PROGRAMS))))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 endif
 endif
 ifdef CLEAN_UNITS
 ifdef CLEAN_UNITS
@@ -1896,12 +1904,15 @@ ifdef LIB_NAME
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 endif
 endif
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 fpc_cleanall: $(CLEANTARGET)
 fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 	-$(DEL) $(CLEANEXEFILES)
 endif
 endif
+ifdef ALL_CLEANEXEFILES
+	-$(DEL) $(ALL_CLEANEXEFILES)
+endif
 ifdef COMPILER_UNITTARGETDIR
 ifdef COMPILER_UNITTARGETDIR
 ifdef CLEANPPUFILES
 ifdef CLEANPPUFILES
 	-$(DEL) $(CLEANPPUFILES)
 	-$(DEL) $(CLEANPPUFILES)
@@ -1924,7 +1935,7 @@ ifneq ($(PPUEXT),.ppu)
 endif
 endif
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DEL) fpcmade.* Package.fpc *.fpm
 	-$(DEL) fpcmade.* Package.fpc *.fpm
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 ifdef AOUTEXT
 ifdef AOUTEXT
 	-$(DEL) *$(AOUTEXT)
 	-$(DEL) *$(AOUTEXT)

+ 13 - 2
rtl/aix/Makefile

@@ -1180,6 +1180,7 @@ STATICLIBPREFIX=libp
 IMPORTLIBPREFIX=libimp
 IMPORTLIBPREFIX=libimp
 RSTEXT=.rsj
 RSTEXT=.rsj
 EXEDBGEXT=.dbg
 EXEDBGEXT=.dbg
+ALL_EXEEXT=.exe
 ifeq ($(OS_TARGET),go32v1)
 ifeq ($(OS_TARGET),go32v1)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 SHORTSUFFIX=v1
 SHORTSUFFIX=v1
@@ -1276,6 +1277,7 @@ ifeq ($(OS_TARGET),atari)
 EXEEXT=.ttp
 EXEEXT=.ttp
 SHORTSUFFIX=ata
 SHORTSUFFIX=ata
 endif
 endif
+ALL_EXEEXT+=.ttp
 ifeq ($(OS_TARGET),beos)
 ifeq ($(OS_TARGET),beos)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1302,6 +1304,7 @@ STATICLIBPREFIX=
 SHORTSUFFIX=nw
 SHORTSUFFIX=nw
 IMPORTLIBPREFIX=imp
 IMPORTLIBPREFIX=imp
 endif
 endif
+ALL_EXEEXT+=.nlm
 ifeq ($(OS_TARGET),netwlibc)
 ifeq ($(OS_TARGET),netwlibc)
 EXEEXT=.nlm
 EXEEXT=.nlm
 STATICLIBPREFIX=
 STATICLIBPREFIX=
@@ -1327,6 +1330,7 @@ EXEEXT=.gba
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=gba
 SHORTSUFFIX=gba
 endif
 endif
+ALL_EXEEXT+=.gba
 ifeq ($(OS_TARGET),symbian)
 ifeq ($(OS_TARGET),symbian)
 SHAREDLIBEXT=.dll
 SHAREDLIBEXT=.dll
 SHORTSUFFIX=symbian
 SHORTSUFFIX=symbian
@@ -1340,6 +1344,7 @@ EXEEXT=.dol
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=wii
 SHORTSUFFIX=wii
 endif
 endif
+ALL_EXEEXT+=.dol
 ifeq ($(OS_TARGET),aix)
 ifeq ($(OS_TARGET),aix)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1382,6 +1387,7 @@ OEXT=.rel
 endif
 endif
 SHORTSUFFIX=emb
 SHORTSUFFIX=emb
 endif
 endif
+ALL_EXEEXT+=.bin
 ifeq ($(OS_TARGET),win16)
 ifeq ($(OS_TARGET),win16)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 STATICLIBEXT=.a
 STATICLIBEXT=.a
@@ -1394,6 +1400,7 @@ endif
 ifeq ($(OS_TARGET),wasip1)
 ifeq ($(OS_TARGET),wasip1)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
+ALL_EXEEXT+=.wasm
 ifeq ($(OS_TARGET),wasip1threads)
 ifeq ($(OS_TARGET),wasip1threads)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
@@ -1994,6 +2001,7 @@ override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
 endif
 endif
 ifdef CLEAN_PROGRAMS
 ifdef CLEAN_PROGRAMS
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
+override ALL_CLEANEXEFILES+=$(foreach lEXEEXT,$(ALL_EXEEXT),$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(lEXEEXT), $(CLEAN_PROGRAMS))))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 endif
 endif
 ifdef CLEAN_UNITS
 ifdef CLEAN_UNITS
@@ -2032,12 +2040,15 @@ ifdef LIB_NAME
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 endif
 endif
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 fpc_cleanall: $(CLEANTARGET)
 fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 	-$(DEL) $(CLEANEXEFILES)
 endif
 endif
+ifdef ALL_CLEANEXEFILES
+	-$(DEL) $(ALL_CLEANEXEFILES)
+endif
 ifdef COMPILER_UNITTARGETDIR
 ifdef COMPILER_UNITTARGETDIR
 ifdef CLEANPPUFILES
 ifdef CLEANPPUFILES
 	-$(DEL) $(CLEANPPUFILES)
 	-$(DEL) $(CLEANPPUFILES)
@@ -2060,7 +2071,7 @@ ifneq ($(PPUEXT),.ppu)
 endif
 endif
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DEL) fpcmade.* Package.fpc *.fpm
 	-$(DEL) fpcmade.* Package.fpc *.fpm
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 ifdef AOUTEXT
 ifdef AOUTEXT
 	-$(DEL) *$(AOUTEXT)
 	-$(DEL) *$(AOUTEXT)

+ 13 - 2
rtl/amiga/Makefile

@@ -1180,6 +1180,7 @@ STATICLIBPREFIX=libp
 IMPORTLIBPREFIX=libimp
 IMPORTLIBPREFIX=libimp
 RSTEXT=.rsj
 RSTEXT=.rsj
 EXEDBGEXT=.dbg
 EXEDBGEXT=.dbg
+ALL_EXEEXT=.exe
 ifeq ($(OS_TARGET),go32v1)
 ifeq ($(OS_TARGET),go32v1)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 SHORTSUFFIX=v1
 SHORTSUFFIX=v1
@@ -1276,6 +1277,7 @@ ifeq ($(OS_TARGET),atari)
 EXEEXT=.ttp
 EXEEXT=.ttp
 SHORTSUFFIX=ata
 SHORTSUFFIX=ata
 endif
 endif
+ALL_EXEEXT+=.ttp
 ifeq ($(OS_TARGET),beos)
 ifeq ($(OS_TARGET),beos)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1302,6 +1304,7 @@ STATICLIBPREFIX=
 SHORTSUFFIX=nw
 SHORTSUFFIX=nw
 IMPORTLIBPREFIX=imp
 IMPORTLIBPREFIX=imp
 endif
 endif
+ALL_EXEEXT+=.nlm
 ifeq ($(OS_TARGET),netwlibc)
 ifeq ($(OS_TARGET),netwlibc)
 EXEEXT=.nlm
 EXEEXT=.nlm
 STATICLIBPREFIX=
 STATICLIBPREFIX=
@@ -1327,6 +1330,7 @@ EXEEXT=.gba
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=gba
 SHORTSUFFIX=gba
 endif
 endif
+ALL_EXEEXT+=.gba
 ifeq ($(OS_TARGET),symbian)
 ifeq ($(OS_TARGET),symbian)
 SHAREDLIBEXT=.dll
 SHAREDLIBEXT=.dll
 SHORTSUFFIX=symbian
 SHORTSUFFIX=symbian
@@ -1340,6 +1344,7 @@ EXEEXT=.dol
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=wii
 SHORTSUFFIX=wii
 endif
 endif
+ALL_EXEEXT+=.dol
 ifeq ($(OS_TARGET),aix)
 ifeq ($(OS_TARGET),aix)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1382,6 +1387,7 @@ OEXT=.rel
 endif
 endif
 SHORTSUFFIX=emb
 SHORTSUFFIX=emb
 endif
 endif
+ALL_EXEEXT+=.bin
 ifeq ($(OS_TARGET),win16)
 ifeq ($(OS_TARGET),win16)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 STATICLIBEXT=.a
 STATICLIBEXT=.a
@@ -1394,6 +1400,7 @@ endif
 ifeq ($(OS_TARGET),wasip1)
 ifeq ($(OS_TARGET),wasip1)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
+ALL_EXEEXT+=.wasm
 ifeq ($(OS_TARGET),wasip1threads)
 ifeq ($(OS_TARGET),wasip1threads)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
@@ -2021,6 +2028,7 @@ override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
 endif
 endif
 ifdef CLEAN_PROGRAMS
 ifdef CLEAN_PROGRAMS
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
+override ALL_CLEANEXEFILES+=$(foreach lEXEEXT,$(ALL_EXEEXT),$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(lEXEEXT), $(CLEAN_PROGRAMS))))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 endif
 endif
 ifdef CLEAN_UNITS
 ifdef CLEAN_UNITS
@@ -2059,12 +2067,15 @@ ifdef LIB_NAME
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 endif
 endif
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 fpc_cleanall: $(CLEANTARGET)
 fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 	-$(DEL) $(CLEANEXEFILES)
 endif
 endif
+ifdef ALL_CLEANEXEFILES
+	-$(DEL) $(ALL_CLEANEXEFILES)
+endif
 ifdef COMPILER_UNITTARGETDIR
 ifdef COMPILER_UNITTARGETDIR
 ifdef CLEANPPUFILES
 ifdef CLEANPPUFILES
 	-$(DEL) $(CLEANPPUFILES)
 	-$(DEL) $(CLEANPPUFILES)
@@ -2087,7 +2098,7 @@ ifneq ($(PPUEXT),.ppu)
 endif
 endif
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DEL) fpcmade.* Package.fpc *.fpm
 	-$(DEL) fpcmade.* Package.fpc *.fpm
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 ifdef AOUTEXT
 ifdef AOUTEXT
 	-$(DEL) *$(AOUTEXT)
 	-$(DEL) *$(AOUTEXT)

+ 13 - 2
rtl/android/Makefile

@@ -1303,6 +1303,7 @@ STATICLIBPREFIX=libp
 IMPORTLIBPREFIX=libimp
 IMPORTLIBPREFIX=libimp
 RSTEXT=.rsj
 RSTEXT=.rsj
 EXEDBGEXT=.dbg
 EXEDBGEXT=.dbg
+ALL_EXEEXT=.exe
 ifeq ($(OS_TARGET),go32v1)
 ifeq ($(OS_TARGET),go32v1)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 SHORTSUFFIX=v1
 SHORTSUFFIX=v1
@@ -1399,6 +1400,7 @@ ifeq ($(OS_TARGET),atari)
 EXEEXT=.ttp
 EXEEXT=.ttp
 SHORTSUFFIX=ata
 SHORTSUFFIX=ata
 endif
 endif
+ALL_EXEEXT+=.ttp
 ifeq ($(OS_TARGET),beos)
 ifeq ($(OS_TARGET),beos)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1425,6 +1427,7 @@ STATICLIBPREFIX=
 SHORTSUFFIX=nw
 SHORTSUFFIX=nw
 IMPORTLIBPREFIX=imp
 IMPORTLIBPREFIX=imp
 endif
 endif
+ALL_EXEEXT+=.nlm
 ifeq ($(OS_TARGET),netwlibc)
 ifeq ($(OS_TARGET),netwlibc)
 EXEEXT=.nlm
 EXEEXT=.nlm
 STATICLIBPREFIX=
 STATICLIBPREFIX=
@@ -1450,6 +1453,7 @@ EXEEXT=.gba
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=gba
 SHORTSUFFIX=gba
 endif
 endif
+ALL_EXEEXT+=.gba
 ifeq ($(OS_TARGET),symbian)
 ifeq ($(OS_TARGET),symbian)
 SHAREDLIBEXT=.dll
 SHAREDLIBEXT=.dll
 SHORTSUFFIX=symbian
 SHORTSUFFIX=symbian
@@ -1463,6 +1467,7 @@ EXEEXT=.dol
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=wii
 SHORTSUFFIX=wii
 endif
 endif
+ALL_EXEEXT+=.dol
 ifeq ($(OS_TARGET),aix)
 ifeq ($(OS_TARGET),aix)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1505,6 +1510,7 @@ OEXT=.rel
 endif
 endif
 SHORTSUFFIX=emb
 SHORTSUFFIX=emb
 endif
 endif
+ALL_EXEEXT+=.bin
 ifeq ($(OS_TARGET),win16)
 ifeq ($(OS_TARGET),win16)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 STATICLIBEXT=.a
 STATICLIBEXT=.a
@@ -1517,6 +1523,7 @@ endif
 ifeq ($(OS_TARGET),wasip1)
 ifeq ($(OS_TARGET),wasip1)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
+ALL_EXEEXT+=.wasm
 ifeq ($(OS_TARGET),wasip1threads)
 ifeq ($(OS_TARGET),wasip1threads)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
@@ -2144,6 +2151,7 @@ override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
 endif
 endif
 ifdef CLEAN_PROGRAMS
 ifdef CLEAN_PROGRAMS
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
+override ALL_CLEANEXEFILES+=$(foreach lEXEEXT,$(ALL_EXEEXT),$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(lEXEEXT), $(CLEAN_PROGRAMS))))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 endif
 endif
 ifdef CLEAN_UNITS
 ifdef CLEAN_UNITS
@@ -2182,12 +2190,15 @@ ifdef LIB_NAME
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 endif
 endif
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 fpc_cleanall: $(CLEANTARGET)
 fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 	-$(DEL) $(CLEANEXEFILES)
 endif
 endif
+ifdef ALL_CLEANEXEFILES
+	-$(DEL) $(ALL_CLEANEXEFILES)
+endif
 ifdef COMPILER_UNITTARGETDIR
 ifdef COMPILER_UNITTARGETDIR
 ifdef CLEANPPUFILES
 ifdef CLEANPPUFILES
 	-$(DEL) $(CLEANPPUFILES)
 	-$(DEL) $(CLEANPPUFILES)
@@ -2210,7 +2221,7 @@ ifneq ($(PPUEXT),.ppu)
 endif
 endif
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DEL) fpcmade.* Package.fpc *.fpm
 	-$(DEL) fpcmade.* Package.fpc *.fpm
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 ifdef AOUTEXT
 ifdef AOUTEXT
 	-$(DEL) *$(AOUTEXT)
 	-$(DEL) *$(AOUTEXT)

+ 13 - 2
rtl/aros/Makefile

@@ -1195,6 +1195,7 @@ STATICLIBPREFIX=libp
 IMPORTLIBPREFIX=libimp
 IMPORTLIBPREFIX=libimp
 RSTEXT=.rsj
 RSTEXT=.rsj
 EXEDBGEXT=.dbg
 EXEDBGEXT=.dbg
+ALL_EXEEXT=.exe
 ifeq ($(OS_TARGET),go32v1)
 ifeq ($(OS_TARGET),go32v1)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 SHORTSUFFIX=v1
 SHORTSUFFIX=v1
@@ -1291,6 +1292,7 @@ ifeq ($(OS_TARGET),atari)
 EXEEXT=.ttp
 EXEEXT=.ttp
 SHORTSUFFIX=ata
 SHORTSUFFIX=ata
 endif
 endif
+ALL_EXEEXT+=.ttp
 ifeq ($(OS_TARGET),beos)
 ifeq ($(OS_TARGET),beos)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1317,6 +1319,7 @@ STATICLIBPREFIX=
 SHORTSUFFIX=nw
 SHORTSUFFIX=nw
 IMPORTLIBPREFIX=imp
 IMPORTLIBPREFIX=imp
 endif
 endif
+ALL_EXEEXT+=.nlm
 ifeq ($(OS_TARGET),netwlibc)
 ifeq ($(OS_TARGET),netwlibc)
 EXEEXT=.nlm
 EXEEXT=.nlm
 STATICLIBPREFIX=
 STATICLIBPREFIX=
@@ -1342,6 +1345,7 @@ EXEEXT=.gba
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=gba
 SHORTSUFFIX=gba
 endif
 endif
+ALL_EXEEXT+=.gba
 ifeq ($(OS_TARGET),symbian)
 ifeq ($(OS_TARGET),symbian)
 SHAREDLIBEXT=.dll
 SHAREDLIBEXT=.dll
 SHORTSUFFIX=symbian
 SHORTSUFFIX=symbian
@@ -1355,6 +1359,7 @@ EXEEXT=.dol
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=wii
 SHORTSUFFIX=wii
 endif
 endif
+ALL_EXEEXT+=.dol
 ifeq ($(OS_TARGET),aix)
 ifeq ($(OS_TARGET),aix)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1397,6 +1402,7 @@ OEXT=.rel
 endif
 endif
 SHORTSUFFIX=emb
 SHORTSUFFIX=emb
 endif
 endif
+ALL_EXEEXT+=.bin
 ifeq ($(OS_TARGET),win16)
 ifeq ($(OS_TARGET),win16)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 STATICLIBEXT=.a
 STATICLIBEXT=.a
@@ -1409,6 +1415,7 @@ endif
 ifeq ($(OS_TARGET),wasip1)
 ifeq ($(OS_TARGET),wasip1)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
+ALL_EXEEXT+=.wasm
 ifeq ($(OS_TARGET),wasip1threads)
 ifeq ($(OS_TARGET),wasip1threads)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
@@ -2036,6 +2043,7 @@ override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
 endif
 endif
 ifdef CLEAN_PROGRAMS
 ifdef CLEAN_PROGRAMS
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
+override ALL_CLEANEXEFILES+=$(foreach lEXEEXT,$(ALL_EXEEXT),$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(lEXEEXT), $(CLEAN_PROGRAMS))))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 endif
 endif
 ifdef CLEAN_UNITS
 ifdef CLEAN_UNITS
@@ -2074,12 +2082,15 @@ ifdef LIB_NAME
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 endif
 endif
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 fpc_cleanall: $(CLEANTARGET)
 fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 	-$(DEL) $(CLEANEXEFILES)
 endif
 endif
+ifdef ALL_CLEANEXEFILES
+	-$(DEL) $(ALL_CLEANEXEFILES)
+endif
 ifdef COMPILER_UNITTARGETDIR
 ifdef COMPILER_UNITTARGETDIR
 ifdef CLEANPPUFILES
 ifdef CLEANPPUFILES
 	-$(DEL) $(CLEANPPUFILES)
 	-$(DEL) $(CLEANPPUFILES)
@@ -2102,7 +2113,7 @@ ifneq ($(PPUEXT),.ppu)
 endif
 endif
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DEL) fpcmade.* Package.fpc *.fpm
 	-$(DEL) fpcmade.* Package.fpc *.fpm
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 ifdef AOUTEXT
 ifdef AOUTEXT
 	-$(DEL) *$(AOUTEXT)
 	-$(DEL) *$(AOUTEXT)

+ 13 - 2
rtl/atari/Makefile

@@ -1150,6 +1150,7 @@ STATICLIBPREFIX=libp
 IMPORTLIBPREFIX=libimp
 IMPORTLIBPREFIX=libimp
 RSTEXT=.rsj
 RSTEXT=.rsj
 EXEDBGEXT=.dbg
 EXEDBGEXT=.dbg
+ALL_EXEEXT=.exe
 ifeq ($(OS_TARGET),go32v1)
 ifeq ($(OS_TARGET),go32v1)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 SHORTSUFFIX=v1
 SHORTSUFFIX=v1
@@ -1246,6 +1247,7 @@ ifeq ($(OS_TARGET),atari)
 EXEEXT=.ttp
 EXEEXT=.ttp
 SHORTSUFFIX=ata
 SHORTSUFFIX=ata
 endif
 endif
+ALL_EXEEXT+=.ttp
 ifeq ($(OS_TARGET),beos)
 ifeq ($(OS_TARGET),beos)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1272,6 +1274,7 @@ STATICLIBPREFIX=
 SHORTSUFFIX=nw
 SHORTSUFFIX=nw
 IMPORTLIBPREFIX=imp
 IMPORTLIBPREFIX=imp
 endif
 endif
+ALL_EXEEXT+=.nlm
 ifeq ($(OS_TARGET),netwlibc)
 ifeq ($(OS_TARGET),netwlibc)
 EXEEXT=.nlm
 EXEEXT=.nlm
 STATICLIBPREFIX=
 STATICLIBPREFIX=
@@ -1297,6 +1300,7 @@ EXEEXT=.gba
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=gba
 SHORTSUFFIX=gba
 endif
 endif
+ALL_EXEEXT+=.gba
 ifeq ($(OS_TARGET),symbian)
 ifeq ($(OS_TARGET),symbian)
 SHAREDLIBEXT=.dll
 SHAREDLIBEXT=.dll
 SHORTSUFFIX=symbian
 SHORTSUFFIX=symbian
@@ -1310,6 +1314,7 @@ EXEEXT=.dol
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=wii
 SHORTSUFFIX=wii
 endif
 endif
+ALL_EXEEXT+=.dol
 ifeq ($(OS_TARGET),aix)
 ifeq ($(OS_TARGET),aix)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1352,6 +1357,7 @@ OEXT=.rel
 endif
 endif
 SHORTSUFFIX=emb
 SHORTSUFFIX=emb
 endif
 endif
+ALL_EXEEXT+=.bin
 ifeq ($(OS_TARGET),win16)
 ifeq ($(OS_TARGET),win16)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 STATICLIBEXT=.a
 STATICLIBEXT=.a
@@ -1364,6 +1370,7 @@ endif
 ifeq ($(OS_TARGET),wasip1)
 ifeq ($(OS_TARGET),wasip1)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
+ALL_EXEEXT+=.wasm
 ifeq ($(OS_TARGET),wasip1threads)
 ifeq ($(OS_TARGET),wasip1threads)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
@@ -1991,6 +1998,7 @@ override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
 endif
 endif
 ifdef CLEAN_PROGRAMS
 ifdef CLEAN_PROGRAMS
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
+override ALL_CLEANEXEFILES+=$(foreach lEXEEXT,$(ALL_EXEEXT),$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(lEXEEXT), $(CLEAN_PROGRAMS))))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 endif
 endif
 ifdef CLEAN_UNITS
 ifdef CLEAN_UNITS
@@ -2029,12 +2037,15 @@ ifdef LIB_NAME
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 endif
 endif
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 fpc_cleanall: $(CLEANTARGET)
 fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 	-$(DEL) $(CLEANEXEFILES)
 endif
 endif
+ifdef ALL_CLEANEXEFILES
+	-$(DEL) $(ALL_CLEANEXEFILES)
+endif
 ifdef COMPILER_UNITTARGETDIR
 ifdef COMPILER_UNITTARGETDIR
 ifdef CLEANPPUFILES
 ifdef CLEANPPUFILES
 	-$(DEL) $(CLEANPPUFILES)
 	-$(DEL) $(CLEANPPUFILES)
@@ -2057,7 +2068,7 @@ ifneq ($(PPUEXT),.ppu)
 endif
 endif
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DEL) fpcmade.* Package.fpc *.fpm
 	-$(DEL) fpcmade.* Package.fpc *.fpm
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 ifdef AOUTEXT
 ifdef AOUTEXT
 	-$(DEL) *$(AOUTEXT)
 	-$(DEL) *$(AOUTEXT)

+ 13 - 2
rtl/beos/Makefile

@@ -1159,6 +1159,7 @@ STATICLIBPREFIX=libp
 IMPORTLIBPREFIX=libimp
 IMPORTLIBPREFIX=libimp
 RSTEXT=.rsj
 RSTEXT=.rsj
 EXEDBGEXT=.dbg
 EXEDBGEXT=.dbg
+ALL_EXEEXT=.exe
 ifeq ($(OS_TARGET),go32v1)
 ifeq ($(OS_TARGET),go32v1)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 SHORTSUFFIX=v1
 SHORTSUFFIX=v1
@@ -1255,6 +1256,7 @@ ifeq ($(OS_TARGET),atari)
 EXEEXT=.ttp
 EXEEXT=.ttp
 SHORTSUFFIX=ata
 SHORTSUFFIX=ata
 endif
 endif
+ALL_EXEEXT+=.ttp
 ifeq ($(OS_TARGET),beos)
 ifeq ($(OS_TARGET),beos)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1281,6 +1283,7 @@ STATICLIBPREFIX=
 SHORTSUFFIX=nw
 SHORTSUFFIX=nw
 IMPORTLIBPREFIX=imp
 IMPORTLIBPREFIX=imp
 endif
 endif
+ALL_EXEEXT+=.nlm
 ifeq ($(OS_TARGET),netwlibc)
 ifeq ($(OS_TARGET),netwlibc)
 EXEEXT=.nlm
 EXEEXT=.nlm
 STATICLIBPREFIX=
 STATICLIBPREFIX=
@@ -1306,6 +1309,7 @@ EXEEXT=.gba
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=gba
 SHORTSUFFIX=gba
 endif
 endif
+ALL_EXEEXT+=.gba
 ifeq ($(OS_TARGET),symbian)
 ifeq ($(OS_TARGET),symbian)
 SHAREDLIBEXT=.dll
 SHAREDLIBEXT=.dll
 SHORTSUFFIX=symbian
 SHORTSUFFIX=symbian
@@ -1319,6 +1323,7 @@ EXEEXT=.dol
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=wii
 SHORTSUFFIX=wii
 endif
 endif
+ALL_EXEEXT+=.dol
 ifeq ($(OS_TARGET),aix)
 ifeq ($(OS_TARGET),aix)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1361,6 +1366,7 @@ OEXT=.rel
 endif
 endif
 SHORTSUFFIX=emb
 SHORTSUFFIX=emb
 endif
 endif
+ALL_EXEEXT+=.bin
 ifeq ($(OS_TARGET),win16)
 ifeq ($(OS_TARGET),win16)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 STATICLIBEXT=.a
 STATICLIBEXT=.a
@@ -1373,6 +1379,7 @@ endif
 ifeq ($(OS_TARGET),wasip1)
 ifeq ($(OS_TARGET),wasip1)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
+ALL_EXEEXT+=.wasm
 ifeq ($(OS_TARGET),wasip1threads)
 ifeq ($(OS_TARGET),wasip1threads)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
@@ -2000,6 +2007,7 @@ override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
 endif
 endif
 ifdef CLEAN_PROGRAMS
 ifdef CLEAN_PROGRAMS
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
+override ALL_CLEANEXEFILES+=$(foreach lEXEEXT,$(ALL_EXEEXT),$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(lEXEEXT), $(CLEAN_PROGRAMS))))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 endif
 endif
 ifdef CLEAN_UNITS
 ifdef CLEAN_UNITS
@@ -2038,12 +2046,15 @@ ifdef LIB_NAME
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 endif
 endif
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 fpc_cleanall: $(CLEANTARGET)
 fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 	-$(DEL) $(CLEANEXEFILES)
 endif
 endif
+ifdef ALL_CLEANEXEFILES
+	-$(DEL) $(ALL_CLEANEXEFILES)
+endif
 ifdef COMPILER_UNITTARGETDIR
 ifdef COMPILER_UNITTARGETDIR
 ifdef CLEANPPUFILES
 ifdef CLEANPPUFILES
 	-$(DEL) $(CLEANPPUFILES)
 	-$(DEL) $(CLEANPPUFILES)
@@ -2066,7 +2077,7 @@ ifneq ($(PPUEXT),.ppu)
 endif
 endif
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DEL) fpcmade.* Package.fpc *.fpm
 	-$(DEL) fpcmade.* Package.fpc *.fpm
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 ifdef AOUTEXT
 ifdef AOUTEXT
 	-$(DEL) *$(AOUTEXT)
 	-$(DEL) *$(AOUTEXT)

+ 13 - 2
rtl/darwin/Makefile

@@ -1300,6 +1300,7 @@ STATICLIBPREFIX=libp
 IMPORTLIBPREFIX=libimp
 IMPORTLIBPREFIX=libimp
 RSTEXT=.rsj
 RSTEXT=.rsj
 EXEDBGEXT=.dbg
 EXEDBGEXT=.dbg
+ALL_EXEEXT=.exe
 ifeq ($(OS_TARGET),go32v1)
 ifeq ($(OS_TARGET),go32v1)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 SHORTSUFFIX=v1
 SHORTSUFFIX=v1
@@ -1396,6 +1397,7 @@ ifeq ($(OS_TARGET),atari)
 EXEEXT=.ttp
 EXEEXT=.ttp
 SHORTSUFFIX=ata
 SHORTSUFFIX=ata
 endif
 endif
+ALL_EXEEXT+=.ttp
 ifeq ($(OS_TARGET),beos)
 ifeq ($(OS_TARGET),beos)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1422,6 +1424,7 @@ STATICLIBPREFIX=
 SHORTSUFFIX=nw
 SHORTSUFFIX=nw
 IMPORTLIBPREFIX=imp
 IMPORTLIBPREFIX=imp
 endif
 endif
+ALL_EXEEXT+=.nlm
 ifeq ($(OS_TARGET),netwlibc)
 ifeq ($(OS_TARGET),netwlibc)
 EXEEXT=.nlm
 EXEEXT=.nlm
 STATICLIBPREFIX=
 STATICLIBPREFIX=
@@ -1447,6 +1450,7 @@ EXEEXT=.gba
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=gba
 SHORTSUFFIX=gba
 endif
 endif
+ALL_EXEEXT+=.gba
 ifeq ($(OS_TARGET),symbian)
 ifeq ($(OS_TARGET),symbian)
 SHAREDLIBEXT=.dll
 SHAREDLIBEXT=.dll
 SHORTSUFFIX=symbian
 SHORTSUFFIX=symbian
@@ -1460,6 +1464,7 @@ EXEEXT=.dol
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=wii
 SHORTSUFFIX=wii
 endif
 endif
+ALL_EXEEXT+=.dol
 ifeq ($(OS_TARGET),aix)
 ifeq ($(OS_TARGET),aix)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1502,6 +1507,7 @@ OEXT=.rel
 endif
 endif
 SHORTSUFFIX=emb
 SHORTSUFFIX=emb
 endif
 endif
+ALL_EXEEXT+=.bin
 ifeq ($(OS_TARGET),win16)
 ifeq ($(OS_TARGET),win16)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 STATICLIBEXT=.a
 STATICLIBEXT=.a
@@ -1514,6 +1520,7 @@ endif
 ifeq ($(OS_TARGET),wasip1)
 ifeq ($(OS_TARGET),wasip1)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
+ALL_EXEEXT+=.wasm
 ifeq ($(OS_TARGET),wasip1threads)
 ifeq ($(OS_TARGET),wasip1threads)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
@@ -2114,6 +2121,7 @@ override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
 endif
 endif
 ifdef CLEAN_PROGRAMS
 ifdef CLEAN_PROGRAMS
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
+override ALL_CLEANEXEFILES+=$(foreach lEXEEXT,$(ALL_EXEEXT),$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(lEXEEXT), $(CLEAN_PROGRAMS))))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 endif
 endif
 ifdef CLEAN_UNITS
 ifdef CLEAN_UNITS
@@ -2152,12 +2160,15 @@ ifdef LIB_NAME
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 endif
 endif
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 fpc_cleanall: $(CLEANTARGET)
 fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 	-$(DEL) $(CLEANEXEFILES)
 endif
 endif
+ifdef ALL_CLEANEXEFILES
+	-$(DEL) $(ALL_CLEANEXEFILES)
+endif
 ifdef COMPILER_UNITTARGETDIR
 ifdef COMPILER_UNITTARGETDIR
 ifdef CLEANPPUFILES
 ifdef CLEANPPUFILES
 	-$(DEL) $(CLEANPPUFILES)
 	-$(DEL) $(CLEANPPUFILES)
@@ -2180,7 +2191,7 @@ ifneq ($(PPUEXT),.ppu)
 endif
 endif
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DEL) fpcmade.* Package.fpc *.fpm
 	-$(DEL) fpcmade.* Package.fpc *.fpm
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 ifdef AOUTEXT
 ifdef AOUTEXT
 	-$(DEL) *$(AOUTEXT)
 	-$(DEL) *$(AOUTEXT)

+ 13 - 2
rtl/dragonfly/Makefile

@@ -1167,6 +1167,7 @@ STATICLIBPREFIX=libp
 IMPORTLIBPREFIX=libimp
 IMPORTLIBPREFIX=libimp
 RSTEXT=.rsj
 RSTEXT=.rsj
 EXEDBGEXT=.dbg
 EXEDBGEXT=.dbg
+ALL_EXEEXT=.exe
 ifeq ($(OS_TARGET),go32v1)
 ifeq ($(OS_TARGET),go32v1)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 SHORTSUFFIX=v1
 SHORTSUFFIX=v1
@@ -1263,6 +1264,7 @@ ifeq ($(OS_TARGET),atari)
 EXEEXT=.ttp
 EXEEXT=.ttp
 SHORTSUFFIX=ata
 SHORTSUFFIX=ata
 endif
 endif
+ALL_EXEEXT+=.ttp
 ifeq ($(OS_TARGET),beos)
 ifeq ($(OS_TARGET),beos)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1289,6 +1291,7 @@ STATICLIBPREFIX=
 SHORTSUFFIX=nw
 SHORTSUFFIX=nw
 IMPORTLIBPREFIX=imp
 IMPORTLIBPREFIX=imp
 endif
 endif
+ALL_EXEEXT+=.nlm
 ifeq ($(OS_TARGET),netwlibc)
 ifeq ($(OS_TARGET),netwlibc)
 EXEEXT=.nlm
 EXEEXT=.nlm
 STATICLIBPREFIX=
 STATICLIBPREFIX=
@@ -1314,6 +1317,7 @@ EXEEXT=.gba
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=gba
 SHORTSUFFIX=gba
 endif
 endif
+ALL_EXEEXT+=.gba
 ifeq ($(OS_TARGET),symbian)
 ifeq ($(OS_TARGET),symbian)
 SHAREDLIBEXT=.dll
 SHAREDLIBEXT=.dll
 SHORTSUFFIX=symbian
 SHORTSUFFIX=symbian
@@ -1327,6 +1331,7 @@ EXEEXT=.dol
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=wii
 SHORTSUFFIX=wii
 endif
 endif
+ALL_EXEEXT+=.dol
 ifeq ($(OS_TARGET),aix)
 ifeq ($(OS_TARGET),aix)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1369,6 +1374,7 @@ OEXT=.rel
 endif
 endif
 SHORTSUFFIX=emb
 SHORTSUFFIX=emb
 endif
 endif
+ALL_EXEEXT+=.bin
 ifeq ($(OS_TARGET),win16)
 ifeq ($(OS_TARGET),win16)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 STATICLIBEXT=.a
 STATICLIBEXT=.a
@@ -1381,6 +1387,7 @@ endif
 ifeq ($(OS_TARGET),wasip1)
 ifeq ($(OS_TARGET),wasip1)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
+ALL_EXEEXT+=.wasm
 ifeq ($(OS_TARGET),wasip1threads)
 ifeq ($(OS_TARGET),wasip1threads)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
@@ -2008,6 +2015,7 @@ override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
 endif
 endif
 ifdef CLEAN_PROGRAMS
 ifdef CLEAN_PROGRAMS
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
+override ALL_CLEANEXEFILES+=$(foreach lEXEEXT,$(ALL_EXEEXT),$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(lEXEEXT), $(CLEAN_PROGRAMS))))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 endif
 endif
 ifdef CLEAN_UNITS
 ifdef CLEAN_UNITS
@@ -2046,12 +2054,15 @@ ifdef LIB_NAME
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 endif
 endif
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 fpc_cleanall: $(CLEANTARGET)
 fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 	-$(DEL) $(CLEANEXEFILES)
 endif
 endif
+ifdef ALL_CLEANEXEFILES
+	-$(DEL) $(ALL_CLEANEXEFILES)
+endif
 ifdef COMPILER_UNITTARGETDIR
 ifdef COMPILER_UNITTARGETDIR
 ifdef CLEANPPUFILES
 ifdef CLEANPPUFILES
 	-$(DEL) $(CLEANPPUFILES)
 	-$(DEL) $(CLEANPPUFILES)
@@ -2074,7 +2085,7 @@ ifneq ($(PPUEXT),.ppu)
 endif
 endif
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DEL) fpcmade.* Package.fpc *.fpm
 	-$(DEL) fpcmade.* Package.fpc *.fpm
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 ifdef AOUTEXT
 ifdef AOUTEXT
 	-$(DEL) *$(AOUTEXT)
 	-$(DEL) *$(AOUTEXT)

+ 13 - 2
rtl/emx/Makefile

@@ -1159,6 +1159,7 @@ STATICLIBPREFIX=libp
 IMPORTLIBPREFIX=libimp
 IMPORTLIBPREFIX=libimp
 RSTEXT=.rsj
 RSTEXT=.rsj
 EXEDBGEXT=.dbg
 EXEDBGEXT=.dbg
+ALL_EXEEXT=.exe
 ifeq ($(OS_TARGET),go32v1)
 ifeq ($(OS_TARGET),go32v1)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 SHORTSUFFIX=v1
 SHORTSUFFIX=v1
@@ -1255,6 +1256,7 @@ ifeq ($(OS_TARGET),atari)
 EXEEXT=.ttp
 EXEEXT=.ttp
 SHORTSUFFIX=ata
 SHORTSUFFIX=ata
 endif
 endif
+ALL_EXEEXT+=.ttp
 ifeq ($(OS_TARGET),beos)
 ifeq ($(OS_TARGET),beos)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1281,6 +1283,7 @@ STATICLIBPREFIX=
 SHORTSUFFIX=nw
 SHORTSUFFIX=nw
 IMPORTLIBPREFIX=imp
 IMPORTLIBPREFIX=imp
 endif
 endif
+ALL_EXEEXT+=.nlm
 ifeq ($(OS_TARGET),netwlibc)
 ifeq ($(OS_TARGET),netwlibc)
 EXEEXT=.nlm
 EXEEXT=.nlm
 STATICLIBPREFIX=
 STATICLIBPREFIX=
@@ -1306,6 +1309,7 @@ EXEEXT=.gba
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=gba
 SHORTSUFFIX=gba
 endif
 endif
+ALL_EXEEXT+=.gba
 ifeq ($(OS_TARGET),symbian)
 ifeq ($(OS_TARGET),symbian)
 SHAREDLIBEXT=.dll
 SHAREDLIBEXT=.dll
 SHORTSUFFIX=symbian
 SHORTSUFFIX=symbian
@@ -1319,6 +1323,7 @@ EXEEXT=.dol
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=wii
 SHORTSUFFIX=wii
 endif
 endif
+ALL_EXEEXT+=.dol
 ifeq ($(OS_TARGET),aix)
 ifeq ($(OS_TARGET),aix)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1361,6 +1366,7 @@ OEXT=.rel
 endif
 endif
 SHORTSUFFIX=emb
 SHORTSUFFIX=emb
 endif
 endif
+ALL_EXEEXT+=.bin
 ifeq ($(OS_TARGET),win16)
 ifeq ($(OS_TARGET),win16)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 STATICLIBEXT=.a
 STATICLIBEXT=.a
@@ -1373,6 +1379,7 @@ endif
 ifeq ($(OS_TARGET),wasip1)
 ifeq ($(OS_TARGET),wasip1)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
+ALL_EXEEXT+=.wasm
 ifeq ($(OS_TARGET),wasip1threads)
 ifeq ($(OS_TARGET),wasip1threads)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
@@ -2000,6 +2007,7 @@ override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
 endif
 endif
 ifdef CLEAN_PROGRAMS
 ifdef CLEAN_PROGRAMS
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
+override ALL_CLEANEXEFILES+=$(foreach lEXEEXT,$(ALL_EXEEXT),$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(lEXEEXT), $(CLEAN_PROGRAMS))))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 endif
 endif
 ifdef CLEAN_UNITS
 ifdef CLEAN_UNITS
@@ -2038,12 +2046,15 @@ ifdef LIB_NAME
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 endif
 endif
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 fpc_cleanall: $(CLEANTARGET)
 fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 	-$(DEL) $(CLEANEXEFILES)
 endif
 endif
+ifdef ALL_CLEANEXEFILES
+	-$(DEL) $(ALL_CLEANEXEFILES)
+endif
 ifdef COMPILER_UNITTARGETDIR
 ifdef COMPILER_UNITTARGETDIR
 ifdef CLEANPPUFILES
 ifdef CLEANPPUFILES
 	-$(DEL) $(CLEANPPUFILES)
 	-$(DEL) $(CLEANPPUFILES)
@@ -2066,7 +2077,7 @@ ifneq ($(PPUEXT),.ppu)
 endif
 endif
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DEL) fpcmade.* Package.fpc *.fpm
 	-$(DEL) fpcmade.* Package.fpc *.fpm
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 ifdef AOUTEXT
 ifdef AOUTEXT
 	-$(DEL) *$(AOUTEXT)
 	-$(DEL) *$(AOUTEXT)

+ 13 - 2
rtl/freebsd/Makefile

@@ -1209,6 +1209,7 @@ STATICLIBPREFIX=libp
 IMPORTLIBPREFIX=libimp
 IMPORTLIBPREFIX=libimp
 RSTEXT=.rsj
 RSTEXT=.rsj
 EXEDBGEXT=.dbg
 EXEDBGEXT=.dbg
+ALL_EXEEXT=.exe
 ifeq ($(OS_TARGET),go32v1)
 ifeq ($(OS_TARGET),go32v1)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 SHORTSUFFIX=v1
 SHORTSUFFIX=v1
@@ -1305,6 +1306,7 @@ ifeq ($(OS_TARGET),atari)
 EXEEXT=.ttp
 EXEEXT=.ttp
 SHORTSUFFIX=ata
 SHORTSUFFIX=ata
 endif
 endif
+ALL_EXEEXT+=.ttp
 ifeq ($(OS_TARGET),beos)
 ifeq ($(OS_TARGET),beos)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1331,6 +1333,7 @@ STATICLIBPREFIX=
 SHORTSUFFIX=nw
 SHORTSUFFIX=nw
 IMPORTLIBPREFIX=imp
 IMPORTLIBPREFIX=imp
 endif
 endif
+ALL_EXEEXT+=.nlm
 ifeq ($(OS_TARGET),netwlibc)
 ifeq ($(OS_TARGET),netwlibc)
 EXEEXT=.nlm
 EXEEXT=.nlm
 STATICLIBPREFIX=
 STATICLIBPREFIX=
@@ -1356,6 +1359,7 @@ EXEEXT=.gba
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=gba
 SHORTSUFFIX=gba
 endif
 endif
+ALL_EXEEXT+=.gba
 ifeq ($(OS_TARGET),symbian)
 ifeq ($(OS_TARGET),symbian)
 SHAREDLIBEXT=.dll
 SHAREDLIBEXT=.dll
 SHORTSUFFIX=symbian
 SHORTSUFFIX=symbian
@@ -1369,6 +1373,7 @@ EXEEXT=.dol
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=wii
 SHORTSUFFIX=wii
 endif
 endif
+ALL_EXEEXT+=.dol
 ifeq ($(OS_TARGET),aix)
 ifeq ($(OS_TARGET),aix)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1411,6 +1416,7 @@ OEXT=.rel
 endif
 endif
 SHORTSUFFIX=emb
 SHORTSUFFIX=emb
 endif
 endif
+ALL_EXEEXT+=.bin
 ifeq ($(OS_TARGET),win16)
 ifeq ($(OS_TARGET),win16)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 STATICLIBEXT=.a
 STATICLIBEXT=.a
@@ -1423,6 +1429,7 @@ endif
 ifeq ($(OS_TARGET),wasip1)
 ifeq ($(OS_TARGET),wasip1)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
+ALL_EXEEXT+=.wasm
 ifeq ($(OS_TARGET),wasip1threads)
 ifeq ($(OS_TARGET),wasip1threads)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
@@ -2050,6 +2057,7 @@ override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
 endif
 endif
 ifdef CLEAN_PROGRAMS
 ifdef CLEAN_PROGRAMS
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
+override ALL_CLEANEXEFILES+=$(foreach lEXEEXT,$(ALL_EXEEXT),$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(lEXEEXT), $(CLEAN_PROGRAMS))))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 endif
 endif
 ifdef CLEAN_UNITS
 ifdef CLEAN_UNITS
@@ -2088,12 +2096,15 @@ ifdef LIB_NAME
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 endif
 endif
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 fpc_cleanall: $(CLEANTARGET)
 fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 	-$(DEL) $(CLEANEXEFILES)
 endif
 endif
+ifdef ALL_CLEANEXEFILES
+	-$(DEL) $(ALL_CLEANEXEFILES)
+endif
 ifdef COMPILER_UNITTARGETDIR
 ifdef COMPILER_UNITTARGETDIR
 ifdef CLEANPPUFILES
 ifdef CLEANPPUFILES
 	-$(DEL) $(CLEANPPUFILES)
 	-$(DEL) $(CLEANPPUFILES)
@@ -2116,7 +2127,7 @@ ifneq ($(PPUEXT),.ppu)
 endif
 endif
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DEL) fpcmade.* Package.fpc *.fpm
 	-$(DEL) fpcmade.* Package.fpc *.fpm
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 ifdef AOUTEXT
 ifdef AOUTEXT
 	-$(DEL) *$(AOUTEXT)
 	-$(DEL) *$(AOUTEXT)

+ 13 - 2
rtl/gba/Makefile

@@ -1148,6 +1148,7 @@ STATICLIBPREFIX=libp
 IMPORTLIBPREFIX=libimp
 IMPORTLIBPREFIX=libimp
 RSTEXT=.rsj
 RSTEXT=.rsj
 EXEDBGEXT=.dbg
 EXEDBGEXT=.dbg
+ALL_EXEEXT=.exe
 ifeq ($(OS_TARGET),go32v1)
 ifeq ($(OS_TARGET),go32v1)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 SHORTSUFFIX=v1
 SHORTSUFFIX=v1
@@ -1244,6 +1245,7 @@ ifeq ($(OS_TARGET),atari)
 EXEEXT=.ttp
 EXEEXT=.ttp
 SHORTSUFFIX=ata
 SHORTSUFFIX=ata
 endif
 endif
+ALL_EXEEXT+=.ttp
 ifeq ($(OS_TARGET),beos)
 ifeq ($(OS_TARGET),beos)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1270,6 +1272,7 @@ STATICLIBPREFIX=
 SHORTSUFFIX=nw
 SHORTSUFFIX=nw
 IMPORTLIBPREFIX=imp
 IMPORTLIBPREFIX=imp
 endif
 endif
+ALL_EXEEXT+=.nlm
 ifeq ($(OS_TARGET),netwlibc)
 ifeq ($(OS_TARGET),netwlibc)
 EXEEXT=.nlm
 EXEEXT=.nlm
 STATICLIBPREFIX=
 STATICLIBPREFIX=
@@ -1295,6 +1298,7 @@ EXEEXT=.gba
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=gba
 SHORTSUFFIX=gba
 endif
 endif
+ALL_EXEEXT+=.gba
 ifeq ($(OS_TARGET),symbian)
 ifeq ($(OS_TARGET),symbian)
 SHAREDLIBEXT=.dll
 SHAREDLIBEXT=.dll
 SHORTSUFFIX=symbian
 SHORTSUFFIX=symbian
@@ -1308,6 +1312,7 @@ EXEEXT=.dol
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=wii
 SHORTSUFFIX=wii
 endif
 endif
+ALL_EXEEXT+=.dol
 ifeq ($(OS_TARGET),aix)
 ifeq ($(OS_TARGET),aix)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1350,6 +1355,7 @@ OEXT=.rel
 endif
 endif
 SHORTSUFFIX=emb
 SHORTSUFFIX=emb
 endif
 endif
+ALL_EXEEXT+=.bin
 ifeq ($(OS_TARGET),win16)
 ifeq ($(OS_TARGET),win16)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 STATICLIBEXT=.a
 STATICLIBEXT=.a
@@ -1362,6 +1368,7 @@ endif
 ifeq ($(OS_TARGET),wasip1)
 ifeq ($(OS_TARGET),wasip1)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
+ALL_EXEEXT+=.wasm
 ifeq ($(OS_TARGET),wasip1threads)
 ifeq ($(OS_TARGET),wasip1threads)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
@@ -1989,6 +1996,7 @@ override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
 endif
 endif
 ifdef CLEAN_PROGRAMS
 ifdef CLEAN_PROGRAMS
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
+override ALL_CLEANEXEFILES+=$(foreach lEXEEXT,$(ALL_EXEEXT),$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(lEXEEXT), $(CLEAN_PROGRAMS))))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 endif
 endif
 ifdef CLEAN_UNITS
 ifdef CLEAN_UNITS
@@ -2027,12 +2035,15 @@ ifdef LIB_NAME
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 endif
 endif
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 fpc_cleanall: $(CLEANTARGET)
 fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 	-$(DEL) $(CLEANEXEFILES)
 endif
 endif
+ifdef ALL_CLEANEXEFILES
+	-$(DEL) $(ALL_CLEANEXEFILES)
+endif
 ifdef COMPILER_UNITTARGETDIR
 ifdef COMPILER_UNITTARGETDIR
 ifdef CLEANPPUFILES
 ifdef CLEANPPUFILES
 	-$(DEL) $(CLEANPPUFILES)
 	-$(DEL) $(CLEANPPUFILES)
@@ -2055,7 +2066,7 @@ ifneq ($(PPUEXT),.ppu)
 endif
 endif
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DEL) fpcmade.* Package.fpc *.fpm
 	-$(DEL) fpcmade.* Package.fpc *.fpm
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 ifdef AOUTEXT
 ifdef AOUTEXT
 	-$(DEL) *$(AOUTEXT)
 	-$(DEL) *$(AOUTEXT)

+ 13 - 2
rtl/go32v2/Makefile

@@ -1161,6 +1161,7 @@ STATICLIBPREFIX=libp
 IMPORTLIBPREFIX=libimp
 IMPORTLIBPREFIX=libimp
 RSTEXT=.rsj
 RSTEXT=.rsj
 EXEDBGEXT=.dbg
 EXEDBGEXT=.dbg
+ALL_EXEEXT=.exe
 ifeq ($(OS_TARGET),go32v1)
 ifeq ($(OS_TARGET),go32v1)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 SHORTSUFFIX=v1
 SHORTSUFFIX=v1
@@ -1257,6 +1258,7 @@ ifeq ($(OS_TARGET),atari)
 EXEEXT=.ttp
 EXEEXT=.ttp
 SHORTSUFFIX=ata
 SHORTSUFFIX=ata
 endif
 endif
+ALL_EXEEXT+=.ttp
 ifeq ($(OS_TARGET),beos)
 ifeq ($(OS_TARGET),beos)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1283,6 +1285,7 @@ STATICLIBPREFIX=
 SHORTSUFFIX=nw
 SHORTSUFFIX=nw
 IMPORTLIBPREFIX=imp
 IMPORTLIBPREFIX=imp
 endif
 endif
+ALL_EXEEXT+=.nlm
 ifeq ($(OS_TARGET),netwlibc)
 ifeq ($(OS_TARGET),netwlibc)
 EXEEXT=.nlm
 EXEEXT=.nlm
 STATICLIBPREFIX=
 STATICLIBPREFIX=
@@ -1308,6 +1311,7 @@ EXEEXT=.gba
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=gba
 SHORTSUFFIX=gba
 endif
 endif
+ALL_EXEEXT+=.gba
 ifeq ($(OS_TARGET),symbian)
 ifeq ($(OS_TARGET),symbian)
 SHAREDLIBEXT=.dll
 SHAREDLIBEXT=.dll
 SHORTSUFFIX=symbian
 SHORTSUFFIX=symbian
@@ -1321,6 +1325,7 @@ EXEEXT=.dol
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=wii
 SHORTSUFFIX=wii
 endif
 endif
+ALL_EXEEXT+=.dol
 ifeq ($(OS_TARGET),aix)
 ifeq ($(OS_TARGET),aix)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1363,6 +1368,7 @@ OEXT=.rel
 endif
 endif
 SHORTSUFFIX=emb
 SHORTSUFFIX=emb
 endif
 endif
+ALL_EXEEXT+=.bin
 ifeq ($(OS_TARGET),win16)
 ifeq ($(OS_TARGET),win16)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 STATICLIBEXT=.a
 STATICLIBEXT=.a
@@ -1375,6 +1381,7 @@ endif
 ifeq ($(OS_TARGET),wasip1)
 ifeq ($(OS_TARGET),wasip1)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
+ALL_EXEEXT+=.wasm
 ifeq ($(OS_TARGET),wasip1threads)
 ifeq ($(OS_TARGET),wasip1threads)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
@@ -2002,6 +2009,7 @@ override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
 endif
 endif
 ifdef CLEAN_PROGRAMS
 ifdef CLEAN_PROGRAMS
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
+override ALL_CLEANEXEFILES+=$(foreach lEXEEXT,$(ALL_EXEEXT),$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(lEXEEXT), $(CLEAN_PROGRAMS))))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 endif
 endif
 ifdef CLEAN_UNITS
 ifdef CLEAN_UNITS
@@ -2040,12 +2048,15 @@ ifdef LIB_NAME
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 endif
 endif
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 fpc_cleanall: $(CLEANTARGET)
 fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 	-$(DEL) $(CLEANEXEFILES)
 endif
 endif
+ifdef ALL_CLEANEXEFILES
+	-$(DEL) $(ALL_CLEANEXEFILES)
+endif
 ifdef COMPILER_UNITTARGETDIR
 ifdef COMPILER_UNITTARGETDIR
 ifdef CLEANPPUFILES
 ifdef CLEANPPUFILES
 	-$(DEL) $(CLEANPPUFILES)
 	-$(DEL) $(CLEANPPUFILES)
@@ -2068,7 +2079,7 @@ ifneq ($(PPUEXT),.ppu)
 endif
 endif
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DEL) fpcmade.* Package.fpc *.fpm
 	-$(DEL) fpcmade.* Package.fpc *.fpm
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 ifdef AOUTEXT
 ifdef AOUTEXT
 	-$(DEL) *$(AOUTEXT)
 	-$(DEL) *$(AOUTEXT)

+ 13 - 2
rtl/haiku/Makefile

@@ -1191,6 +1191,7 @@ STATICLIBPREFIX=libp
 IMPORTLIBPREFIX=libimp
 IMPORTLIBPREFIX=libimp
 RSTEXT=.rsj
 RSTEXT=.rsj
 EXEDBGEXT=.dbg
 EXEDBGEXT=.dbg
+ALL_EXEEXT=.exe
 ifeq ($(OS_TARGET),go32v1)
 ifeq ($(OS_TARGET),go32v1)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 SHORTSUFFIX=v1
 SHORTSUFFIX=v1
@@ -1287,6 +1288,7 @@ ifeq ($(OS_TARGET),atari)
 EXEEXT=.ttp
 EXEEXT=.ttp
 SHORTSUFFIX=ata
 SHORTSUFFIX=ata
 endif
 endif
+ALL_EXEEXT+=.ttp
 ifeq ($(OS_TARGET),beos)
 ifeq ($(OS_TARGET),beos)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1313,6 +1315,7 @@ STATICLIBPREFIX=
 SHORTSUFFIX=nw
 SHORTSUFFIX=nw
 IMPORTLIBPREFIX=imp
 IMPORTLIBPREFIX=imp
 endif
 endif
+ALL_EXEEXT+=.nlm
 ifeq ($(OS_TARGET),netwlibc)
 ifeq ($(OS_TARGET),netwlibc)
 EXEEXT=.nlm
 EXEEXT=.nlm
 STATICLIBPREFIX=
 STATICLIBPREFIX=
@@ -1338,6 +1341,7 @@ EXEEXT=.gba
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=gba
 SHORTSUFFIX=gba
 endif
 endif
+ALL_EXEEXT+=.gba
 ifeq ($(OS_TARGET),symbian)
 ifeq ($(OS_TARGET),symbian)
 SHAREDLIBEXT=.dll
 SHAREDLIBEXT=.dll
 SHORTSUFFIX=symbian
 SHORTSUFFIX=symbian
@@ -1351,6 +1355,7 @@ EXEEXT=.dol
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=wii
 SHORTSUFFIX=wii
 endif
 endif
+ALL_EXEEXT+=.dol
 ifeq ($(OS_TARGET),aix)
 ifeq ($(OS_TARGET),aix)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1393,6 +1398,7 @@ OEXT=.rel
 endif
 endif
 SHORTSUFFIX=emb
 SHORTSUFFIX=emb
 endif
 endif
+ALL_EXEEXT+=.bin
 ifeq ($(OS_TARGET),win16)
 ifeq ($(OS_TARGET),win16)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 STATICLIBEXT=.a
 STATICLIBEXT=.a
@@ -1405,6 +1411,7 @@ endif
 ifeq ($(OS_TARGET),wasip1)
 ifeq ($(OS_TARGET),wasip1)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
+ALL_EXEEXT+=.wasm
 ifeq ($(OS_TARGET),wasip1threads)
 ifeq ($(OS_TARGET),wasip1threads)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
@@ -2032,6 +2039,7 @@ override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
 endif
 endif
 ifdef CLEAN_PROGRAMS
 ifdef CLEAN_PROGRAMS
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
+override ALL_CLEANEXEFILES+=$(foreach lEXEEXT,$(ALL_EXEEXT),$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(lEXEEXT), $(CLEAN_PROGRAMS))))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 endif
 endif
 ifdef CLEAN_UNITS
 ifdef CLEAN_UNITS
@@ -2070,12 +2078,15 @@ ifdef LIB_NAME
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 endif
 endif
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 fpc_cleanall: $(CLEANTARGET)
 fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 	-$(DEL) $(CLEANEXEFILES)
 endif
 endif
+ifdef ALL_CLEANEXEFILES
+	-$(DEL) $(ALL_CLEANEXEFILES)
+endif
 ifdef COMPILER_UNITTARGETDIR
 ifdef COMPILER_UNITTARGETDIR
 ifdef CLEANPPUFILES
 ifdef CLEANPPUFILES
 	-$(DEL) $(CLEANPPUFILES)
 	-$(DEL) $(CLEANPPUFILES)
@@ -2098,7 +2109,7 @@ ifneq ($(PPUEXT),.ppu)
 endif
 endif
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DEL) fpcmade.* Package.fpc *.fpm
 	-$(DEL) fpcmade.* Package.fpc *.fpm
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 ifdef AOUTEXT
 ifdef AOUTEXT
 	-$(DEL) *$(AOUTEXT)
 	-$(DEL) *$(AOUTEXT)

+ 13 - 2
rtl/human68k/Makefile

@@ -1150,6 +1150,7 @@ STATICLIBPREFIX=libp
 IMPORTLIBPREFIX=libimp
 IMPORTLIBPREFIX=libimp
 RSTEXT=.rsj
 RSTEXT=.rsj
 EXEDBGEXT=.dbg
 EXEDBGEXT=.dbg
+ALL_EXEEXT=.exe
 ifeq ($(OS_TARGET),go32v1)
 ifeq ($(OS_TARGET),go32v1)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 SHORTSUFFIX=v1
 SHORTSUFFIX=v1
@@ -1246,6 +1247,7 @@ ifeq ($(OS_TARGET),atari)
 EXEEXT=.ttp
 EXEEXT=.ttp
 SHORTSUFFIX=ata
 SHORTSUFFIX=ata
 endif
 endif
+ALL_EXEEXT+=.ttp
 ifeq ($(OS_TARGET),beos)
 ifeq ($(OS_TARGET),beos)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1272,6 +1274,7 @@ STATICLIBPREFIX=
 SHORTSUFFIX=nw
 SHORTSUFFIX=nw
 IMPORTLIBPREFIX=imp
 IMPORTLIBPREFIX=imp
 endif
 endif
+ALL_EXEEXT+=.nlm
 ifeq ($(OS_TARGET),netwlibc)
 ifeq ($(OS_TARGET),netwlibc)
 EXEEXT=.nlm
 EXEEXT=.nlm
 STATICLIBPREFIX=
 STATICLIBPREFIX=
@@ -1297,6 +1300,7 @@ EXEEXT=.gba
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=gba
 SHORTSUFFIX=gba
 endif
 endif
+ALL_EXEEXT+=.gba
 ifeq ($(OS_TARGET),symbian)
 ifeq ($(OS_TARGET),symbian)
 SHAREDLIBEXT=.dll
 SHAREDLIBEXT=.dll
 SHORTSUFFIX=symbian
 SHORTSUFFIX=symbian
@@ -1310,6 +1314,7 @@ EXEEXT=.dol
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=wii
 SHORTSUFFIX=wii
 endif
 endif
+ALL_EXEEXT+=.dol
 ifeq ($(OS_TARGET),aix)
 ifeq ($(OS_TARGET),aix)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1352,6 +1357,7 @@ OEXT=.rel
 endif
 endif
 SHORTSUFFIX=emb
 SHORTSUFFIX=emb
 endif
 endif
+ALL_EXEEXT+=.bin
 ifeq ($(OS_TARGET),win16)
 ifeq ($(OS_TARGET),win16)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 STATICLIBEXT=.a
 STATICLIBEXT=.a
@@ -1364,6 +1370,7 @@ endif
 ifeq ($(OS_TARGET),wasip1)
 ifeq ($(OS_TARGET),wasip1)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
+ALL_EXEEXT+=.wasm
 ifeq ($(OS_TARGET),wasip1threads)
 ifeq ($(OS_TARGET),wasip1threads)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
@@ -1991,6 +1998,7 @@ override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
 endif
 endif
 ifdef CLEAN_PROGRAMS
 ifdef CLEAN_PROGRAMS
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
+override ALL_CLEANEXEFILES+=$(foreach lEXEEXT,$(ALL_EXEEXT),$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(lEXEEXT), $(CLEAN_PROGRAMS))))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 endif
 endif
 ifdef CLEAN_UNITS
 ifdef CLEAN_UNITS
@@ -2029,12 +2037,15 @@ ifdef LIB_NAME
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 endif
 endif
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 fpc_cleanall: $(CLEANTARGET)
 fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 	-$(DEL) $(CLEANEXEFILES)
 endif
 endif
+ifdef ALL_CLEANEXEFILES
+	-$(DEL) $(ALL_CLEANEXEFILES)
+endif
 ifdef COMPILER_UNITTARGETDIR
 ifdef COMPILER_UNITTARGETDIR
 ifdef CLEANPPUFILES
 ifdef CLEANPPUFILES
 	-$(DEL) $(CLEANPPUFILES)
 	-$(DEL) $(CLEANPPUFILES)
@@ -2057,7 +2068,7 @@ ifneq ($(PPUEXT),.ppu)
 endif
 endif
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DEL) fpcmade.* Package.fpc *.fpm
 	-$(DEL) fpcmade.* Package.fpc *.fpm
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 ifdef AOUTEXT
 ifdef AOUTEXT
 	-$(DEL) *$(AOUTEXT)
 	-$(DEL) *$(AOUTEXT)

+ 13 - 2
rtl/java/Makefile

@@ -1148,6 +1148,7 @@ STATICLIBPREFIX=libp
 IMPORTLIBPREFIX=libimp
 IMPORTLIBPREFIX=libimp
 RSTEXT=.rsj
 RSTEXT=.rsj
 EXEDBGEXT=.dbg
 EXEDBGEXT=.dbg
+ALL_EXEEXT=.exe
 ifeq ($(OS_TARGET),go32v1)
 ifeq ($(OS_TARGET),go32v1)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 SHORTSUFFIX=v1
 SHORTSUFFIX=v1
@@ -1244,6 +1245,7 @@ ifeq ($(OS_TARGET),atari)
 EXEEXT=.ttp
 EXEEXT=.ttp
 SHORTSUFFIX=ata
 SHORTSUFFIX=ata
 endif
 endif
+ALL_EXEEXT+=.ttp
 ifeq ($(OS_TARGET),beos)
 ifeq ($(OS_TARGET),beos)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1270,6 +1272,7 @@ STATICLIBPREFIX=
 SHORTSUFFIX=nw
 SHORTSUFFIX=nw
 IMPORTLIBPREFIX=imp
 IMPORTLIBPREFIX=imp
 endif
 endif
+ALL_EXEEXT+=.nlm
 ifeq ($(OS_TARGET),netwlibc)
 ifeq ($(OS_TARGET),netwlibc)
 EXEEXT=.nlm
 EXEEXT=.nlm
 STATICLIBPREFIX=
 STATICLIBPREFIX=
@@ -1295,6 +1298,7 @@ EXEEXT=.gba
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=gba
 SHORTSUFFIX=gba
 endif
 endif
+ALL_EXEEXT+=.gba
 ifeq ($(OS_TARGET),symbian)
 ifeq ($(OS_TARGET),symbian)
 SHAREDLIBEXT=.dll
 SHAREDLIBEXT=.dll
 SHORTSUFFIX=symbian
 SHORTSUFFIX=symbian
@@ -1308,6 +1312,7 @@ EXEEXT=.dol
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=wii
 SHORTSUFFIX=wii
 endif
 endif
+ALL_EXEEXT+=.dol
 ifeq ($(OS_TARGET),aix)
 ifeq ($(OS_TARGET),aix)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1350,6 +1355,7 @@ OEXT=.rel
 endif
 endif
 SHORTSUFFIX=emb
 SHORTSUFFIX=emb
 endif
 endif
+ALL_EXEEXT+=.bin
 ifeq ($(OS_TARGET),win16)
 ifeq ($(OS_TARGET),win16)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 STATICLIBEXT=.a
 STATICLIBEXT=.a
@@ -1362,6 +1368,7 @@ endif
 ifeq ($(OS_TARGET),wasip1)
 ifeq ($(OS_TARGET),wasip1)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
+ALL_EXEEXT+=.wasm
 ifeq ($(OS_TARGET),wasip1threads)
 ifeq ($(OS_TARGET),wasip1threads)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
@@ -1962,6 +1969,7 @@ override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
 endif
 endif
 ifdef CLEAN_PROGRAMS
 ifdef CLEAN_PROGRAMS
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
+override ALL_CLEANEXEFILES+=$(foreach lEXEEXT,$(ALL_EXEEXT),$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(lEXEEXT), $(CLEAN_PROGRAMS))))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 endif
 endif
 ifdef CLEAN_UNITS
 ifdef CLEAN_UNITS
@@ -2000,12 +2008,15 @@ ifdef LIB_NAME
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 endif
 endif
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 fpc_cleanall: $(CLEANTARGET)
 fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 	-$(DEL) $(CLEANEXEFILES)
 endif
 endif
+ifdef ALL_CLEANEXEFILES
+	-$(DEL) $(ALL_CLEANEXEFILES)
+endif
 ifdef COMPILER_UNITTARGETDIR
 ifdef COMPILER_UNITTARGETDIR
 ifdef CLEANPPUFILES
 ifdef CLEANPPUFILES
 	-$(DEL) $(CLEANPPUFILES)
 	-$(DEL) $(CLEANPPUFILES)
@@ -2028,7 +2039,7 @@ ifneq ($(PPUEXT),.ppu)
 endif
 endif
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DEL) fpcmade.* Package.fpc *.fpm
 	-$(DEL) fpcmade.* Package.fpc *.fpm
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 ifdef AOUTEXT
 ifdef AOUTEXT
 	-$(DEL) *$(AOUTEXT)
 	-$(DEL) *$(AOUTEXT)

+ 13 - 2
rtl/linux/Makefile

@@ -1757,6 +1757,7 @@ STATICLIBPREFIX=libp
 IMPORTLIBPREFIX=libimp
 IMPORTLIBPREFIX=libimp
 RSTEXT=.rsj
 RSTEXT=.rsj
 EXEDBGEXT=.dbg
 EXEDBGEXT=.dbg
+ALL_EXEEXT=.exe
 ifeq ($(OS_TARGET),go32v1)
 ifeq ($(OS_TARGET),go32v1)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 SHORTSUFFIX=v1
 SHORTSUFFIX=v1
@@ -1853,6 +1854,7 @@ ifeq ($(OS_TARGET),atari)
 EXEEXT=.ttp
 EXEEXT=.ttp
 SHORTSUFFIX=ata
 SHORTSUFFIX=ata
 endif
 endif
+ALL_EXEEXT+=.ttp
 ifeq ($(OS_TARGET),beos)
 ifeq ($(OS_TARGET),beos)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1879,6 +1881,7 @@ STATICLIBPREFIX=
 SHORTSUFFIX=nw
 SHORTSUFFIX=nw
 IMPORTLIBPREFIX=imp
 IMPORTLIBPREFIX=imp
 endif
 endif
+ALL_EXEEXT+=.nlm
 ifeq ($(OS_TARGET),netwlibc)
 ifeq ($(OS_TARGET),netwlibc)
 EXEEXT=.nlm
 EXEEXT=.nlm
 STATICLIBPREFIX=
 STATICLIBPREFIX=
@@ -1904,6 +1907,7 @@ EXEEXT=.gba
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=gba
 SHORTSUFFIX=gba
 endif
 endif
+ALL_EXEEXT+=.gba
 ifeq ($(OS_TARGET),symbian)
 ifeq ($(OS_TARGET),symbian)
 SHAREDLIBEXT=.dll
 SHAREDLIBEXT=.dll
 SHORTSUFFIX=symbian
 SHORTSUFFIX=symbian
@@ -1917,6 +1921,7 @@ EXEEXT=.dol
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=wii
 SHORTSUFFIX=wii
 endif
 endif
+ALL_EXEEXT+=.dol
 ifeq ($(OS_TARGET),aix)
 ifeq ($(OS_TARGET),aix)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1959,6 +1964,7 @@ OEXT=.rel
 endif
 endif
 SHORTSUFFIX=emb
 SHORTSUFFIX=emb
 endif
 endif
+ALL_EXEEXT+=.bin
 ifeq ($(OS_TARGET),win16)
 ifeq ($(OS_TARGET),win16)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 STATICLIBEXT=.a
 STATICLIBEXT=.a
@@ -1971,6 +1977,7 @@ endif
 ifeq ($(OS_TARGET),wasip1)
 ifeq ($(OS_TARGET),wasip1)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
+ALL_EXEEXT+=.wasm
 ifeq ($(OS_TARGET),wasip1threads)
 ifeq ($(OS_TARGET),wasip1threads)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
@@ -2609,6 +2616,7 @@ override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
 endif
 endif
 ifdef CLEAN_PROGRAMS
 ifdef CLEAN_PROGRAMS
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
+override ALL_CLEANEXEFILES+=$(foreach lEXEEXT,$(ALL_EXEEXT),$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(lEXEEXT), $(CLEAN_PROGRAMS))))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 endif
 endif
 ifdef CLEAN_UNITS
 ifdef CLEAN_UNITS
@@ -2647,12 +2655,15 @@ ifdef LIB_NAME
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 endif
 endif
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 fpc_cleanall: $(CLEANTARGET)
 fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 	-$(DEL) $(CLEANEXEFILES)
 endif
 endif
+ifdef ALL_CLEANEXEFILES
+	-$(DEL) $(ALL_CLEANEXEFILES)
+endif
 ifdef COMPILER_UNITTARGETDIR
 ifdef COMPILER_UNITTARGETDIR
 ifdef CLEANPPUFILES
 ifdef CLEANPPUFILES
 	-$(DEL) $(CLEANPPUFILES)
 	-$(DEL) $(CLEANPPUFILES)
@@ -2675,7 +2686,7 @@ ifneq ($(PPUEXT),.ppu)
 endif
 endif
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DEL) fpcmade.* Package.fpc *.fpm
 	-$(DEL) fpcmade.* Package.fpc *.fpm
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 ifdef AOUTEXT
 ifdef AOUTEXT
 	-$(DEL) *$(AOUTEXT)
 	-$(DEL) *$(AOUTEXT)

+ 13 - 2
rtl/morphos/Makefile

@@ -1149,6 +1149,7 @@ STATICLIBPREFIX=libp
 IMPORTLIBPREFIX=libimp
 IMPORTLIBPREFIX=libimp
 RSTEXT=.rsj
 RSTEXT=.rsj
 EXEDBGEXT=.dbg
 EXEDBGEXT=.dbg
+ALL_EXEEXT=.exe
 ifeq ($(OS_TARGET),go32v1)
 ifeq ($(OS_TARGET),go32v1)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 SHORTSUFFIX=v1
 SHORTSUFFIX=v1
@@ -1245,6 +1246,7 @@ ifeq ($(OS_TARGET),atari)
 EXEEXT=.ttp
 EXEEXT=.ttp
 SHORTSUFFIX=ata
 SHORTSUFFIX=ata
 endif
 endif
+ALL_EXEEXT+=.ttp
 ifeq ($(OS_TARGET),beos)
 ifeq ($(OS_TARGET),beos)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1271,6 +1273,7 @@ STATICLIBPREFIX=
 SHORTSUFFIX=nw
 SHORTSUFFIX=nw
 IMPORTLIBPREFIX=imp
 IMPORTLIBPREFIX=imp
 endif
 endif
+ALL_EXEEXT+=.nlm
 ifeq ($(OS_TARGET),netwlibc)
 ifeq ($(OS_TARGET),netwlibc)
 EXEEXT=.nlm
 EXEEXT=.nlm
 STATICLIBPREFIX=
 STATICLIBPREFIX=
@@ -1296,6 +1299,7 @@ EXEEXT=.gba
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=gba
 SHORTSUFFIX=gba
 endif
 endif
+ALL_EXEEXT+=.gba
 ifeq ($(OS_TARGET),symbian)
 ifeq ($(OS_TARGET),symbian)
 SHAREDLIBEXT=.dll
 SHAREDLIBEXT=.dll
 SHORTSUFFIX=symbian
 SHORTSUFFIX=symbian
@@ -1309,6 +1313,7 @@ EXEEXT=.dol
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=wii
 SHORTSUFFIX=wii
 endif
 endif
+ALL_EXEEXT+=.dol
 ifeq ($(OS_TARGET),aix)
 ifeq ($(OS_TARGET),aix)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1351,6 +1356,7 @@ OEXT=.rel
 endif
 endif
 SHORTSUFFIX=emb
 SHORTSUFFIX=emb
 endif
 endif
+ALL_EXEEXT+=.bin
 ifeq ($(OS_TARGET),win16)
 ifeq ($(OS_TARGET),win16)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 STATICLIBEXT=.a
 STATICLIBEXT=.a
@@ -1363,6 +1369,7 @@ endif
 ifeq ($(OS_TARGET),wasip1)
 ifeq ($(OS_TARGET),wasip1)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
+ALL_EXEEXT+=.wasm
 ifeq ($(OS_TARGET),wasip1threads)
 ifeq ($(OS_TARGET),wasip1threads)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
@@ -1963,6 +1970,7 @@ override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
 endif
 endif
 ifdef CLEAN_PROGRAMS
 ifdef CLEAN_PROGRAMS
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
+override ALL_CLEANEXEFILES+=$(foreach lEXEEXT,$(ALL_EXEEXT),$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(lEXEEXT), $(CLEAN_PROGRAMS))))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 endif
 endif
 ifdef CLEAN_UNITS
 ifdef CLEAN_UNITS
@@ -2001,12 +2009,15 @@ ifdef LIB_NAME
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 endif
 endif
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 fpc_cleanall: $(CLEANTARGET)
 fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 	-$(DEL) $(CLEANEXEFILES)
 endif
 endif
+ifdef ALL_CLEANEXEFILES
+	-$(DEL) $(ALL_CLEANEXEFILES)
+endif
 ifdef COMPILER_UNITTARGETDIR
 ifdef COMPILER_UNITTARGETDIR
 ifdef CLEANPPUFILES
 ifdef CLEANPPUFILES
 	-$(DEL) $(CLEANPPUFILES)
 	-$(DEL) $(CLEANPPUFILES)
@@ -2029,7 +2040,7 @@ ifneq ($(PPUEXT),.ppu)
 endif
 endif
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DEL) fpcmade.* Package.fpc *.fpm
 	-$(DEL) fpcmade.* Package.fpc *.fpm
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 ifdef AOUTEXT
 ifdef AOUTEXT
 	-$(DEL) *$(AOUTEXT)
 	-$(DEL) *$(AOUTEXT)

+ 13 - 2
rtl/msdos/Makefile

@@ -1153,6 +1153,7 @@ STATICLIBPREFIX=libp
 IMPORTLIBPREFIX=libimp
 IMPORTLIBPREFIX=libimp
 RSTEXT=.rsj
 RSTEXT=.rsj
 EXEDBGEXT=.dbg
 EXEDBGEXT=.dbg
+ALL_EXEEXT=.exe
 ifeq ($(OS_TARGET),go32v1)
 ifeq ($(OS_TARGET),go32v1)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 SHORTSUFFIX=v1
 SHORTSUFFIX=v1
@@ -1249,6 +1250,7 @@ ifeq ($(OS_TARGET),atari)
 EXEEXT=.ttp
 EXEEXT=.ttp
 SHORTSUFFIX=ata
 SHORTSUFFIX=ata
 endif
 endif
+ALL_EXEEXT+=.ttp
 ifeq ($(OS_TARGET),beos)
 ifeq ($(OS_TARGET),beos)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1275,6 +1277,7 @@ STATICLIBPREFIX=
 SHORTSUFFIX=nw
 SHORTSUFFIX=nw
 IMPORTLIBPREFIX=imp
 IMPORTLIBPREFIX=imp
 endif
 endif
+ALL_EXEEXT+=.nlm
 ifeq ($(OS_TARGET),netwlibc)
 ifeq ($(OS_TARGET),netwlibc)
 EXEEXT=.nlm
 EXEEXT=.nlm
 STATICLIBPREFIX=
 STATICLIBPREFIX=
@@ -1300,6 +1303,7 @@ EXEEXT=.gba
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=gba
 SHORTSUFFIX=gba
 endif
 endif
+ALL_EXEEXT+=.gba
 ifeq ($(OS_TARGET),symbian)
 ifeq ($(OS_TARGET),symbian)
 SHAREDLIBEXT=.dll
 SHAREDLIBEXT=.dll
 SHORTSUFFIX=symbian
 SHORTSUFFIX=symbian
@@ -1313,6 +1317,7 @@ EXEEXT=.dol
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=wii
 SHORTSUFFIX=wii
 endif
 endif
+ALL_EXEEXT+=.dol
 ifeq ($(OS_TARGET),aix)
 ifeq ($(OS_TARGET),aix)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1355,6 +1360,7 @@ OEXT=.rel
 endif
 endif
 SHORTSUFFIX=emb
 SHORTSUFFIX=emb
 endif
 endif
+ALL_EXEEXT+=.bin
 ifeq ($(OS_TARGET),win16)
 ifeq ($(OS_TARGET),win16)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 STATICLIBEXT=.a
 STATICLIBEXT=.a
@@ -1367,6 +1373,7 @@ endif
 ifeq ($(OS_TARGET),wasip1)
 ifeq ($(OS_TARGET),wasip1)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
+ALL_EXEEXT+=.wasm
 ifeq ($(OS_TARGET),wasip1threads)
 ifeq ($(OS_TARGET),wasip1threads)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
@@ -1994,6 +2001,7 @@ override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
 endif
 endif
 ifdef CLEAN_PROGRAMS
 ifdef CLEAN_PROGRAMS
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
+override ALL_CLEANEXEFILES+=$(foreach lEXEEXT,$(ALL_EXEEXT),$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(lEXEEXT), $(CLEAN_PROGRAMS))))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 endif
 endif
 ifdef CLEAN_UNITS
 ifdef CLEAN_UNITS
@@ -2032,12 +2040,15 @@ ifdef LIB_NAME
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 endif
 endif
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 fpc_cleanall: $(CLEANTARGET)
 fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 	-$(DEL) $(CLEANEXEFILES)
 endif
 endif
+ifdef ALL_CLEANEXEFILES
+	-$(DEL) $(ALL_CLEANEXEFILES)
+endif
 ifdef COMPILER_UNITTARGETDIR
 ifdef COMPILER_UNITTARGETDIR
 ifdef CLEANPPUFILES
 ifdef CLEANPPUFILES
 	-$(DEL) $(CLEANPPUFILES)
 	-$(DEL) $(CLEANPPUFILES)
@@ -2060,7 +2071,7 @@ ifneq ($(PPUEXT),.ppu)
 endif
 endif
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DEL) fpcmade.* Package.fpc *.fpm
 	-$(DEL) fpcmade.* Package.fpc *.fpm
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 ifdef AOUTEXT
 ifdef AOUTEXT
 	-$(DEL) *$(AOUTEXT)
 	-$(DEL) *$(AOUTEXT)

+ 13 - 2
rtl/msxdos/Makefile

@@ -1150,6 +1150,7 @@ STATICLIBPREFIX=libp
 IMPORTLIBPREFIX=libimp
 IMPORTLIBPREFIX=libimp
 RSTEXT=.rsj
 RSTEXT=.rsj
 EXEDBGEXT=.dbg
 EXEDBGEXT=.dbg
+ALL_EXEEXT=.exe
 ifeq ($(OS_TARGET),go32v1)
 ifeq ($(OS_TARGET),go32v1)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 SHORTSUFFIX=v1
 SHORTSUFFIX=v1
@@ -1246,6 +1247,7 @@ ifeq ($(OS_TARGET),atari)
 EXEEXT=.ttp
 EXEEXT=.ttp
 SHORTSUFFIX=ata
 SHORTSUFFIX=ata
 endif
 endif
+ALL_EXEEXT+=.ttp
 ifeq ($(OS_TARGET),beos)
 ifeq ($(OS_TARGET),beos)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1272,6 +1274,7 @@ STATICLIBPREFIX=
 SHORTSUFFIX=nw
 SHORTSUFFIX=nw
 IMPORTLIBPREFIX=imp
 IMPORTLIBPREFIX=imp
 endif
 endif
+ALL_EXEEXT+=.nlm
 ifeq ($(OS_TARGET),netwlibc)
 ifeq ($(OS_TARGET),netwlibc)
 EXEEXT=.nlm
 EXEEXT=.nlm
 STATICLIBPREFIX=
 STATICLIBPREFIX=
@@ -1297,6 +1300,7 @@ EXEEXT=.gba
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=gba
 SHORTSUFFIX=gba
 endif
 endif
+ALL_EXEEXT+=.gba
 ifeq ($(OS_TARGET),symbian)
 ifeq ($(OS_TARGET),symbian)
 SHAREDLIBEXT=.dll
 SHAREDLIBEXT=.dll
 SHORTSUFFIX=symbian
 SHORTSUFFIX=symbian
@@ -1310,6 +1314,7 @@ EXEEXT=.dol
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=wii
 SHORTSUFFIX=wii
 endif
 endif
+ALL_EXEEXT+=.dol
 ifeq ($(OS_TARGET),aix)
 ifeq ($(OS_TARGET),aix)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1352,6 +1357,7 @@ OEXT=.rel
 endif
 endif
 SHORTSUFFIX=emb
 SHORTSUFFIX=emb
 endif
 endif
+ALL_EXEEXT+=.bin
 ifeq ($(OS_TARGET),win16)
 ifeq ($(OS_TARGET),win16)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 STATICLIBEXT=.a
 STATICLIBEXT=.a
@@ -1364,6 +1370,7 @@ endif
 ifeq ($(OS_TARGET),wasip1)
 ifeq ($(OS_TARGET),wasip1)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
+ALL_EXEEXT+=.wasm
 ifeq ($(OS_TARGET),wasip1threads)
 ifeq ($(OS_TARGET),wasip1threads)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
@@ -1964,6 +1971,7 @@ override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
 endif
 endif
 ifdef CLEAN_PROGRAMS
 ifdef CLEAN_PROGRAMS
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
+override ALL_CLEANEXEFILES+=$(foreach lEXEEXT,$(ALL_EXEEXT),$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(lEXEEXT), $(CLEAN_PROGRAMS))))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 endif
 endif
 ifdef CLEAN_UNITS
 ifdef CLEAN_UNITS
@@ -2002,12 +2010,15 @@ ifdef LIB_NAME
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 endif
 endif
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 fpc_cleanall: $(CLEANTARGET)
 fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 	-$(DEL) $(CLEANEXEFILES)
 endif
 endif
+ifdef ALL_CLEANEXEFILES
+	-$(DEL) $(ALL_CLEANEXEFILES)
+endif
 ifdef COMPILER_UNITTARGETDIR
 ifdef COMPILER_UNITTARGETDIR
 ifdef CLEANPPUFILES
 ifdef CLEANPPUFILES
 	-$(DEL) $(CLEANPPUFILES)
 	-$(DEL) $(CLEANPPUFILES)
@@ -2030,7 +2041,7 @@ ifneq ($(PPUEXT),.ppu)
 endif
 endif
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DEL) fpcmade.* Package.fpc *.fpm
 	-$(DEL) fpcmade.* Package.fpc *.fpm
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 ifdef AOUTEXT
 ifdef AOUTEXT
 	-$(DEL) *$(AOUTEXT)
 	-$(DEL) *$(AOUTEXT)

+ 13 - 2
rtl/nativent/Makefile

@@ -1156,6 +1156,7 @@ STATICLIBPREFIX=libp
 IMPORTLIBPREFIX=libimp
 IMPORTLIBPREFIX=libimp
 RSTEXT=.rsj
 RSTEXT=.rsj
 EXEDBGEXT=.dbg
 EXEDBGEXT=.dbg
+ALL_EXEEXT=.exe
 ifeq ($(OS_TARGET),go32v1)
 ifeq ($(OS_TARGET),go32v1)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 SHORTSUFFIX=v1
 SHORTSUFFIX=v1
@@ -1252,6 +1253,7 @@ ifeq ($(OS_TARGET),atari)
 EXEEXT=.ttp
 EXEEXT=.ttp
 SHORTSUFFIX=ata
 SHORTSUFFIX=ata
 endif
 endif
+ALL_EXEEXT+=.ttp
 ifeq ($(OS_TARGET),beos)
 ifeq ($(OS_TARGET),beos)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1278,6 +1280,7 @@ STATICLIBPREFIX=
 SHORTSUFFIX=nw
 SHORTSUFFIX=nw
 IMPORTLIBPREFIX=imp
 IMPORTLIBPREFIX=imp
 endif
 endif
+ALL_EXEEXT+=.nlm
 ifeq ($(OS_TARGET),netwlibc)
 ifeq ($(OS_TARGET),netwlibc)
 EXEEXT=.nlm
 EXEEXT=.nlm
 STATICLIBPREFIX=
 STATICLIBPREFIX=
@@ -1303,6 +1306,7 @@ EXEEXT=.gba
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=gba
 SHORTSUFFIX=gba
 endif
 endif
+ALL_EXEEXT+=.gba
 ifeq ($(OS_TARGET),symbian)
 ifeq ($(OS_TARGET),symbian)
 SHAREDLIBEXT=.dll
 SHAREDLIBEXT=.dll
 SHORTSUFFIX=symbian
 SHORTSUFFIX=symbian
@@ -1316,6 +1320,7 @@ EXEEXT=.dol
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=wii
 SHORTSUFFIX=wii
 endif
 endif
+ALL_EXEEXT+=.dol
 ifeq ($(OS_TARGET),aix)
 ifeq ($(OS_TARGET),aix)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1358,6 +1363,7 @@ OEXT=.rel
 endif
 endif
 SHORTSUFFIX=emb
 SHORTSUFFIX=emb
 endif
 endif
+ALL_EXEEXT+=.bin
 ifeq ($(OS_TARGET),win16)
 ifeq ($(OS_TARGET),win16)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 STATICLIBEXT=.a
 STATICLIBEXT=.a
@@ -1370,6 +1376,7 @@ endif
 ifeq ($(OS_TARGET),wasip1)
 ifeq ($(OS_TARGET),wasip1)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
+ALL_EXEEXT+=.wasm
 ifeq ($(OS_TARGET),wasip1threads)
 ifeq ($(OS_TARGET),wasip1threads)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
@@ -1970,6 +1977,7 @@ override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
 endif
 endif
 ifdef CLEAN_PROGRAMS
 ifdef CLEAN_PROGRAMS
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
+override ALL_CLEANEXEFILES+=$(foreach lEXEEXT,$(ALL_EXEEXT),$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(lEXEEXT), $(CLEAN_PROGRAMS))))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 endif
 endif
 ifdef CLEAN_UNITS
 ifdef CLEAN_UNITS
@@ -2008,12 +2016,15 @@ ifdef LIB_NAME
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 endif
 endif
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 fpc_cleanall: $(CLEANTARGET)
 fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 	-$(DEL) $(CLEANEXEFILES)
 endif
 endif
+ifdef ALL_CLEANEXEFILES
+	-$(DEL) $(ALL_CLEANEXEFILES)
+endif
 ifdef COMPILER_UNITTARGETDIR
 ifdef COMPILER_UNITTARGETDIR
 ifdef CLEANPPUFILES
 ifdef CLEANPPUFILES
 	-$(DEL) $(CLEANPPUFILES)
 	-$(DEL) $(CLEANPPUFILES)
@@ -2036,7 +2047,7 @@ ifneq ($(PPUEXT),.ppu)
 endif
 endif
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DEL) fpcmade.* Package.fpc *.fpm
 	-$(DEL) fpcmade.* Package.fpc *.fpm
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 ifdef AOUTEXT
 ifdef AOUTEXT
 	-$(DEL) *$(AOUTEXT)
 	-$(DEL) *$(AOUTEXT)

+ 13 - 2
rtl/nds/Makefile

@@ -1151,6 +1151,7 @@ STATICLIBPREFIX=libp
 IMPORTLIBPREFIX=libimp
 IMPORTLIBPREFIX=libimp
 RSTEXT=.rsj
 RSTEXT=.rsj
 EXEDBGEXT=.dbg
 EXEDBGEXT=.dbg
+ALL_EXEEXT=.exe
 ifeq ($(OS_TARGET),go32v1)
 ifeq ($(OS_TARGET),go32v1)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 SHORTSUFFIX=v1
 SHORTSUFFIX=v1
@@ -1247,6 +1248,7 @@ ifeq ($(OS_TARGET),atari)
 EXEEXT=.ttp
 EXEEXT=.ttp
 SHORTSUFFIX=ata
 SHORTSUFFIX=ata
 endif
 endif
+ALL_EXEEXT+=.ttp
 ifeq ($(OS_TARGET),beos)
 ifeq ($(OS_TARGET),beos)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1273,6 +1275,7 @@ STATICLIBPREFIX=
 SHORTSUFFIX=nw
 SHORTSUFFIX=nw
 IMPORTLIBPREFIX=imp
 IMPORTLIBPREFIX=imp
 endif
 endif
+ALL_EXEEXT+=.nlm
 ifeq ($(OS_TARGET),netwlibc)
 ifeq ($(OS_TARGET),netwlibc)
 EXEEXT=.nlm
 EXEEXT=.nlm
 STATICLIBPREFIX=
 STATICLIBPREFIX=
@@ -1298,6 +1301,7 @@ EXEEXT=.gba
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=gba
 SHORTSUFFIX=gba
 endif
 endif
+ALL_EXEEXT+=.gba
 ifeq ($(OS_TARGET),symbian)
 ifeq ($(OS_TARGET),symbian)
 SHAREDLIBEXT=.dll
 SHAREDLIBEXT=.dll
 SHORTSUFFIX=symbian
 SHORTSUFFIX=symbian
@@ -1311,6 +1315,7 @@ EXEEXT=.dol
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=wii
 SHORTSUFFIX=wii
 endif
 endif
+ALL_EXEEXT+=.dol
 ifeq ($(OS_TARGET),aix)
 ifeq ($(OS_TARGET),aix)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1353,6 +1358,7 @@ OEXT=.rel
 endif
 endif
 SHORTSUFFIX=emb
 SHORTSUFFIX=emb
 endif
 endif
+ALL_EXEEXT+=.bin
 ifeq ($(OS_TARGET),win16)
 ifeq ($(OS_TARGET),win16)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 STATICLIBEXT=.a
 STATICLIBEXT=.a
@@ -1365,6 +1371,7 @@ endif
 ifeq ($(OS_TARGET),wasip1)
 ifeq ($(OS_TARGET),wasip1)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
+ALL_EXEEXT+=.wasm
 ifeq ($(OS_TARGET),wasip1threads)
 ifeq ($(OS_TARGET),wasip1threads)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
@@ -1992,6 +1999,7 @@ override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
 endif
 endif
 ifdef CLEAN_PROGRAMS
 ifdef CLEAN_PROGRAMS
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
+override ALL_CLEANEXEFILES+=$(foreach lEXEEXT,$(ALL_EXEEXT),$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(lEXEEXT), $(CLEAN_PROGRAMS))))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 endif
 endif
 ifdef CLEAN_UNITS
 ifdef CLEAN_UNITS
@@ -2030,12 +2038,15 @@ ifdef LIB_NAME
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 endif
 endif
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 fpc_cleanall: $(CLEANTARGET)
 fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 	-$(DEL) $(CLEANEXEFILES)
 endif
 endif
+ifdef ALL_CLEANEXEFILES
+	-$(DEL) $(ALL_CLEANEXEFILES)
+endif
 ifdef COMPILER_UNITTARGETDIR
 ifdef COMPILER_UNITTARGETDIR
 ifdef CLEANPPUFILES
 ifdef CLEANPPUFILES
 	-$(DEL) $(CLEANPPUFILES)
 	-$(DEL) $(CLEANPPUFILES)
@@ -2058,7 +2069,7 @@ ifneq ($(PPUEXT),.ppu)
 endif
 endif
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DEL) fpcmade.* Package.fpc *.fpm
 	-$(DEL) fpcmade.* Package.fpc *.fpm
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 ifdef AOUTEXT
 ifdef AOUTEXT
 	-$(DEL) *$(AOUTEXT)
 	-$(DEL) *$(AOUTEXT)

+ 13 - 2
rtl/netbsd/Makefile

@@ -1261,6 +1261,7 @@ STATICLIBPREFIX=libp
 IMPORTLIBPREFIX=libimp
 IMPORTLIBPREFIX=libimp
 RSTEXT=.rsj
 RSTEXT=.rsj
 EXEDBGEXT=.dbg
 EXEDBGEXT=.dbg
+ALL_EXEEXT=.exe
 ifeq ($(OS_TARGET),go32v1)
 ifeq ($(OS_TARGET),go32v1)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 SHORTSUFFIX=v1
 SHORTSUFFIX=v1
@@ -1357,6 +1358,7 @@ ifeq ($(OS_TARGET),atari)
 EXEEXT=.ttp
 EXEEXT=.ttp
 SHORTSUFFIX=ata
 SHORTSUFFIX=ata
 endif
 endif
+ALL_EXEEXT+=.ttp
 ifeq ($(OS_TARGET),beos)
 ifeq ($(OS_TARGET),beos)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1383,6 +1385,7 @@ STATICLIBPREFIX=
 SHORTSUFFIX=nw
 SHORTSUFFIX=nw
 IMPORTLIBPREFIX=imp
 IMPORTLIBPREFIX=imp
 endif
 endif
+ALL_EXEEXT+=.nlm
 ifeq ($(OS_TARGET),netwlibc)
 ifeq ($(OS_TARGET),netwlibc)
 EXEEXT=.nlm
 EXEEXT=.nlm
 STATICLIBPREFIX=
 STATICLIBPREFIX=
@@ -1408,6 +1411,7 @@ EXEEXT=.gba
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=gba
 SHORTSUFFIX=gba
 endif
 endif
+ALL_EXEEXT+=.gba
 ifeq ($(OS_TARGET),symbian)
 ifeq ($(OS_TARGET),symbian)
 SHAREDLIBEXT=.dll
 SHAREDLIBEXT=.dll
 SHORTSUFFIX=symbian
 SHORTSUFFIX=symbian
@@ -1421,6 +1425,7 @@ EXEEXT=.dol
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=wii
 SHORTSUFFIX=wii
 endif
 endif
+ALL_EXEEXT+=.dol
 ifeq ($(OS_TARGET),aix)
 ifeq ($(OS_TARGET),aix)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1463,6 +1468,7 @@ OEXT=.rel
 endif
 endif
 SHORTSUFFIX=emb
 SHORTSUFFIX=emb
 endif
 endif
+ALL_EXEEXT+=.bin
 ifeq ($(OS_TARGET),win16)
 ifeq ($(OS_TARGET),win16)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 STATICLIBEXT=.a
 STATICLIBEXT=.a
@@ -1475,6 +1481,7 @@ endif
 ifeq ($(OS_TARGET),wasip1)
 ifeq ($(OS_TARGET),wasip1)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
+ALL_EXEEXT+=.wasm
 ifeq ($(OS_TARGET),wasip1threads)
 ifeq ($(OS_TARGET),wasip1threads)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
@@ -2102,6 +2109,7 @@ override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
 endif
 endif
 ifdef CLEAN_PROGRAMS
 ifdef CLEAN_PROGRAMS
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
+override ALL_CLEANEXEFILES+=$(foreach lEXEEXT,$(ALL_EXEEXT),$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(lEXEEXT), $(CLEAN_PROGRAMS))))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 endif
 endif
 ifdef CLEAN_UNITS
 ifdef CLEAN_UNITS
@@ -2140,12 +2148,15 @@ ifdef LIB_NAME
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 endif
 endif
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 fpc_cleanall: $(CLEANTARGET)
 fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 	-$(DEL) $(CLEANEXEFILES)
 endif
 endif
+ifdef ALL_CLEANEXEFILES
+	-$(DEL) $(ALL_CLEANEXEFILES)
+endif
 ifdef COMPILER_UNITTARGETDIR
 ifdef COMPILER_UNITTARGETDIR
 ifdef CLEANPPUFILES
 ifdef CLEANPPUFILES
 	-$(DEL) $(CLEANPPUFILES)
 	-$(DEL) $(CLEANPPUFILES)
@@ -2168,7 +2179,7 @@ ifneq ($(PPUEXT),.ppu)
 endif
 endif
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DEL) fpcmade.* Package.fpc *.fpm
 	-$(DEL) fpcmade.* Package.fpc *.fpm
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 ifdef AOUTEXT
 ifdef AOUTEXT
 	-$(DEL) *$(AOUTEXT)
 	-$(DEL) *$(AOUTEXT)

+ 13 - 2
rtl/netware/Makefile

@@ -1166,6 +1166,7 @@ STATICLIBPREFIX=libp
 IMPORTLIBPREFIX=libimp
 IMPORTLIBPREFIX=libimp
 RSTEXT=.rsj
 RSTEXT=.rsj
 EXEDBGEXT=.dbg
 EXEDBGEXT=.dbg
+ALL_EXEEXT=.exe
 ifeq ($(OS_TARGET),go32v1)
 ifeq ($(OS_TARGET),go32v1)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 SHORTSUFFIX=v1
 SHORTSUFFIX=v1
@@ -1262,6 +1263,7 @@ ifeq ($(OS_TARGET),atari)
 EXEEXT=.ttp
 EXEEXT=.ttp
 SHORTSUFFIX=ata
 SHORTSUFFIX=ata
 endif
 endif
+ALL_EXEEXT+=.ttp
 ifeq ($(OS_TARGET),beos)
 ifeq ($(OS_TARGET),beos)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1288,6 +1290,7 @@ STATICLIBPREFIX=
 SHORTSUFFIX=nw
 SHORTSUFFIX=nw
 IMPORTLIBPREFIX=imp
 IMPORTLIBPREFIX=imp
 endif
 endif
+ALL_EXEEXT+=.nlm
 ifeq ($(OS_TARGET),netwlibc)
 ifeq ($(OS_TARGET),netwlibc)
 EXEEXT=.nlm
 EXEEXT=.nlm
 STATICLIBPREFIX=
 STATICLIBPREFIX=
@@ -1313,6 +1316,7 @@ EXEEXT=.gba
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=gba
 SHORTSUFFIX=gba
 endif
 endif
+ALL_EXEEXT+=.gba
 ifeq ($(OS_TARGET),symbian)
 ifeq ($(OS_TARGET),symbian)
 SHAREDLIBEXT=.dll
 SHAREDLIBEXT=.dll
 SHORTSUFFIX=symbian
 SHORTSUFFIX=symbian
@@ -1326,6 +1330,7 @@ EXEEXT=.dol
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=wii
 SHORTSUFFIX=wii
 endif
 endif
+ALL_EXEEXT+=.dol
 ifeq ($(OS_TARGET),aix)
 ifeq ($(OS_TARGET),aix)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1368,6 +1373,7 @@ OEXT=.rel
 endif
 endif
 SHORTSUFFIX=emb
 SHORTSUFFIX=emb
 endif
 endif
+ALL_EXEEXT+=.bin
 ifeq ($(OS_TARGET),win16)
 ifeq ($(OS_TARGET),win16)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 STATICLIBEXT=.a
 STATICLIBEXT=.a
@@ -1380,6 +1386,7 @@ endif
 ifeq ($(OS_TARGET),wasip1)
 ifeq ($(OS_TARGET),wasip1)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
+ALL_EXEEXT+=.wasm
 ifeq ($(OS_TARGET),wasip1threads)
 ifeq ($(OS_TARGET),wasip1threads)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
@@ -2007,6 +2014,7 @@ override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
 endif
 endif
 ifdef CLEAN_PROGRAMS
 ifdef CLEAN_PROGRAMS
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
+override ALL_CLEANEXEFILES+=$(foreach lEXEEXT,$(ALL_EXEEXT),$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(lEXEEXT), $(CLEAN_PROGRAMS))))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 endif
 endif
 ifdef CLEAN_UNITS
 ifdef CLEAN_UNITS
@@ -2045,12 +2053,15 @@ ifdef LIB_NAME
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 endif
 endif
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 fpc_cleanall: $(CLEANTARGET)
 fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 	-$(DEL) $(CLEANEXEFILES)
 endif
 endif
+ifdef ALL_CLEANEXEFILES
+	-$(DEL) $(ALL_CLEANEXEFILES)
+endif
 ifdef COMPILER_UNITTARGETDIR
 ifdef COMPILER_UNITTARGETDIR
 ifdef CLEANPPUFILES
 ifdef CLEANPPUFILES
 	-$(DEL) $(CLEANPPUFILES)
 	-$(DEL) $(CLEANPPUFILES)
@@ -2073,7 +2084,7 @@ ifneq ($(PPUEXT),.ppu)
 endif
 endif
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DEL) fpcmade.* Package.fpc *.fpm
 	-$(DEL) fpcmade.* Package.fpc *.fpm
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 ifdef AOUTEXT
 ifdef AOUTEXT
 	-$(DEL) *$(AOUTEXT)
 	-$(DEL) *$(AOUTEXT)

+ 13 - 2
rtl/netwlibc/Makefile

@@ -1154,6 +1154,7 @@ STATICLIBPREFIX=libp
 IMPORTLIBPREFIX=libimp
 IMPORTLIBPREFIX=libimp
 RSTEXT=.rsj
 RSTEXT=.rsj
 EXEDBGEXT=.dbg
 EXEDBGEXT=.dbg
+ALL_EXEEXT=.exe
 ifeq ($(OS_TARGET),go32v1)
 ifeq ($(OS_TARGET),go32v1)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 SHORTSUFFIX=v1
 SHORTSUFFIX=v1
@@ -1250,6 +1251,7 @@ ifeq ($(OS_TARGET),atari)
 EXEEXT=.ttp
 EXEEXT=.ttp
 SHORTSUFFIX=ata
 SHORTSUFFIX=ata
 endif
 endif
+ALL_EXEEXT+=.ttp
 ifeq ($(OS_TARGET),beos)
 ifeq ($(OS_TARGET),beos)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1276,6 +1278,7 @@ STATICLIBPREFIX=
 SHORTSUFFIX=nw
 SHORTSUFFIX=nw
 IMPORTLIBPREFIX=imp
 IMPORTLIBPREFIX=imp
 endif
 endif
+ALL_EXEEXT+=.nlm
 ifeq ($(OS_TARGET),netwlibc)
 ifeq ($(OS_TARGET),netwlibc)
 EXEEXT=.nlm
 EXEEXT=.nlm
 STATICLIBPREFIX=
 STATICLIBPREFIX=
@@ -1301,6 +1304,7 @@ EXEEXT=.gba
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=gba
 SHORTSUFFIX=gba
 endif
 endif
+ALL_EXEEXT+=.gba
 ifeq ($(OS_TARGET),symbian)
 ifeq ($(OS_TARGET),symbian)
 SHAREDLIBEXT=.dll
 SHAREDLIBEXT=.dll
 SHORTSUFFIX=symbian
 SHORTSUFFIX=symbian
@@ -1314,6 +1318,7 @@ EXEEXT=.dol
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=wii
 SHORTSUFFIX=wii
 endif
 endif
+ALL_EXEEXT+=.dol
 ifeq ($(OS_TARGET),aix)
 ifeq ($(OS_TARGET),aix)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1356,6 +1361,7 @@ OEXT=.rel
 endif
 endif
 SHORTSUFFIX=emb
 SHORTSUFFIX=emb
 endif
 endif
+ALL_EXEEXT+=.bin
 ifeq ($(OS_TARGET),win16)
 ifeq ($(OS_TARGET),win16)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 STATICLIBEXT=.a
 STATICLIBEXT=.a
@@ -1368,6 +1374,7 @@ endif
 ifeq ($(OS_TARGET),wasip1)
 ifeq ($(OS_TARGET),wasip1)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
+ALL_EXEEXT+=.wasm
 ifeq ($(OS_TARGET),wasip1threads)
 ifeq ($(OS_TARGET),wasip1threads)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
@@ -1995,6 +2002,7 @@ override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
 endif
 endif
 ifdef CLEAN_PROGRAMS
 ifdef CLEAN_PROGRAMS
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
+override ALL_CLEANEXEFILES+=$(foreach lEXEEXT,$(ALL_EXEEXT),$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(lEXEEXT), $(CLEAN_PROGRAMS))))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 endif
 endif
 ifdef CLEAN_UNITS
 ifdef CLEAN_UNITS
@@ -2033,12 +2041,15 @@ ifdef LIB_NAME
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 endif
 endif
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 fpc_cleanall: $(CLEANTARGET)
 fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 	-$(DEL) $(CLEANEXEFILES)
 endif
 endif
+ifdef ALL_CLEANEXEFILES
+	-$(DEL) $(ALL_CLEANEXEFILES)
+endif
 ifdef COMPILER_UNITTARGETDIR
 ifdef COMPILER_UNITTARGETDIR
 ifdef CLEANPPUFILES
 ifdef CLEANPPUFILES
 	-$(DEL) $(CLEANPPUFILES)
 	-$(DEL) $(CLEANPPUFILES)
@@ -2061,7 +2072,7 @@ ifneq ($(PPUEXT),.ppu)
 endif
 endif
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DEL) fpcmade.* Package.fpc *.fpm
 	-$(DEL) fpcmade.* Package.fpc *.fpm
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 ifdef AOUTEXT
 ifdef AOUTEXT
 	-$(DEL) *$(AOUTEXT)
 	-$(DEL) *$(AOUTEXT)

+ 13 - 2
rtl/openbsd/Makefile

@@ -1194,6 +1194,7 @@ STATICLIBPREFIX=libp
 IMPORTLIBPREFIX=libimp
 IMPORTLIBPREFIX=libimp
 RSTEXT=.rsj
 RSTEXT=.rsj
 EXEDBGEXT=.dbg
 EXEDBGEXT=.dbg
+ALL_EXEEXT=.exe
 ifeq ($(OS_TARGET),go32v1)
 ifeq ($(OS_TARGET),go32v1)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 SHORTSUFFIX=v1
 SHORTSUFFIX=v1
@@ -1290,6 +1291,7 @@ ifeq ($(OS_TARGET),atari)
 EXEEXT=.ttp
 EXEEXT=.ttp
 SHORTSUFFIX=ata
 SHORTSUFFIX=ata
 endif
 endif
+ALL_EXEEXT+=.ttp
 ifeq ($(OS_TARGET),beos)
 ifeq ($(OS_TARGET),beos)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1316,6 +1318,7 @@ STATICLIBPREFIX=
 SHORTSUFFIX=nw
 SHORTSUFFIX=nw
 IMPORTLIBPREFIX=imp
 IMPORTLIBPREFIX=imp
 endif
 endif
+ALL_EXEEXT+=.nlm
 ifeq ($(OS_TARGET),netwlibc)
 ifeq ($(OS_TARGET),netwlibc)
 EXEEXT=.nlm
 EXEEXT=.nlm
 STATICLIBPREFIX=
 STATICLIBPREFIX=
@@ -1341,6 +1344,7 @@ EXEEXT=.gba
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=gba
 SHORTSUFFIX=gba
 endif
 endif
+ALL_EXEEXT+=.gba
 ifeq ($(OS_TARGET),symbian)
 ifeq ($(OS_TARGET),symbian)
 SHAREDLIBEXT=.dll
 SHAREDLIBEXT=.dll
 SHORTSUFFIX=symbian
 SHORTSUFFIX=symbian
@@ -1354,6 +1358,7 @@ EXEEXT=.dol
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=wii
 SHORTSUFFIX=wii
 endif
 endif
+ALL_EXEEXT+=.dol
 ifeq ($(OS_TARGET),aix)
 ifeq ($(OS_TARGET),aix)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1396,6 +1401,7 @@ OEXT=.rel
 endif
 endif
 SHORTSUFFIX=emb
 SHORTSUFFIX=emb
 endif
 endif
+ALL_EXEEXT+=.bin
 ifeq ($(OS_TARGET),win16)
 ifeq ($(OS_TARGET),win16)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 STATICLIBEXT=.a
 STATICLIBEXT=.a
@@ -1408,6 +1414,7 @@ endif
 ifeq ($(OS_TARGET),wasip1)
 ifeq ($(OS_TARGET),wasip1)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
+ALL_EXEEXT+=.wasm
 ifeq ($(OS_TARGET),wasip1threads)
 ifeq ($(OS_TARGET),wasip1threads)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
@@ -2035,6 +2042,7 @@ override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
 endif
 endif
 ifdef CLEAN_PROGRAMS
 ifdef CLEAN_PROGRAMS
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
+override ALL_CLEANEXEFILES+=$(foreach lEXEEXT,$(ALL_EXEEXT),$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(lEXEEXT), $(CLEAN_PROGRAMS))))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 endif
 endif
 ifdef CLEAN_UNITS
 ifdef CLEAN_UNITS
@@ -2073,12 +2081,15 @@ ifdef LIB_NAME
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 endif
 endif
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 fpc_cleanall: $(CLEANTARGET)
 fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 	-$(DEL) $(CLEANEXEFILES)
 endif
 endif
+ifdef ALL_CLEANEXEFILES
+	-$(DEL) $(ALL_CLEANEXEFILES)
+endif
 ifdef COMPILER_UNITTARGETDIR
 ifdef COMPILER_UNITTARGETDIR
 ifdef CLEANPPUFILES
 ifdef CLEANPPUFILES
 	-$(DEL) $(CLEANPPUFILES)
 	-$(DEL) $(CLEANPPUFILES)
@@ -2101,7 +2112,7 @@ ifneq ($(PPUEXT),.ppu)
 endif
 endif
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DEL) fpcmade.* Package.fpc *.fpm
 	-$(DEL) fpcmade.* Package.fpc *.fpm
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 ifdef AOUTEXT
 ifdef AOUTEXT
 	-$(DEL) *$(AOUTEXT)
 	-$(DEL) *$(AOUTEXT)

+ 13 - 2
rtl/os2/Makefile

@@ -1158,6 +1158,7 @@ STATICLIBPREFIX=libp
 IMPORTLIBPREFIX=libimp
 IMPORTLIBPREFIX=libimp
 RSTEXT=.rsj
 RSTEXT=.rsj
 EXEDBGEXT=.dbg
 EXEDBGEXT=.dbg
+ALL_EXEEXT=.exe
 ifeq ($(OS_TARGET),go32v1)
 ifeq ($(OS_TARGET),go32v1)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 SHORTSUFFIX=v1
 SHORTSUFFIX=v1
@@ -1254,6 +1255,7 @@ ifeq ($(OS_TARGET),atari)
 EXEEXT=.ttp
 EXEEXT=.ttp
 SHORTSUFFIX=ata
 SHORTSUFFIX=ata
 endif
 endif
+ALL_EXEEXT+=.ttp
 ifeq ($(OS_TARGET),beos)
 ifeq ($(OS_TARGET),beos)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1280,6 +1282,7 @@ STATICLIBPREFIX=
 SHORTSUFFIX=nw
 SHORTSUFFIX=nw
 IMPORTLIBPREFIX=imp
 IMPORTLIBPREFIX=imp
 endif
 endif
+ALL_EXEEXT+=.nlm
 ifeq ($(OS_TARGET),netwlibc)
 ifeq ($(OS_TARGET),netwlibc)
 EXEEXT=.nlm
 EXEEXT=.nlm
 STATICLIBPREFIX=
 STATICLIBPREFIX=
@@ -1305,6 +1308,7 @@ EXEEXT=.gba
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=gba
 SHORTSUFFIX=gba
 endif
 endif
+ALL_EXEEXT+=.gba
 ifeq ($(OS_TARGET),symbian)
 ifeq ($(OS_TARGET),symbian)
 SHAREDLIBEXT=.dll
 SHAREDLIBEXT=.dll
 SHORTSUFFIX=symbian
 SHORTSUFFIX=symbian
@@ -1318,6 +1322,7 @@ EXEEXT=.dol
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=wii
 SHORTSUFFIX=wii
 endif
 endif
+ALL_EXEEXT+=.dol
 ifeq ($(OS_TARGET),aix)
 ifeq ($(OS_TARGET),aix)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1360,6 +1365,7 @@ OEXT=.rel
 endif
 endif
 SHORTSUFFIX=emb
 SHORTSUFFIX=emb
 endif
 endif
+ALL_EXEEXT+=.bin
 ifeq ($(OS_TARGET),win16)
 ifeq ($(OS_TARGET),win16)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 STATICLIBEXT=.a
 STATICLIBEXT=.a
@@ -1372,6 +1378,7 @@ endif
 ifeq ($(OS_TARGET),wasip1)
 ifeq ($(OS_TARGET),wasip1)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
+ALL_EXEEXT+=.wasm
 ifeq ($(OS_TARGET),wasip1threads)
 ifeq ($(OS_TARGET),wasip1threads)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
@@ -1999,6 +2006,7 @@ override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
 endif
 endif
 ifdef CLEAN_PROGRAMS
 ifdef CLEAN_PROGRAMS
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
+override ALL_CLEANEXEFILES+=$(foreach lEXEEXT,$(ALL_EXEEXT),$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(lEXEEXT), $(CLEAN_PROGRAMS))))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 endif
 endif
 ifdef CLEAN_UNITS
 ifdef CLEAN_UNITS
@@ -2037,12 +2045,15 @@ ifdef LIB_NAME
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 endif
 endif
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 fpc_cleanall: $(CLEANTARGET)
 fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 	-$(DEL) $(CLEANEXEFILES)
 endif
 endif
+ifdef ALL_CLEANEXEFILES
+	-$(DEL) $(ALL_CLEANEXEFILES)
+endif
 ifdef COMPILER_UNITTARGETDIR
 ifdef COMPILER_UNITTARGETDIR
 ifdef CLEANPPUFILES
 ifdef CLEANPPUFILES
 	-$(DEL) $(CLEANPPUFILES)
 	-$(DEL) $(CLEANPPUFILES)
@@ -2065,7 +2076,7 @@ ifneq ($(PPUEXT),.ppu)
 endif
 endif
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DEL) fpcmade.* Package.fpc *.fpm
 	-$(DEL) fpcmade.* Package.fpc *.fpm
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 ifdef AOUTEXT
 ifdef AOUTEXT
 	-$(DEL) *$(AOUTEXT)
 	-$(DEL) *$(AOUTEXT)

+ 13 - 2
rtl/palmos/Makefile

@@ -1161,6 +1161,7 @@ STATICLIBPREFIX=libp
 IMPORTLIBPREFIX=libimp
 IMPORTLIBPREFIX=libimp
 RSTEXT=.rsj
 RSTEXT=.rsj
 EXEDBGEXT=.dbg
 EXEDBGEXT=.dbg
+ALL_EXEEXT=.exe
 ifeq ($(OS_TARGET),go32v1)
 ifeq ($(OS_TARGET),go32v1)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 SHORTSUFFIX=v1
 SHORTSUFFIX=v1
@@ -1257,6 +1258,7 @@ ifeq ($(OS_TARGET),atari)
 EXEEXT=.ttp
 EXEEXT=.ttp
 SHORTSUFFIX=ata
 SHORTSUFFIX=ata
 endif
 endif
+ALL_EXEEXT+=.ttp
 ifeq ($(OS_TARGET),beos)
 ifeq ($(OS_TARGET),beos)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1283,6 +1285,7 @@ STATICLIBPREFIX=
 SHORTSUFFIX=nw
 SHORTSUFFIX=nw
 IMPORTLIBPREFIX=imp
 IMPORTLIBPREFIX=imp
 endif
 endif
+ALL_EXEEXT+=.nlm
 ifeq ($(OS_TARGET),netwlibc)
 ifeq ($(OS_TARGET),netwlibc)
 EXEEXT=.nlm
 EXEEXT=.nlm
 STATICLIBPREFIX=
 STATICLIBPREFIX=
@@ -1308,6 +1311,7 @@ EXEEXT=.gba
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=gba
 SHORTSUFFIX=gba
 endif
 endif
+ALL_EXEEXT+=.gba
 ifeq ($(OS_TARGET),symbian)
 ifeq ($(OS_TARGET),symbian)
 SHAREDLIBEXT=.dll
 SHAREDLIBEXT=.dll
 SHORTSUFFIX=symbian
 SHORTSUFFIX=symbian
@@ -1321,6 +1325,7 @@ EXEEXT=.dol
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=wii
 SHORTSUFFIX=wii
 endif
 endif
+ALL_EXEEXT+=.dol
 ifeq ($(OS_TARGET),aix)
 ifeq ($(OS_TARGET),aix)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1363,6 +1368,7 @@ OEXT=.rel
 endif
 endif
 SHORTSUFFIX=emb
 SHORTSUFFIX=emb
 endif
 endif
+ALL_EXEEXT+=.bin
 ifeq ($(OS_TARGET),win16)
 ifeq ($(OS_TARGET),win16)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 STATICLIBEXT=.a
 STATICLIBEXT=.a
@@ -1375,6 +1381,7 @@ endif
 ifeq ($(OS_TARGET),wasip1)
 ifeq ($(OS_TARGET),wasip1)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
+ALL_EXEEXT+=.wasm
 ifeq ($(OS_TARGET),wasip1threads)
 ifeq ($(OS_TARGET),wasip1threads)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
@@ -2002,6 +2009,7 @@ override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
 endif
 endif
 ifdef CLEAN_PROGRAMS
 ifdef CLEAN_PROGRAMS
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
+override ALL_CLEANEXEFILES+=$(foreach lEXEEXT,$(ALL_EXEEXT),$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(lEXEEXT), $(CLEAN_PROGRAMS))))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 endif
 endif
 ifdef CLEAN_UNITS
 ifdef CLEAN_UNITS
@@ -2040,12 +2048,15 @@ ifdef LIB_NAME
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 endif
 endif
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 fpc_cleanall: $(CLEANTARGET)
 fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 	-$(DEL) $(CLEANEXEFILES)
 endif
 endif
+ifdef ALL_CLEANEXEFILES
+	-$(DEL) $(ALL_CLEANEXEFILES)
+endif
 ifdef COMPILER_UNITTARGETDIR
 ifdef COMPILER_UNITTARGETDIR
 ifdef CLEANPPUFILES
 ifdef CLEANPPUFILES
 	-$(DEL) $(CLEANPPUFILES)
 	-$(DEL) $(CLEANPPUFILES)
@@ -2068,7 +2079,7 @@ ifneq ($(PPUEXT),.ppu)
 endif
 endif
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DEL) fpcmade.* Package.fpc *.fpm
 	-$(DEL) fpcmade.* Package.fpc *.fpm
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 ifdef AOUTEXT
 ifdef AOUTEXT
 	-$(DEL) *$(AOUTEXT)
 	-$(DEL) *$(AOUTEXT)

+ 13 - 2
rtl/ps1/Makefile

@@ -1146,6 +1146,7 @@ STATICLIBPREFIX=libp
 IMPORTLIBPREFIX=libimp
 IMPORTLIBPREFIX=libimp
 RSTEXT=.rsj
 RSTEXT=.rsj
 EXEDBGEXT=.dbg
 EXEDBGEXT=.dbg
+ALL_EXEEXT=.exe
 ifeq ($(OS_TARGET),go32v1)
 ifeq ($(OS_TARGET),go32v1)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 SHORTSUFFIX=v1
 SHORTSUFFIX=v1
@@ -1242,6 +1243,7 @@ ifeq ($(OS_TARGET),atari)
 EXEEXT=.ttp
 EXEEXT=.ttp
 SHORTSUFFIX=ata
 SHORTSUFFIX=ata
 endif
 endif
+ALL_EXEEXT+=.ttp
 ifeq ($(OS_TARGET),beos)
 ifeq ($(OS_TARGET),beos)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1268,6 +1270,7 @@ STATICLIBPREFIX=
 SHORTSUFFIX=nw
 SHORTSUFFIX=nw
 IMPORTLIBPREFIX=imp
 IMPORTLIBPREFIX=imp
 endif
 endif
+ALL_EXEEXT+=.nlm
 ifeq ($(OS_TARGET),netwlibc)
 ifeq ($(OS_TARGET),netwlibc)
 EXEEXT=.nlm
 EXEEXT=.nlm
 STATICLIBPREFIX=
 STATICLIBPREFIX=
@@ -1293,6 +1296,7 @@ EXEEXT=.gba
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=gba
 SHORTSUFFIX=gba
 endif
 endif
+ALL_EXEEXT+=.gba
 ifeq ($(OS_TARGET),symbian)
 ifeq ($(OS_TARGET),symbian)
 SHAREDLIBEXT=.dll
 SHAREDLIBEXT=.dll
 SHORTSUFFIX=symbian
 SHORTSUFFIX=symbian
@@ -1306,6 +1310,7 @@ EXEEXT=.dol
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=wii
 SHORTSUFFIX=wii
 endif
 endif
+ALL_EXEEXT+=.dol
 ifeq ($(OS_TARGET),aix)
 ifeq ($(OS_TARGET),aix)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1348,6 +1353,7 @@ OEXT=.rel
 endif
 endif
 SHORTSUFFIX=emb
 SHORTSUFFIX=emb
 endif
 endif
+ALL_EXEEXT+=.bin
 ifeq ($(OS_TARGET),win16)
 ifeq ($(OS_TARGET),win16)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 STATICLIBEXT=.a
 STATICLIBEXT=.a
@@ -1360,6 +1366,7 @@ endif
 ifeq ($(OS_TARGET),wasip1)
 ifeq ($(OS_TARGET),wasip1)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
+ALL_EXEEXT+=.wasm
 ifeq ($(OS_TARGET),wasip1threads)
 ifeq ($(OS_TARGET),wasip1threads)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
@@ -1960,6 +1967,7 @@ override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
 endif
 endif
 ifdef CLEAN_PROGRAMS
 ifdef CLEAN_PROGRAMS
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
+override ALL_CLEANEXEFILES+=$(foreach lEXEEXT,$(ALL_EXEEXT),$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(lEXEEXT), $(CLEAN_PROGRAMS))))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 endif
 endif
 ifdef CLEAN_UNITS
 ifdef CLEAN_UNITS
@@ -1998,12 +2006,15 @@ ifdef LIB_NAME
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 endif
 endif
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 fpc_cleanall: $(CLEANTARGET)
 fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 	-$(DEL) $(CLEANEXEFILES)
 endif
 endif
+ifdef ALL_CLEANEXEFILES
+	-$(DEL) $(ALL_CLEANEXEFILES)
+endif
 ifdef COMPILER_UNITTARGETDIR
 ifdef COMPILER_UNITTARGETDIR
 ifdef CLEANPPUFILES
 ifdef CLEANPPUFILES
 	-$(DEL) $(CLEANPPUFILES)
 	-$(DEL) $(CLEANPPUFILES)
@@ -2026,7 +2037,7 @@ ifneq ($(PPUEXT),.ppu)
 endif
 endif
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DEL) fpcmade.* Package.fpc *.fpm
 	-$(DEL) fpcmade.* Package.fpc *.fpm
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 ifdef AOUTEXT
 ifdef AOUTEXT
 	-$(DEL) *$(AOUTEXT)
 	-$(DEL) *$(AOUTEXT)

+ 13 - 2
rtl/sinclairql/Makefile

@@ -1150,6 +1150,7 @@ STATICLIBPREFIX=libp
 IMPORTLIBPREFIX=libimp
 IMPORTLIBPREFIX=libimp
 RSTEXT=.rsj
 RSTEXT=.rsj
 EXEDBGEXT=.dbg
 EXEDBGEXT=.dbg
+ALL_EXEEXT=.exe
 ifeq ($(OS_TARGET),go32v1)
 ifeq ($(OS_TARGET),go32v1)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 SHORTSUFFIX=v1
 SHORTSUFFIX=v1
@@ -1246,6 +1247,7 @@ ifeq ($(OS_TARGET),atari)
 EXEEXT=.ttp
 EXEEXT=.ttp
 SHORTSUFFIX=ata
 SHORTSUFFIX=ata
 endif
 endif
+ALL_EXEEXT+=.ttp
 ifeq ($(OS_TARGET),beos)
 ifeq ($(OS_TARGET),beos)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1272,6 +1274,7 @@ STATICLIBPREFIX=
 SHORTSUFFIX=nw
 SHORTSUFFIX=nw
 IMPORTLIBPREFIX=imp
 IMPORTLIBPREFIX=imp
 endif
 endif
+ALL_EXEEXT+=.nlm
 ifeq ($(OS_TARGET),netwlibc)
 ifeq ($(OS_TARGET),netwlibc)
 EXEEXT=.nlm
 EXEEXT=.nlm
 STATICLIBPREFIX=
 STATICLIBPREFIX=
@@ -1297,6 +1300,7 @@ EXEEXT=.gba
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=gba
 SHORTSUFFIX=gba
 endif
 endif
+ALL_EXEEXT+=.gba
 ifeq ($(OS_TARGET),symbian)
 ifeq ($(OS_TARGET),symbian)
 SHAREDLIBEXT=.dll
 SHAREDLIBEXT=.dll
 SHORTSUFFIX=symbian
 SHORTSUFFIX=symbian
@@ -1310,6 +1314,7 @@ EXEEXT=.dol
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=wii
 SHORTSUFFIX=wii
 endif
 endif
+ALL_EXEEXT+=.dol
 ifeq ($(OS_TARGET),aix)
 ifeq ($(OS_TARGET),aix)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1352,6 +1357,7 @@ OEXT=.rel
 endif
 endif
 SHORTSUFFIX=emb
 SHORTSUFFIX=emb
 endif
 endif
+ALL_EXEEXT+=.bin
 ifeq ($(OS_TARGET),win16)
 ifeq ($(OS_TARGET),win16)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 STATICLIBEXT=.a
 STATICLIBEXT=.a
@@ -1364,6 +1370,7 @@ endif
 ifeq ($(OS_TARGET),wasip1)
 ifeq ($(OS_TARGET),wasip1)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
+ALL_EXEEXT+=.wasm
 ifeq ($(OS_TARGET),wasip1threads)
 ifeq ($(OS_TARGET),wasip1threads)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
@@ -1991,6 +1998,7 @@ override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
 endif
 endif
 ifdef CLEAN_PROGRAMS
 ifdef CLEAN_PROGRAMS
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
+override ALL_CLEANEXEFILES+=$(foreach lEXEEXT,$(ALL_EXEEXT),$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(lEXEEXT), $(CLEAN_PROGRAMS))))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 endif
 endif
 ifdef CLEAN_UNITS
 ifdef CLEAN_UNITS
@@ -2029,12 +2037,15 @@ ifdef LIB_NAME
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 endif
 endif
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 fpc_cleanall: $(CLEANTARGET)
 fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 	-$(DEL) $(CLEANEXEFILES)
 endif
 endif
+ifdef ALL_CLEANEXEFILES
+	-$(DEL) $(ALL_CLEANEXEFILES)
+endif
 ifdef COMPILER_UNITTARGETDIR
 ifdef COMPILER_UNITTARGETDIR
 ifdef CLEANPPUFILES
 ifdef CLEANPPUFILES
 	-$(DEL) $(CLEANPPUFILES)
 	-$(DEL) $(CLEANPPUFILES)
@@ -2057,7 +2068,7 @@ ifneq ($(PPUEXT),.ppu)
 endif
 endif
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DEL) fpcmade.* Package.fpc *.fpm
 	-$(DEL) fpcmade.* Package.fpc *.fpm
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 ifdef AOUTEXT
 ifdef AOUTEXT
 	-$(DEL) *$(AOUTEXT)
 	-$(DEL) *$(AOUTEXT)

+ 13 - 2
rtl/solaris/Makefile

@@ -1193,6 +1193,7 @@ STATICLIBPREFIX=libp
 IMPORTLIBPREFIX=libimp
 IMPORTLIBPREFIX=libimp
 RSTEXT=.rsj
 RSTEXT=.rsj
 EXEDBGEXT=.dbg
 EXEDBGEXT=.dbg
+ALL_EXEEXT=.exe
 ifeq ($(OS_TARGET),go32v1)
 ifeq ($(OS_TARGET),go32v1)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 SHORTSUFFIX=v1
 SHORTSUFFIX=v1
@@ -1289,6 +1290,7 @@ ifeq ($(OS_TARGET),atari)
 EXEEXT=.ttp
 EXEEXT=.ttp
 SHORTSUFFIX=ata
 SHORTSUFFIX=ata
 endif
 endif
+ALL_EXEEXT+=.ttp
 ifeq ($(OS_TARGET),beos)
 ifeq ($(OS_TARGET),beos)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1315,6 +1317,7 @@ STATICLIBPREFIX=
 SHORTSUFFIX=nw
 SHORTSUFFIX=nw
 IMPORTLIBPREFIX=imp
 IMPORTLIBPREFIX=imp
 endif
 endif
+ALL_EXEEXT+=.nlm
 ifeq ($(OS_TARGET),netwlibc)
 ifeq ($(OS_TARGET),netwlibc)
 EXEEXT=.nlm
 EXEEXT=.nlm
 STATICLIBPREFIX=
 STATICLIBPREFIX=
@@ -1340,6 +1343,7 @@ EXEEXT=.gba
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=gba
 SHORTSUFFIX=gba
 endif
 endif
+ALL_EXEEXT+=.gba
 ifeq ($(OS_TARGET),symbian)
 ifeq ($(OS_TARGET),symbian)
 SHAREDLIBEXT=.dll
 SHAREDLIBEXT=.dll
 SHORTSUFFIX=symbian
 SHORTSUFFIX=symbian
@@ -1353,6 +1357,7 @@ EXEEXT=.dol
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=wii
 SHORTSUFFIX=wii
 endif
 endif
+ALL_EXEEXT+=.dol
 ifeq ($(OS_TARGET),aix)
 ifeq ($(OS_TARGET),aix)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1395,6 +1400,7 @@ OEXT=.rel
 endif
 endif
 SHORTSUFFIX=emb
 SHORTSUFFIX=emb
 endif
 endif
+ALL_EXEEXT+=.bin
 ifeq ($(OS_TARGET),win16)
 ifeq ($(OS_TARGET),win16)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 STATICLIBEXT=.a
 STATICLIBEXT=.a
@@ -1407,6 +1413,7 @@ endif
 ifeq ($(OS_TARGET),wasip1)
 ifeq ($(OS_TARGET),wasip1)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
+ALL_EXEEXT+=.wasm
 ifeq ($(OS_TARGET),wasip1threads)
 ifeq ($(OS_TARGET),wasip1threads)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
@@ -2007,6 +2014,7 @@ override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
 endif
 endif
 ifdef CLEAN_PROGRAMS
 ifdef CLEAN_PROGRAMS
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
+override ALL_CLEANEXEFILES+=$(foreach lEXEEXT,$(ALL_EXEEXT),$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(lEXEEXT), $(CLEAN_PROGRAMS))))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 endif
 endif
 ifdef CLEAN_UNITS
 ifdef CLEAN_UNITS
@@ -2045,12 +2053,15 @@ ifdef LIB_NAME
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 endif
 endif
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 fpc_cleanall: $(CLEANTARGET)
 fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 	-$(DEL) $(CLEANEXEFILES)
 endif
 endif
+ifdef ALL_CLEANEXEFILES
+	-$(DEL) $(ALL_CLEANEXEFILES)
+endif
 ifdef COMPILER_UNITTARGETDIR
 ifdef COMPILER_UNITTARGETDIR
 ifdef CLEANPPUFILES
 ifdef CLEANPPUFILES
 	-$(DEL) $(CLEANPPUFILES)
 	-$(DEL) $(CLEANPPUFILES)
@@ -2073,7 +2084,7 @@ ifneq ($(PPUEXT),.ppu)
 endif
 endif
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DEL) fpcmade.* Package.fpc *.fpm
 	-$(DEL) fpcmade.* Package.fpc *.fpm
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 ifdef AOUTEXT
 ifdef AOUTEXT
 	-$(DEL) *$(AOUTEXT)
 	-$(DEL) *$(AOUTEXT)

+ 13 - 2
rtl/symbian/Makefile

@@ -1171,6 +1171,7 @@ STATICLIBPREFIX=libp
 IMPORTLIBPREFIX=libimp
 IMPORTLIBPREFIX=libimp
 RSTEXT=.rsj
 RSTEXT=.rsj
 EXEDBGEXT=.dbg
 EXEDBGEXT=.dbg
+ALL_EXEEXT=.exe
 ifeq ($(OS_TARGET),go32v1)
 ifeq ($(OS_TARGET),go32v1)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 SHORTSUFFIX=v1
 SHORTSUFFIX=v1
@@ -1267,6 +1268,7 @@ ifeq ($(OS_TARGET),atari)
 EXEEXT=.ttp
 EXEEXT=.ttp
 SHORTSUFFIX=ata
 SHORTSUFFIX=ata
 endif
 endif
+ALL_EXEEXT+=.ttp
 ifeq ($(OS_TARGET),beos)
 ifeq ($(OS_TARGET),beos)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1293,6 +1295,7 @@ STATICLIBPREFIX=
 SHORTSUFFIX=nw
 SHORTSUFFIX=nw
 IMPORTLIBPREFIX=imp
 IMPORTLIBPREFIX=imp
 endif
 endif
+ALL_EXEEXT+=.nlm
 ifeq ($(OS_TARGET),netwlibc)
 ifeq ($(OS_TARGET),netwlibc)
 EXEEXT=.nlm
 EXEEXT=.nlm
 STATICLIBPREFIX=
 STATICLIBPREFIX=
@@ -1318,6 +1321,7 @@ EXEEXT=.gba
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=gba
 SHORTSUFFIX=gba
 endif
 endif
+ALL_EXEEXT+=.gba
 ifeq ($(OS_TARGET),symbian)
 ifeq ($(OS_TARGET),symbian)
 SHAREDLIBEXT=.dll
 SHAREDLIBEXT=.dll
 SHORTSUFFIX=symbian
 SHORTSUFFIX=symbian
@@ -1331,6 +1335,7 @@ EXEEXT=.dol
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=wii
 SHORTSUFFIX=wii
 endif
 endif
+ALL_EXEEXT+=.dol
 ifeq ($(OS_TARGET),aix)
 ifeq ($(OS_TARGET),aix)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1373,6 +1378,7 @@ OEXT=.rel
 endif
 endif
 SHORTSUFFIX=emb
 SHORTSUFFIX=emb
 endif
 endif
+ALL_EXEEXT+=.bin
 ifeq ($(OS_TARGET),win16)
 ifeq ($(OS_TARGET),win16)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 STATICLIBEXT=.a
 STATICLIBEXT=.a
@@ -1385,6 +1391,7 @@ endif
 ifeq ($(OS_TARGET),wasip1)
 ifeq ($(OS_TARGET),wasip1)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
+ALL_EXEEXT+=.wasm
 ifeq ($(OS_TARGET),wasip1threads)
 ifeq ($(OS_TARGET),wasip1threads)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
@@ -1985,6 +1992,7 @@ override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
 endif
 endif
 ifdef CLEAN_PROGRAMS
 ifdef CLEAN_PROGRAMS
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
+override ALL_CLEANEXEFILES+=$(foreach lEXEEXT,$(ALL_EXEEXT),$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(lEXEEXT), $(CLEAN_PROGRAMS))))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 endif
 endif
 ifdef CLEAN_UNITS
 ifdef CLEAN_UNITS
@@ -2023,12 +2031,15 @@ ifdef LIB_NAME
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 endif
 endif
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 fpc_cleanall: $(CLEANTARGET)
 fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 	-$(DEL) $(CLEANEXEFILES)
 endif
 endif
+ifdef ALL_CLEANEXEFILES
+	-$(DEL) $(ALL_CLEANEXEFILES)
+endif
 ifdef COMPILER_UNITTARGETDIR
 ifdef COMPILER_UNITTARGETDIR
 ifdef CLEANPPUFILES
 ifdef CLEANPPUFILES
 	-$(DEL) $(CLEANPPUFILES)
 	-$(DEL) $(CLEANPPUFILES)
@@ -2051,7 +2062,7 @@ ifneq ($(PPUEXT),.ppu)
 endif
 endif
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DEL) fpcmade.* Package.fpc *.fpm
 	-$(DEL) fpcmade.* Package.fpc *.fpm
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 ifdef AOUTEXT
 ifdef AOUTEXT
 	-$(DEL) *$(AOUTEXT)
 	-$(DEL) *$(AOUTEXT)

+ 13 - 2
rtl/wasip1/Makefile

@@ -1157,6 +1157,7 @@ STATICLIBPREFIX=libp
 IMPORTLIBPREFIX=libimp
 IMPORTLIBPREFIX=libimp
 RSTEXT=.rsj
 RSTEXT=.rsj
 EXEDBGEXT=.dbg
 EXEDBGEXT=.dbg
+ALL_EXEEXT=.exe
 ifeq ($(OS_TARGET),go32v1)
 ifeq ($(OS_TARGET),go32v1)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 SHORTSUFFIX=v1
 SHORTSUFFIX=v1
@@ -1253,6 +1254,7 @@ ifeq ($(OS_TARGET),atari)
 EXEEXT=.ttp
 EXEEXT=.ttp
 SHORTSUFFIX=ata
 SHORTSUFFIX=ata
 endif
 endif
+ALL_EXEEXT+=.ttp
 ifeq ($(OS_TARGET),beos)
 ifeq ($(OS_TARGET),beos)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1279,6 +1281,7 @@ STATICLIBPREFIX=
 SHORTSUFFIX=nw
 SHORTSUFFIX=nw
 IMPORTLIBPREFIX=imp
 IMPORTLIBPREFIX=imp
 endif
 endif
+ALL_EXEEXT+=.nlm
 ifeq ($(OS_TARGET),netwlibc)
 ifeq ($(OS_TARGET),netwlibc)
 EXEEXT=.nlm
 EXEEXT=.nlm
 STATICLIBPREFIX=
 STATICLIBPREFIX=
@@ -1304,6 +1307,7 @@ EXEEXT=.gba
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=gba
 SHORTSUFFIX=gba
 endif
 endif
+ALL_EXEEXT+=.gba
 ifeq ($(OS_TARGET),symbian)
 ifeq ($(OS_TARGET),symbian)
 SHAREDLIBEXT=.dll
 SHAREDLIBEXT=.dll
 SHORTSUFFIX=symbian
 SHORTSUFFIX=symbian
@@ -1317,6 +1321,7 @@ EXEEXT=.dol
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=wii
 SHORTSUFFIX=wii
 endif
 endif
+ALL_EXEEXT+=.dol
 ifeq ($(OS_TARGET),aix)
 ifeq ($(OS_TARGET),aix)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1359,6 +1364,7 @@ OEXT=.rel
 endif
 endif
 SHORTSUFFIX=emb
 SHORTSUFFIX=emb
 endif
 endif
+ALL_EXEEXT+=.bin
 ifeq ($(OS_TARGET),win16)
 ifeq ($(OS_TARGET),win16)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 STATICLIBEXT=.a
 STATICLIBEXT=.a
@@ -1371,6 +1377,7 @@ endif
 ifeq ($(OS_TARGET),wasip1)
 ifeq ($(OS_TARGET),wasip1)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
+ALL_EXEEXT+=.wasm
 ifeq ($(OS_TARGET),wasip1threads)
 ifeq ($(OS_TARGET),wasip1threads)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
@@ -1971,6 +1978,7 @@ override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
 endif
 endif
 ifdef CLEAN_PROGRAMS
 ifdef CLEAN_PROGRAMS
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
+override ALL_CLEANEXEFILES+=$(foreach lEXEEXT,$(ALL_EXEEXT),$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(lEXEEXT), $(CLEAN_PROGRAMS))))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 endif
 endif
 ifdef CLEAN_UNITS
 ifdef CLEAN_UNITS
@@ -2009,12 +2017,15 @@ ifdef LIB_NAME
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 endif
 endif
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 fpc_cleanall: $(CLEANTARGET)
 fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 	-$(DEL) $(CLEANEXEFILES)
 endif
 endif
+ifdef ALL_CLEANEXEFILES
+	-$(DEL) $(ALL_CLEANEXEFILES)
+endif
 ifdef COMPILER_UNITTARGETDIR
 ifdef COMPILER_UNITTARGETDIR
 ifdef CLEANPPUFILES
 ifdef CLEANPPUFILES
 	-$(DEL) $(CLEANPPUFILES)
 	-$(DEL) $(CLEANPPUFILES)
@@ -2037,7 +2048,7 @@ ifneq ($(PPUEXT),.ppu)
 endif
 endif
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DEL) fpcmade.* Package.fpc *.fpm
 	-$(DEL) fpcmade.* Package.fpc *.fpm
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 ifdef AOUTEXT
 ifdef AOUTEXT
 	-$(DEL) *$(AOUTEXT)
 	-$(DEL) *$(AOUTEXT)

+ 13 - 2
rtl/wasip1threads/Makefile

@@ -1157,6 +1157,7 @@ STATICLIBPREFIX=libp
 IMPORTLIBPREFIX=libimp
 IMPORTLIBPREFIX=libimp
 RSTEXT=.rsj
 RSTEXT=.rsj
 EXEDBGEXT=.dbg
 EXEDBGEXT=.dbg
+ALL_EXEEXT=.exe
 ifeq ($(OS_TARGET),go32v1)
 ifeq ($(OS_TARGET),go32v1)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 SHORTSUFFIX=v1
 SHORTSUFFIX=v1
@@ -1253,6 +1254,7 @@ ifeq ($(OS_TARGET),atari)
 EXEEXT=.ttp
 EXEEXT=.ttp
 SHORTSUFFIX=ata
 SHORTSUFFIX=ata
 endif
 endif
+ALL_EXEEXT+=.ttp
 ifeq ($(OS_TARGET),beos)
 ifeq ($(OS_TARGET),beos)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1279,6 +1281,7 @@ STATICLIBPREFIX=
 SHORTSUFFIX=nw
 SHORTSUFFIX=nw
 IMPORTLIBPREFIX=imp
 IMPORTLIBPREFIX=imp
 endif
 endif
+ALL_EXEEXT+=.nlm
 ifeq ($(OS_TARGET),netwlibc)
 ifeq ($(OS_TARGET),netwlibc)
 EXEEXT=.nlm
 EXEEXT=.nlm
 STATICLIBPREFIX=
 STATICLIBPREFIX=
@@ -1304,6 +1307,7 @@ EXEEXT=.gba
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=gba
 SHORTSUFFIX=gba
 endif
 endif
+ALL_EXEEXT+=.gba
 ifeq ($(OS_TARGET),symbian)
 ifeq ($(OS_TARGET),symbian)
 SHAREDLIBEXT=.dll
 SHAREDLIBEXT=.dll
 SHORTSUFFIX=symbian
 SHORTSUFFIX=symbian
@@ -1317,6 +1321,7 @@ EXEEXT=.dol
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=wii
 SHORTSUFFIX=wii
 endif
 endif
+ALL_EXEEXT+=.dol
 ifeq ($(OS_TARGET),aix)
 ifeq ($(OS_TARGET),aix)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1359,6 +1364,7 @@ OEXT=.rel
 endif
 endif
 SHORTSUFFIX=emb
 SHORTSUFFIX=emb
 endif
 endif
+ALL_EXEEXT+=.bin
 ifeq ($(OS_TARGET),win16)
 ifeq ($(OS_TARGET),win16)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 STATICLIBEXT=.a
 STATICLIBEXT=.a
@@ -1371,6 +1377,7 @@ endif
 ifeq ($(OS_TARGET),wasip1)
 ifeq ($(OS_TARGET),wasip1)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
+ALL_EXEEXT+=.wasm
 ifeq ($(OS_TARGET),wasip1threads)
 ifeq ($(OS_TARGET),wasip1threads)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
@@ -1971,6 +1978,7 @@ override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
 endif
 endif
 ifdef CLEAN_PROGRAMS
 ifdef CLEAN_PROGRAMS
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
+override ALL_CLEANEXEFILES+=$(foreach lEXEEXT,$(ALL_EXEEXT),$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(lEXEEXT), $(CLEAN_PROGRAMS))))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 endif
 endif
 ifdef CLEAN_UNITS
 ifdef CLEAN_UNITS
@@ -2009,12 +2017,15 @@ ifdef LIB_NAME
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 endif
 endif
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 fpc_cleanall: $(CLEANTARGET)
 fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 	-$(DEL) $(CLEANEXEFILES)
 endif
 endif
+ifdef ALL_CLEANEXEFILES
+	-$(DEL) $(ALL_CLEANEXEFILES)
+endif
 ifdef COMPILER_UNITTARGETDIR
 ifdef COMPILER_UNITTARGETDIR
 ifdef CLEANPPUFILES
 ifdef CLEANPPUFILES
 	-$(DEL) $(CLEANPPUFILES)
 	-$(DEL) $(CLEANPPUFILES)
@@ -2037,7 +2048,7 @@ ifneq ($(PPUEXT),.ppu)
 endif
 endif
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DEL) fpcmade.* Package.fpc *.fpm
 	-$(DEL) fpcmade.* Package.fpc *.fpm
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 ifdef AOUTEXT
 ifdef AOUTEXT
 	-$(DEL) *$(AOUTEXT)
 	-$(DEL) *$(AOUTEXT)

+ 13 - 2
rtl/wasip2/Makefile

@@ -1153,6 +1153,7 @@ STATICLIBPREFIX=libp
 IMPORTLIBPREFIX=libimp
 IMPORTLIBPREFIX=libimp
 RSTEXT=.rsj
 RSTEXT=.rsj
 EXEDBGEXT=.dbg
 EXEDBGEXT=.dbg
+ALL_EXEEXT=.exe
 ifeq ($(OS_TARGET),go32v1)
 ifeq ($(OS_TARGET),go32v1)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 SHORTSUFFIX=v1
 SHORTSUFFIX=v1
@@ -1249,6 +1250,7 @@ ifeq ($(OS_TARGET),atari)
 EXEEXT=.ttp
 EXEEXT=.ttp
 SHORTSUFFIX=ata
 SHORTSUFFIX=ata
 endif
 endif
+ALL_EXEEXT+=.ttp
 ifeq ($(OS_TARGET),beos)
 ifeq ($(OS_TARGET),beos)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1275,6 +1277,7 @@ STATICLIBPREFIX=
 SHORTSUFFIX=nw
 SHORTSUFFIX=nw
 IMPORTLIBPREFIX=imp
 IMPORTLIBPREFIX=imp
 endif
 endif
+ALL_EXEEXT+=.nlm
 ifeq ($(OS_TARGET),netwlibc)
 ifeq ($(OS_TARGET),netwlibc)
 EXEEXT=.nlm
 EXEEXT=.nlm
 STATICLIBPREFIX=
 STATICLIBPREFIX=
@@ -1300,6 +1303,7 @@ EXEEXT=.gba
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=gba
 SHORTSUFFIX=gba
 endif
 endif
+ALL_EXEEXT+=.gba
 ifeq ($(OS_TARGET),symbian)
 ifeq ($(OS_TARGET),symbian)
 SHAREDLIBEXT=.dll
 SHAREDLIBEXT=.dll
 SHORTSUFFIX=symbian
 SHORTSUFFIX=symbian
@@ -1313,6 +1317,7 @@ EXEEXT=.dol
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=wii
 SHORTSUFFIX=wii
 endif
 endif
+ALL_EXEEXT+=.dol
 ifeq ($(OS_TARGET),aix)
 ifeq ($(OS_TARGET),aix)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1355,6 +1360,7 @@ OEXT=.rel
 endif
 endif
 SHORTSUFFIX=emb
 SHORTSUFFIX=emb
 endif
 endif
+ALL_EXEEXT+=.bin
 ifeq ($(OS_TARGET),win16)
 ifeq ($(OS_TARGET),win16)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 STATICLIBEXT=.a
 STATICLIBEXT=.a
@@ -1367,6 +1373,7 @@ endif
 ifeq ($(OS_TARGET),wasip1)
 ifeq ($(OS_TARGET),wasip1)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
+ALL_EXEEXT+=.wasm
 ifeq ($(OS_TARGET),wasip1threads)
 ifeq ($(OS_TARGET),wasip1threads)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
@@ -1967,6 +1974,7 @@ override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
 endif
 endif
 ifdef CLEAN_PROGRAMS
 ifdef CLEAN_PROGRAMS
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
+override ALL_CLEANEXEFILES+=$(foreach lEXEEXT,$(ALL_EXEEXT),$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(lEXEEXT), $(CLEAN_PROGRAMS))))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 endif
 endif
 ifdef CLEAN_UNITS
 ifdef CLEAN_UNITS
@@ -2005,12 +2013,15 @@ ifdef LIB_NAME
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 endif
 endif
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 fpc_cleanall: $(CLEANTARGET)
 fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 	-$(DEL) $(CLEANEXEFILES)
 endif
 endif
+ifdef ALL_CLEANEXEFILES
+	-$(DEL) $(ALL_CLEANEXEFILES)
+endif
 ifdef COMPILER_UNITTARGETDIR
 ifdef COMPILER_UNITTARGETDIR
 ifdef CLEANPPUFILES
 ifdef CLEANPPUFILES
 	-$(DEL) $(CLEANPPUFILES)
 	-$(DEL) $(CLEANPPUFILES)
@@ -2033,7 +2044,7 @@ ifneq ($(PPUEXT),.ppu)
 endif
 endif
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DEL) fpcmade.* Package.fpc *.fpm
 	-$(DEL) fpcmade.* Package.fpc *.fpm
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 ifdef AOUTEXT
 ifdef AOUTEXT
 	-$(DEL) *$(AOUTEXT)
 	-$(DEL) *$(AOUTEXT)

+ 13 - 2
rtl/watcom/Makefile

@@ -1157,6 +1157,7 @@ STATICLIBPREFIX=libp
 IMPORTLIBPREFIX=libimp
 IMPORTLIBPREFIX=libimp
 RSTEXT=.rsj
 RSTEXT=.rsj
 EXEDBGEXT=.dbg
 EXEDBGEXT=.dbg
+ALL_EXEEXT=.exe
 ifeq ($(OS_TARGET),go32v1)
 ifeq ($(OS_TARGET),go32v1)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 SHORTSUFFIX=v1
 SHORTSUFFIX=v1
@@ -1253,6 +1254,7 @@ ifeq ($(OS_TARGET),atari)
 EXEEXT=.ttp
 EXEEXT=.ttp
 SHORTSUFFIX=ata
 SHORTSUFFIX=ata
 endif
 endif
+ALL_EXEEXT+=.ttp
 ifeq ($(OS_TARGET),beos)
 ifeq ($(OS_TARGET),beos)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1279,6 +1281,7 @@ STATICLIBPREFIX=
 SHORTSUFFIX=nw
 SHORTSUFFIX=nw
 IMPORTLIBPREFIX=imp
 IMPORTLIBPREFIX=imp
 endif
 endif
+ALL_EXEEXT+=.nlm
 ifeq ($(OS_TARGET),netwlibc)
 ifeq ($(OS_TARGET),netwlibc)
 EXEEXT=.nlm
 EXEEXT=.nlm
 STATICLIBPREFIX=
 STATICLIBPREFIX=
@@ -1304,6 +1307,7 @@ EXEEXT=.gba
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=gba
 SHORTSUFFIX=gba
 endif
 endif
+ALL_EXEEXT+=.gba
 ifeq ($(OS_TARGET),symbian)
 ifeq ($(OS_TARGET),symbian)
 SHAREDLIBEXT=.dll
 SHAREDLIBEXT=.dll
 SHORTSUFFIX=symbian
 SHORTSUFFIX=symbian
@@ -1317,6 +1321,7 @@ EXEEXT=.dol
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=wii
 SHORTSUFFIX=wii
 endif
 endif
+ALL_EXEEXT+=.dol
 ifeq ($(OS_TARGET),aix)
 ifeq ($(OS_TARGET),aix)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1359,6 +1364,7 @@ OEXT=.rel
 endif
 endif
 SHORTSUFFIX=emb
 SHORTSUFFIX=emb
 endif
 endif
+ALL_EXEEXT+=.bin
 ifeq ($(OS_TARGET),win16)
 ifeq ($(OS_TARGET),win16)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 STATICLIBEXT=.a
 STATICLIBEXT=.a
@@ -1371,6 +1377,7 @@ endif
 ifeq ($(OS_TARGET),wasip1)
 ifeq ($(OS_TARGET),wasip1)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
+ALL_EXEEXT+=.wasm
 ifeq ($(OS_TARGET),wasip1threads)
 ifeq ($(OS_TARGET),wasip1threads)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
@@ -1998,6 +2005,7 @@ override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
 endif
 endif
 ifdef CLEAN_PROGRAMS
 ifdef CLEAN_PROGRAMS
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
+override ALL_CLEANEXEFILES+=$(foreach lEXEEXT,$(ALL_EXEEXT),$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(lEXEEXT), $(CLEAN_PROGRAMS))))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 endif
 endif
 ifdef CLEAN_UNITS
 ifdef CLEAN_UNITS
@@ -2036,12 +2044,15 @@ ifdef LIB_NAME
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 endif
 endif
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 fpc_cleanall: $(CLEANTARGET)
 fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 	-$(DEL) $(CLEANEXEFILES)
 endif
 endif
+ifdef ALL_CLEANEXEFILES
+	-$(DEL) $(ALL_CLEANEXEFILES)
+endif
 ifdef COMPILER_UNITTARGETDIR
 ifdef COMPILER_UNITTARGETDIR
 ifdef CLEANPPUFILES
 ifdef CLEANPPUFILES
 	-$(DEL) $(CLEANPPUFILES)
 	-$(DEL) $(CLEANPPUFILES)
@@ -2064,7 +2075,7 @@ ifneq ($(PPUEXT),.ppu)
 endif
 endif
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DEL) fpcmade.* Package.fpc *.fpm
 	-$(DEL) fpcmade.* Package.fpc *.fpm
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 ifdef AOUTEXT
 ifdef AOUTEXT
 	-$(DEL) *$(AOUTEXT)
 	-$(DEL) *$(AOUTEXT)

+ 13 - 2
rtl/wii/Makefile

@@ -1147,6 +1147,7 @@ STATICLIBPREFIX=libp
 IMPORTLIBPREFIX=libimp
 IMPORTLIBPREFIX=libimp
 RSTEXT=.rsj
 RSTEXT=.rsj
 EXEDBGEXT=.dbg
 EXEDBGEXT=.dbg
+ALL_EXEEXT=.exe
 ifeq ($(OS_TARGET),go32v1)
 ifeq ($(OS_TARGET),go32v1)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 SHORTSUFFIX=v1
 SHORTSUFFIX=v1
@@ -1243,6 +1244,7 @@ ifeq ($(OS_TARGET),atari)
 EXEEXT=.ttp
 EXEEXT=.ttp
 SHORTSUFFIX=ata
 SHORTSUFFIX=ata
 endif
 endif
+ALL_EXEEXT+=.ttp
 ifeq ($(OS_TARGET),beos)
 ifeq ($(OS_TARGET),beos)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1269,6 +1271,7 @@ STATICLIBPREFIX=
 SHORTSUFFIX=nw
 SHORTSUFFIX=nw
 IMPORTLIBPREFIX=imp
 IMPORTLIBPREFIX=imp
 endif
 endif
+ALL_EXEEXT+=.nlm
 ifeq ($(OS_TARGET),netwlibc)
 ifeq ($(OS_TARGET),netwlibc)
 EXEEXT=.nlm
 EXEEXT=.nlm
 STATICLIBPREFIX=
 STATICLIBPREFIX=
@@ -1294,6 +1297,7 @@ EXEEXT=.gba
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=gba
 SHORTSUFFIX=gba
 endif
 endif
+ALL_EXEEXT+=.gba
 ifeq ($(OS_TARGET),symbian)
 ifeq ($(OS_TARGET),symbian)
 SHAREDLIBEXT=.dll
 SHAREDLIBEXT=.dll
 SHORTSUFFIX=symbian
 SHORTSUFFIX=symbian
@@ -1307,6 +1311,7 @@ EXEEXT=.dol
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=wii
 SHORTSUFFIX=wii
 endif
 endif
+ALL_EXEEXT+=.dol
 ifeq ($(OS_TARGET),aix)
 ifeq ($(OS_TARGET),aix)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1349,6 +1354,7 @@ OEXT=.rel
 endif
 endif
 SHORTSUFFIX=emb
 SHORTSUFFIX=emb
 endif
 endif
+ALL_EXEEXT+=.bin
 ifeq ($(OS_TARGET),win16)
 ifeq ($(OS_TARGET),win16)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 STATICLIBEXT=.a
 STATICLIBEXT=.a
@@ -1361,6 +1367,7 @@ endif
 ifeq ($(OS_TARGET),wasip1)
 ifeq ($(OS_TARGET),wasip1)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
+ALL_EXEEXT+=.wasm
 ifeq ($(OS_TARGET),wasip1threads)
 ifeq ($(OS_TARGET),wasip1threads)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
@@ -1961,6 +1968,7 @@ override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
 endif
 endif
 ifdef CLEAN_PROGRAMS
 ifdef CLEAN_PROGRAMS
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
+override ALL_CLEANEXEFILES+=$(foreach lEXEEXT,$(ALL_EXEEXT),$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(lEXEEXT), $(CLEAN_PROGRAMS))))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 endif
 endif
 ifdef CLEAN_UNITS
 ifdef CLEAN_UNITS
@@ -1999,12 +2007,15 @@ ifdef LIB_NAME
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 endif
 endif
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 fpc_cleanall: $(CLEANTARGET)
 fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 	-$(DEL) $(CLEANEXEFILES)
 endif
 endif
+ifdef ALL_CLEANEXEFILES
+	-$(DEL) $(ALL_CLEANEXEFILES)
+endif
 ifdef COMPILER_UNITTARGETDIR
 ifdef COMPILER_UNITTARGETDIR
 ifdef CLEANPPUFILES
 ifdef CLEANPPUFILES
 	-$(DEL) $(CLEANPPUFILES)
 	-$(DEL) $(CLEANPPUFILES)
@@ -2027,7 +2038,7 @@ ifneq ($(PPUEXT),.ppu)
 endif
 endif
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DEL) fpcmade.* Package.fpc *.fpm
 	-$(DEL) fpcmade.* Package.fpc *.fpm
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 ifdef AOUTEXT
 ifdef AOUTEXT
 	-$(DEL) *$(AOUTEXT)
 	-$(DEL) *$(AOUTEXT)

+ 13 - 2
rtl/win16/Makefile

@@ -1156,6 +1156,7 @@ STATICLIBPREFIX=libp
 IMPORTLIBPREFIX=libimp
 IMPORTLIBPREFIX=libimp
 RSTEXT=.rsj
 RSTEXT=.rsj
 EXEDBGEXT=.dbg
 EXEDBGEXT=.dbg
+ALL_EXEEXT=.exe
 ifeq ($(OS_TARGET),go32v1)
 ifeq ($(OS_TARGET),go32v1)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 SHORTSUFFIX=v1
 SHORTSUFFIX=v1
@@ -1252,6 +1253,7 @@ ifeq ($(OS_TARGET),atari)
 EXEEXT=.ttp
 EXEEXT=.ttp
 SHORTSUFFIX=ata
 SHORTSUFFIX=ata
 endif
 endif
+ALL_EXEEXT+=.ttp
 ifeq ($(OS_TARGET),beos)
 ifeq ($(OS_TARGET),beos)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1278,6 +1280,7 @@ STATICLIBPREFIX=
 SHORTSUFFIX=nw
 SHORTSUFFIX=nw
 IMPORTLIBPREFIX=imp
 IMPORTLIBPREFIX=imp
 endif
 endif
+ALL_EXEEXT+=.nlm
 ifeq ($(OS_TARGET),netwlibc)
 ifeq ($(OS_TARGET),netwlibc)
 EXEEXT=.nlm
 EXEEXT=.nlm
 STATICLIBPREFIX=
 STATICLIBPREFIX=
@@ -1303,6 +1306,7 @@ EXEEXT=.gba
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=gba
 SHORTSUFFIX=gba
 endif
 endif
+ALL_EXEEXT+=.gba
 ifeq ($(OS_TARGET),symbian)
 ifeq ($(OS_TARGET),symbian)
 SHAREDLIBEXT=.dll
 SHAREDLIBEXT=.dll
 SHORTSUFFIX=symbian
 SHORTSUFFIX=symbian
@@ -1316,6 +1320,7 @@ EXEEXT=.dol
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=wii
 SHORTSUFFIX=wii
 endif
 endif
+ALL_EXEEXT+=.dol
 ifeq ($(OS_TARGET),aix)
 ifeq ($(OS_TARGET),aix)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1358,6 +1363,7 @@ OEXT=.rel
 endif
 endif
 SHORTSUFFIX=emb
 SHORTSUFFIX=emb
 endif
 endif
+ALL_EXEEXT+=.bin
 ifeq ($(OS_TARGET),win16)
 ifeq ($(OS_TARGET),win16)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 STATICLIBEXT=.a
 STATICLIBEXT=.a
@@ -1370,6 +1376,7 @@ endif
 ifeq ($(OS_TARGET),wasip1)
 ifeq ($(OS_TARGET),wasip1)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
+ALL_EXEEXT+=.wasm
 ifeq ($(OS_TARGET),wasip1threads)
 ifeq ($(OS_TARGET),wasip1threads)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
@@ -1997,6 +2004,7 @@ override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
 endif
 endif
 ifdef CLEAN_PROGRAMS
 ifdef CLEAN_PROGRAMS
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
+override ALL_CLEANEXEFILES+=$(foreach lEXEEXT,$(ALL_EXEEXT),$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(lEXEEXT), $(CLEAN_PROGRAMS))))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 endif
 endif
 ifdef CLEAN_UNITS
 ifdef CLEAN_UNITS
@@ -2035,12 +2043,15 @@ ifdef LIB_NAME
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 endif
 endif
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 fpc_cleanall: $(CLEANTARGET)
 fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 	-$(DEL) $(CLEANEXEFILES)
 endif
 endif
+ifdef ALL_CLEANEXEFILES
+	-$(DEL) $(ALL_CLEANEXEFILES)
+endif
 ifdef COMPILER_UNITTARGETDIR
 ifdef COMPILER_UNITTARGETDIR
 ifdef CLEANPPUFILES
 ifdef CLEANPPUFILES
 	-$(DEL) $(CLEANPPUFILES)
 	-$(DEL) $(CLEANPPUFILES)
@@ -2063,7 +2074,7 @@ ifneq ($(PPUEXT),.ppu)
 endif
 endif
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DEL) fpcmade.* Package.fpc *.fpm
 	-$(DEL) fpcmade.* Package.fpc *.fpm
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 ifdef AOUTEXT
 ifdef AOUTEXT
 	-$(DEL) *$(AOUTEXT)
 	-$(DEL) *$(AOUTEXT)

+ 13 - 2
rtl/win32/Makefile

@@ -1167,6 +1167,7 @@ STATICLIBPREFIX=libp
 IMPORTLIBPREFIX=libimp
 IMPORTLIBPREFIX=libimp
 RSTEXT=.rsj
 RSTEXT=.rsj
 EXEDBGEXT=.dbg
 EXEDBGEXT=.dbg
+ALL_EXEEXT=.exe
 ifeq ($(OS_TARGET),go32v1)
 ifeq ($(OS_TARGET),go32v1)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 SHORTSUFFIX=v1
 SHORTSUFFIX=v1
@@ -1263,6 +1264,7 @@ ifeq ($(OS_TARGET),atari)
 EXEEXT=.ttp
 EXEEXT=.ttp
 SHORTSUFFIX=ata
 SHORTSUFFIX=ata
 endif
 endif
+ALL_EXEEXT+=.ttp
 ifeq ($(OS_TARGET),beos)
 ifeq ($(OS_TARGET),beos)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1289,6 +1291,7 @@ STATICLIBPREFIX=
 SHORTSUFFIX=nw
 SHORTSUFFIX=nw
 IMPORTLIBPREFIX=imp
 IMPORTLIBPREFIX=imp
 endif
 endif
+ALL_EXEEXT+=.nlm
 ifeq ($(OS_TARGET),netwlibc)
 ifeq ($(OS_TARGET),netwlibc)
 EXEEXT=.nlm
 EXEEXT=.nlm
 STATICLIBPREFIX=
 STATICLIBPREFIX=
@@ -1314,6 +1317,7 @@ EXEEXT=.gba
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=gba
 SHORTSUFFIX=gba
 endif
 endif
+ALL_EXEEXT+=.gba
 ifeq ($(OS_TARGET),symbian)
 ifeq ($(OS_TARGET),symbian)
 SHAREDLIBEXT=.dll
 SHAREDLIBEXT=.dll
 SHORTSUFFIX=symbian
 SHORTSUFFIX=symbian
@@ -1327,6 +1331,7 @@ EXEEXT=.dol
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=wii
 SHORTSUFFIX=wii
 endif
 endif
+ALL_EXEEXT+=.dol
 ifeq ($(OS_TARGET),aix)
 ifeq ($(OS_TARGET),aix)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1369,6 +1374,7 @@ OEXT=.rel
 endif
 endif
 SHORTSUFFIX=emb
 SHORTSUFFIX=emb
 endif
 endif
+ALL_EXEEXT+=.bin
 ifeq ($(OS_TARGET),win16)
 ifeq ($(OS_TARGET),win16)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 STATICLIBEXT=.a
 STATICLIBEXT=.a
@@ -1381,6 +1387,7 @@ endif
 ifeq ($(OS_TARGET),wasip1)
 ifeq ($(OS_TARGET),wasip1)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
+ALL_EXEEXT+=.wasm
 ifeq ($(OS_TARGET),wasip1threads)
 ifeq ($(OS_TARGET),wasip1threads)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
@@ -2008,6 +2015,7 @@ override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
 endif
 endif
 ifdef CLEAN_PROGRAMS
 ifdef CLEAN_PROGRAMS
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
+override ALL_CLEANEXEFILES+=$(foreach lEXEEXT,$(ALL_EXEEXT),$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(lEXEEXT), $(CLEAN_PROGRAMS))))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 endif
 endif
 ifdef CLEAN_UNITS
 ifdef CLEAN_UNITS
@@ -2046,12 +2054,15 @@ ifdef LIB_NAME
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 endif
 endif
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 fpc_cleanall: $(CLEANTARGET)
 fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 	-$(DEL) $(CLEANEXEFILES)
 endif
 endif
+ifdef ALL_CLEANEXEFILES
+	-$(DEL) $(ALL_CLEANEXEFILES)
+endif
 ifdef COMPILER_UNITTARGETDIR
 ifdef COMPILER_UNITTARGETDIR
 ifdef CLEANPPUFILES
 ifdef CLEANPPUFILES
 	-$(DEL) $(CLEANPPUFILES)
 	-$(DEL) $(CLEANPPUFILES)
@@ -2074,7 +2085,7 @@ ifneq ($(PPUEXT),.ppu)
 endif
 endif
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DEL) fpcmade.* Package.fpc *.fpm
 	-$(DEL) fpcmade.* Package.fpc *.fpm
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 ifdef AOUTEXT
 ifdef AOUTEXT
 	-$(DEL) *$(AOUTEXT)
 	-$(DEL) *$(AOUTEXT)

+ 13 - 2
rtl/win64/Makefile

@@ -1188,6 +1188,7 @@ STATICLIBPREFIX=libp
 IMPORTLIBPREFIX=libimp
 IMPORTLIBPREFIX=libimp
 RSTEXT=.rsj
 RSTEXT=.rsj
 EXEDBGEXT=.dbg
 EXEDBGEXT=.dbg
+ALL_EXEEXT=.exe
 ifeq ($(OS_TARGET),go32v1)
 ifeq ($(OS_TARGET),go32v1)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 SHORTSUFFIX=v1
 SHORTSUFFIX=v1
@@ -1284,6 +1285,7 @@ ifeq ($(OS_TARGET),atari)
 EXEEXT=.ttp
 EXEEXT=.ttp
 SHORTSUFFIX=ata
 SHORTSUFFIX=ata
 endif
 endif
+ALL_EXEEXT+=.ttp
 ifeq ($(OS_TARGET),beos)
 ifeq ($(OS_TARGET),beos)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1310,6 +1312,7 @@ STATICLIBPREFIX=
 SHORTSUFFIX=nw
 SHORTSUFFIX=nw
 IMPORTLIBPREFIX=imp
 IMPORTLIBPREFIX=imp
 endif
 endif
+ALL_EXEEXT+=.nlm
 ifeq ($(OS_TARGET),netwlibc)
 ifeq ($(OS_TARGET),netwlibc)
 EXEEXT=.nlm
 EXEEXT=.nlm
 STATICLIBPREFIX=
 STATICLIBPREFIX=
@@ -1335,6 +1338,7 @@ EXEEXT=.gba
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=gba
 SHORTSUFFIX=gba
 endif
 endif
+ALL_EXEEXT+=.gba
 ifeq ($(OS_TARGET),symbian)
 ifeq ($(OS_TARGET),symbian)
 SHAREDLIBEXT=.dll
 SHAREDLIBEXT=.dll
 SHORTSUFFIX=symbian
 SHORTSUFFIX=symbian
@@ -1348,6 +1352,7 @@ EXEEXT=.dol
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=wii
 SHORTSUFFIX=wii
 endif
 endif
+ALL_EXEEXT+=.dol
 ifeq ($(OS_TARGET),aix)
 ifeq ($(OS_TARGET),aix)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1390,6 +1395,7 @@ OEXT=.rel
 endif
 endif
 SHORTSUFFIX=emb
 SHORTSUFFIX=emb
 endif
 endif
+ALL_EXEEXT+=.bin
 ifeq ($(OS_TARGET),win16)
 ifeq ($(OS_TARGET),win16)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 STATICLIBEXT=.a
 STATICLIBEXT=.a
@@ -1402,6 +1408,7 @@ endif
 ifeq ($(OS_TARGET),wasip1)
 ifeq ($(OS_TARGET),wasip1)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
+ALL_EXEEXT+=.wasm
 ifeq ($(OS_TARGET),wasip1threads)
 ifeq ($(OS_TARGET),wasip1threads)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
@@ -2029,6 +2036,7 @@ override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
 endif
 endif
 ifdef CLEAN_PROGRAMS
 ifdef CLEAN_PROGRAMS
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
+override ALL_CLEANEXEFILES+=$(foreach lEXEEXT,$(ALL_EXEEXT),$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(lEXEEXT), $(CLEAN_PROGRAMS))))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 endif
 endif
 ifdef CLEAN_UNITS
 ifdef CLEAN_UNITS
@@ -2067,12 +2075,15 @@ ifdef LIB_NAME
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 endif
 endif
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 fpc_cleanall: $(CLEANTARGET)
 fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 	-$(DEL) $(CLEANEXEFILES)
 endif
 endif
+ifdef ALL_CLEANEXEFILES
+	-$(DEL) $(ALL_CLEANEXEFILES)
+endif
 ifdef COMPILER_UNITTARGETDIR
 ifdef COMPILER_UNITTARGETDIR
 ifdef CLEANPPUFILES
 ifdef CLEANPPUFILES
 	-$(DEL) $(CLEANPPUFILES)
 	-$(DEL) $(CLEANPPUFILES)
@@ -2095,7 +2106,7 @@ ifneq ($(PPUEXT),.ppu)
 endif
 endif
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DEL) fpcmade.* Package.fpc *.fpm
 	-$(DEL) fpcmade.* Package.fpc *.fpm
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 ifdef AOUTEXT
 ifdef AOUTEXT
 	-$(DEL) *$(AOUTEXT)
 	-$(DEL) *$(AOUTEXT)

+ 13 - 2
rtl/wince/Makefile

@@ -1173,6 +1173,7 @@ STATICLIBPREFIX=libp
 IMPORTLIBPREFIX=libimp
 IMPORTLIBPREFIX=libimp
 RSTEXT=.rsj
 RSTEXT=.rsj
 EXEDBGEXT=.dbg
 EXEDBGEXT=.dbg
+ALL_EXEEXT=.exe
 ifeq ($(OS_TARGET),go32v1)
 ifeq ($(OS_TARGET),go32v1)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 SHORTSUFFIX=v1
 SHORTSUFFIX=v1
@@ -1269,6 +1270,7 @@ ifeq ($(OS_TARGET),atari)
 EXEEXT=.ttp
 EXEEXT=.ttp
 SHORTSUFFIX=ata
 SHORTSUFFIX=ata
 endif
 endif
+ALL_EXEEXT+=.ttp
 ifeq ($(OS_TARGET),beos)
 ifeq ($(OS_TARGET),beos)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1295,6 +1297,7 @@ STATICLIBPREFIX=
 SHORTSUFFIX=nw
 SHORTSUFFIX=nw
 IMPORTLIBPREFIX=imp
 IMPORTLIBPREFIX=imp
 endif
 endif
+ALL_EXEEXT+=.nlm
 ifeq ($(OS_TARGET),netwlibc)
 ifeq ($(OS_TARGET),netwlibc)
 EXEEXT=.nlm
 EXEEXT=.nlm
 STATICLIBPREFIX=
 STATICLIBPREFIX=
@@ -1320,6 +1323,7 @@ EXEEXT=.gba
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=gba
 SHORTSUFFIX=gba
 endif
 endif
+ALL_EXEEXT+=.gba
 ifeq ($(OS_TARGET),symbian)
 ifeq ($(OS_TARGET),symbian)
 SHAREDLIBEXT=.dll
 SHAREDLIBEXT=.dll
 SHORTSUFFIX=symbian
 SHORTSUFFIX=symbian
@@ -1333,6 +1337,7 @@ EXEEXT=.dol
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=wii
 SHORTSUFFIX=wii
 endif
 endif
+ALL_EXEEXT+=.dol
 ifeq ($(OS_TARGET),aix)
 ifeq ($(OS_TARGET),aix)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1375,6 +1380,7 @@ OEXT=.rel
 endif
 endif
 SHORTSUFFIX=emb
 SHORTSUFFIX=emb
 endif
 endif
+ALL_EXEEXT+=.bin
 ifeq ($(OS_TARGET),win16)
 ifeq ($(OS_TARGET),win16)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 STATICLIBEXT=.a
 STATICLIBEXT=.a
@@ -1387,6 +1393,7 @@ endif
 ifeq ($(OS_TARGET),wasip1)
 ifeq ($(OS_TARGET),wasip1)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
+ALL_EXEEXT+=.wasm
 ifeq ($(OS_TARGET),wasip1threads)
 ifeq ($(OS_TARGET),wasip1threads)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
@@ -1987,6 +1994,7 @@ override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
 endif
 endif
 ifdef CLEAN_PROGRAMS
 ifdef CLEAN_PROGRAMS
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
+override ALL_CLEANEXEFILES+=$(foreach lEXEEXT,$(ALL_EXEEXT),$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(lEXEEXT), $(CLEAN_PROGRAMS))))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 endif
 endif
 ifdef CLEAN_UNITS
 ifdef CLEAN_UNITS
@@ -2025,12 +2033,15 @@ ifdef LIB_NAME
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 endif
 endif
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 fpc_cleanall: $(CLEANTARGET)
 fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 	-$(DEL) $(CLEANEXEFILES)
 endif
 endif
+ifdef ALL_CLEANEXEFILES
+	-$(DEL) $(ALL_CLEANEXEFILES)
+endif
 ifdef COMPILER_UNITTARGETDIR
 ifdef COMPILER_UNITTARGETDIR
 ifdef CLEANPPUFILES
 ifdef CLEANPPUFILES
 	-$(DEL) $(CLEANPPUFILES)
 	-$(DEL) $(CLEANPPUFILES)
@@ -2053,7 +2064,7 @@ ifneq ($(PPUEXT),.ppu)
 endif
 endif
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DEL) fpcmade.* Package.fpc *.fpm
 	-$(DEL) fpcmade.* Package.fpc *.fpm
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 ifdef AOUTEXT
 ifdef AOUTEXT
 	-$(DEL) *$(AOUTEXT)
 	-$(DEL) *$(AOUTEXT)

+ 13 - 2
rtl/zxspectrum/Makefile

@@ -1146,6 +1146,7 @@ STATICLIBPREFIX=libp
 IMPORTLIBPREFIX=libimp
 IMPORTLIBPREFIX=libimp
 RSTEXT=.rsj
 RSTEXT=.rsj
 EXEDBGEXT=.dbg
 EXEDBGEXT=.dbg
+ALL_EXEEXT=.exe
 ifeq ($(OS_TARGET),go32v1)
 ifeq ($(OS_TARGET),go32v1)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 SHORTSUFFIX=v1
 SHORTSUFFIX=v1
@@ -1242,6 +1243,7 @@ ifeq ($(OS_TARGET),atari)
 EXEEXT=.ttp
 EXEEXT=.ttp
 SHORTSUFFIX=ata
 SHORTSUFFIX=ata
 endif
 endif
+ALL_EXEEXT+=.ttp
 ifeq ($(OS_TARGET),beos)
 ifeq ($(OS_TARGET),beos)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1268,6 +1270,7 @@ STATICLIBPREFIX=
 SHORTSUFFIX=nw
 SHORTSUFFIX=nw
 IMPORTLIBPREFIX=imp
 IMPORTLIBPREFIX=imp
 endif
 endif
+ALL_EXEEXT+=.nlm
 ifeq ($(OS_TARGET),netwlibc)
 ifeq ($(OS_TARGET),netwlibc)
 EXEEXT=.nlm
 EXEEXT=.nlm
 STATICLIBPREFIX=
 STATICLIBPREFIX=
@@ -1293,6 +1296,7 @@ EXEEXT=.gba
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=gba
 SHORTSUFFIX=gba
 endif
 endif
+ALL_EXEEXT+=.gba
 ifeq ($(OS_TARGET),symbian)
 ifeq ($(OS_TARGET),symbian)
 SHAREDLIBEXT=.dll
 SHAREDLIBEXT=.dll
 SHORTSUFFIX=symbian
 SHORTSUFFIX=symbian
@@ -1306,6 +1310,7 @@ EXEEXT=.dol
 SHAREDLIBEXT=.so
 SHAREDLIBEXT=.so
 SHORTSUFFIX=wii
 SHORTSUFFIX=wii
 endif
 endif
+ALL_EXEEXT+=.dol
 ifeq ($(OS_TARGET),aix)
 ifeq ($(OS_TARGET),aix)
 BATCHEXT=.sh
 BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
@@ -1348,6 +1353,7 @@ OEXT=.rel
 endif
 endif
 SHORTSUFFIX=emb
 SHORTSUFFIX=emb
 endif
 endif
+ALL_EXEEXT+=.bin
 ifeq ($(OS_TARGET),win16)
 ifeq ($(OS_TARGET),win16)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
 STATICLIBEXT=.a
 STATICLIBEXT=.a
@@ -1360,6 +1366,7 @@ endif
 ifeq ($(OS_TARGET),wasip1)
 ifeq ($(OS_TARGET),wasip1)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
+ALL_EXEEXT+=.wasm
 ifeq ($(OS_TARGET),wasip1threads)
 ifeq ($(OS_TARGET),wasip1threads)
 EXEEXT=.wasm
 EXEEXT=.wasm
 endif
 endif
@@ -1960,6 +1967,7 @@ override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
 endif
 endif
 ifdef CLEAN_PROGRAMS
 ifdef CLEAN_PROGRAMS
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
+override ALL_CLEANEXEFILES+=$(foreach lEXEEXT,$(ALL_EXEEXT),$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(lEXEEXT), $(CLEAN_PROGRAMS))))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
 endif
 endif
 ifdef CLEAN_UNITS
 ifdef CLEAN_UNITS
@@ -1998,12 +2006,15 @@ ifdef LIB_NAME
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 endif
 endif
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
 	-$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 fpc_cleanall: $(CLEANTARGET)
 fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 	-$(DEL) $(CLEANEXEFILES)
 endif
 endif
+ifdef ALL_CLEANEXEFILES
+	-$(DEL) $(ALL_CLEANEXEFILES)
+endif
 ifdef COMPILER_UNITTARGETDIR
 ifdef COMPILER_UNITTARGETDIR
 ifdef CLEANPPUFILES
 ifdef CLEANPPUFILES
 	-$(DEL) $(CLEANPPUFILES)
 	-$(DEL) $(CLEANPPUFILES)
@@ -2026,7 +2037,7 @@ ifneq ($(PPUEXT),.ppu)
 endif
 endif
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DEL) fpcmade.* Package.fpc *.fpm
 	-$(DEL) fpcmade.* Package.fpc *.fpm
-	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
+	-$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res symbol_order*.fpc
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 	-$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
 ifdef AOUTEXT
 ifdef AOUTEXT
 	-$(DEL) *$(AOUTEXT)
 	-$(DEL) *$(AOUTEXT)