#
# Makefile for bfd library under openVMS 
#
# For use with gnu-make for vms
#
# Created by Klaus K"ampf, kkaempf@rmi.de
#
#

ifeq ($(ARCH),IA64)
HOSTFILE=alphavms.h
OBJS:=cpu-ia64.obj,elf64-ia64.obj,elf-strtab.obj,corefile.obj,stabs.obj,\
  merge.obj,elf-eh-frame.obj,elflink.obj,elf-attrs.obj,dwarf1.obj,elf64.obj
DEFS=SELECT_VECS="&bfd_elf64_ia64_vms_vec",SELECT_ARCHITECTURES="&bfd_ia64_arch"
endif
ifeq ($(ARCH),ALPHA)
HOSTFILE=alphavms.h
OBJS:=vms.obj,vms-hdr.obj,vms-gsd.obj,vms-tir.obj,vms-misc.obj,cpu-alpha.obj
DEFS=SELECT_VECS="&vms_alpha_vec",SELECT_ARCHITECTURES="&bfd_alpha_arch"
endif
ifeq ($(ARCH),VAX)
HOSTFILE=vaxvms.h
OBJS:=vms.obj,vms-hdr.obj,vms-gsd.obj,vms-tir.obj,vms-misc.obj,cpu-vax.obj
DEFS=SELECT_VECS="&vms_vax_vec",SELECT_ARCHITECTURES="&bfd_vax_arch"
endif

OBJS:=$(OBJS),archive.obj,archive64.obj,archures.obj,bfd.obj,bfdio.obj,\
  binary.obj,cache.obj,coffgen.obj,compress.obj,corefile.obj,dwarf2.obj,\
  elf.obj,format.obj,hash.obj,ihex.obj,init.obj,libbfd.obj,linker.obj,\
  opncls.obj,reloc.obj,section.obj,simple.obj,srec.obj,stab-syms.obj,\
  syms.obj,targets.obj,tekhex.obj,verilog.obj

ifeq ($(CC),gcc)
CFLAGS=/include=([],[-.include])$(DEFS)
else
OPT=/noopt/debug
CFLAGS=/name=(as_is,shortened)/include=([],"../include")\
 /define=("unlink=remove",DEBUGDIR="""GNU$$DEBUGDIR:""",$(DEFS))$(OPT)
endif

libbfd.olb: $(OBJS)
	purge
	lib/create libbfd $(OBJS)

targmatch.h: bfd.h
config.h: bfd.h
vms.c: vms.h
vms-mhd.c: vms.h
vms-gsd.c: vms.h
vms-tir.c: vms.h
vms-misc.c: vms.h
targets.c: targmatch.h

clean:
	$$ purge
	$(RM) libbfd.olb;
	$(RM) *.obj;
