1#############################################################################
2# Software Testing Automation Framework (STAF)                              #
3# (C) Copyright IBM Corp. 2001, 2005, 2008                                  #
4#                                                                           #
5# This software is licensed under the Eclipse Public License (EPL) V1.0.    #
6#############################################################################
7
8LIB_STAFTCP = $(subst Name,STAFTCP,$(DLL))
9
10staf_connprov_tcp_targets += $(REL)/lib/$(LIB_STAFTCP)
11
12Targets += $(staf_connprov_tcp_targets) \
13           $(REL)/bin/CAList.crt \
14           $(REL)/bin/STAFDefault.crt \
15           $(REL)/bin/STAFDefault.key
16
17ifdef STAF_USE_SSL
18    ifndef OPENSSL_ROOT
19        $(error You must set OPENSSL_ROOT to the full pathname where you installed OpenSSL)
20    endif
21
22    ifeq ($(OS_NAME),win32)
23        OPENSSL_LIBDIRS ?= $(OPENSSL_ROOT:/=)/bin
24        SSL_LIB1 = ssleay32
25        SSL_LIB2 = libeay32
26        LIB_SSL_V = $(subst Name,$(SSL_LIB1),$(DLL))
27        LIB_CRYPTO_V = $(subst Name,$(SSL_LIB2),$(DLL))
28    else
29        OPENSSL_LIBDIRS ?= $(OPENSSL_ROOT:/=)/lib
30        SSL_LIB1 = ssl
31        SSL_LIB2 = crypto
32
33        # Determine the version used in the OpenSSL library names
34        ifeq ($(OS_NAME),macosx)
35            LIB_SSL_PART1 = $(OPENSSL_LIBDIRS)/lib$(SSL_LIB1).
36            LIB_SSL_PART2 = $(subst $(LIB_SSL_PART1),,$(shell ls $(LIB_SSL_PART1)*.dylib))
37            OPENSSL_VERSION ?= $(subst .dylib,,$(LIB_SSL_PART2))
38            LIB_SSL_V = $(subst Name,$(SSL_LIB1).$(OPENSSL_VERSION),$(DLL))
39            LIB_CRYPTO_V = $(subst Name,$(SSL_LIB2).$(OPENSSL_VERSION),$(DLL))
40        else
41            LIB_SSL_PART1 = $(OPENSSL_LIBDIRS)/$(subst Name,$(SSL_LIB1),$(DLL)).
42            OPENSSL_VERSION ?= $(subst $(LIB_SSL_PART1),,$(shell ls $(LIB_SSL_PART1)*))
43            LIB_SSL_V = $(subst Name,$(SSL_LIB1),$(DLL))
44            LIB_CRYPTO_V = $(subst Name,$(SSL_LIB2),$(DLL))
45        endif
46    endif
47
48    # Verify that the two OpenSSL libraries required exist
49    ifneq ($(OPENSSL_LIBDIRS)/$(LIB_SSL_V), $(shell find $(OPENSSL_LIBDIRS)/$(LIB_SSL_V) -print))
50        $(info find $(OPENSSL_LIBDIRS)/$(LIB_SSL_V) -print)
51        $(error Could not find file $(LIB_SSL_V) in directory $(OPENSSL_LIBDIRS).\
52          Check your settings for OPENSSL_ROOT, OPENSSL_VERSION, and STAF_USE_SSL.\
53          You may also have to set OPENSSL_LIBDIRS to the directory containing file $(LIB_SSL_V).)
54    endif
55    ifneq ($(OPENSSL_LIBDIRS)/$(LIB_CRYPTO_V), $(shell find $(OPENSSL_LIBDIRS)/$(LIB_CRYPTO_V) -print))
56        $(info find $(OPENSSL_LIBDIRS)/$(LIB_CRYPTO_V) -print)
57        $(error Could not find file $(LIB_CRYPTO_V) in directory $(OPENSSL_LIBDIRS).\
58          Check your settings for OPENSSL_ROOT, OPENSSL_VERSION, and STAF_USE_SSL.\
59          You may also have to set OPENSSL_LIBDIRS to the directory containing file $(LIB_CRYPTO_V).)
60    endif
61
62    ifneq ($(filter aix aix64,$(OS_NAME)),)
63        # On aix and aix64, don't include the version number in the OpenSSL library names shipped with STAF
64        LIB_SSL = $(subst Name,$(SSL_LIB1),$(DLL))
65        LIB_CRYPTO = $(subst Name,$(SSL_LIB2),$(DLL))
66    else
67        LIB_SSL = $(LIB_SSL_V)
68        LIB_CRYPTO = $(LIB_CRYPTO_V)
69    endif
70
71    OPENSSL_INCLUDEDIRS ?= $(OPENSSL_ROOT:/=)/include
72endif
73
74CleanupTargets += cleanup_staf_connprov_tcp
75
76$(staf_connprov_tcp_targets): SUBSYS_REL := connproviders/tcp
77SUBSYS_REL := connproviders/tcp
78
79#=====================================================================
80#   C/C++ Info Flags
81#=====================================================================
82ifdef STAF_USE_IPV6
83    CC_CFLAGS += -DSTAF_USE_IPV6
84endif
85ifdef STAF_USE_SSL
86    CC_CFLAGS += -DSTAF_USE_SSL
87endif
88
89$(staf_connprov_tcp_targets): LIBS = STAF $(OS_SOCKET_LIB)
90$(staf_connprov_tcp_targets): CFLAGS := $(CC_EXPORT_SHARED_LIB_SYMBOLS)
91$(REL)/lib/$(LIB_STAFTCP)   : OBJS = $(staf_connprov_tcp_objs)
92ifdef STAF_USE_SSL
93    $(staf_connprov_tcp_targets): INCLUDEDIRS := $(OPENSSL_INCLUDEDIRS)
94endif
95
96staf_connprov_tcp_objs :=\
97  STAFTCPConnProvider
98
99staf_connprov_tcp_objs := $(foreach obj,$(staf_connprov_tcp_objs),$(O)/connproviders/tcp/$(obj)$(OS_OE))
100staf_connprov_tcp_dependents := $(staf_connprov_tcp_objs:$(OS_OE)=.d)
101
102ifeq ($(OS_NAME),win32)
103    ifdef STAF_USE_IPV6
104        $(staf_connprov_tcp_targets): CC_INCLUDEDIRS := $(MSSDKDIR)\INCLUDE + $(CC_INCLUDEDIRS)
105	ifneq ($(CC_TYPE),MVC-SDK-IA64)
106        	$(staf_connprov_tcp_targets): CC_LIBDIRS := $(MSSDKDIR)\LIB + $(CC_LIBDIRS)
107        endif
108    endif
109    staf_connprov_tcp_objs += $(SR_SRC)/STAFTCP.def
110    $(staf_connprov_tcp_targets): LIBS = STAF $(OS_SOCKET_LIB) WS2_32 $(if $(STAF_USE_SSL),$(SSL_LIB1) $(SSL_LIB2))
111else
112    $(staf_connprov_tcp_targets): LIBS = STAF $(OS_SOCKET_LIB) $(if $(STAF_USE_SSL),$(SSL_LIB1) $(SSL_LIB2))
113endif
114
115ifdef STAF_USE_SSL
116    LIBDIRS += $(OPENSSL_ROOT)/lib
117    CC_INCLUDEDIRS += $(OPENSSL_INCLUDEDIRS)
118endif
119
120# Include dependencies
121ifneq ($(InCleanup), "1")
122    include $(staf_connprov_tcp_dependents)
123endif
124
125# Include inference rules
126include $(InferenceRules)
127
128# STAF TCP connection provider targets
129
130$(REL)/lib/$(LIB_STAFTCP): $(staf_connprov_tcp_objs) $(LIB_STAF_FP) $(MAKEFILE_NAME)
131	$(SHARED_LIB_IT)
132
133$(REL)/bin/CAList.crt: $(SRC)/$(SUBSYS_REL)/CAList.crt
134	$(COPY_FILE)
135
136$(REL)/bin/STAFDefault.crt: $(SRC)/$(SUBSYS_REL)/STAFDefault.crt
137	$(COPY_FILE)
138
139$(REL)/bin/STAFDefault.key: $(SRC)/$(SUBSYS_REL)/STAFDefault.key
140	$(COPY_FILE)
141
142cleanup_staf_connprov_tcp:
143	-@$(DEL) $(O)/connproviders/tcp/* $(OUT_ERR_TO_DEV_NULL)
144	-@$(DEL) $(REL)/lib/$(LIB_STAFTCP) $(OUT_ERR_TO_DEV_NULL)
145