summaryrefslogtreecommitdiff
path: root/iscsiuio/meson.build
diff options
context:
space:
mode:
authorLee Duncan <lduncan@suse.com>2022-09-21 09:33:56 -0700
committerGitHub <noreply@github.com>2022-09-21 09:33:56 -0700
commit531039d15c3fe34fcd373d0923e0c7a34786c58c (patch)
tree0948146a9f7ae95fbcf081550504a8d0d8aa55f5 /iscsiuio/meson.build
parent7726ecc89015edb49057473a605c63ac9354f5cb (diff)
downloadopen-iscsi-531039d15c3fe34fcd373d0923e0c7a34786c58c.tar.gz
Use meson as the main build system (#365)
* Build: Add an iscsiuio 'build_date.sh' script This is currently unused, but will be used by meson to build the "build_date.[ch]" files used by iscsiuio. * Build: have git ignore file '.setup' I commonly use this file for shell aliases/functions. * Add framework to support building using meson. This adds the ability to use meson/ninja to build open-iscsi and iscsiuio, rather than the current system that uses 'autoconf' for iscsiuio and uses 'make' for everything else. The old make/autoconf system is left in place, for now, but deprecated, including a warning about that when running 'make all' or 'make user' from the top-level. * utils/build: enhance iscsi-iname to generate prefix Added new "-g/--generate-iname-prefix" argument to generate the InitiatorName= prefix. Also, updated iscsi-iname to use getopts. Also, use the new option from meson. * git/meson: remove 'builddir' from ignored files The build directory can be called anything. Suggested by: Eli Schwartz * iscsiuio build: fix new build_date.sh script Fixed several issues: - fix option handling for "-S" - fix epoch date handling from env (noticed by Eli Schwartz) - remove debug statements * iscsiuio meson: warn when not creating a symlink for iscsiuio * meson: install man pages more efficiently We don't need to specify path or subdirectory * iscsiuio meson: remove unused source date epoch option This option was never used, since we pass this info from the environment. * meson: no need to set libdir: default is fine * iscsiuio meson: no need to add c_args: already there * Don't generate initiatorname when cross-building (#367) Let it be generated by the iscsi-init service. Signed-off-by: TIAN Yuanhao <tianyuanhao3@163.com> * Set ISCSI_CONFIG_ROOT by meson Signed-off-by: TIAN Yuanhao <tianyuanhao3@163.com> * Set LOCK_DIR from home_dir to lock_dir Signed-off-by: TIAN Yuanhao <tianyuanhao3@163.com> * Install iface.example to db_root/ifaces Signed-off-by: TIAN Yuanhao <tianyuanhao3@163.com> Signed-off-by: TIAN Yuanhao <tianyuanhao3@163.com> Co-authored-by: TIAN Yuanhao <78596099+tianyuanhao@users.noreply.github.com> Co-authored-by: TIAN Yuanhao <tianyuanhao3@163.com>
Diffstat (limited to 'iscsiuio/meson.build')
-rw-r--r--iscsiuio/meson.build123
1 files changed, 123 insertions, 0 deletions
diff --git a/iscsiuio/meson.build b/iscsiuio/meson.build
new file mode 100644
index 0000000..c9d2981
--- /dev/null
+++ b/iscsiuio/meson.build
@@ -0,0 +1,123 @@
+#
+# meson control file for iscsiuio
+#
+# this file is meant to be more-or-less standalone, so
+# all work is done from here, not requiring anything from
+# the parallel open-iscsi directories, except an include file (iscsi_if.h)
+#
+
+# TODO: setup handling systemd vs no-systemd
+
+
+subdir('src')
+subdir('docs')
+
+log_rotate_dir = get_option('sysconfdir') / 'logrotate.d'
+
+#
+# our VERSION
+#
+iscsiuio_version = '0.7.8.6'
+release_template = '-DPACKAGE_VERSION="@0@"'
+release_str = release_template.format(iscsiuio_version)
+
+#
+# set up include directories
+#
+src_uip_inc = include_directories('src/uip')
+src_unix_inc = include_directories('src/unix')
+src_unix_libs_inc = include_directories('src/unix/libs')
+src_apps_dhcpc_inc = include_directories('src/apps/dhcpc')
+src_apps_brcm_iscsi_inc = include_directories('src/apps/brcm-iscsi')
+# make nice names for the stuff outside of our tree (in open-iscsi tree)
+open_iscsi_include_inc = main_inc
+open_iscsi_usr_inc = usr_inc
+
+#
+# C arguments
+#
+iscsiuio_c_args = [release_str]
+if no_systemd
+ iscsiuio_c_args += '-DNO_SYSTEMD'
+endif
+
+#
+# build the all the static libs that we will need
+#
+
+lib_apps_dhcpc = static_library('apps_dhcpc', dhcpc_srcs,
+ include_directories: [src_uip_inc, src_unix_inc, open_iscsi_include_inc])
+
+lib_apps_brcm_iscsi = static_library('apps_brcm_iscsi', brcm_iscsi_srcs,
+ include_directories: [src_uip_inc, src_unix_inc, open_iscsi_include_inc])
+
+lib_iscsi_uip = static_library('iscsi_uip', lib_iscsi_uip_srcs,
+ include_directories: [
+ src_unix_inc,
+ src_apps_dhcpc_inc,
+ src_uip_inc,
+ open_iscsi_include_inc,
+ src_apps_brcm_iscsi_inc])
+
+lib_iscsiuio_hw_cnic = static_library('iscsiuio_hw_cnic',
+ lib_iscsiuio_hw_cnic_srcs,
+ include_directories: [
+ src_uip_inc,
+ src_unix_inc,
+ open_iscsi_include_inc,
+ open_iscsi_usr_inc],
+ c_args: iscsiuio_c_args)
+
+#
+# finally, build the iscsiuo binary
+#
+
+# set up dependencies
+dhcpc_dep = declare_dependency(link_with: lib_apps_dhcpc)
+brcm_dep = declare_dependency(link_with: lib_apps_brcm_iscsi)
+iscsi_uip_dep = declare_dependency(link_with: lib_iscsi_uip)
+iscsiuio_hw_cnic_dep = declare_dependency(link_with: lib_iscsiuio_hw_cnic)
+pthread_dep = dependency('threads')
+
+iscsiuio_deps = [
+ dhcpc_dep,
+ brcm_dep,
+ iscsi_uip_dep,
+ iscsiuio_hw_cnic_dep,
+ sysdeps_dep,
+ pthread_dep]
+
+if not no_systemd
+ iscsiuio_deps += systemd_dep
+endif
+
+# build the binary itself
+iscsiuio = executable('iscsiuio',
+ [iscsiuio_srcs, build_date_src, build_date_inc],
+ dependencies: iscsiuio_deps,
+ include_directories: [
+ src_uip_inc,
+ src_apps_dhcpc_inc,
+ src_unix_inc,
+ open_iscsi_include_inc,
+ open_iscsi_usr_inc,
+ src_unix_libs_inc,
+ src_apps_brcm_iscsi_inc],
+ c_args: iscsiuio_c_args,
+ install: true,
+ install_dir: iscsi_sbindir)
+
+# now make a symlink (only works on newer meson versions)
+if meson.version().version_compare('>= 0.61.0')
+ install_symlink('brcm_iscsiuio',
+ install_dir: iscsi_sbindir,
+ pointing_to: 'iscsiuio')
+else
+ warning('You must create the brcm_iscsiuio->iscsiuio symlink yourself in this version of meson.')
+endif
+
+# install uiolog
+install_data(files('iscsiuiolog'), install_dir: log_rotate_dir)
+
+# install man page
+install_man(iscsiuio_doc_man_page_src, install_dir: man_dir_8)