# Copyright 2001-2015 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.
#
# ====================================================================
#
# NMAKEmakefile   Master LUA makefile.
# Usage:
#                 DLL=1     Build DLL version
#                 DEBUG=1   Build DEBUG version of LUA
#
# Originally contributed by Mladen Turk <mturk redhat.com>
#
# ====================================================================
#

!IF !DEFINED(LUA_DECLARE_STATIC) || "$(LUA_DECLARE_STATIC)" == ""
TARGET=DLL
CFLAGS = -DLUA_BUILD_AS_DLL -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE
PROJECT = liblua51
!ELSE
TARGET=LIB
CFLAGS = -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE
PROJECT = lua51
!ENDIF

VMAJOR = 5
VMINOR = 1
VPATCH = 4
VSTRING= "$(VMAJOR).$(VMINOR).$(VPATCH)"

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

!include <xbuild.inc>

INCLUDES = -I$(SRCDIR)\src
PDBFLAGS = -Fo$(WORKDIR)\ -Fd$(WORKDIR)\$(PROJECT)-src
OBJECTS = \
	$(WORKDIR)\lapi.obj \
	$(WORKDIR)\lcode.obj \
	$(WORKDIR)\ldebug.obj \
	$(WORKDIR)\ldo.obj \
	$(WORKDIR)\ldump.obj \
	$(WORKDIR)\lfunc.obj \
	$(WORKDIR)\lgc.obj \
	$(WORKDIR)\llex.obj \
	$(WORKDIR)\lmem.obj \
	$(WORKDIR)\lobject.obj \
	$(WORKDIR)\lopcodes.obj \
	$(WORKDIR)\lparser.obj \
	$(WORKDIR)\lstate.obj \
	$(WORKDIR)\lstring.obj \
	$(WORKDIR)\ltable.obj \
	$(WORKDIR)\ltm.obj  \
	$(WORKDIR)\lundump.obj \
	$(WORKDIR)\lvm.obj \
	$(WORKDIR)\lzio.obj \
	$(WORKDIR)\lauxlib.obj \
	$(WORKDIR)\lbaselib.obj \
	$(WORKDIR)\ldblib.obj \
	$(WORKDIR)\liolib.obj \
	$(WORKDIR)\lmathlib.obj \
	$(WORKDIR)\loslib.obj \
	$(WORKDIR)\ltablib.obj \
	$(WORKDIR)\lstrlib.obj \
	$(WORKDIR)\loadlib.obj \
	$(WORKDIR)\linit.obj

LLCOBJS = \
	$(WORKDIR)\luac.obj \
	$(WORKDIR)\print.obj

LUAOBJS = \
	$(WORKDIR)\lua.obj

BUILDINC = $(PREFIX)\include
BUILDLIB = $(PREFIX)\$(_LIB)
BUILDBIN = $(PREFIX)\bin
!IF "$(TARGET)" == "DLL"
BUILDOUT = $(WORKDIR)\$(PROJECT).dll
BUILDPDB = $(WORKDIR)\$(PROJECT).pdb
BUILDRES = $(WORKDIR)\$(PROJECT).res
BUILDMFT = $(BUILDOUT).manifest
!ELSE
BUILDOUT = $(WORKDIR)\$(PROJECT).lib
!ENDIF
BUILDLUA = $(WORKDIR)\lua.exe
BUILDLLC = $(WORKDIR)\luac.exe


all : $(WORKDIR) $(BUILDOUT) $(BUILDLUA) $(BUILDLLC)

$(WORKDIR) :
	@$(MAKEWORKDIR)

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

!IF "$(TARGET)" == "DLL"
$(BUILDOUT): $(WORKDIR) $(OBJECTS)
	$(LINK) $(LFLAGS) $(OBJECTS) $(LIBS) /pdb:$(BUILDPDB) /out:$(BUILDOUT)
	IF EXIST $(BUILDMFT) \
		mt -nologo -manifest $(BUILDMFT) -outputresource:$(BUILDOUT);2

$(BUILDLUA):  $(BUILDOUT) $(LUAOBJS)
	$(LINK) $(COMMON_LFLAGS) /SUBSYSTEM:CONSOLE /MACHINE:$(MACHINE) $(LUAOBJS) $(LIBS) $(WORKDIR)\$(PROJECT).lib /out:$(BUILDLUA)
	IF EXIST $(BUILDLUA).manifest \
		mt -nologo -manifest $(BUILDLUA).manifest -outputresource:$(BUILDLUA);1

$(BUILDLLC):  $(BUILDOUT)
	@echo "Skipped"

!ELSE
$(BUILDOUT): $(WORKDIR) $(OBJECTS)
	$(LINK) $(LFLAGS) $(OBJECTS) /out:$(BUILDOUT)

$(BUILDLUA):  $(BUILDOUT)
	@echo "Skipped"

$(BUILDLLC):  $(BUILDOUT) $(LLCOBJS)
	$(LINK) $(COMMON_LFLAGS) /SUBSYSTEM:CONSOLE /MACHINE:$(MACHINE) $(LLCOBJS) $(LIBS) $(WORKDIR)\$(PROJECT).lib /out:$(BUILDLLC)
	IF EXIST $(BUILDLLC).manifest \
		mt -nologo -manifest $(BUILDLLC).manifest -outputresource:$(BUILDLLC);1

!ENDIF

clean:
	@$(CLEANTARGET)

install: all
	@xcopy "$(SRCDIR)\src\l*.h" "$(BUILDINC)\$(NULL)" /I /Y /Q
	@xcopy "$(WORKDIR)\*.lib" "$(BUILDLIB)" /I /Y /Q
	@xcopy "$(WORKDIR)\*.dll" "$(BUILDBIN)" /I /Y /Q 2>NUL
	@xcopy "$(WORKDIR)\*.exe" "$(BUILDBIN)" /I /Y /Q 2>NUL
