640
|
1 # FindZIP |
|
2 # ------- |
|
3 # |
|
4 # Find libzip library, this modules defines: |
|
5 # |
|
6 # ZIP_INCLUDE_DIRS, where to find zip.h |
|
7 # ZIP_LIBRARIES, where to find library |
|
8 # ZIP_FOUND, if it is found |
|
9 # |
|
10 # The following imported targets will be available: |
|
11 # |
|
12 # ZIP::ZIP, if found. |
|
13 |
|
14 find_package(ZLIB QUIET) |
|
15 |
|
16 find_path( |
|
17 ZIP_INCLUDE_DIR |
|
18 NAMES zip.h |
|
19 ) |
|
20 |
|
21 find_library( |
|
22 ZIP_LIBRARY |
|
23 NAMES zip libzip |
|
24 ) |
|
25 |
|
26 find_path( |
|
27 ZIPCONF_INCLUDE_DIR |
|
28 NAMES zipconf.h |
|
29 ) |
|
30 |
|
31 if (NOT ZIPCONF_INCLUDE_DIR) |
|
32 # zipconf.h is sometimes directly in the include/ folder but on some systems |
|
33 # like Windows, it is installed in the lib/ directory. |
|
34 get_filename_component(_ZIP_PRIVATE_LIBRARY "${ZIP_LIBRARY}" DIRECTORY) |
|
35 |
|
36 find_path( |
|
37 ZIPCONF_INCLUDE_DIR |
|
38 NAMES zipconf.h |
|
39 PATHS "${_ZIP_PRIVATE_LIBRARY}/libzip/include" |
|
40 ) |
|
41 endif () |
|
42 |
|
43 include(FindPackageHandleStandardArgs) |
|
44 |
|
45 find_package_handle_standard_args( |
|
46 ZIP |
|
47 REQUIRED_VARS ZLIB_LIBRARIES ZLIB_INCLUDE_DIRS ZIP_LIBRARY ZIP_INCLUDE_DIR ZIPCONF_INCLUDE_DIR |
|
48 ) |
|
49 |
|
50 if (ZIP_FOUND) |
|
51 set(ZIP_LIBRARIES ${ZIP_LIBRARY} ${ZLIB_LIBRARIES}) |
|
52 set(ZIP_INCLUDE_DIRS ${ZIP_INCLUDE_DIR} ${ZIPCONF_INCLUDE_DIR} ${ZLIB_INCLUDE_DIRS}) |
|
53 |
|
54 if (NOT TARGET ZIP::ZIP) |
|
55 add_library(ZIP::ZIP UNKNOWN IMPORTED) |
|
56 set_target_properties( |
|
57 ZIP::ZIP |
|
58 PROPERTIES |
|
59 IMPORTED_LINK_INTERFACE_LANGUAGES "C" |
|
60 IMPORTED_LOCATION "${ZIP_LIBRARY}" |
|
61 INTERFACE_INCLUDE_DIRECTORIES "${ZIP_INCLUDE_DIRS}" |
|
62 ) |
|
63 endif () |
|
64 endif () |
|
65 |
|
66 mark_as_advanced(ZIP_LIBRARY ZIP_INCLUDE_DIR ZIPCONF_INCLUDE_DIR) |