| # Copyright 2014 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| include common.mk |
| |
| PC_DEPS = libdrm |
| PC_CFLAGS := $(shell $(PKG_CONFIG) --cflags $(PC_DEPS)) |
| PC_LIBS := $(shell $(PKG_CONFIG) --libs $(PC_DEPS)) |
| |
| CPPFLAGS += -D_GNU_SOURCE=1 |
| CFLAGS += -std=c99 -Wall -Wsign-compare -Wpointer-arith -Wcast-qual \ |
| -Wcast-align -D_GNU_SOURCE=1 -D_FILE_OFFSET_BITS=64 |
| |
| # Dependencies that all gtest based unittests should have. |
| UNITTEST_LIBS := -lcap -lgtest -lgmock |
| UNITTEST_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 |
| |
| ifdef DRV_AMDGPU |
| CFLAGS += $(shell $(PKG_CONFIG) --cflags libdrm_amdgpu) |
| LDLIBS += -ldrm_amdgpu -ldl |
| endif |
| ifdef DRV_I915 |
| CFLAGS += $(shell $(PKG_CONFIG) --cflags libdrm_intel) |
| endif |
| ifdef DRV_MESON |
| CFLAGS += $(shell $(PKG_CONFIG) --cflags libdrm_meson) |
| endif |
| ifdef DRV_MSM |
| CFLAGS += -ldl |
| endif |
| ifdef DRV_RADEON |
| CFLAGS += $(shell $(PKG_CONFIG) --cflags libdrm_radeon) |
| endif |
| ifdef DRV_ROCKCHIP |
| CFLAGS += $(shell $(PKG_CONFIG) --cflags libdrm_rockchip) |
| endif |
| ifdef DRV_VC4 |
| CFLAGS += $(shell $(PKG_CONFIG) --cflags libdrm_vc4) |
| endif |
| |
| CPPFLAGS += $(PC_CFLAGS) |
| LDLIBS += $(PC_LIBS) |
| |
| DESTDIR ?= $(OUT)/install |
| LIBDIR ?= /usr/lib |
| INCLUDEDIR ?= /usr/include |
| |
| MINIGBM_VERSION_MAJOR := 1 |
| MINIGBM_VERSION := $(MINIGBM_VERSION_MAJOR).0.0 |
| MINIGBM_FILENAME := libminigbm.so.$(MINIGBM_VERSION) |
| |
| CC_LIBRARY($(MINIGBM_FILENAME)): LDFLAGS += -Wl,-soname,libgbm.so.$(MINIGBM_VERSION_MAJOR) |
| CC_LIBRARY($(MINIGBM_FILENAME)): $(C_OBJECTS) pkgconfig |
| CC_STATIC_LIBRARY(libminigbm.pie.a): $(C_OBJECTS) |
| |
| all: CC_LIBRARY($(MINIGBM_FILENAME)) |
| |
| clean: CLEAN($(MINIGBM_FILENAME)) |
| |
| CXX_BINARY(gbm_unittest): CXXFLAGS += -Wno-write-strings \ |
| $(GTEST_CXXFLAGS) |
| CXX_BINARY(gbm_unittest): LDLIBS += $(UNITTEST_LIBS) |
| CXX_BINARY(gbm_unittest): $(UNITTEST_DEPS) |
| clean: CLEAN(gbm_unittest) |
| tests: TEST(CXX_BINARY(gbm_unittest)) |
| |
| define pkgconfig_contents |
| prefix=$(DESTDIR) |
| exec_prefix=$${prefix} |
| includedir=$${prefix}/$(INCLUDEDIR) |
| libdir=$${prefix}/$(LIBDIR) |
| |
| Name: libgbm |
| Description: A small gbm implementation |
| Version: 18.0.0 |
| Cflags: -I$${includedir} |
| Libs: -L$${libdir} -lgbm |
| Requires.private: libdrm >= 2.4.50 |
| endef |
| |
| .PHONY: pkgconfig |
| pkgconfig: |
| @echo "generating $(OUT)gbm.pc" |
| $(file > $(OUT)/gbm.pc,$(pkgconfig_contents)) |
| clean: |
| rm -f $(OUT)gbm.pc |
| |
| install: all |
| mkdir -p $(DESTDIR)/$(LIBDIR) |
| install -D -m 755 $(OUT)/$(MINIGBM_FILENAME) $(DESTDIR)/$(LIBDIR) |
| ln -sf $(MINIGBM_FILENAME) $(DESTDIR)/$(LIBDIR)/libgbm.so |
| ln -sf $(MINIGBM_FILENAME) $(DESTDIR)/$(LIBDIR)/libgbm.so.$(MINIGBM_VERSION_MAJOR) |
| ln -sf $(MINIGBM_FILENAME) $(DESTDIR)/$(LIBDIR)/libgbm.so.$(MINIGBM_VERSION) |
| install -D -m 0644 $(OUT)/gbm.pc $(DESTDIR)/$(LIBDIR)/pkgconfig/gbm.pc |
| install -D -m 0644 $(SRC)/gbm.h $(DESTDIR)/$(INCLUDEDIR)/gbm.h |
| install -D -m 0644 $(SRC)/minigbm_helpers.h $(DESTDIR)/$(INCLUDEDIR)/minigbm/minigbm_helpers.h |