OUT_DIR ?= . $(info "OUT_DIR : $(OUT_DIR)") CC_FLAG += -I$(OUT_DIR) SHELL := /bin/bash BRANCH_NAME :="$(shell cd $(SRC_PATH);git branch -a | sed -n '/'*'/p')" GIT_VERSION :="$(shell cd $(SRC_PATH);git log | grep commit -m 1 | cut -d' ' -f 2)" COMMIT_CHANGEID="$(shell cd $(SRC_PATH);git log | grep Change-Id -m 1)" COMMIT_PD :="$(shell cd $(SRC_PATH);git log | grep PD\# -m 1)" LAST_CHANGED="$(shell cd $(SRC_PATH);git log | grep Date -m 1)" BUILD_TIME=" $(shell date)" BUILD_NAME=" $(shell echo ${LOGNAME})" ifneq (,$(findstring detached,$(BRANCH_NAME))) # filter commit ID from "* (HEAD detached from 193c4e5f)" RAW_COMMIT := "$(shell echo $(BRANCH_NAME) | sed -n 's/.*detached from \([0-9a-f]\{7,\}\).*/\1/p')" ifneq ($(RAW_COMMIT),) # find remote commit ID brandh REMOTE_BRANCH := "$(shell cd $(SRC_PATH) && git branch -r --contains $(RAW_COMMIT) 2>/dev/null | head -1 | tr -d ' ')" ifneq ($(REMOTE_BRANCH),) BRANCH_NAME := $(REMOTE_BRANCH) endif endif endif VERSION_CFLAGS := -DHAVE_VERSION_INFO VERSION_CFLAGS+=-DBRANCH_NAME=\"${BRANCH_NAME}\" VERSION_CFLAGS+=-DGIT_VERSION=\"${GIT_VERSION}${GIT_DIRTY}\" VERSION_CFLAGS+=-DCOMMIT_CHANGEID=\"${COMMIT_CHANGEID}\" VERSION_CFLAGS+=-DCOMMIT_PD=\"${COMMIT_PD}\" VERSION_CFLAGS+=-DLAST_CHANGED=\"${LAST_CHANGED}\" VERSION_CFLAGS+=-DBUILD_TIME=\"${BUILD_TIME}\" VERSION_CFLAGS+=-DBUILD_NAME=\"${BUILD_NAME}\" CLIENT_LIB = libvideorender_client.so TOOLS_PATH = ../tools VERSION_FILE := ${OUT_DIR}/aml_version.h # If the version file is not exist, use the original file ifeq ($(wildcard $(VERSION_FILE)),) $(shell cp ../aml_version.h.in ${VERSION_FILE}) endif $(info ***makefile support wayland->$(WAYLAND_SUPPORT)) #buildroot or local ifeq ($(WAYLAND_SUPPORT),n) WAYLAND_SUPPORT=n else WAYLAND_SUPPORT=y endif #path set SCANNER_TOOL ?= wayland-scanner PROTOCOL_PATH = wayland-protocol GENERATED_SOURCES = \ $(PROTOCOL_PATH)/linux-dmabuf-unstable-v1-protocol.c \ $(PROTOCOL_PATH)/fullscreen-shell-unstable-v1-protocol.c \ $(PROTOCOL_PATH)/linux-explicit-synchronization-unstable-v1-protocol.c \ $(PROTOCOL_PATH)/xdg-shell-protocol.c \ $(PROTOCOL_PATH)/viewporter-protocol.c \ $(PROTOCOL_PATH)/vpc-protocol.c \ $(PROTOCOL_PATH)/simplebuffer-protocol.c \ $(PROTOCOL_PATH)/simpleshell-protocol.c GENERATED_HEADERS = \ $(PROTOCOL_PATH)/linux-dmabuf-unstable-v1-client-protocol.h \ $(PROTOCOL_PATH)/fullscreen-shell-unstable-v1-client-protocol.h \ $(PROTOCOL_PATH)/linux-explicit-synchronization-unstable-v1-client-protocol.h \ $(PROTOCOL_PATH)/xdg-shell-client-protocol.h \ $(PROTOCOL_PATH)/viewporter-client-protocol.h \ $(PROTOCOL_PATH)/vpc-client-protocol.h \ $(PROTOCOL_PATH)/vpc-server-protocol.h \ $(PROTOCOL_PATH)/simplebuffer-client-protocol.h \ $(PROTOCOL_PATH)/simplebuffer-server-protocol.h \ $(PROTOCOL_PATH)/simpleshell-client-protocol.h \ $(PROTOCOL_PATH)/simpleshell-server-protocol.h \ $(PROTOCOL_PATH)/wayland-client-protocol.h OBJ_WESTEROS_DISPLAY = \ wstclient_wayland.o \ wstclient_socket.o \ wstclient_plugin.o LOCAL_CFLAGS += \ -I$(OUT_DIR)/$(PROTOCOL_PATH) ifeq ($(WAYLAND_SUPPORT), y) LOCAL_CFLAGS += -DSUPPORT_WAYLAND OBJ_CLIENT_LIB += $(GENERATED_SOURCES:.c=.o) OBJ_CLIENT_LIB += $(OBJ_WESTEROS_DISPLAY) LD_SUPPORT += -lwayland-client endif LOCAL_CFLAGS += \ -I../ \ -I$(TOOLS_PATH) \ -I$(STAGING_DIR)/usr/include \ $(VERSION_CFLAGS) \ OBJ_CLIENT_LIB += \ $(TOOLS_PATH)/Thread.o \ $(TOOLS_PATH)/Poll.o \ $(TOOLS_PATH)/Times.o \ $(TOOLS_PATH)/Logger.o LOCAL_CFLAGS += -fPIC -O -Wcpp -g CFLAGS += $(LOCAL_CFLAGS) CXXFLAGS += $(LOCAL_CFLAGS) -std=c++11 TARGET = $(CLIENT_LIB) all: $(TARGET) # Ensure generated headers exist before compiling object files $(OBJ_WESTEROS_DISPLAY): $(GENERATED_HEADERS) $(GENERATED_SOURCES) LD_FLAG = $(LDFLAGS) -g -fPIC -O -Wcpp -lm -lpthread -lz -Wl,-Bsymbolic -ldl LD_FLAG_LIB = $(LD_FLAG) -shared $(LD_SUPPORT) -llog ifneq (,$(findstring -DESSOS_RM,$(CFLAGS))) LD_FLAG_LIB += -lessosrmgr OBJ_WESTEROS_DISPLAY+=wst_essos.o endif %.o:%.c $(GENERATED_SOURCES) $(GENERATED_HEADERS) echo CC $(OUT_DIR)/$@ $(OUT_DIR)/$< $(FLAGS) $(CC) -c -o $(OUT_DIR)/$@ $(OUT_DIR)/$< $(CFLAGS) -fPIC %.o:%.cpp $(GENERATED_SOURCES) $(GENERATED_HEADERS) echo CXX $(OUT_DIR)/$@ $< $(FLAGS) $(CXX) -c -o $(OUT_DIR)/$@ $< $(CXXFLAGS) -fPIC $(CLIENT_LIB): $(OBJ_CLIENT_LIB) $(CXX) -o $(OUT_DIR)/$@ $(patsubst %, $(OUT_DIR)/%, $^) $(LD_FLAG_LIB) cp -f $(OUT_DIR)/$(CLIENT_LIB) $(STAGING_DIR)/usr/lib $(PROTOCOL_PATH)/%-protocol.c : $(PROTOCOL_PATH)/%.xml echo $(@) mkdir -p $(@D) && $(SCANNER_TOOL) public-code $< $(OUT_DIR)/$@ $(PROTOCOL_PATH)/%-server-protocol.h : $(PROTOCOL_PATH)/%.xml echo $(@) mkdir -p $(@D) && $(SCANNER_TOOL) server-header $< $(OUT_DIR)/$@ $(PROTOCOL_PATH)/%-client-protocol.h : $(PROTOCOL_PATH)/%.xml echo $(@) mkdir -p $(@D) && $(SCANNER_TOOL) client-header $< $(OUT_DIR)/$@ .PHONY: install install: echo $(TARGET_DIR) cp -f $(OUT_DIR)/$(CLIENT_LIB) $(TARGET_DIR)/usr/lib/ .PHONY: clean clean: rm $(OUT_DIR)/$(CLIENT_LIB) rm -f $(OUT_DIR)/$(PROTOCOL_PATH)/*.o rm -f $(patsubst %, $(OUT_DIR)/%, $(OBJ_WESTEROS_DISPLAY)) rm -f $(OUT_DIR)/*.o rm -f $(patsubst %, $(OUT_DIR)/%, $(OBJ_CLIENT_LIB)) $(shell mkdir -p $(OUT_DIR)/wayland-protocol) $(shell mkdir -p $(OUT_DIR)/$(TOOLS_PATH))