# # 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 -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 __NetBSD__ #include #else #include #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 __NetBSD__ #include #else #include #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 #include int main(int argc, char **argv) { (void)argc; (void)argv; libusb_init(NULL); return 0; } endef export LIBUSB1_TEST define LIBJAYLINK_TEST #include #include int main(int argc, char **argv) { struct jaylink_context *ctx; (void)argc; (void)argv; jaylink_init(&ctx); jaylink_exit(ctx); return 0; } endef export LIBJAYLINK_TEST define NI845X_TEST #include int main(int argc, char **argv) { (void) argc; (void) argv; char I2C_Device[256]; NiHandle Dev_Handle; uInt32 NumberFound = 0; ni845xFindDevice(I2C_Device, &Dev_Handle, &NumberFound); ni845xCloseFindDeviceHandle(Dev_Handle); return 0; } endef export NI845X_TEST