blob: c57fd71e8945507e180517de26708ddcda285c49 [file] [log] [blame]
#**************************************************************
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
#**************************************************************
PRJ = ..$/..
PRJNAME = cli_ure
TARGET = cli_cppuhelper
NO_BSYMBOLIC = TRUE
ENABLE_EXCEPTIONS = TRUE
LIBTARGET = NO
USE_DEFFILE = TRUE
# disable caching to avoid stale objects
# on version changes
CCACHE_DISABLE=TRUE
.EXPORT : CCACHE_DISABLE
.INCLUDE : settings.mk
.INCLUDE : $(PRJ)$/util$/makefile.pmk
use_shl_versions=
.IF "$(BUILD_FOR_CLI)" == ""
#do not even build the cxx files because they contain cli cpp
all:
.ELSE
.INCLUDE : $(BIN)$/cliureversion.mk
ASSEMBLY_KEY="$(BIN)$/cliuno.snk"
ASSEMBLY_ATTRIBUTES = $(MISC)$/assembly_cppuhelper.cxx
POLICY_ASSEMBLY_FILE=$(BIN)$/$(CLI_CPPUHELPER_POLICY_ASSEMBLY).dll
ASSEMBLY_KEY_X=$(subst,\,\\ $(ASSEMBLY_KEY))
LINKFLAGS += /delayload:cppuhelper3MSC.dll \
/delayload:cppu3.dll \
/delayload:sal3.dll
UWINAPILIB=
NO_OFFUH=TRUE
CPPUMAKERFLAGS =
UNOTYPES = \
com.sun.star.lang.XSingleComponentFactory \
com.sun.star.loader.CannotActivateFactoryException \
com.sun.star.container.XHierarchicalNameAccess \
com.sun.star.registry.CannotRegisterImplementationException \
com.sun.star.registry.XRegistryKey \
com.sun.star.registry.XSimpleRegistry
#loader lock was solved as of VS 2005 (CCNUMVER = 0014..)
# When compiling for CLR, disable "warning C4339: use of undefined type detected
# in CLR meta-data - use of this type may lead to a runtime exception":
.IF "$(CCNUMVER)" >= "001399999999"
CFLAGSCXX += -clr:oldSyntax -AI $(BIN) -wd4339
.ELSE
CFLAGSCXX += -clr -AI $(BIN) -wd4339
#see Microsoft Knowledge Base Article - 814472
LINKFLAGS += -NOENTRY -NODEFAULTLIB:nochkclr.obj -INCLUDE:__DllMainCRTStartup@12
.ENDIF
SLOFILES = \
$(SLO)$/native_bootstrap.obj \
$(SLO)$/path.obj \
$(SLO)$/assembly_cppuhelper.obj
SHL1OBJS = $(SLOFILES)
SHL1TARGET = $(TARGET)
SHL1STDLIBS = \
$(CPPUHELPERLIB) \
$(CPPULIB) \
$(SALLIB) \
delayimp.lib \
advapi32.lib \
mscoree.lib \
Advapi32.lib
.IF "$(CCNUMVER)" >= "001399999999"
SHL1STDLIBS += \
msvcmrt.lib
.ENDIF
SHL1VERSIONMAP = msvc.map
SHL1DEF = $(MISC)$/$(SHL1TARGET).def
DEF1NAME = $(SHL1TARGET)
.INCLUDE : $(PRJ)$/util$/target.pmk
.INCLUDE : target.mk
SIGN= $(MISC)$/cppuhelper_is_signed_flag
ALLTAR: \
$(POLICY_ASSEMBLY_FILE) \
$(SIGN)
.IF "$(CCNUMVER)" >= "001399999999"
CFLAGSCXX += -clr:oldSyntax
.ENDIF
$(ASSEMBLY_ATTRIBUTES) : assembly.cxx $(BIN)$/cliuno.snk $(BIN)$/cliureversion.mk
@echo $(ASSEMBLY_KEY_X)
$(GNUCOPY) -p assembly.cxx $@
echo \
'[assembly:System::Reflection::AssemblyVersion( "$(CLI_CPPUHELPER_NEW_VERSION)" )];' \
>> $(OUT)$/misc$/assembly_cppuhelper.cxx
echo \
'[assembly:System::Reflection::AssemblyKeyFile($(ASSEMBLY_KEY_X))];' \
>> $(OUT)$/misc$/assembly_cppuhelper.cxx
#make sure we build cli_cppuhelper after the version changed
$(SHL1OBJS) : $(BIN)$/cli_cppuhelper.config
$(SIGN): $(SHL1TARGETN)
$(WRAPCMD) sn.exe -R $(BIN)$/$(TARGET).dll $(BIN)$/cliuno.snk && $(TOUCH) $@
#do not forget to deliver cli_cppuhelper.config. It is NOT embedded in the policy file.
.IF "$(CCNUMVER)" >= "001399999999"
#.NET 2 and higher
# If the x86 switch is ommitted then the system assumes the assembly to be MSIL.
# The policy file is still found when an application tries to load an older
# cli_cppuhelper.dll but the system cannot locate it. It possibly assumes that the
# assembly is also 'MSIL' like its policy file.
$(POLICY_ASSEMBLY_FILE) : $(BIN)$/cli_cppuhelper.config
$(WRAPCMD) AL.exe -out:$@ \
-version:$(CLI_CPPUHELPER_POLICY_VERSION) \
-keyfile:$(BIN)$/cliuno.snk \
-link:$(BIN)$/cli_cppuhelper.config \
-platform:x86
.ELSE
#.NET 1.1: platform flag not needed
$(POLICY_ASSEMBLY_FILE) : $(BIN)$/cli_cppuhelper.config
$(WRAPCMD) AL.exe -out:$@ \
-version:$(CLI_CPPUHELPER_POLICY_VERSION) \
-keyfile:$(BIN)$/cliuno.snk \
-link:$(BIN)$/cli_cppuhelper.config
.ENDIF
#Create the config file that is used with the policy assembly
$(BIN)$/cli_cppuhelper.config: cli_cppuhelper_config $(BIN)$/cliureversion.mk
$(PERL) $(SOLARENV)$/bin$/clipatchconfig.pl \
$< $@
.ENDIF # "$(BUILD_FOR_CLI)" != ""