# -*- Makefile -*- for libiconv/src 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
includedir = $(prefix).include

# 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","ENABLE_NLS=1"

INCLUDES = /include=([],[-],[-.include],[-.srclib],[-.lib],$(includedir)])

RM = delete

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

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

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

iconv.obj : iconv.c
	$(CC) $(INCLUDES) $(CFLAGS) /define=($(DEFS)) iconv.c

iconv.exe : iconv.obj [-.lib]iconv.olb
	link /executable=iconv.exe iconv.obj,$(libdir)]intl.olb,[-.lib]iconv.olb

install : all
	create /directory $(prefix)]
	create /directory $(exec_prefix)]
	create /directory $(bindir)]
	$(INSTALL_PROGRAM) iconv.exe $(bindir)]iconv.exe

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

uninstall :
	$(RM) $(bindir)]iconv.exe

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) *.obj;*
	$(RM) *.exe;*

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'."
