+diff --git a/Makefile b/Makefile
+index 10c1142..2a94df4 100644
--- a/Makefile
+++ b/Makefile
-@@ -1,58 +1,36 @@
- T=openssl\r
-+.PHONY: install clean\r
- \r
--PREFIX ?=/usr/local\r
--LIB_OPTION ?= -shared \r
-+PKGC ?= pkg-config\r
- \r
--#Lua auto detect\r
--LUA_VERSION ?= $(shell pkg-config luajit --print-provides)\r
--ifeq ($(LUA_VERSION),) ############ Not use luajit\r
--LUAV ?= $(shell lua -e "_,_,v=string.find(_VERSION,'Lua (.+)');print(v)")\r
--LUA_CFLAGS ?= -I$(PREFIX)/include/lua$(LUAV)\r
--LUA_LIBS ?= -L$(PREFIX)/lib \r
--LUA_LIBDIR ?= $(PREFIX)/lib/lua/$(LUAV)\r
--else\r
--LUAV ?= $(shell lua -e "_,_,v=string.find(_VERSION,'Lua (.+)');print(v)")\r
--LUA_CFLAGS ?= $(shell pkg-config luajit --cflags)\r
--LUA_LIBS ?= $(shell pkg-config luajit --libs)\r
--LUA_LIBDIR ?= $(PREFIX)/lib/lua/$(LUAV)\r
--endif\r
-+LIB_OPTION = -shared \r
- \r
--#OS auto detect\r
--SYS := $(shell gcc -dumpmachine)\r
-+# lua's package config can be under various names\r
-+LUAPKGC := $(shell for pc in lua lua5.1 lua5.2 lua5.3; do \\r
-+ $(PKGC) --exists $$pc && echo $$pc && break; \\r
-+ done)\r
- \r
--ifneq (, $(findstring linux, $(SYS)))\r
--# Do linux things\r
--LDFLAGS = -fPIC -lrt -ldl\r
--OPENSSL_LIBS ?= $(shell pkg-config openssl --libs) \r
--OPENSSL_CFLAGS ?= $(shell pkg-config openssl --cflags)\r
--CFLAGS = -fPIC $(OPENSSL_CFLAGS) $(LUA_CFLAGS) \r
--endif\r
--ifneq (, $(findstring apple, $(SYS)))\r
--# Do darwin things\r
--LDFLAGS = -fPIC -lrt -ldl\r
-+BUILD_DIR = $(shell pwd)\r
-+\r
-+# LUA include/libraries build flags\r
-+#LUAV ?= $(shell lua -e "_,_,v=string.find(_VERSION,'Lua (.+)');print(v)")\r
-+LUA_LIBDIR := $(shell $(PKGC) --variable=libdir $(LUAPKGC))\r
-+LUA_CFLAGS := $(shell $(PKGC) --cflags $(LUAPKGC))\r
-+LUA_LIBS := $(shell $(PKGC) --libs-only-L $(LUAPKGC))\r
-+#LUA_LIBDIR ?= $(PREFIX)/lib/lua/$(LUAV)\r
-+\r
-+# openssl include/libraries build flags\r
-+LDFLAGS += -lrt -ldl $(OPENSSL_LIBS) $(LUA_LIBS)\r
- OPENSSL_LIBS ?= $(shell pkg-config openssl --libs) \r
- OPENSSL_CFLAGS ?= $(shell pkg-config openssl --cflags)\r
--CFLAGS = -fPIC $(OPENSSL_CFLAGS) $(LUA_CFLAGS)\r
--endif\r
--ifneq (, $(findstring mingw, $(SYS)))\r
--# Do mingw things\r
--V = $(shell lua -e "v=string.gsub('$(LUAV)','%.','');print(v)")\r
--LDFLAGS = -mwindows -lcrypt32 -lssl -lcrypto -lws2_32 $(PREFIX)/bin/lua$(V).dll \r
--LUA_CFLAGS = -DLUA_LIB -DLUA_BUILD_AS_DLL -I$(PREFIX)/include/\r
--CFLAGS = $(OPENSSL_CFLAGS) $(LUA_CFLAGS)\r
--endif\r
--ifneq (, $(findstring cygwin, $(SYS)))\r
--# Do cygwin things\r
--OPENSSL_LIBS ?= $(shell pkg-config openssl --libs) \r
--OPENSSL_CFLAGS ?= $(shell pkg-config openssl --cflags)\r
--CFLAGS = -fPIC $(OPENSSL_CFLAGS) $(LUA_CFLAGS)\r
--endif\r
--#custome config\r
-+# openssl include/libraries build flags\r
-+LOCAL_INCLUDE = -I$(BUILD_DIR)/deps\r
-+CFLAGS += -fPIC -DPTHREADS $(LOCAL_INCLUDE) $(OPENSSL_CFLAGS) $(LUA_CFLAGS) \r
- ifeq (.config, $(wildcard .config))\r
- include .config\r
- endif\r
- \r
--LIBNAME= $T.so.$V\r
-+LIBNAME= $T.so\r
- \r
- #LIB_OPTION= -bundle -undefined dynamic_lookup #for MacOS X\r
- \r
-@@ -68,11 +46,12 @@ OBJS=src/asn1.o src/auxiliar.o src/bio.o
- src/ec.o src/engine.o src/hmac.o src/lbn.o src/lhash.o src/misc.o src/ocsp.o src/openssl.o src/ots.o src/pkcs12.o src/pkcs7.o \\r
- src/pkey.o src/rsa.o src/ssl.o src/th-lock.o src/util.o src/x509.o src/xattrs.o src/xexts.o src/xname.o src/xstore.o src/xalgor.o src/callback.o \r
- \r
--.c.o:\r
-- $(CC) -c -o $@ $?\r
-+%.o: %.c\r
-+ $(CC) $(CFLAGS) -c $< -o $@\r
- \r
- all: $T.so\r
- echo $(SYS)\r
-+ $(CC) $(LDFLAGS) $(LIB_OPTION) $(OBJS) -o $@\r
- \r
- $T.so: $(OBJS)\r
- MACOSX_DEPLOYMENT_TARGET="10.3"; export MACOSX_DEPLOYMENT_TARGET; $(CC) $(CFLAGS) $(LIB_OPTION) -o $T.so $(OBJS) $(OPENSSL_LIBS) $(LUA_LIBS) $(LDFLAGS)\r
+@@ -1,121 +1,52 @@
+ T=openssl
++.PHONY: install clean
+
+-PREFIX ?=/usr/local
+-CC := $(CROSS)$(CC)
+-AR := $(CROSS)$(AR)
+-LD := $(CROSS)$(LD)
++PKGC ?= pkg-config
+
+-#OS auto detect
+-ifneq (,$(TARGET_SYS))
+- SYS := $(TARGET_SYS)
+-else
+- SYS := $(shell gcc -dumpmachine)
+-endif
+-
+-#Lua auto detect
+-LUA_VERSION := $(shell pkg-config luajit --print-provides)
+-ifeq ($(LUA_VERSION),)
+- # Not found luajit package, try lua
+- LUA_VERSION := $(shell pkg-config lua --print-provides)
+- ifeq ($(LUA_VERSION),)
+- # Not found lua package, try from prefix
+- LUA_VERSION := $(shell lua -e "_,_,v=string.find(_VERSION,'Lua (.+)');print(v)")
+- LUA_CFLAGS ?= -I$(PREFIX)/include/lua$(LUA_VERSION)
+- LUA_LIBS ?= -L$(PREFIX)/lib -llua
+- LUA_LIBDIR ?= $(PREFIX)/lib/lua/$(LUA_VERSION)
+- else
+- # Found lua package
+- LUA_VERSION := $(shell lua -e "_,_,v=string.find(_VERSION,'Lua (.+)');print(v)")
+- LUA_CFLAGS ?= $(shell pkg-config lua --cflags)
+- LUA_LIBS ?= $(shell pkg-config lua --libs)
+- LUA_LIBDIR ?= $(PREFIX)/lib/lua/$(LUA_VERSION)
+- endif
+-else
+- # Found luajit package
+- LUA_VERSION := $(shell luajit -e "_,_,v=string.find(_VERSION,'Lua (.+)');print(v)")
+- LUA_CFLAGS ?= $(shell pkg-config luajit --cflags)
+- LUA_LIBS ?= $(shell pkg-config luajit --libs)
+- LUA_LIBDIR ?= $(PREFIX)/lib/lua/$(LUA_VERSION)
+-endif
+-
+-#OpenSSL auto detect
+-OPENSSL_CFLAGS ?= $(shell pkg-config openssl --cflags)
+-OPENSSL_LIBS ?= $(shell pkg-config openssl --static --libs)
+-
+-ifneq (, $(findstring linux, $(SYS)))
+- # Do linux things
+- CFLAGS = -fpic
+- LDFLAGS = -Wl,--no-undefined -fpic -lrt -ldl -lm
+-endif
+-
+-ifneq (, $(findstring apple, $(SYS)))
+- # Do darwin things
+- CFLAGS = -fPIC
+- LDFLAGS = -fPIC -undefined dynamic_lookup -ldl
+- #MACOSX_DEPLOYMENT_TARGET="10.3"
+- CC := MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET} $(CC)
+-endif
++LIB_OPTION = -shared
++LUAPKGC = lua
+
+-ifneq (, $(findstring mingw, $(SYS)))
+- # Do mingw things
+- CFLAGS = -DLUA_LIB -DLUA_BUILD_AS_DLL -DWIN32_LEAN_AND_MEAN
+-endif
+-
+-ifneq (, $(findstring cygwin, $(SYS)))
+- # Do cygwin things
+- CFLAGS = -fPIC
+-endif
++# LUA include/libraries build flags
++LUA_CFLAGS := $(shell $(PKGC) --cflags $(LUAPKGC))
++LUA_LIBS_DIR := $(shell $(PKGC) --libs $(LUAPKGC))
+
+-ifneq (, $(findstring iOS, $(SYS)))
+- # Do iOS things
+- CFLAGS = -fPIC
+- LDFLAGS = -fPIC -ldl
+-endif
++# openssl include/libraries build flags
++OPENSSL_CFLAGS ?= $(shell $(PKGC) openssl --cflags)
++OPENSSL_LIBS_DIR ?= $(shell $(PKGC) openssl --libs)
+
+-#custom config
++LDFLAGS = -Wl,--no-undefined -fpic -lrt -ldl -lm $(OPENSSL_LIBS_DIR) $(LUA_LIBS_DIR)
++CFLAGS += -fPIC -DPTHREADS $(OPENSSL_CFLAGS) $(LUA_CFLAGS)
+ ifeq (.config, $(wildcard .config))
+- include .config
++include .config
+ endif
+
+-LIBNAME= $T.so.$V
++LIBNAME= $T.so
+
+-CFLAGS += $(OPENSSL_CFLAGS) $(LUA_CFLAGS) $(TARGET_FLAGS)
+-LDFLAGS += -shared $(OPENSSL_LIBS) $(LUA_LIBS)
+ # Compilation directives
+ WARN_MIN = -Wall -Wno-unused-value
+ WARN = -Wall
+ WARN_MOST = $(WARN) -W -Waggregate-return -Wcast-align -Wmissing-prototypes -Wnested-externs -Wshadow -Wwrite-strings -pedantic
+ CFLAGS += -g $(WARN_MIN) -DPTHREADS -Ideps -Ideps/lua-compat -Ideps/auxiliar
+
+-
+ OBJS=src/asn1.o deps/auxiliar/auxiliar.o src/bio.o src/cipher.o src/cms.o src/compat.o src/crl.o src/csr.o src/dh.o src/digest.o src/dsa.o \
+ src/ec.o src/engine.o src/hmac.o src/lbn.o src/lhash.o src/misc.o src/ocsp.o src/openssl.o src/ots.o src/pkcs12.o src/pkcs7.o \
+ src/pkey.o src/rsa.o src/ssl.o src/th-lock.o src/util.o src/x509.o src/xattrs.o src/xexts.o src/xname.o src/xstore.o \
+ src/xalgor.o src/callback.o src/srp.o deps/auxiliar/subsidiar.o
+
+-.c.o:
+- $(CC) $(CFLAGS) -c -o $@ $?
++%.o: %.c
++ $(CC) $(CFLAGS) -c $< -o $@
+
+ all: $T.so
+- @echo "Target system: "$(SYS)
+-
+-$T.so: lib$T.a
+- $(CC) -o $@ src/openssl.o -L. -l$T $(LDFLAGS)
++ echo $(SYS)
++ $(CC) $(LDFLAGS) $(LIB_OPTION) $(OBJS) -o $@
+
+-lib$T.a: $(OBJS)
+- $(AR) rcs $@ $?
++$T.so: $(OBJS)
++ echo "LUA LIBS_DIR: " $(LUA_LIBS_DIR)
++ $(CC) $(CFLAGS) $(LIB_OPTION) -o $T.so $(OBJS) $(LDFLAGS)
+
+ install: all
+ mkdir -p $(LUA_LIBDIR)
+ cp $T.so $(LUA_LIBDIR)
+
+-info:
+- @echo "Target system: "$(SYS)
+- @echo "CC:" $(CC)
+- @echo "AR:" $(AR)
+- @echo "PREFIX:" $(PREFIX)
+-
+ clean:
+- rm -f $T.so lib$T.a $(OBJS)
+-
+-# vim: ts=8 sw=8 noet
++ rm -f $T.so $(OBJS)
+++ /dev/null
-diff --git a/deps/lua-compat/c-api/compat-5.3.c b/deps/lua-compat/c-api/compat-5.3.c
-index 4395bbc..4a8877c 100644
---- a/deps/lua-compat/c-api/compat-5.3.c
-+++ b/deps/lua-compat/c-api/compat-5.3.c
-@@ -491,17 +491,6 @@ COMPAT53_API int lua_geti (lua_State *L, int index, lua_Integer i) {
- }
-
-
--COMPAT53_API int lua_isinteger (lua_State *L, int index) {
-- if (lua_type(L, index) == LUA_TNUMBER) {
-- lua_Number n = lua_tonumber(L, index);
-- lua_Integer i = lua_tointeger(L, index);
-- if (i == n)
-- return 1;
-- }
-- return 0;
--}
--
--
- static void compat53_reverse (lua_State *L, int a, int b) {
- for (; a < b; ++a, --b) {
- lua_pushvalue(L, a);
-diff --git a/deps/lua-compat/c-api/compat-5.3.h b/deps/lua-compat/c-api/compat-5.3.h
-index 2309294..8e67bae 100644
---- a/deps/lua-compat/c-api/compat-5.3.h
-+++ b/deps/lua-compat/c-api/compat-5.3.h
-@@ -244,9 +244,6 @@ typedef int (*lua_KFunction)(lua_State *L, int status, lua_KContext ctx);
- #define lua_geti COMPAT53_CONCAT(COMPAT53_PREFIX, _geti)
- COMPAT53_API int lua_geti (lua_State *L, int index, lua_Integer i);
-
--#define lua_isinteger COMPAT53_CONCAT(COMPAT53_PREFIX, _isinteger)
--COMPAT53_API int lua_isinteger (lua_State *L, int index);
--
- #define lua_numbertointeger(n, p) \
- ((*(p) = (lua_Integer)(n)), 1)
-