# Makefile.win for Win32 APR alone
#
# Targets are:
#
#     buildall - compile everything
#     checkall - run APR regression tests
#     install  - compile everything
#     clean    - mop up everything
#
# You can override the build mechansim, choose only one;
#
#     USEMAK=1 - compile from exported make files
#     USEDSW=1 - compile from .dsw / .dsp VC6 projects
#     USESLN=1 - compile from converted .sln / .vcproj VC7+ files
#
# Define ARCH to your desired preference (your PATH must point
# to the correct compiler tools!)  Choose only one;
#
#     ARCH="Win32 Release"
#     ARCH="Win32 Debug"
#     ARCH="Win32 ReleaseNT"
#     ARCH="Win32 DebugNT"
#     ARCH="x64 Release"
#     ARCH="x64 Debug"
#
# For example;
#
#   nmake -f Makefile.win PREFIX=C:\APR buildall checkall installall clean
#

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

PREFIX=..\apr-dist

!IF [$(COMSPEC) /c cl /nologo /? \
	| $(SystemRoot)\System32\find.exe "x64" >NUL ] == 0
ARCH=x64 Release
!ELSE
ARCH=Win32 Release
!ENDIF

!MESSAGE ARCH        = $(ARCH)
!MESSAGE PREFIX      = $(PREFIX)  (install path)


# Utility and Translation things, nothing here for the user
#
!IF "$(ARCH)" == "Win32 Release"
SLNARCH=Release|Win32
ARCHOSPATH=Release
LIBSOSPATH=LibR
!ELSEIF "$(ARCH)" == "Win32 Debug"
SLNARCH=Debug|Win32
ARCHOSPATH=Debug
LIBSOSPATH=LibD
!ELSEIF "$(ARCH)" == "Win32 ReleaseNT"
SLNARCH=ReleaseNT|Win32
ARCHOSPATH=NT\Release
LIBSOSPATH=NT\LibR
!ELSEIF "$(ARCH)" == "Win32 DebugNT"
SLNARCH=DebugNT|Win32
ARCHOSPATH=NT\Debug
LIBSOSPATH=NT\LibD
!ELSEIF "$(ARCH)" == "x64 Release"
SLNARCH=Release|x64
ARCHOSPATH=x64\Release
LIBSOSPATH=x64\LibR
!ELSEIF "$(ARCH)" == "x64 Debug"
SLNARCH=Debug|x64
ARCHOSPATH=x64\Debug
LIBSOSPATH=x64\LibD
!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


all: buildall checkall

!IF $(USEMAK) == 1

clean:
	$(MAKE) $(MAKEOPT) -f Makefile.win ARCH="$(ARCH)" \
		CTARGET=CLEAN buildall

buildall:
	$(MAKE) $(MAKEOPT) -f apr.mak         CFG="apr - $(ARCH)" RECURSE=0 $(CTARGET)
	$(MAKE) $(MAKEOPT) -f libapr.mak      CFG="libapr - $(ARCH)" RECURSE=0 $(CTARGET)
	cd build
	 $(MAKE) $(MAKEOPT) -f apr_app.mak    CFG="apr_app - $(ARCH)" RECURSE=0 $(CTARGET)
	 $(MAKE) $(MAKEOPT) -f libapr_app.mak CFG="libapr_app - $(ARCH)" RECURSE=0 $(CTARGET)
	cd ..

!ELSEIF $(USESLN) == 1

clean:
	-devenv apr.sln /useenv /clean "$(SLNARCH)" /project libapr_app
	-devenv apr.sln /useenv /clean "$(SLNARCH)" /project libapr
	-devenv apr.sln /useenv /clean "$(SLNARCH)" /project apr_app
	-devenv apr.sln /useenv /clean "$(SLNARCH)" /project apr

buildall:
	devenv apr.sln /useenv /build "$(SLNARCH)" /project apr
	devenv apr.sln /useenv /build "$(SLNARCH)" /project apr_app
	devenv apr.sln /useenv /build "$(SLNARCH)" /project libapr
	devenv apr.sln /useenv /build "$(SLNARCH)" /project libapr_app

!ELSE
#	$(USEDSP) == 1

clean:
	-msdev apr.dsw /USEENV /MAKE "libapr_app - $(ARCH)" /CLEAN
	-msdev apr.dsw /USEENV /MAKE "libapr - $(ARCH)" /CLEAN
	-msdev apr.dsw /USEENV /MAKE "apr_app - $(ARCH)" /CLEAN
	-msdev apr.dsw /USEENV /MAKE "apr - $(ARCH)" /CLEAN

buildall:
	@msdev apr.dsw /USEENV /MAKE "apr - $(ARCH)"
	@msdev apr.dsw /USEENV /MAKE "apr_app - $(ARCH)"
	@msdev apr.dsw /USEENV /MAKE "libapr - $(ARCH)"
	@msdev apr.dsw /USEENV /MAKE "libapr_app - $(ARCH)"

!ENDIF


checkapr:
	cd test
	 $(MAKE) $(MAKEOPT) -f Makefile.win MODEL=static \
		OUTDIR=$(LIBSOSPATH) check
	 $(MAKE) $(MAKEOPT) -f Makefile.win MODEL=dynamic \
		OUTDIR=$(ARCHOSPATH) check
	 cd ..

checkall: checkapr


install:
	echo Y >.y
	echo A >.A
	@if NOT EXIST "$(PREFIX)\."		mkdir "$(PREFIX)"
	@if NOT EXIST "$(PREFIX)\bin\."		mkdir "$(PREFIX)\bin"
	@if NOT EXIST "$(PREFIX)\include\."	mkdir "$(PREFIX)\include"
	@if NOT EXIST "$(PREFIX)\lib\."		mkdir "$(PREFIX)\lib"
	copy CHANGES "$(PREFIX)\CHANGES.txt" <.y
	copy LICENSE "$(PREFIX)\LICENSE.txt" <.y
	copy NOTICE  "$(PREFIX)\NOTICE.txt"  <.y
	xcopy include\*.h		"$(PREFIX)\include\" /d < .a
	copy $(LIBSOSPATH)\apr-1.lib		"$(PREFIX)\lib\" <.y
	copy $(LIBSOSPATH)\apr-1.pdb		"$(PREFIX)\lib\" <.y
	copy $(ARCHOSPATH)\libapr-1.lib		"$(PREFIX)\lib\" <.y
	copy $(ARCHOSPATH)\libapr-1.exp		"$(PREFIX)\lib\" <.y
	copy $(ARCHOSPATH)\libapr-1.dll		"$(PREFIX)\bin\" <.y
	copy $(ARCHOSPATH)\libapr-1.pdb		"$(PREFIX)\bin\" <.y
	del .y
	del .a

