Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/share/mk Add a bsd.lua.mk for building Lua modules



details:   https://anonhg.NetBSD.org/src/rev/1a5275eced9c
branches:  trunk
changeset: 770187:1a5275eced9c
user:      plunky <plunky%NetBSD.org@localhost>
date:      Fri Oct 07 16:25:37 2011 +0000

description:
Add a bsd.lua.mk for building Lua modules

diffstat:

 share/mk/bsd.lua.mk |  166 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 166 insertions(+), 0 deletions(-)

diffs (170 lines):

diff -r 6b50eb0f3ed1 -r 1a5275eced9c share/mk/bsd.lua.mk
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/share/mk/bsd.lua.mk       Fri Oct 07 16:25:37 2011 +0000
@@ -0,0 +1,166 @@
+#      $NetBSD: bsd.lua.mk,v 1.1 2011/10/07 16:25:37 plunky Exp $
+#
+# Build rules and definitions for Lua modules
+
+#
+# Variables used
+#
+# LUA_VERSION  currently installed version of Lua
+# LUA_LIBDIR   ${LIBDIR}/lua/${LUA_VERSION}
+#
+# LUA_MODULES  list of Lua modules to build/install
+# LUA_DPLIBS   shared library dependencies as per LIBDPLIBS
+#              (liblua is automatically included)
+#
+# LUA_SRCS.mod sources for each module (by default: "${mod:S/./_/g}.lua")
+#
+# DPADD                additional dependencies for building modules
+# DPADD.mod    additional dependencies for a specific module
+#
+#
+# HAVE_LUAC    if defined, .lua source files will be compiled with ${LUAC}
+#              and installed as precompiled chunks for faster loading. Note
+#              that the luac file format is not yet standardised and may be
+#              subject to change.
+#
+# LUAC         the luac compiler (by default: /usr/bin/luac)
+#
+#
+# Notes:
+#
+# currently make(depend) and make(tags) do not support .lua sources; We
+# add Lua sources to DPSRCS when HAVE_LUAC is defined and other language
+# sources to SRCS for <bsd.dep.mk>.
+#
+# other language support for other than C is incomplete
+#
+# C language sources are passed though lint, when MKLINT != "no"
+#
+# The Lua binary searches /usr/share/lua/5.1/ at this time and we could
+# install .lua modules there which would mean slightly less duplication
+# in compat builds. However, MKSHARE=no would prevent such modules from
+# being installed so we just install everything under /usr/lib/lua/5.1/
+#
+
+.if !defined(_BSD_LUA_MK_)
+_BSD_LUA_MK_=1
+
+.include <bsd.init.mk>
+.include <bsd.shlib.mk>
+.include <bsd.gcc.mk>
+
+##
+##### Basic targets
+realinstall:   .PHONY lua-install
+realall:       .PHONY lua-all
+lint:          .PHONY lua-lint
+clean:         .PHONY lua-clean
+
+lua-install:   .PHONY
+
+lua-all:       .PHONY
+
+lua-lint:      .PHONY
+
+lua-clean:     .PHONY
+       rm -f a.out [Ee]rrs mklog core *.core ${LUA_CLEAN}
+
+##
+##### Global variables
+LUA_VERSION?=  5.1
+LUA_LIBDIR?=   ${LIBDIR}/lua/${LUA_VERSION}
+LUAC?=         /usr/bin/luac
+
+##
+##### Build rules
+
+# XX should these always be on?
+CFLAGS+=       -fPIC -DPIC
+
+.SUFFIXES:     .lua .luac
+.lua.luac:
+       ${_MKTARGET_COMPILE}
+       ${LUAC} -o ${.TARGET} ${.IMPSRC}
+
+##
+##### Libraries that modules may depend upon.
+.for _lib _dir in lua ${NETBSDSRCDIR}/external/mit/lua/lib/liblua ${LUA_DPLIBS}
+.if !defined(LIBDO.${_lib})
+LIBDO.${_lib}!=        cd "${_dir}" && ${PRINTOBJDIR}
+.MAKEOVERRIDES+=LIBDO.${_lib}
+.endif
+LDADD+=-L${LIBDO.${_lib}} -l${_lib}
+DPADD+=${LIBDO.${_lib}}/lib${_lib}.so
+.endfor
+
+##
+##### Lua Modules
+.for _M in ${LUA_MODULES}
+LUA_SRCS.${_M}?=${_M:S/./_/g}.lua
+LUA_DEST.${_M}=${LUA_LIBDIR}${_M:S/./\//g:S/^/\//:H}
+
+.if !empty(LUA_SRCS.${_M}:M*.lua)
+.if ${LUA_SRCS.${_M}:[\#]} > 1
+.error Module "${_M}" has too many source files
+.endif
+.if defined(HAVE_LUAC)
+##
+## The module has Lua source and needs to be compiled
+LUA_TARG.${_M}=${_M:S/./_/g}.luac
+LUA_NAME.${_M}=${_M:S/./\//g:T}.luac
+LUA_CLEAN+=${LUA_TARG.${_M}}
+DPSRCS+=${LUA_SRCS.${_M}}
+
+.NOPATH:               ${LUA_TARG.${_M}}
+lua-all:               ${LUA_TARG.${_M}}
+${LUA_TARG.${_M}}:     ${LUA_SRCS.${_M}} ${DPADD} ${DPADD.${_M}}
+.else
+##
+## The module has Lua source and can be installed directly
+LUA_TARG.${_M}=${LUA_SRCS.${_M}}
+LUA_NAME.${_M}=${_M:S/./\//g:T}.lua
+.endif
+.else
+##
+## The module has other language source and we must build ${_M}.so
+LUA_OBJS.${_M}=${LUA_SRCS.${_M}:N*.lua:R:S/$/.o/g}
+LUA_LOBJ.${_M}=${LUA_SRCS.${_M}:M*.c:.c=.ln}
+LUA_TARG.${_M}=${_M:S/./_/g}.so
+LUA_NAME.${_M}=${_M:S/./\//g:T}.so
+LUA_CLEAN+=${LUA_OBJS.${_M}} ${LUA_LOBJ.${_M}} ${LUA_TARG.${_M}}
+DPSRCS+=${LUA_SRCS.${_M}}
+SRCS+=${LUA_SRCS.${_M}}
+
+.NOPATH:               ${LUA_OBJS.${_M}} ${LUA_LOBJ.${_M}} ${LUA_TARG.${_M}}
+.if ${MKLINT} != "no"
+${LUA_TARG.${_M}}:     ${LUA_LOBJ.${_M}}
+.endif
+lua-lint:              ${LUA_LOBJ.${_M}}
+lua-all:               ${LUA_TARG.${_M}}
+${LUA_TARG.${_M}}:     ${LUA_OBJS.${_M}} ${DPADD} ${DPADD.${_M}}
+       ${_MKTARGET_BUILD}
+       rm -f ${.TARGET}
+       ${CC} -Wl,--warn-shared-textrel \
+           -Wl,-x -shared ${LUA_OBJS.${_M}} \
+           -Wl,-soname,${LUA_NAME.${_M}} -o ${.TARGET} \
+           ${LDADD} ${LDADD.${_M}} ${LDFLAGS} ${LDFLAGS.${_M}}
+
+.endif
+
+##
+## module install rules
+lua-install:           ${DESTDIR}${LUA_DEST.${_M}}/${LUA_NAME.${_M}}
+${DESTDIR}${LUA_DEST.${_M}}/${LUA_NAME.${_M}}! ${LUA_TARG.${_M}}
+       ${_MKTARGET_INSTALL}
+       ${INSTALL_FILE} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
+           ${.ALLSRC} ${.TARGET}
+
+.endfor
+##
+##### end of modules
+
+.include <bsd.dep.mk>
+.include <bsd.inc.mk>
+.include <bsd.obj.mk>
+.include <bsd.sys.mk>
+.endif # ! defined(_BSD_LUA_MK_)



Home | Main Index | Thread Index | Old Index