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/meson.build | |
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/meson.build')
-rw-r--r-- | iscsiuio/meson.build | 123 |
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) |