Merge OpenZFS support in to HEAD.
[freebsd.git] / cddl / lib / libzpool / Makefile
1 # $FreeBSD$
2
3
4 # ZFS_COMMON_SRCS
5 .PATH: ${SRCTOP}/sys/contrib/openzfs/module/zfs
6 .PATH: ${SRCTOP}/sys/contrib/openzfs/module/zcommon
7 .PATH: ${SRCTOP}/sys/contrib/openzfs/module/unicode
8 # LUA_SRCS
9 .PATH: ${SRCTOP}/sys/contrib/openzfs/module/lua
10
11 .PATH: ${SRCTOP}/sys/contrib/openzfs/module/os/linux/zfs
12
13 .PATH: ${SRCTOP}/sys/contrib/openzfs/lib/libzpool
14
15 .if exists(${SRCTOP}/sys/cddl/contrib/opensolaris/common/atomic/${MACHINE_ARCH}/opensolaris_atomic.S)
16 .PATH: ${SRCTOP}/sys/cddl/contrib/opensolaris/common/atomic/${MACHINE_ARCH}
17 ATOMIC_SRCS=    opensolaris_atomic.S
18 ACFLAGS+=       -Wa,--noexecstack
19 .else
20 .PATH: ${SRCTOP}/sys/cddl/compat/opensolaris/kern
21 ATOMIC_SRCS=    opensolaris_atomic.c
22 .endif
23
24 .if ${MACHINE_ARCH} == "powerpc"
25 # Don't waste GOT entries on small data.
26 PICFLAG=        -fPIC
27 .endif
28
29 LIB=            zpool
30
31
32
33 USER_C = \
34         kernel.c \
35         taskq.c \
36         util.c
37
38 KERNEL_C = \
39         zfeature_common.c \
40         zfs_comutil.c \
41         zfs_deleg.c \
42         zfs_fletcher.c \
43         zfs_fletcher_superscalar.c \
44         zfs_fletcher_superscalar4.c \
45         zfs_namecheck.c \
46         zfs_prop.c \
47         zfs_uio.c \
48         zpool_prop.c \
49         zprop_common.c \
50         abd.c \
51         abd_os.c \
52         aggsum.c \
53         arc.c \
54         arc_os.c \
55         blkptr.c \
56         bplist.c \
57         bpobj.c \
58         bptree.c \
59         btree.c \
60         bqueue.c \
61         cityhash.c \
62         dbuf.c \
63         dbuf_stats.c \
64         ddt.c \
65         ddt_zap.c \
66         dmu.c \
67         dmu_diff.c \
68         dmu_object.c \
69         dmu_objset.c \
70         dmu_recv.c \
71         dmu_redact.c \
72         dmu_send.c \
73         dmu_traverse.c \
74         dmu_tx.c \
75         dmu_zfetch.c \
76         dnode.c \
77         dnode_sync.c \
78         dsl_bookmark.c \
79         dsl_dataset.c \
80         dsl_deadlist.c \
81         dsl_deleg.c \
82         dsl_dir.c \
83         dsl_crypt.c \
84         dsl_pool.c \
85         dsl_prop.c \
86         dsl_scan.c \
87         dsl_synctask.c \
88         dsl_destroy.c \
89         dsl_userhold.c \
90         edonr_zfs.c \
91         hkdf.c \
92         fm.c \
93         gzip.c \
94         lzjb.c \
95         lz4.c \
96         metaslab.c \
97         mmp.c \
98         multilist.c \
99         objlist.c \
100         pathname.c \
101         range_tree.c \
102         refcount.c \
103         rrwlock.c \
104         sa.c \
105         sha256.c \
106         skein_zfs.c \
107         spa.c \
108         spa_boot.c \
109         spa_checkpoint.c \
110         spa_config.c \
111         spa_errlog.c \
112         spa_history.c \
113         spa_log_spacemap.c \
114         spa_misc.c \
115         spa_stats.c \
116         space_map.c \
117         space_reftree.c \
118         txg.c \
119         trace.c \
120         uberblock.c \
121         unique.c \
122         vdev.c \
123         vdev_cache.c \
124         vdev_file.c \
125         vdev_indirect_births.c \
126         vdev_indirect.c \
127         vdev_indirect_mapping.c \
128         vdev_initialize.c \
129         vdev_label.c \
130         vdev_mirror.c \
131         vdev_missing.c \
132         vdev_queue.c \
133         vdev_raidz.c \
134         vdev_raidz_math_aarch64_neon.c \
135         vdev_raidz_math_aarch64_neonx2.c \
136         vdev_raidz_math_avx2.c \
137         vdev_raidz_math_avx512bw.c \
138         vdev_raidz_math_avx512f.c \
139         vdev_raidz_math.c \
140         vdev_raidz_math_scalar.c \
141         vdev_rebuild.c \
142         vdev_removal.c \
143         vdev_root.c \
144         vdev_trim.c \
145         zap.c \
146         zap_leaf.c \
147         zap_micro.c \
148         zcp.c \
149         zcp_get.c \
150         zcp_global.c \
151         zcp_iter.c \
152         zcp_set.c \
153         zcp_synctask.c \
154         zfeature.c \
155         zfs_byteswap.c \
156         zfs_debug.c \
157         zfs_fm.c \
158         zfs_fuid.c \
159         zfs_sa.c \
160         zfs_znode.c \
161         zfs_ratelimit.c \
162         zfs_rlock.c \
163         zil.c \
164         zio.c \
165         zio_checksum.c \
166         zio_compress.c \
167         zio_crypt.c \
168         zio_inject.c \
169         zle.c \
170         zrlock.c \
171         zthr.c
172
173 ARCH_C =
174 .if ${MACHINE_ARCH} == "amd64" || ${MACHINE_ARCH} == "i386"
175 ARCH_C +=       vdev_raidz_math_sse2.c \
176                 vdev_raidz_math_ssse3.c \
177                 zfs_fletcher_intel.c \
178                 zfs_fletcher_sse.c 
179 CFLAGS +=  -DHAVE_SSE2  -DHAVE_SSE3
180 .endif
181 .if ${MACHINE_ARCH} == "amd64"
182 ARCH_C +=       zfs_fletcher_avx512.c
183 CFLAGS+= -DHAVE_AVX2 -DHAVE_AVX -D__x86_64 -DHAVE_AVX512F \
184         -DHAVE_AVX512BW
185 .endif
186 .if ${MACHINE_ARCH} == "aarch64"
187 ARCH_C +=       zfs_fletcher_aarch64_neon.c
188 .endif
189
190 LUA_C = \
191         lapi.c \
192         lauxlib.c \
193         lbaselib.c \
194         lcode.c \
195         lcompat.c \
196         lcorolib.c \
197         lctype.c \
198         ldebug.c \
199         ldo.c \
200         lfunc.c \
201         lgc.c \
202         llex.c \
203         lmem.c \
204         lobject.c \
205         lopcodes.c \
206         lparser.c \
207         lstate.c \
208         lstring.c \
209         lstrlib.c \
210         ltable.c \
211         ltablib.c \
212         ltm.c \
213         lvm.c \
214         lzio.c
215
216 UNICODE_C = u8_textprep.c uconv.c
217
218 SRCS=           ${USER_C} ${KERNEL_C} ${LUA_C} ${UNICODE_C} ${ARCH_C}
219
220 WARNS?=         2
221 CFLAGS+= -DIN_BASE
222 CFLAGS+= -I${SRCTOP}/sys/contrib/openzfs/include
223 CFLAGS+= -I${SRCTOP}/sys/contrib/openzfs/lib/libspl/include/
224 CFLAGS+= -I${SRCTOP}/sys/contrib/openzfs/lib/libspl/include/os/freebsd
225 CFLAGS+= -I${SRCTOP}/sys
226 CFLAGS+= -I${SRCTOP}/cddl/compat/opensolaris/include
227 CFLAGS+= -I${SRCTOP}/sys/contrib/openzfs/module/icp/include
228 CFLAGS+= -include ${SRCTOP}/sys/contrib/openzfs/include/os/freebsd/spl/sys/ccompile.h
229 CFLAGS+= -DHAVE_ISSETUGID
230 CFLAGS+= -include ${SRCTOP}/sys/modules/zfs/zfs_config.h
231 CFLAGS+= -I${SRCTOP}/sys/modules/zfs
232 CFLAGS+= -DLIB_ZPOOL_BUILD -DZFS_DEBUG
233
234
235 # XXX: pthread doesn't have mutex_owned() equivalent, so we need to look
236 #      into libthr private structures. That's sooo evil, but it's only for
237 #      ZFS debugging tools needs.
238 CFLAGS+=        -DWANTS_MUTEX_OWNED
239 CFLAGS+=        -I${SRCTOP}/lib/libpthread/thread
240 CFLAGS+=        -I${SRCTOP}/lib/libpthread/sys
241 CFLAGS+=        -I${SRCTOP}/lib/libthr/arch/${MACHINE_CPUARCH}/include
242 CFLAGS.gcc+=    -fms-extensions
243
244 LIBADD=         md pthread z spl icp nvpair avl umem
245
246 # atomic.S doesn't like profiling.
247 MK_PROFILE=     no
248
249 CSTD=   c99
250
251 # Since there are many asserts in this library, it makes no sense to compile
252 # it without debugging.
253
254 CFLAGS+=        -g -DDEBUG=1
255
256 .include <bsd.lib.mk>