#
# Makefile for the Microsoft toolchain
#
# Usage:
#	nmake /f Makefile.msc
#

.SUFFIXES: .c .obj .dllobj

CC = cl
LD = link
AR = lib
CFLAGS = /MD /O2 -I.
LDFLAGS =

STATIC_LIB = libdeflatestatic.lib
SHARED_LIB = libdeflate.dll
IMPORT_LIB = libdeflate.lib

STATIC_LIB_OBJ =			\
	  lib/adler32.obj		\
	  lib/crc32.obj			\
	  lib/deflate_compress.obj	\
	  lib/deflate_decompress.obj	\
	  lib/gzip_compress.obj		\
	  lib/gzip_decompress.obj	\
	  lib/utils.obj			\
	  lib/x86/cpu_features.obj	\
	  lib/zlib_compress.obj		\
	  lib/zlib_decompress.obj

SHARED_LIB_OBJ = $(STATIC_LIB_OBJ:.obj=.dllobj)

PROG_COMMON_OBJ = programs/prog_util.obj \
		  programs/tgetopt.obj \
		  $(STATIC_LIB)

PROG_CFLAGS = $(CFLAGS) -Iprograms

all: $(STATIC_LIB) $(SHARED_LIB) $(IMPORT_LIB) gzip.exe gunzip.exe

.c.obj:
	$(CC) -c /Fo$@ $(CFLAGS) $**

.c.dllobj:
	$(CC) -c /Fo$@ $(CFLAGS) /DLIBDEFLATE_DLL $**

$(STATIC_LIB): $(STATIC_LIB_OBJ)
	$(AR) $(ARFLAGS) -out:$@ $(STATIC_LIB_OBJ)

$(SHARED_LIB): $(SHARED_LIB_OBJ)
	$(LD) $(LDFLAGS) -out:$@ -dll -implib:$(IMPORT_LIB) $(SHARED_LIB_OBJ)

$(IMPORT_LIB): $(SHARED_LIB)

gzip.exe:programs/gzip.obj $(PROG_COMMON_OBJ)
	$(LD) $(LDFLAGS) -out:$@ $**

gunzip.exe:gzip.exe
	copy $** $@

clean:
	-del *.dll *.exe *.exp libdeflate.lib libdeflatestatic.lib gzip.lib \
		lib\*.obj lib\x86\*.obj lib\*.dllobj lib\x86\*.dllobj \
		programs\*.obj 2>nul
