#
# Makefile for binutils under openVMS (Alpha and Vax)
#
# For use with gnu-make for vms
#
# Created by Klaus K"ampf, kkaempf@rmi.de
#
#

ifeq ($(CC),gcc)
DEFS=
CFLAGS=/include=([],[-.include],[-.bfd])$(DEFS)
LIBS=,gnu_cc_library:libgcc/lib,sys$$library:vaxcrtl.olb/lib,gnu_cc_library:crt0.obj
else
DEFS=
OPT=/noopt/debug
CFLAGS=$(OPT)/include=([],"../include",[-.bfd])$(DEFS)\
 /name=(as_is,shortened)\
 /prefix=(all,except=("getopt","optarg","optopt","optind","opterr"))
endif

LIBBFD = [-.bfd]libbfd.olb/lib
LIBBFD_DEP = [-.bfd]libbfd.olb
LIBIBERTY_DEP = [-.libiberty]libiberty.olb
LIBIBERTY = [-.libiberty]libiberty.olb/lib
OPCODES_DEP = [-.opcodes]libopcodes.olb
OPCODES = [-.opcodes]libopcodes.olb/lib

DEBUG_OBJS = rddbg.obj,debug.obj,stabs.obj,ieee.obj,rdcoff.obj,dwarf.obj

BULIBS = bucomm.obj,version.obj,filemode.obj

ADDL_DEPS = $(BULIBS),$(LIBBFD_DEP),$(LIBIBERTY_DEP)
ADDL_LIBS = $(BULIBS),$(LIBBFD),$(LIBIBERTY)

SIZEOBJS = $(ADDL_DEPS),size.obj

STRINGSOBJS = $(ADDL_DEPS),strings.obj

NMOBJS = $(ADDL_DEPS),nm.obj

ADDR2LINEOBJS = $(ADDL_DEPS),addr2line.obj

OBJDUMPOBJS = objdump.obj,prdbg.obj,$(DEBUG_OBJS),$(ADDL_DEPS),$(OPCODES_DEP)

all: config.h size.exe strings.exe objdump.exe nm.exe addr2line.exe

size.exe: $(SIZEOBJS)
	link/exe=$@ size.obj,$(ADDL_LIBS)

strings.exe: $(STRINGSOBJS)
	link/exe=$@ strings.obj,$(ADDL_LIBS)

nm.exe: $(NMOBJS)
	link/exe=$@ nm.obj,$(ADDL_LIBS)

addr2line.exe: $(ADDR2LINEOBJS)
	link/exe=$@ addr2line.obj,$(ADDL_LIBS)

objdump.exe: $(OBJDUMPOBJS)
	link/exe=$@ objdump.obj,prdbg.obj,$(DEBUG_OBJS),$(ADDL_LIBS),$(LIBBFD),$(OPCODES)

config.h:
	$$ @configure
	$(MAKE) -f makefile.vms "CC=$(CC)"

clean:
	$$ purge
	$(RM) *.obj;
	$(RM) *.exe;

distclean: clean
	$(RM) config.h;
	$(RM) makefile.vms;
