1# SPDX-License-Identifier: GPL-2.0-or-later 2 3PROGRAM = intelmetool 4 5TOP ?= $(abspath ../..) 6CC ?= gcc 7INSTALL ?= /usr/bin/env install 8PREFIX ?= /usr/local 9CFLAGS ?= -O0 -g -Wall -Wextra -Wno-unused-parameter -Wno-sign-compare -Wno-unused-function \ 10 -I $(TOP)/src/commonlib/bsd/include 11LDFLAGS += -lpci -lz 12 13OBJS = intelmetool.o me.o me_status.o mmap.o rcba.o msr.o 14 15OS_ARCH = $(shell uname) 16ifeq ($(OS_ARCH), Darwin) 17LDFLAGS += -framework DirectHW 18endif 19ifeq ($(OS_ARCH), FreeBSD) 20CFLAGS += -I/usr/local/include 21LDFLAGS += -L/usr/local/lib 22LIBS = -lz 23endif 24ifeq ($(OS_ARCH), NetBSD) 25CFLAGS += -I/usr/pkg/include 26LDFLAGS += -L/usr/pkg/lib -Wl,-rpath-link,/usr/pkg/lib -lz -lpciutils -lpci -l$(shell uname -p) 27endif 28 29all: pciutils dep $(PROGRAM) 30 31oldarc: CFLAGS += -DOLDARC 32oldarc: all 33 34$(PROGRAM): $(OBJS) 35 $(CC) $(CFLAGS) -o $(PROGRAM) $(OBJS) $(LDFLAGS) 36 37clean: 38 rm -f $(PROGRAM) *.o *~ junit.xml 39 40distclean: clean 41 rm -f .dependencies 42 43dep: 44 @$(CC) $(CFLAGS) -MM *.c > .dependencies 45 46define LIBPCI_TEST 47/* Avoid a failing test due to libpci header symbol shadowing breakage */ 48#define index shadow_workaround_index 49#ifdef __NetBSD__ 50#include <pciutils/pci.h> 51#else 52#include <pci/pci.h> 53#endif 54struct pci_access *pacc; 55int main(int argc, char **argv) 56{ 57 (void) argc; 58 (void) argv; 59 pacc = pci_alloc(); 60 return 0; 61} 62endef 63export LIBPCI_TEST 64 65pciutils: 66 @printf "\nChecking for development libraries: pci and zlib... " 67 @echo "$$LIBPCI_TEST" > .test.c 68 @$(CC) $(CFLAGS) .test.c -o .test $(LDFLAGS) >/dev/null 2>&1 && \ 69 printf "found.\n" || ( printf "not found.\n\n"; \ 70 printf "For RPM based distributions like Fedora, please install pciutils-devel and zlib-devel.\n"; \ 71 printf "For DEB based distributions, please install libpci-dev and zlib1g-dev.\n"; \ 72 rm -f .test.c .test; exit 1) 73 @rm -rf .test.c .test .test.dSYM 74 75install: $(PROGRAM) 76 mkdir -p $(DESTDIR)$(PREFIX)/sbin 77 $(INSTALL) $(PROGRAM) $(DESTDIR)$(PREFIX)/sbin 78 79.PHONY: all clean distclean dep pciutils oldarc 80 81-include .dependencies 82