#
# Makefile for libiberty under openVMS/Alpha
#
# For use with gnu-make for vms
#
# Created by Klaus K"ampf, kkaempf@progis.de
#
#

OBJS=getopt.obj,obstack.obj,xexit.obj,xmalloc.obj,hex.obj,\
    getopt1.obj,cplus-dem.obj,cp-demangle.obj,cp-demint.obj,\
    asprintf.obj vasprintf.obj,mkstemps.obj,\
    concat.obj,getruntime.obj,getpagesize.obj,getpwd.obj,xstrerror.obj,\
    xmemdup.obj,xstrdup.obj,xatexit.obj,choose-temp.obj,fnmatch.obj,\
    objalloc.obj,safe-ctype.obj,hashtab.obj,lbasename.obj,argv.obj,\
    lrealpath.obj,make-temp-file.obj,unlink-if-ordinary.obj

ifeq ($(CC),gcc)
CFLAGS=/include=([],[-.include])
else
# assume dec c
OPT=/noopt/debug/warnings=disable=(missingreturn)
CFLAGS=$(OPT)/include=([],[-.include])/name=(as_is,shortened)\
 /define=(HAVE_CONFIG_H=1)\
 /prefix=(all,except=("getopt","optarg","optopt","optind","opterr"))
endif

libiberty.olb: config.h $(OBJS)
	purge
	lib/create libiberty *.obj

config.h: config.h-vms
	$(CP) $< $@

clean:
	$$ purge
	$(RM) config.h;
	$(RM) *.obj;
	$(RM) libiberty.olb;
