diff options
author | Lee Duncan <lduncan@suse.com> | 2022-09-21 09:33:56 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-21 09:33:56 -0700 |
commit | 531039d15c3fe34fcd373d0923e0c7a34786c58c (patch) | |
tree | 0948146a9f7ae95fbcf081550504a8d0d8aa55f5 /iscsiuio | |
parent | 7726ecc89015edb49057473a605c63ac9354f5cb (diff) | |
download | open-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/README | 13 | ||||
-rw-r--r-- | iscsiuio/docs/meson.build | 6 | ||||
-rw-r--r-- | iscsiuio/meson.build | 123 | ||||
-rw-r--r-- | iscsiuio/src/apps/brcm-iscsi/meson.build | 5 | ||||
-rw-r--r-- | iscsiuio/src/apps/dhcpc/meson.build | 5 | ||||
-rw-r--r-- | iscsiuio/src/apps/meson.build | 6 | ||||
-rw-r--r-- | iscsiuio/src/meson.build | 7 | ||||
-rw-r--r-- | iscsiuio/src/uip/meson.build | 13 | ||||
-rwxr-xr-x | iscsiuio/src/unix/build_date.sh | 54 | ||||
-rw-r--r-- | iscsiuio/src/unix/libs/meson.build | 10 | ||||
-rw-r--r-- | iscsiuio/src/unix/meson.build | 30 |
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') |