diff --git a/Makefile b/Makefile index c1aca703b2..36f9a5e36e 100644 --- a/Makefile +++ b/Makefile @@ -1654,7 +1654,8 @@ ifeq ($(OS_TARGET), win32) $(MAKE) lazarus.res endif $(MAKE) --assume-new=lazarus.pp lazarus$(EXEEXT) -tools: lcl components tools_all +tools: lcl components + $(MAKE) -C tools all: lcl components ide cleanide: $(DEL) $(wildcard *$(OEXT)) diff --git a/Makefile.fpc b/Makefile.fpc index 08cb5e4d75..d19ad8f5a6 100644 --- a/Makefile.fpc +++ b/Makefile.fpc @@ -54,7 +54,8 @@ ifeq ($(OS_TARGET), win32) endif $(MAKE) --assume-new=lazarus.pp lazarus$(EXEEXT) -tools: lcl components tools_all +tools: lcl components + $(MAKE) -C tools all: lcl components ide diff --git a/tools/Makefile b/tools/Makefile index 72cce9ccb3..6d1983d520 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -1,7 +1,8 @@ # -# Don't edit, this file is generated by FPCMake Version 1.1 [2002/01/06] +# Don't edit, this file is generated by FPCMake Version 1.1 [2002/04/23] # default: all +MAKEFILETARGETS=linux go32v2 win32 os2 freebsd beos netbsd amiga atari sunos qnx netware override PATH:=$(subst \,/,$(PATH)) ifeq ($(findstring ;,$(PATH)),) inUnix=1 @@ -13,10 +14,7 @@ PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(SEARCHPATH)))) ifeq ($(PWD),) PWD:=$(strip $(wildcard $(addsuffix /pwd,$(SEARCHPATH)))) ifeq ($(PWD),) -nopwd: - @echo You need the GNU utils package to use this Makefile! - @echo Get ftp://ftp.freepascal.org/pub/fpc/dist/go32v2/utilgo32.zip - @exit +$(error You need the GNU utils package to use this Makefile) else PWD:=$(firstword $(PWD)) SRCEXEEXT= @@ -70,6 +68,22 @@ endif else BASEDIR=. endif +ifdef inOS2 +ifndef ECHO +ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(ECHO),) +ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(ECHO),) +ECHO=echo +else +ECHO:=$(firstword $(ECHO)) +endif +else +ECHO:=$(firstword $(ECHO)) +endif +endif +export ECHO +endif ifndef FPC ifdef PP FPC=$(PP) @@ -93,23 +107,45 @@ ifndef FPC_VERSION FPC_VERSION:=$(shell $(FPC) -iV) endif export FPC FPC_VERSION +unexport CHECKDEPEND ALLDEPENDENCIES +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +COMPILERINFO:=$(shell $(FPC) -iSP -iTP -iSO -iTO) +ifndef CPU_SOURCE +CPU_SOURCE:=$(word 1,$(COMPILERINFO)) +endif +ifndef CPU_TARGET +CPU_TARGET:=$(word 2,$(COMPILERINFO)) +endif +ifndef OS_SOURCE +OS_SOURCE:=$(word 3,$(COMPILERINFO)) +endif +ifndef OS_TARGET +OS_TARGET:=$(word 4,$(COMPILERINFO)) +endif +else +ifndef CPU_SOURCE +CPU_SOURCE:=$(shell $(FPC) -iSP) +endif ifndef CPU_TARGET CPU_TARGET:=$(shell $(FPC) -iTP) endif -ifndef CPU_SOURCE -CPU_SOURCE:=$(shell $(FPC) -iSP) +ifndef OS_SOURCE +OS_SOURCE:=$(shell $(FPC) -iSO) endif ifndef OS_TARGET OS_TARGET:=$(shell $(FPC) -iTO) endif -ifndef OS_SOURCE -OS_SOURCE:=$(shell $(FPC) -iSO) endif FULL_TARGET=$(CPU_TARGET)-$(OS_TARGET) FULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE) ifneq ($(FULL_TARGET),$(FULL_SOURCE)) CROSSCOMPILE=1 endif +ifeq ($(findstring makefile,$(MAKECMDGOALS)),) +ifeq ($(findstring $(OS_TARGET),$(MAKEFILETARGETS)),) +$(error The Makefile doesn't support target $(OS_TARGET), please run fpcmake first) +endif +endif export OS_TARGET OS_SOURCE CPU_TARGET CPU_SOURCE FULL_TARGET FULL_SOURCE CROSSCOMPILE ifdef FPCDIR override FPCDIR:=$(subst \,/,$(FPCDIR)) @@ -158,10 +194,15 @@ endif else UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET)) endif -PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages) +PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages/base $(FPCDIR)/packages/extra) override PACKAGE_NAME=lazarus-tools -override PACKAGE_VERSION=0.7a +override PACKAGE_VERSION=0.8a +LAZDIR=../.. override TARGET_DIRS+=apiwizz +override TARGET_PROGRAMS+=lazres +override COMPILER_OPTIONS+=-gl +override COMPILER_UNITDIR+=. $(LAZDIR)/lcl/units $(LAZDIR)/components/units $(LAZDIR)/lcl/units/$(LCLPLATFORM) +override COMPILER_TARGETDIR+=. ifdef REQUIRE_UNITSDIR override UNITSDIR+=$(REQUIRE_UNITSDIR) endif @@ -196,6 +237,11 @@ UNIXINSTALLDIR=1 endif endif ifndef INSTALL_PREFIX +ifdef PREFIX +INSTALL_PREFIX=$(PREFIX) +endif +endif +ifndef INSTALL_PREFIX ifdef UNIXINSTALLDIR INSTALL_PREFIX=/usr/local else @@ -207,6 +253,9 @@ endif endif endif export INSTALL_PREFIX +ifdef INSTALL_FPCSUBDIR +export INSTALL_FPCSUBDIR +endif ifndef DIST_DESTDIR DIST_DESTDIR:=$(BASEDIR) endif @@ -253,41 +302,43 @@ endif endif ifndef INSTALL_SOURCEDIR ifdef UNIXINSTALLDIR +ifdef BSDhier +SRCPREFIXDIR=share/src +else +SRCPREFIXDIR=src +endif ifdef INSTALL_FPCPACKAGE -ifdef BSDhier -INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/share/src/fpc-$(FPC_VERSION)/$(PACKAGE_NAME) +ifdef INSTALL_FPCSUBDIR +INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME) else -INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/src/fpc-$(FPC_VERSION)/$(PACKAGE_NAME) +INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME) endif else -ifdef BSDhier -INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/share/src/$(PACKAGE_NAME)-$(PACKAGE_VERSION) -else -INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/src/$(PACKAGE_NAME)-$(PACKAGE_VERSION) -endif +INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION) endif else ifdef INSTALL_FPCPACKAGE +ifdef INSTALL_FPCSUBDIR +INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME) +else INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(PACKAGE_NAME) +endif else -INSTALL_SOURCEDIRL:=$(INSTALL_BASEDIR)/source +INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source endif endif endif ifndef INSTALL_DOCDIR ifdef UNIXINSTALLDIR +ifdef BSDhier +DOCPREFIXDIR=share/doc +else +DOCPREFIXDIR=doc +endif ifdef INSTALL_FPCPACKAGE -ifdef BSDhier -INSTALL_DOCDIR:=$(INSTALL_PREFIX)/share/doc/fpc-$(FPC_VERSION)/$(PACKAGE_NAME) +INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME) else -INSTALL_DOCDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)/$(PACKAGE_NAME) -endif -else -ifdef BSDhier -INSTALL_DOCDIR:=$(INSTALL_PREFIX)/share/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSION) -else -INSTALL_DOCDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSION) -endif +INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION) endif else ifdef INSTALL_FPCPACKAGE @@ -333,6 +384,20 @@ endif else CROSSBINDIR= endif +ifdef inUnix +ifndef GCCLIBDIR +GCCLIBDIR:=$(shell dirname `(gcc -v 2>&1)| head -n 1| awk '{ print $$4 } '`) +endif +ifeq ($(OS_TARGET),linux) +ifndef OTHERLIBDIR +OTHERLIBDIR:=$(shell grep -v "^\#" /etc/ld.so.conf | awk '{ ORS=" "; print $1 }') +endif +endif +ifeq ($(OS_TARGET),netbsd) +OTHERLIBDIR+=/usr/pkg/lib +endif +export GCCLIBDIR OTHERLIB +endif LOADEREXT=.as EXEEXT=.exe PPLEXT=.ppl @@ -394,11 +459,13 @@ PPUEXT=.ppo ASMEXT=.so2 OEXT=.oo2 AOUTEXT=.out -SMARTEXT=.so +SMARTEXT=.sl2 +STATICLIBPREFIX= STATICLIBEXT=.ao2 SHAREDLIBEXT=.dll FPCMADE=fpcmade.os2 ZIPSUFFIX=emx +ECHO=echo endif ifeq ($(OS_TARGET),amiga) EXEEXT= @@ -449,6 +516,18 @@ EXEEXT= FPCMADE=fpcmade.qnx ZIPSUFFIX=qnx endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppn +OEXT=.on +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +FPCMADE=fpcmade.nw +ZIPSUFFIX=nw +EXEEXT=.nlm +endif ifndef ECHO ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH)))) ifeq ($(ECHO),) @@ -670,6 +749,232 @@ else TAROPT=vz TAREXT=.tar.gz endif +override REQUIRE_PACKAGES=rtl rtl fcl +ifeq ($(OS_TARGET),linux) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_INET=1 +REQUIRE_PACKAGES_FCL=1 +REQUIRE_PACKAGES_MYSQL=1 +REQUIRE_PACKAGES_IBASE=1 +endif +ifeq ($(OS_TARGET),go32v2) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL=1 +endif +ifeq ($(OS_TARGET),win32) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL=1 +REQUIRE_PACKAGES_MYSQL=1 +REQUIRE_PACKAGES_IBASE=1 +endif +ifeq ($(OS_TARGET),os2) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL=1 +endif +ifeq ($(OS_TARGET),freebsd) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_INET=1 +REQUIRE_PACKAGES_FCL=1 +REQUIRE_PACKAGES_MYSQL=1 +REQUIRE_PACKAGES_IBASE=1 +endif +ifeq ($(OS_TARGET),beos) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL=1 +endif +ifeq ($(OS_TARGET),netbsd) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_INET=1 +REQUIRE_PACKAGES_FCL=1 +endif +ifeq ($(OS_TARGET),amiga) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL=1 +endif +ifeq ($(OS_TARGET),atari) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL=1 +endif +ifeq ($(OS_TARGET),sunos) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL=1 +endif +ifeq ($(OS_TARGET),qnx) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL=1 +endif +ifeq ($(OS_TARGET),netware) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL=1 +endif +ifdef REQUIRE_PACKAGES_RTL +PACKAGEDIR_RTL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/$(OS_TARGET)/Makefile.fpc,$(PACKAGESDIR)))))) +ifneq ($(PACKAGEDIR_RTL),) +ifneq ($(wildcard $(PACKAGEDIR_RTL)/$(OS_TARGET)),) +UNITDIR_RTL=$(PACKAGEDIR_RTL)/$(OS_TARGET) +else +UNITDIR_RTL=$(PACKAGEDIR_RTL) +endif +ifdef CHECKDEPEND +$(PACKAGEDIR_RTL)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_RTL) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_RTL)/$(FPCMADE) +endif +else +PACKAGEDIR_RTL= +UNITDIR_RTL:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /rtl/Package.fpc,$(UNITSDIR))))) +ifneq ($(UNITDIR_RTL),) +UNITDIR_RTL:=$(firstword $(UNITDIR_RTL)) +else +UNITDIR_RTL= +endif +endif +ifdef UNITDIR_RTL +override COMPILER_UNITDIR+=$(UNITDIR_RTL) +endif +endif +ifdef REQUIRE_PACKAGES_PASZLIB +PACKAGEDIR_PASZLIB:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /paszlib/Makefile.fpc,$(PACKAGESDIR)))))) +ifneq ($(PACKAGEDIR_PASZLIB),) +ifneq ($(wildcard $(PACKAGEDIR_PASZLIB)/$(OS_TARGET)),) +UNITDIR_PASZLIB=$(PACKAGEDIR_PASZLIB)/$(OS_TARGET) +else +UNITDIR_PASZLIB=$(PACKAGEDIR_PASZLIB) +endif +ifdef CHECKDEPEND +$(PACKAGEDIR_PASZLIB)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_PASZLIB) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_PASZLIB)/$(FPCMADE) +endif +else +PACKAGEDIR_PASZLIB= +UNITDIR_PASZLIB:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /paszlib/Package.fpc,$(UNITSDIR))))) +ifneq ($(UNITDIR_PASZLIB),) +UNITDIR_PASZLIB:=$(firstword $(UNITDIR_PASZLIB)) +else +UNITDIR_PASZLIB= +endif +endif +ifdef UNITDIR_PASZLIB +override COMPILER_UNITDIR+=$(UNITDIR_PASZLIB) +endif +endif +ifdef REQUIRE_PACKAGES_INET +PACKAGEDIR_INET:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /inet/Makefile.fpc,$(PACKAGESDIR)))))) +ifneq ($(PACKAGEDIR_INET),) +ifneq ($(wildcard $(PACKAGEDIR_INET)/$(OS_TARGET)),) +UNITDIR_INET=$(PACKAGEDIR_INET)/$(OS_TARGET) +else +UNITDIR_INET=$(PACKAGEDIR_INET) +endif +ifdef CHECKDEPEND +$(PACKAGEDIR_INET)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_INET) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_INET)/$(FPCMADE) +endif +else +PACKAGEDIR_INET= +UNITDIR_INET:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /inet/Package.fpc,$(UNITSDIR))))) +ifneq ($(UNITDIR_INET),) +UNITDIR_INET:=$(firstword $(UNITDIR_INET)) +else +UNITDIR_INET= +endif +endif +ifdef UNITDIR_INET +override COMPILER_UNITDIR+=$(UNITDIR_INET) +endif +endif +ifdef REQUIRE_PACKAGES_FCL +PACKAGEDIR_FCL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fcl/Makefile.fpc,$(PACKAGESDIR)))))) +ifneq ($(PACKAGEDIR_FCL),) +ifneq ($(wildcard $(PACKAGEDIR_FCL)/$(OS_TARGET)),) +UNITDIR_FCL=$(PACKAGEDIR_FCL)/$(OS_TARGET) +else +UNITDIR_FCL=$(PACKAGEDIR_FCL) +endif +ifdef CHECKDEPEND +$(PACKAGEDIR_FCL)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_FCL) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_FCL)/$(FPCMADE) +endif +else +PACKAGEDIR_FCL= +UNITDIR_FCL:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /fcl/Package.fpc,$(UNITSDIR))))) +ifneq ($(UNITDIR_FCL),) +UNITDIR_FCL:=$(firstword $(UNITDIR_FCL)) +else +UNITDIR_FCL= +endif +endif +ifdef UNITDIR_FCL +override COMPILER_UNITDIR+=$(UNITDIR_FCL) +endif +endif +ifdef REQUIRE_PACKAGES_MYSQL +PACKAGEDIR_MYSQL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /mysql/Makefile.fpc,$(PACKAGESDIR)))))) +ifneq ($(PACKAGEDIR_MYSQL),) +ifneq ($(wildcard $(PACKAGEDIR_MYSQL)/$(OS_TARGET)),) +UNITDIR_MYSQL=$(PACKAGEDIR_MYSQL)/$(OS_TARGET) +else +UNITDIR_MYSQL=$(PACKAGEDIR_MYSQL) +endif +ifdef CHECKDEPEND +$(PACKAGEDIR_MYSQL)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_MYSQL) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_MYSQL)/$(FPCMADE) +endif +else +PACKAGEDIR_MYSQL= +UNITDIR_MYSQL:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /mysql/Package.fpc,$(UNITSDIR))))) +ifneq ($(UNITDIR_MYSQL),) +UNITDIR_MYSQL:=$(firstword $(UNITDIR_MYSQL)) +else +UNITDIR_MYSQL= +endif +endif +ifdef UNITDIR_MYSQL +override COMPILER_UNITDIR+=$(UNITDIR_MYSQL) +endif +endif +ifdef REQUIRE_PACKAGES_IBASE +PACKAGEDIR_IBASE:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /ibase/Makefile.fpc,$(PACKAGESDIR)))))) +ifneq ($(PACKAGEDIR_IBASE),) +ifneq ($(wildcard $(PACKAGEDIR_IBASE)/$(OS_TARGET)),) +UNITDIR_IBASE=$(PACKAGEDIR_IBASE)/$(OS_TARGET) +else +UNITDIR_IBASE=$(PACKAGEDIR_IBASE) +endif +ifdef CHECKDEPEND +$(PACKAGEDIR_IBASE)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_IBASE) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_IBASE)/$(FPCMADE) +endif +else +PACKAGEDIR_IBASE= +UNITDIR_IBASE:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /ibase/Package.fpc,$(UNITSDIR))))) +ifneq ($(UNITDIR_IBASE),) +UNITDIR_IBASE:=$(firstword $(UNITDIR_IBASE)) +else +UNITDIR_IBASE= +endif +endif +ifdef UNITDIR_IBASE +override COMPILER_UNITDIR+=$(UNITDIR_IBASE) +endif +endif ifndef NOCPUDEF override FPCOPTDEF=$(CPU_TARGET) endif @@ -757,6 +1062,12 @@ override COMPILER_UNITTARGETDIR=$(COMPILER_TARGETDIR) override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX) endif endif +ifdef GCCLIBDIR +override FPCOPT+=-Fl$(GCCLIBDIR) +endif +ifdef OTHERLIBDIR +override FPCOPT+=$(addprefix -Fl,$(OTHERLIBDIR)) +endif ifdef OPT override FPCOPT+=$(OPT) endif @@ -779,10 +1090,116 @@ ifeq ($(OS_SOURCE),$(OS_TARGET)) EXECPPAS:=@$(PPAS) endif endif +.PHONY: fpc_exes +ifdef TARGET_PROGRAMS +override EXEFILES=$(addsuffix $(EXEEXT),$(TARGET_PROGRAMS)) +override EXEOFILES:=$(addsuffix $(OEXT),$(TARGET_PROGRAMS)) $(addprefix $(STATICLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_PROGRAMS))) +override ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +ifeq ($(OS_TARGET),os2) +override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_PROGRAMS)) +endif +endif +fpc_exes: $(EXEFILES) ifdef TARGET_RSTS override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS)) override CLEANRSTFILES+=$(RSTFILES) endif +.PHONY: fpc_all fpc_smart fpc_debug fpc_release +$(FPCMADE): $(ALLDEPENDENCIES) $(ALLTARGET) + @$(ECHOREDIR) Compiled > $(FPCMADE) +fpc_all: $(FPCMADE) +fpc_smart: + $(MAKE) all LINKSMART=1 CREATESMART=1 +fpc_debug: + $(MAKE) all DEBUG=1 +fpc_release: + $(MAKE) all RELEASE=1 +.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .pp .rc .res +%$(PPUEXT): %.pp + $(COMPILER) $< + $(EXECPPAS) +%$(PPUEXT): %.pas + $(COMPILER) $< + $(EXECPPAS) +%$(EXEEXT): %.pp + $(COMPILER) $< + $(EXECPPAS) +%$(EXEEXT): %.pas + $(COMPILER) $< + $(EXECPPAS) +%.res: %.rc + windres -i $< -o $@ +vpath %.pp $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR) +vpath %.pas $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR) +vpath %$(PPUEXT) $(COMPILER_UNITTARGETDIR) +.PHONY: fpc_install fpc_sourceinstall fpc_exampleinstall +ifdef INSTALL_UNITS +override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(INSTALL_UNITS)) +endif +ifdef INSTALL_BUILDUNIT +override INSTALLPPUFILES:=$(filter-out $(INSTALL_BUILDUNIT)$(PPUEXT),$(INSTALLPPUFILES)) +endif +ifdef INSTALLPPUFILES +override INSTALLPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES))) +override INSTALLPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(INSTALLPPUFILES)) +override INSTALLPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(INSTALLPPULINKFILES))) +override INSTALL_CREATEPACKAGEFPC=1 +endif +ifdef INSTALLEXEFILES +override INSTALLEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(INSTALLEXEFILES)) +endif +fpc_install: all $(INSTALLTARGET) +ifdef INSTALLEXEFILES + $(MKDIR) $(INSTALL_BINDIR) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(INSTALLEXE) $(INSTALLEXEFILES) $(INSTALL_BINDIR) +endif +ifdef INSTALL_CREATEPACKAGEFPC +ifdef FPCMAKE +ifdef PACKAGE_VERSION +ifneq ($(wildcard Makefile.fpc),) + $(FPCMAKE) -p -T$(OS_TARGET) Makefile.fpc + $(MKDIR) $(INSTALL_UNITDIR) + $(INSTALL) Package.fpc $(INSTALL_UNITDIR) +endif +endif +endif +endif +ifdef INSTALLPPUFILES + $(MKDIR) $(INSTALL_UNITDIR) + $(INSTALL) $(INSTALLPPUFILES) $(INSTALL_UNITDIR) +ifneq ($(INSTALLPPULINKFILES),) + $(INSTALL) $(INSTALLPPULINKFILES) $(INSTALL_UNITDIR) +endif +ifneq ($(wildcard $(LIB_FULLNAME)),) + $(MKDIR) $(INSTALL_LIBDIR) + $(INSTALL) $(LIB_FULLNAME) $(INSTALL_LIBDIR) +ifdef inUnix + ln -sf $(LIB_FULLNAME) $(INSTALL_LIBDIR)/$(LIB_NAME) +endif +endif +endif +ifdef INSTALL_FILES + $(MKDIR) $(INSTALL_DATADIR) + $(INSTALL) $(INSTALL_FILES) $(INSTALL_DATADIR) +endif +fpc_sourceinstall: distclean + $(MKDIR) $(INSTALL_SOURCEDIR) + $(COPYTREE) $(BASEDIR)/* $(INSTALL_SOURCEDIR) +fpc_exampleinstall: $(addsuffix _distclean,$(TARGET_EXAMPLEDIRS)) +ifdef HASEXAMPLES + $(MKDIR) $(INSTALL_EXAMPLEDIR) +endif +ifdef EXAMPLESOURCEFILES + $(COPY) $(EXAMPLESOURCEFILES) $(INSTALL_EXAMPLEDIR) +endif +ifdef TARGET_EXAMPLEDIRS + $(COPYTREE) $(addsuffix /*,$(TARGET_EXAMPLEDIRS)) $(INSTALL_EXAMPLEDIR) +endif .PHONY: fpc_distinstall fpc_distinstall: install exampleinstall .PHONY: fpc_zipinstall fpc_zipsourceinstall fpc_zipexampleinstall @@ -904,7 +1321,7 @@ ifdef CLEANEXEFILES endif -$(DEL) *$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT) -$(DELTREE) *$(SMARTEXT) - -$(DEL) $(FPCMADE) $(PPAS) link.res $(FPCEXTFILE) $(REDIRFILE) + -$(DEL) $(FPCMADE) Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE) ifdef AOUTEXT -$(DEL) *$(AOUTEXT) endif @@ -924,11 +1341,13 @@ fpc_baseinfo: @$(ECHO) Target CPU... $(CPU_TARGET) @$(ECHO) Source OS.... $(OS_SOURCE) @$(ECHO) Target OS.... $(OS_TARGET) - @$(ECHO) Full Target.. $(FULL_SOURCE) - @$(ECHO) Full Source.. $(FULL_TARGET) + @$(ECHO) Full Source.. $(FULL_SOURCE) + @$(ECHO) Full Target.. $(FULL_TARGET) @$(ECHO) @$(ECHO) == Directory info == @$(ECHO) + @$(ECHO) Required pkgs... $(REQUIRE_PACKAGES) + @$(ECHO) @$(ECHO) Basedir......... $(BASEDIR) @$(ECHO) FPCDir.......... $(FPCDIR) @$(ECHO) CrossBinDir..... $(CROSSBINDIR) @@ -996,13 +1415,13 @@ fpc_info: $(INFORULES) .PHONY: fpc_makefile fpc_makefiles fpc_makefile_sub1 fpc_makefile_sub2 \ fpc_makefile_dirs fpc_makefile: - $(FPCMAKE) -w Makefile.fpc + $(FPCMAKE) -w -T$(OS_TARGET) Makefile.fpc fpc_makefile_sub1: ifdef TARGET_DIRS - $(FPCMAKE) -w $(addsuffix /Makefile.fpc,$(TARGET_DIRS)) + $(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_DIRS)) endif ifdef TARGET_EXAMPLEDIRS - $(FPCMAKE) -w $(addsuffix /Makefile.fpc,$(TARGET_EXAMPLEDIRS)) + $(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_EXAMPLEDIRS)) endif fpc_makefile_sub2: $(addsuffix _makefile_dirs,$(TARGET_DIRS) $(TARGET_EXAMPLEDIRS)) fpc_makefile_dirs: fpc_makefile_sub1 fpc_makefile_sub2 @@ -1015,6 +1434,8 @@ apiwizz_debug: $(MAKE) -C apiwizz debug apiwizz_smart: $(MAKE) -C apiwizz smart +apiwizz_release: + $(MAKE) -C apiwizz release apiwizz_examples: $(MAKE) -C apiwizz examples apiwizz_shared: @@ -1043,40 +1464,36 @@ apiwizz_cleanall: $(MAKE) -C apiwizz cleanall apiwizz_info: $(MAKE) -C apiwizz info -apiwizz_makefile: - $(MAKE) -C apiwizz makefile apiwizz_makefiles: $(MAKE) -C apiwizz makefiles -apiwizz_makefile_dirs: - $(MAKE) -C apiwizz makefile_dirs apiwizz: $(MAKE) -C apiwizz all -.PHONY: apiwizz_all apiwizz_debug apiwizz_smart apiwizz_examples apiwizz_shared apiwizz_install apiwizz_sourceinstall apiwizz_exampleinstall apiwizz_distinstall apiwizz_zipinstall apiwizz_zipsourceinstall apiwizz_zipexampleinstall apiwizz_zipdistinstall apiwizz_clean apiwizz_distclean apiwizz_cleanall apiwizz_info apiwizz_makefile apiwizz_makefiles apiwizz_makefile_dirs apiwizz +.PHONY: apiwizz_all apiwizz_debug apiwizz_smart apiwizz_release apiwizz_examples apiwizz_shared apiwizz_install apiwizz_sourceinstall apiwizz_exampleinstall apiwizz_distinstall apiwizz_zipinstall apiwizz_zipsourceinstall apiwizz_zipexampleinstall apiwizz_zipdistinstall apiwizz_clean apiwizz_distclean apiwizz_cleanall apiwizz_info apiwizz_makefiles apiwizz endif -all: $(addsuffix _all,$(TARGET_DIRS)) -debug: $(addsuffix _debug,$(TARGET_DIRS)) -smart: $(addsuffix _smart,$(TARGET_DIRS)) +debug: fpc_debug +smart: fpc_smart +release: fpc_release examples: $(addsuffix _examples,$(TARGET_DIRS)) shared: $(addsuffix _shared,$(TARGET_DIRS)) -install: $(addsuffix _install,$(TARGET_DIRS)) -sourceinstall: -exampleinstall: $(addsuffix _exampleinstall,$(TARGET_DIRS)) +install: fpc_install $(addsuffix _install,$(TARGET_DIRS)) +sourceinstall: fpc_sourceinstall +exampleinstall: fpc_exampleinstall $(addsuffix _exampleinstall,$(TARGET_DIRS)) distinstall: fpc_distinstall zipinstall: fpc_zipinstall zipsourceinstall: fpc_zipsourceinstall zipexampleinstall: fpc_zipexampleinstall $(addsuffix _zipexampleinstall,$(TARGET_DIRS)) zipdistinstall: fpc_zipdistinstall $(addsuffix _zipdistinstall,$(TARGET_DIRS)) -clean: $(addsuffix _clean,$(TARGET_DIRS)) -distclean: $(addsuffix _distclean,$(TARGET_DIRS)) -cleanall: $(addsuffix _cleanall,$(TARGET_DIRS)) +clean: fpc_clean $(addsuffix _clean,$(TARGET_DIRS)) +distclean: fpc_distclean $(addsuffix _distclean,$(TARGET_DIRS)) +cleanall: fpc_cleanall $(addsuffix _cleanall,$(TARGET_DIRS)) info: fpc_info -makefile_dirs: fpc_makefile_dirs -.PHONY: all debug smart examples shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall clean distclean cleanall info makefile_dirs +.PHONY: debug smart release examples shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall clean distclean cleanall info ifneq ($(wildcard fpcmake.loc),) include fpcmake.loc endif -.PHONY: makefile makefiles +.PHONY: all makefile makefiles +all: apiwizz_all + $(MAKE) --assume-new=lazres.pp lazres$(EXEEXT) makefile: Makefile.fpc -$(FPCMAKE) -w makefiles: makefile - $(MAKE) -C apiwizz makefiles diff --git a/tools/Makefile.fpc b/tools/Makefile.fpc index 9ac3f9aafe..20ec76be59 100644 --- a/tools/Makefile.fpc +++ b/tools/Makefile.fpc @@ -9,15 +9,27 @@ version=0.8a [target] dirs=apiwizz +programs=lazres + +[require] +packages=rtl fcl + +[compiler] +options=-gl +unitdir=. $(LAZDIR)/lcl/units $(LAZDIR)/components/units $(LAZDIR)/lcl/units/$(LCLPLATFORM) +targetdir=. + +[prerules] +LAZDIR=../.. -[install] -packagename=tools [rules] -.PHONY: makefile makefiles +.PHONY: all makefile makefiles + +all: apiwizz_all + $(MAKE) --assume-new=lazres.pp lazres$(EXEEXT) makefile: Makefile.fpc -$(FPCMAKE) -w - + makefiles: makefile - $(MAKE) -C apiwizz makefiles diff --git a/tools/apiwizz/Makefile b/tools/apiwizz/Makefile index 27eb198b98..1a14ababd4 100644 --- a/tools/apiwizz/Makefile +++ b/tools/apiwizz/Makefile @@ -1,7 +1,8 @@ # -# Don't edit, this file is generated by FPCMake Version 1.1 [2002/01/06] +# Don't edit, this file is generated by FPCMake Version 1.1 [2002/04/23] # default: all +MAKEFILETARGETS=linux go32v2 win32 os2 freebsd beos netbsd amiga atari sunos qnx netware override PATH:=$(subst \,/,$(PATH)) ifeq ($(findstring ;,$(PATH)),) inUnix=1 @@ -13,10 +14,7 @@ PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(SEARCHPATH)))) ifeq ($(PWD),) PWD:=$(strip $(wildcard $(addsuffix /pwd,$(SEARCHPATH)))) ifeq ($(PWD),) -nopwd: - @echo You need the GNU utils package to use this Makefile! - @echo Get ftp://ftp.freepascal.org/pub/fpc/dist/go32v2/utilgo32.zip - @exit +$(error You need the GNU utils package to use this Makefile) else PWD:=$(firstword $(PWD)) SRCEXEEXT= @@ -70,6 +68,22 @@ endif else BASEDIR=. endif +ifdef inOS2 +ifndef ECHO +ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(ECHO),) +ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(ECHO),) +ECHO=echo +else +ECHO:=$(firstword $(ECHO)) +endif +else +ECHO:=$(firstword $(ECHO)) +endif +endif +export ECHO +endif ifndef FPC ifdef PP FPC=$(PP) @@ -93,23 +107,45 @@ ifndef FPC_VERSION FPC_VERSION:=$(shell $(FPC) -iV) endif export FPC FPC_VERSION +unexport CHECKDEPEND ALLDEPENDENCIES +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +COMPILERINFO:=$(shell $(FPC) -iSP -iTP -iSO -iTO) +ifndef CPU_SOURCE +CPU_SOURCE:=$(word 1,$(COMPILERINFO)) +endif +ifndef CPU_TARGET +CPU_TARGET:=$(word 2,$(COMPILERINFO)) +endif +ifndef OS_SOURCE +OS_SOURCE:=$(word 3,$(COMPILERINFO)) +endif +ifndef OS_TARGET +OS_TARGET:=$(word 4,$(COMPILERINFO)) +endif +else +ifndef CPU_SOURCE +CPU_SOURCE:=$(shell $(FPC) -iSP) +endif ifndef CPU_TARGET CPU_TARGET:=$(shell $(FPC) -iTP) endif -ifndef CPU_SOURCE -CPU_SOURCE:=$(shell $(FPC) -iSP) +ifndef OS_SOURCE +OS_SOURCE:=$(shell $(FPC) -iSO) endif ifndef OS_TARGET OS_TARGET:=$(shell $(FPC) -iTO) endif -ifndef OS_SOURCE -OS_SOURCE:=$(shell $(FPC) -iSO) endif FULL_TARGET=$(CPU_TARGET)-$(OS_TARGET) FULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE) ifneq ($(FULL_TARGET),$(FULL_SOURCE)) CROSSCOMPILE=1 endif +ifeq ($(findstring makefile,$(MAKECMDGOALS)),) +ifeq ($(findstring $(OS_TARGET),$(MAKEFILETARGETS)),) +$(error The Makefile doesn't support target $(OS_TARGET), please run fpcmake first) +endif +endif export OS_TARGET OS_SOURCE CPU_TARGET CPU_SOURCE FULL_TARGET FULL_SOURCE CROSSCOMPILE ifdef FPCDIR override FPCDIR:=$(subst \,/,$(FPCDIR)) @@ -158,7 +194,7 @@ endif else UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET)) endif -PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages) +PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages/base $(FPCDIR)/packages/extra) override PACKAGE_NAME=lazarus-apiwizz override PACKAGE_VERSION=0.7a LAZDIR=../.. @@ -200,6 +236,11 @@ UNIXINSTALLDIR=1 endif endif ifndef INSTALL_PREFIX +ifdef PREFIX +INSTALL_PREFIX=$(PREFIX) +endif +endif +ifndef INSTALL_PREFIX ifdef UNIXINSTALLDIR INSTALL_PREFIX=/usr/local else @@ -211,6 +252,9 @@ endif endif endif export INSTALL_PREFIX +ifdef INSTALL_FPCSUBDIR +export INSTALL_FPCSUBDIR +endif ifndef DIST_DESTDIR DIST_DESTDIR:=$(BASEDIR) endif @@ -257,41 +301,43 @@ endif endif ifndef INSTALL_SOURCEDIR ifdef UNIXINSTALLDIR +ifdef BSDhier +SRCPREFIXDIR=share/src +else +SRCPREFIXDIR=src +endif ifdef INSTALL_FPCPACKAGE -ifdef BSDhier -INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/share/src/fpc-$(FPC_VERSION)/$(PACKAGE_NAME) +ifdef INSTALL_FPCSUBDIR +INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME) else -INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/src/fpc-$(FPC_VERSION)/$(PACKAGE_NAME) +INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME) endif else -ifdef BSDhier -INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/share/src/$(PACKAGE_NAME)-$(PACKAGE_VERSION) -else -INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/src/$(PACKAGE_NAME)-$(PACKAGE_VERSION) -endif +INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION) endif else ifdef INSTALL_FPCPACKAGE +ifdef INSTALL_FPCSUBDIR +INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME) +else INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(PACKAGE_NAME) +endif else -INSTALL_SOURCEDIRL:=$(INSTALL_BASEDIR)/source +INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source endif endif endif ifndef INSTALL_DOCDIR ifdef UNIXINSTALLDIR +ifdef BSDhier +DOCPREFIXDIR=share/doc +else +DOCPREFIXDIR=doc +endif ifdef INSTALL_FPCPACKAGE -ifdef BSDhier -INSTALL_DOCDIR:=$(INSTALL_PREFIX)/share/doc/fpc-$(FPC_VERSION)/$(PACKAGE_NAME) +INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME) else -INSTALL_DOCDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)/$(PACKAGE_NAME) -endif -else -ifdef BSDhier -INSTALL_DOCDIR:=$(INSTALL_PREFIX)/share/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSION) -else -INSTALL_DOCDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSION) -endif +INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION) endif else ifdef INSTALL_FPCPACKAGE @@ -412,11 +458,13 @@ PPUEXT=.ppo ASMEXT=.so2 OEXT=.oo2 AOUTEXT=.out -SMARTEXT=.so +SMARTEXT=.sl2 +STATICLIBPREFIX= STATICLIBEXT=.ao2 SHAREDLIBEXT=.dll FPCMADE=fpcmade.os2 ZIPSUFFIX=emx +ECHO=echo endif ifeq ($(OS_TARGET),amiga) EXEEXT= @@ -467,6 +515,18 @@ EXEEXT= FPCMADE=fpcmade.qnx ZIPSUFFIX=qnx endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppn +OEXT=.on +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +FPCMADE=fpcmade.nw +ZIPSUFFIX=nw +EXEEXT=.nlm +endif ifndef ECHO ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH)))) ifeq ($(ECHO),) @@ -688,6 +748,7 @@ else TAROPT=vz TAREXT=.tar.gz endif +override REQUIRE_PACKAGES=rtl rtl fcl ifeq ($(OS_TARGET),linux) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -752,17 +813,24 @@ REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 REQUIRE_PACKAGES_FCL=1 endif +ifeq ($(OS_TARGET),netware) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL=1 +endif 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/$(OS_TARGET)/Makefile.fpc,$(PACKAGESDIR)))))) ifneq ($(PACKAGEDIR_RTL),) -override COMPILEPACKAGES+=$(PACKAGEDIR_RTL)/$(FPCMADE) -$(PACKAGEDIR_RTL)/$(FPCMADE): - $(MAKE) -C $(PACKAGEDIR_RTL) all ifneq ($(wildcard $(PACKAGEDIR_RTL)/$(OS_TARGET)),) UNITDIR_RTL=$(PACKAGEDIR_RTL)/$(OS_TARGET) else UNITDIR_RTL=$(PACKAGEDIR_RTL) endif +ifdef CHECKDEPEND +$(PACKAGEDIR_RTL)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_RTL) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_RTL)/$(FPCMADE) +endif else PACKAGEDIR_RTL= UNITDIR_RTL:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /rtl/Package.fpc,$(UNITSDIR))))) @@ -779,14 +847,16 @@ endif ifdef REQUIRE_PACKAGES_PASZLIB PACKAGEDIR_PASZLIB:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /paszlib/Makefile.fpc,$(PACKAGESDIR)))))) ifneq ($(PACKAGEDIR_PASZLIB),) -override COMPILEPACKAGES+=$(PACKAGEDIR_PASZLIB)/$(FPCMADE) -$(PACKAGEDIR_PASZLIB)/$(FPCMADE): - $(MAKE) -C $(PACKAGEDIR_PASZLIB) all ifneq ($(wildcard $(PACKAGEDIR_PASZLIB)/$(OS_TARGET)),) UNITDIR_PASZLIB=$(PACKAGEDIR_PASZLIB)/$(OS_TARGET) else UNITDIR_PASZLIB=$(PACKAGEDIR_PASZLIB) endif +ifdef CHECKDEPEND +$(PACKAGEDIR_PASZLIB)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_PASZLIB) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_PASZLIB)/$(FPCMADE) +endif else PACKAGEDIR_PASZLIB= UNITDIR_PASZLIB:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /paszlib/Package.fpc,$(UNITSDIR))))) @@ -803,14 +873,16 @@ endif ifdef REQUIRE_PACKAGES_INET PACKAGEDIR_INET:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /inet/Makefile.fpc,$(PACKAGESDIR)))))) ifneq ($(PACKAGEDIR_INET),) -override COMPILEPACKAGES+=$(PACKAGEDIR_INET)/$(FPCMADE) -$(PACKAGEDIR_INET)/$(FPCMADE): - $(MAKE) -C $(PACKAGEDIR_INET) all ifneq ($(wildcard $(PACKAGEDIR_INET)/$(OS_TARGET)),) UNITDIR_INET=$(PACKAGEDIR_INET)/$(OS_TARGET) else UNITDIR_INET=$(PACKAGEDIR_INET) endif +ifdef CHECKDEPEND +$(PACKAGEDIR_INET)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_INET) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_INET)/$(FPCMADE) +endif else PACKAGEDIR_INET= UNITDIR_INET:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /inet/Package.fpc,$(UNITSDIR))))) @@ -827,14 +899,16 @@ endif ifdef REQUIRE_PACKAGES_FCL PACKAGEDIR_FCL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fcl/Makefile.fpc,$(PACKAGESDIR)))))) ifneq ($(PACKAGEDIR_FCL),) -override COMPILEPACKAGES+=$(PACKAGEDIR_FCL)/$(FPCMADE) -$(PACKAGEDIR_FCL)/$(FPCMADE): - $(MAKE) -C $(PACKAGEDIR_FCL) all ifneq ($(wildcard $(PACKAGEDIR_FCL)/$(OS_TARGET)),) UNITDIR_FCL=$(PACKAGEDIR_FCL)/$(OS_TARGET) else UNITDIR_FCL=$(PACKAGEDIR_FCL) endif +ifdef CHECKDEPEND +$(PACKAGEDIR_FCL)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_FCL) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_FCL)/$(FPCMADE) +endif else PACKAGEDIR_FCL= UNITDIR_FCL:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /fcl/Package.fpc,$(UNITSDIR))))) @@ -851,14 +925,16 @@ endif ifdef REQUIRE_PACKAGES_MYSQL PACKAGEDIR_MYSQL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /mysql/Makefile.fpc,$(PACKAGESDIR)))))) ifneq ($(PACKAGEDIR_MYSQL),) -override COMPILEPACKAGES+=$(PACKAGEDIR_MYSQL)/$(FPCMADE) -$(PACKAGEDIR_MYSQL)/$(FPCMADE): - $(MAKE) -C $(PACKAGEDIR_MYSQL) all ifneq ($(wildcard $(PACKAGEDIR_MYSQL)/$(OS_TARGET)),) UNITDIR_MYSQL=$(PACKAGEDIR_MYSQL)/$(OS_TARGET) else UNITDIR_MYSQL=$(PACKAGEDIR_MYSQL) endif +ifdef CHECKDEPEND +$(PACKAGEDIR_MYSQL)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_MYSQL) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_MYSQL)/$(FPCMADE) +endif else PACKAGEDIR_MYSQL= UNITDIR_MYSQL:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /mysql/Package.fpc,$(UNITSDIR))))) @@ -875,14 +951,16 @@ endif ifdef REQUIRE_PACKAGES_IBASE PACKAGEDIR_IBASE:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /ibase/Makefile.fpc,$(PACKAGESDIR)))))) ifneq ($(PACKAGEDIR_IBASE),) -override COMPILEPACKAGES+=$(PACKAGEDIR_IBASE)/$(FPCMADE) -$(PACKAGEDIR_IBASE)/$(FPCMADE): - $(MAKE) -C $(PACKAGEDIR_IBASE) all ifneq ($(wildcard $(PACKAGEDIR_IBASE)/$(OS_TARGET)),) UNITDIR_IBASE=$(PACKAGEDIR_IBASE)/$(OS_TARGET) else UNITDIR_IBASE=$(PACKAGEDIR_IBASE) endif +ifdef CHECKDEPEND +$(PACKAGEDIR_IBASE)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_IBASE) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_IBASE)/$(FPCMADE) +endif else PACKAGEDIR_IBASE= UNITDIR_IBASE:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /ibase/Package.fpc,$(UNITSDIR))))) @@ -1027,15 +1105,16 @@ ifdef TARGET_RSTS override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS)) override CLEANRSTFILES+=$(RSTFILES) endif -.PHONY: fpc_packages fpc_all fpc_smart fpc_debug -$(FPCMADE): $(ALLTARGET) +.PHONY: fpc_all fpc_smart fpc_debug fpc_release +$(FPCMADE): $(ALLDEPENDENCIES) $(ALLTARGET) @$(ECHOREDIR) Compiled > $(FPCMADE) -fpc_packages: $(COMPILEPACKAGES) -fpc_all: fpc_packages $(FPCMADE) +fpc_all: $(FPCMADE) fpc_smart: $(MAKE) all LINKSMART=1 CREATESMART=1 fpc_debug: $(MAKE) all DEBUG=1 +fpc_release: + $(MAKE) all RELEASE=1 .SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .pp .rc .res %$(PPUEXT): %.pp $(COMPILER) $< @@ -1059,7 +1138,7 @@ ifdef INSTALL_UNITS override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(INSTALL_UNITS)) endif ifdef INSTALL_BUILDUNIT -override INSTALLPPUFILES:=$(filter-out $(INSTALL_BUILDUNIT),$(INSTALLPPUFILES)) +override INSTALLPPUFILES:=$(filter-out $(INSTALL_BUILDUNIT)$(PPUEXT),$(INSTALLPPUFILES)) endif ifdef INSTALLPPUFILES override INSTALLPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES))) @@ -1109,7 +1188,7 @@ ifdef INSTALL_FILES endif fpc_sourceinstall: distclean $(MKDIR) $(INSTALL_SOURCEDIR) - $(COPYTREE) $(BASEDIR) $(INSTALL_SOURCEDIR) + $(COPYTREE) $(BASEDIR)/* $(INSTALL_SOURCEDIR) fpc_exampleinstall: $(addsuffix _distclean,$(TARGET_EXAMPLEDIRS)) ifdef HASEXAMPLES $(MKDIR) $(INSTALL_EXAMPLEDIR) @@ -1241,7 +1320,7 @@ ifdef CLEANEXEFILES endif -$(DEL) *$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT) -$(DELTREE) *$(SMARTEXT) - -$(DEL) $(FPCMADE) $(PPAS) link.res $(FPCEXTFILE) $(REDIRFILE) + -$(DEL) $(FPCMADE) Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE) ifdef AOUTEXT -$(DEL) *$(AOUTEXT) endif @@ -1261,11 +1340,13 @@ fpc_baseinfo: @$(ECHO) Target CPU... $(CPU_TARGET) @$(ECHO) Source OS.... $(OS_SOURCE) @$(ECHO) Target OS.... $(OS_TARGET) - @$(ECHO) Full Target.. $(FULL_SOURCE) - @$(ECHO) Full Source.. $(FULL_TARGET) + @$(ECHO) Full Source.. $(FULL_SOURCE) + @$(ECHO) Full Target.. $(FULL_TARGET) @$(ECHO) @$(ECHO) == Directory info == @$(ECHO) + @$(ECHO) Required pkgs... $(REQUIRE_PACKAGES) + @$(ECHO) @$(ECHO) Basedir......... $(BASEDIR) @$(ECHO) FPCDir.......... $(FPCDIR) @$(ECHO) CrossBinDir..... $(CROSSBINDIR) @@ -1333,19 +1414,20 @@ fpc_info: $(INFORULES) .PHONY: fpc_makefile fpc_makefiles fpc_makefile_sub1 fpc_makefile_sub2 \ fpc_makefile_dirs fpc_makefile: - $(FPCMAKE) -w Makefile.fpc + $(FPCMAKE) -w -T$(OS_TARGET) Makefile.fpc fpc_makefile_sub1: ifdef TARGET_DIRS - $(FPCMAKE) -w $(addsuffix /Makefile.fpc,$(TARGET_DIRS)) + $(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_DIRS)) endif ifdef TARGET_EXAMPLEDIRS - $(FPCMAKE) -w $(addsuffix /Makefile.fpc,$(TARGET_EXAMPLEDIRS)) + $(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_EXAMPLEDIRS)) endif fpc_makefile_sub2: $(addsuffix _makefile_dirs,$(TARGET_DIRS) $(TARGET_EXAMPLEDIRS)) fpc_makefile_dirs: fpc_makefile_sub1 fpc_makefile_sub2 fpc_makefiles: fpc_makefile fpc_makefile_dirs debug: fpc_debug smart: fpc_smart +release: fpc_release examples: shared: install: fpc_install @@ -1360,8 +1442,7 @@ clean: fpc_clean distclean: fpc_distclean cleanall: fpc_cleanall info: fpc_info -makefile_dirs: fpc_makefile_dirs -.PHONY: debug smart examples shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall clean distclean cleanall info makefile_dirs +.PHONY: debug smart release examples shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall clean distclean cleanall info ifneq ($(wildcard fpcmake.loc),) include fpcmake.loc endif