1include ../flags.mk 2include ../config.mk 3 4OUT_DIR := $(OO)/libteec 5 6.PHONY: all libteec clean 7 8all: libteec 9################################################################################ 10# Teec configuration 11################################################################################ 12MAJOR_VERSION := 2 13MINOR_VERSION := 0 14PATCH_VERSION := 0 15LIB_NAME := libteec.so 16LIB_MAJOR := $(LIB_NAME).$(MAJOR_VERSION) 17LIB_MAJ_MIN := $(LIB_NAME).$(MAJOR_VERSION).$(MINOR_VERSION) 18LIB_MAJ_MIN_P := $(LIB_NAME).$(MAJOR_VERSION).$(MINOR_VERSION).$(PATCH_VERSION) 19 20TEEC_SRCS := tee_client_api.c \ 21 teec_trace.c 22 23TEEC_SRC_DIR := src 24TEEC_OBJ_DIR := $(OUT_DIR) 25TEEC_OBJS := $(patsubst %.c,$(TEEC_OBJ_DIR)/%.o, $(TEEC_SRCS)) 26TEEC_INCLUDES := \ 27 ${CURDIR}/include \ 28 ${CURDIR}/src 29 30TEEC_CFLAGS := $(addprefix -I, $(TEEC_INCLUDES)) $(CFLAGS) -D_GNU_SOURCE \ 31 -DDEBUGLEVEL_$(CFG_TEE_CLIENT_LOG_LEVEL) \ 32 -DBINARY_PREFIX=\"TEEC\" 33 34TEEC_LFLAGS := $(LDFLAGS) -lpthread 35TEEC_LIBRARY := $(OUT_DIR)/$(LIB_MAJ_MIN_P) 36 37libteec: $(TEEC_LIBRARY) $(OUT_DIR)/libteec.a 38 $(VPREFIX)ln -sf $(LIB_MAJ_MIN_P) $(OUT_DIR)/$(LIB_MAJOR) 39 $(VPREFIX)ln -sf $(LIB_MAJ_MIN_P) $(OUT_DIR)/$(LIB_MAJ_MIN) 40 $(VPREFIX)ln -sf $(LIB_MAJOR) $(OUT_DIR)/$(LIB_NAME) 41 42$(TEEC_LIBRARY): $(TEEC_OBJS) 43 @echo " LINK $@" 44 $(VPREFIX)$(CC) -shared -Wl,-soname,$(LIB_MAJOR) -o $@ $+ $(TEEC_LFLAGS) 45 @echo "" 46 47$(OUT_DIR)/libteec.a: $(TEEC_OBJS) 48 @echo " AR $@" 49 $(VPREFIX)$(AR) rcs $@ $+ 50 51$(TEEC_OBJ_DIR)/%.o: ${TEEC_SRC_DIR}/%.c 52 $(VPREFIX)mkdir -p $(TEEC_OBJ_DIR) 53 @echo " CC $<" 54 $(VPREFIX)$(CC) $(TEEC_CFLAGS) -c $< -o $@ 55 56################################################################################ 57# Cleaning up configuration 58################################################################################ 59clean: 60 $(RM) $(TEEC_OBJS) $(TEEC_LIBRARY) $(OUT_DIR)/$(LIB_MAJOR) \ 61 $(OUT_DIR)/$(LIB_MAJ_MIN) $(OUT_DIR)/$(LIB_NAME) 62 $(RM) $(OUT_DIR)/libteec.a 63 $(call rmdir,$(OUT_DIR)) 64