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