173 lines
5.5 KiB
Bash
173 lines
5.5 KiB
Bash
LUAVER=5.4.6
|
||
LUADIR=lua-$LUAVER
|
||
LUAPKG=lua-$LUAVER.tar.gz
|
||
LUAURL=https://www.lua.org/ftp/$LUAPKG
|
||
|
||
OUTFILE=minilua.h
|
||
|
||
if [ ! -d "$LUADIR" ]; then
|
||
rm -rf $LUAPKG
|
||
wget $LUAURL
|
||
tar xzf $LUAPKG
|
||
fi
|
||
|
||
rm -f $OUTFILE
|
||
|
||
cat <<EOF >> $OUTFILE
|
||
/*
|
||
minilua.h -- Lua in a single header
|
||
Project URL: https://github.com/edubart/minilua
|
||
|
||
This is Lua $LUAVER contained in a single header to be bundled in C/C++ applications with ease.
|
||
Lua is a powerful, efficient, lightweight, embeddable scripting language.
|
||
|
||
Do the following in *one* C file to create the implementation:
|
||
#define LUA_IMPL
|
||
|
||
By default it detects the system platform to use, however you could explicitly define one.
|
||
|
||
Note that almost no modification was made in the Lua implementation code,
|
||
thus there are some C variable names that may collide with your code,
|
||
therefore it is best to declare the Lua implementation in dedicated C file.
|
||
|
||
Optionally provide the following defines:
|
||
LUA_MAKE_LUA - implement the Lua command line REPL
|
||
|
||
LICENSE
|
||
MIT License, same as Lua, see end of file.
|
||
*/
|
||
|
||
/* detect system platform */
|
||
#if !defined(LUA_USE_WINDOWS) && !defined(LUA_USE_LINUX) && !defined(LUA_USE_MACOSX) && !defined(LUA_USE_POSIX) && !defined(LUA_USE_C89) && !defined(LUA_USE_IOS)
|
||
#if defined(_WIN32)
|
||
#define LUA_USE_WINDOWS
|
||
#elif defined(__linux__)
|
||
#define LUA_USE_LINUX
|
||
#elif defined(__APPLE__)
|
||
#define LUA_USE_MACOSX
|
||
#else /* probably a POSIX system */
|
||
#define LUA_USE_POSIX
|
||
#define LUA_USE_DLOPEN
|
||
#endif
|
||
#endif
|
||
|
||
EOF
|
||
|
||
echo "#ifdef LUA_IMPL" >> $OUTFILE
|
||
echo "#define LUA_CORE" >> $OUTFILE
|
||
cat $LUADIR/src/lprefix.h >> $OUTFILE
|
||
echo "#endif /* LUA_IMPL */" >> $OUTFILE
|
||
|
||
cat <<EOF >> $OUTFILE
|
||
#ifdef __cplusplus
|
||
extern "C" {
|
||
#endif
|
||
EOF
|
||
|
||
cat $LUADIR/src/luaconf.h >> $OUTFILE
|
||
cat $LUADIR/src/lua.h >> $OUTFILE
|
||
cat $LUADIR/src/lauxlib.h >> $OUTFILE
|
||
cat $LUADIR/src/lualib.h >> $OUTFILE
|
||
|
||
echo "#ifdef LUA_IMPL" >> $OUTFILE
|
||
# C headers
|
||
echo "typedef struct CallInfo CallInfo;" >> $OUTFILE
|
||
cat $LUADIR/src/llimits.h >> $OUTFILE
|
||
cat $LUADIR/src/lobject.h >> $OUTFILE
|
||
cat $LUADIR/src/lmem.h >> $OUTFILE
|
||
cat $LUADIR/src/ltm.h >> $OUTFILE
|
||
cat $LUADIR/src/lstate.h >> $OUTFILE
|
||
cat $LUADIR/src/lzio.h >> $OUTFILE
|
||
cat $LUADIR/src/lopcodes.h >> $OUTFILE
|
||
cat $LUADIR/src/ldebug.h >> $OUTFILE
|
||
cat $LUADIR/src/ldo.h >> $OUTFILE
|
||
cat $LUADIR/src/lgc.h >> $OUTFILE
|
||
cat $LUADIR/src/lfunc.h >> $OUTFILE
|
||
cat $LUADIR/src/lstring.h >> $OUTFILE
|
||
cat $LUADIR/src/lundump.h >> $OUTFILE
|
||
cat $LUADIR/src/lapi.h >> $OUTFILE
|
||
cat $LUADIR/src/llex.h >> $OUTFILE
|
||
cat $LUADIR/src/ltable.h >> $OUTFILE
|
||
cat $LUADIR/src/lparser.h >> $OUTFILE
|
||
cat $LUADIR/src/lcode.h >> $OUTFILE
|
||
cat $LUADIR/src/lvm.h >> $OUTFILE
|
||
cat $LUADIR/src/lctype.h >> $OUTFILE
|
||
|
||
# C sources
|
||
cat $LUADIR/src/lzio.c >> $OUTFILE
|
||
cat $LUADIR/src/lctype.c >> $OUTFILE
|
||
cat $LUADIR/src/lopcodes.c >> $OUTFILE
|
||
cat $LUADIR/src/lmem.c >> $OUTFILE
|
||
cat $LUADIR/src/lundump.c >> $OUTFILE
|
||
cat $LUADIR/src/ldump.c >> $OUTFILE
|
||
cat $LUADIR/src/lstate.c >> $OUTFILE
|
||
cat $LUADIR/src/lgc.c >> $OUTFILE
|
||
cat $LUADIR/src/llex.c >> $OUTFILE
|
||
cat $LUADIR/src/lcode.c >> $OUTFILE
|
||
cat $LUADIR/src/lparser.c >> $OUTFILE
|
||
cat $LUADIR/src/ldebug.c >> $OUTFILE
|
||
cat $LUADIR/src/lfunc.c >> $OUTFILE
|
||
cat $LUADIR/src/lobject.c >> $OUTFILE
|
||
cat $LUADIR/src/ltm.c >> $OUTFILE
|
||
cat $LUADIR/src/lstring.c >> $OUTFILE
|
||
cat $LUADIR/src/ltable.c >> $OUTFILE
|
||
cat $LUADIR/src/ldo.c >> $OUTFILE
|
||
cat $LUADIR/src/lvm.c >> $OUTFILE
|
||
sed -i "/#include \"ljumptab.h\"/r $LUADIR/src/ljumptab.h" $OUTFILE
|
||
cat $LUADIR/src/lapi.c >> $OUTFILE
|
||
cat $LUADIR/src/lauxlib.c >> $OUTFILE
|
||
cat $LUADIR/src/lbaselib.c >> $OUTFILE
|
||
cat $LUADIR/src/lcorolib.c >> $OUTFILE
|
||
cat $LUADIR/src/ldblib.c >> $OUTFILE
|
||
cat $LUADIR/src/liolib.c >> $OUTFILE
|
||
cat $LUADIR/src/lmathlib.c >> $OUTFILE
|
||
cat $LUADIR/src/loadlib.c >> $OUTFILE
|
||
cat $LUADIR/src/loslib.c >> $OUTFILE
|
||
cat $LUADIR/src/lstrlib.c >> $OUTFILE
|
||
cat $LUADIR/src/ltablib.c >> $OUTFILE
|
||
cat $LUADIR/src/lutf8lib.c >> $OUTFILE
|
||
cat $LUADIR/src/linit.c >> $OUTFILE
|
||
echo "#endif /* LUA_IMPL */" >> $OUTFILE
|
||
|
||
cat <<EOF >> $OUTFILE
|
||
#ifdef __cplusplus
|
||
}
|
||
#endif
|
||
EOF
|
||
|
||
# Implement Lua command line utility when LUA_MAKE_LUA is defined
|
||
echo "#ifdef LUA_MAKE_LUA" >> $OUTFILE
|
||
cat $LUADIR/src/lua.c >> $OUTFILE
|
||
echo "#endif /* LUA_MAKE_LUA */" >> $OUTFILE
|
||
|
||
# Comment all include headers
|
||
sed -i 's/#include "\([^"]*\)"/\/\*#include "\1"\*\//' $OUTFILE
|
||
|
||
cat <<EOF >> $OUTFILE
|
||
|
||
/*
|
||
MIT License
|
||
|
||
Copyright (c) 1994–2019 Lua.org, PUC-Rio.
|
||
Copyright (c) 2020-2023 Eduardo Bart (https://github.com/edubart).
|
||
|
||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||
of this software and associated documentation files (the "Software"), to deal
|
||
in the Software without restriction, including without limitation the rights
|
||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||
copies of the Software, and to permit persons to whom the Software is
|
||
furnished to do so, subject to the following conditions:
|
||
|
||
The above copyright notice and this permission notice shall be included in all
|
||
copies or substantial portions of the Software.
|
||
|
||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||
SOFTWARE.
|
||
*/
|
||
EOF
|