lua-users home
lua-l archive

configuration path in 5.1

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


Hi all.
I already asked on IRC if it would be possible to add a configure script to lua - and of course, the auto* generated files would be way bigger than the lua source code itself. But what's about a simple configure script that does no checks but takes a subset of usual options (like "--prefix", "--enable-shared", "--enable-readline") and then only adjusts Makefiles and src/luaconf.h accordingly? (see attached "configure"). Second, getting the library and script installation paths out of lua is a bit strange. Why isn't this simply stored in the package table? (see attached "package-dirs.diff")
George
#!/bin/sh
# simple lua configure script
# Juergen "George" Sawinski
# see copyright notice in COPYRIGHT
MYCFLAGS=
MYLDFLAGS=
MYLIBS=
luaconf_h_sedscript=
Makefile_sedscript=
#sedscript_add variable-name regex transform
sedscript_add() {
 local regex="2ドル" trans="3ドル"
 eval "1ドル=\"\$1ドル s%$regex%$trans%;\""
}
#variable_add variable-name seperator text
variable_add() {
 eval "1ドル=\"\$1ドル2ドル3ドル\""
}
# luaconf_h_define define-name content
luaconf_h_define() {
 sedscript_add luaconf_h_sedscript "^\\(#define[ \t]*1ドル[ \t]*\\).*" "\1円2ドル"
}
#Makefile_sed regex replace
Makefile_sed() {
 sedscript_add Makefile_sedscript "^\(1ドル[ \t]*=[ \t]*\).*" "1円2ドル"
}
usage() {
cat <<EOF
configure [options]
Simple configuration for lua (no checks are performed).
Options:
 --prefix=path Adjust installation root.
 --enable-shared Enable loading of dynamic libraries.
 --enable-readline Enable readline for command line interface.
 CFLAGS="options" Additional compiler options.
 LDFLAGS="options" Additional linker options.
EOF
}
# parse arguments
while [ "1ドル" ]; do 
 case "1ドル" in
	-h|--help)
	 usage
	 exit ;;
	CFLAGS=*)
	 cflags="`expr "1ドル" : "[^=]*=\(.*\)"`"
	 variable_add MYCFLAGS ' ' "$cflags"
	 shift ;;
	LDFLAGS=*)
	 ldflags="`expr "1ドル" : "[^=]*=\(.*\)"`"
	 variable_add MYLDFLAGS ' ' "$ldflags"
	 shift ;;
	--prefix=*)
	 prefix="`expr "1ドル" : "[^=]*=\(.*\)"`"
	 luaconf_h_define LUA_ROOT "\\\"$prefix\\\""
	 Makefile_sed INSTALL_TOP "$prefix"
	 shift ;;
	--enable-shared)
	 variable_add MYCFLAGS ' ' "-DLUA_USE_DLOPEN"
	 variable_add MYLDFLAGS ' ' "-Wl,-E"
	 variable_add MYLIBS ' ' "-ldl"
	 shift ;;
	--enable-readline)
	 variable_add MYCFLAGS ' ' "-DLUA_USE_READLINE"
	 variable_add MYLIBS ' ' "-lreadline -lhistory -lncurses"
	 shift ;;
 esac
done
Makefile_sed MYCFLAGS "$MYCFLAGS"
Makefile_sed MYLIBS "$MYLIBS"
Makefile_sed MYLDFLAGS "$MYLDFLAGS"
# execute sed scripts
if [ "$luaconf_h_sedscript" ]; then
 cp src/luaconf.h src/luaconf.h.cfg
 eval "sed '$luaconf_h_sedscript' < src/luaconf.h.cfg > src/luaconf.h"
 rm -f src/luaconf.h.cfg
fi
if [ "$Makefile_sedscript" ]; then
 cp Makefile Makefile.cfg
 eval "sed '$Makefile_sedscript' < Makefile.cfg > Makefile"
 rm -f Makefile.cfg
 cp src/Makefile src/Makefile.cfg
 eval "sed '$Makefile_sedscript' < src/Makefile.cfg > src/Makefile"
 rm -f src/Makefile.cfg
fi
Index: lua/src/loadlib.c
===================================================================
--- lua/src/loadlib.c	(revision 255)
+++ lua/src/loadlib.c	(revision 259)
@@ -495,6 +495,13 @@
 if (path == NULL) path = LUA_PATH_DEFAULT;
 lua_pushstring(L, path);
 lua_setfield(L, -2, "path");
+ /* set fields `root', `cdir', `ldir' */
+ lua_pushstring(L, LUA_ROOT);
+ lua_setfield(L, -2, "root");
+ lua_pushstring(L, LUA_CDIR);
+ lua_setfield(L, -2, "cdir");
+ lua_pushstring(L, LUA_LDIR);
+ lua_setfield(L, -2, "ldir");
 /* set field `cpath' */
 path = getenv(LUA_CPATH);
 if (path == NULL) path = LUA_CPATH_DEFAULT;

AltStyle によって変換されたページ (->オリジナル) /