# -*- Makefile -*- for gettext-runtime/libasprintf

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

# Flags that can be set on the nmake command line:
#   DLL=1     for compiling a .dll with a stub .lib (default is a static .lib)
#             Note that this works only with MFLAGS=-MD.
#   MFLAGS={-ML|-MT|-MD} for defining the compilation model
#     MFLAGS=-ML (the default)  Single-threaded, statically linked - libc.lib
#     MFLAGS=-MT                Multi-threaded, statically linked  - libcmt.lib
#     MFLAGS=-MD                Multi-threaded, dynamically linked - msvcrt.lib
#   DEBUG=1   for compiling with debugging information
#   PREFIX=Some\Directory   Base directory for installation
# Note that nmake command line flags are automatically passed to subdirectory
# Makefiles. Therefore we don't need to pass them explicitly to subdirectory
# Makefiles, but the subdirectory Makefiles need to have the same defaults.
!if !defined(DLL)
DLL=0
!endif
!if !defined(DEBUG)
DEBUG=0
!endif
!if !defined(MFLAGS)
!if !$(DLL)
MFLAGS=
!else
MFLAGS=-MD
!endif
!endif
!if !defined(PREFIX)
PREFIX = c:\usr
!endif

# Directories used by "make install":
prefix = $(PREFIX)
exec_prefix = $(prefix)
datadir = $(prefix)\share
bindir = $(exec_prefix)\bin
libdir = $(exec_prefix)\lib
includedir = $(prefix)\include
# For this subpackage only.
sub_docdir = $(datadir)\doc\libasprintf

# Programs used by "make":

CC = cl
CXX = cl -TP

# Set to -W3 if you want to see maximum amount of warnings, including stupid
# ones. Set to -W1 to avoid warnings about signed/unsigned combinations.
WARN_CFLAGS = -W1

!if !$(DLL)
PICFLAGS =
!else
# "-GD" (msvc5) optimizes for DLL.
# mscv4 doesn't know about this flag and ignores it.
PICFLAGS = -GD
!endif

!if $(DEBUG)
OPTIMFLAGS = -Od -Z7
DEBUGFLAGS = -Z7
!else
# Some people prefer -O2 -G6 instead of -O1, but -O2 is not reliable in MSVC5.
OPTIMFLAGS = -D_NDEBUG -O1
DEBUGFLAGS =
!endif

# -DBUILDING_LIBASPRINTF: Change expansion of LIBASPRINTF_DLL_EXPORTED macro.
CFLAGS = $(MFLAGS) $(WARN_CFLAGS) $(OPTIMFLAGS) -DHAVE_CONFIG_H -DBUILDING_LIBASPRINTF
CXXFLAGS = $(MFLAGS) $(WARN_CFLAGS) $(OPTIMFLAGS) -DHAVE_CONFIG_H -DBUILDING_LIBASPRINTF -GX

INCLUDES = -I.

AR = lib
AR_FLAGS = /out:

LN = copy
RM = -del

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

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

SHELL = /bin/sh

OBJECTS = lib-asprintf.obj autosprintf.obj

RESOURCES = asprintf.res

all : autosprintf.h asprintf.lib

autosprintf.h :
!if !$(DLL)
	$(LN) autosprintf.h.in autosprintf.h
!else
	$(LN) autosprintf.h.msvc-shared autosprintf.h
!endif

config.h : config.h.msvc
	-$(RM) config.h
	$(LN) config.h.msvc config.h

alloca.h : alloca_.h
	-$(RM) alloca.h
	$(LN) alloca_.h alloca.h

lib-asprintf.obj : lib-asprintf.c config.h printf-args.h printf-args.c printf-parse.h printf-parse.c alloca.h vasnprintf.h vasnprintf.c asnprintf.c vasprintf.h vasprintf.c asprintf.c
	$(CC) $(INCLUDES) $(CFLAGS) $(PICFLAGS) -c lib-asprintf.c

autosprintf.obj : autosprintf.cc autosprintf.h config.h lib-asprintf.h
	$(CXX) $(INCLUDES) $(CXXFLAGS) $(PICFLAGS) -c autosprintf.cc

!if !$(DLL)

asprintf.lib : $(OBJECTS)
	-$(RM) asprintf.lib
	$(AR) $(AR_FLAGS)asprintf.lib $(OBJECTS)

!else

# asprintf.dll and asprintf.lib are created together.
asprintf.lib : $(OBJECTS) $(RESOURCES)
	$(CC) $(MFLAGS) $(DEBUGFLAGS) -LD $(OBJECTS) $(RESOURCES) -Feasprintf.dll

asprintf.res : windows/asprintf.rc
	rc -Fo asprintf.res windows/asprintf.rc

!endif

install : all force
	-mkdir $(prefix)
	-mkdir $(includedir)
	$(INSTALL_DATA) autosprintf.h $(includedir)\autosprintf.h
	-mkdir $(exec_prefix)
!if $(DLL)
	-mkdir $(bindir)
	$(INSTALL_DATA) asprintf.dll $(bindir)\asprintf.dll
!endif
	-mkdir $(libdir)
	$(INSTALL_DATA) asprintf.lib $(libdir)\asprintf.lib
	-mkdir $(datadir)
	-mkdir $(datadir)\doc
	-mkdir $(sub_docdir)
	$(INSTALL_DATA) autosprintf.html $(sub_docdir)\autosprintf.html

installdirs : force
	-mkdir $(prefix)
	-mkdir $(includedir)
	-mkdir $(exec_prefix)
!if $(DLL)
	-mkdir $(bindir)
!endif
	-mkdir $(libdir)
	-mkdir $(datadir)
	-mkdir $(datadir)\doc
	-mkdir $(sub_docdir)

uninstall : force
	$(RM) $(includedir)\autosprintf.h
!if $(DLL)
	$(RM) $(bindir)\asprintf.dll
!endif
	$(RM) $(libdir)\asprintf.lib
	$(RM) $(sub_docdir)\autosprintf.html

check : all

mostlyclean : clean

clean : force
	$(RM) autosprintf.h
	$(RM) config.h
	$(RM) alloca.h
	$(RM) *.obj
	$(RM) *.lib
	$(RM) *.exp
	$(RM) *.dll
	$(RM) asprintf.res
	$(RM) core

distclean : clean

maintainer-clean : distclean

force :
