diff options
Diffstat (limited to 'packages/gdbint/Makefile.fpc.fpcmake')
-rw-r--r-- | packages/gdbint/Makefile.fpc.fpcmake | 193 |
1 files changed, 193 insertions, 0 deletions
diff --git a/packages/gdbint/Makefile.fpc.fpcmake b/packages/gdbint/Makefile.fpc.fpcmake new file mode 100644 index 0000000000..f65f340a9b --- /dev/null +++ b/packages/gdbint/Makefile.fpc.fpcmake @@ -0,0 +1,193 @@ +# +# Makefile.fpc for Free Pascal GDB Interface +# + + +[package] +name=gdbint +version=2.7.1 + +[target] +units=gdbint gdbcon +examples=examples/testgdb examples/symify + +[compiler] +objectdir=$(GDBLIBDIR) +librarydir=$(GDBLIBDIR) +includedir=$(GDBLIBDIR) src +sourcedir=src tests + +[require] +libc=y + +[install] +fpcpackage=y + +[default] +fpcdir=../.. + + +[prerules] +# For unix be sure to use the locally created gdbver +ifdef inUnix +CURRDIR=./ +else +CURRDIR= +endif + +# Look for a valid GDBLIBDIR environment variable +ifdef GDBLIBDIR +override LIBGDBFILE:=$(firstword $(wildcard $(addsuffix /libgdb.a,$(GDBLIBDIR)))) +endif + +# Use default dirs if not available +ifeq ($(LIBGDBFILE),) +# Default locations <target>/<cpu> (linux) or <target> (win32,go32v2) only +override GDBLIBDIR=$(wildcard $(FPCDIR)/libgdb/$(OS_TARGET)/$(CPU_TARGET)) +ifeq ($(GDBLIBDIR),) +override GDBLIBDIR=$(FPCDIR)/libgdb/$(OS_TARGET) +endif +# Detect if libgdb.a is available +override LIBGDBFILE:=$(firstword $(wildcard $(addsuffix /libgdb.a,$(GDBLIBDIR)))) +endif + +# Set GDBFOUND variable +ifeq ($(LIBGDBFILE),) +GDBFOUND=0 +else +GDBFOUND=1 +# Detect if gdblib.inc is available +override LIBGDBINC:=$(firstword $(wildcard $(addsuffix /gdblib.inc,$(GDBLIBDIR)))) +ifeq ($(LIBGDBINC),) +GDBLIBINCFOUND=0 +GDBLIBINCCOND= +else +GDBLIBINCFOUND=1 +GDBLIBINCCOND=-dUSE_GDBLIBINC +endif +ifdef NO_GDBLIBINC +GDBLIBINCFOUND=0 +GDBLIBINCCOND= +endif +endif + + +[rules] +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +CAN_RUN_GDBVER=1 +endif + +ifeq ($(FULL_SOURCE),i386-win32) +ifeq ($(FULL_TARGET),i386-go32v2) +CAN_RUN_GDBVER=1 +endif +endif + + +ifdef CAN_RUN_GDBVER +ifeq ($(GDBFOUND),1) +# libgdb.a found + +$(CURRDIR)getver$(EXEEXT) : gdbver.pp + $(COMPILER) -o$(CURRDIR)getver$(EXEEXT) gdbver.pp + +ifndef GOTGDBVER +# gdbver doesn't exists, build it first +gdbint$(PPUEXT): $(CURRDIR)gdbver$(EXEEXT) gdbint.pp + $(MAKE) gdbint$(PPUEXT) GOTGDBVER=1 +else +# gdbver exists +GDBVER:=GDB_V$(strip $(shell $(CURRDIR)gdbver$(EXEEXT) -n)) +gdbver.inc: gdbver$(EXEEXT) + ./gdbver$(EXEEXT) -o gdbver.inc +gdbint$(PPUEXT): gdbint.pp gdbver.inc +# MingW? +ifeq ($(wildcard $(GDBLIBDIR)/libmingw32.a),) + @$(ECHO) Using GDB $(GDBVER) + $(COMPILER) -d$(GDBVER) $(GDBLIBINCCOND) -Fisrc -Fusrc src/gdbint.pp +else + @$(ECHO) Using GDB $(GDBVER) \(MingW\) + $(COMPILER) -d$(GDBVER) $(GDBLIBINCCOND) -dUSE_MINGW_GDB -Fisrc -Fusrc src/gdbint.pp +endif + $(DEL) gdbver$(EXEEXT) gdbver$(OEXT) +endif + +else +# libgdb.a not found, default to libgdb v6 +GDBVER=GDB_V606 +gdbver.inc: + $(CPPROG) src/gdbver_nogdb.inc src/gdbver.inc +gdbint$(PPUEXT): gdbint.pp gdbver.inc + @$(ECHO) libgdb.a not found, using default GDB $(GDBVER) + $(COMPILER) -d$(GDBVER) $(GDBLIBINCCOND) -Fisrc -Fusrc src/gdbint.pp + $(DEL) src/gdbver.inc +endif + +else +# Different OS_TARGET, default to libgdb v6 +GDBVER=GDB_V606 +gdbver.inc: + $(CPPROG) src/gdbver_nogdb.inc src/gdbver.inc +gdbint$(PPUEXT): gdbint.pp gdbver.inc + @$(ECHO) Different target os or cpu, using default GDB $(GDBVER) + $(COMPILER) -d$(GDBVER) $(GDBLIBINCCOND) -Fisrc -Fusrc src/gdbint.pp +endif + +gdbcon$(PPUEXT): gdbcon.pp gdbint$(PPUEXT) +ifeq ($(wildcard $(GDBLIBDIR)/libmingw32.a),) + $(COMPILER) src/gdbcon.pp +else + $(COMPILER) -dUSE_MINGW_GDB src/gdbcon.pp +endif + $(EXECPPAS) + +ifeq ($(OS_TARGET),go32v2) +DBGCOM=dbgcom$(OEXT) +else +DBGCOM= +endif + +ifdef $(COMPILEDBGCOM) +# FPC conditionnal remove the file watching mecanism introduced +# in v2.02 of dbgcom.c because it relies +# on the fact that all files are opened via C lib calls +# which is wrong for FPC !! +$(DBGCOM): ../v4.16/dbgcom.c + gcc -c -DFPC -Dother_sel -gstabs -o dbgcom.o -I../v4.16 ../v4.16/dbgcom.c +else +$(DBGCOM): +endif + +simple: $(DBGCOM) + -rm gdbint.ppu + ppc386 -dUSE_LIBGDB -fisrc -fusrc gdbint + ppc386 testgdb + +examples/testgdb$(EXEEXT): examples/testgdb.pp gdbint$(PPUEXT) gdbcon$(PPUEXT) $(DBGCOM) +ifeq ($(wildcard $(GDBLIBDIR)/libmingw32.a),) + $(COMPILER) -FEexamples examples/testgdb.pp +else + $(COMPILER) -FEexamples -dUSE_MINGW_GDB examples/testgdb.pp +endif + $(EXECPPAS) + +examples/symify$(EXEEXT): examples/symify.pp gdbint$(PPUEXT) gdbcon$(PPUEXT) $(DBGCOM) +ifeq ($(wildcard $(GDBLIBDIR)/libmingw32.a),) + $(COMPILER) -FEexamples examples/symify.pp +else + $(COMPILER) -FEexamples -dUSE_MINGW_GDB examples/symify.pp +endif + $(EXECPPAS) + +# Allow test for example +.PHONY: test + +test: examples + +clean: fpc_clean + $(DEL) src/gdbver$(EXEEXT) src/gdbver$(OEXT) + +distclean: fpc_distclean + $(DEL) src/gdbver.inc + +.NOTPARALLEL: |