aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/CMakeLists.txt9
-rw-r--r--src/dlfcn.c11
2 files changed, 20 insertions, 0 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 9066e65..5dc21d3 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -15,6 +15,15 @@ set_target_properties(dl PROPERTIES DEFINE_SYMBOL "")
15 15
16# set shared mode for compiling library and propagate mode to cmake clients 16# set shared mode for compiling library and propagate mode to cmake clients
17if (BUILD_SHARED_LIBS) 17if (BUILD_SHARED_LIBS)
18 # for non-debug shared mode, avoid linking to CRT library as it is not needed
19 if (NOT CMAKE_BUILD_TYPE STREQUAL "Debug")
20 if (MSVC)
21 set_property(TARGET dl APPEND_STRING PROPERTY COMPILE_FLAGS "/Zl")
22 else (MSVC)
23 set_property(TARGET dl APPEND_STRING PROPERTY COMPILE_FLAGS "-D_DllMainCRTStartup=DllMainCRTStartup")
24 set_property(TARGET dl APPEND_STRING PROPERTY LINK_FLAGS "-nostartfiles -nostdlib -lkernel32")
25 endif (MSVC)
26 endif (NOT CMAKE_BUILD_TYPE STREQUAL "Debug")
18 target_compile_definitions(dl PUBLIC DLFCN_WIN32_SHARED) 27 target_compile_definitions(dl PUBLIC DLFCN_WIN32_SHARED)
19endif (BUILD_SHARED_LIBS) 28endif (BUILD_SHARED_LIBS)
20 29
diff --git a/src/dlfcn.c b/src/dlfcn.c
index c128579..5ddf1a7 100644
--- a/src/dlfcn.c
+++ b/src/dlfcn.c
@@ -955,4 +955,15 @@ BOOL WINAPI DllMain( HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved )
955 (void) lpvReserved; 955 (void) lpvReserved;
956 return TRUE; 956 return TRUE;
957} 957}
958
959/* For non-debug DLL builds defines DLL entry point which avoids using CRT library */
960#if !defined( _DEBUG )
961#ifdef __cplusplus
962extern "C"
963#endif
964BOOL WINAPI _DllMainCRTStartup( HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved )
965{
966 return DllMain( hinstDLL, fdwReason, lpvReserved );
967}
968#endif
958#endif 969#endif