Blob Blame History Raw
#
# NMAKE Makefile for Microsoft Windows 
#
# Targets are:
#   _apacher   - build Apache in Release mode
#   _apached   - build Apache in Debug mode
#   installr   - build and install a Release build
#   installd   - build and install a Debug build
#   clean      - remove (most) generated files
#
# The following install defaults may be customized;
#
#   Option      Default
#   INSTDIR     /Apache22
#
# For example;
#
#   nmake -f Makefile-fcgid.win INSTDIR="d:/Program Files/Apache" installr
#
# Be aware that certain awk's will not accept backslashed names,
# so the server root should be given in forward slashes (quoted),
# preferably with the drive designation!

!IF "$(INSTDIR)" == ""
INSTDIR=\Apache22
!ENDIF

!IF EXIST("modules\fcgid\mod_fcgid.vcproj") \
    && ([devenv /help > NUL 2>&1] == 0) \
    && !defined(USEMAK) && !defined(USEDSW)
USESLN=1
USEMAK=0
USEDSW=0
!ELSEIF EXIST("modules\fcgid\mod_fcgid.mak") && !defined(USEDSW)
USESLN=0
USEMAK=1
USEDSW=0
!ELSE
USESLN=0
USEMAK=0
USEDSW=1
!ENDIF

!IF ("$(CTARGET)" == "") && ($(USESLN) == 1)
CTARGET=/build
!ENDIF

!IF "$(APACHE2_HOME)" == ""
APACHE2_HOME=$(INSTDIR)
!ENDIF

!IF EXIST("$(APACHE2_HOME)\lib\libapr-2.lib")
APACHE2_APRSFX=-2
!ELSEIF EXIST("$(APACHE2_HOME)\lib\libapr-1.lib")
APACHE2_APRSFX=-1
!ELSEIF EXIST("$(APACHE2_HOME)\lib\libapr.lib")
APACHE2_APRSFX=
!ELSE
!MESSAGE Point INSTDIR at the directory containing an already installed httpd
!MESSAGE including build support directories of lib and include.  It must
!MESSAGE include apr and apr-util.  mod_fcgid cannot build without these files!
!ENDIF

!IF "$(LONG)" == ""
!MESSAGE
!MESSAGE INSTDIR      = $(INSTDIR)
!MESSAGE APACHE2_HOME = $(APACHE2_HOME)
!MESSAGE
!MESSAGE To change these options use 'nmake -f Makefile-fcgid.win [option=value]'
!MESSAGE Example: nmake -f Makefile-fcgid.win
!MESSAGE
!ENDIF

!IFNDEF MAKEOPT
# Only default the behavior if MAKEOPT= is omitted
!IFDEF _NMAKE_VER
# Microsoft NMake options
MAKEOPT=-nologo
!ELSEIF "$(MAKE)" == "make"
# Borland make options?  Not really supported (yet)
MAKEOPT=-s -N
!ENDIF
!ENDIF

_buildr: 
	@$(MAKE) $(MAKEOPT) -f Makefile-fcgid.win \
		INSTDIR="$(INSTDIR)" APACHE2_HOME="$(APACHE2_HOME)" \
		SHORT=R LONG=Release _build

_buildd: 
	@$(MAKE) $(MAKEOPT) -f Makefile-fcgid.win \
		INSTDIR="$(INSTDIR)" APACHE2_HOME="$(APACHE2_HOME)" \
		SHORT=D LONG=Debug   _build

installr: 
	@$(MAKE) $(MAKEOPT) -f Makefile-fcgid.win \
		INSTDIR="$(INSTDIR)" APACHE2_HOME="$(APACHE2_HOME)" \
		SHORT=R LONG=Release _build _install

installd: 
	@$(MAKE) $(MAKEOPT) -f Makefile-fcgid.win \
		INSTDIR="$(INSTDIR)" APACHE2_HOME="$(APACHE2_HOME)" \
		SHORT=D LONG=Debug   _build _install

clean:	_cleanr _cleand
	-if exist Browse\. rd /s Browse < << > nul
y
<<

!IF $(USEMAK) == 1

_cleanr:
	$(MAKE) $(MAKEOPT) -f Makefile-fcgid.win \
		INSTDIR="$(INSTDIR)" APACHE2_HOME="$(APACHE2_HOME)" \
		SHORT=R LONG=Release CTARGET=CLEAN _build

_cleand:  
	$(MAKE) $(MAKEOPT) -f Makefile-fcgid.win \
		INSTDIR="$(INSTDIR)" APACHE2_HOME="$(APACHE2_HOME)" \
		SHORT=D LONG=Debug   CTARGET=CLEAN _build

_build:
	echo Building Win32 $(LONG) targets ($(SHORT) suffixes)
	cd modules\fcgid
	 $(MAKE) $(MAKEOPT) -f mod_fcgid.mak CFG="mod_fcgid - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	cd ..\..

!ELSEIF $(USESLN) == 1

_cleanr:  
	$(MAKE) $(MAKEOPT) -f Makefile-fcgid.win \
		INSTDIR="$(INSTDIR)" APACHE2_HOME="$(APACHE2_HOME)" \
		SHORT=R LONG=Release CTARGET="/clean" _build

_cleand:  
	$(MAKE) $(MAKEOPT) -f Makefile-fcgid.win \
		INSTDIR="$(INSTDIR)" APACHE2_HOME="$(APACHE2_HOME)" \
		SHORT=D LONG=Debug   CTARGET="/clean" _build

_build:
	echo Building Win32 $(LONG) targets ($(SHORT) suffixes)
	devenv mod_fcgid.sln /useenv $(CTARGET) $(LONG) /project mod_fcgid

!ELSE

_cleanr:  
	@$(MAKE) $(MAKEOPT) -f Makefile-fcgid.win \
		INSTDIR="$(INSTDIR)" APACHE2_HOME="$(APACHE2_HOME)" \
		SHORT=R LONG=Release CTARGET="/CLEAN" _build

_cleand:  
	@$(MAKE) $(MAKEOPT) -f Makefile-fcgid.win \
		INSTDIR="$(INSTDIR)" APACHE2_HOME="$(APACHE2_HOME)" \
		SHORT=D LONG=Debug   CTARGET="/CLEAN" _build

_build:
	@echo Building Win32 $(LONG) targets ($(SHORT) suffixes)
	@msdev mod_fcgid.dsw /USEENV /MAKE "mod_fcgid - Win32 $(LONG)" $(CTARGET)

!ENDIF

httpd_conffile=$(INSTDIR)\conf\httpd.conf
httpd_origconffile=$(INSTDIR)\conf\original\httpd.conf

_install:
	echo Y >.y
	echo A >.A
	-mkdir "$(INSTDIR)"
	-mkdir "$(INSTDIR)\conf"
	-mkdir "$(INSTDIR)\conf\original"
!IFDEF HAVE_HTTPD_FCGID_CONF
	-mkdir "$(INSTDIR)\conf\extra"
	-mkdir "$(INSTDIR)\conf\original\extra"
!ENDIF
!IFDEF HAVE_MOD_FCGID_H
	-mkdir "$(INSTDIR)\include"
!ENDIF
	-mkdir "$(INSTDIR)\manual"
	-mkdir "$(INSTDIR)\modules"
	copy CHANGES-FCGID "$(INSTDIR)\CHANGES-FCGID.txt" <.y
	copy LICENSE-FCGID "$(INSTDIR)\LICENSE-FCGID.txt" <.y
	copy NOTICE-FCGID  "$(INSTDIR)\NOTICE-FCGID.txt" <.y
	copy README-FCGID  "$(INSTDIR)\README-FCGID.txt" <.y
	copy modules\fcgid\$(LONG)\mod_fcgid.so  "$(INSTDIR)\modules" <.y
	copy modules\fcgid\$(LONG)\mod_fcgid.pdb "$(INSTDIR)\modules" <.y
	xcopy docs\manual      "$(INSTDIR)\manual" /s /d < .a
!IFDEF HAVE_MOD_FCGID_H
	copy include\mod_fcgid.h "$(INSTDIR)\include" < .y > nul
!ENDIF
	for %f in ("$(httpd_origconffile)" "$(httpd_conffile)") do \
	    if exist "%f" ( \
		awk -f build/addloadexample.awk -v MODULE=fcgid -v DSO=.so \
!IFDEF HAVE_HTTPD_FCGID_CONF
		    -v EXAMPLECONF=conf/extra/httpd-fcgid.conf \
!ENDIF
		    -v LIBPATH=modules "%f" > "%f.new" && \
		move "%f" "%f.bak" && move "%f.new" "%f" \
	    )
!IFDEF HAVE_HTTPD_FCGID_CONF
	copy docs\conf\extra\httpd-fcgid.conf "$(INSTDIR)\conf\original\extra\httpd-fcgid.conf" <.y
	awk -f << docs\conf\extra\httpd-fcgid.conf > "$(INSTDIR)\conf\original\extra\httpd-fcgid.conf"
/^\#@@LoadFcgidModules@@/ { next; }
{ sub(/@exp_runtimedir@/, "logs");
  sub(/@exp_sysconfdir@/, "conf");
  sub(/@rel_sysconfdir@/, "conf");
  sub(/@rel_logfiledir@/, "logs");
  print $0;
}
<<
	if not exist "$(INSTDIR)\conf\extra\httpd-fcgid.conf" \
	    copy "$(INSTDIR)\conf\original\extra\httpd-fcgid.conf" \
		 "$(INSTDIR)\conf\extra\httpd-fcgid.conf" <.y
!ENDIF
	del .y
	del .a