#############################################
# Apache mod_jserv Makefile for Win32 systems
# $Revision: 1.4 $
#############################################

#####################
# Don't echo commands
#####################
.SILENT:

################################
# Compiler and linker definition
################################
CC = $(CC) /nologo
LINK = link /nologo

#################################
# Check for APACHE_SRC definition
#################################
!IFNDEF APACHE_SRC
errormessage = Variable "APACHE_SRC" not defined.
all: error
!ENDIF

##############################
# Check for PACKAGE definition
##############################
# !IFNDEF PACKAGE
# errormessage = Variable "PACKAGE" not defined.
# all: error
# !ENDIF

##############################
# Check for VERSION definition
##############################
# !IFNDEF VERSION
# errormessage = Variable "VERSION" not defined.
# all: error
# !ENDIF

##########################
# Compile time definitions
##########################
JSERV_DEFINE = /D "WIN32" /D "NDEBUG" /D "_WINDOWS"
# Additional definition for STANDALONE
!IFDEF STANDALONE
JSERV_DEFINE = $(JSERV_DEFINE) /D "JSERV_STANDALONE"
!ENDIF
# Additional definition for EAPI
!IFDEF EAPI
JSERV_DEFINE = $(JSERV_DEFINE) /D "EAPI"
!ENDIF

#################################
# Include search path definitions
#################################
JSERV_C_INCL = "/I$(APACHE_SRC)\include" "/I$(APACHE_SRC)\os\win32" /I.

####################
# C Compiler options
####################
JSERV_C_OPTS = /nologo /MD /W3 /GX /O2 /YX  /FD /c /Fp"ApacheModuleJServ.pch" \
               /Fo".\\" /Fd".\\"

################
# Linker options
################
JSERV_L_OPTS = /nologo "$(APACHE_SRC)\CoreR\ApacheCore.lib" kernel32.lib user32.lib \
               gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib \
               ws2_32.lib /subsystem:console /incremental:no /machine:I386 \
               /pdb:".\ApacheModuleJServ.pdb" /NODEFAULTLIB:LIBC
               
##################################
# The target object files to build
##################################
JSERV_OBJS=mod_jserv.obj \
           jserv_protocols.obj \
           jserv_mmap.obj \
           jserv_watchdog.obj \
           jserv_balance.obj \
           jserv_utils.obj \
           jserv_image.obj \
           jserv_status.obj \
           jserv_ajpv11.obj \
           jserv_ajpv12.obj \
           jserv_wrapper.obj \
           jserv_wrapper_win.obj

############################################################
# Check if we need to build a module DLL or a StandAlone EXE
############################################################
!IFDEF STANDALONE
build: jserv.h ApacheJServ.exe
    echo Done.
!ELSE
build: jserv.h "$(APACHE_SRC)\CoreR\ApacheCore.lib" ApacheModuleJServ.dll
    echo Done.
!ENDIF

#############
# Build rules
#############
# jserv.h: autochange.exe
#     @autochange PACKAGE=$(PACKAGE) VERSION=$(VERSION) < jserv.h.in > jserv.h
    
#autochange.exe: autochange.c
#    $(CC) autochange.c

.c.obj:
    $(CC) $(JSERV_C_OPTS) $(JSERV_C_INCL) $(JSERV_DEFINE) $<

ApacheModuleJServ.dll: $(JSERV_OBJS)
    $(LINK) $(JSERV_L_OPTS) $(JSERV_OBJS) /dll /out:"ApacheModuleJServ.dll"

ApacheJServ.exe: $(JSERV_OBJS)
    $(LINK) $(JSERV_L_OPTS) $(JSERV_OBJS) /out:"ApacheModuleJServ.exe"
    ren ApacheModuleJServ.exe ApacheJServ.exe

##########
# Cleaning 
##########
clean:
    erase *.obj
    erase *.idb
    #    erase jserv.h
    #    erase autochange.exe
    erase ApacheModuleJServ.exp
    erase ApacheModuleJServ.lib
    erase ApacheModuleJServ.pch

distclean: clean
    erase ApacheJServ.exe
    erase ApacheModuleJServ.dll

#################################
# Help and error messages display
#################################
help:
    type <<
USAGE: nmake -f Makefile.Win32 APACHE_SRC=(apache source dir) [clean]
<<
#            PACKAGE=(package name) VERSION=(version number) [clean]

error:
    echo ERROR: $(errormessage)
    echo ERROR: Try "$(MAKE) /F Makefile.Win32 help" for help.
