aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Pall <mike>2012-03-21 22:09:01 +0100
committerMike Pall <mike>2012-03-21 22:09:01 +0100
commit339142c2aaa82fd6e3c71fdbbb12296899e8cdd2 (patch)
treedbc243edb72c8c2d464d5873d8ada6f2ec3e0411 /src
parent9589e11e443b5c86db6e3e42dae22ac69d55ad95 (diff)
downloadluajit-339142c2aaa82fd6e3c71fdbbb12296899e8cdd2.tar.gz
luajit-339142c2aaa82fd6e3c71fdbbb12296899e8cdd2.tar.bz2
luajit-339142c2aaa82fd6e3c71fdbbb12296899e8cdd2.zip
FFI: Change ffi.load() library name resolution for Cygwin.
Diffstat (limited to 'src')
-rw-r--r--src/lj_clib.c23
1 files changed, 20 insertions, 3 deletions
diff --git a/src/lj_clib.c b/src/lj_clib.c
index a716254d..370dab7c 100644
--- a/src/lj_clib.c
+++ b/src/lj_clib.c
@@ -39,21 +39,38 @@ LJ_NORET LJ_NOINLINE static void clib_error_(lua_State *L)
39 39
40#define clib_error(L, fmt, name) clib_error_(L) 40#define clib_error(L, fmt, name) clib_error_(L)
41 41
42#if defined(__CYGWIN__)
43#define CLIB_SOPREFIX "cyg"
44#else
45#define CLIB_SOPREFIX "lib"
46#endif
47
42#if LJ_TARGET_OSX 48#if LJ_TARGET_OSX
43#define CLIB_SOEXT "%s.dylib" 49#define CLIB_SOEXT "%s.dylib"
50#elif defined(__CYGWIN__)
51#define CLIB_SOEXT "%s.dll"
44#else 52#else
45#define CLIB_SOEXT "%s.so" 53#define CLIB_SOEXT "%s.so"
46#endif 54#endif
47 55
48static const char *clib_extname(lua_State *L, const char *name) 56static const char *clib_extname(lua_State *L, const char *name)
49{ 57{
50 if (!strchr(name, '/')) { 58 if (!strchr(name, '/')
59#ifdef __CYGWIN__
60 && !strchr(name, '\\')
61#endif
62 ) {
51 if (!strchr(name, '.')) { 63 if (!strchr(name, '.')) {
52 name = lj_str_pushf(L, CLIB_SOEXT, name); 64 name = lj_str_pushf(L, CLIB_SOEXT, name);
53 L->top--; 65 L->top--;
66#ifdef __CYGWIN__
67 } else {
68 return name;
69#endif
54 } 70 }
55 if (!(name[0] == 'l' && name[1] == 'i' && name[2] == 'b')) { 71 if (!(name[0] == CLIB_SOPREFIX[0] && name[1] == CLIB_SOPREFIX[1] &&
56 name = lj_str_pushf(L, "lib%s", name); 72 name[2] == CLIB_SOPREFIX[2])) {
73 name = lj_str_pushf(L, CLIB_SOPREFIX "%s", name);
57 L->top--; 74 L->top--;
58 } 75 }
59 } 76 }