summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDylan Baker <dylan@pnwbakers.com>2018-09-19 16:15:41 -0700
committerDylan Baker <dylan@pnwbakers.com>2020-11-02 08:00:48 -0800
commit89fcd717a60e7a6440b56ff7c82b5eeb80b92a2f (patch)
treeb85f1cbc42b2cb7119ff999c591f379336dd3782
parent1ebcfe918a0da46a5b7ab44fc3ec0e6c65f98043 (diff)
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 <eric@anholt.net>
-rw-r--r--man/meson.build32
-rw-r--r--meson.build134
-rw-r--r--meson_options.txt37
-rw-r--r--scanpci/meson.build25
-rw-r--r--src/meson.build67
5 files changed, 295 insertions, 0 deletions
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 <sys/types.h>
+ #include <machine/sysarch.h>
+ '''
+ 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