# -*- Makefile -*- for libiconv/lib on VMS using the MMS utility

#### Start of system configuration section. ####

# Directories used by "make install":
prefix = SYS$DATA:[
exec_prefix = $(prefix)
bindir = $(exec_prefix).bin
libdir = $(exec_prefix).lib

# Programs used by "make":

CC = cc

# These flags affect binary compatibility. GNU gettext does not need them,
# but other packages do, and we need to be binary compatible with them.
ABIFLAGS = /name=(as_is,short) /float=ieee

WARN_CFLAGS = /warning

OPTIMFLAGS = /optimize

CFLAGS = $(ABIFLAGS) $(WARN_CFLAGS) $(OPTIMFLAGS)
DEFS = "VMS=1","HAVE_CONFIG_H=1","ENABLE_RELOCATABLE=1","IN_LIBRARY=1","INSTALLDIR=""$(bindir)]""","NO_XMALLOC=1","set_relocation_prefix=libiconv_set_relocation_prefix","relocate=libiconv_relocate"

INCLUDES = /include=([],[-.include])

AR = library
AR_FLAGS = /create

LN = copy
RM = delete

# Programs used by "make install":
INSTALL = copy
INSTALL_PROGRAM = copy
INSTALL_DATA = copy

#### End of system configuration section. ####

OBJECTS = libiconv.obj,localcharset.obj,relocatable.obj

all : iconv.olb
	write sys$output "Nothing else to be done for 'all'."

config.h : config.h_vms
	$(LN) config.h_vms config.h

libiconv.obj : iconv.c,encodings.def,encodings_local.def,aliases.h,config.h
	$(CC) $(INCLUDES) $(CFLAGS) /define=($(DEFS)) /obj=libiconv.obj iconv.c

localcharset.obj : [-.libcharset.lib]localcharset.c,relocatable.h,config.h
	$(CC) $(INCLUDES) $(CFLAGS) /define=($(DEFS)) [-.libcharset.lib]localcharset.c

relocatable.obj : relocatable.c,relocatable.h,config.h
	$(CC) $(INCLUDES) $(CFLAGS) /define=($(DEFS)) relocatable.c

iconv.olb : $(OBJECTS)
	$(AR) $(AR_FLAGS) iconv.olb $(OBJECTS)

install : all
	create /directory $(prefix)]
	create /directory $(exec_prefix)]
	create /directory $(libdir)]
	$(INSTALL_DATA) iconv.olb $(libdir)]iconv.olb

installdirs :
	create /directory $(prefix)]
	create /directory $(exec_prefix)]
	create /directory $(libdir)]

uninstall :
	$(RM) $(libdir)]iconv.olb

check : all
	write sys$output "Nothing else to be done for 'check'."

mostlyclean : clean
	write sys$output "Nothing else to be done for 'mostlyclean'."

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

distclean : clean
	write sys$output "Nothing else to be done for 'distclean'."

maintainer-clean : distclean
	write sys$output "Nothing else to be done for 'maintainer-clean'."

