From 89fcd717a60e7a6440b56ff7c82b5eeb80b92a2f Mon Sep 17 00:00:00 2001 From: Dylan Baker Date: Wed, 19 Sep 2018 16:15:41 -0700 Subject: Add a meson build system I believe this is correct and complete, but I could have missed something on non-linux OSes. Reviewed-by: Eric Anholt --- man/meson.build | 32 +++++++++++++ meson.build | 134 ++++++++++++++++++++++++++++++++++++++++++++++++++++ meson_options.txt | 37 +++++++++++++++ scanpci/meson.build | 25 ++++++++++ src/meson.build | 67 ++++++++++++++++++++++++++ 5 files changed, 295 insertions(+) create mode 100644 man/meson.build create mode 100644 meson.build create mode 100644 meson_options.txt create mode 100644 scanpci/meson.build create mode 100644 src/meson.build diff --git a/man/meson.build b/man/meson.build new file mode 100644 index 0000000..71a6a6c --- /dev/null +++ b/man/meson.build @@ -0,0 +1,32 @@ +# Copyright © 2020 Intel Corporation + +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +custom_target( + 'scanpci.1', + input : 'scanpci.man', + output : 'scanpci.1', + command : [ + find_program('sed'), '-e', 's/__xorgversion__/X Version 11/', '@INPUT@', + ], + capture : true, + install : true, + install_dir : join_paths(get_option('prefix'), get_option('mandir'), '1'), +) + diff --git a/meson.build b/meson.build new file mode 100644 index 0000000..9936f81 --- /dev/null +++ b/meson.build @@ -0,0 +1,134 @@ +# Copyright © 2018-2020 Intel Corporation + +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +project( + 'libpciaccess', + ['c'], + version : '0.16', + license : 'MIT', + meson_version : '>= 0.48.0', + default_options : ['buildtype=debugoptimized'], +) + +c = meson.get_compiler('c') + +add_project_arguments( + c.get_supported_arguments( + '-Wpointer-arith', + '-Wmissing-declarations', + '-Wformat=2', + '-Wstrict-prototypes', + '-Wmissing-prototypes', + '-Wnested-externs', + '-Wbad-function-cast', + '-Wold-style-definition', + '-Wdeclaration-after-statement', + '-Wunused', + '-Wuninitialized', + '-Wshadow', + '-Wmissing-noreturn', + '-Wmissing-format-attribute', + '-Wredundant-decls', + '-Wlogical-op', + '-Werror=implicit', + '-Werror=nonnull', + '-Werror=init-self', + '-Werror=main', + '-Werror=missing-braces', + '-Werror=sequence-point', + '-Werror=return-type', + '-Werror=trigraphs', + '-Werror=array-bounds', + '-Werror=write-strings', + '-Werror=address', + '-Werror=int-to-pointer-cast', + ), + language : 'c' +) + +config = configuration_data() + +config.set_quoted( + 'PCIIDS_PATH', + join_paths(get_option('prefix'), get_option('datadir'), get_option('pci-ids')) +) +if get_option('linux-rom-fallback') + config.set('LINUX_ROM', 1) +endif + +dep_zlib = dependency('zlib', required : get_option('zlib')) +if dep_zlib.found() + config.set('HAVE_ZLIB', 1) +endif + +extra_libs = [] +if host_machine.system() == 'netbsd' + extra_libs += c.find_library('pci') + if host_machine.cpu_family() == 'x86' + extra_libs += c.find_library('i386') + elif host_machine.cpu_family() == 'x86_64' + extra_libs += c.find_library('x86_64') + elif host_machine.cpu_family() == 'alpha' # TODO + extra_libs += c.find_library('alpha') + endif +elif host_machine.system() == 'sunos' + extra_libs += c.find_library('devinfo') +endif + +if host_machine.system() == 'netbsd' + _prefix = '' + if c.check_header('machine/sysarch.h') + _prefix = ''' + #include + #include + ''' + endif + + if c.check_header('machine/mtrr.h', prefix : _prefix) + config.set('HAVE_MTRR', 1) + endif +elif c.check_header('asm/mtrr.h') + config.set('HAVE_MTRR', 1) +endif + +foreach h : ['err.h', 'stdint.h', 'string.h', 'strings.h', 'inttypes.h'] + if c.check_header(h) + config.set('HAVE_' + h.to_upper().underscorify(), 1) + endif +endforeach + +config_h = configure_file( + configuration : config, + output : 'config.h', +) +add_project_arguments('-DHAVE_CONFIG_H', language : ['c']) + +install_headers('include/pciaccess.h') +inc_include = include_directories('.', 'include') + +subdir('src') +subdir('scanpci') +subdir('man') + +pkg = import('pkgconfig') +pkg.generate( + libpciaccess, + description : 'Library providing generic access to the PCI bus and devices', +) diff --git a/meson_options.txt b/meson_options.txt new file mode 100644 index 0000000..a3c8211 --- /dev/null +++ b/meson_options.txt @@ -0,0 +1,37 @@ +# Copyright © 2020 Intel Corpration + +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +option( + 'pci-ids', + type : 'string', + value : 'hwdata', + description : 'path to pci ids. If relative is assumed relative to $datadir.', +) +option( + 'linux-rom-fallback', + type : 'boolean', + value : false, + description : 'Enable support for falling back to /dev/mem for roms', +) +option( + 'zlib', + type : 'feature', + description : 'Enable zlib support to read gzip compressed pci.ids.', +) diff --git a/scanpci/meson.build b/scanpci/meson.build new file mode 100644 index 0000000..6ae1d6a --- /dev/null +++ b/scanpci/meson.build @@ -0,0 +1,25 @@ +# Copyright © 2018-2020 Intel Corporation + +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +scanpci = executable( + 'scanpci', + 'scanpci.c', + dependencies : [dep_pciaccess], +) diff --git a/src/meson.build b/src/meson.build new file mode 100644 index 0000000..6ee11ea --- /dev/null +++ b/src/meson.build @@ -0,0 +1,67 @@ +# Copyright © 2020 Intel Corporation + +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +host = host_machine.system() +_pci_access_host_files = [] +if host == 'linux' + _pci_access_host_files += ['linux_sysfs.c', 'linux_devmem.c', 'common_vgaarb.c'] +elif host == 'freebsd' + _pci_access_host_files += ['freebsd_pci.c', 'common_vgaarb_stub.c'] +elif host == 'netbsd' + _pci_access_host_files += ['netbsd_pci.c', 'common_vgaarb_stub.c'] +elif host == 'openbsd' + _pci_access_host_files += ['openbsd_pci.c'] # VGA arbiter code is in netbsd_pci.c +elif host == 'cygwin' + _pci_access_host_files += ['x86_pci.c', 'common_vgaarb_stub.c'] +elif host == 'sunos' + _pci_access_host_files += ['solx_devfs.c', 'common_vgaarb_stub.c'] +elif host == 'gnu' + _pci_access_host_files += ['hurd_pci.c', 'x86_pci.c', 'common_vgaarb_stub.c'] +endif + +inc_src = include_directories('.') + +libpciaccess = shared_library( + 'pciaccess', + [ + 'common_bridge.c', + 'common_iterator.c', + 'common_init.c', + 'common_interface.c', + 'common_io.c', + 'common_capability.c', + 'common_device_name.c', + 'common_map.c', + _pci_access_host_files, + config_h, + ], + include_directories : inc_include, + dependencies : [dep_zlib, extra_libs], + version : '0.11.1' +) + +dep_pciaccess = declare_dependency( + link_with : libpciaccess, + include_directories : [include_directories('.'), inc_include] +) + +if meson.version().version_compare('>= 0.54.0') + meson.override_dependency('pciaccess', dep_pciaccess) +endif \ No newline at end of file -- cgit v1.2.3