#/* FILE: mvcpp.nt
# *
# *          Copyright (c) 2008
# *          TouchNet Information Systems, Inc.
# *          All Rights Reserved
# *
# *  This program is an unpublished copyright work of TouchNet Information
# *  Systems, Inc. of Lenexa, KS.  The program, all information disclosed
# *  and the matter shown and described hereon or herewith are confidential
# *  and proprietary to TouchNet Information Systems, Inc.
# *
# ******************************************************************************
# *
# * $LastChangedBy$
# * $Locker: $
# * $ProjectName: $
# * $ProjectRevision: $
# * $LastChangedRevision$
# * $LastChangedDate$
# * $State: $
# * $RCSfile: $
# * $Source: $
# *
# * Change Log:
# * $Log: $
# *
# */

.SUFFIXES : .c .cpp .obm

ZLIB_INCL=\3rdParty\ZLib\Current\Include

EXTRA_DEFINES=/DLIBARCHIVE_STATIC=1

!ifdef DEBUG
DEST_PATH=.\lib\mvcpp\debug
OBJ_DIR=obj\debug
COMPILE_FLAG=/MTd /DDEBUG=1 $(EXTRA_DEFINES) /Zi /Fd$(OBJ_DIR)\libarchive.pdb
!else
DEST_PATH=.\lib\mvcpp
OBJ_DIR=obj
COMPILE_FLAG=/MT $(EXTRA_DEFINES) /Fd$(OBJ_DIR)\libarchive.pdb
!endif

INCLUDE=.;$(MSDEVDIR)\INCLUDE;$(ZLIB_INCL);
INCLUDE_OPTS=

NT_CPP=cl
NT_C=cl
NT_LIBRARIAN=lib

###
NT_C_OPTS=$(COMPILE_FLAG) /GX /Zl /Zp1 /nologo /c /G5 /Oi /Ot /TC /DVC_EXTRANLEAN /DWIN32_LEAN_AND_MEAN $(INCLUDE_OPTS)
NT_CPP_OPTS=$(COMPILE_FLAG) /GX /Zl /Zp1 /nologo /c /G5 /Oi /Ot /TP /DVC_EXTRANLEAN /DWIN32_LEAN_AND_MEAN $(INCLUDE_OPTS)
NT_LIB_OPTS=

.cpp{$(OBJ_DIR)}.obm:
      -md $(OBJ_DIR) > nul 2>nul
      $(NT_CPP) $(NT_CPP_OPTS) -Fo$*.obm $<

.c{$(OBJ_DIR)}.obm:
      -md $(OBJ_DIR) > nul 2>nul
      $(NT_C) $(NT_C_OPTS) -Fo$*.obm $<


OBJS=\
  $(OBJ_DIR)\archive_check_magic.obm      $(OBJ_DIR)\archive_entry.obm \
  $(OBJ_DIR)\archive_entry_copy_stat.obm  $(OBJ_DIR)\archive_entry_link_resolver.obm \
  $(OBJ_DIR)\archive_entry_stat.obm       $(OBJ_DIR)\archive_entry_strmode.obm \
  $(OBJ_DIR)\archive_read.obm             $(OBJ_DIR)\archive_read_data_into_fd.obm \
  $(OBJ_DIR)\archive_read_extract.obm     $(OBJ_DIR)\archive_read_open_fd.obm \
  $(OBJ_DIR)\archive_read_open_file.obm   $(OBJ_DIR)\archive_read_open_filename.obm \
  $(OBJ_DIR)\archive_read_open_memory.obm $(OBJ_DIR)\archive_read_support_compression_all.obm \
  $(OBJ_DIR)\archive_read_support_compression_bzip2.obm \
  $(OBJ_DIR)\archive_read_support_compression_compress.obm \
  $(OBJ_DIR)\archive_read_support_compression_gzip.obm \
  $(OBJ_DIR)\archive_read_support_compression_none.obm \
  $(OBJ_DIR)\archive_read_support_compression_program.obm \
  $(OBJ_DIR)\archive_read_support_format_all.obm \
  $(OBJ_DIR)\archive_read_support_format_ar.obm \
  $(OBJ_DIR)\archive_read_support_format_cpio.obm \
  $(OBJ_DIR)\archive_read_support_format_empty.obm \
  $(OBJ_DIR)\archive_read_support_format_iso9660.obm \
  $(OBJ_DIR)\archive_read_support_format_mtree.obm \
  $(OBJ_DIR)\archive_read_support_format_tar.obm \
  $(OBJ_DIR)\archive_read_support_format_zip.obm \
  $(OBJ_DIR)\archive_string.obm                        $(OBJ_DIR)\archive_string_sprintf.obm \
  $(OBJ_DIR)\archive_util.obm                          $(OBJ_DIR)\archive_virtual.obm \
  $(OBJ_DIR)\archive_write.obm                         $(OBJ_DIR)\archive_write_disk.obm \
  $(OBJ_DIR)\archive_write_disk_set_standard_lookup.obm \
  $(OBJ_DIR)\archive_write_open_fd.obm                 $(OBJ_DIR)\archive_write_open_file.obm \
  $(OBJ_DIR)\archive_write_open_filename.obm           $(OBJ_DIR)\archive_write_open_memory.obm \
  $(OBJ_DIR)\archive_write_set_compression_bzip2.obm   $(OBJ_DIR)\archive_write_set_compression_compress.obm \
  $(OBJ_DIR)\archive_write_set_compression_gzip.obm    $(OBJ_DIR)\archive_write_set_compression_none.obm \
  $(OBJ_DIR)\archive_write_set_compression_program.obm $(OBJ_DIR)\archive_write_set_format.obm \
  $(OBJ_DIR)\archive_write_set_format_ar.obm           $(OBJ_DIR)\archive_write_set_format_by_name.obm \
  $(OBJ_DIR)\archive_write_set_format_cpio.obm         $(OBJ_DIR)\archive_write_set_format_cpio_newc.obm \
  $(OBJ_DIR)\archive_write_set_format_pax.obm          $(OBJ_DIR)\archive_write_set_format_shar.obm \
  $(OBJ_DIR)\archive_write_set_format_ustar.obm        $(OBJ_DIR)\filter_fork.obm \
  $(OBJ_DIR)\libarchive-nonposix.obm

all: CLEAN $(DEST_PATH)\libarchive.lib

$(DEST_PATH)\libarchive.lib :: $(OBJS) $(DEST_PATH)

$(DEST_PATH)\libarchive.lib ::
    $(NT_LIBRARIAN) $(NT_LIB_OPTS) /OUT:$(DEST_PATH)\libarchive.lib $(OBJS) 

$(DEST_PATH):
    -md $(DEST_PATH) > nul 2>nul

CLEAN:
!ifdef CLEAN
  -del $(OBJ_DIR)\*.pd? > nul 2>nul
  -ren $(OBJ_DIR)\*.pdb *.pd1 > nul 2>nul
  -ren $(OBJ_DIR)\*.pdb *.pd2 > nul 2>nul
!endif
