# Microsoft Developer Studio Generated NMAKE File, Based on mod_jk.dsp
!IF "$(CFG)" == ""
CFG=apache - Win32 Release
!MESSAGE No configuration specified. Defaulting to apache - Win32 Release.
!ENDIF 

!IF "$(CFG)" != "apache - Win32 Release"
!MESSAGE Invalid configuration "$(CFG)" specified.
!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 "Makefile.vc" CFG="apache - Win32 Release"
!MESSAGE 
!MESSAGE Possible choices for configuration are:
!MESSAGE 
!MESSAGE "apache - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE 
!ERROR An invalid configuration is specified.
!ENDIF 

!IF "$(OS)" == "Windows_NT"
NULL=
!ELSE 
NULL=nul
!ENDIF 

CPP=cl.exe
MTL=midl.exe
RSC=rc.exe
OUTDIR=.\Release
INTDIR=.\Release
# Begin Custom Macros
OutDir=.\Release
# End Custom Macros

ALL : "$(OUTDIR)\mod_jk.so"


CLEAN :
	-@erase "$(INTDIR)\jk_ajp12_worker.obj"
	-@erase "$(INTDIR)\jk_ajp13.obj"
	-@erase "$(INTDIR)\jk_ajp13_worker.obj"
	-@erase "$(INTDIR)\jk_ajp14.obj"
	-@erase "$(INTDIR)\jk_ajp14_worker.obj"
	-@erase "$(INTDIR)\jk_ajp_common.obj"
	-@erase "$(INTDIR)\jk_connect.obj"
	-@erase "$(INTDIR)\jk_context.obj"
	-@erase "$(INTDIR)\jk_jni_worker.obj"
	-@erase "$(INTDIR)\jk_lb_worker.obj"
	-@erase "$(INTDIR)\jk_map.obj"
	-@erase "$(INTDIR)\jk_md5.obj"
	-@erase "$(INTDIR)\jk_msg_buff.obj"
	-@erase "$(INTDIR)\jk_pool.obj"
	-@erase "$(INTDIR)\jk_shm.obj"
	-@erase "$(INTDIR)\jk_sockbuf.obj"
	-@erase "$(INTDIR)\jk_status.obj"
	-@erase "$(INTDIR)\jk_uri_worker_map.obj"
	-@erase "$(INTDIR)\jk_util.obj"
	-@erase "$(INTDIR)\jk_worker.obj"
	-@erase "$(INTDIR)\mod_jk.obj"
	-@erase "$(INTDIR)\mod_jk_src.idb"
	-@erase "$(INTDIR)\mod_jk_src.pdb"
	-@erase "$(OUTDIR)\mod_jk.exp"
	-@erase "$(OUTDIR)\mod_jk.lib"
	-@erase "$(OUTDIR)\mod_jk.pdb"
	-@erase "$(OUTDIR)\mod_jk.so"

"$(OUTDIR)" :
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"

BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\mod_jk.bsc" 
BSC32_SBRS= \
	
LINK32=link.exe
LINK32_FLAGS=libhttpd.lib libapr.lib libaprutil.lib kernel32.lib user32.lib advapi32.lib wsock32.lib /nologo /base:"0x6A6B0000" /subsystem:windows /dll /incremental:no /pdb:"$(OUTDIR)\mod_jk.pdb" /debug /machine:I386 /out:"$(OUTDIR)\mod_jk.so" /implib:"$(OUTDIR)\mod_jk.lib" /libpath:"$(APACHE2_HOME)\lib" /opt:ref 
LINK32_OBJS= \
	"$(INTDIR)\jk_ajp12_worker.obj" \
	"$(INTDIR)\jk_ajp13.obj" \
	"$(INTDIR)\jk_ajp13_worker.obj" \
	"$(INTDIR)\jk_ajp14.obj" \
	"$(INTDIR)\jk_ajp14_worker.obj" \
	"$(INTDIR)\jk_ajp_common.obj" \
	"$(INTDIR)\jk_connect.obj" \
	"$(INTDIR)\jk_context.obj" \
	"$(INTDIR)\jk_jni_worker.obj" \
	"$(INTDIR)\jk_lb_worker.obj" \
	"$(INTDIR)\jk_map.obj" \
	"$(INTDIR)\jk_md5.obj" \
	"$(INTDIR)\jk_msg_buff.obj" \
	"$(INTDIR)\jk_pool.obj" \
	"$(INTDIR)\jk_shm.obj" \
	"$(INTDIR)\jk_sockbuf.obj" \
	"$(INTDIR)\jk_status.obj" \
	"$(INTDIR)\jk_uri_worker_map.obj" \
	"$(INTDIR)\jk_util.obj" \
	"$(INTDIR)\jk_worker.obj" \
	"$(INTDIR)\mod_jk.obj"

"$(OUTDIR)\mod_jk.so" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
    $(LINK32) @<<
  $(LINK32_FLAGS) $(LINK32_OBJS)
<<

CPP_PROJ=/nologo /MD /W3 /Zi /O2 /I "..\common" /I "$(JAVA_HOME)\include" /I "$(JAVA_HOME)\include\win32" /I "$(APACHE2_HOME)\include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\mod_jk_src" /FD /c 

.c{$(INTDIR)}.obj::
   $(CPP) @<<
   $(CPP_PROJ) $< 
<<

.cpp{$(INTDIR)}.obj::
   $(CPP) @<<
   $(CPP_PROJ) $< 
<<

.cxx{$(INTDIR)}.obj::
   $(CPP) @<<
   $(CPP_PROJ) $< 
<<

.c{$(INTDIR)}.sbr::
   $(CPP) @<<
   $(CPP_PROJ) $< 
<<

.cpp{$(INTDIR)}.sbr::
   $(CPP) @<<
   $(CPP_PROJ) $< 
<<

.cxx{$(INTDIR)}.sbr::
   $(CPP) @<<
   $(CPP_PROJ) $< 
<<

MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32 

!IF "$(NO_EXTERNAL_DEPS)" != "1"
!IF EXISTS("mod_jk.dep")
!INCLUDE "mod_jk.dep"
!ELSE 
!MESSAGE Warning: cannot find "mod_jk.dep"
!ENDIF 
!ENDIF 


!IF "$(CFG)" == "apache - Win32 Release"
SOURCE=..\common\jk_ajp12_worker.c

"$(INTDIR)\jk_ajp12_worker.obj" : $(SOURCE) "$(INTDIR)"
	$(CPP) $(CPP_PROJ) $(SOURCE)


SOURCE=..\common\jk_ajp13.c

"$(INTDIR)\jk_ajp13.obj" : $(SOURCE) "$(INTDIR)"
	$(CPP) $(CPP_PROJ) $(SOURCE)


SOURCE=..\common\jk_ajp13_worker.c

"$(INTDIR)\jk_ajp13_worker.obj" : $(SOURCE) "$(INTDIR)"
	$(CPP) $(CPP_PROJ) $(SOURCE)


SOURCE=..\common\jk_ajp14.c

"$(INTDIR)\jk_ajp14.obj" : $(SOURCE) "$(INTDIR)"
	$(CPP) $(CPP_PROJ) $(SOURCE)


SOURCE=..\common\jk_ajp14_worker.c

"$(INTDIR)\jk_ajp14_worker.obj" : $(SOURCE) "$(INTDIR)"
	$(CPP) $(CPP_PROJ) $(SOURCE)


SOURCE=..\common\jk_ajp_common.c

"$(INTDIR)\jk_ajp_common.obj" : $(SOURCE) "$(INTDIR)"
	$(CPP) $(CPP_PROJ) $(SOURCE)


SOURCE=..\common\jk_connect.c

"$(INTDIR)\jk_connect.obj" : $(SOURCE) "$(INTDIR)"
	$(CPP) $(CPP_PROJ) $(SOURCE)


SOURCE=..\common\jk_context.c

"$(INTDIR)\jk_context.obj" : $(SOURCE) "$(INTDIR)"
	$(CPP) $(CPP_PROJ) $(SOURCE)


SOURCE=..\common\jk_jni_worker.c

"$(INTDIR)\jk_jni_worker.obj" : $(SOURCE) "$(INTDIR)"
	$(CPP) $(CPP_PROJ) $(SOURCE)


SOURCE=..\common\jk_lb_worker.c

"$(INTDIR)\jk_lb_worker.obj" : $(SOURCE) "$(INTDIR)"
	$(CPP) $(CPP_PROJ) $(SOURCE)


SOURCE=..\common\jk_map.c

"$(INTDIR)\jk_map.obj" : $(SOURCE) "$(INTDIR)"
	$(CPP) $(CPP_PROJ) $(SOURCE)


SOURCE=..\common\jk_md5.c

"$(INTDIR)\jk_md5.obj" : $(SOURCE) "$(INTDIR)"
	$(CPP) $(CPP_PROJ) $(SOURCE)


SOURCE=..\common\jk_msg_buff.c

"$(INTDIR)\jk_msg_buff.obj" : $(SOURCE) "$(INTDIR)"
	$(CPP) $(CPP_PROJ) $(SOURCE)


SOURCE=..\common\jk_pool.c

"$(INTDIR)\jk_pool.obj" : $(SOURCE) "$(INTDIR)"
	$(CPP) $(CPP_PROJ) $(SOURCE)


SOURCE=..\common\jk_shm.c

"$(INTDIR)\jk_shm.obj" : $(SOURCE) "$(INTDIR)"
	$(CPP) $(CPP_PROJ) $(SOURCE)


SOURCE=..\common\jk_sockbuf.c

"$(INTDIR)\jk_sockbuf.obj" : $(SOURCE) "$(INTDIR)"
	$(CPP) $(CPP_PROJ) $(SOURCE)


SOURCE=..\common\jk_status.c

"$(INTDIR)\jk_status.obj" : $(SOURCE) "$(INTDIR)"
	$(CPP) $(CPP_PROJ) $(SOURCE)


SOURCE=..\common\jk_uri_worker_map.c

"$(INTDIR)\jk_uri_worker_map.obj" : $(SOURCE) "$(INTDIR)"
	$(CPP) $(CPP_PROJ) $(SOURCE)


SOURCE=..\common\jk_util.c

"$(INTDIR)\jk_util.obj" : $(SOURCE) "$(INTDIR)"
	$(CPP) $(CPP_PROJ) $(SOURCE)


SOURCE=..\common\jk_worker.c

"$(INTDIR)\jk_worker.obj" : $(SOURCE) "$(INTDIR)"
	$(CPP) $(CPP_PROJ) $(SOURCE)


SOURCE=.\mod_jk.c

"$(INTDIR)\mod_jk.obj" : $(SOURCE) "$(INTDIR)"



!ENDIF 

