#
# 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,elfxx-ia64.obj,elf64-ia64.obj,\
  vms-misc.obj,vms-lib.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","HAVE_bfd_elf64_ia64_vms_vec"=1
endif
ifeq ($(ARCH),ALPHA)
HOSTFILE=alphavms.h
OBJS:=vms-alpha.obj,vms-lib.obj,vms-misc.obj,cpu-alpha.obj
DEFS=SELECT_VECS="&vms_alpha_vec",SELECT_ARCHITECTURES="&bfd_alpha_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))\
 /warns=(infor=(missingreturn,badansialias))$(OPT)
endif

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

targmatch.h: bfd.h
config.h: bfd.h
vms-misc.c: vms.h
targets.c: targmatch.h

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