1
2############################################
3#
4# How to build libarchive
5#
6############################################
7
8# Public headers
9SET(include_HEADERS
10  archive.h
11  archive_entry.h
12)
13
14# Sources and private headers
15SET(libarchive_SOURCES
16  archive_check_magic.c
17  archive_endian.h
18  archive_entry.c
19  archive_entry.h
20  archive_entry_copy_stat.c
21  archive_entry_link_resolver.c
22  archive_entry_private.h
23  archive_entry_stat.c
24  archive_entry_strmode.c
25  archive_entry_xattr.c
26  archive_hash.h
27  archive_platform.h
28  archive_private.h
29  archive_read.c
30  archive_read_data_into_fd.c
31  archive_read_disk.c
32  archive_read_disk_entry_from_file.c
33  archive_read_disk_private.h
34  archive_read_disk_set_standard_lookup.c
35  archive_read_extract.c
36  archive_read_open_fd.c
37  archive_read_open_file.c
38  archive_read_open_filename.c
39  archive_read_open_memory.c
40  archive_read_private.h
41  archive_read_support_compression_all.c
42  archive_read_support_compression_bzip2.c
43  archive_read_support_compression_compress.c
44  archive_read_support_compression_gzip.c
45  archive_read_support_compression_none.c
46  archive_read_support_compression_program.c
47  archive_read_support_compression_rpm.c
48  archive_read_support_compression_uu.c
49  archive_read_support_compression_xz.c
50  archive_read_support_format_all.c
51  archive_read_support_format_ar.c
52  archive_read_support_format_cpio.c
53  archive_read_support_format_empty.c
54  archive_read_support_format_iso9660.c
55  archive_read_support_format_mtree.c
56  archive_read_support_format_raw.c
57  archive_read_support_format_tar.c
58  archive_read_support_format_xar.c
59  archive_read_support_format_zip.c
60  archive_string.c
61  archive_string.h
62  archive_string_sprintf.c
63  archive_util.c
64  archive_virtual.c
65  archive_write.c
66  archive_write_disk.c
67  archive_write_disk_private.h
68  archive_write_disk_set_standard_lookup.c
69  archive_write_private.h
70  archive_write_open_fd.c
71  archive_write_open_file.c
72  archive_write_open_filename.c
73  archive_write_open_memory.c
74  archive_write_set_compression_bzip2.c
75  archive_write_set_compression_compress.c
76  archive_write_set_compression_gzip.c
77  archive_write_set_compression_none.c
78  archive_write_set_compression_program.c
79  archive_write_set_compression_xz.c
80  archive_write_set_format.c
81  archive_write_set_format_ar.c
82  archive_write_set_format_by_name.c
83  archive_write_set_format_cpio.c
84  archive_write_set_format_cpio_newc.c
85  archive_write_set_format_mtree.c
86  archive_write_set_format_pax.c
87  archive_write_set_format_shar.c
88  archive_write_set_format_ustar.c
89  archive_write_set_format_zip.c
90  filter_fork.c
91  filter_fork.h
92)
93
94# Man pages
95SET(libarchive_MANS
96  archive_entry.3
97  archive_read.3
98  archive_read_disk.3
99  archive_util.3
100  archive_write.3
101  archive_write_disk.3
102  cpio.5
103  libarchive.3
104  libarchive_internals.3
105  libarchive-formats.5
106  mtree.5
107  tar.5
108)
109
110IF(WIN32 AND NOT CYGWIN)
111  LIST(APPEND libarchive_SOURCES archive_entry_copy_bhfi.c)
112  LIST(APPEND libarchive_SOURCES archive_windows.c)
113  LIST(APPEND libarchive_SOURCES archive_windows.h)
114  LIST(APPEND libarchive_SOURCES filter_fork_windows.c)
115ENDIF(WIN32 AND NOT CYGWIN)
116
117# Libarchive is a shared library
118ADD_LIBRARY(archive SHARED ${libarchive_SOURCES} ${include_HEADERS})
119TARGET_LINK_LIBRARIES(archive ${ADDITIONAL_LIBS})
120SET_TARGET_PROPERTIES(archive PROPERTIES SOVERSION ${SOVERSION})
121
122# archive_static is a static library
123ADD_LIBRARY(archive_static STATIC ${libarchive_SOURCES} ${include_HEADERS})
124SET_TARGET_PROPERTIES(archive_static PROPERTIES COMPILE_DEFINITIONS
125  LIBARCHIVE_STATIC)
126# On Posix systems, libarchive.so and libarchive.a can co-exist.
127IF(NOT WIN32 OR CYGWIN)
128  SET_TARGET_PROPERTIES(archive_static PROPERTIES OUTPUT_NAME archive)
129ENDIF(NOT WIN32 OR CYGWIN)
130
131# How to install the libraries
132INSTALL(TARGETS archive archive_static
133        RUNTIME DESTINATION bin
134        LIBRARY DESTINATION lib
135        ARCHIVE DESTINATION lib)
136INSTALL_MAN(${libarchive_MANS})
137INSTALL(FILES ${include_HEADERS} DESTINATION include)
138
139add_subdirectory(test)
140