@@ -43,7 +43,6 @@ common-obj-y = net/
common-obj-$(CONFIG_LINUX) += fsdev/
common-obj-y += accel/
-common-obj-y += migration/
common-obj-$(CONFIG_AUDIO_ALSA) += audio-alsa$(DSOSUF)
common-obj-$(CONFIG_AUDIO_OSS) += audio-oss$(DSOSUF)
@@ -158,7 +158,6 @@ obj-y += softmmu/
obj-y += gdbstub.o
obj-y += hw/
obj-y += qapi/
-obj-y += migration/ram.o
LIBS := $(libs_softmmu) $(LIBS)
# Temporary until emulators are linked by Meson
@@ -304,6 +304,10 @@ lzo = not_found
if 'CONFIG_LZO' in config_host
lzo = declare_dependency(link_args: config_host['LZO_LIBS'].split())
endif
+rdma = not_found
+if 'CONFIG_RDMA' in config_host
+ rdma = declare_dependency(link_args: config_host['RDMA_LIBS'].split())
+endif
create_config = find_program('scripts/create_config')
minikconf = find_program('scripts/minikconf.py')
@@ -651,6 +655,7 @@ softmmu_ss.add(when: ['CONFIG_FDT', fdt], if_true: [files('device_tree.c')])
common_ss.add(files('cpus-common.c'))
subdir('softmmu')
+subdir('migration')
subdir('monitor')
subdir('replay')
deleted file mode 100644
@@ -1,18 +0,0 @@
-common-obj-y += migration.o socket.o fd.o exec.o
-common-obj-y += tls.o channel.o savevm.o
-common-obj-y += colo.o colo-failover.o
-common-obj-y += vmstate.o vmstate-types.o page_cache.o
-common-obj-y += qemu-file.o global_state.o
-common-obj-y += qemu-file-channel.o
-common-obj-y += xbzrle.o postcopy-ram.o
-common-obj-y += qjson.o
-common-obj-y += block-dirty-bitmap.o
-common-obj-y += multifd.o
-common-obj-y += multifd-zlib.o
-common-obj-$(CONFIG_ZSTD) += multifd-zstd.o
-
-common-obj-$(CONFIG_RDMA) += rdma.o
-
-common-obj-$(CONFIG_LIVE_BLOCK_MIGRATION) += block.o
-
-rdma.o-libs := $(RDMA_LIBS)
new file mode 100644
@@ -0,0 +1,40 @@
+# Files needed by unit tests
+migration_files = files(
+ 'page_cache.c',
+ 'xbzrle.c',
+ 'vmstate-types.c',
+ 'vmstate.c',
+ 'qemu-file-channel.c',
+ 'qemu-file.c',
+ 'qjson.c',
+)
+
+libmigration = static_library('migration', sources: migration_files + genh,
+ name_suffix: 'fa',
+ build_by_default: false)
+migration = declare_dependency(link_with: libmigration,
+ dependencies: [zlib, qom, io])
+softmmu_ss.add(migration)
+
+softmmu_ss.add(files(
+ 'block-dirty-bitmap.c',
+ 'channel.c',
+ 'colo-failover.c',
+ 'colo.c',
+ 'exec.c',
+ 'fd.c',
+ 'global_state.c',
+ 'migration.c',
+ 'multifd.c',
+ 'multifd-zlib.c',
+ 'postcopy-ram.c',
+ 'savevm.c',
+ 'socket.c',
+ 'tls.c',
+))
+
+softmmu_ss.add(when: ['CONFIG_RDMA', rdma], if_true: files('rdma.c'))
+softmmu_ss.add(when: 'CONFIG_LIVE_BLOCK_MIGRATION', if_true: files('block.c'))
+softmmu_ss.add(when: 'CONFIG_ZSTD', if_true: [files('multifd-zstd.c'), zstd])
+
+specific_ss.add(when: 'CONFIG_SOFTMMU', if_true: files('ram.c'))
@@ -227,7 +227,8 @@ tests/test-iov$(EXESUF): tests/test-iov.o $(test-util-obj-y)
tests/test-hbitmap$(EXESUF): tests/test-hbitmap.o $(test-util-obj-y) $(test-crypto-obj-y)
tests/test-bitmap$(EXESUF): tests/test-bitmap.o $(test-util-obj-y)
tests/test-x86-cpuid$(EXESUF): tests/test-x86-cpuid.o
-tests/test-xbzrle$(EXESUF): tests/test-xbzrle.o migration/xbzrle.o migration/page_cache.o $(test-util-obj-y)
+tests/test-xbzrle$(EXESUF): tests/test-xbzrle.o migration/libmigration.fa $(test-util-obj-y) \
+ $(test-io-obj-y)
tests/test-cutils$(EXESUF): tests/test-cutils.o util/cutils.o $(test-util-obj-y)
tests/test-int128$(EXESUF): tests/test-int128.o
tests/rcutorture$(EXESUF): tests/rcutorture.o $(test-util-obj-y)
@@ -253,9 +254,7 @@ tests/test-qdev-global-props$(EXESUF): tests/test-qdev-global-props.o \
hw/core/vmstate-if.o \
hw/core/clock.o hw/core/qdev-clock.o \
$(test-qapi-obj-y)
-tests/test-vmstate$(EXESUF): tests/test-vmstate.o \
- migration/vmstate.o migration/vmstate-types.o migration/qemu-file.o \
- migration/qemu-file-channel.o migration/qjson.o \
+tests/test-vmstate$(EXESUF): tests/test-vmstate.o migration/libmigration.fa \
$(test-io-obj-y)
tests/test-timed-average$(EXESUF): tests/test-timed-average.o $(test-util-obj-y)
tests/test-base64$(EXESUF): tests/test-base64.o $(test-util-obj-y)