summaryrefslogtreecommitdiff
path: root/iscsiuio
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
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')
-rw-r--r--iscsiuio/README13
-rw-r--r--iscsiuio/docs/meson.build6
-rw-r--r--iscsiuio/meson.build123
-rw-r--r--iscsiuio/src/apps/brcm-iscsi/meson.build5
-rw-r--r--iscsiuio/src/apps/dhcpc/meson.build5
-rw-r--r--iscsiuio/src/apps/meson.build6
-rw-r--r--iscsiuio/src/meson.build7
-rw-r--r--iscsiuio/src/uip/meson.build13
-rwxr-xr-xiscsiuio/src/unix/build_date.sh54
-rw-r--r--iscsiuio/src/unix/libs/meson.build10
-rw-r--r--iscsiuio/src/unix/meson.build30
11 files changed, 266 insertions, 6 deletions
diff --git a/iscsiuio/README b/iscsiuio/README
index 53b700c..983b9d0 100644
--- a/iscsiuio/README
+++ b/iscsiuio/README
@@ -47,12 +47,13 @@ Directory Structure of this Package:
Compiling / Installing
=======================================
-1. Please untar the tarball.
-2. Run the configure script. This will create the Makefiles and proper
- header files needed for the build.
-3. Run 'make'. This will create the binary, 'iscsiuio'
-4. Run 'make install' to place the binaries in their installed location.
- (The default location is '/sbin')
+This gets built as part of open-iscsi, using meson, by default. The
+old (deprecated) autoconf build system is still in place, for now, and
+can be used with something like:
+
+ ./configure [--sbindir="/usr/sbin"]
+ make
+ make install
iscsid IFACE Configuration File:
=======================================
diff --git a/iscsiuio/docs/meson.build b/iscsiuio/docs/meson.build
new file mode 100644
index 0000000..459b223
--- /dev/null
+++ b/iscsiuio/docs/meson.build
@@ -0,0 +1,6 @@
+#
+# meson build file for iscsiuio/docs
+#
+
+iscsiuio_doc_man_page_name = 'iscsiuio.8'
+iscsiuio_doc_man_page_src = files('iscsiuio.8')
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)
diff --git a/iscsiuio/src/apps/brcm-iscsi/meson.build b/iscsiuio/src/apps/brcm-iscsi/meson.build
new file mode 100644
index 0000000..57a5b1f
--- /dev/null
+++ b/iscsiuio/src/apps/brcm-iscsi/meson.build
@@ -0,0 +1,5 @@
+#
+# meson control file for iscsiuio/src/apps/brcm-iscsi
+#
+
+brcm_iscsi_srcs = files('brcm_iscsi.c')
diff --git a/iscsiuio/src/apps/dhcpc/meson.build b/iscsiuio/src/apps/dhcpc/meson.build
new file mode 100644
index 0000000..96133e3
--- /dev/null
+++ b/iscsiuio/src/apps/dhcpc/meson.build
@@ -0,0 +1,5 @@
+#
+# meson control file for iscsiuio/src/apps/dhcpc -- for DHCP and DHCPv6
+#
+
+dhcpc_srcs = files('dhcpc.c', 'dhcpv6.c')
diff --git a/iscsiuio/src/apps/meson.build b/iscsiuio/src/apps/meson.build
new file mode 100644
index 0000000..9a982ac
--- /dev/null
+++ b/iscsiuio/src/apps/meson.build
@@ -0,0 +1,6 @@
+#
+# meson build file for iscsiuio/src/apps
+#
+
+subdir('dhcpc')
+subdir('brcm-iscsi')
diff --git a/iscsiuio/src/meson.build b/iscsiuio/src/meson.build
new file mode 100644
index 0000000..967c22e
--- /dev/null
+++ b/iscsiuio/src/meson.build
@@ -0,0 +1,7 @@
+#
+# meson build file for iscsiuio/src -- where the iscsiuio binary comes from
+#
+
+subdir('apps')
+subdir('uip')
+subdir('unix')
diff --git a/iscsiuio/src/uip/meson.build b/iscsiuio/src/uip/meson.build
new file mode 100644
index 0000000..4c4b2f7
--- /dev/null
+++ b/iscsiuio/src/uip/meson.build
@@ -0,0 +1,13 @@
+#
+# meson build file for iscsiuio/src/uip
+#
+
+lib_iscsi_uip_srcs = files(
+ 'uip.c',
+ 'uip_arp.c',
+ 'psock.c',
+ 'timer.c',
+ 'uip-neighbor.c',
+ 'uip_eth.c',
+ 'ipv6_ndpc.c',
+ 'ipv6.c')
diff --git a/iscsiuio/src/unix/build_date.sh b/iscsiuio/src/unix/build_date.sh
new file mode 100755
index 0000000..65888fe
--- /dev/null
+++ b/iscsiuio/src/unix/build_date.sh
@@ -0,0 +1,54 @@
+#!/bin/bash
+#
+# build the build_date.c and build_date.h files
+#
+# (bash required for getopts)
+#
+
+THIS_CMD=${0##*/}
+
+usage()
+{
+ echo "Usage: $THIS_CMD [OPTIONS]"
+ echo "Where OPTIONS are from:"
+ echo " -c OUT_SOURCE create C source file OUT_SOURCE with the date"
+ echo " -i OUT_HEADER create C include file OUT_HEADER for the date file"
+ echo " -S EPOCH_DATE_NUMBER use '--date=@EPOCH_DATE_NUMBER' to set date (repeatable builds)"
+ echo "Also sets EPOCH date number from SOURCE_DATE_EPOCH if set in the environment"
+}
+
+generate_source_file()
+{
+ outfile="$1"
+ if [ -n "$SOURCE_DATE_EPOCH" ] ; then
+ echo 'char *build_date = "'`LC_ALL=C.UTF-8 date --date=@$SOURCE_DATE_EPOCH -u`'";' >"$outfile"
+ else
+ echo 'char *build_date = "'`date`'";' >"$outfile"
+ fi
+}
+
+generate_include_file()
+{
+ outfile="$1"
+ echo 'extern char *build_date;' >"$outfile"
+}
+
+do_source=
+do_include=
+
+while getopts :c:i:S:h opt; do
+ case "$opt" in
+ c) do_source="$OPTARG" ;;
+ i) do_include="$OPTARG" ;;
+ S) SOURCE_DATE_EPOCH="$OPTARG" ;;
+ h) usage; exit 0 ;;
+ ?) echo "unknown option" 1>&2; usage; exit 1 ;;
+ esac
+done
+
+if [ -n "$do_source" ]; then
+ generate_source_file $do_source
+fi
+if [ -n "$do_include" ]; then
+ generate_include_file $do_include
+fi
diff --git a/iscsiuio/src/unix/libs/meson.build b/iscsiuio/src/unix/libs/meson.build
new file mode 100644
index 0000000..8f49a52
--- /dev/null
+++ b/iscsiuio/src/unix/libs/meson.build
@@ -0,0 +1,10 @@
+#
+# meson build file for iscsiuio/src/unix/libs
+#
+
+
+lib_iscsiuio_hw_cnic_srcs = files(
+ 'cnic.c',
+ 'bnx2.c',
+ 'bnx2x.c',
+ 'qedi.c')
diff --git a/iscsiuio/src/unix/meson.build b/iscsiuio/src/unix/meson.build
new file mode 100644
index 0000000..bc3f13f
--- /dev/null
+++ b/iscsiuio/src/unix/meson.build
@@ -0,0 +1,30 @@
+#
+# meson build file for iscsiuio/src/unix
+#
+
+# build date files since 'libs' needs them
+
+build_date_cmd = find_program('build_date.sh')
+
+build_date_src = custom_target('build_date.c',
+ output: 'build_date.c',
+ command: [build_date_cmd, '-c', '@OUTPUT@'])
+
+build_date_inc = custom_target('build_date.h',
+ output: 'build_date.h',
+ command: [build_date_cmd, '-i', '@OUTPUT@'])
+
+subdir('libs')
+
+iscsiuio_srcs = files(
+ 'main.c',
+ 'clock-arch.c',
+ 'logger.c',
+ 'nic.c',
+ 'nic_id.c',
+ 'nic_vlan.c',
+ 'nic_nl.c',
+ 'nic_utils.c',
+ 'packet.c',
+ 'iscsid_ipc.c',
+ 'ping.c')