xref: /trunk/main/xmlsecurity/util/makefile.mk (revision 6ebe52f808faa3285ea18ab8e983eb89d5cfb82c)
1#**************************************************************
2#
3#  Licensed to the Apache Software Foundation (ASF) under one
4#  or more contributor license agreements.  See the NOTICE file
5#  distributed with this work for additional information
6#  regarding copyright ownership.  The ASF licenses this file
7#  to you under the Apache License, Version 2.0 (the
8#  "License"); you may not use this file except in compliance
9#  with the License.  You may obtain a copy of the License at
10#
11#    http://www.apache.org/licenses/LICENSE-2.0
12#
13#  Unless required by applicable law or agreed to in writing,
14#  software distributed under the License is distributed on an
15#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16#  KIND, either express or implied.  See the License for the
17#  specific language governing permissions and limitations
18#  under the License.
19#
20#**************************************************************
21
22
23
24PRJ=..
25
26PRJNAME=xmlsecurity
27TARGET=xmlsecurity
28
29# Disable '-z defs' due to broken libxpcom.
30#LINKFLAGSDEFS=$(0)
31USE_DEFFILE=TRUE
32
33# --- Settings -----------------------------------------------------
34
35.INCLUDE :  settings.mk
36.INCLUDE :  $(PRJ)$/util$/target.pmk
37
38.IF "$(ENABLE_NSS_MODULE)" != "YES"
39@all:
40    @echo "No nss -> no libxmlsec -> no xmlsecurity..."
41.ENDIF
42
43# --- Files --------------------------------------------------------
44
45BMP_IN=$(PRJ)$/res
46
47# --- Shared-Library -----------------------------------------------
48
49#
50# The 1st shared library
51#
52SHL1NAME=xsec_fw
53SHL1TARGET= $(SHL1NAME)
54SHL1LIBS= $(SLB)$/fw.lib
55
56SHL1STDLIBS +=      \
57    $(SALLIB)       \
58    $(CPPULIB)      \
59    $(CPPUHELPERLIB)
60
61SHL1IMPLIB = $(SHL1TARGET)
62SHL1DEF = $(MISC)$/$(SHL1TARGET).def
63DEF1NAME = $(SHL1TARGET)
64DEF1EXPORTFILE = xsec_fw.dxp
65
66#
67# The 2nd shared library
68#
69
70SHL2NAME=xsec_xmlsec
71.IF "$(GUI)"=="OS2"
72SHL2NAME=xsec_xs
73.ENDIF
74SHL2TARGET= $(SHL2NAME)
75
76
77SHL2LIBS= \
78    $(SLB)$/xs_comm.lib
79
80.IF "$(CRYPTO_ENGINE)" == "mscrypto"
81SHL2LIBS += \
82    $(SLB)$/xs_mscrypt.lib
83.ENDIF
84
85SHL2LIBS += \
86    $(SLB)$/xs_nss.lib
87
88
89SHL2STDLIBS +=          \
90    $(SALLIB)           \
91    $(CPPULIB)          \
92    $(CPPUHELPERLIB)    \
93    $(SALLIB)   \
94    $(SVLLIB)           \
95    $(TOOLSLIB)         \
96    $(COMPHELPERLIB)    \
97    $(CPPUHELPERLIB)    \
98    $(XMLOFFLIB)
99
100.IF "$(OS)"=="SOLARIS"
101SHL2STDLIBS +=-ldl
102.ENDIF
103
104.IF "$(ENABLE_NSS_MODULE)"=="YES"
105.IF "$(SYSTEM_NSS)"!="YES"
106.IF "$(NSPR_LIB)" != ""
107SHL2STDLIBS += $(NSPR_LIB)
108.ENDIF
109.IF "$(NSS_LIB)" != ""
110SHL2STDLIBS += $(NSS_LIB)
111.ENDIF
112.ELSE
113SHL2STDLIBS += $(NSS_LIBS)
114.ENDIF
115.ENDIF
116
117.IF "$(CRYPTO_ENGINE)" == "mscrypto"
118SHL2STDLIBS+= $(MSCRYPTOLIBS)
119# SHL2STDLIBS+= $(XMLSECLIB) $(LIBXML2LIB) $(NSS3LIB) $(NSPR4LIB) $(PLC4LIB)
120SHL2STDLIBS+= $(NSS3LIB) $(NSPR4LIB)
121.ELIF "$(OS)$(SYSTEM_LIBXML)"=="MACOSXYES"
122# The macOS shared-library link template (tg_shl.mk) always searches
123# $(SOLARLIB) -- which includes /usr/lib -- before any of this makefile's
124# own libs, and the SDK bundles its own older libxml2 under /usr/lib. A
125# plain "-lxml2" (as pulled in by NSSCRYPTOLIBS via LIBXML2LIB) resolves
126# to that bundled copy instead of the configured --with-system-libxml one,
127# and it is missing symbols (xmlCtxtPushInput, xmlXPathValuePush) that
128# xmlsec1 needs. Link the intended libxml2 by absolute path so the search
129# order can't shadow it.
130#
131# The path is built from $(LIBXML_PREFIX), not a live `xml2-config`
132# lookup: $(LIBXML_PREFIX) is resolved exactly once by `./configure`
133# (honoring the directory given to --with-system-libxml=DIR, see
134# configure.ac's libxml check) and exported via the generated
135# *Env.Set.sh script -- the same mechanism that already delivers
136# $(LIBXML_CFLAGS)/$(LIBXML_LIBS) (aka $(LIBXML2LIB), solenv/inc/libs.mk)
137# to every other module. Re-running `xml2-config` here at build time
138# instead would re-do that PATH-dependent lookup a second time,
139# independently of configure -- if the build-resume shell's PATH ever
140# differs from the configure shell's (e.g. MacPorts' /opt/local ends up
141# ahead of the intended prefix), that would silently link a stray
142# libxml2.a instead of the intended one, pulling in a different, unrelated
143# set of missing transitive symbols (seen in practice: ICU + GNU libiconv
144# from a MacPorts copy on one machine, liblzma from a different stray copy
145# on another). Going through $(LIBXML_PREFIX) removes that ambiguity.
146#
147# Prefer the dylib when one is actually present at that prefix: unlike a
148# static archive, a dylib records its own transitive links (e.g. to libz),
149# so the linker resolves those automatically and no extra -lz/-llzma is
150# needed. Fall back to the static archive (community builds normally only
151# install that, via --enable-shared=no) when no dylib exists there.
152.IF "$(shell test -f $(LIBXML_PREFIX)/lib/libxml2.dylib && echo yes)"=="yes"
153XMLSECURITY_SYSTEM_LIBXML2:=$(LIBXML_PREFIX)/lib/libxml2.dylib
154XMLSECURITY_SYSTEM_LIBXML2_EXTRALIBS:=
155.ELSE
156XMLSECURITY_SYSTEM_LIBXML2:=$(LIBXML_PREFIX)/lib/libxml2.a
157# The static archive carries no dependency info, so zlib must be linked
158# explicitly here to satisfy libxml2's HTTP/gzip symbols (deflate,
159# inflate, gzopen, ...). liblzma is linked only if actually present next
160# to it: it's not part of the documented static-lib bundle, so only
161# needed if this libxml2 build happens to have xz support compiled in.
162XMLSECURITY_SYSTEM_LIBLZMA:=$(shell test -f $(LIBXML_PREFIX)/lib/liblzma.a -o -f $(LIBXML_PREFIX)/lib/liblzma.dylib && echo $(LIBXML_PREFIX)/lib/liblzma.a)
163XMLSECURITY_SYSTEM_LIBXML2_EXTRALIBS:=$(ZLIB3RDLIB) $(XMLSECURITY_SYSTEM_LIBLZMA)
164.ENDIF
165SHL2STDLIBS+= $(XMLSECLIB-NSS) $(XMLSECLIB) $(XMLSECURITY_SYSTEM_LIBXML2) $(XMLSECURITY_SYSTEM_LIBXML2_EXTRALIBS) $(NSS3LIB) $(NSPR4LIB) $(PLC4LIB)
166.ELSE
167SHL2STDLIBS+= $(NSSCRYPTOLIBS)
168.ENDIF
169
170
171SHL2IMPLIB = $(SHL2TARGET)
172SHL2DEF = $(MISC)$/$(SHL2TARGET).def
173DEF2NAME = $(SHL2TARGET)
174.IF "$(CRYPTO_ENGINE)" == "mscrypto"
175DEF2EXPORTFILE = exports_xsmscrypt.dxp
176.ENDIF
177
178DEF2EXPORTFILE = exports_xsnss.dxp
179
180SRSFILELIST=    \
181                $(SRS)$/component.srs   \
182                $(SRS)$/dialogs.srs
183
184RESLIB1NAME=xmlsec
185RESLIB1IMAGES=$(PRJ)$/res
186RESLIB1SRSFILES= $(SRSFILELIST)
187
188SHL4TARGET=$(TARGET)
189.IF "$(GUI)"=="OS2"
190SHL4TARGET=xmlsecur
191.ENDIF
192SHL4LIBS=\
193                $(SLB)$/helper.lib      \
194                $(SLB)$/dialogs.lib     \
195                $(SLB)$/component.lib
196
197SHL4STDLIBS=\
198                $(CPPULIB)          \
199                $(CPPUHELPERLIB)    \
200                $(COMPHELPERLIB)    \
201                $(UCBHELPERLIB)     \
202                $(UNOTOOLSLIB)      \
203                $(VCLLIB)           \
204                $(TOOLSLIB)         \
205                $(SVTOOLLIB)        \
206                $(SALLIB)           \
207                $(SVLLIB)           \
208                $(XMLOFFLIB)        \
209                $(SVXCORELIB)
210
211SHL4VERSIONMAP = $(SOLARENV)/src/component.map
212SHL4DEPN=
213SHL4IMPLIB=i$(TARGET)
214SHL4DEF=$(MISC)$/$(SHL4TARGET).def
215DEF4NAME=$(SHL4TARGET)
216
217# --- Targets ----------------------------------------------------------
218
219.INCLUDE :  target.mk
220
221# --- Filter -----------------------------------------------------------
222
223$(MISC)$/$(SHL3TARGET).flt: makefile.mk
224    $(TYPE) $(SHL3TARGET).flt > $@
225
226ALLTAR : \
227    $(MISC)/xmlsecurity.component \
228    $(MISC)/xsec_fw.component \
229    $(MISC)/xsec_xmlsec.component
230
231.IF "$(OS)" == "WNT"
232my_platform = .windows
233.END
234
235$(MISC)/xmlsecurity.component .ERRREMOVE : \
236        $(SOLARENV)/bin/createcomponent.xslt xmlsecurity.component
237    $(XSLTPROC) --nonet --stringparam uri \
238        '$(COMPONENTPREFIX_BASIS_NATIVE)$(SHL4TARGETN:f)' -o $@ \
239        $(SOLARENV)/bin/createcomponent.xslt xmlsecurity.component
240
241$(MISC)/xsec_fw.component .ERRREMOVE : $(SOLARENV)/bin/createcomponent.xslt \
242        xsec_fw.component
243    $(XSLTPROC) --nonet --stringparam uri \
244        '$(COMPONENTPREFIX_BASIS_NATIVE)$(SHL1TARGETN:f)' -o $@ \
245        $(SOLARENV)/bin/createcomponent.xslt xsec_fw.component
246
247$(MISC)/xsec_xmlsec.component .ERRREMOVE : \
248        $(SOLARENV)/bin/createcomponent.xslt xsec_xmlsec.component
249    $(XSLTPROC) --nonet --stringparam uri \
250        '$(COMPONENTPREFIX_BASIS_NATIVE)$(SHL2TARGETN:f)' -o $@ \
251        $(SOLARENV)/bin/createcomponent.xslt xsec_xmlsec$(my_platform).component
252