1#############################################################################
2# Software Testing Automation Framework (STAF)                              #
3# (C) Copyright IBM Corp. 2001                                              #
4#                                                                           #
5# This software is licensed under the Eclipse Public License (EPL) V1.0.    #
6#############################################################################
7
8ifeq ($(OS_NAME),win32)
9    # STAFProc.exe.manifest must be put in the same directory as STAFProc.exe
10    # and STAFProc.exe must have a later modification date time stamp or else
11    # you get Windows 8 version (6.2.0.0) on Windows 8.1 and later.
12    stafproc_targets += $(REL)/bin/STAFProc.exe.manifest
13endif
14
15stafproc_targets += $(REL)/bin/STAFProc$(OS_EE)\
16                    $(REL)/bin/STAF.cfg \
17                    $(REL)/LICENSE.htm \
18                    $(REL)/NOTICES.htm \
19                    $(REL)/bin/STAFProc.ico
20
21Targets += $(stafproc_targets)
22
23ifdef STAF_USE_SSL
24    ifndef OPENSSL_ROOT
25        $(error You must set OPENSSL_ROOT to the full pathname where you installed OpenSSL)
26    endif
27
28    ifeq ($(OS_NAME),win32)
29        OPENSSL_LIBDIRS ?= $(OPENSSL_ROOT:/=)/bin
30        SSL_LIB1 = ssleay32
31        SSL_LIB2 = libeay32
32        LIB_SSL_V = $(subst Name,$(SSL_LIB1),$(DLL))
33        LIB_CRYPTO_V = $(subst Name,$(SSL_LIB2),$(DLL))
34    else
35        OPENSSL_LIBDIRS ?= $(OPENSSL_ROOT:/=)/lib
36        SSL_LIB1 = ssl
37        SSL_LIB2 = crypto
38
39        # Determine the version used in the OpenSSL library names
40        ifeq ($(OS_NAME),macosx)
41            LIB_SSL_PART1 = $(OPENSSL_LIBDIRS)/lib$(SSL_LIB1).
42            LIB_SSL_PART2 = $(subst $(LIB_SSL_PART1),,$(shell ls $(LIB_SSL_PART1)*.dylib))
43            OPENSSL_VERSION ?= $(subst .dylib,,$(LIB_SSL_PART2))
44            LIB_SSL_V = $(subst Name,$(SSL_LIB1).$(OPENSSL_VERSION),$(DLL))
45            LIB_CRYPTO_V = $(subst Name,$(SSL_LIB2).$(OPENSSL_VERSION),$(DLL))
46        else
47            LIB_SSL_PART1 = $(OPENSSL_LIBDIRS)/$(subst Name,$(SSL_LIB1),$(DLL)).
48            OPENSSL_VERSION ?= $(subst $(LIB_SSL_PART1),,$(shell ls $(LIB_SSL_PART1)*))
49            LIB_SSL_V = $(subst Name,$(SSL_LIB1),$(DLL))
50            LIB_CRYPTO_V = $(subst Name,$(SSL_LIB2),$(DLL))
51        endif
52    endif
53
54    # Verify that the two OpenSSL libraries required exist
55    ifneq ($(OPENSSL_LIBDIRS)/$(LIB_SSL_V), $(shell find $(OPENSSL_LIBDIRS)/$(LIB_SSL_V) -print))
56        $(info find $(OPENSSL_LIBDIRS)/$(LIB_SSL_V) -print)
57        $(error Could not find file $(LIB_SSL_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_SSL_V).)
60    endif
61    ifneq ($(OPENSSL_LIBDIRS)/$(LIB_CRYPTO_V), $(shell find $(OPENSSL_LIBDIRS)/$(LIB_CRYPTO_V) -print))
62        $(info find $(OPENSSL_LIBDIRS)/$(LIB_CRYPTO_V) -print)
63        $(error Could not find file $(LIB_CRYPTO_V) in directory $(OPENSSL_LIBDIRS).\
64          Check your settings for OPENSSL_ROOT, OPENSSL_VERSION, and STAF_USE_SSL.\
65          You may also have to set OPENSSL_LIBDIRS to the directory containing file $(LIB_CRYPTO_V).)
66    endif
67
68    ifneq ($(filter aix aix64,$(OS_NAME)),)
69        # On aix and aix64, don't include the version number in the OpenSSL library names shipped with STAF
70        LIB_SSL = $(subst Name,$(SSL_LIB1),$(DLL))
71        LIB_CRYPTO = $(subst Name,$(SSL_LIB2),$(DLL))
72    else
73        LIB_SSL = $(LIB_SSL_V)
74        LIB_CRYPTO = $(LIB_CRYPTO_V)
75    endif
76
77    Targets += $(REL)/lib/$(LIB_SSL) \
78               $(REL)/lib/$(LIB_CRYPTO)
79
80    OPENSSL_INCLUDEDIRS ?= $(OPENSSL_ROOT:/=)/include
81
82    CC_CFLAGS += -DSTAF_USE_SSL
83endif
84
85CleanupTargets += cleanup_stafproc
86
87$(stafproc_targets): SUBSYS_REL := stafproc
88SUBSYS_REL := stafproc
89
90#=====================================================================
91#   C/C++ Info Flags
92#=====================================================================
93
94$(stafproc_targets): OBJS = $(stafproc_objs)
95$(stafproc_targets): LIBS = STAF $(if $(STAF_USE_SSL),$(SSL_LIB1) $(SSL_LIB2))
96
97stafproc_objs :=\
98  STAFProc\
99  STAFProcUtil\
100  STAFProcOSUtil\
101  STAFHandleManager\
102  STAFRequestManager\
103  STAFFSCopyManager\
104  STAFVariablePool\
105  STAFTrustManager\
106  STAFDiagManager\
107  STAFConnectionManager\
108  STAFServiceManager\
109  STAFNotificationList\
110  STAFService\
111  STAFSimpleServices\
112  STAFDelegatedService\
113  STAFProcessService\
114  STAFFSService\
115  STAFHandleService\
116  STAFLifeCycleService\
117  STAFVariableService\
118  STAFServiceService\
119  STAFQueueService\
120  STAFShutdownService\
121  STAFMiscService\
122  STAFTraceService\
123  STAFDiagService\
124  STAFSemService\
125  STAFTrustService\
126  STAFExternalService\
127  STAFHelpService\
128  STAFConfigService\
129  STAFConfig
130
131stafproc_objs        := $(foreach obj,$(stafproc_objs),$(O)/stafproc/$(obj)$(OS_OE))
132stafproc_dependents  := $(stafproc_objs:$(OS_OE)=.d)
133$(stafproc_dependents): SUBSYS_REL := stafproc
134
135ifdef STAF_USE_SSL
136    LIBDIRS += $(OPENSSL_ROOT)/lib
137    CC_INCLUDEDIRS += $(OPENSSL_INCLUDEDIRS)
138endif
139
140# Include dependencies
141ifneq ($(InCleanup), "1")
142    include $(stafproc_dependents)
143endif
144
145# Include inference rules
146include $(InferenceRules)
147
148# STAFProc targets
149
150ifeq ($(OS_NAME),win32)
151    $(REL)/bin/STAFProc.exe.manifest: $(SRC)/stafproc/STAFProc.exe.manifest $(MAKEFILE_NAME)
152	$(COPY_FILE)
153endif
154
155$(REL)/bin/STAFProc$(OS_EE): $(stafproc_objs) $(LIB_STAF_FP) $(SRC)/stafproc/STAFProc.exe.manifest $(MAKEFILE_NAME)
156	$(LINK_IT)
157
158ifdef STAF_USE_SSL
159    $(REL)/bin/STAF.cfg: $(SRC)/stafproc/STAF.cfg $(MAKEFILE_NAME)
160	$(COPY_FILE)
161else
162    $(REL)/bin/STAF.cfg: $(SRC)/stafproc/STAFNonsecure.cfg $(MAKEFILE_NAME)
163	$(COPY_FILE)
164endif
165
166$(REL)/lib/$(LIB_SSL): $(OPENSSL_LIBDIRS)/$(LIB_SSL_V)
167	$(COPY_FILE)
168
169$(REL)/lib/$(LIB_CRYPTO): $(OPENSSL_LIBDIRS)/$(LIB_CRYPTO_V)
170	$(COPY_FILE)
171
172$(REL)/LICENSE.htm: $(SRC)/LICENSE.htm $(MAKEFILE_NAME)
173	$(COPY_FILE)
174
175$(REL)/NOTICES.htm: $(SRC)/NOTICES.htm $(MAKEFILE_NAME)
176	$(COPY_FILE)
177
178$(REL)/bin/STAFProc.ico: $(SRC)/stafproc/STAFProc.ico $(MAKEFILE_NAME)
179	$(COPY_FILE)
180
181cleanup_stafproc:
182	-@$(DEL) $(O)/stafproc/* $(OUT_ERR_TO_DEV_NULL)
183	-@$(DEL) $(REL)/bin/STAFProc$(OS_EE) $(OUT_ERR_TO_DEV_NULL)
184	-@$(DEL) $(REL)/LICENSE.htm $(OUT_ERR_TO_DEV_NULL)
185	-@$(DEL) $(REL)/NOTICES.htm $(OUT_ERR_TO_DEV_NULL)
186	-@$(DEL) $(REL)/bin/STAF.cfg $(OUT_ERR_TO_DEV_NULL)
187	-@$(DEL) $(REL)/bin/STAFProc.exe.manifest $(OUT_ERR_TO_DEV_NULL)
188	-@$(DEL) $(REL)/lib/$(LIB_SSL) $(OUT_ERR_TO_DEV_NULL)
189	-@$(DEL) $(REL)/lib/$(LIB_CRYPTO) $(OUT_ERR_TO_DEV_NULL)
190