--- Makefile.orig 2014-12-15 17:04:14.000000000 +0000 +++ Makefile 2014-12-15 17:04:58.000000000 +0000 @@ -36,7 +36,7 @@ # == END OF USER SETTINGS -- NO NEED TO CHANGE ANYTHING BELOW THIS LINE ======= # Convenience platforms targets. -PLATS= aix ansi bsd freebsd generic linux macosx mingw posix solaris +PLATS= aix ansi bsd freebsd generic hpux linux macosx mingw posix solaris # What to install. TO_BIN= lua luac --- src/Makefile.orig 2014-12-15 17:05:18.000000000 +0000 +++ src/Makefile 2014-12-15 17:08:23.000000000 +0000 @@ -26,7 +26,7 @@ # == END OF USER SETTINGS -- NO NEED TO CHANGE ANYTHING BELOW THIS LINE ======= -PLATS= aix ansi bsd freebsd generic linux macosx mingw posix solaris +PLATS= aix ansi bsd freebsd generic hpux linux macosx mingw posix solaris LUA_A= liblua.a CORE_O= lapi.o lcode.o lctype.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o \ @@ -102,6 +102,9 @@ generic: $(ALL) +hpux: + $(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_POSIX -DLUA_USE_SHL_LOAD -D_POSIX_C_SOURCE=199506L" SYSLIBS="-dld -lpthread" + linux: $(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_LINUX" SYSLIBS="-Wl,-E -ldl -lreadline" --- src/loadlib.c.orig 2014-12-15 17:10:46.000000000 +0000 +++ src/loadlib.c 2014-12-15 17:12:57.000000000 +0000 @@ -211,6 +211,42 @@ /* }====================================================== */ +#elif defined (LUA_DL_SHL_LOAD) + +/* +** {====================================================================== +** This is an implementation of loadlib for HPUX using native functions. +** ======================================================================= +*/ + +#include +#include + +#define BIND_FLAGS (BIND_IMMEDIATE | BIND_NONFATAL | DYNAMIC_PATH) + +static void ll_unloadlib (void *lib) { + shl_unload(lib); +} + + +static void *ll_load (lua_State *L, const char *path) { + void *lib = shl_load(path, BIND_FLAGS, 0L); + if (lib == NULL) lua_pushstring(L, strerror(errno)); + return lib; +} + + +static lua_CFunction ll_sym (lua_State *L, void *lib, const char *sym) +{ + lua_CFunction f; + if (shl_findsym((shl_t*)&lib,sym,TYPE_UNDEFINED,&f)) { + lua_pushstring(L, strerror(errno)); + return NULL; + } + return f; +} + +/* }====================================================== */ #else /*