# Copyright 2001-2016 The Apache Software Foundation or its licensors, as
# applicable.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# ====================================================================
#
# NMAKEhttp2   http2 module makefile.
#
# Originally contributed by Mladen Turk <mturk redhat.com>
#
# ====================================================================
#

TARGET  = DLL
PROJECT = mod_http2

!IF !DEFINED(SRCDIR) || "$(SRCDIR)" == ""
SRCDIR = .\mod_http2
!ENDIF

!include <xbuild.inc>

BUILDINC = $(PREFIX)\include
BUILDLIB = $(PREFIX)\$(_LIB)
BUILDOUT = $(PREFIX)\$(_LIB)\httpd\modules

LDIRS  = /libpath:"$(BUILDLIB)" /libpath:"$(EXTLIBPATH)"
LIBS   = $(LIBS) user32.lib psapi.lib gdi32.lib shlwapi.lib wldap32.lib ole32.lib
LIBS   = $(LIBS) libapr-1.lib libaprutil-1.lib libhttpd.lib libnghttp2-1.lib libcrypto.lib

INCLUDES = -I$(SRCDIR) -I$(BUILDINC) -I$(EXTINCPATH) -I$(EXTINCPATH)\httpd -I$(EXTINCPATH)\apr-1
PDBFLAGS = -Fo$(WORKDIR)\ -Fd$(WORKDIR)\$(PROJECT)

BUILDBIN = $(WORKDIR)\$(PROJECT).so
BUILDPDB = $(WORKDIR)\$(PROJECT).pdb 
BUILDRES = $(WORKDIR)\$(PROJECT).res
BUILDMFT = $(BUILDBIN).manifest

RCFLAGS =  $(RCFLAGS) /d BIN_NAME="$(PROJECT).so" /d LONG_NAME="http2_module for Apache"

OBJECTS = \
	$(WORKDIR)\h2_alt_svc.obj \
	$(WORKDIR)\h2_bucket_beam.obj \
	$(WORKDIR)\h2_bucket_eos.obj \
	$(WORKDIR)\h2_config.obj \
	$(WORKDIR)\h2_conn.obj \
	$(WORKDIR)\h2_conn_io.obj \
	$(WORKDIR)\h2_ctx.obj \
	$(WORKDIR)\h2_filter.obj \
	$(WORKDIR)\h2_from_h1.obj \
	$(WORKDIR)\h2_headers.obj \
	$(WORKDIR)\h2_h2.obj \
	$(WORKDIR)\h2_mplx.obj \
	$(WORKDIR)\h2_ngn_shed.obj \
	$(WORKDIR)\h2_push.obj \
	$(WORKDIR)\h2_request.obj \
	$(WORKDIR)\h2_session.obj \
	$(WORKDIR)\h2_stream.obj \
	$(WORKDIR)\h2_switch.obj \
	$(WORKDIR)\h2_task.obj \
	$(WORKDIR)\h2_util.obj \
	$(WORKDIR)\h2_workers.obj \
	$(WORKDIR)\mod_http2.obj

all : $(WORKDIR) $(BUILDBIN)

$(WORKDIR) :
	@$(MAKEWORKDIR)

{$(SRCDIR)}.c{$(WORKDIR)}.obj:
	$(CC) $(CFLAGS) $(INCLUDES) $(PDBFLAGS) $<

$(BUILDRES): $(EXTINCPATH)\httpd\arch\win32\httpd.rc
	$(RC) $(RCFLAGS) /i "$(EXTINCPATH)\httpd"  /i "$(EXTINCPATH)\apr-1" /fo $(BUILDRES) $(EXTINCPATH)\httpd\arch\win32\httpd.rc

$(BUILDBIN): $(OBJECTS) $(BUILDRES)
	$(LINK) $(LFLAGS) $(OBJECTS) $(BUILDRES) $(LIBS) $(LDIRS) /pdb:$(BUILDPDB) /out:$(BUILDBIN)
	IF EXIST $(BUILDMFT) \
		mt -nologo -manifest $(BUILDMFT) -outputresource:$(BUILDBIN);2

install: all
	@xcopy "$(WORKDIR)\*.so" "$(BUILDOUT)" /I /Y /Q
	@xcopy "$(WORKDIR)\*.pdb" "$(BUILDOUT)" /I /Y /Q 2>NUL
	@xcopy "$(WORKDIR)\*.lib" "$(BUILDLIB)" /I /Y /Q
