+From a88d7f4348e54abba47a96f9ec4ffe7c60ba9400 Mon Sep 17 00:00:00 2001
+From: O <codetypes@gmail.com>
+Date: Fri, 30 Jul 2021 17:17:45 +0800
+Subject: [PATCH] build so file on mac
+
+---
+ CMakeLists.txt | 18 +++++++++++++-----
+ 1 file changed, 13 insertions(+), 5 deletions(-)
+
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
-@@ -21,8 +21,6 @@ add_definitions(-DPTHREADS)
+@@ -20,7 +20,7 @@ find_package(Threads REQUIRED)
+ add_definitions(-DPTHREADS)
if(BUILD_SHARED_LUA_OPENSSL)
- set(LUA_OPENSSL_LIBTYPE SHARED)
-- add_definitions(-DLUA_BUILD_AS_DLL -DLUA_LIB)
-- set(EXTRA_LIBS "ws2_32.lib" "crypt32.lib")
- else()
- set(LUA_OPENSSL_LIBTYPE STATIC)
- endif()
+- set(LUA_OPENSSL_LIBTYPE SHARED)
++ set(LUA_OPENSSL_LIBTYPE MODULE)
+ if(WIN32)
+ add_definitions(-DLUA_BUILD_AS_DLL)
+ set(EXTRA_LIBS "ws2_32.lib" "crypt32.lib")
+@@ -45,7 +45,7 @@ add_library(lua-openssl ${LUA_OPENSSL_LI
+ src/dsa.c
+ src/ec.c
+ src/engine.c
+- src/mac.c
++ src/hmac.c
+ src/lbn.c
+ src/lhash.c
+ src/misc.c
+@@ -73,7 +73,7 @@ add_library(lua-openssl ${LUA_OPENSSL_LI
+
+ target_include_directories(lua-openssl PUBLIC
+ ${OPENSSL_INCLUDE_DIR}
+- ${LUA_INCLUDE_DIRS}
++ ${LUA_INCLUDE_DIR}
+ deps
+ deps/lua-compat/c-api
+ deps/auxiliar
+@@ -81,17 +81,25 @@ target_include_directories(lua-openssl P
+
+ target_link_libraries(lua-openssl PUBLIC
+ ${OPENSSL_LIBRARIES}
+- ${LUA_LIBRARIES}
+ ${EXTRA_LIBS}
+ Threads::Threads
+ )
+
++if(WIN32)
++ target_link_libraries(lua-openssl PUBLIC
++ ${LUA_LIBRARIES}
++ )
++endif()
++
++if(APPLE)
++ target_link_options(lua-openssl PUBLIC -bundle -undefined dynamic_lookup)
++endif()
++
+ target_compile_options(lua-openssl PRIVATE -DLUA_LIB)
+
+ set_target_properties(lua-openssl PROPERTIES
+ PREFIX ""
+ OUTPUT_NAME "openssl"
+- VERSION 0.8.0.0 SOVERSION 0
+ )
+
+ install(TARGETS lua-openssl
+++ /dev/null
---- a/src/cipher.c
-+++ b/src/cipher.c
-@@ -8,6 +8,10 @@ cipher module for lua-openssl binding
- #include "openssl.h"
- #include "private.h"
-
-+#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
-+#define EVP_CIPHER_CTX_reset EVP_CIPHER_CTX_init
-+#endif
-+
- /***
- list all support cipher algs
-
-@@ -109,7 +113,7 @@ static LUA_FUNCTION(openssl_evp_encrypt)
- memcpy(evp_iv, iv, iv_len);
- }
-
-- EVP_CIPHER_CTX_init(c);
-+ EVP_CIPHER_CTX_reset(c);
- ret = EVP_EncryptInit_ex(c, cipher, e, (const byte*)evp_key, iv_len > 0 ? (const byte*)evp_iv : NULL);
- if (ret == 1)
- {
-@@ -131,8 +135,12 @@ static LUA_FUNCTION(openssl_evp_encrypt)
- OPENSSL_free(buffer);
- }
- }
-+#if OPENSSL_VERSION_NUMBER >= 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
-+ EVP_CIPHER_CTX_reset(c);
-+#else
- EVP_CIPHER_CTX_cleanup(c);
- EVP_CIPHER_CTX_free(c);
-+#endif
- return (ret == 1) ? ret : openssl_pushresult(L, ret);
- }
- else
-@@ -196,7 +204,7 @@ static LUA_FUNCTION(openssl_evp_decrypt)
- memcpy(evp_iv, iv, iv_len);
- }
-
-- EVP_CIPHER_CTX_init(c);
-+ EVP_CIPHER_CTX_reset(c);
- ret = EVP_DecryptInit_ex(c, cipher, e, key ? (const byte*)evp_key : NULL, iv_len > 0 ? (const byte*)evp_iv : NULL);
- if (ret == 1)
- {
-@@ -220,8 +228,12 @@ static LUA_FUNCTION(openssl_evp_decrypt)
- OPENSSL_free(buffer);
- }
- }
-+#if OPENSSL_VERSION_NUMBER >= 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
-+ EVP_CIPHER_CTX_reset(c);
-+#else
- EVP_CIPHER_CTX_cleanup(c);
- EVP_CIPHER_CTX_free(c);
-+#endif
- return (ret == 1) ? ret : openssl_pushresult(L, ret);
- }
- else
-@@ -292,7 +304,7 @@ static LUA_FUNCTION(openssl_evp_cipher)
- memcpy(evp_iv, iv, iv_len);
- }
-
-- EVP_CIPHER_CTX_init(c);
-+ EVP_CIPHER_CTX_reset(c);
- ret = EVP_CipherInit_ex(c, cipher, e, (const byte*)evp_key, iv_len > 0 ? (const byte*)evp_iv : NULL, enc);
- if (ret == 1)
- {
-@@ -317,8 +329,12 @@ static LUA_FUNCTION(openssl_evp_cipher)
- OPENSSL_free(buffer);
- }
- }
-+#if OPENSSL_VERSION_NUMBER >= 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
-+ EVP_CIPHER_CTX_reset(c);
-+#else
- EVP_CIPHER_CTX_cleanup(c);
- EVP_CIPHER_CTX_free(c);
-+#endif
- return (ret == 1) ? ret : openssl_pushresult(L, ret);
- }
- else
-@@ -376,7 +392,7 @@ static LUA_FUNCTION(openssl_cipher_new)
- memcpy(evp_iv, iv, iv_len);
- }
- c = EVP_CIPHER_CTX_new();
-- EVP_CIPHER_CTX_init(c);
-+ EVP_CIPHER_CTX_reset(c);
- if (!EVP_CipherInit_ex(c, cipher, e, key ? (const byte*)evp_key : NULL, iv_len > 0 ? (const byte*)evp_iv : NULL, enc))
- {
- luaL_error(L, "EVP_CipherInit_ex failed, please check openssl error");
-@@ -431,7 +447,7 @@ static LUA_FUNCTION(openssl_cipher_encry
- memcpy(evp_iv, iv, iv_len);
- }
- c = EVP_CIPHER_CTX_new();
-- EVP_CIPHER_CTX_init(c);
-+ EVP_CIPHER_CTX_reset(c);
- ret = EVP_EncryptInit_ex(c, cipher, e,
- key ? (const byte*)evp_key : NULL,
- iv_len > 0 ? (const byte*)evp_iv : NULL);
-@@ -491,7 +507,7 @@ static LUA_FUNCTION(openssl_cipher_decry
- memcpy(evp_iv, iv, iv_len);
- }
- c = EVP_CIPHER_CTX_new();
-- EVP_CIPHER_CTX_init(c);
-+ EVP_CIPHER_CTX_reset(c);
- ret = EVP_DecryptInit_ex(c, cipher, e,
- key ? (const byte*)evp_key : NULL,
- iv_len > 0 ? (const byte*)evp_iv : NULL);
-@@ -937,8 +953,12 @@ static LUA_FUNCTION(openssl_cipher_ctx_f
- return 0;
- lua_pushnil(L);
- lua_rawsetp(L, LUA_REGISTRYINDEX, ctx);
-+#if OPENSSL_VERSION_NUMBER >= 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
-+ EVP_CIPHER_CTX_reset(ctx);
-+#else
- EVP_CIPHER_CTX_cleanup(ctx);
- EVP_CIPHER_CTX_free(ctx);
-+#endif
- FREE_OBJECT(1);
- return 0;
- }
---- a/src/openssl.c
-+++ b/src/openssl.c
-@@ -523,9 +523,7 @@ LUALIB_API int luaopen_openssl(lua_State
- #endif
-
- #ifndef OPENSSL_NO_ENGINE
-- ENGINE_load_dynamic();
-- ENGINE_load_openssl();
-- ENGINE_load_builtin_engines();
-+ ENGINE_register_all_complete();
- #endif
- #ifdef LOAD_ENGINE_CUSTOM
- LOAD_ENGINE_CUSTOM
---- a/src/th-lock.c
-+++ b/src/th-lock.c
-@@ -310,7 +310,7 @@ unsigned long irix_thread_id(void)
-
- /* Linux and a few others */
- #ifdef PTHREADS
--#ifndef OPENSSL_SYS_WIN32
-+#if !defined(OPENSSL_SYS_WIN32) && (OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER))
- static pthread_mutex_t *lock_cs;
- static long *lock_count;
-