xref: /aosp_15_r20/external/crosvm/third_party/minigbm/Makefile (revision d95af8df99a05bcb8679a54dc3ab8e5cd312b38e)
1# Copyright 2014 The Chromium OS Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5include common.mk
6
7PC_DEPS = libdrm
8PC_CFLAGS := $(shell $(PKG_CONFIG) --cflags $(PC_DEPS))
9PC_LIBS := $(shell $(PKG_CONFIG) --libs $(PC_DEPS))
10
11CPPFLAGS += -D_GNU_SOURCE=1
12CFLAGS += -std=c99 -Wall -Wsign-compare -Wpointer-arith -Wcast-qual \
13	  -Wcast-align -D_GNU_SOURCE=1 -D_FILE_OFFSET_BITS=64
14
15# Dependencies that all gtest based unittests should have.
16UNITTEST_LIBS := -lcap -lgtest -lgmock
17UNITTEST_DEPS := gbm_unittest.o testrunner.o gbm.o dri.o drv_array_helpers.o drv_helpers.o drv.o backend_mock.o virtgpu_cross_domain.o virtgpu_virgl.o virtgpu.o msm.o vc4.o amdgpu.o i915.o mediatek.o dumb_driver.o
18
19ifdef DRV_AMDGPU
20	CFLAGS += $(shell $(PKG_CONFIG) --cflags libdrm_amdgpu)
21	LDLIBS += -ldrm_amdgpu -ldl
22endif
23ifdef DRV_I915
24	CFLAGS += $(shell $(PKG_CONFIG) --cflags libdrm_intel)
25endif
26ifdef DRV_MESON
27	CFLAGS += $(shell $(PKG_CONFIG) --cflags libdrm_meson)
28endif
29ifdef DRV_MSM
30	CFLAGS += -ldl
31endif
32ifdef DRV_RADEON
33	CFLAGS += $(shell $(PKG_CONFIG) --cflags libdrm_radeon)
34endif
35ifdef DRV_ROCKCHIP
36	CFLAGS += $(shell $(PKG_CONFIG) --cflags libdrm_rockchip)
37endif
38ifdef DRV_VC4
39	CFLAGS += $(shell $(PKG_CONFIG) --cflags libdrm_vc4)
40endif
41
42CPPFLAGS += $(PC_CFLAGS)
43LDLIBS += $(PC_LIBS)
44
45DESTDIR ?= $(OUT)/install
46LIBDIR ?= /usr/lib
47INCLUDEDIR ?= /usr/include
48
49MINIGBM_VERSION_MAJOR := 1
50MINIGBM_VERSION := $(MINIGBM_VERSION_MAJOR).0.0
51MINIGBM_FILENAME := libminigbm.so.$(MINIGBM_VERSION)
52
53CC_LIBRARY($(MINIGBM_FILENAME)): LDFLAGS += -Wl,-soname,libgbm.so.$(MINIGBM_VERSION_MAJOR)
54CC_LIBRARY($(MINIGBM_FILENAME)): $(C_OBJECTS) pkgconfig
55CC_STATIC_LIBRARY(libminigbm.pie.a): $(C_OBJECTS)
56
57all: CC_LIBRARY($(MINIGBM_FILENAME))
58
59clean: CLEAN($(MINIGBM_FILENAME))
60
61CXX_BINARY(gbm_unittest): CXXFLAGS += -Wno-write-strings \
62						$(GTEST_CXXFLAGS)
63CXX_BINARY(gbm_unittest): LDLIBS += $(UNITTEST_LIBS)
64CXX_BINARY(gbm_unittest): $(UNITTEST_DEPS)
65clean: CLEAN(gbm_unittest)
66tests: TEST(CXX_BINARY(gbm_unittest))
67
68define pkgconfig_contents
69prefix=$(DESTDIR)
70exec_prefix=$${prefix}
71includedir=$${prefix}/$(INCLUDEDIR)
72libdir=$${prefix}/$(LIBDIR)
73
74Name: libgbm
75Description: A small gbm implementation
76Version: 18.0.0
77Cflags: -I$${includedir}
78Libs: -L$${libdir} -lgbm
79Requires.private: libdrm >= 2.4.50
80endef
81
82.PHONY: pkgconfig
83pkgconfig:
84	@echo "generating $(OUT)gbm.pc"
85	$(file > $(OUT)/gbm.pc,$(pkgconfig_contents))
86clean:
87	rm -f $(OUT)gbm.pc
88
89install: all
90	mkdir -p $(DESTDIR)/$(LIBDIR)
91	install -D -m 755 $(OUT)/$(MINIGBM_FILENAME) $(DESTDIR)/$(LIBDIR)
92	ln -sf $(MINIGBM_FILENAME) $(DESTDIR)/$(LIBDIR)/libgbm.so
93	ln -sf $(MINIGBM_FILENAME) $(DESTDIR)/$(LIBDIR)/libgbm.so.$(MINIGBM_VERSION_MAJOR)
94	ln -sf $(MINIGBM_FILENAME) $(DESTDIR)/$(LIBDIR)/libgbm.so.$(MINIGBM_VERSION)
95	install -D -m 0644 $(OUT)/gbm.pc $(DESTDIR)/$(LIBDIR)/pkgconfig/gbm.pc
96	install -D -m 0644 $(SRC)/gbm.h $(DESTDIR)/$(INCLUDEDIR)/gbm.h
97	install -D -m 0644 $(SRC)/minigbm_helpers.h $(DESTDIR)/$(INCLUDEDIR)/minigbm/minigbm_helpers.h
98