# Makefile for Lua 5.1.4 using MinGW.

# Copyright (C) 2009 V. Torri.

# To compile, type:
#
#   make
#
# To install, type:
#
#   make install

#### Variables to change if needed
####
#### Example for Debian / Ubuntu:
####
#### TARGET = i586-mingw32msvc-
#### prefix = $MINGW_PREFIX

TARGET =

prefix = /usr/local

#### No need to change anything below

BIN_PATH = $(prefix)/bin
INCLUDE_PATH = $(prefix)/include
LIBRARY_PATH = $(prefix)/lib
PKGCONFIG_PATH = $(prefix)/lib/pkgconfig

STATICLIB = liblua.a
SHAREDLIB = lua51.dll
IMPLIB    = liblua.dll.a

CC = $(TARGET)gcc
CPPFLAGS = -DLUA_BUILD_AS_DLL
CFLAGS = -O2 -Wall

AR = $(TARGET)ar
ARFLAGS = rcs

INSTALL = install -p
RM = rm -f
MKDIR = mkdir -p

# lua objects for the library.

CORE_O= lapi.o lcode.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o \
	lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o ltm.o  \
	lundump.o lvm.o lzio.o
LIB_O=  lauxlib.o lbaselib.o ldblib.o liolib.o lmathlib.o loslib.o ltablib.o \
	lstrlib.o loadlib.o linit.o


all: clean $(STATICLIB) $(SHAREDLIB) $(IMPLIB)

.c.o:
	$(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $<


$(STATICLIB): $(CORE_O) $(LIB_O)
	$(AR) $(ARFLAGS) $@ $(CORE_O) $(LIB_O)

$(IMPLIB): $(SHAREDLIB)

$(SHAREDLIB): $(CORE_O) $(LIB_O)
	$(CC) -shared -o $@ \
	-Wl,-s \
	-Wl,--out-implib=$(IMPLIB) \
	-Wl,--export-all-symbols \
	-Wl,--enable-auto-import \
	$(CORE_O) $(LIB_O)

.PHONY: install uninstall clean

install: $(STATICLIB) $(IMPLIB) $(SHAREDLIB)
	-@$(MKDIR) $(INCLUDE_PATH) $(PKGCONFIG_PATH)
	-$(INSTALL) lua.h $(INCLUDE_PATH)
	-$(INSTALL) luaconf.h $(INCLUDE_PATH)
	-$(INSTALL) lualib.h $(INCLUDE_PATH)
	-$(INSTALL) lauxlib.h $(INCLUDE_PATH)
	-$(INSTALL) ../etc/lua.hpp $(INCLUDE_PATH)
	-$(INSTALL) ../etc/lua.pc $(PKGCONFIG_PATH)
	-$(INSTALL) $(STATICLIB) $(LIBRARY_PATH)
	-$(INSTALL) $(IMPLIB) $(LIBRARY_PATH)
	-$(INSTALL) $(SHAREDLIB) $(BIN_PATH)

uninstall:
	-$(RM) $(INCLUDE_PATH)/lua.h
	-$(RM) $(INCLUDE_PATH)/luaconf.h
	-$(RM) $(INCLUDE_PATH)/lualib.h
	-$(RM) $(INCLUDE_PATH)/lauxlib.h
	-$(RM) $(INCLUDE_PATH)/lua.hpp
	-$(RM) $(PKGCONFIG_PATH)/lua.pc
	-$(RM) $(LIBRARY_PATH)/$(STATICLIB)
	-$(RM) $(LIBRARY_PATH)/$(IMPLIB)
	-$(RM) $(BIN_PATH)/$(SHAREDLIB)

clean:
	-$(RM) $(STATICLIB)
	-$(RM) $(SHAREDLIB)
	-$(RM) $(IMPLIB)
	-$(RM) *.o


# DO NOT DELETE

lapi.o: lapi.c lua.h luaconf.h lapi.h lobject.h llimits.h ldebug.h \
  lstate.h ltm.h lzio.h lmem.h ldo.h lfunc.h lgc.h lstring.h ltable.h \
  lundump.h lvm.h
lauxlib.o: lauxlib.c lua.h luaconf.h lauxlib.h
lbaselib.o: lbaselib.c lua.h luaconf.h lauxlib.h lualib.h
lcode.o: lcode.c lua.h luaconf.h lcode.h llex.h lobject.h llimits.h \
  lzio.h lmem.h lopcodes.h lparser.h ldebug.h lstate.h ltm.h ldo.h lgc.h \
  ltable.h
ldblib.o: ldblib.c lua.h luaconf.h lauxlib.h lualib.h
ldebug.o: ldebug.c lua.h luaconf.h lapi.h lobject.h llimits.h lcode.h \
  llex.h lzio.h lmem.h lopcodes.h lparser.h ldebug.h lstate.h ltm.h ldo.h \
  lfunc.h lstring.h lgc.h ltable.h lvm.h
ldo.o: ldo.c lua.h luaconf.h ldebug.h lstate.h lobject.h llimits.h ltm.h \
  lzio.h lmem.h ldo.h lfunc.h lgc.h lopcodes.h lparser.h lstring.h \
  ltable.h lundump.h lvm.h
ldump.o: ldump.c lua.h luaconf.h lobject.h llimits.h lstate.h ltm.h \
  lzio.h lmem.h lundump.h
lfunc.o: lfunc.c lua.h luaconf.h lfunc.h lobject.h llimits.h lgc.h lmem.h \
  lstate.h ltm.h lzio.h
lgc.o: lgc.c lua.h luaconf.h ldebug.h lstate.h lobject.h llimits.h ltm.h \
  lzio.h lmem.h ldo.h lfunc.h lgc.h lstring.h ltable.h
linit.o: linit.c lua.h luaconf.h lualib.h lauxlib.h
liolib.o: liolib.c lua.h luaconf.h lauxlib.h lualib.h
llex.o: llex.c lua.h luaconf.h ldo.h lobject.h llimits.h lstate.h ltm.h \
  lzio.h lmem.h llex.h lparser.h lstring.h lgc.h ltable.h
lmathlib.o: lmathlib.c lua.h luaconf.h lauxlib.h lualib.h
lmem.o: lmem.c lua.h luaconf.h ldebug.h lstate.h lobject.h llimits.h \
  ltm.h lzio.h lmem.h ldo.h
loadlib.o: loadlib.c lua.h luaconf.h lauxlib.h lualib.h
lobject.o: lobject.c lua.h luaconf.h ldo.h lobject.h llimits.h lstate.h \
  ltm.h lzio.h lmem.h lstring.h lgc.h lvm.h
lopcodes.o: lopcodes.c lopcodes.h llimits.h lua.h luaconf.h
loslib.o: loslib.c lua.h luaconf.h lauxlib.h lualib.h
lparser.o: lparser.c lua.h luaconf.h lcode.h llex.h lobject.h llimits.h \
  lzio.h lmem.h lopcodes.h lparser.h ldebug.h lstate.h ltm.h ldo.h \
  lfunc.h lstring.h lgc.h ltable.h
lstate.o: lstate.c lua.h luaconf.h ldebug.h lstate.h lobject.h llimits.h \
  ltm.h lzio.h lmem.h ldo.h lfunc.h lgc.h llex.h lstring.h ltable.h
lstring.o: lstring.c lua.h luaconf.h lmem.h llimits.h lobject.h lstate.h \
  ltm.h lzio.h lstring.h lgc.h
lstrlib.o: lstrlib.c lua.h luaconf.h lauxlib.h lualib.h
ltable.o: ltable.c lua.h luaconf.h ldebug.h lstate.h lobject.h llimits.h \
  ltm.h lzio.h lmem.h ldo.h lgc.h ltable.h
ltablib.o: ltablib.c lua.h luaconf.h lauxlib.h lualib.h
ltm.o: ltm.c lua.h luaconf.h lobject.h llimits.h lstate.h ltm.h lzio.h \
  lmem.h lstring.h lgc.h ltable.h
lua.o: lua.c lua.h luaconf.h lauxlib.h lualib.h
luac.o: luac.c lua.h luaconf.h lauxlib.h ldo.h lobject.h llimits.h \
  lstate.h ltm.h lzio.h lmem.h lfunc.h lopcodes.h lstring.h lgc.h \
  lundump.h
lundump.o: lundump.c lua.h luaconf.h ldebug.h lstate.h lobject.h \
  llimits.h ltm.h lzio.h lmem.h ldo.h lfunc.h lstring.h lgc.h lundump.h
lvm.o: lvm.c lua.h luaconf.h ldebug.h lstate.h lobject.h llimits.h ltm.h \
  lzio.h lmem.h ldo.h lfunc.h lgc.h lopcodes.h lstring.h ltable.h lvm.h
lzio.o: lzio.c lua.h luaconf.h llimits.h lmem.h lstate.h lobject.h ltm.h \
  lzio.h
print.o: print.c ldebug.h lstate.h lua.h luaconf.h lobject.h llimits.h \
  ltm.h lzio.h lmem.h lopcodes.h lundump.h

# (end of Makefile)

