From ab0c7d113f457e4579455e4254b31e0d19bf9923 Mon Sep 17 00:00:00 2001 From: peter Date: Wed, 3 Nov 1999 23:42:32 +0000 Subject: [PATCH] * fpcmake --- fcl/go32v2/Makefile | 1022 ++++++++++++++++++++++++++++++++++---- fcl/go32v2/Makefile.fpc | 43 ++ fcl/linux/Makefile | 1034 ++++++++++++++++++++++++++++++++++----- fcl/linux/Makefile.fpc | 43 ++ fcl/shedit/Makefile | 1018 ++++++++++++++++++++++++++++++++++---- fcl/shedit/Makefile.fpc | 19 + 6 files changed, 2859 insertions(+), 320 deletions(-) create mode 100644 fcl/go32v2/Makefile.fpc create mode 100644 fcl/linux/Makefile.fpc create mode 100644 fcl/shedit/Makefile.fpc diff --git a/fcl/go32v2/Makefile b/fcl/go32v2/Makefile index 7b44d39858..dd3b395f72 100644 --- a/fcl/go32v2/Makefile +++ b/fcl/go32v2/Makefile @@ -1,49 +1,136 @@ # -# $Id$ -# Copyright (c) 1999 by the Free Pascal Development Team -# -# Makefile for Free Component Library for Go32v2 -# -# 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. +# Makefile generated from Makefile.fpc on 1999-11-04 01:16 # +defaultrule: Makefile all + +Makefile: Makefile.fpc + fpcmake + $(MAKE) ##################################################################### -# Defaults +# Autodetect OS (Linux or Dos or Windows NT) +# define inlinux when running under linux +# define inWinNT when running under WinNT ##################################################################### -# Default place of the makefile.fpc -DEFAULTFPCDIR=../.. +# We need only / in the path +override PATH:=$(subst \,/,$(PATH)) -# set target and cpu which are required -override OS_TARGET=go32v2 -override CPU=i386 +# Search for PWD and determine also if we are under linux +PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(subst ;, ,$(PATH))))) +ifeq ($(PWD),) +PWD:=$(strip $(wildcard $(addsuffix /pwd,$(subst :, ,$(PATH))))) +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 +else +inlinux=1 +endif +else +PWD:=$(firstword $(PWD)) +endif + +# Detect NT - NT sets OS to Windows_NT +ifndef inlinux +ifeq ($(OS),Windows_NT) +inWinNT=1 +endif +endif + +# Detect OS/2 - OS/2 has OS2_SHELL defined +ifndef inlinux +ifndef inWinNT +ifdef OS2_SHELL +inOS2=1 +endif +endif +endif + +# The extension of executables +ifdef inlinux +EXEEXT= +else +EXEEXT=.exe +endif + +# The path which is search separated by spaces +ifdef inlinux +SEARCHPATH=$(subst :, ,$(PATH)) +else +SEARCHPATH=$(subst ;, ,$(PATH)) +endif + +##################################################################### +# Default target +##################################################################### + +override OS_TARGET:=go32v2 +override CPU_TARGET:=i386 + +##################################################################### +# FPC version/target Detection +##################################################################### + +# What compiler to use ? +ifndef FPC +ifdef inOS2 +export FPC=ppos2$(EXEEXT) +else +export FPC=ppc386$(EXEEXT) +endif +endif + +# Target OS +ifndef OS_TARGET +export OS_TARGET:=$(shell $(FPC) -iTO) +endif + +# Source OS +ifndef OS_SOURCE +export OS_SOURCE:=$(shell $(FPC) -iSO) +endif + +# Target CPU +ifndef CPU_TARGET +export CPU_TARGET:=$(shell $(FPC) -iTP) +endif + +# Source CPU +ifndef CPU_SOURCE +export CPU_SOURCE:=$(shell $(FPC) -iSP) +endif + +# FPC version +ifndef FPC_VERSION +export FPC_VERSION:=$(shell $(FPC) -iV) +endif + +##################################################################### +# Default Settings +##################################################################### + +# Release ? Then force OPT and don't use extra opts via commandline +ifdef RELEASE +override OPT:=-Xs -OG2p3 -n +endif + +# Verbose settings (warning,note,info) +ifdef VERBOSE +override OPT+=-vwni +endif + +##################################################################### +# User Settings +##################################################################### # Include files INC=../inc XML=../xml -PROCINC=../$(CPU) -# Where to place the files -TARGETDIR=. - -# We need always -S2 -NEEDOPT=-S2 - -# As default make only the units -DEFAULTUNITS=1 - - -##################################################################### -# Real targets -##################################################################### - -# INCUNITS is defined in makefile.inc +# INCUNITS,XMLUNITS is defined in makefile.inc # They are default units for all platforms. include $(INC)/Makefile.inc include $(XML)/Makefile.inc @@ -51,79 +138,820 @@ include $(XML)/Makefile.inc UNITOBJECTS=classes $(INCUNITS) $(XMLUNITS) EXEOBJECTS= - -##################################################################### -# Common targets -##################################################################### - -.PHONY: all clean install info \ - staticlib sharedlib libsclean \ staticinstall sharedinstall - libinstall \ - -all: testfpcmake fpc_all - -clean: testfpcmake fpc_clean - -install: testfpcmake fpc_install - -info: testfpcmake fpc_info - -staticlib: testfpcmake fpc_staticlib - -sharedlib: testfpcmake fpc_sharedlib - -libsclean: testfpcmake fpc_libsclean - -staticinstall: testfpcmake fpc_staticinstall - -sharedinstall: testfpcmake fpc_sharedinstall - -libinstall: testfpcmake fpc_libinstall - - -##################################################################### -# Include default makefile -##################################################################### - -# test if FPCMAKE is still valid -ifdef FPCMAKE -ifeq ($(strip $(wildcard $(FPCMAKE))),) -FPCDIR= -FPCMAKE= -endif -endif +DEFAULTUNITS=1 +override NEEDOPT=-S2 ifndef FPCDIR -ifdef DEFAULTFPCDIR -FPCDIR=$(DEFAULTFPCDIR) +FPCDIR=../.. endif +override NEEDINCDIR=$(INC) +ifndef TARGETDIR +TARGETDIR=. endif -ifndef FPCMAKE + +FPCINFO=fpc_infocfg fpc_infoobjects fpc_infoinstall + +##################################################################### +# Compiler Command Line +##################################################################### + +# Load commandline OPTDEF and add FPC_CPU define +override FPCOPTDEF:=-d$(FPC_CPU) + +# Load commandline OPT and add target and unit dir to be sure +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif + + +ifdef NEEDOPT +override FPCOPT+=$(NEEDOPT) +endif + +# RTL first and then Unit dir (a unit can override RTLunit). Don't add the +# dirs if fpcdir=. which can be used for the rtl makefiles ifdef FPCDIR -FPCMAKE=$(FPCDIR)/makefile.fpc -else -FPCMAKE=makefile.fpc +ifneq ($(FPCDIR),.) +override FPCOPT+=-Fu$(FPCDIR)/rtl/$(OS_TARGET) -Fu$(FPCDIR)/units/$(OS_TARGET) endif endif -override FPCMAKE:=$(strip $(wildcard $(FPCMAKE))) -ifeq ($(FPCMAKE),) -testfpcmake: - @echo makefile.fpc not found! - @echo Check the FPCMAKE and FPCDIR environment variables. +ifdef NEEDINCDIR +override FPCOPT+=$(addprefix -Fi,$(NEEDINCDIR)) +endif + + +# Target dirs +ifdef TARGETDIR +override FPCOPT+=-FE$(TARGETDIR) +endif + +# Smartlinking +ifeq ($(SMARTLINK),YES) +override FPCOPT+=-Cx +endif + +# Add commandline options +ifdef OPT +override FPCOPT+=$(OPT) +endif +ifdef UNITDIR +override FPCOPT+=$(addprefix -Fu,$(UNITDIR)) +endif +ifdef LIBDIR +override FPCOPT+=$(addprefix -Fl,$(LIBDIR)) +endif +ifdef OBJDIR +override FPCOPT+=$(addprefix -Fo,$(OBJDIR)) +endif +ifdef INCDIR +override FPCOPT+=$(addprefix -Fi,$(INCDIR)) +endif + +# Add defines from FPCOPTDEF to FPCOPT +ifdef FPCOPTDEF +override FPCOPT+=$(FPCOPTDEF) +endif + +# Was a config file specified ? +ifdef CFGFILE +override FPCOPT+=@$(CFGFILE) +endif + +override COMPILER=$(FPC) $(FPCOPT) + +##################################################################### +# Shell tools +##################################################################### + +# To copy pograms +ifndef COPY +export COPY:=cp -fp +endif + +# To move pograms +ifndef MOVE +export MOVE:=mv -f +endif + +# Check delete program +ifndef DEL +export DEL:=rm -f +endif + +# Check deltree program +ifndef DELTREE +export DELTREE:=rm -rf +endif + +# To install files +ifndef INSTALL +ifdef inlinux +export INSTALL:=install -m 644 +else +export INSTALL:=$(COPY) +endif +endif + +# To install programs +ifndef INSTALLEXE +ifdef inlinux +export INSTALLEXE:=install -m 755 +else +export INSTALLEXE:=$(COPY) +endif +endif + +# To make a directory. +ifndef MKDIR +ifdef inlinux +export MKDIR:=install -m 755 -d +else +export MKDIR:=ginstall -m 755 -d +endif +endif + +##################################################################### +# Default Tools +##################################################################### + +# assembler, redefine it if cross compiling +ifndef AS +AS=as +endif + +# linker, but probably not used +ifndef LD +LD=ld +endif + +# Where is the ppumove program ? +ifndef PPUMOVE +PPUMOVE=ppumove +endif + +# Where is the ppdep program ? +ifndef PPDEP +PPDEP=ppdep +endif + +# ppas.bat / ppas.sh +ifdef inlinux +PPAS=ppas.sh +else +ifdef inOS2 +PPAS=ppas.cmd +else +PPAS=ppas.bat +endif +endif + +# also call ppas if with command option -s +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +EXECPPAS=@$(PPAS) +endif + +# ldconfig to rebuild .so cache +ifdef inlinux +LDCONFIG=ldconfig +else +LDCONFIG= +endif + +# echo +ifndef ECHO +ECHO:=$(strip $(wildcard $(addsuffix /echo$(EXEEXT),$(SEARCHPATH)))) +ifeq ($(ECHO),) +export ECHO:=echo +else +export ECHO:=$(firstword $(ECHO)) +endif +endif + +# Look if UPX is found for go32v2 and win32. We can't use $UPX becuase +# upx uses that one itself (PFV) +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(EXEEXT),$(SEARCHPATH)))) +ifeq ($(UPX),) +UPXPROG= +else +export UPXPROG:=$(firstword $(UPX)) +endif +else +UPXPROG= +endif +endif + +# gdate/date +ifndef DATE +DATE:=$(strip $(wildcard $(addsuffix /date$(EXEEXT),$(SEARCHPATH)))) +ifeq ($(DATE),) +DATE:=$(strip $(wildcard $(addsuffix /gdate$(EXEEXT),$(SEACHPATH)))) +ifeq ($(DATE),) +DATE= +else +export DATE:=$(firstword $(DATE)) +endif +else +export DATE:=$(firstword $(DATE)) +endif +endif + +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif + +# ZipProg, you can't use Zip as the var name (PFV) +ifndef ZIPPROG +ZIPPROG:=$(strip $(wildcard $(addsuffix /zip$(EXEEXT),$(SEARCHPATH)))) +ifeq ($(ZIPPROG),) +ZIPPROG= +else +export ZIPPROG:=$(firstword $(ZIPPROG)) -D9 -r +endif +endif + +ifndef ZIPEXT +ZIPEXT=.zip +endif + +##################################################################### +# Default Directories +##################################################################### + +# Base dir +ifdef PWD +BASEDIR:=$(shell $(PWD)) +else +BASEDIR=. +endif + +# set the prefix directory where to install everything +ifndef PREFIXINSTALLDIR +ifdef inlinux +export PREFIXINSTALLDIR=/usr +else +export PREFIXINSTALLDIR=/pp +endif +endif + +# set the directory to the rtl base +ifndef RTLDIR +ifdef RTL +RTLDIR:=$(RTL)/$(OS_TARGET) +else +RTLDIR:=$(FPCDIR)/rtl/$(OS_TARGET) +endif +endif + +# specify where units are. +ifndef UNITDIR +ifdef UNITS +UNITDIR=$(UNITS)/$(OS_TARGET) +else +UNITDIR=$(FPCDIR)/units/$(OS_TARGET) +endif +endif +ifeq ($(strip $(wildcard $(UNITDIR)/*)),) +UNITDIR= +endif + +# On linux, try to find where libgcc.a is. +ifdef inlinux +ifndef GCCLIBDIR +export GCCLIBDIR:=$(shell dirname `(gcc -v 2>&1)| head -n 1| awk '{ print $$4 } '`) +endif +endif + +# Where to find other libraries +ifdef inlinux +ifndef OTHERLIBDIR +export OTHERLIBDIR:=$(shell grep -v "^\#" /etc/ld.so.conf | awk '{ ORS=" "; print $1 }') +endif +endif + +##################################################################### +# Install Directories based on BASEINSTALLDIR +##################################################################### + +# set the base directory where to install everything +ifndef BASEINSTALLDIR +ifdef inlinux +BASEINSTALLDIR=$(PREFIXINSTALLDIR)/lib/fpc/$(FPC_VERSION) +else +BASEINSTALLDIR=$(PREFIXINSTALLDIR) +endif +endif + + +# Linux binary really goes to baseinstalldir +ifndef LIBINSTALLDIR +ifdef inlinux +LIBINSTALLDIR=$(BASEINSTALLDIR) +else +LIBINSTALLDIR=$(BASEINSTALLDIR)/lib +endif +endif + +# set the directory where to install the binaries +ifndef BININSTALLDIR +ifdef inlinux +BININSTALLDIR=$(PREFIXINSTALLDIR)/bin +else +BININSTALLDIR=$(BASEINSTALLDIR)/bin/$(OS_TARGET) +endif +endif + +# Where the .msg files will be stored +ifndef MSGINSTALLDIR +MSGINSTALLDIR=$(BASEINSTALLDIR)/msg +endif + +# Where the .msg files will be stored +ifndef SOURCEINSTALLDIR +SOURCEINSTALLDIR=$(BASEINSTALLDIR)/source +endif + +# Where the doc files will be stored +ifndef DOCINSTALLDIR +ifdef inlinux +DOCINSTALLDIR=$(PREFIXINSTALLDIR)/doc/fpc/$(FPC_VERSION) +else +DOCINSTALLDIR=$(BASEINSTALLDIR)/doc +endif +endif + +######################## +# Unit Directories +######################## + +# this can be set to 'rtl' when the RTL units are installed +ifndef UNITPREFIX +UNITPREFIX=units +endif + +# set the directory where to install the units. +ifndef UNITINSTALLDIR +UNITINSTALLDIR=$(BASEINSTALLDIR)/$(UNITPREFIX)/$(OS_TARGET) +endif + +# set the directory where to install the units. +ifndef STATIC_UNITINSTALLDIR +STATIC_UNITINSTALLDIR=$(UNITINSTALLDIR)/static +endif + +# set the directory where to install the units. +ifndef SHARED_UNITINSTALLDIR +SHARED_UNITINSTALLDIR=$(UNITINSTALLDIR)/shared +endif + +# set the directory where to install the libs (must exist) +ifndef STATIC_LIBINSTALLDIR +STATIC_LIBINSTALLDIR=$(STATIC_UNITINSTALLDIR) +endif + +# set the directory where to install the libs (must exist) +ifndef SHARED_LIBINSTALLDIR +ifdef inlinux +SHARED_LIBINSTALLDIR=$(PREFIXINSTALLDIR)/lib +else +SHARED_LIBINSTALLDIR=$(SHARED_UNITINSTALLDIR) +endif +endif + +##################################################################### +# Default extensions +##################################################################### + +# Default needed extensions (Go32v2,Linux) +LOADEREXT=.as +PPLEXT=.ppl +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.so +PACKAGESUFFIX= + +# Go32v1 +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +PACKAGESUFFIX=v1 +endif + +# Go32v2 +ifeq ($(OS_TARGET),go32v2) +PACKAGESUFFIX=go32 +endif + +# Linux +ifeq ($(OS_TARGET),linux) +PACKAGESUFFIX=linux +endif + +# Win32 +ifeq ($(OS_TARGET),win32) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +PACKAGESUFFIX=win32 +endif + +# OS/2 +ifeq ($(OS_TARGET),os2) +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +SMARTEXT=.so +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +PACKAGESUFFIX=os2 +endif + +# library prefix +LIBPREFIX=lib +ifeq ($(OS_TARGET),go32v2) +LIBPREFIX= +endif +ifeq ($(OS_TARGET),go32v1) +LIBPREFIX= +endif + +# determine which .pas extension is used +ifndef PASEXT +ifdef EXEOBJECTS +override TESTPAS:=$(strip $(wildcard $(addsuffix .pas,$(firstword $(EXEOBJECTS))))) +else +override TESTPAS:=$(strip $(wildcard $(addsuffix .pas,$(firstword $(UNITOBJECTS))))) +endif +ifeq ($(TESTPAS),) +PASEXT=.pp +else +PASEXT=.pas +endif +endif + +##################################################################### +# Default rules +##################################################################### + +.PHONY: defaultrule all staticlib sharedlib showinstall install \ + staticinstall sharedinstall libinstall zipinstall zipinstalladd \ + clean cleanall depend info + +all: fpc_all + +staticlib: fpc_staticlib + +sharedlib: fpc_sharedlib + +showinstall: fpc_showinstall + +install: fpc_install + +staticinstall: fpc_staticinstall + +sharedinstall: fpc_sharedinstall + +libinstall: fpc_libinstall + +zipinstall: fpc_zipinstall + +zipinstalladd: fpc_zipinstalladd + +clean: fpc_clean + +clean_all: fpc_clean_all + +depend: fpc_depend + +info: fpc_info + +##################################################################### +# General compile rules +##################################################################### + +.PHONY: fpc_all fpc_units fpc_exes fpc_loaders + +# Create Filenames +LOADEROFILES=$(addsuffix $(OEXT),$(LOADEROBJECTS)) +EXEFILES=$(addsuffix $(EXEEXT),$(EXEOBJECTS)) +EXEOFILES=$(addsuffix $(OEXT),$(EXEOBJECTS)) +UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS)) +UNITOFILES=$(addsuffix $(OEXT),$(UNITOBJECTS)) +UNITAFILES=$(addsuffix $(STATICLIBEXT),$(UNITOBJECTS)) + +.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .pp + +ifdef DEFAULTUNITS +fpc_all: fpc_loaders fpc_units +else +fpc_all: fpc_loaders fpc_units fpc_exes +endif + +fpc_loaders: $(LOADEROFILES) + +fpc_units: $(UNITPPUFILES) + +fpc_exes: $(EXEFILES) + +# General compile rules, available for both possible PASEXT +%$(PPUEXT): %.pp + $(COMPILER) $< $(REDIR) + $(EXECPASS) + +%$(PPUEXT): %.pas + $(COMPILER) $< $(REDIR) + $(EXECPASS) + +%$(EXEEXT): %.pp + $(COMPILER) $< $(REDIR) + $(EXECPASS) + +%$(EXEEXT): %.pas + $(COMPILER) $< $(REDIR) + $(EXECPASS) + +%$(OEXT): %$(LOADEREXT) + $(AS) -o $*$(OEXT) $< + +##################################################################### +# Library +##################################################################### + +.PHONY: fpc_staticlib fpc_sharedlib + +# Default sharedlib units are all unit objects +ifndef SHAREDLIBUNITOBJECTS +SHAREDLIBUNITOBJECTS=$(UNITOBJECTS) +endif + +fpc_staticlib: + $(MAKE) libsclean + $(MAKE) all SMARTLINK=YES + +fpc_sharedlib: all +ifdef inlinux +ifndef LIBNAME + @$(ECHO) LIBNAME not set +else + $(PPUMOVE) $(SHAREDLIBUNITOBJECTS) -o$(LIBNAME) +endif +else + @$(ECHO) Shared Libraries not supported +endif + +##################################################################### +# Install rules +##################################################################### + +.PHONY: fpc_showinstallfiles fpc_install + +ifdef EXTRAINSTALLUNITS +override EXTRAINSTALLFILES=$(wildcard $(addsuffix $(OEXT),$(EXTRAINSTALLUNITS)) $(addsuffix $(STATICLIBEXT),$(EXTRAINSTALLUNITS)) $(addsuffix $(PPUEXT),$(EXTRAINSTALLUNITS))) +endif +ifdef UNITOBJECTS +override UNITINSTALLFILES=$(wildcard $(UNITPPUFILES) $(UNITOFILES) $(UNITAFILES)) +endif + +fpc_showinstallfiles : all +ifndef DEFAULTUNITS +ifdef EXEOBJECTS + @$(ECHO) $(addprefix "\n"$(BININSTALLDIR)/,$(EXEFILES)) +endif +endif +ifdef LOADEROBJECTS + @$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(LOADEROFILES)) +endif +ifdef UNITINSTALLFILES + @$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(UNITINSTALLFILES)) +endif +ifdef EXTRAINSTALLFILES + @$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(EXTRAINSTALLFILES)) +endif + +fpc_install: +# Create UnitInstallFiles +ifndef DEFAULTUNITS +ifdef EXEOBJECTS + $(MKDIR) $(BININSTALLDIR) +# Compress the exes if upx is defined +ifdef UPXPROG + -$(UPXPROG) $(EXEFILES) +endif + $(INSTALLEXE) $(EXEFILES) $(BININSTALLDIR) +endif +endif +ifdef LOADEROBJECTS + $(MKDIR) $(UNITINSTALLDIR) + $(INSTALL) $(LOADEROFILES) $(UNITINSTALLDIR) +endif +ifdef UNITINSTALLFILES + $(MKDIR) $(UNITINSTALLDIR) + $(INSTALL) $(UNITINSTALLFILES) $(UNITINSTALLDIR) +endif +ifdef EXTRAINSTALLFILES + $(MKDIR) $(UNITINSTALLDIR) + $(INSTALL) $(EXTRAINSTALLFILES) $(UNITINSTALLDIR) +endif + +##################################################################### +# Zip +##################################################################### + +.PHONY: fpc_zipinstall fpc_zipinstalladd + +# Temporary path to pack a file +ifndef PACKDIR +ifndef inlinux +PACKDIR=pack_tmp +else +PACKDIR=/tmp/fpc-pack +endif +endif + +# Test dir if none specified +ifndef PACKAGEDIR +PACKAGEDIR=$(BASEDIR) +endif + +# Add .zip/.tar.gz extension +ifdef ZIPNAME +ifndef inlinux +override ZIPNAME:=$(ZIPNAME)$(ZIPEXT) +endif +endif + +# Default target which is call before zipping +ifndef ZIPTARGET +ZIPTARGET=install +endif + +# Note: This will not remove the zipfile first +fpc_zipinstalladd: +ifndef ZIPNAME + @$(ECHO) Please specify ZIPNAME! @exit else -include $(FPCMAKE) -testfpcmake: + $(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR) +ifdef inlinux + gzip -d $(PACKAGEDIR)/$(ZIPNAME).tar.gz + cd $(PACKDIR) ; tar rv --file $(PACKAGEDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR) + gzip $(PACKAGEDIR)/$(ZIPNAME).tar +else + cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR) +endif + $(DELTREE) $(PACKDIR) endif - +# First remove the zip and then install +fpc_zipinstall: +ifndef ZIPNAME + @$(ECHO) Please specify ZIPNAME! + @exit +else + $(DEL) $(PACKAGEDIR)/$(ZIPNAME) + $(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR) +ifdef inlinux + cd $(PACKDIR) ; tar cvz --file $(PACKAGEDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR) +else + cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR) +endif + $(DELTREE) $(PACKDIR) +endif ##################################################################### -# Dependencies +# Clean rules ##################################################################### +.PHONY: fpc_clean fpc_libsclean fpc_cleanall + +ifdef UNITOBJECTS +override UNITCLEANFILES=$(wildcard $(UNITPPUFILES) $(UNITOFILES) $(UNITAFILES)) +endif +ifdef EXTRACLEANUNITS +override EXTRACLEANFILES=$(wildcard $(addsuffix $(OEXT),$(EXTRACLEANUNITS)) $(addsuffix $(STATICLIBEXT),$(EXTRACLEANUNITS)) $(addsuffix $(PPUEXT),$(EXTRACLEANUNITS))) +endif + +fpc_clean: +ifdef EXEOBJECTS + -$(DEL) $(EXEFILES) $(EXEOFILES) +endif +ifdef LOADEROBJECTS + -$(DEL) $(LOADEROFILES) +endif +ifdef UNITCLEANFILES + -$(DEL) $(UNITCLEANFILES) +endif +ifdef EXTRACLEANFILES + -$(DEL) $(EXTRACLEANFILES) +endif + -$(DEL) $(PPAS) link.res log + +fpc_libsclean: clean + -$(DEL) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT) + +fpc_cleanall: +ifdef EXEOBJECTS + -$(DEL) $(EXEFILES) +endif + -$(DEL) *$(OEXT) *$(PPUEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT) + -$(DELTREE) *$(SMARTEXT) + +##################################################################### +# Depend rules +##################################################################### + +.PHONY: fpc_depend + +fpc_depend: + $(PPDEP) $(UNITOBJECTS) + +##################################################################### +# Info rules +##################################################################### + +.PHONY: fpc_info fpc_cfginfo fpc_objectinfo fpc_toolsinfo fpc_installinfo \ + fpc_dirinfo + +fpc_info: $(FPCINFO) + +fpc_infocfg: + @$(ECHO) + @$(ECHO) == Configuration info == + @$(ECHO) + @$(ECHO) FPC....... $(FPC) + @$(ECHO) Version... $(FPC_VERSION) + @$(ECHO) CPU....... $(CPU_TARGET) + @$(ECHO) Source.... $(OS_SOURCE) + @$(ECHO) Target.... $(OS_TARGET) + @$(ECHO) + +fpc_infoobjects: + @$(ECHO) + @$(ECHO) == Object info == + @$(ECHO) + @$(ECHO) LoaderObjects..... $(LOADEROBJECTS) + @$(ECHO) UnitObjects....... $(UNITOBJECTS) + @$(ECHO) ExeObjects........ $(EXEOBJECTS) + @$(ECHO) + @$(ECHO) ExtraCleanUnits... $(EXTRACLEANUNITS) + @$(ECHO) ExtraInstallUnits. $(EXTRAINSTALLUNITS) + @$(ECHO) ExtraInstallFiles. $(EXTRAINSTALLFILES) + @$(ECHO) + @$(ECHO) == Unit info == + @$(ECHO) + @$(ECHO) UnitInstallFiles. $(UNITINSTALLFILES) + @$(ECHO) UnitCleanFiles... $(UNITCLEANFILES) + @$(ECHO) + +fpc_infoinstall: + @$(ECHO) + @$(ECHO) == Install info == + @$(ECHO) +ifdef DATE + @$(ECHO) DateStr.............. $(DATESTR) +endif + @$(ECHO) PackageSuffix........ $(PACKAGESUFFIX) + @$(ECHO) + @$(ECHO) BaseInstallDir....... $(BASEINSTALLDIR) + @$(ECHO) BinInstallDir........ $(BININSTALLDIR) + @$(ECHO) UnitInstallDir....... $(UNITINSTALLDIR) + @$(ECHO) StaticUnitInstallDir. $(STATIC_UNITINSTALLDIR) + @$(ECHO) SharedUnitInstallDir. $(SHARED_UNITINSTALLDIR) + @$(ECHO) LibInstallDir........ $(LIBINSTALLDIR) + @$(ECHO) StaticLibInstallDir.. $(STATIC_LIBINSTALLDIR) + @$(ECHO) SharedLibInstallDir.. $(SHARED_LIBINSTALLDIR) + @$(ECHO) MsgInstallDir........ $(MSGINSTALLDIR) + @$(ECHO) DocInstallDir........ $(DOCINSTALLDIR) + @$(ECHO) + +##################################################################### +# Users rules +##################################################################### + + vpath %$(PASEXT) $(INC) $(XML) INCFILES=$(addprefix $(INC)/,$(INCNAMES)) @@ -133,19 +961,3 @@ classes$(PPUEXT): $(INCFILES) classes$(PASEXT) inifiles$(PPUEXT): classes$(PPUEXT) inifiles$(PASEXT) ezcgi$(PPUEXT): ezcgi$(PASEXT) ezcgi.inc - -# -# $Log$ -# Revision 1.6 1999-07-22 16:14:36 peter -# + xml -# -# Revision 1.5 1999/05/31 12:47:58 peter -# * classes unit to unitobjects -# -# Revision 1.4 1999/04/22 10:50:44 peter -# * set target always -# -# Revision 1.3 1999/04/08 10:18:48 peter -# * makefile updates -# -# diff --git a/fcl/go32v2/Makefile.fpc b/fcl/go32v2/Makefile.fpc new file mode 100644 index 0000000000..445fad97cc --- /dev/null +++ b/fcl/go32v2/Makefile.fpc @@ -0,0 +1,43 @@ +# +# $Id$ +# +# Makefile.fpc for Free Component Library for Go32v2 +# + +[defaults] +defaultunits=1 +defaulttarget=go32v2 +defaultcpu=i386 +defaultoptions=-S2 + +[dirs] +fpcdir=../.. +targetdir=. +incdir=$(INC) + +[targets] +units=classes $(INCUNITS) $(XMLUNITS) + + +[presettings] +# Include files +INC=../inc +XML=../xml + +# INCUNITS,XMLUNITS is defined in makefile.inc +# They are default units for all platforms. +include $(INC)/Makefile.inc +include $(XML)/Makefile.inc + + +[rules] +vpath %$(PASEXT) $(INC) $(XML) + +INCFILES=$(addprefix $(INC)/,$(INCNAMES)) + +classes$(PPUEXT): $(INCFILES) classes$(PASEXT) + +inifiles$(PPUEXT): classes$(PPUEXT) inifiles$(PASEXT) + +ezcgi$(PPUEXT): ezcgi$(PASEXT) ezcgi.inc + diff --git a/fcl/linux/Makefile b/fcl/linux/Makefile index 5fe559437a..c4022003f1 100644 --- a/fcl/linux/Makefile +++ b/fcl/linux/Makefile @@ -1,52 +1,136 @@ # -# $Id$ -# Copyright (c) 1999 by the Free Pascal Development Team -# -# Makefile for Free Component Library for Linux -# -# 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. +# Makefile generated from Makefile.fpc on 1999-11-04 01:17 # +defaultrule: Makefile all + +Makefile: Makefile.fpc + fpcmake + $(MAKE) ##################################################################### -# Defaults +# Autodetect OS (Linux or Dos or Windows NT) +# define inlinux when running under linux +# define inWinNT when running under WinNT ##################################################################### -# Default place of the makefile.fpc -DEFAULTFPCDIR=../.. +# We need only / in the path +override PATH:=$(subst \,/,$(PATH)) -# set target and cpu which are required -override OS_TARGET=linux -override CPU=i386 +# Search for PWD and determine also if we are under linux +PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(subst ;, ,$(PATH))))) +ifeq ($(PWD),) +PWD:=$(strip $(wildcard $(addsuffix /pwd,$(subst :, ,$(PATH))))) +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 +else +inlinux=1 +endif +else +PWD:=$(firstword $(PWD)) +endif + +# Detect NT - NT sets OS to Windows_NT +ifndef inlinux +ifeq ($(OS),Windows_NT) +inWinNT=1 +endif +endif + +# Detect OS/2 - OS/2 has OS2_SHELL defined +ifndef inlinux +ifndef inWinNT +ifdef OS2_SHELL +inOS2=1 +endif +endif +endif + +# The extension of executables +ifdef inlinux +EXEEXT= +else +EXEEXT=.exe +endif + +# The path which is search separated by spaces +ifdef inlinux +SEARCHPATH=$(subst :, ,$(PATH)) +else +SEARCHPATH=$(subst ;, ,$(PATH)) +endif + +##################################################################### +# Default target +##################################################################### + +override OS_TARGET:=linux +override CPU_TARGET:=i386 + +##################################################################### +# FPC version/target Detection +##################################################################### + +# What compiler to use ? +ifndef FPC +ifdef inOS2 +export FPC=ppos2$(EXEEXT) +else +export FPC=ppc386$(EXEEXT) +endif +endif + +# Target OS +ifndef OS_TARGET +export OS_TARGET:=$(shell $(FPC) -iTO) +endif + +# Source OS +ifndef OS_SOURCE +export OS_SOURCE:=$(shell $(FPC) -iSO) +endif + +# Target CPU +ifndef CPU_TARGET +export CPU_TARGET:=$(shell $(FPC) -iTP) +endif + +# Source CPU +ifndef CPU_SOURCE +export CPU_SOURCE:=$(shell $(FPC) -iSP) +endif + +# FPC version +ifndef FPC_VERSION +export FPC_VERSION:=$(shell $(FPC) -iV) +endif + +##################################################################### +# Default Settings +##################################################################### + +# Release ? Then force OPT and don't use extra opts via commandline +ifdef RELEASE +override OPT:=-Xs -OG2p3 -n +endif + +# Verbose settings (warning,note,info) +ifdef VERBOSE +override OPT+=-vwni +endif + +##################################################################### +# User Settings +##################################################################### # Include files INC=../inc XML=../xml -PROCINC=../$(CPU) -# default library name -LIBNAME=fpfcl - -# Where to place the files -TARGETDIR=. - -# We need always -S2 -NEEDOPT=-S2 - -# As default make only the units -DEFAULTUNITS=1 - - -##################################################################### -# Real targets -##################################################################### - -# INCUNITS is defined in makefile.inc +# INCUNITS,XMLUNITS is defined in makefile.inc # They are default units for all platforms. include $(INC)/Makefile.inc include $(XML)/Makefile.inc @@ -54,78 +138,820 @@ include $(XML)/Makefile.inc UNITOBJECTS=classes $(INCUNITS) $(XMLUNITS) EXEOBJECTS= - -##################################################################### -# Common targets -##################################################################### - -.PHONY: all clean install info \ - staticlib sharedlib libsclean \ - staticinstall sharedinstall libinstall \ - -all: testfpcmake fpc_all - -clean: testfpcmake fpc_clean - -install: testfpcmake fpc_install - -info: testfpcmake fpc_info - -staticlib: testfpcmake fpc_staticlib - -sharedlib: testfpcmake fpc_sharedlib - -libsclean: testfpcmake fpc_libsclean - -staticinstall: testfpcmake fpc_staticinstall - -sharedinstall: testfpcmake fpc_sharedinstall - -libinstall: testfpcmake fpc_libinstall - - -##################################################################### -# Include default makefile -##################################################################### - -# test if FPCMAKE is still valid -ifdef FPCMAKE -ifeq ($(strip $(wildcard $(FPCMAKE))),) -FPCDIR= -FPCMAKE= -endif -endif +DEFAULTUNITS=1 +override NEEDOPT=-S2 ifndef FPCDIR -ifdef DEFAULTFPCDIR -FPCDIR=$(DEFAULTFPCDIR) +FPCDIR=../.. endif +override NEEDINCDIR=$(INC) +ifndef TARGETDIR +TARGETDIR=. endif -ifndef FPCMAKE + +FPCINFO=fpc_infocfg fpc_infoobjects fpc_infoinstall + +##################################################################### +# Compiler Command Line +##################################################################### + +# Load commandline OPTDEF and add FPC_CPU define +override FPCOPTDEF:=-d$(FPC_CPU) + +# Load commandline OPT and add target and unit dir to be sure +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif + + +ifdef NEEDOPT +override FPCOPT+=$(NEEDOPT) +endif + +# RTL first and then Unit dir (a unit can override RTLunit). Don't add the +# dirs if fpcdir=. which can be used for the rtl makefiles ifdef FPCDIR -FPCMAKE=$(FPCDIR)/makefile.fpc -else -FPCMAKE=makefile.fpc +ifneq ($(FPCDIR),.) +override FPCOPT+=-Fu$(FPCDIR)/rtl/$(OS_TARGET) -Fu$(FPCDIR)/units/$(OS_TARGET) endif endif -override FPCMAKE:=$(strip $(wildcard $(FPCMAKE))) -ifeq ($(FPCMAKE),) -testfpcmake: - @echo makefile.fpc not found! - @echo Check the FPCMAKE and FPCDIR environment variables. +ifdef NEEDINCDIR +override FPCOPT+=$(addprefix -Fi,$(NEEDINCDIR)) +endif + + +# Target dirs +ifdef TARGETDIR +override FPCOPT+=-FE$(TARGETDIR) +endif + +# Smartlinking +ifeq ($(SMARTLINK),YES) +override FPCOPT+=-Cx +endif + +# Add commandline options +ifdef OPT +override FPCOPT+=$(OPT) +endif +ifdef UNITDIR +override FPCOPT+=$(addprefix -Fu,$(UNITDIR)) +endif +ifdef LIBDIR +override FPCOPT+=$(addprefix -Fl,$(LIBDIR)) +endif +ifdef OBJDIR +override FPCOPT+=$(addprefix -Fo,$(OBJDIR)) +endif +ifdef INCDIR +override FPCOPT+=$(addprefix -Fi,$(INCDIR)) +endif + +# Add defines from FPCOPTDEF to FPCOPT +ifdef FPCOPTDEF +override FPCOPT+=$(FPCOPTDEF) +endif + +# Was a config file specified ? +ifdef CFGFILE +override FPCOPT+=@$(CFGFILE) +endif + +override COMPILER=$(FPC) $(FPCOPT) + +##################################################################### +# Shell tools +##################################################################### + +# To copy pograms +ifndef COPY +export COPY:=cp -fp +endif + +# To move pograms +ifndef MOVE +export MOVE:=mv -f +endif + +# Check delete program +ifndef DEL +export DEL:=rm -f +endif + +# Check deltree program +ifndef DELTREE +export DELTREE:=rm -rf +endif + +# To install files +ifndef INSTALL +ifdef inlinux +export INSTALL:=install -m 644 +else +export INSTALL:=$(COPY) +endif +endif + +# To install programs +ifndef INSTALLEXE +ifdef inlinux +export INSTALLEXE:=install -m 755 +else +export INSTALLEXE:=$(COPY) +endif +endif + +# To make a directory. +ifndef MKDIR +ifdef inlinux +export MKDIR:=install -m 755 -d +else +export MKDIR:=ginstall -m 755 -d +endif +endif + +##################################################################### +# Default Tools +##################################################################### + +# assembler, redefine it if cross compiling +ifndef AS +AS=as +endif + +# linker, but probably not used +ifndef LD +LD=ld +endif + +# Where is the ppumove program ? +ifndef PPUMOVE +PPUMOVE=ppumove +endif + +# Where is the ppdep program ? +ifndef PPDEP +PPDEP=ppdep +endif + +# ppas.bat / ppas.sh +ifdef inlinux +PPAS=ppas.sh +else +ifdef inOS2 +PPAS=ppas.cmd +else +PPAS=ppas.bat +endif +endif + +# also call ppas if with command option -s +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +EXECPPAS=@$(PPAS) +endif + +# ldconfig to rebuild .so cache +ifdef inlinux +LDCONFIG=ldconfig +else +LDCONFIG= +endif + +# echo +ifndef ECHO +ECHO:=$(strip $(wildcard $(addsuffix /echo$(EXEEXT),$(SEARCHPATH)))) +ifeq ($(ECHO),) +export ECHO:=echo +else +export ECHO:=$(firstword $(ECHO)) +endif +endif + +# Look if UPX is found for go32v2 and win32. We can't use $UPX becuase +# upx uses that one itself (PFV) +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(EXEEXT),$(SEARCHPATH)))) +ifeq ($(UPX),) +UPXPROG= +else +export UPXPROG:=$(firstword $(UPX)) +endif +else +UPXPROG= +endif +endif + +# gdate/date +ifndef DATE +DATE:=$(strip $(wildcard $(addsuffix /date$(EXEEXT),$(SEARCHPATH)))) +ifeq ($(DATE),) +DATE:=$(strip $(wildcard $(addsuffix /gdate$(EXEEXT),$(SEACHPATH)))) +ifeq ($(DATE),) +DATE= +else +export DATE:=$(firstword $(DATE)) +endif +else +export DATE:=$(firstword $(DATE)) +endif +endif + +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif + +# ZipProg, you can't use Zip as the var name (PFV) +ifndef ZIPPROG +ZIPPROG:=$(strip $(wildcard $(addsuffix /zip$(EXEEXT),$(SEARCHPATH)))) +ifeq ($(ZIPPROG),) +ZIPPROG= +else +export ZIPPROG:=$(firstword $(ZIPPROG)) -D9 -r +endif +endif + +ifndef ZIPEXT +ZIPEXT=.zip +endif + +##################################################################### +# Default Directories +##################################################################### + +# Base dir +ifdef PWD +BASEDIR:=$(shell $(PWD)) +else +BASEDIR=. +endif + +# set the prefix directory where to install everything +ifndef PREFIXINSTALLDIR +ifdef inlinux +export PREFIXINSTALLDIR=/usr +else +export PREFIXINSTALLDIR=/pp +endif +endif + +# set the directory to the rtl base +ifndef RTLDIR +ifdef RTL +RTLDIR:=$(RTL)/$(OS_TARGET) +else +RTLDIR:=$(FPCDIR)/rtl/$(OS_TARGET) +endif +endif + +# specify where units are. +ifndef UNITDIR +ifdef UNITS +UNITDIR=$(UNITS)/$(OS_TARGET) +else +UNITDIR=$(FPCDIR)/units/$(OS_TARGET) +endif +endif +ifeq ($(strip $(wildcard $(UNITDIR)/*)),) +UNITDIR= +endif + +# On linux, try to find where libgcc.a is. +ifdef inlinux +ifndef GCCLIBDIR +export GCCLIBDIR:=$(shell dirname `(gcc -v 2>&1)| head -n 1| awk '{ print $$4 } '`) +endif +endif + +# Where to find other libraries +ifdef inlinux +ifndef OTHERLIBDIR +export OTHERLIBDIR:=$(shell grep -v "^\#" /etc/ld.so.conf | awk '{ ORS=" "; print $1 }') +endif +endif + +##################################################################### +# Install Directories based on BASEINSTALLDIR +##################################################################### + +# set the base directory where to install everything +ifndef BASEINSTALLDIR +ifdef inlinux +BASEINSTALLDIR=$(PREFIXINSTALLDIR)/lib/fpc/$(FPC_VERSION) +else +BASEINSTALLDIR=$(PREFIXINSTALLDIR) +endif +endif + + +# Linux binary really goes to baseinstalldir +ifndef LIBINSTALLDIR +ifdef inlinux +LIBINSTALLDIR=$(BASEINSTALLDIR) +else +LIBINSTALLDIR=$(BASEINSTALLDIR)/lib +endif +endif + +# set the directory where to install the binaries +ifndef BININSTALLDIR +ifdef inlinux +BININSTALLDIR=$(PREFIXINSTALLDIR)/bin +else +BININSTALLDIR=$(BASEINSTALLDIR)/bin/$(OS_TARGET) +endif +endif + +# Where the .msg files will be stored +ifndef MSGINSTALLDIR +MSGINSTALLDIR=$(BASEINSTALLDIR)/msg +endif + +# Where the .msg files will be stored +ifndef SOURCEINSTALLDIR +SOURCEINSTALLDIR=$(BASEINSTALLDIR)/source +endif + +# Where the doc files will be stored +ifndef DOCINSTALLDIR +ifdef inlinux +DOCINSTALLDIR=$(PREFIXINSTALLDIR)/doc/fpc/$(FPC_VERSION) +else +DOCINSTALLDIR=$(BASEINSTALLDIR)/doc +endif +endif + +######################## +# Unit Directories +######################## + +# this can be set to 'rtl' when the RTL units are installed +ifndef UNITPREFIX +UNITPREFIX=units +endif + +# set the directory where to install the units. +ifndef UNITINSTALLDIR +UNITINSTALLDIR=$(BASEINSTALLDIR)/$(UNITPREFIX)/$(OS_TARGET) +endif + +# set the directory where to install the units. +ifndef STATIC_UNITINSTALLDIR +STATIC_UNITINSTALLDIR=$(UNITINSTALLDIR)/static +endif + +# set the directory where to install the units. +ifndef SHARED_UNITINSTALLDIR +SHARED_UNITINSTALLDIR=$(UNITINSTALLDIR)/shared +endif + +# set the directory where to install the libs (must exist) +ifndef STATIC_LIBINSTALLDIR +STATIC_LIBINSTALLDIR=$(STATIC_UNITINSTALLDIR) +endif + +# set the directory where to install the libs (must exist) +ifndef SHARED_LIBINSTALLDIR +ifdef inlinux +SHARED_LIBINSTALLDIR=$(PREFIXINSTALLDIR)/lib +else +SHARED_LIBINSTALLDIR=$(SHARED_UNITINSTALLDIR) +endif +endif + +##################################################################### +# Default extensions +##################################################################### + +# Default needed extensions (Go32v2,Linux) +LOADEREXT=.as +PPLEXT=.ppl +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.so +PACKAGESUFFIX= + +# Go32v1 +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +PACKAGESUFFIX=v1 +endif + +# Go32v2 +ifeq ($(OS_TARGET),go32v2) +PACKAGESUFFIX=go32 +endif + +# Linux +ifeq ($(OS_TARGET),linux) +PACKAGESUFFIX=linux +endif + +# Win32 +ifeq ($(OS_TARGET),win32) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +PACKAGESUFFIX=win32 +endif + +# OS/2 +ifeq ($(OS_TARGET),os2) +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +SMARTEXT=.so +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +PACKAGESUFFIX=os2 +endif + +# library prefix +LIBPREFIX=lib +ifeq ($(OS_TARGET),go32v2) +LIBPREFIX= +endif +ifeq ($(OS_TARGET),go32v1) +LIBPREFIX= +endif + +# determine which .pas extension is used +ifndef PASEXT +ifdef EXEOBJECTS +override TESTPAS:=$(strip $(wildcard $(addsuffix .pas,$(firstword $(EXEOBJECTS))))) +else +override TESTPAS:=$(strip $(wildcard $(addsuffix .pas,$(firstword $(UNITOBJECTS))))) +endif +ifeq ($(TESTPAS),) +PASEXT=.pp +else +PASEXT=.pas +endif +endif + +##################################################################### +# Default rules +##################################################################### + +.PHONY: defaultrule all staticlib sharedlib showinstall install \ + staticinstall sharedinstall libinstall zipinstall zipinstalladd \ + clean cleanall depend info + +all: fpc_all + +staticlib: fpc_staticlib + +sharedlib: fpc_sharedlib + +showinstall: fpc_showinstall + +install: fpc_install + +staticinstall: fpc_staticinstall + +sharedinstall: fpc_sharedinstall + +libinstall: fpc_libinstall + +zipinstall: fpc_zipinstall + +zipinstalladd: fpc_zipinstalladd + +clean: fpc_clean + +clean_all: fpc_clean_all + +depend: fpc_depend + +info: fpc_info + +##################################################################### +# General compile rules +##################################################################### + +.PHONY: fpc_all fpc_units fpc_exes fpc_loaders + +# Create Filenames +LOADEROFILES=$(addsuffix $(OEXT),$(LOADEROBJECTS)) +EXEFILES=$(addsuffix $(EXEEXT),$(EXEOBJECTS)) +EXEOFILES=$(addsuffix $(OEXT),$(EXEOBJECTS)) +UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS)) +UNITOFILES=$(addsuffix $(OEXT),$(UNITOBJECTS)) +UNITAFILES=$(addsuffix $(STATICLIBEXT),$(UNITOBJECTS)) + +.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .pp + +ifdef DEFAULTUNITS +fpc_all: fpc_loaders fpc_units +else +fpc_all: fpc_loaders fpc_units fpc_exes +endif + +fpc_loaders: $(LOADEROFILES) + +fpc_units: $(UNITPPUFILES) + +fpc_exes: $(EXEFILES) + +# General compile rules, available for both possible PASEXT +%$(PPUEXT): %.pp + $(COMPILER) $< $(REDIR) + $(EXECPASS) + +%$(PPUEXT): %.pas + $(COMPILER) $< $(REDIR) + $(EXECPASS) + +%$(EXEEXT): %.pp + $(COMPILER) $< $(REDIR) + $(EXECPASS) + +%$(EXEEXT): %.pas + $(COMPILER) $< $(REDIR) + $(EXECPASS) + +%$(OEXT): %$(LOADEREXT) + $(AS) -o $*$(OEXT) $< + +##################################################################### +# Library +##################################################################### + +.PHONY: fpc_staticlib fpc_sharedlib + +# Default sharedlib units are all unit objects +ifndef SHAREDLIBUNITOBJECTS +SHAREDLIBUNITOBJECTS=$(UNITOBJECTS) +endif + +fpc_staticlib: + $(MAKE) libsclean + $(MAKE) all SMARTLINK=YES + +fpc_sharedlib: all +ifdef inlinux +ifndef LIBNAME + @$(ECHO) LIBNAME not set +else + $(PPUMOVE) $(SHAREDLIBUNITOBJECTS) -o$(LIBNAME) +endif +else + @$(ECHO) Shared Libraries not supported +endif + +##################################################################### +# Install rules +##################################################################### + +.PHONY: fpc_showinstallfiles fpc_install + +ifdef EXTRAINSTALLUNITS +override EXTRAINSTALLFILES=$(wildcard $(addsuffix $(OEXT),$(EXTRAINSTALLUNITS)) $(addsuffix $(STATICLIBEXT),$(EXTRAINSTALLUNITS)) $(addsuffix $(PPUEXT),$(EXTRAINSTALLUNITS))) +endif +ifdef UNITOBJECTS +override UNITINSTALLFILES=$(wildcard $(UNITPPUFILES) $(UNITOFILES) $(UNITAFILES)) +endif + +fpc_showinstallfiles : all +ifndef DEFAULTUNITS +ifdef EXEOBJECTS + @$(ECHO) $(addprefix "\n"$(BININSTALLDIR)/,$(EXEFILES)) +endif +endif +ifdef LOADEROBJECTS + @$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(LOADEROFILES)) +endif +ifdef UNITINSTALLFILES + @$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(UNITINSTALLFILES)) +endif +ifdef EXTRAINSTALLFILES + @$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(EXTRAINSTALLFILES)) +endif + +fpc_install: +# Create UnitInstallFiles +ifndef DEFAULTUNITS +ifdef EXEOBJECTS + $(MKDIR) $(BININSTALLDIR) +# Compress the exes if upx is defined +ifdef UPXPROG + -$(UPXPROG) $(EXEFILES) +endif + $(INSTALLEXE) $(EXEFILES) $(BININSTALLDIR) +endif +endif +ifdef LOADEROBJECTS + $(MKDIR) $(UNITINSTALLDIR) + $(INSTALL) $(LOADEROFILES) $(UNITINSTALLDIR) +endif +ifdef UNITINSTALLFILES + $(MKDIR) $(UNITINSTALLDIR) + $(INSTALL) $(UNITINSTALLFILES) $(UNITINSTALLDIR) +endif +ifdef EXTRAINSTALLFILES + $(MKDIR) $(UNITINSTALLDIR) + $(INSTALL) $(EXTRAINSTALLFILES) $(UNITINSTALLDIR) +endif + +##################################################################### +# Zip +##################################################################### + +.PHONY: fpc_zipinstall fpc_zipinstalladd + +# Temporary path to pack a file +ifndef PACKDIR +ifndef inlinux +PACKDIR=pack_tmp +else +PACKDIR=/tmp/fpc-pack +endif +endif + +# Test dir if none specified +ifndef PACKAGEDIR +PACKAGEDIR=$(BASEDIR) +endif + +# Add .zip/.tar.gz extension +ifdef ZIPNAME +ifndef inlinux +override ZIPNAME:=$(ZIPNAME)$(ZIPEXT) +endif +endif + +# Default target which is call before zipping +ifndef ZIPTARGET +ZIPTARGET=install +endif + +# Note: This will not remove the zipfile first +fpc_zipinstalladd: +ifndef ZIPNAME + @$(ECHO) Please specify ZIPNAME! @exit else -include $(FPCMAKE) -testfpcmake: + $(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR) +ifdef inlinux + gzip -d $(PACKAGEDIR)/$(ZIPNAME).tar.gz + cd $(PACKDIR) ; tar rv --file $(PACKAGEDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR) + gzip $(PACKAGEDIR)/$(ZIPNAME).tar +else + cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR) +endif + $(DELTREE) $(PACKDIR) endif +# First remove the zip and then install +fpc_zipinstall: +ifndef ZIPNAME + @$(ECHO) Please specify ZIPNAME! + @exit +else + $(DEL) $(PACKAGEDIR)/$(ZIPNAME) + $(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR) +ifdef inlinux + cd $(PACKDIR) ; tar cvz --file $(PACKAGEDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR) +else + cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR) +endif + $(DELTREE) $(PACKDIR) +endif ##################################################################### -# Dependencies +# Clean rules ##################################################################### +.PHONY: fpc_clean fpc_libsclean fpc_cleanall + +ifdef UNITOBJECTS +override UNITCLEANFILES=$(wildcard $(UNITPPUFILES) $(UNITOFILES) $(UNITAFILES)) +endif +ifdef EXTRACLEANUNITS +override EXTRACLEANFILES=$(wildcard $(addsuffix $(OEXT),$(EXTRACLEANUNITS)) $(addsuffix $(STATICLIBEXT),$(EXTRACLEANUNITS)) $(addsuffix $(PPUEXT),$(EXTRACLEANUNITS))) +endif + +fpc_clean: +ifdef EXEOBJECTS + -$(DEL) $(EXEFILES) $(EXEOFILES) +endif +ifdef LOADEROBJECTS + -$(DEL) $(LOADEROFILES) +endif +ifdef UNITCLEANFILES + -$(DEL) $(UNITCLEANFILES) +endif +ifdef EXTRACLEANFILES + -$(DEL) $(EXTRACLEANFILES) +endif + -$(DEL) $(PPAS) link.res log + +fpc_libsclean: clean + -$(DEL) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT) + +fpc_cleanall: +ifdef EXEOBJECTS + -$(DEL) $(EXEFILES) +endif + -$(DEL) *$(OEXT) *$(PPUEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT) + -$(DELTREE) *$(SMARTEXT) + +##################################################################### +# Depend rules +##################################################################### + +.PHONY: fpc_depend + +fpc_depend: + $(PPDEP) $(UNITOBJECTS) + +##################################################################### +# Info rules +##################################################################### + +.PHONY: fpc_info fpc_cfginfo fpc_objectinfo fpc_toolsinfo fpc_installinfo \ + fpc_dirinfo + +fpc_info: $(FPCINFO) + +fpc_infocfg: + @$(ECHO) + @$(ECHO) == Configuration info == + @$(ECHO) + @$(ECHO) FPC....... $(FPC) + @$(ECHO) Version... $(FPC_VERSION) + @$(ECHO) CPU....... $(CPU_TARGET) + @$(ECHO) Source.... $(OS_SOURCE) + @$(ECHO) Target.... $(OS_TARGET) + @$(ECHO) + +fpc_infoobjects: + @$(ECHO) + @$(ECHO) == Object info == + @$(ECHO) + @$(ECHO) LoaderObjects..... $(LOADEROBJECTS) + @$(ECHO) UnitObjects....... $(UNITOBJECTS) + @$(ECHO) ExeObjects........ $(EXEOBJECTS) + @$(ECHO) + @$(ECHO) ExtraCleanUnits... $(EXTRACLEANUNITS) + @$(ECHO) ExtraInstallUnits. $(EXTRAINSTALLUNITS) + @$(ECHO) ExtraInstallFiles. $(EXTRAINSTALLFILES) + @$(ECHO) + @$(ECHO) == Unit info == + @$(ECHO) + @$(ECHO) UnitInstallFiles. $(UNITINSTALLFILES) + @$(ECHO) UnitCleanFiles... $(UNITCLEANFILES) + @$(ECHO) + +fpc_infoinstall: + @$(ECHO) + @$(ECHO) == Install info == + @$(ECHO) +ifdef DATE + @$(ECHO) DateStr.............. $(DATESTR) +endif + @$(ECHO) PackageSuffix........ $(PACKAGESUFFIX) + @$(ECHO) + @$(ECHO) BaseInstallDir....... $(BASEINSTALLDIR) + @$(ECHO) BinInstallDir........ $(BININSTALLDIR) + @$(ECHO) UnitInstallDir....... $(UNITINSTALLDIR) + @$(ECHO) StaticUnitInstallDir. $(STATIC_UNITINSTALLDIR) + @$(ECHO) SharedUnitInstallDir. $(SHARED_UNITINSTALLDIR) + @$(ECHO) LibInstallDir........ $(LIBINSTALLDIR) + @$(ECHO) StaticLibInstallDir.. $(STATIC_LIBINSTALLDIR) + @$(ECHO) SharedLibInstallDir.. $(SHARED_LIBINSTALLDIR) + @$(ECHO) MsgInstallDir........ $(MSGINSTALLDIR) + @$(ECHO) DocInstallDir........ $(DOCINSTALLDIR) + @$(ECHO) + +##################################################################### +# Users rules +##################################################################### + + vpath %$(PASEXT) $(INC) $(XML) INCFILES=$(addprefix $(INC)/,$(INCNAMES)) @@ -135,29 +961,3 @@ classes$(PPUEXT): $(INCFILES) classes$(PASEXT) inifiles$(PPUEXT): classes$(PPUEXT) inifiles$(PASEXT) ezcgi$(PPUEXT): ezcgi$(PASEXT) ezcgi.inc - -# -# $Log$ -# Revision 1.13 1999-08-09 22:19:58 peter -# * classes vmt changed to only positive addresses -# * sharedlib creation is working -# -# Revision 1.12 1999/07/09 08:43:26 michael -# + Added XML units -# -# Revision 1.11 1999/05/31 12:46:31 peter -# * classes unit to unitobjects -# -# Revision 1.10 1999/04/27 19:13:44 michael -# + Added ezcgi from Michael Hess -# -# Revision 1.9 1999/04/22 10:50:45 peter -# * set target always -# -# Revision 1.8 1999/04/08 15:58:44 michael -# + INCUNITS added -# -# Revision 1.7 1999/04/08 10:18:59 peter -# * makefile updates -# -# diff --git a/fcl/linux/Makefile.fpc b/fcl/linux/Makefile.fpc new file mode 100644 index 0000000000..f831bb2850 --- /dev/null +++ b/fcl/linux/Makefile.fpc @@ -0,0 +1,43 @@ +# +# $Id$ +# +# Makefile.fpc for Free Component Library for Go32v2 +# + +[defaults] +defaultunits=1 +defaulttarget=linux +defaultcpu=i386 +defaultoptions=-S2 + +[dirs] +fpcdir=../.. +targetdir=. +incdir=$(INC) + +[targets] +units=classes $(INCUNITS) $(XMLUNITS) + + +[presettings] +# Include files +INC=../inc +XML=../xml + +# INCUNITS,XMLUNITS is defined in makefile.inc +# They are default units for all platforms. +include $(INC)/Makefile.inc +include $(XML)/Makefile.inc + + +[rules] +vpath %$(PASEXT) $(INC) $(XML) + +INCFILES=$(addprefix $(INC)/,$(INCNAMES)) + +classes$(PPUEXT): $(INCFILES) classes$(PASEXT) + +inifiles$(PPUEXT): classes$(PPUEXT) inifiles$(PASEXT) + +ezcgi$(PPUEXT): ezcgi$(PASEXT) ezcgi.inc + diff --git a/fcl/shedit/Makefile b/fcl/shedit/Makefile index 1cd8c457d4..20893fb0e7 100644 --- a/fcl/shedit/Makefile +++ b/fcl/shedit/Makefile @@ -1,116 +1,938 @@ # -# $Id$ -# Copyright (c) 1999 by the Free Pascal Development Team -# -# Makefile for shedit -# -# 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. +# Makefile generated from Makefile.fpc on 1999-11-04 01:16 # +defaultrule: Makefile all + +Makefile: Makefile.fpc + fpcmake + $(MAKE) ##################################################################### -# Defaults +# Autodetect OS (Linux or Dos or Windows NT) +# define inlinux when running under linux +# define inWinNT when running under WinNT ##################################################################### -# Default place of the makefile.fpc -DEFAULTFPCDIR=../.. +# We need only / in the path +override PATH:=$(subst \,/,$(PATH)) -# As default make only the units -DEFAULTUNITS=1 - - -##################################################################### -# Real targets -##################################################################### - -UNITOBJECTS=doc_text shedit sh_pas sh_xml -EXEOBJECTS=gtkdemo - - -##################################################################### -# Common targets -##################################################################### - -.PHONY: all clean install info \ - staticlib sharedlib libsclean \ - staticinstall sharedinstall libinstall \ - -all: testfpcmake fpc_all - -clean: testfpcmake fpc_clean - -install: testfpcmake fpc_install - -info: testfpcmake fpc_info - -staticlib: testfpcmake fpc_staticlib - -sharedlib: testfpcmake fpc_sharedlib - -libsclean: testfpcmake fpc_libsclean - -staticinstall: testfpcmake fpc_staticinstall - -sharedinstall: testfpcmake fpc_sharedinstall - -libinstall: testfpcmake fpc_libinstall - - -##################################################################### -# Include default makefile -##################################################################### - -# test if FPCMAKE is still valid -ifdef FPCMAKE -ifeq ($(strip $(wildcard $(FPCMAKE))),) -FPCDIR= -FPCMAKE= -endif -endif - -ifndef FPCDIR -ifdef DEFAULTFPCDIR -FPCDIR=$(DEFAULTFPCDIR) -endif -endif - -ifndef FPCMAKE -ifdef FPCDIR -FPCMAKE=$(FPCDIR)/makefile.fpc -else -FPCMAKE=makefile.fpc -endif -endif - -override FPCMAKE:=$(strip $(wildcard $(FPCMAKE))) -ifeq ($(FPCMAKE),) -testfpcmake: - @echo makefile.fpc not found! - @echo Check the FPCMAKE and FPCDIR environment variables. +# Search for PWD and determine also if we are under linux +PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(subst ;, ,$(PATH))))) +ifeq ($(PWD),) +PWD:=$(strip $(wildcard $(addsuffix /pwd,$(subst :, ,$(PATH))))) +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 else -include $(FPCMAKE) -testfpcmake: +inlinux=1 +endif +else +PWD:=$(firstword $(PWD)) +endif + +# Detect NT - NT sets OS to Windows_NT +ifndef inlinux +ifeq ($(OS),Windows_NT) +inWinNT=1 +endif +endif + +# Detect OS/2 - OS/2 has OS2_SHELL defined +ifndef inlinux +ifndef inWinNT +ifdef OS2_SHELL +inOS2=1 +endif +endif +endif + +# The extension of executables +ifdef inlinux +EXEEXT= +else +EXEEXT=.exe +endif + +# The path which is search separated by spaces +ifdef inlinux +SEARCHPATH=$(subst :, ,$(PATH)) +else +SEARCHPATH=$(subst ;, ,$(PATH)) +endif + +##################################################################### +# FPC version/target Detection +##################################################################### + +# What compiler to use ? +ifndef FPC +ifdef inOS2 +export FPC=ppos2$(EXEEXT) +else +export FPC=ppc386$(EXEEXT) +endif +endif + +# Target OS +ifndef OS_TARGET +export OS_TARGET:=$(shell $(FPC) -iTO) +endif + +# Source OS +ifndef OS_SOURCE +export OS_SOURCE:=$(shell $(FPC) -iSO) +endif + +# Target CPU +ifndef CPU_TARGET +export CPU_TARGET:=$(shell $(FPC) -iTP) +endif + +# Source CPU +ifndef CPU_SOURCE +export CPU_SOURCE:=$(shell $(FPC) -iSP) +endif + +# FPC version +ifndef FPC_VERSION +export FPC_VERSION:=$(shell $(FPC) -iV) +endif + +##################################################################### +# Default Settings +##################################################################### + +# Release ? Then force OPT and don't use extra opts via commandline +ifdef RELEASE +override OPT:=-Xs -OG2p3 -n +endif + +# Verbose settings (warning,note,info) +ifdef VERBOSE +override OPT+=-vwni +endif + +##################################################################### +# User Settings +##################################################################### + + +UNITOBJECTS=doc_text shedit sh_pas sh_xml +EXEOBJECTS= +ifeq ($(OS_TARGET),linux) +EXEOBJECTS+=gtkdemo +endif +ifeq ($(OS_TARGET),win32) +EXEOBJECTS+=gtkdemo +endif + +DEFAULTUNITS=1 + +ifndef FPCDIR +FPCDIR=../.. +endif +override NEEDUNITDIR=$(FPCDIR)/gtk ../$(OS_TARGET) +ifndef TARGETDIR +TARGETDIR=. endif +FPCINFO=fpc_infocfg fpc_infoobjects fpc_infoinstall ##################################################################### -# Dependencies +# Compiler Command Line ##################################################################### +# Load commandline OPTDEF and add FPC_CPU define +override FPCOPTDEF:=-d$(FPC_CPU) + +# Load commandline OPT and add target and unit dir to be sure +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif + + +ifdef NEEDOPT +override FPCOPT+=$(NEEDOPT) +endif + +# RTL first and then Unit dir (a unit can override RTLunit). Don't add the +# dirs if fpcdir=. which can be used for the rtl makefiles +ifdef FPCDIR +ifneq ($(FPCDIR),.) +override FPCOPT+=-Fu$(FPCDIR)/rtl/$(OS_TARGET) -Fu$(FPCDIR)/units/$(OS_TARGET) +endif +endif + +ifdef NEEDUNITDIR +override FPCOPT+=$(addprefix -Fu,$(NEEDUNITDIR)) +endif + +# Target dirs +ifdef TARGETDIR +override FPCOPT+=-FE$(TARGETDIR) +endif + +# Smartlinking +ifeq ($(SMARTLINK),YES) +override FPCOPT+=-Cx +endif + +# Add commandline options +ifdef OPT +override FPCOPT+=$(OPT) +endif +ifdef UNITDIR +override FPCOPT+=$(addprefix -Fu,$(UNITDIR)) +endif +ifdef LIBDIR +override FPCOPT+=$(addprefix -Fl,$(LIBDIR)) +endif +ifdef OBJDIR +override FPCOPT+=$(addprefix -Fo,$(OBJDIR)) +endif +ifdef INCDIR +override FPCOPT+=$(addprefix -Fi,$(INCDIR)) +endif + +# Add defines from FPCOPTDEF to FPCOPT +ifdef FPCOPTDEF +override FPCOPT+=$(FPCOPTDEF) +endif + +# Was a config file specified ? +ifdef CFGFILE +override FPCOPT+=@$(CFGFILE) +endif + +override COMPILER=$(FPC) $(FPCOPT) + +##################################################################### +# Shell tools +##################################################################### + +# To copy pograms +ifndef COPY +export COPY:=cp -fp +endif + +# To move pograms +ifndef MOVE +export MOVE:=mv -f +endif + +# Check delete program +ifndef DEL +export DEL:=rm -f +endif + +# Check deltree program +ifndef DELTREE +export DELTREE:=rm -rf +endif + +# To install files +ifndef INSTALL +ifdef inlinux +export INSTALL:=install -m 644 +else +export INSTALL:=$(COPY) +endif +endif + +# To install programs +ifndef INSTALLEXE +ifdef inlinux +export INSTALLEXE:=install -m 755 +else +export INSTALLEXE:=$(COPY) +endif +endif + +# To make a directory. +ifndef MKDIR +ifdef inlinux +export MKDIR:=install -m 755 -d +else +export MKDIR:=ginstall -m 755 -d +endif +endif + +##################################################################### +# Default Tools +##################################################################### + +# assembler, redefine it if cross compiling +ifndef AS +AS=as +endif + +# linker, but probably not used +ifndef LD +LD=ld +endif + +# Where is the ppumove program ? +ifndef PPUMOVE +PPUMOVE=ppumove +endif + +# Where is the ppdep program ? +ifndef PPDEP +PPDEP=ppdep +endif + +# ppas.bat / ppas.sh +ifdef inlinux +PPAS=ppas.sh +else +ifdef inOS2 +PPAS=ppas.cmd +else +PPAS=ppas.bat +endif +endif + +# also call ppas if with command option -s +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +EXECPPAS=@$(PPAS) +endif + +# ldconfig to rebuild .so cache +ifdef inlinux +LDCONFIG=ldconfig +else +LDCONFIG= +endif + +# echo +ifndef ECHO +ECHO:=$(strip $(wildcard $(addsuffix /echo$(EXEEXT),$(SEARCHPATH)))) +ifeq ($(ECHO),) +export ECHO:=echo +else +export ECHO:=$(firstword $(ECHO)) +endif +endif + +# Look if UPX is found for go32v2 and win32. We can't use $UPX becuase +# upx uses that one itself (PFV) +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(EXEEXT),$(SEARCHPATH)))) +ifeq ($(UPX),) +UPXPROG= +else +export UPXPROG:=$(firstword $(UPX)) +endif +else +UPXPROG= +endif +endif + +# gdate/date +ifndef DATE +DATE:=$(strip $(wildcard $(addsuffix /date$(EXEEXT),$(SEARCHPATH)))) +ifeq ($(DATE),) +DATE:=$(strip $(wildcard $(addsuffix /gdate$(EXEEXT),$(SEACHPATH)))) +ifeq ($(DATE),) +DATE= +else +export DATE:=$(firstword $(DATE)) +endif +else +export DATE:=$(firstword $(DATE)) +endif +endif + +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif + +# ZipProg, you can't use Zip as the var name (PFV) +ifndef ZIPPROG +ZIPPROG:=$(strip $(wildcard $(addsuffix /zip$(EXEEXT),$(SEARCHPATH)))) +ifeq ($(ZIPPROG),) +ZIPPROG= +else +export ZIPPROG:=$(firstword $(ZIPPROG)) -D9 -r +endif +endif + +ifndef ZIPEXT +ZIPEXT=.zip +endif + +##################################################################### +# Default Directories +##################################################################### + +# Base dir +ifdef PWD +BASEDIR:=$(shell $(PWD)) +else +BASEDIR=. +endif + +# set the prefix directory where to install everything +ifndef PREFIXINSTALLDIR +ifdef inlinux +export PREFIXINSTALLDIR=/usr +else +export PREFIXINSTALLDIR=/pp +endif +endif + +# set the directory to the rtl base +ifndef RTLDIR +ifdef RTL +RTLDIR:=$(RTL)/$(OS_TARGET) +else +RTLDIR:=$(FPCDIR)/rtl/$(OS_TARGET) +endif +endif + +# specify where units are. +ifndef UNITDIR +ifdef UNITS +UNITDIR=$(UNITS)/$(OS_TARGET) +else +UNITDIR=$(FPCDIR)/units/$(OS_TARGET) +endif +endif +ifeq ($(strip $(wildcard $(UNITDIR)/*)),) +UNITDIR= +endif + +# On linux, try to find where libgcc.a is. +ifdef inlinux +ifndef GCCLIBDIR +export GCCLIBDIR:=$(shell dirname `(gcc -v 2>&1)| head -n 1| awk '{ print $$4 } '`) +endif +endif + +# Where to find other libraries +ifdef inlinux +ifndef OTHERLIBDIR +export OTHERLIBDIR:=$(shell grep -v "^\#" /etc/ld.so.conf | awk '{ ORS=" "; print $1 }') +endif +endif + +##################################################################### +# Install Directories based on BASEINSTALLDIR +##################################################################### + +# set the base directory where to install everything +ifndef BASEINSTALLDIR +ifdef inlinux +BASEINSTALLDIR=$(PREFIXINSTALLDIR)/lib/fpc/$(FPC_VERSION) +else +BASEINSTALLDIR=$(PREFIXINSTALLDIR) +endif +endif + + +# Linux binary really goes to baseinstalldir +ifndef LIBINSTALLDIR +ifdef inlinux +LIBINSTALLDIR=$(BASEINSTALLDIR) +else +LIBINSTALLDIR=$(BASEINSTALLDIR)/lib +endif +endif + +# set the directory where to install the binaries +ifndef BININSTALLDIR +ifdef inlinux +BININSTALLDIR=$(PREFIXINSTALLDIR)/bin +else +BININSTALLDIR=$(BASEINSTALLDIR)/bin/$(OS_TARGET) +endif +endif + +# Where the .msg files will be stored +ifndef MSGINSTALLDIR +MSGINSTALLDIR=$(BASEINSTALLDIR)/msg +endif + +# Where the .msg files will be stored +ifndef SOURCEINSTALLDIR +SOURCEINSTALLDIR=$(BASEINSTALLDIR)/source +endif + +# Where the doc files will be stored +ifndef DOCINSTALLDIR +ifdef inlinux +DOCINSTALLDIR=$(PREFIXINSTALLDIR)/doc/fpc/$(FPC_VERSION) +else +DOCINSTALLDIR=$(BASEINSTALLDIR)/doc +endif +endif + +######################## +# Unit Directories +######################## + +# this can be set to 'rtl' when the RTL units are installed +ifndef UNITPREFIX +UNITPREFIX=units +endif + +# set the directory where to install the units. +ifndef UNITINSTALLDIR +UNITINSTALLDIR=$(BASEINSTALLDIR)/$(UNITPREFIX)/$(OS_TARGET) +endif + +# set the directory where to install the units. +ifndef STATIC_UNITINSTALLDIR +STATIC_UNITINSTALLDIR=$(UNITINSTALLDIR)/static +endif + +# set the directory where to install the units. +ifndef SHARED_UNITINSTALLDIR +SHARED_UNITINSTALLDIR=$(UNITINSTALLDIR)/shared +endif + +# set the directory where to install the libs (must exist) +ifndef STATIC_LIBINSTALLDIR +STATIC_LIBINSTALLDIR=$(STATIC_UNITINSTALLDIR) +endif + +# set the directory where to install the libs (must exist) +ifndef SHARED_LIBINSTALLDIR +ifdef inlinux +SHARED_LIBINSTALLDIR=$(PREFIXINSTALLDIR)/lib +else +SHARED_LIBINSTALLDIR=$(SHARED_UNITINSTALLDIR) +endif +endif + +##################################################################### +# Default extensions +##################################################################### + +# Default needed extensions (Go32v2,Linux) +LOADEREXT=.as +PPLEXT=.ppl +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.so +PACKAGESUFFIX= + +# Go32v1 +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +PACKAGESUFFIX=v1 +endif + +# Go32v2 +ifeq ($(OS_TARGET),go32v2) +PACKAGESUFFIX=go32 +endif + +# Linux +ifeq ($(OS_TARGET),linux) +PACKAGESUFFIX=linux +endif + +# Win32 +ifeq ($(OS_TARGET),win32) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +PACKAGESUFFIX=win32 +endif + +# OS/2 +ifeq ($(OS_TARGET),os2) +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +SMARTEXT=.so +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +PACKAGESUFFIX=os2 +endif + +# library prefix +LIBPREFIX=lib +ifeq ($(OS_TARGET),go32v2) +LIBPREFIX= +endif +ifeq ($(OS_TARGET),go32v1) +LIBPREFIX= +endif + +# determine which .pas extension is used +ifndef PASEXT +ifdef EXEOBJECTS +override TESTPAS:=$(strip $(wildcard $(addsuffix .pas,$(firstword $(EXEOBJECTS))))) +else +override TESTPAS:=$(strip $(wildcard $(addsuffix .pas,$(firstword $(UNITOBJECTS))))) +endif +ifeq ($(TESTPAS),) +PASEXT=.pp +else +PASEXT=.pas +endif +endif + +##################################################################### +# Default rules +##################################################################### + +.PHONY: defaultrule all staticlib sharedlib showinstall install \ + staticinstall sharedinstall libinstall zipinstall zipinstalladd \ + clean cleanall depend info + +all: fpc_all + +staticlib: fpc_staticlib + +sharedlib: fpc_sharedlib + +showinstall: fpc_showinstall + +install: fpc_install + +staticinstall: fpc_staticinstall + +sharedinstall: fpc_sharedinstall + +libinstall: fpc_libinstall + +zipinstall: fpc_zipinstall + +zipinstalladd: fpc_zipinstalladd + +clean: fpc_clean + +clean_all: fpc_clean_all + +depend: fpc_depend + +info: fpc_info + +##################################################################### +# General compile rules +##################################################################### + +.PHONY: fpc_all fpc_units fpc_exes fpc_loaders + +# Create Filenames +LOADEROFILES=$(addsuffix $(OEXT),$(LOADEROBJECTS)) +EXEFILES=$(addsuffix $(EXEEXT),$(EXEOBJECTS)) +EXEOFILES=$(addsuffix $(OEXT),$(EXEOBJECTS)) +UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS)) +UNITOFILES=$(addsuffix $(OEXT),$(UNITOBJECTS)) +UNITAFILES=$(addsuffix $(STATICLIBEXT),$(UNITOBJECTS)) + +.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .pp + +ifdef DEFAULTUNITS +fpc_all: fpc_loaders fpc_units +else +fpc_all: fpc_loaders fpc_units fpc_exes +endif + +fpc_loaders: $(LOADEROFILES) + +fpc_units: $(UNITPPUFILES) + +fpc_exes: $(EXEFILES) + +# General compile rules, available for both possible PASEXT +%$(PPUEXT): %.pp + $(COMPILER) $< $(REDIR) + $(EXECPASS) + +%$(PPUEXT): %.pas + $(COMPILER) $< $(REDIR) + $(EXECPASS) + +%$(EXEEXT): %.pp + $(COMPILER) $< $(REDIR) + $(EXECPASS) + +%$(EXEEXT): %.pas + $(COMPILER) $< $(REDIR) + $(EXECPASS) + +%$(OEXT): %$(LOADEREXT) + $(AS) -o $*$(OEXT) $< + +##################################################################### +# Library +##################################################################### + +.PHONY: fpc_staticlib fpc_sharedlib + +# Default sharedlib units are all unit objects +ifndef SHAREDLIBUNITOBJECTS +SHAREDLIBUNITOBJECTS=$(UNITOBJECTS) +endif + +fpc_staticlib: + $(MAKE) libsclean + $(MAKE) all SMARTLINK=YES + +fpc_sharedlib: all +ifdef inlinux +ifndef LIBNAME + @$(ECHO) LIBNAME not set +else + $(PPUMOVE) $(SHAREDLIBUNITOBJECTS) -o$(LIBNAME) +endif +else + @$(ECHO) Shared Libraries not supported +endif + +##################################################################### +# Install rules +##################################################################### + +.PHONY: fpc_showinstallfiles fpc_install + +ifdef EXTRAINSTALLUNITS +override EXTRAINSTALLFILES=$(wildcard $(addsuffix $(OEXT),$(EXTRAINSTALLUNITS)) $(addsuffix $(STATICLIBEXT),$(EXTRAINSTALLUNITS)) $(addsuffix $(PPUEXT),$(EXTRAINSTALLUNITS))) +endif +ifdef UNITOBJECTS +override UNITINSTALLFILES=$(wildcard $(UNITPPUFILES) $(UNITOFILES) $(UNITAFILES)) +endif + +fpc_showinstallfiles : all +ifndef DEFAULTUNITS +ifdef EXEOBJECTS + @$(ECHO) $(addprefix "\n"$(BININSTALLDIR)/,$(EXEFILES)) +endif +endif +ifdef LOADEROBJECTS + @$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(LOADEROFILES)) +endif +ifdef UNITINSTALLFILES + @$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(UNITINSTALLFILES)) +endif +ifdef EXTRAINSTALLFILES + @$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(EXTRAINSTALLFILES)) +endif + +fpc_install: +# Create UnitInstallFiles +ifndef DEFAULTUNITS +ifdef EXEOBJECTS + $(MKDIR) $(BININSTALLDIR) +# Compress the exes if upx is defined +ifdef UPXPROG + -$(UPXPROG) $(EXEFILES) +endif + $(INSTALLEXE) $(EXEFILES) $(BININSTALLDIR) +endif +endif +ifdef LOADEROBJECTS + $(MKDIR) $(UNITINSTALLDIR) + $(INSTALL) $(LOADEROFILES) $(UNITINSTALLDIR) +endif +ifdef UNITINSTALLFILES + $(MKDIR) $(UNITINSTALLDIR) + $(INSTALL) $(UNITINSTALLFILES) $(UNITINSTALLDIR) +endif +ifdef EXTRAINSTALLFILES + $(MKDIR) $(UNITINSTALLDIR) + $(INSTALL) $(EXTRAINSTALLFILES) $(UNITINSTALLDIR) +endif + +##################################################################### +# Zip +##################################################################### + +.PHONY: fpc_zipinstall fpc_zipinstalladd + +# Temporary path to pack a file +ifndef PACKDIR +ifndef inlinux +PACKDIR=pack_tmp +else +PACKDIR=/tmp/fpc-pack +endif +endif + +# Test dir if none specified +ifndef PACKAGEDIR +PACKAGEDIR=$(BASEDIR) +endif + +# Add .zip/.tar.gz extension +ifdef ZIPNAME +ifndef inlinux +override ZIPNAME:=$(ZIPNAME)$(ZIPEXT) +endif +endif + +# Default target which is call before zipping +ifndef ZIPTARGET +ZIPTARGET=install +endif + +# Note: This will not remove the zipfile first +fpc_zipinstalladd: +ifndef ZIPNAME + @$(ECHO) Please specify ZIPNAME! + @exit +else + $(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR) +ifdef inlinux + gzip -d $(PACKAGEDIR)/$(ZIPNAME).tar.gz + cd $(PACKDIR) ; tar rv --file $(PACKAGEDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR) + gzip $(PACKAGEDIR)/$(ZIPNAME).tar +else + cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR) +endif + $(DELTREE) $(PACKDIR) +endif + +# First remove the zip and then install +fpc_zipinstall: +ifndef ZIPNAME + @$(ECHO) Please specify ZIPNAME! + @exit +else + $(DEL) $(PACKAGEDIR)/$(ZIPNAME) + $(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR) +ifdef inlinux + cd $(PACKDIR) ; tar cvz --file $(PACKAGEDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR) +else + cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR) +endif + $(DELTREE) $(PACKDIR) +endif + +##################################################################### +# Clean rules +##################################################################### + +.PHONY: fpc_clean fpc_libsclean fpc_cleanall + +ifdef UNITOBJECTS +override UNITCLEANFILES=$(wildcard $(UNITPPUFILES) $(UNITOFILES) $(UNITAFILES)) +endif +ifdef EXTRACLEANUNITS +override EXTRACLEANFILES=$(wildcard $(addsuffix $(OEXT),$(EXTRACLEANUNITS)) $(addsuffix $(STATICLIBEXT),$(EXTRACLEANUNITS)) $(addsuffix $(PPUEXT),$(EXTRACLEANUNITS))) +endif + +fpc_clean: +ifdef EXEOBJECTS + -$(DEL) $(EXEFILES) $(EXEOFILES) +endif +ifdef LOADEROBJECTS + -$(DEL) $(LOADEROFILES) +endif +ifdef UNITCLEANFILES + -$(DEL) $(UNITCLEANFILES) +endif +ifdef EXTRACLEANFILES + -$(DEL) $(EXTRACLEANFILES) +endif + -$(DEL) $(PPAS) link.res log + +fpc_libsclean: clean + -$(DEL) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT) + +fpc_cleanall: +ifdef EXEOBJECTS + -$(DEL) $(EXEFILES) +endif + -$(DEL) *$(OEXT) *$(PPUEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT) + -$(DELTREE) *$(SMARTEXT) + +##################################################################### +# Depend rules +##################################################################### + +.PHONY: fpc_depend + +fpc_depend: + $(PPDEP) $(UNITOBJECTS) + +##################################################################### +# Info rules +##################################################################### + +.PHONY: fpc_info fpc_cfginfo fpc_objectinfo fpc_toolsinfo fpc_installinfo \ + fpc_dirinfo + +fpc_info: $(FPCINFO) + +fpc_infocfg: + @$(ECHO) + @$(ECHO) == Configuration info == + @$(ECHO) + @$(ECHO) FPC....... $(FPC) + @$(ECHO) Version... $(FPC_VERSION) + @$(ECHO) CPU....... $(CPU_TARGET) + @$(ECHO) Source.... $(OS_SOURCE) + @$(ECHO) Target.... $(OS_TARGET) + @$(ECHO) + +fpc_infoobjects: + @$(ECHO) + @$(ECHO) == Object info == + @$(ECHO) + @$(ECHO) LoaderObjects..... $(LOADEROBJECTS) + @$(ECHO) UnitObjects....... $(UNITOBJECTS) + @$(ECHO) ExeObjects........ $(EXEOBJECTS) + @$(ECHO) + @$(ECHO) ExtraCleanUnits... $(EXTRACLEANUNITS) + @$(ECHO) ExtraInstallUnits. $(EXTRAINSTALLUNITS) + @$(ECHO) ExtraInstallFiles. $(EXTRAINSTALLFILES) + @$(ECHO) + @$(ECHO) == Unit info == + @$(ECHO) + @$(ECHO) UnitInstallFiles. $(UNITINSTALLFILES) + @$(ECHO) UnitCleanFiles... $(UNITCLEANFILES) + @$(ECHO) + +fpc_infoinstall: + @$(ECHO) + @$(ECHO) == Install info == + @$(ECHO) +ifdef DATE + @$(ECHO) DateStr.............. $(DATESTR) +endif + @$(ECHO) PackageSuffix........ $(PACKAGESUFFIX) + @$(ECHO) + @$(ECHO) BaseInstallDir....... $(BASEINSTALLDIR) + @$(ECHO) BinInstallDir........ $(BININSTALLDIR) + @$(ECHO) UnitInstallDir....... $(UNITINSTALLDIR) + @$(ECHO) StaticUnitInstallDir. $(STATIC_UNITINSTALLDIR) + @$(ECHO) SharedUnitInstallDir. $(SHARED_UNITINSTALLDIR) + @$(ECHO) LibInstallDir........ $(LIBINSTALLDIR) + @$(ECHO) StaticLibInstallDir.. $(STATIC_LIBINSTALLDIR) + @$(ECHO) SharedLibInstallDir.. $(SHARED_LIBINSTALLDIR) + @$(ECHO) MsgInstallDir........ $(MSGINSTALLDIR) + @$(ECHO) DocInstallDir........ $(DOCINSTALLDIR) + @$(ECHO) -# -# $Log$ -# Revision 1.1 1999-10-29 15:59:03 peter -# * inserted in fcl -# -# Revision 1.1 1999/03/16 00:50:29 peter -# + init -# -# diff --git a/fcl/shedit/Makefile.fpc b/fcl/shedit/Makefile.fpc new file mode 100644 index 0000000000..42f9304a7b --- /dev/null +++ b/fcl/shedit/Makefile.fpc @@ -0,0 +1,19 @@ +# +# $Id$ +# +# Makefile.fpc for shedit +# + +[targets] +units=doc_text shedit sh_pas sh_xml +programs_win32=gtkdemo +programs_linux=gtkdemo + +[dirs] +fpcdir=../.. +unitdir=$(FPCDIR)/gtk ../$(OS_TARGET) +targetdir=. + +[defaults] +defaultunits=1 +