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