@@ -5,18 +5,102 @@ project(mmdeploy_model)
55set (MODEL_NAMES "directory_model" )
66if (${MMDEPLOY_ZIP_MODEL} )
77 set (MODEL_NAMES ${MODEL_NAMES} "zip_model" )
8+
9+ if (MSVC )
10+ set (zlib zlibstatic)
11+ set (LIB_PREFIX "" )
12+ set (LIB_SUFFIX ".lib" )
13+ else ()
14+ set (zlib z)
15+ set (LIB_PREFIX "lib" )
16+ set (LIB_SUFFIX ".a" )
17+ endif ()
18+ set (ziplib zip)
19+
20+ set (zlib_name ${LIB_PREFIX}${zlib}${LIB_SUFFIX} )
21+ set (ziplib_name ${LIB_PREFIX}${ziplib}${LIB_SUFFIX} )
22+
23+ include (ExternalProject)
24+ set (ZLIB_BUILD_DIR ${CMAKE_BINARY_DIR} /zlib-build )
25+ set (ZLIB_INSTALL_DIR ${CMAKE_BINARY_DIR} /zlib-install )
26+ set (ZLIB_INCLUDE_DIR ${ZLIB_INSTALL_DIR} /include )
27+ set (ZLIB_LIBRARY_DIR ${ZLIB_INSTALL_DIR} /lib)
28+ ExternalProject_Add(
29+ zlib-external
30+ GIT_REPOSITORY https://github.com/madler/zlib
31+ GIT_TAG v1.2.13
32+ CMAKE_ARGS
33+ -DCMAKE_INSTALL_PREFIX=${ZLIB_INSTALL_DIR}
34+ -DCMAKE_POSITION_INDEPENDENT_CODE=ON
35+ UPDATE_DISCONNECTED 1
36+ )
37+ add_custom_target (static_zlib ALL
38+ COMMAND ${CMAKE_COMMAND} -E remove ${ZLIB_LIBRARY_DIR} /zlib.lib
39+ COMMAND ${CMAKE_COMMAND} -E remove ${ZLIB_LIBRARY_DIR} /libz.so
40+ COMMAND ${CMAKE_COMMAND} -E remove ${ZLIB_LIBRARY_DIR} /libz.dylib
41+ )
42+ add_dependencies (static_zlib zlib-external)
43+
44+ add_library (${zlib} STATIC IMPORTED )
45+ set_target_properties (${zlib}
46+ PROPERTIES IMPORTED_LOCATION ${ZLIB_LIBRARY_DIR} /${zlib_name} )
47+ add_dependencies (${zlib} zlib-external)
48+
49+ set (LIBZIP_BUILD_DIR ${CMAKE_BINARY_DIR} /libzip-build )
50+ set (LIBZIP_INSTALL_DIR ${CMAKE_BINARY_DIR} /libzip-install )
51+ set (LIBZIP_INCLUDE_DIR ${LIBZIP_INSTALL_DIR} /include )
52+ set (LIBZIP_LIBRARY_DIR ${LIBZIP_INSTALL_DIR} /lib)
53+ ExternalProject_Add(
54+ libzip-external
55+ GIT_REPOSITORY https://github.com/nih-at/libzip
56+ GIT_TAG v1.9.2
57+ CMAKE_ARGS
58+ -DZLIB_ROOT=${ZLIB_INSTALL_DIR}
59+ -DCMAKE_INSTALL_PREFIX=${LIBZIP_INSTALL_DIR}
60+ -DCMAKE_INSTALL_LIBDIR=lib
61+ -DCMAKE_POSITION_INDEPENDENT_CODE=ON
62+ -DBUILD_SHARED_LIBS=OFF
63+ -DLIBZIP_DO_INSTALL=ON
64+ -DBUILD_TOOLS=OFF
65+ -DBUILD_DOC=OFF
66+ -DBUILD_REGRESS=OFF
67+ -DBUILD_EXAMPLES=OFF
68+ -DENABLE_OPENSSL=OFF
69+ -DENABLE_COMMONCRYPTO=OFF
70+ -DENABLE_GNUTLS=OFF
71+ -DENABLE_MBEDTLS=OFF
72+ -DENABLE_WINDOWS_CRYPTO=OFF
73+ -DENABLE_BZIP2=OFF
74+ -DENABLE_LZMA=OFF
75+ -DENABLE_ZSTD=OFF
76+ PREFIX libzip
77+ BINARY_DIR ${LIBZIP_BUILD_DIR}
78+ # INSTALL_COMMAND ""
79+ UPDATE_DISCONNECTED 1
80+ )
81+ add_library (${ziplib} STATIC IMPORTED )
82+ set_target_properties (${ziplib}
83+ PROPERTIES IMPORTED_LOCATION ${LIBZIP_LIBRARY_DIR} /${ziplib_name} )
84+ add_dependencies (libzip-external static_zlib)
85+ add_dependencies (${ziplib} libzip-external)
86+ set (ziplibs ${ziplib} ${zlib} )
87+ if (NOT MMDEPLOY_BUILD_SDK_MONOLITHIC)
88+ install (FILES ${LIBZIP_LIBRARY_DIR} /${ziplib_name}
89+ DESTINATION ${CMAKE_INSTALL_PREFIX} /lib)
90+ install (FILES ${ZLIB_LIBRARY_DIR} /${zlib_name}
91+ DESTINATION ${CMAKE_INSTALL_PREFIX} /lib)
92+ endif ()
893endif ()
994
1095foreach (MODEL_NAME ${MODEL_NAMES} )
1196 set (TARGET_MODEL_NAME mmdeploy_${MODEL_NAME} )
1297 mmdeploy_add_module(${TARGET_MODEL_NAME} ${MODEL_NAME} _impl.cpp)
1398 if (${MODEL_NAME} STREQUAL "zip_model" )
14- find_package (libzip QUIET )
15- if (libzip_FOUND)
16- target_link_libraries (${TARGET_MODEL_NAME} PUBLIC libzip::zip)
17- else ()
18- target_link_libraries (${TARGET_MODEL_NAME} PUBLIC zip)
19- endif ()
99+ target_link_libraries (${TARGET_MODEL_NAME} PRIVATE ${ziplibs} )
100+ target_link_directories (${TARGET_MODEL_NAME} INTERFACE
101+ $<INSTALL_INTERFACE:lib>)
102+ target_include_directories (${TARGET_MODEL_NAME} PRIVATE
103+ $<BUILD_INTERFACE:${LIBZIP_INCLUDE_DIR} >)
20104 endif ()
21105 add_library (mmdeploy::${MODEL_NAME} ALIAS ${TARGET_MODEL_NAME} )
22106endforeach ()
0 commit comments