Commit 89fcd717 authored by Dylan Baker's avatar Dylan Baker
Browse files

Add a meson build system



I believe this is correct and complete, but I could have missed
something on non-linux OSes.
Reviewed-by: Emma Anholt's avatarEric Anholt <eric@anholt.net>
parent 1ebcfe91
# 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'),
)
# 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',
)
# 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.',
)
# 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],
)
# 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
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment