1#*************************************************************************
2#
3# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4#
5# Copyright 2000, 2010 Oracle and/or its affiliates.
6#
7# OpenOffice.org - a multi-platform office productivity suite
8#
9# This file is part of OpenOffice.org.
10#
11# OpenOffice.org is free software: you can redistribute it and/or modify
12# it under the terms of the GNU Lesser General Public License version 3
13# only, as published by the Free Software Foundation.
14#
15# OpenOffice.org is distributed in the hope that it will be useful,
16# but WITHOUT ANY WARRANTY; without even the implied warranty of
17# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18# GNU Lesser General Public License version 3 for more details
19# (a copy is included in the LICENSE file that accompanied this code).
20#
21# You should have received a copy of the GNU Lesser General Public License
22# version 3 along with OpenOffice.org.  If not, see
23# <http://www.openoffice.org/license.html>
24# for a copy of the LGPLv3 License.
25#
26#*************************************************************************
27
28PRJ=..$/..
29
30PRJNAME=testtools
31TARGET=bridgetest
32USE_DEFFILE=TRUE
33ENABLE_EXCEPTIONS=TRUE
34LIBTARGET=NO
35
36.INCLUDE: settings.mk
37.IF "$(L10N_framework)"==""
38DLLPRE = # no leading "lib" on .so files
39
40.IF "$(GUI)"=="WNT"
41BATCH_SUFFIX=.bat
42GIVE_EXEC_RIGHTS=@echo
43MY_URE_INTERNAL_JAVA_DIR=$(strip $(subst,\,/ file:///$(shell @$(WRAPCMD) echo $(SOLARBINDIR))))
44MY_LOCAL_CLASSDIR=$(strip $(subst,\,/ file:///$(shell $(WRAPCMD) echo $(PWD)/$(CLASSDIR)/)))
45.ELIF "$(GUI)"=="OS2"
46BATCH_SUFFIX=.cmd
47GIVE_EXEC_RIGHTS=@echo
48MY_URE_INTERNAL_JAVA_DIR=$(strip $(subst,\,/ file:///$(shell @$(WRAPCMD) echo $(SOLARBINDIR))))
49MY_LOCAL_CLASSDIR=$(strip $(subst,\,/ file:///$(shell $(WRAPCMD) echo $(PWD)/$(CLASSDIR)/)))
50.ELSE
51GIVE_EXEC_RIGHTS=chmod +x
52MY_URE_INTERNAL_JAVA_DIR=file://$(SOLARBINDIR)
53MY_LOCAL_CLASSDIR=file://$(PWD)/$(CLASSDIR)/
54.ENDIF
55
56my_components = bridgetest constructors cppobj
57.IF "$(SOLAR_JAVA)" != ""
58my_components += testComponent
59.END
60
61.IF "$(GUI)"=="WNT"
62.IF "$(compcheck)" != ""
63CFLAGSCXX += -DCOMPCHECK
64.ENDIF
65.ENDIF
66
67SLOFILES = \
68    $(SLO)$/bridgetest.obj \
69    $(SLO)$/cppobj.obj \
70    $(SLO)$/currentcontextchecker.obj \
71    $(SLO)$/multi.obj
72
73# ---- test ----
74
75LIB1TARGET=$(SLB)$/cppobj.lib
76LIB1OBJFILES= \
77		$(SLO)$/cppobj.obj $(SLO)$/currentcontextchecker.obj $(SLO)$/multi.obj
78
79SHL1TARGET = cppobj.uno
80SHL1STDLIBS= \
81		$(CPPULIB)		\
82		$(CPPUHELPERLIB)	\
83		$(SALLIB)
84
85SHL1LIBS=	$(LIB1TARGET)
86SHL1DEF=	$(MISC)$/$(SHL1TARGET).def
87DEF1NAME=	$(SHL1TARGET)
88SHL1VERSIONMAP = $(SOLARENV)/src/component.map
89
90# ---- test object ----
91
92LIB2TARGET=$(SLB)$/bridgetest.lib
93LIB2OBJFILES= \
94        $(SLO)$/bridgetest.obj \
95        $(SLO)$/currentcontextchecker.obj \
96        $(SLO)$/multi.obj
97
98SHL2TARGET = bridgetest.uno
99SHL2STDLIBS= \
100		$(CPPULIB)		\
101		$(CPPUHELPERLIB)	\
102		$(SALLIB)
103
104SHL2LIBS=	$(LIB2TARGET)
105SHL2DEF=	$(MISC)$/$(SHL2TARGET).def
106DEF2NAME=	$(SHL2TARGET)
107SHL2VERSIONMAP = $(SOLARENV)/src/component.map
108
109SHL3TARGET = constructors.uno
110SHL3OBJS = $(SLO)$/constructors.obj
111SHL3STDLIBS = $(CPPULIB) $(CPPUHELPERLIB) $(SALLIB)
112SHL3VERSIONMAP = $(SOLARENV)/src/component.map
113SHL3IMPLIB = i$(SHL3TARGET)
114DEF3NAME = $(SHL3TARGET)
115
116.IF "$(SOLAR_JAVA)" != ""
117JARFILES = java_uno.jar jurt.jar ridl.jar
118JAVATARGETS=\
119	$(DLLDEST)$/bridgetest_javaserver$(BATCH_SUFFIX) \
120	$(DLLDEST)$/bridgetest_inprocess_java$(BATCH_SUFFIX)
121.ENDIF
122
123# --- Targets ------------------------------------------------------
124.ENDIF # L10N_framework
125
126.INCLUDE :	target.mk
127.IF "$(L10N_framework)"==""
128ALLTAR: \
129		runtest \
130        $(DLLDEST)/services.rdb \
131		$(DLLDEST)$/uno_types.rdb \
132		$(DLLDEST)$/uno_services.rdb \
133		$(DLLDEST)$/bridgetest_server$(BATCH_SUFFIX) \
134		$(DLLDEST)$/bridgetest_client$(BATCH_SUFFIX) \
135		$(JAVATARGETS)
136
137#################################################################
138
139runtest : $(DLLDEST)$/uno_types.rdb $(DLLDEST)$/uno_services.rdb makefile.mk \
140        $(SHL1TARGETN) $(SHL2TARGETN) $(SHL3TARGETN)
141.IF "$(COM)$(OS)$(CPU)" == "GCCMACOSXP" || "$(COM)$(OS)$(CPU)" == "GCCFREEBSDI"
142	@echo "Mac OSX PPC GCC ad FreeBDS/i386 fails this test! likely broken UNO bridge. Fix me."
143.ELSE
144        cd $(DLLDEST) && $(AUGMENT_LIBRARY_PATH) $(SOLARBINDIR)/uno \
145		-ro uno_services.rdb -ro uno_types.rdb \
146		-s com.sun.star.test.bridge.BridgeTest -- \
147		com.sun.star.test.bridge.CppTestObject
148.ENDIF
149
150$(DLLDEST)/services.rdb :
151    $(COPY) $(SOLARXMLDIR)/ure/services.rdb $@
152
153$(DLLDEST)$/uno_types.rdb : $(SOLARBINDIR)$/udkapi.rdb
154	echo $(DLLDEST)
155	$(GNUCOPY) $? $@
156    $(REGMERGE) $@ / $(BIN)$/bridgetest.rdb
157
158$(DLLDEST)$/bridgetest_client$(BATCH_SUFFIX) .ERRREMOVE: makefile.mk
159    echo '$(AUGMENT_LIBRARY_PATH)' '$(SOLARBINDIR)'/uno -ro services.rdb \
160        -ro uno_services.rdb -ro uno_types.rdb \
161        -s com.sun.star.test.bridge.BridgeTest -- \
162        -u \''uno:socket,host=127.0.0.1,port=2002;urp;test'\' > $@
163	$(GIVE_EXEC_RIGHTS) $@
164
165$(DLLDEST)$/bridgetest_server$(BATCH_SUFFIX) .ERRREMOVE: makefile.mk
166    echo '$(AUGMENT_LIBRARY_PATH)' '$(SOLARBINDIR)'/uno -ro uno_services.rdb -ro uno_types.rdb \
167        -s com.sun.star.test.bridge.CppTestObject \
168        -u \''uno:socket,host=127.0.0.1,port=2002;urp;test'\' --singleaccept \
169        > $@
170	$(GIVE_EXEC_RIGHTS) $@
171
172
173.IF "$(SOLAR_JAVA)" != ""
174# jar-files, which regcomp needs so that it can use java
175MY_JARS=java_uno.jar ridl.jar jurt.jar juh.jar
176
177# CLASSPATH, which regcomp needs to be run
178MY_CLASSPATH_TMP=$(foreach,i,$(MY_JARS) $(SOLARBINDIR)$/$i)$(PATH_SEPERATOR)$(XCLASSPATH)
179MY_CLASSPATH=$(strip $(subst,!,$(PATH_SEPERATOR) $(MY_CLASSPATH_TMP:s/ /!/)))$(PATH_SEPERATOR)..$/class
180
181# Use "127.0.0.1" instead of "localhost", see #i32281#:
182$(DLLDEST)$/bridgetest_javaserver$(BATCH_SUFFIX) : makefile.mk
183	-rm -f $@
184	echo java -classpath "$(MY_CLASSPATH)$(PATH_SEPERATOR)..$/class$/testComponent.jar" \
185		com.sun.star.comp.bridge.TestComponentMain \""uno:socket,host=127.0.0.1,port=2002;urp;test"\" singleaccept > $@
186	$(GIVE_EXEC_RIGHTS) $@
187
188$(DLLDEST)$/bridgetest_inprocess_java$(BATCH_SUFFIX) .ERRREMOVE: makefile.mk
189	echo '$(AUGMENT_LIBRARY_PATH)' '$(SOLARBINDIR)'/uno -ro services.rdb \
190        -ro uno_services.rdb -ro uno_types.rdb \
191        -s com.sun.star.test.bridge.BridgeTest \
192        -env:URE_INTERNAL_JAVA_DIR=$(MY_URE_INTERNAL_JAVA_DIR) \
193        -env:MY_CLASSDIR_URL=$(MY_LOCAL_CLASSDIR) \
194        -- com.sun.star.test.bridge.JavaTestObject noCurrentContext > $@
195	$(GIVE_EXEC_RIGHTS) $@
196.ENDIF
197
198$(DLLDEST)$/uno_services.rdb .ERRREMOVE : $(SOLARENV)/bin/packcomponents.xslt \
199        $(MISC)/uno_services.input $(my_components:^"$(MISC)/":+".component")
200    $(XSLTPROC) --nonet --stringparam prefix $(PWD)/$(MISC)/ -o $@ \
201        $(SOLARENV)/bin/packcomponents.xslt $(MISC)/uno_services.input
202
203$(MISC)/uno_services.input :
204    echo \
205        '<list>$(my_components:^"<filename>":+".component</filename>")</list>' \
206        > $@
207
208$(MISC)/bridgetest.component .ERRREMOVE : $(SOLARENV)/bin/createcomponent.xslt \
209        bridgetest.component
210    $(XSLTPROC) --nonet --stringparam uri './$(SHL2TARGETN:f)' -o $@ \
211        $(SOLARENV)/bin/createcomponent.xslt bridgetest.component
212
213$(MISC)/constructors.component .ERRREMOVE : \
214        $(SOLARENV)/bin/createcomponent.xslt constructors.component
215    $(XSLTPROC) --nonet --stringparam uri './$(SHL3TARGETN:f)' -o $@ \
216        $(SOLARENV)/bin/createcomponent.xslt constructors.component
217
218$(MISC)/cppobj.component .ERRREMOVE : $(SOLARENV)/bin/createcomponent.xslt \
219        cppobj.component
220    $(XSLTPROC) --nonet --stringparam uri './$(SHL1TARGETN:f)' -o $@ \
221        $(SOLARENV)/bin/createcomponent.xslt cppobj.component
222
223$(MISC)/testComponent.component .ERRREMOVE : \
224        $(SOLARENV)/bin/createcomponent.xslt testComponent.component
225    $(XSLTPROC) --nonet --stringparam uri \
226        'vnd.sun.star.expand:$${{MY_CLASSDIR_URL}}testComponent.jar' -o $@ \
227        $(SOLARENV)/bin/createcomponent.xslt testComponent.component
228
229.ENDIF # L10N_framework
230