| # |
| # This file is part of the flashrom project. |
| # |
| # This program is free software; you can redistribute it and/or modify |
| # it under the terms of the GNU General Public License as published by |
| # the Free Software Foundation; version 2 of the License. |
| # |
| # This program is distributed in the hope that it will be useful, |
| # but WITHOUT ANY WARRANTY; without even the implied warranty of |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| # GNU General Public License for more details. |
| # |
| |
| # Here are functions and macros defined for the Makefile |
| |
| define mark_unsupported |
| $(foreach p,$1, \ |
| $(if $(filter $($(p)),yes), \ |
| $(eval UNSUPPORTED_FEATURES += $(p)=yes), \ |
| $(eval override $(p) := no))) |
| endef |
| |
| define filter_deps |
| $(strip $(foreach p,$1, \ |
| $(if $(filter $($(p)),yes), \ |
| $(p)))) |
| endef |
| |
| define disable_all |
| $(foreach p,$1, \ |
| $(eval override $(p) := no)) |
| endef |
| |
| # Run the C Preprocessor with file $1 and return the last line, removing quotes. |
| define c_macro_test |
| $(strip $(call debug_shell, $(CC) -E $1 | tail -n 1 | tr -d '"')) |
| endef |
| |
| define c_compile_test # $1: files to compile, $2: cflags |
| $(call debug_shell, $(CC) -c -Wall -Werror $2 $1 -o /dev/null && echo yes || echo no) |
| endef |
| |
| define find_dependency |
| $(call debug_shell, $(if $(PKG_CONFIG_LIBDIR),PKG_CONFIG_LIBDIR=$(PKG_CONFIG_LIBDIR),) $(PKG_CONFIG) --exists $1 && echo yes || echo no) |
| endef |
| |
| define dependency_cflags |
| $(call debug_shell, $(if $(PKG_CONFIG_LIBDIR),PKG_CONFIG_LIBDIR=$(PKG_CONFIG_LIBDIR),) $(PKG_CONFIG) --cflags $1 2>/dev/null) |
| endef |
| |
| define dependency_ldflags |
| $(call debug_shell, $(if $(PKG_CONFIG_LIBDIR),PKG_CONFIG_LIBDIR=$(PKG_CONFIG_LIBDIR),) $(PKG_CONFIG) --libs $1 2>/dev/null) |
| endef |
| |
| define LIBPCI_TEST |
| /* Avoid a failing test due to libpci header symbol shadowing breakage */ |
| #define index shadow_workaround_index |
| #if !defined PCIUTILS_PCI_H |
| #include <pci/pci.h> |
| #else |
| #include <pciutils/pci.h> |
| #endif |
| struct pci_access *pacc; |
| int main(int argc, char **argv) |
| { |
| (void) argc; |
| (void) argv; |
| pacc = pci_alloc(); |
| return 0; |
| } |
| endef |
| export LIBPCI_TEST |
| |
| define PCI_GET_DEV_TEST |
| /* Avoid a failing test due to libpci header symbol shadowing breakage */ |
| #define index shadow_workaround_index |
| #if !defined PCIUTILS_PCI_H |
| #include <pci/pci.h> |
| #else |
| #include <pciutils/pci.h> |
| #endif |
| struct pci_access *pacc; |
| struct pci_dev *dev = {0}; |
| int main(int argc, char **argv) |
| { |
| (void) argc; |
| (void) argv; |
| pacc = pci_alloc(); |
| dev = pci_get_dev(pacc, dev->domain, dev->bus, dev->dev, 1); |
| return 0; |
| } |
| endef |
| export PCI_GET_DEV_TEST |
| |
| define LIBUSB1_TEST |
| #include <stddef.h> |
| #include <libusb.h> |
| int main(int argc, char **argv) |
| { |
| (void)argc; |
| (void)argv; |
| libusb_init(NULL); |
| return 0; |
| } |
| endef |
| export LIBUSB1_TEST |