* Initial CHM support for textmode IDE.

git-svn-id: trunk@11885 -
This commit is contained in:
marco 2008-10-12 10:22:47 +00:00
parent d6c5cacd80
commit a091b51e31
6 changed files with 843 additions and 97 deletions

1
.gitattributes vendored
View File

@ -708,6 +708,7 @@ ide/unit.pt -text
ide/vesa.pas svneol=native#text/plain ide/vesa.pas svneol=native#text/plain
ide/wansi.pas svneol=native#text/plain ide/wansi.pas svneol=native#text/plain
ide/wcedit.pas svneol=native#text/plain ide/wcedit.pas svneol=native#text/plain
ide/wchmhwrap.pas svneol=native#text/plain
ide/wconsole.pas svneol=native#text/plain ide/wconsole.pas svneol=native#text/plain
ide/wconsts.pas svneol=native#text/plain ide/wconsts.pas svneol=native#text/plain
ide/wconstse.inc svneol=native#text/plain ide/wconstse.inc svneol=native#text/plain

View File

@ -1,5 +1,5 @@
# #
# Don't edit, this file is generated by FPCMake Version 2.0.0 [2008/08/19] # Don't edit, this file is generated by FPCMake Version 2.0.0 [2008/10/12]
# #
default: all default: all
MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded avr-embedded armeb-linux armeb-embedded MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded avr-embedded armeb-linux armeb-embedded
@ -115,6 +115,10 @@ FPC:=$(shell $(FPCPROG) -PB)
endif endif
ifneq ($(findstring Error,$(FPC)),) ifneq ($(findstring Error,$(FPC)),)
override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH))))) override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
else
ifeq ($(strip $(wildcard $(FPC))),)
FPC:=$(firstword $(FPCPROG))
endif
endif endif
else else
override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH))))) override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
@ -1602,18 +1606,24 @@ else
TAROPT=vz TAROPT=vz
TAREXT=.tar.gz TAREXT=.tar.gz
endif endif
override REQUIRE_PACKAGES=rtl fv gdbint regexpr override REQUIRE_PACKAGES=rtl fv gdbint regexpr chm
ifeq ($(FULL_TARGET),i386-linux) ifeq ($(FULL_TARGET),i386-linux)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),i386-go32v2) ifeq ($(FULL_TARGET),i386-go32v2)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
REQUIRE_PACKAGES_GRAPH=1 REQUIRE_PACKAGES_GRAPH=1
endif endif
ifeq ($(FULL_TARGET),i386-win32) ifeq ($(FULL_TARGET),i386-win32)
@ -1621,336 +1631,508 @@ REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_WINUNITS-BASE=1
REQUIRE_PACKAGES_WINUNITS-JEDI=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),i386-os2) ifeq ($(FULL_TARGET),i386-os2)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),i386-freebsd) ifeq ($(FULL_TARGET),i386-freebsd)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),i386-beos) ifeq ($(FULL_TARGET),i386-beos)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),i386-haiku) ifeq ($(FULL_TARGET),i386-haiku)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),i386-netbsd) ifeq ($(FULL_TARGET),i386-netbsd)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),i386-solaris) ifeq ($(FULL_TARGET),i386-solaris)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),i386-qnx) ifeq ($(FULL_TARGET),i386-qnx)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),i386-netware) ifeq ($(FULL_TARGET),i386-netware)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),i386-openbsd) ifeq ($(FULL_TARGET),i386-openbsd)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),i386-wdosx) ifeq ($(FULL_TARGET),i386-wdosx)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),i386-darwin) ifeq ($(FULL_TARGET),i386-darwin)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),i386-emx) ifeq ($(FULL_TARGET),i386-emx)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),i386-watcom) ifeq ($(FULL_TARGET),i386-watcom)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),i386-netwlibc) ifeq ($(FULL_TARGET),i386-netwlibc)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),i386-wince) ifeq ($(FULL_TARGET),i386-wince)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),i386-embedded) ifeq ($(FULL_TARGET),i386-embedded)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),i386-symbian) ifeq ($(FULL_TARGET),i386-symbian)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),m68k-linux) ifeq ($(FULL_TARGET),m68k-linux)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),m68k-freebsd) ifeq ($(FULL_TARGET),m68k-freebsd)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),m68k-netbsd) ifeq ($(FULL_TARGET),m68k-netbsd)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),m68k-amiga) ifeq ($(FULL_TARGET),m68k-amiga)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),m68k-atari) ifeq ($(FULL_TARGET),m68k-atari)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),m68k-openbsd) ifeq ($(FULL_TARGET),m68k-openbsd)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),m68k-palmos) ifeq ($(FULL_TARGET),m68k-palmos)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),m68k-embedded) ifeq ($(FULL_TARGET),m68k-embedded)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),powerpc-linux) ifeq ($(FULL_TARGET),powerpc-linux)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),powerpc-netbsd) ifeq ($(FULL_TARGET),powerpc-netbsd)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),powerpc-amiga) ifeq ($(FULL_TARGET),powerpc-amiga)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),powerpc-macos) ifeq ($(FULL_TARGET),powerpc-macos)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),powerpc-darwin) ifeq ($(FULL_TARGET),powerpc-darwin)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),powerpc-morphos) ifeq ($(FULL_TARGET),powerpc-morphos)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),powerpc-embedded) ifeq ($(FULL_TARGET),powerpc-embedded)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),sparc-linux) ifeq ($(FULL_TARGET),sparc-linux)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),sparc-netbsd) ifeq ($(FULL_TARGET),sparc-netbsd)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),sparc-solaris) ifeq ($(FULL_TARGET),sparc-solaris)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),sparc-embedded) ifeq ($(FULL_TARGET),sparc-embedded)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),x86_64-linux) ifeq ($(FULL_TARGET),x86_64-linux)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),x86_64-freebsd) ifeq ($(FULL_TARGET),x86_64-freebsd)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),x86_64-darwin) ifeq ($(FULL_TARGET),x86_64-darwin)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),x86_64-win64) ifeq ($(FULL_TARGET),x86_64-win64)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_WINUNITS-BASE=1
REQUIRE_PACKAGES_WINUNITS-JEDI=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),x86_64-embedded) ifeq ($(FULL_TARGET),x86_64-embedded)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),arm-linux) ifeq ($(FULL_TARGET),arm-linux)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),arm-palmos) ifeq ($(FULL_TARGET),arm-palmos)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),arm-darwin) ifeq ($(FULL_TARGET),arm-darwin)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),arm-wince) ifeq ($(FULL_TARGET),arm-wince)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),arm-gba) ifeq ($(FULL_TARGET),arm-gba)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),arm-nds) ifeq ($(FULL_TARGET),arm-nds)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),arm-embedded) ifeq ($(FULL_TARGET),arm-embedded)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),arm-symbian) ifeq ($(FULL_TARGET),arm-symbian)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),powerpc64-linux) ifeq ($(FULL_TARGET),powerpc64-linux)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),powerpc64-darwin) ifeq ($(FULL_TARGET),powerpc64-darwin)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),powerpc64-embedded) ifeq ($(FULL_TARGET),powerpc64-embedded)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),avr-embedded) ifeq ($(FULL_TARGET),avr-embedded)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),armeb-linux) ifeq ($(FULL_TARGET),armeb-linux)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifeq ($(FULL_TARGET),armeb-embedded) ifeq ($(FULL_TARGET),armeb-embedded)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_FV=1 REQUIRE_PACKAGES_FV=1
REQUIRE_PACKAGES_GDBINT=1 REQUIRE_PACKAGES_GDBINT=1
REQUIRE_PACKAGES_REGEXPR=1 REQUIRE_PACKAGES_REGEXPR=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_CHM=1
endif endif
ifdef REQUIRE_PACKAGES_RTL ifdef REQUIRE_PACKAGES_RTL
PACKAGEDIR_RTL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR)))))) PACKAGEDIR_RTL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
@ -2056,6 +2238,84 @@ ifdef UNITDIR_REGEXPR
override COMPILER_UNITDIR+=$(UNITDIR_REGEXPR) override COMPILER_UNITDIR+=$(UNITDIR_REGEXPR)
endif endif
endif endif
ifdef REQUIRE_PACKAGES_FCL-BASE
PACKAGEDIR_FCL-BASE:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fcl-base/Makefile.fpc,$(PACKAGESDIR))))))
ifneq ($(PACKAGEDIR_FCL-BASE),)
ifneq ($(wildcard $(PACKAGEDIR_FCL-BASE)/units/$(TARGETSUFFIX)),)
UNITDIR_FCL-BASE=$(PACKAGEDIR_FCL-BASE)/units/$(TARGETSUFFIX)
else
UNITDIR_FCL-BASE=$(PACKAGEDIR_FCL-BASE)
endif
ifdef CHECKDEPEND
$(PACKAGEDIR_FCL-BASE)/$(FPCMADE):
$(MAKE) -C $(PACKAGEDIR_FCL-BASE) $(FPCMADE)
override ALLDEPENDENCIES+=$(PACKAGEDIR_FCL-BASE)/$(FPCMADE)
endif
else
PACKAGEDIR_FCL-BASE=
UNITDIR_FCL-BASE:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /fcl-base/Package.fpc,$(UNITSDIR)))))
ifneq ($(UNITDIR_FCL-BASE),)
UNITDIR_FCL-BASE:=$(firstword $(UNITDIR_FCL-BASE))
else
UNITDIR_FCL-BASE=
endif
endif
ifdef UNITDIR_FCL-BASE
override COMPILER_UNITDIR+=$(UNITDIR_FCL-BASE)
endif
endif
ifdef REQUIRE_PACKAGES_FCL-XML
PACKAGEDIR_FCL-XML:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fcl-xml/Makefile.fpc,$(PACKAGESDIR))))))
ifneq ($(PACKAGEDIR_FCL-XML),)
ifneq ($(wildcard $(PACKAGEDIR_FCL-XML)/units/$(TARGETSUFFIX)),)
UNITDIR_FCL-XML=$(PACKAGEDIR_FCL-XML)/units/$(TARGETSUFFIX)
else
UNITDIR_FCL-XML=$(PACKAGEDIR_FCL-XML)
endif
ifdef CHECKDEPEND
$(PACKAGEDIR_FCL-XML)/$(FPCMADE):
$(MAKE) -C $(PACKAGEDIR_FCL-XML) $(FPCMADE)
override ALLDEPENDENCIES+=$(PACKAGEDIR_FCL-XML)/$(FPCMADE)
endif
else
PACKAGEDIR_FCL-XML=
UNITDIR_FCL-XML:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /fcl-xml/Package.fpc,$(UNITSDIR)))))
ifneq ($(UNITDIR_FCL-XML),)
UNITDIR_FCL-XML:=$(firstword $(UNITDIR_FCL-XML))
else
UNITDIR_FCL-XML=
endif
endif
ifdef UNITDIR_FCL-XML
override COMPILER_UNITDIR+=$(UNITDIR_FCL-XML)
endif
endif
ifdef REQUIRE_PACKAGES_CHM
PACKAGEDIR_CHM:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /chm/Makefile.fpc,$(PACKAGESDIR))))))
ifneq ($(PACKAGEDIR_CHM),)
ifneq ($(wildcard $(PACKAGEDIR_CHM)/units/$(TARGETSUFFIX)),)
UNITDIR_CHM=$(PACKAGEDIR_CHM)/units/$(TARGETSUFFIX)
else
UNITDIR_CHM=$(PACKAGEDIR_CHM)
endif
ifdef CHECKDEPEND
$(PACKAGEDIR_CHM)/$(FPCMADE):
$(MAKE) -C $(PACKAGEDIR_CHM) $(FPCMADE)
override ALLDEPENDENCIES+=$(PACKAGEDIR_CHM)/$(FPCMADE)
endif
else
PACKAGEDIR_CHM=
UNITDIR_CHM:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /chm/Package.fpc,$(UNITSDIR)))))
ifneq ($(UNITDIR_CHM),)
UNITDIR_CHM:=$(firstword $(UNITDIR_CHM))
else
UNITDIR_CHM=
endif
endif
ifdef UNITDIR_CHM
override COMPILER_UNITDIR+=$(UNITDIR_CHM)
endif
endif
ifdef REQUIRE_PACKAGES_GRAPH ifdef REQUIRE_PACKAGES_GRAPH
PACKAGEDIR_GRAPH:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /graph/Makefile.fpc,$(PACKAGESDIR)))))) PACKAGEDIR_GRAPH:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /graph/Makefile.fpc,$(PACKAGESDIR))))))
ifneq ($(PACKAGEDIR_GRAPH),) ifneq ($(PACKAGEDIR_GRAPH),)
@ -2082,6 +2342,58 @@ ifdef UNITDIR_GRAPH
override COMPILER_UNITDIR+=$(UNITDIR_GRAPH) override COMPILER_UNITDIR+=$(UNITDIR_GRAPH)
endif endif
endif endif
ifdef REQUIRE_PACKAGES_WINUNITS-BASE
PACKAGEDIR_WINUNITS-BASE:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /winunits-base/Makefile.fpc,$(PACKAGESDIR))))))
ifneq ($(PACKAGEDIR_WINUNITS-BASE),)
ifneq ($(wildcard $(PACKAGEDIR_WINUNITS-BASE)/units/$(TARGETSUFFIX)),)
UNITDIR_WINUNITS-BASE=$(PACKAGEDIR_WINUNITS-BASE)/units/$(TARGETSUFFIX)
else
UNITDIR_WINUNITS-BASE=$(PACKAGEDIR_WINUNITS-BASE)
endif
ifdef CHECKDEPEND
$(PACKAGEDIR_WINUNITS-BASE)/$(FPCMADE):
$(MAKE) -C $(PACKAGEDIR_WINUNITS-BASE) $(FPCMADE)
override ALLDEPENDENCIES+=$(PACKAGEDIR_WINUNITS-BASE)/$(FPCMADE)
endif
else
PACKAGEDIR_WINUNITS-BASE=
UNITDIR_WINUNITS-BASE:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /winunits-base/Package.fpc,$(UNITSDIR)))))
ifneq ($(UNITDIR_WINUNITS-BASE),)
UNITDIR_WINUNITS-BASE:=$(firstword $(UNITDIR_WINUNITS-BASE))
else
UNITDIR_WINUNITS-BASE=
endif
endif
ifdef UNITDIR_WINUNITS-BASE
override COMPILER_UNITDIR+=$(UNITDIR_WINUNITS-BASE)
endif
endif
ifdef REQUIRE_PACKAGES_WINUNITS-JEDI
PACKAGEDIR_WINUNITS-JEDI:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /winunits-jedi/Makefile.fpc,$(PACKAGESDIR))))))
ifneq ($(PACKAGEDIR_WINUNITS-JEDI),)
ifneq ($(wildcard $(PACKAGEDIR_WINUNITS-JEDI)/units/$(TARGETSUFFIX)),)
UNITDIR_WINUNITS-JEDI=$(PACKAGEDIR_WINUNITS-JEDI)/units/$(TARGETSUFFIX)
else
UNITDIR_WINUNITS-JEDI=$(PACKAGEDIR_WINUNITS-JEDI)
endif
ifdef CHECKDEPEND
$(PACKAGEDIR_WINUNITS-JEDI)/$(FPCMADE):
$(MAKE) -C $(PACKAGEDIR_WINUNITS-JEDI) $(FPCMADE)
override ALLDEPENDENCIES+=$(PACKAGEDIR_WINUNITS-JEDI)/$(FPCMADE)
endif
else
PACKAGEDIR_WINUNITS-JEDI=
UNITDIR_WINUNITS-JEDI:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /winunits-jedi/Package.fpc,$(UNITSDIR)))))
ifneq ($(UNITDIR_WINUNITS-JEDI),)
UNITDIR_WINUNITS-JEDI:=$(firstword $(UNITDIR_WINUNITS-JEDI))
else
UNITDIR_WINUNITS-JEDI=
endif
endif
ifdef UNITDIR_WINUNITS-JEDI
override COMPILER_UNITDIR+=$(UNITDIR_WINUNITS-JEDI)
endif
endif
ifndef NOCPUDEF ifndef NOCPUDEF
override FPCOPTDEF=$(ARCH) override FPCOPTDEF=$(ARCH)
endif endif

View File

@ -21,7 +21,7 @@ fpcpackage=y
options=-Sg options=-Sg
[require] [require]
packages=fv gdbint regexpr packages=fv gdbint regexpr chm
packages_go32v2=graph packages_go32v2=graph
libc=y libc=y

186
ide/wchmhwrap.pas Normal file
View File

@ -0,0 +1,186 @@
{
This file is part of the Free Pascal Integrated Development Environment
Copyright (c) 2008 by Marco van de Voort
Wrapper for CHM reading to avoid having to import Delphi units into whtmlhlp,
which can cause all kinds of namespace conflicts.
See the file COPYING.FPC, included in this distribution,
for details about the copyright.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
**********************************************************************}
unit wchmhwrap;
interface
{$Mode Delphi}
Uses wutils,whelp,whtml,SysUtils,ChmReader,ChmSiteMap,Classes;
Type
// TopicLinks: PTopicLinkCollection;IndexEntries : PUnsortedIndexEntryCollection;
TChmWrapper = Class
private
ffs : Classes.TFileStream;
fchmr : TChmReader;
findex: TChmSiteMap;
ftopic: TChmSiteMap;
floaded : boolean;
public
constructor Create(name:String);
function LoadIndex(id:integer;TopicLinks: PTopicLinkCollection;IndexEntries : PUnsortedIndexEntryCollection;helpfacility:PHelpFacility):boolean;
function GetTopic(name:string):PMemoryTextFile;
destructor Destroy;override;
end;
function combinepaths(relpath,basepath:String):String;
implementation
function combinepaths(relpath,basepath:String):String;
begin
{$ifdef combinedebug}
debugmessage({$i %file%},'combine in "'+relpath+'" and "'+basepath+'"'+{$i %line%},1,1);
{$endif}
if relpath='' then exit;
if relpath[length(relpath)]<>'/' Then
basepath:=extractfiledir(basepath);
while (length(relpath)>0) and (copy(relpath,1,3)='../') do
begin
basepath:=extractfiledir(basepath);
delete(relpath,1,3);
end;
{$ifdef combinedebug}
debugmessage({$i %file%},'combine out "'+relpath+'" and "'+basepath+'"'+{$i %line%},1,1);
{$endif}
result:=basepath+relpath;
end;
Constructor TChmWrapper.Create(name:string);
begin
ffs:=Classes.TFileStream.create(name,fmOpenRead);
fchmr:=TChmReader.Create(ffs,True);
findex:=nil;
if not fchmr.isvalidfile then
begin
freeandnil(fchmr);
freeandnil(ffs);
exit;
end;
{$ifdef wdebug}
debugmessage({$i %file%},'TCHMWrapper: before sitemap creation '+{$i %line%},1,1);
{$endif}
findex:=TChmSiteMap.create(stindex);
ftopic:=TChmSiteMap.create(sttoc);
{$ifdef wdebug}
debugmessage({$i %file%},'TCHMWrapper: after sitemap creation '+{$i %line%}+inttostr(ptrint(findex)),1,1);
{$endif}
floaded:=false;
end;
function TChmWrapper.LoadIndex(id:integer;TopicLinks: PTopicLinkCollection;IndexEntries : PUnsortedIndexEntryCollection;helpfacility:PHelpFacility):boolean;
function FormatAlias(Alias: string): string;
begin
if Assigned(HelpFacility) then
if length(Alias)>HelpFacility^.IndexTabSize-4 then
Alias:=Trim(copy(Alias,1,HelpFacility^.IndexTabSize-4-2))+'..';
// if (length(alias)>0) and (alias[1]<>'/') then Alias:='/'+alias;
FormatAlias:=Alias;
end;
var
m : Classes.TMemoryStream;
i,j : integer;
item : TChmSiteMapItem;
tli: integer;
begin
result:=false;
if not assigned (fchmr) then exit;
if floaded then exit;
// m:=Classes.TMemorystream.create;
m:=fchmr.getobject(fchmr.indexfile);
try
{$ifdef wdebug}
debugmessage({$i %file%},'TCHMWrapper: before loadfromstream '+{$i %line%},1,1);
debugmessage({$i %file%},'TCHMWrapper: stream size loaded'+inttostr(m.size),1,1);
{$endif}
findex.loadfromStream(m);
finally
freeandnil(m);
end;
{$ifdef wdebug}
debugmessage({$i %file%},'TCHMWrapper: loadindex after final '+{$i %line%},1,1);
{$endif}
tli:=TopicLinks^.AddItem(fchmr.defaultpage);
TLI:=EncodeHTMLCtx(ID,TLI+1);
IndexEntries^.Insert(NewIndexEntry( FormatAlias('Table of contents'),ID,TLI));
for i:=0 to findex.items.count-1 do
begin
item:=findex.items.item[i];
tli:=TopicLinks^.AddItem('/'+item.local);
TLI:=EncodeHTMLCtx(ID,TLI+1);
IndexEntries^.Insert(NewIndexEntry( FormatAlias(item.text),ID,TLI));
end;
{$ifdef wdebug}
debugmessage({$i %file%},'TCHMWrapper: endloadindex '+{$i %line%},1,1);
{$endif}
floaded:=true;
result:=true;
end;
function TChmWrapper.GetTopic(name:string):PMemoryTextFile;
var
m : Classes.TMemorystream;
linedata:Classes.TStringList;
i : integer;
begin
result:=nil;
if not assigned(fchmr) or (name='') then exit;
If name[1]<>'/' Then
name:='/'+name;
linedata:=Classes.TStringList.create;
try
{$ifdef wdebug}
debugmessage({$i %file%},'TCHMWrapper: Getting file '+name+' '+{$i %line%},1,1);
{$endif}
// if uppercase(name)='TABLE OF CONTENTS' Then
// m:=fchmr.getobject(fchmr.tocfile)
// else
m:=fchmr.getobject(name);
if not assigned(m) then exit;
linedata.loadfromstream(m);
result:=new(PMemoryTextFile,Init);
for i:=0 to linedata.count-1 do
result.addline(linedata[i]);
finally
m.free;
linedata.free;
end;
end;
destructor TChmWrapper.Destroy;
begin
freeandnil(ftopic);
freeandnil(findex);
freeandnil(fchmr);
end;
// m:=r.getobject(r.indexfile);
// siteindex.loadfromStream(m);
end.

View File

@ -115,6 +115,18 @@ type
procedure DocHorizontalRuler; virtual; procedure DocHorizontalRuler; virtual;
end; end;
Type
PTopicLinkCollection = ^TTopicLinkCollection;
TTopicLinkCollection = object(TStringCollection)
procedure Insert(Item: Pointer); virtual;
function At(Index: sw_Integer): PString;
function AddItem(Item: string): integer;
end;
function EncodeHTMLCtx(FileID: integer; LinkNo: word): longint;
procedure DecodeHTMLCtx(Ctx: longint; var FileID: word; var LinkNo: word);
implementation implementation
uses uses
@ -859,6 +871,47 @@ procedure THTMLParser.DocHorizontalRuler;
begin begin
end; end;
function EncodeHTMLCtx(FileID: integer; LinkNo: word): longint;
var Ctx: longint;
begin
Ctx:=(longint(FileID) shl 16)+LinkNo;
EncodeHTMLCtx:=Ctx;
end;
procedure DecodeHTMLCtx(Ctx: longint; var FileID: word; var LinkNo: word);
begin
if (Ctx shr 16)=0 then
begin
FileID:=$ffff; LinkNo:=0;
end
else
begin
FileID:=Ctx shr 16; LinkNo:=Ctx and $ffff;
end;
end;
procedure TTopicLinkCollection.Insert(Item: Pointer);
begin
AtInsert(Count,Item);
end;
function TTopicLinkCollection.At(Index: sw_Integer): PString;
begin
At:=inherited At(Index);
end;
function TTopicLinkCollection.AddItem(Item: string): integer;
var Idx: sw_integer;
begin
if Item='' then Idx:=-1 else
if Search(@Item,Idx)=false then
begin
AtInsert(Count,NewStr(Item));
Idx:=Count-1;
end;
AddItem:=Idx;
end;
END. END.

View File

@ -14,11 +14,12 @@ unit WHTMLHlp;
interface interface
uses Objects,WHTML,WAnsi,WHelp; uses Objects,WHTML,WAnsi,WHelp,WChmHWrap;
const const
extHTML = '.htm'; extHTML = '.htm';
extHTMLIndex = '.htx'; extHTMLIndex = '.htx';
extCHM = '.chm';
ListIndent = 2; ListIndent = 2;
DefIndent = 4; DefIndent = 4;
@ -28,13 +29,6 @@ const
type type
THTMLSection = (hsNone,hsHeading1,hsHeading2,hsHeading3,hsHeading4,hsHeading5,hsHeading6); THTMLSection = (hsNone,hsHeading1,hsHeading2,hsHeading3,hsHeading4,hsHeading5,hsHeading6);
PTopicLinkCollection = ^TTopicLinkCollection;
TTopicLinkCollection = object(TStringCollection)
procedure Insert(Item: Pointer); virtual;
function At(Index: sw_Integer): PString;
function AddItem(Item: string): integer;
end;
TParagraphAlign = (paLeft,paCenter,paRight); TParagraphAlign = (paLeft,paCenter,paRight);
PTableElement = ^TTableElement; PTableElement = ^TTableElement;
@ -116,6 +110,7 @@ type
procedure DocTableHeaderItem(Entered: boolean); virtual; procedure DocTableHeaderItem(Entered: boolean); virtual;
procedure DocTableItem(Entered: boolean); virtual; procedure DocTableItem(Entered: boolean); virtual;
procedure DocHorizontalRuler; virtual; procedure DocHorizontalRuler; virtual;
function CanonicalizeURL(const Base,Relative:String):string; virtual;
public public
function GetSectionColor(Section: THTMLSection; var Color: byte): boolean; virtual; function GetSectionColor(Section: THTMLSection; var Color: byte): boolean; virtual;
private private
@ -148,24 +143,28 @@ type
procedure AddCharAt(C: char;AtPtr : sw_word); procedure AddCharAt(C: char;AtPtr : sw_word);
function AddTextAt(const S: string;AtPtr : sw_word) : sw_word; function AddTextAt(const S: string;AtPtr : sw_word) : sw_word;
function ComputeTextLength(TStart,TEnd : sw_word) : sw_word; function ComputeTextLength(TStart,TEnd : sw_word) : sw_word;
end; end;
PCHMTopicRenderer = ^TCHMTopicRenderer;
TCHMTopicRenderer = object(THTMLTopicRenderer)
function CanonicalizeURL(const Base,Relative:String):string; virtual;
end;
PCustomHTMLHelpFile = ^TCustomHTMLHelpFile; PCustomHTMLHelpFile = ^TCustomHTMLHelpFile;
TCustomHTMLHelpFile = object(THelpFile) TCustomHTMLHelpFile = object(THelpFile)
constructor Init(AID: word); constructor Init(AID: word);
destructor Done; virtual; destructor Done; virtual;
public public
Renderer: PHTMLTopicRenderer;
function GetTopicInfo(T: PTopic) : string; virtual; function GetTopicInfo(T: PTopic) : string; virtual;
function SearchTopic(HelpCtx: THelpCtx): PTopic; virtual; function SearchTopic(HelpCtx: THelpCtx): PTopic; virtual;
function ReadTopic(T: PTopic): boolean; virtual; function ReadTopic(T: PTopic): boolean; virtual;
private private
Renderer: PHTMLTopicRenderer;
DefaultFileName: string; DefaultFileName: string;
CurFileName: string; CurFileName: string;
TopicLinks: PTopicLinkCollection; TopicLinks: PTopicLinkCollection;
end; end;
PHTMLHelpFile = ^THTMLHelpFile; PHTMLHelpFile = ^THTMLHelpFile;
THTMLHelpFile = object(TCustomHTMLHelpFile) THTMLHelpFile = object(TCustomHTMLHelpFile)
constructor Init(AFileName: string; AID: word; ATOCEntry: string); constructor Init(AFileName: string; AID: word; ATOCEntry: string);
@ -175,6 +174,19 @@ type
TOCEntry: string; TOCEntry: string;
end; end;
PCHMHelpFile = ^TCHMHelpFile;
TCHMHelpFile = object(TCustomHTMLHelpFile)
constructor Init(AFileName: string; AID: word);
destructor Done; virtual;
public
function LoadIndex: boolean; virtual;
function ReadTopic(T: PTopic): boolean; virtual;
function GetTopicInfo(T: PTopic) : string; virtual;
function SearchTopic(HelpCtx: THelpCtx): PTopic; virtual;
private
Chmw: TCHMWrapper;
end;
PHTMLIndexHelpFile = ^THTMLIndexHelpFile; PHTMLIndexHelpFile = ^THTMLIndexHelpFile;
THTMLIndexHelpFile = object(TCustomHTMLHelpFile) THTMLIndexHelpFile = object(TCustomHTMLHelpFile)
constructor Init(AFileName: string; AID: word); constructor Init(AFileName: string; AID: word);
@ -527,25 +539,6 @@ begin
DefHTMLGetSectionColor:=false; DefHTMLGetSectionColor:=false;
end; end;
function EncodeHTMLCtx(FileID: integer; LinkNo: word): longint;
var Ctx: longint;
begin
Ctx:=(longint(FileID) shl 16)+LinkNo;
EncodeHTMLCtx:=Ctx;
end;
procedure DecodeHTMLCtx(Ctx: longint; var FileID: word; var LinkNo: word);
begin
if (Ctx shr 16)=0 then
begin
FileID:=$ffff; LinkNo:=0;
end
else
begin
FileID:=Ctx shr 16; LinkNo:=Ctx and $ffff;
end;
end;
function CharStr(C: char; Count: byte): string; function CharStr(C: char; Count: byte): string;
var S: string; var S: string;
begin begin
@ -554,27 +547,6 @@ begin
CharStr:=S; CharStr:=S;
end; end;
procedure TTopicLinkCollection.Insert(Item: Pointer);
begin
AtInsert(Count,Item);
end;
function TTopicLinkCollection.At(Index: sw_Integer): PString;
begin
At:=inherited At(Index);
end;
function TTopicLinkCollection.AddItem(Item: string): integer;
var Idx: sw_integer;
begin
if Item='' then Idx:=-1 else
if Search(@Item,Idx)=false then
begin
AtInsert(Count,NewStr(Item));
Idx:=Count-1;
end;
AddItem:=Idx;
end;
function THTMLTopicRenderer.DocAddTextChar(C: char): boolean; function THTMLTopicRenderer.DocAddTextChar(C: char): boolean;
var Added: boolean; var Added: boolean;
@ -662,9 +634,9 @@ begin
if Name<>'' then if Name<>'' then
begin begin
Topic^.NamedMarks^.InsertStr(Name); Topic^.NamedMarks^.InsertStr(Name);
{$ifdef DEBUG} {$IFDEF WDEBUG}
DebugMessage('',' Adding Name "'+Name+'"',1,1); DebugMessage('',' Adding Name "'+Name+'"',1,1);
{$endif DEBUG} {$endif WDEBUG}
AddChar(hscNamedMark); AddChar(hscNamedMark);
end; end;
if (HRef<>'')then if (HRef<>'')then
@ -674,13 +646,17 @@ begin
begin begin
InAnchor:=true; InAnchor:=true;
AddChar(hscLink); AddChar(hscLink);
{$IFDEF WDEBUG}
DebugMessage('',' Adding Link1 "'+HRef+'"'+' "'+url+'"',1,1);
{$endif WDEBUG}
if pos('#',HRef)=1 then if pos('#',HRef)=1 then
Href:=NameAndExtOf(GetFilename)+Href; Href:=NameAndExtOf(GetFilename)+Href;
HRef:=CompleteURL(URL,HRef); HRef:=canonicalizeURL(URL,HRef);
LinkIndexes[LinkPtr]:=TopicLinks^.AddItem(HRef); LinkIndexes[LinkPtr]:=TopicLinks^.AddItem(HRef);
{$ifdef DEBUG} {$IFDEF WDEBUG}
DebugMessage('',' Adding Link "'+HRef+'"',1,1); DebugMessage('',' Adding Link2 "'+HRef+'"',1,1);
{$endif DEBUG} {$endif WDEBUG}
Inc(LinkPtr); Inc(LinkPtr);
end; end;
end; end;
@ -694,10 +670,10 @@ end;
procedure THTMLTopicRenderer.DocUnknownTag; procedure THTMLTopicRenderer.DocUnknownTag;
begin begin
{$ifdef DEBUG} {$IFDEF WDEBUG}
DebugMessage('',' Unknown tag "'+TagName+'" params "'+ DebugMessage('',' Unknown tag "'+TagName+'" params "'+
TagParams+'"',1,1); TagParams+'"',1,1);
{$endif DEBUG} {$endif WDEBUG}
end; end;
procedure DecodeAlign(Align: string; var PAlign: TParagraphAlign); procedure DecodeAlign(Align: string; var PAlign: TParagraphAlign);
@ -740,6 +716,12 @@ begin
end; end;
end; end;
Function THTMLTopicRenderer.CanonicalizeURL(const Base,Relative:String):string;
// uses info from filesystem (curdir) -> overriden for CHM.
begin
CanonicalizeURL:=CompleteURL(Base,relative);
end;
procedure THTMLTopicRenderer.DocParagraph(Entered: boolean); procedure THTMLTopicRenderer.DocParagraph(Entered: boolean);
var Align: string; var Align: string;
begin begin
@ -776,20 +758,20 @@ var
begin begin
if pos('tex4ht:',Comment)=0 then if pos('tex4ht:',Comment)=0 then
exit; exit;
{$ifdef DEBUG} {$IFDEF WDEBUG}
DebugMessage(GetFileName,'tex4ht comment "' DebugMessage(GetFileName,'tex4ht comment "'
+Comment+'"',Line,1); +Comment+'"',Line,1);
{$endif DEBUG} {$endif WDEBUG}
if SuppressOutput then if SuppressOutput then
begin begin
if (pos(SuppressUntil,Comment)=0) then if (pos(SuppressUntil,Comment)=0) then
exit exit
else else
begin begin
{$ifdef DEBUG} {$IFDEF WDEBUG}
DebugMessage(GetFileName,' Found '+SuppressUntil+'comment "' DebugMessage(GetFileName,' Found '+SuppressUntil+'comment "'
+Comment+'" SuppressOuput reset to false',Line,1); +Comment+'" SuppressOuput reset to false',Line,1);
{$endif DEBUG} {$endif WDEBUG}
SuppressOutput:=false; SuppressOutput:=false;
SuppressUntil:=''; SuppressUntil:='';
end; end;
@ -797,20 +779,20 @@ begin
if (pos('tex4ht:graphics ',Comment)>0) and if (pos('tex4ht:graphics ',Comment)>0) and
LastAnsiLoadFailed then LastAnsiLoadFailed then
begin begin
{$ifdef DEBUG} {$IFDEF WDEBUG}
DebugMessage(GetFileName,' Using tex4ht comment "' DebugMessage(GetFileName,' Using tex4ht comment "'
+Comment+'"',Line,1); +Comment+'"',Line,1);
{$endif DEBUG} {$endif WDEBUG}
{ Try again with this info } { Try again with this info }
TagParams:=Comment; TagParams:=Comment;
DocImage; DocImage;
end; end;
if (pos('tex4ht:syntaxdiagram ',Comment)>0) then if (pos('tex4ht:syntaxdiagram ',Comment)>0) then
begin begin
{$ifdef DEBUG} {$IFDEF WDEBUG}
DebugMessage(GetFileName,' Using tex4ht:syntaxdiagram comment "' DebugMessage(GetFileName,' Using tex4ht:syntaxdiagram comment "'
+Comment+'"',Line,1); +Comment+'"',Line,1);
{$endif DEBUG} {$endif WDEBUG}
{ Try again with this info } { Try again with this info }
TagParams:=Comment; TagParams:=Comment;
DocImage; DocImage;
@ -822,10 +804,10 @@ begin
end; end;
if (pos('tex4ht:mysyntdiag ',Comment)>0) then if (pos('tex4ht:mysyntdiag ',Comment)>0) then
begin begin
{$ifdef DEBUG} {$IFDEF WDEBUG}
DebugMessage(GetFileName,' Using tex4ht:mysyntdiag comment "' DebugMessage(GetFileName,' Using tex4ht:mysyntdiag comment "'
+Comment+'"',Line,1); +Comment+'"',Line,1);
{$endif DEBUG} {$endif WDEBUG}
{ Try again with this info } { Try again with this info }
TagParams:=Comment; TagParams:=Comment;
DocGetTagParam('SRC',src); DocGetTagParam('SRC',src);
@ -849,16 +831,16 @@ var Name,Src,Alt,SrcLine: string;
begin begin
if SuppressOutput then if SuppressOutput then
exit; exit;
{$ifdef DEBUG} {$IFDEF WDEBUG}
if not DocGetTagParam('NAME',Name) then if not DocGetTagParam('NAME',Name) then
Name:='<No name>'; Name:='<No name>';
DebugMessage(GetFileName,' Image "'+Name+'"',Line,1); DebugMessage(GetFileName,' Image "'+Name+'"',Line,1);
{$endif DEBUG} {$endif WDEBUG}
if DocGetTagParam('SRC',src) then if DocGetTagParam('SRC',src) then
begin begin
{$ifdef DEBUG} {$IFDEF WDEBUG}
DebugMessage(GetFileName,' Image source tag "'+Src+'"',Line,1); DebugMessage(GetFileName,' Image source tag "'+Src+'"',Line,1);
{$endif DEBUG} {$endif WDEBUG}
if src<>'' then if src<>'' then
begin begin
src:=CompleteURL(URL,src); src:=CompleteURL(URL,src);
@ -866,24 +848,24 @@ begin
Try to see if a file with same name and extension .git Try to see if a file with same name and extension .git
exists PM } exists PM }
src:=DirAndNameOf(src)+'.ans'; src:=DirAndNameOf(src)+'.ans';
{$ifdef DEBUG} {$IFDEF WDEBUG}
DebugMessage(GetFileName,' Trying "'+Src+'"',Line,1); DebugMessage(GetFileName,' Trying "'+Src+'"',Line,1);
{$endif DEBUG} {$endif WDEBUG}
if not ExistsFile(src) then if not ExistsFile(src) then
begin begin
DocGetTagParam('SRC',src); DocGetTagParam('SRC',src);
src:=DirAndNameOf(src)+'.ans'; src:=DirAndNameOf(src)+'.ans';
src:=CompleteURL(DirOf(URL)+'../',src); src:=CompleteURL(DirOf(URL)+'../',src);
{$ifdef DEBUG} {$IFDEF WDEBUG}
DebugMessage(GetFileName,' Trying "'+Src+'"',Line,1); DebugMessage(GetFileName,' Trying "'+Src+'"',Line,1);
{$endif DEBUG} {$endif wDEBUG}
end; end;
if not ExistsFile(src) then if not ExistsFile(src) then
begin begin
LastAnsiLoadFailed:=true; LastAnsiLoadFailed:=true;
{$ifdef DEBUG} {$IFDEF WDEBUG}
DebugMessage(GetFileName,' "'+Src+'" not found',Line,1); DebugMessage(GetFileName,' "'+Src+'" not found',Line,1);
{$endif DEBUG} {$endif WDEBUG}
end end
else else
begin begin
@ -908,9 +890,9 @@ begin
if not ExistsFile(src) then if not ExistsFile(src) then
begin begin
LastAnsiLoadFailed:=true; LastAnsiLoadFailed:=true;
{$ifdef DEBUG} {$IFDEF WDEBUG}
DebugMessage(GetFileName,' "'+Src+'" not found',Line,1); DebugMessage(GetFileName,' "'+Src+'" not found',Line,1);
{$endif DEBUG} {$endif WDEBUG}
end end
else else
begin begin
@ -1336,6 +1318,11 @@ begin
BuildTopic:=OK; BuildTopic:=OK;
end; end;
Function TCHMTopicRenderer.CanonicalizeURL(const Base,Relative:String):string;
begin
CanonicalizeUrl:=combinepaths(relative,base);
end;
constructor TCustomHTMLHelpFile.Init(AID: word); constructor TCustomHTMLHelpFile.Init(AID: word);
begin begin
inherited Init(AID); inherited Init(AID);
@ -1388,10 +1375,14 @@ begin
else else
begin begin
Link:=TopicLinks^.At((T^.HelpCtx and $ffff)-1)^; Link:=TopicLinks^.At((T^.HelpCtx and $ffff)-1)^;
{$IFDEF WDEBUG}
DebugMessage(Link,' looking before for ',1,1);
{$endif WDEBUG}
Link:=FormatPath(Link); Link:=FormatPath(Link);
{$ifdef DEBUG_WHTMLHLP} {$IFDEF WDEBUG}
DebugMessage(Link,' looking for',1,1); DebugMessage(Link,' looking after for ',1,1);
{$endif DEBUG_WHTMLHLP} {$endif WDEBUG}
P:=Pos('#',Link); P:=Pos('#',Link);
if P>0 then if P>0 then
begin begin
@ -1425,10 +1416,15 @@ begin
else else
begin begin
Link:=TopicLinks^.At((T^.HelpCtx and $ffff)-1)^; Link:=TopicLinks^.At((T^.HelpCtx and $ffff)-1)^;
{$IFDEF WDEBUG}
DebugMessage(Link,' looking before for ',1,1);
{$endif WDEBUG}
Link:=FormatPath(Link); Link:=FormatPath(Link);
{$ifdef DEBUG} {$IFDEF WDEBUG}
DebugMessage(Link,' looking for',1,1); DebugMessage(Link,' looking after for ',1,1);
{$endif DEBUG} {$endif WDEBUG}
P:=Pos('#',Link); P:=Pos('#',Link);
if P>0 then if P>0 then
begin begin
@ -1450,18 +1446,18 @@ begin
end; end;
if (HTMLFile=nil) then if (HTMLFile=nil) then
begin begin
{$ifdef DEBUG} {$IFDEF WDEBUG}
DebugMessage(Link,' filename not known :(',1,1); DebugMessage(Link,' filename not known :(',1,1);
{$endif DEBUG} {$endif DEBUG}
end; end;
if (p>1) and (HTMLFile=nil) then if (p>1) and (HTMLFile=nil) then
begin begin
{$ifdef DEBUG} {$IFDEF WDEBUG}
if p>0 then if p>0 then
DebugMessage(Name,Link+'#'+Bookmark+' not found',1,1) DebugMessage(Name,Link+'#'+Bookmark+' not found',1,1)
else else
DebugMessage(Name,Link+' not found',1,1); DebugMessage(Name,Link+' not found',1,1);
{$endif DEBUG} {$endif WDEBUG}
New(HTMLFile, Init); New(HTMLFile, Init);
HTMLFile^.AddLine('<HEAD><TITLE>'+msg_pagenotavailable+'</TITLE></HEAD>'); HTMLFile^.AddLine('<HEAD><TITLE>'+msg_pagenotavailable+'</TITLE></HEAD>');
HTMLFile^.AddLine( HTMLFile^.AddLine(
@ -1474,12 +1470,12 @@ begin
CurFileName:=Name CurFileName:=Name
else else
begin begin
{$ifdef DEBUG} {$IFDEF WDEBUG}
if p>0 then if p>0 then
DebugMessage(Name,Link+'#'+Bookmark+' not found',1,1) DebugMessage(Name,Link+'#'+Bookmark+' not found',1,1)
else else
DebugMessage(Name,Link+' not found',1,1); DebugMessage(Name,Link+' not found',1,1);
{$endif DEBUG} {$endif WDEBUG}
end; end;
if HTMLFile<>nil then Dispose(HTMLFile, Done); if HTMLFile<>nil then Dispose(HTMLFile, Done);
if BookMark='' then if BookMark='' then
@ -1487,10 +1483,10 @@ begin
else else
begin begin
P:=T^.GetNamedMarkIndex(BookMark); P:=T^.GetNamedMarkIndex(BookMark);
{$ifdef DEBUG} {$IFDEF WDEBUG}
if p=-1 then if p=-1 then
DebugMessage(Name,Link+'#'+Bookmark+' bookmark not found',1,1); DebugMessage(Name,Link+'#'+Bookmark+' bookmark not found',1,1);
{$endif DEBUG} {$endif WDEBUG}
T^.StartNamedMark:=P+1; T^.StartNamedMark:=P+1;
end; end;
end; end;
@ -1576,6 +1572,194 @@ begin
LoadIndex:=OK; LoadIndex:=OK;
end; end;
constructor TChmHelpFile.Init(AFileName: string; AID: word);
begin
if inherited Init(AID)=false then Fail;
renderer^.done;
renderer:=New(PCHMTopicRenderer, Init);
DefaultFileName:=AFileName;
if (DefaultFileName='') or not ExistsFile(DefaultFilename) then
begin
Done;
Fail;
end
else
chmw:=TCHMWrapper.Create(DefaultFileName);
end;
function TChmHelpFile.LoadIndex: boolean;
begin
loadindex:=false;
if assigned(chmw) then
loadindex:=chmw.loadindex(id,TopicLinks,IndexEntries,helpfacility);
end;
function TChmHelpFile.SearchTopic(HelpCtx: THelpCtx): PTopic;
function MatchCtx(P: PTopic): boolean;
begin
MatchCtx:=P^.HelpCtx=HelpCtx;
end;
var FileID,LinkNo: word;
P: PTopic;
FName: string;
begin
DecodeHTMLCtx(HelpCtx,FileID,LinkNo);
if (HelpCtx<>0) and (FileID<>ID) then P:=nil else
if (FileID=ID) and (LinkNo>TopicLinks^.Count) then P:=nil else
begin
P:=Topics^.FirstThat(@MatchCtx);
if P=nil then
begin
if LinkNo=0 then
FName:=DefaultFileName
else
FName:=TopicLinks^.At(LinkNo-1)^;
P:=NewTopic(ID,HelpCtx,0,FName,nil,0);
Topics^.Insert(P);
end;
end;
SearchTopic:=P;
end;
function TChmHelpFile.GetTopicInfo(T: PTopic) : string;
var OK: boolean;
Name: string;
Link,Bookmark: string;
P: sw_integer;
begin
Bookmark:='';
OK:=T<>nil;
if OK then
begin
if T^.HelpCtx=0 then
begin
Name:=DefaultFileName;
P:=0;
end
else
begin
Link:=TopicLinks^.At((T^.HelpCtx and $ffff)-1)^;
Link:=FormatPath(Link);
{$IFDEF WDEBUG}
DebugMessage(Link,' looking for',1,1);
{$endif WDEBUG}
P:=Pos('#',Link);
if P>0 then
begin
Bookmark:=copy(Link,P+1,length(Link));
Link:=copy(Link,1,P-1);
end;
{ if CurFileName='' then Name:=Link else
Name:=CompletePath(CurFileName,Link);}
Name:=Link;
end;
end;
GetTopicInfo:=Name+'#'+BookMark;
end;
function TChmHelpFile.ReadTopic(T: PTopic): boolean;
var OK: boolean;
HTMLFile: PMemoryTextFile;
Name: string;
Link,Bookmark: string;
P: sw_integer;
begin
Bookmark:='';
OK:=T<>nil;
if OK then
begin
if T^.HelpCtx=0 then
begin
Name:=DefaultFileName;
P:=0;
end
else
begin
Link:=TopicLinks^.At((T^.HelpCtx and $ffff)-1)^;
{$IFDEF WDEBUG}
DebugMessage(Link,' looking for',1,1);
{$endif WDEBUG}
Link:=FormatPath(Link);
{$IFDEF WDEBUG}
DebugMessage(Link,' looking for',1,1);
{$endif WDEBUG}
P:=Pos('#',Link);
if P>0 then
begin
Bookmark:=copy(Link,P+1,length(Link));
Link:=copy(Link,1,P-1);
end;
{ if CurFileName='' then Name:=Link else
Name:=CompletePath(CurFileName,Link);}
Name:=Link;
end;
HTMLFile:=nil;
if Name<>'' then
HTMLFile:=chmw.gettopic(name);
if (HTMLFile=nil) and (CurFileName<>'') then
begin
Name:=CurFileName;
HTMLFile:=chmw.gettopic(name);
end;
if (HTMLFile=nil) then
begin
{$IFDEF WDEBUG}
DebugMessage(Link,' filename not known :(',1,1);
{$endif WDEBUG}
end;
if (p>1) and (HTMLFile=nil) then
begin
{$IFDEF WDEBUG}
if p>0 then
DebugMessage(Name,Link+'#'+Bookmark+' not found',1,1)
else
DebugMessage(Name,Link+' not found',1,1);
{$endif WDEBUG}
New(HTMLFile, Init);
HTMLFile^.AddLine('<HEAD><TITLE>'+msg_pagenotavailable+'</TITLE></HEAD>');
HTMLFile^.AddLine(
'<BODY>'+
FormatStrStr(msg_cantaccessurl,Name)+'<br><br>'+
'</BODY>');
end;
OK:=Renderer^.BuildTopic(T,Name,HTMLFile,TopicLinks);
if OK then
CurFileName:=Name
else
begin
{$IFDEF WDEBUG}
if p>0 then
DebugMessage(Name,Link+'#'+Bookmark+' not found',1,1)
else
DebugMessage(Name,Link+' not found',1,1);
{$endif WDEBUG}
end;
if HTMLFile<>nil then Dispose(HTMLFile, Done);
if BookMark='' then
T^.StartNamedMark:=0
else
begin
P:=T^.GetNamedMarkIndex(BookMark);
{$IFDEF WDEBUG}
if p=-1 then
DebugMessage(Name,Link+'#'+Bookmark+' bookmark not found',1,1);
{$endif WDEBUG}
T^.StartNamedMark:=P+1;
end;
end;
ReadTopic:=OK;
end;
destructor TChmHelpFile.done;
begin
if assigned(chmw) then
chmw.free;
inherited Done;
end;
function CreateProcHTML(const FileName,Param: string;Index : longint): PHelpFile; function CreateProcHTML(const FileName,Param: string;Index : longint): PHelpFile;
var H: PHelpFile; var H: PHelpFile;
begin begin
@ -1585,6 +1769,15 @@ begin
CreateProcHTML:=H; CreateProcHTML:=H;
end; end;
function CreateProcCHM(const FileName,Param: string;Index : longint): PHelpFile;
var H: PHelpFile;
begin
H:=nil;
if CompareText(copy(ExtOf(FileName),1,length(extCHM)),extCHM)=0 then
H:=New(PCHMHelpFile, Init(FileName,Index));
CreateProcCHM:=H;
end;
function CreateProcHTMLIndex(const FileName,Param: string;Index : longint): PHelpFile; function CreateProcHTMLIndex(const FileName,Param: string;Index : longint): PHelpFile;
var H: PHelpFile; var H: PHelpFile;
begin begin
@ -1598,6 +1791,7 @@ procedure RegisterHelpType;
begin begin
RegisterHelpFileType({$ifdef FPC}@{$endif}CreateProcHTML); RegisterHelpFileType({$ifdef FPC}@{$endif}CreateProcHTML);
RegisterHelpFileType({$ifdef FPC}@{$endif}CreateProcHTMLIndex); RegisterHelpFileType({$ifdef FPC}@{$endif}CreateProcHTMLIndex);
RegisterHelpFileType({$ifdef FPC}@{$endif}CreateProcCHM);
end; end;