# Microsoft Developer Studio Project File - Name="testutildll" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **

# TARGTYPE "Win32 (x86) External Target" 0x0106

CFG=testutildll - Win32 Release
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE 
!MESSAGE NMAKE /f "testutildll.mak".
!MESSAGE 
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE 
!MESSAGE NMAKE /f "testutildll.mak" CFG="testutildll - Win32 Release"
!MESSAGE 
!MESSAGE Possible choices for configuration are:
!MESSAGE 
!MESSAGE "testutildll - Win32 Release" (based on "Win32 (x86) External Target")
!MESSAGE "testutildll - Win32 Debug" (based on "Win32 (x86) External Target")
!MESSAGE "testutildll - Win32 Release9x" (based on "Win32 (x86) External Target")
!MESSAGE "testutildll - Win32 Debug9x" (based on "Win32 (x86) External Target")
!MESSAGE "testutildll - x64 Release" (based on "Win32 (x86) External Target")
!MESSAGE "testutildll - x64 Debug" (based on "Win32 (x86) External Target")
!MESSAGE 

# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""

!IF  "$(CFG)" == "testutildll - Win32 Release"

# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir ""
# PROP BASE Intermediate_Dir ""
# PROP BASE Cmd_Line "NMAKE /f Makefile.win INTDIR=Release OUTDIR=Release MODEL=dynamic all check"
# PROP BASE Rebuild_Opt "/a"
# PROP BASE Target_File "Release\testall.exe"
# PROP BASE Bsc_Name ""
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir ""
# PROP Intermediate_Dir ""
# PROP Cmd_Line "NMAKE /f Makefile.win INTDIR=Release OUTDIR=Release MODEL=dynamic all check"
# PROP Rebuild_Opt "/a"
# PROP Target_File "Release\testall.exe"
# PROP Bsc_Name ""
# PROP Target_Dir ""

!ELSEIF  "$(CFG)" == "testutildll - Win32 Debug"

# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir ""
# PROP BASE Intermediate_Dir ""
# PROP BASE Cmd_Line "NMAKE /f Makefile.win INTDIR=Debug OUTDIR=Debug MODEL=dynamic _DEBUG=1 all check"
# PROP BASE Rebuild_Opt "/a"
# PROP BASE Target_File "Debug\testall.exe"
# PROP BASE Bsc_Name ""
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir ""
# PROP Intermediate_Dir ""
# PROP Cmd_Line "NMAKE /f Makefile.win INTDIR=Debug OUTDIR=Debug MODEL=dynamic _DEBUG=1 all check"
# PROP Rebuild_Opt "/a"
# PROP Target_File "Debug\testall.exe"
# PROP Bsc_Name ""
# PROP Target_Dir ""

!ELSEIF  "$(CFG)" == "testutildll - Win32 Release9x"

# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir ""
# PROP BASE Intermediate_Dir ""
# PROP BASE Cmd_Line "NMAKE /f Makefile.win INTDIR=9x\Release OUTDIR=9x\Release MODEL=dynamic all check"
# PROP BASE Rebuild_Opt "/a"
# PROP BASE Target_File "9x\Release\testall.exe"
# PROP BASE Bsc_Name ""
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir ""
# PROP Intermediate_Dir ""
# PROP Cmd_Line "NMAKE /f Makefile.win INTDIR=9x\Release OUTDIR=9x\Release MODEL=dynamic all check"
# PROP Rebuild_Opt "/a"
# PROP Target_File "9x\Release\testall.exe"
# PROP Bsc_Name ""
# PROP Target_Dir ""

!ELSEIF  "$(CFG)" == "testutildll - Win32 Debug9x"

# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir ""
# PROP BASE Intermediate_Dir ""
# PROP BASE Cmd_Line "NMAKE /f Makefile.win INTDIR=9x\Debug OUTDIR=9x\Debug MODEL=dynamic _DEBUG=1 all check"
# PROP BASE Rebuild_Opt "/a"
# PROP BASE Target_File "9x\Debug\testall.exe"
# PROP BASE Bsc_Name ""
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir ""
# PROP Intermediate_Dir ""
# PROP Cmd_Line "NMAKE /f Makefile.win INTDIR=9x\Debug OUTDIR=9x\Debug MODEL=dynamic _DEBUG=1 all check"
# PROP Rebuild_Opt "/a"
# PROP Target_File "9x\Debug\testall.exe"
# PROP Bsc_Name ""
# PROP Target_Dir ""

!ELSEIF  "$(CFG)" == "testutildll - x64 Release"

# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir ""
# PROP BASE Intermediate_Dir ""
# PROP BASE Cmd_Line "NMAKE /f Makefile.win INTDIR=x64\Release OUTDIR=x64\Release MODEL=dynamic all check"
# PROP BASE Rebuild_Opt "/a"
# PROP BASE Target_File "x64\Release\testall.exe"
# PROP BASE Bsc_Name ""
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir ""
# PROP Intermediate_Dir ""
# PROP Cmd_Line "NMAKE /f Makefile.win INTDIR=x64\Release OUTDIR=x64\Release MODEL=dynamic all check"
# PROP Rebuild_Opt "/a"
# PROP Target_File "x64\Release\testall.exe"
# PROP Bsc_Name ""
# PROP Target_Dir ""

!ELSEIF  "$(CFG)" == "testutildll - x64 Debug"

# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir ""
# PROP BASE Intermediate_Dir ""
# PROP BASE Cmd_Line "NMAKE /f Makefile.win INTDIR=x64\Debug OUTDIR=x64\Debug MODEL=dynamic _DEBUG=1 all check"
# PROP BASE Rebuild_Opt "/a"
# PROP BASE Target_File "x64\Debug\testall.exe"
# PROP BASE Bsc_Name ""
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir ""
# PROP Intermediate_Dir ""
# PROP Cmd_Line "NMAKE /f Makefile.win INTDIR=x64\Debug OUTDIR=x64\Debug MODEL=dynamic _DEBUG=1 all check"
# PROP Rebuild_Opt "/a"
# PROP Target_File "x64\Debug\testall.exe"
# PROP Bsc_Name ""
# PROP Target_Dir ""

!ENDIF 

# Begin Target

# Name "testutildll - Win32 Release"
# Name "testutildll - Win32 Debug"
# Name "testutildll - Win32 Release9x"
# Name "testutildll - Win32 Debug9x"
# Name "testutildll - x64 Release"
# Name "testutildll - x64 Debug"
# Begin Group "testall Source Files"

# PROP Default_Filter ".c"
# Begin Source File

SOURCE=.\abts.c
# End Source File
# Begin Source File

SOURCE=.\abts.h
# End Source File
# Begin Source File

SOURCE=.\abts_tests.h
# End Source File
# Begin Source File

SOURCE=.\testbuckets.c
# End Source File
# Begin Source File

SOURCE=.\testdate.c
# End Source File
# Begin Source File

SOURCE=.\testdbd.c
# End Source File
# Begin Source File

SOURCE=.\testdbm.c
# End Source File
# Begin Source File

SOURCE=.\testldap.c
# End Source File
# Begin Source File

SOURCE=.\testmd4.c
# End Source File
# Begin Source File

SOURCE=.\testmd5.c
# End Source File
# Begin Source File

SOURCE=.\testmemcache.c
# End Source File
# Begin Source File

SOURCE=.\testpass.c
# End Source File
# Begin Source File

SOURCE=.\testqueue.c
# End Source File
# Begin Source File

SOURCE=.\testreslist.c
# End Source File
# Begin Source File

SOURCE=.\testrmm.c
# End Source File
# Begin Source File

SOURCE=.\teststrmatch.c
# End Source File
# Begin Source File

SOURCE=.\testuri.c
# End Source File
# Begin Source File

SOURCE=.\testutil.c
# End Source File
# Begin Source File

SOURCE=.\testuuid.c
# End Source File
# Begin Source File

SOURCE=.\testxlate.c
# End Source File
# Begin Source File

SOURCE=.\testxml.c
# End Source File
# End Group
# Begin Group "Other Source Files"

# PROP Default_Filter ".c"
# Begin Source File

SOURCE=.\dbd.c
# End Source File
# End Group
# Begin Source File

SOURCE=.\Makefile.win
# End Source File
# End Target
# End Project
