1include ../flags.mk
2include ../config.mk
3
4OUT_DIR := $(OO)/libckteec
5
6.PHONY: all libckteec clean
7
8all: libckteec
9install: libckteec
10
11LIB_NAME	:= libckteec
12MAJOR_VERSION	:= 0
13MINOR_VERSION	:= 1
14PATCH_VERSION	:= 0
15
16LIB_MAJOR		:= $(LIB_NAME).so.$(MAJOR_VERSION)
17LIB_MAJ_MIN		:= $(LIB_NAME).so.$(MAJOR_VERSION).$(MINOR_VERSION)
18LIB_MAJ_MIN_PAT		:= $(LIB_NAME).so.$(MAJOR_VERSION).$(MINOR_VERSION).$(PATCH_VERSION)
19LIBCKTEEC_SO_LIBRARY	:= $(LIB_MAJ_MIN_PAT)
20LIBCKTEEC_AR_LIBRARY	:= $(LIB_NAME).a
21
22LIBCKTEEC_SRC_DIR	:= src
23
24LIBCKTEEC_SRCS		= pkcs11_api.c
25LIBCKTEEC_SRCS		+= ck_debug.c
26LIBCKTEEC_SRCS		+= ck_helpers.c
27LIBCKTEEC_SRCS		+= invoke_ta.c
28LIBCKTEEC_SRCS		+= pkcs11_processing.c
29LIBCKTEEC_SRCS		+= pkcs11_token.c
30LIBCKTEEC_SRCS		+= serializer.c
31LIBCKTEEC_SRCS		+= serialize_ck.c
32
33LIBCKTEEC_INCLUDES	= ${CURDIR}/include
34LIBCKTEEC_INCLUDES 	+= ${CURDIR}/../public
35
36LIBCKTEEC_CFLAGS	:= $(addprefix -I, $(LIBCKTEEC_INCLUDES)) \
37			$(CFLAGS) -D_GNU_SOURCE -fPIC
38
39LIBCKTEEC_LFLAGS	:= $(LDFLAGS) -L$(OUT_DIR)/../libteec -lteec
40
41LIBCKTEEC_OBJ_DIR	:= $(OUT_DIR)
42LIBCKTEEC_OBJS		:= $(patsubst %.c,$(LIBCKTEEC_OBJ_DIR)/%.o, $(LIBCKTEEC_SRCS))
43
44$(LIBCKTEEC_OBJ_DIR)/%.o: ${LIBCKTEEC_SRC_DIR}/%.c
45	$(VPREFIX)mkdir -p $(LIBCKTEEC_OBJ_DIR)
46	@echo "  CC      $<"
47	$(VPREFIX)$(CC) $(LIBCKTEEC_CFLAGS) -c $< -o $@
48
49libckteec: $(OUT_DIR)/$(LIBCKTEEC_SO_LIBRARY)
50
51$(OUT_DIR)/$(LIBCKTEEC_SO_LIBRARY): $(LIBCKTEEC_OBJS)
52	@echo "  LINK    $@"
53	$(VPREFIX)$(CC) -shared -Wl,-soname,$(LIB_MAJOR) -o $@ $+ $(LIBCKTEEC_LFLAGS)
54	@echo ""
55
56libckteec: $(OUT_DIR)/$(LIBCKTEEC_AR_LIBRARY)
57
58$(OUT_DIR)/$(LIBCKTEEC_AR_LIBRARY): $(LIBCKTEEC_OBJS)
59	@echo "  AR      $@"
60	$(VPREFIX)$(AR) rcs $@ $+
61
62libckteec:
63	$(VPREFIX)ln -sf $(LIB_MAJ_MIN_PAT) $(OUT_DIR)/$(LIB_MAJ_MIN)
64	$(VPREFIX)ln -sf $(LIB_MAJ_MIN) $(OUT_DIR)/$(LIB_MAJOR)
65	$(VPREFIX)ln -sf $(LIB_MAJOR) $(OUT_DIR)/$(LIB_NAME).so
66
67################################################################################
68# Cleaning up configuration
69################################################################################
70clean:
71	$(RM) $(LIBCKTEEC_OBJS)
72	$(RM) $(OUT_DIR)/$(LIB_MAJ_MIN_PAT)
73	$(RM) $(OUT_DIR)/$(LIB_MAJ_MIN)
74	$(RM) $(OUT_DIR)/$(LIB_MAJOR)
75	$(RM) $(OUT_DIR)/$(LIBCKTEEC_SO_LIBRARY)
76	$(RM) $(OUT_DIR)/$(LIBCKTEEC_AR_LIBRARY)
77	$(call rmdir,$(OUT_DIR))
78
79