xref: /aosp_15_r20/external/coreboot/util/intelmetool/Makefile (revision b9411a12aaaa7e1e6a6fb7c5e057f44ee179a49c)
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