[Libreoffice-commits] core.git: Branch 'aoo/trunk' - codemaker/Ant_codemaker_test.mk codemaker/codemaker.pmk codemaker/Executable_cppumaker.mk codemaker/Executable_javamaker.mk codemaker/GoogleTest_cppumaker.mk codemaker/inc codemaker/Makefile codemaker/Module_codemaker.mk codemaker/Package_inc.mk codemaker/prj codemaker/source codemaker/StaticLibrary_codemaker.mk codemaker/StaticLibrary_commoncpp.mk codemaker/StaticLibrary_commonjava.mk codemaker/test Module_ooo.mk Repository.mk solenv/ant solenv/gbuild

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Thu Aug 23 22:09:29 UTC 2018


 Module_ooo.mk                                                                                    |    1 
 Repository.mk                                                                                    |    2 
 codemaker/Ant_codemaker_test.mk                                                                  |   15 
 codemaker/Executable_cppumaker.mk                                                                |   71 +
 codemaker/Executable_javamaker.mk                                                                |   62 +
 codemaker/GoogleTest_cppumaker.mk                                                                |   43 
 codemaker/Makefile                                                                               |   22 
 codemaker/Module_codemaker.mk                                                                    |   41 
 codemaker/Package_inc.mk                                                                         |   34 
 codemaker/StaticLibrary_codemaker.mk                                                             |   51 
 codemaker/StaticLibrary_commoncpp.mk                                                             |   45 
 codemaker/StaticLibrary_commonjava.mk                                                            |   45 
 codemaker/codemaker.pmk                                                                          |   49 
 codemaker/inc/pch/precompiled_commoncpp.cxx                                                      |   25 
 codemaker/inc/pch/precompiled_commoncpp.hxx                                                      |   28 
 codemaker/inc/pch/precompiled_commonjava.cxx                                                     |   25 
 codemaker/inc/pch/precompiled_commonjava.hxx                                                     |   28 
 codemaker/inc/pch/precompiled_cppumaker.cxx                                                      |   25 
 codemaker/inc/pch/precompiled_cppumaker.hxx                                                      |   28 
 codemaker/inc/pch/precompiled_javamaker.cxx                                                      |   25 
 codemaker/inc/pch/precompiled_javamaker.hxx                                                      |   28 
 codemaker/prj/build.lst                                                                          |   10 
 codemaker/prj/d.lst                                                                              |   14 
 codemaker/prj/makefile.mk                                                                        |   27 
 codemaker/source/commoncpp/commoncpp.cxx                                                         |    2 
 codemaker/source/cppumaker/cppumaker.cxx                                                         |    2 
 codemaker/source/cppumaker/cppuoptions.cxx                                                       |    2 
 codemaker/source/cppumaker/cpputype.cxx                                                          |    2 
 codemaker/source/cppumaker/dumputils.cxx                                                         |    2 
 codemaker/source/cppumaker/includes.cxx                                                          |    2 
 codemaker/source/cppumaker/makefile.mk                                                           |   61 -
 codemaker/source/javamaker/makefile.mk                                                           |   54 
 codemaker/test/cppumaker/makefile.mk                                                             |   71 -
 codemaker/test/javamaker/build.xml                                                               |   45 
 codemaker/test/javamaker/src/test/java/test/codemaker/javamaker/Javamaker_Test.java              |  545 +++++-----
 codemaker/test/javamaker/src/test/java/test/codemaker/javamaker/java15/Java15Javamaker_Test.java |   46 
 codemaker/test/javamaker/src/test/java/test/codemaker/javamaker/java15/types15.idl               |   46 
 solenv/ant/idl.xml                                                                               |   88 +
 solenv/gbuild/Executable.mk                                                                      |    1 
 solenv/gbuild/GoogleTest.mk                                                                      |    1 
 solenv/gbuild/LinkTarget.mk                                                                      |   38 
 solenv/gbuild/TargetLocations.mk                                                                 |    1 
 42 files changed, 1104 insertions(+), 649 deletions(-)

New commits:
commit 8f7e4a048f7d37bc329f212bac66aa87b7772ad9
Author:     Damjan Jovanovic <damjan at apache.org>
AuthorDate: Thu Aug 23 20:05:32 2018 +0000
Commit:     Damjan Jovanovic <damjan at apache.org>
CommitDate: Thu Aug 23 20:05:32 2018 +0000

    Port main/codemaker to gbuild.
    
    Also ported the Java tests in codemaker to JUnit
    instead of the internal test framework,
    and enabled them during the subsequent test phase.
    
    A gbuild API for building private UNO APIs using cppumaker was also added,
    and used to run the C++ subsequent tests in codemaker.
    
    Patch by: me

diff --git a/Module_ooo.mk b/Module_ooo.mk
index ff41468b3ef3..4ac3c74deac4 100644
--- a/Module_ooo.mk
+++ b/Module_ooo.mk
@@ -35,6 +35,7 @@ $(eval $(call gb_Module_add_moduledirs,ooo,\
     basegfx \
     binaryurp \
     canvas \
+    codemaker \
     comphelper \
     configmgr \
     cosv \
diff --git a/Repository.mk b/Repository.mk
index 51efa03c0438..a1bce69268cb 100644
--- a/Repository.mk
+++ b/Repository.mk
@@ -46,6 +46,8 @@ $(eval $(call gb_Helper_register_executables,OOO, \
 
 $(eval $(call gb_Helper_register_executables,SDK, \
     autodoc \
+    cppumaker \
+    javamaker \
     regcompare \
     uno-skeletonmaker \
 ))
diff --git a/codemaker/source/commoncpp/makefile.mk b/codemaker/Ant_codemaker_test.mk
similarity index 79%
rename from codemaker/source/commoncpp/makefile.mk
rename to codemaker/Ant_codemaker_test.mk
index 2519f9fde615..c4b1596a494a 100644
--- a/codemaker/source/commoncpp/makefile.mk
+++ b/codemaker/Ant_codemaker_test.mk
@@ -21,18 +21,7 @@
 
 
 
-PRJ := ..$/..
-PRJNAME := codemaker
-TARGET := commoncpp
+$(eval $(call gb_Ant_Ant,jurt,$(SRCDIR)/codemaker/test/javamaker/build.xml))
 
-ENABLE_EXCEPTIONS := TRUE
+# vim: set noet sw=4 ts=4:
 
-.INCLUDE: settings.mk
-
-SLOFILES = $(SLO)$/commoncpp.obj
-
-LIB1TARGET=$(LB)$/$(TARGET).lib
-LIB1ARCHIV=$(LB)$/lib$(TARGET).a
-LIB1OBJFILES=$(SLOFILES)
-
-.INCLUDE: target.mk
diff --git a/codemaker/Executable_cppumaker.mk b/codemaker/Executable_cppumaker.mk
new file mode 100644
index 000000000000..b876b6846fe2
--- /dev/null
+++ b/codemaker/Executable_cppumaker.mk
@@ -0,0 +1,71 @@
+#**************************************************************
+#  
+#  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.
+#  
+#**************************************************************
+
+
+
+$(eval $(call gb_Executable_Executable,cppumaker))
+
+$(eval $(call gb_Executable_set_targettype_gui,cppumaker,NO))
+
+$(eval $(call gb_StaticLibrary_add_package_headers,cppumaker,codemaker_inc))
+
+$(eval $(call gb_Library_add_precompiled_header,cppumaker,$(SRCDIR)/commoncpp/inc/pch/precompiled_cppumaker))
+
+$(eval $(call gb_Executable_set_include,cppumaker,\
+	$$(INCLUDE) \
+	-I$(SRCDIR)/codemaker/inc/ \
+	-I$(SRCDIR)/codemaker/inc/pch \
+))
+
+#$(eval $(call gb_Executable_add_defs,cppumaker,\
+#	-D_TOOLS_STRINGLIST \
+#))
+
+$(eval $(call gb_Executable_add_linked_libs,cppumaker,\
+	reg \
+	sal \
+	salhelper \
+	stl \
+    $(gb_STDLIBS) \
+))
+
+$(eval $(call gb_Executable_add_linked_static_libs,cppumaker,\
+	codemaker \
+	commoncpp \
+))
+
+#$(eval $(call gb_Executable_add_private_apis,cppumaker,\
+#	$(SRCDIR)/codemaker/test/cppumaker/types.idl \
+#))
+
+$(eval $(call gb_Executable_add_exception_objects,cppumaker,\
+	codemaker/source/cppumaker/cppumaker \
+	codemaker/source/cppumaker/cppuoptions \
+	codemaker/source/cppumaker/cpputype \
+	codemaker/source/cppumaker/dumputils \
+	codemaker/source/cppumaker/includes \
+))
+
+$(eval $(call gb_LinkTarget_set_cxx_optimization, \
+	cppumaker/source/cppumaker/cpputype, $(gb_COMPILERNOOPTFLAGS) \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/codemaker/Executable_javamaker.mk b/codemaker/Executable_javamaker.mk
new file mode 100644
index 000000000000..af180d8e0ea1
--- /dev/null
+++ b/codemaker/Executable_javamaker.mk
@@ -0,0 +1,62 @@
+#**************************************************************
+#  
+#  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.
+#  
+#**************************************************************
+
+
+
+$(eval $(call gb_Executable_Executable,javamaker))
+
+$(eval $(call gb_Executable_set_targettype_gui,javamaker,NO))
+
+$(eval $(call gb_StaticLibrary_add_package_headers,javamaker,codemaker_inc))
+
+$(eval $(call gb_Library_add_precompiled_header,javamaker,$(SRCDIR)/commoncpp/inc/pch/precompiled_javamaker))
+
+$(eval $(call gb_Executable_set_include,javamaker,\
+	$$(INCLUDE) \
+	-I$(SRCDIR)/codemaker/inc/ \
+	-I$(SRCDIR)/codemaker/inc/pch \
+))
+
+#$(eval $(call gb_Executable_add_defs,javamaker,\
+#	-D_TOOLS_STRINGLIST \
+#))
+
+$(eval $(call gb_Executable_add_linked_libs,javamaker,\
+	reg \
+	sal \
+	salhelper \
+	stl \
+    $(gb_STDLIBS) \
+))
+
+$(eval $(call gb_Executable_add_linked_static_libs,javamaker,\
+	codemaker \
+	commonjava \
+))
+
+$(eval $(call gb_Executable_add_exception_objects,javamaker,\
+	codemaker/source/javamaker/classfile \
+	codemaker/source/javamaker/javamaker \
+	codemaker/source/javamaker/javaoptions \
+	codemaker/source/javamaker/javatype \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/codemaker/source/codemaker/makefile.mk b/codemaker/GoogleTest_cppumaker.mk
similarity index 54%
rename from codemaker/source/codemaker/makefile.mk
rename to codemaker/GoogleTest_cppumaker.mk
index b5a3c366963d..3765ad4c7362 100644
--- a/codemaker/source/codemaker/makefile.mk
+++ b/codemaker/GoogleTest_cppumaker.mk
@@ -1,4 +1,4 @@
-#**************************************************************
+###############################################################
 #  
 #  Licensed to the Apache Software Foundation (ASF) under one
 #  or more contributor license agreements.  See the NOTICE file
@@ -17,31 +17,30 @@
 #  specific language governing permissions and limitations
 #  under the License.
 #  
-#**************************************************************
+###############################################################
 
 
+$(eval $(call gb_GoogleTest_GoogleTest,cppumaker_test))
 
-PRJ := ..$/..
-PRJNAME := codemaker
-TARGET := codemaker
+$(eval $(call gb_GoogleTest_add_exception_objects,cppumaker_test, \
+	codemaker/test/cppumaker/test_codemaker_cppumaker \
+))
 
-ENABLE_EXCEPTIONS := TRUE
+$(eval $(call gb_GoogleTest_set_include,cppumaker_test,\
+        $$(INCLUDE) \
+	-I$(SRCDIR)/codemaker/inc \
+	-I$(SRCDIR)/codemaker/inc/pch \
+))
 
-.INCLUDE: settings.mk
+$(eval $(call gb_GoogleTest_set_private_api,cppumaker_test,\
+	$(SRCDIR)/codemaker/test/cppumaker/types.idl \
+))
 
-SLOFILES = \
-    $(SLO)$/dependencies.obj \
-    $(SLO)$/exceptiontree.obj \
-    $(SLO)$/global.obj \
-    $(SLO)$/options.obj \
-    $(SLO)$/typemanager.obj \
-    $(SLO)$/unotype.obj \
-    $(SLO)$/codemaker.obj
+$(eval $(call gb_GoogleTest_add_linked_libs,cppumaker_test, \
+	cppu \
+	sal \
+	stl \
+	$(gb_STDLIBS) \
+))
 
-LIB1TARGET=$(LB)$/$(TARGET).lib
-.IF "$(GUI)" != "OS2"
-LIB1ARCHIV=$(LB)$/lib$(TARGET).a
-.ENDIF
-LIB1OBJFILES=$(SLOFILES)
-
-.INCLUDE: target.mk
+# vim: set noet sw=4 ts=4:
diff --git a/codemaker/source/commonjava/makefile.mk b/codemaker/Makefile
similarity index 76%
rename from codemaker/source/commonjava/makefile.mk
rename to codemaker/Makefile
index 04ce3d91d21f..c1d144cbd4c9 100644
--- a/codemaker/source/commonjava/makefile.mk
+++ b/codemaker/Makefile
@@ -19,20 +19,14 @@
 #  
 #**************************************************************
 
+ifeq ($(strip $(SOLARENV)),)
+$(error No environment set!)
+endif
 
+gb_PARTIALBUILD := T
+GBUILDDIR := $(SOLARENV)/gbuild
+include $(GBUILDDIR)/gbuild.mk
 
-PRJ := ..$/..
-PRJNAME := codemaker
-TARGET := commonjava
+$(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
 
-ENABLE_EXCEPTIONS := TRUE
-
-.INCLUDE: settings.mk
-
-SLOFILES = $(SLO)$/commonjava.obj
-
-LIB1TARGET=$(LB)$/$(TARGET).lib
-LIB1ARCHIV=$(LB)$/lib$(TARGET).a
-LIB1OBJFILES=$(SLOFILES)
-
-.INCLUDE: target.mk
+# vim: set noet sw=4 ts=4:
diff --git a/codemaker/inc/makefile.mk b/codemaker/Module_codemaker.mk
similarity index 67%
rename from codemaker/inc/makefile.mk
rename to codemaker/Module_codemaker.mk
index fce6bfe0a2de..8c98b5411084 100644
--- a/codemaker/inc/makefile.mk
+++ b/codemaker/Module_codemaker.mk
@@ -20,24 +20,25 @@
 #**************************************************************
 
 
-PRJ=..
-
-PRJNAME=codemaker
-TARGET=inc
-
-# --- Settings -----------------------------------------------------
-
-.INCLUDE :  settings.mk
-
-# --- Files --------------------------------------------------------
-# --- Targets -------------------------------------------------------
-
-.INCLUDE :  target.mk
-
-.IF "$(ENABLE_PCH)"!=""
-ALLTAR : \
-    $(SLO)$/precompiled.pch \
-    $(SLO)$/precompiled_ex.pch
-    
-.ENDIF			# "$(ENABLE_PCH)"!=""
 
+$(eval $(call gb_Module_Module,codemaker))
+
+$(eval $(call gb_Module_add_targets,codemaker,\
+	Executable_cppumaker \
+	Executable_javamaker \
+	StaticLibrary_codemaker \
+	StaticLibrary_commoncpp \
+	StaticLibrary_commonjava \
+	Package_inc \
+))
+
+ifeq ($(ENABLE_UNIT_TESTS),YES)
+ifneq ($(strip $(OOO_SUBSEQUENT_TESTS)),)
+$(eval $(call gb_Module_add_targets,codemaker,\
+	Ant_codemaker_test \
+	GoogleTest_cppumaker \
+))
+endif
+endif
+
+# vim: set noet sw=4 ts=4:
diff --git a/codemaker/Package_inc.mk b/codemaker/Package_inc.mk
new file mode 100644
index 000000000000..f4a5252f4df1
--- /dev/null
+++ b/codemaker/Package_inc.mk
@@ -0,0 +1,34 @@
+#**************************************************************
+#  
+#  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.
+#  
+#**************************************************************
+
+
+
+$(eval $(call gb_Package_Package,codemaker_inc,$(SRCDIR)/codemaker/inc))
+$(eval $(call gb_Package_add_file,codemaker_inc,inc/codemaker/codemaker.hxx,codemaker/codemaker.hxx))
+$(eval $(call gb_Package_add_file,codemaker_inc,inc/codemaker/commoncpp.hxx,codemaker/commoncpp.hxx))
+$(eval $(call gb_Package_add_file,codemaker_inc,inc/codemaker/commonjava.hxx,codemaker/commonjava.hxx))
+$(eval $(call gb_Package_add_file,codemaker_inc,inc/codemaker/dependencies.hxx,codemaker/dependencies.hxx))
+$(eval $(call gb_Package_add_file,codemaker_inc,inc/codemaker/exceptiontree.hxx,codemaker/exceptiontree.hxx))
+$(eval $(call gb_Package_add_file,codemaker_inc,inc/codemaker/generatedtypeset.hxx,codemaker/generatedtypeset.hxx))
+$(eval $(call gb_Package_add_file,codemaker_inc,inc/codemaker/global.hxx,codemaker/global.hxx))
+$(eval $(call gb_Package_add_file,codemaker_inc,inc/codemaker/options.hxx,codemaker/options.hxx))
+$(eval $(call gb_Package_add_file,codemaker_inc,inc/codemaker/typemanager.hxx,codemaker/typemanager.hxx))
+$(eval $(call gb_Package_add_file,codemaker_inc,inc/codemaker/unotype.hxx,codemaker/unotype.hxx))
diff --git a/codemaker/StaticLibrary_codemaker.mk b/codemaker/StaticLibrary_codemaker.mk
new file mode 100644
index 000000000000..f55d2e835552
--- /dev/null
+++ b/codemaker/StaticLibrary_codemaker.mk
@@ -0,0 +1,51 @@
+###############################################################
+#  
+#  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.
+#  
+###############################################################
+
+
+
+$(eval $(call gb_StaticLibrary_StaticLibrary,codemaker))
+
+$(eval $(call gb_StaticLibrary_add_package_headers,codemaker,codemaker_inc))
+
+$(eval $(call gb_Library_add_precompiled_header,codemaker,$(SRCDIR)/codemaker/inc/pch/precompiled_codemaker))
+
+#$(eval $(call gb_StaticLibrary_add_api,codemaker,\
+#	udkapi \
+#	offapi \
+#))
+
+$(eval $(call gb_StaticLibrary_set_include,codemaker,\
+	-I$(SRCDIR)/codemaker/inc \
+        -I$(SRCDIR)/codemaker/inc/pch \
+	$$(INCLUDE) \
+))
+
+$(eval $(call gb_StaticLibrary_add_exception_objects,codemaker,\
+	codemaker/source/codemaker/codemaker \
+	codemaker/source/codemaker/dependencies \
+	codemaker/source/codemaker/exceptiontree \
+	codemaker/source/codemaker/global \
+	codemaker/source/codemaker/options \
+	codemaker/source/codemaker/typemanager \
+	codemaker/source/codemaker/unotype \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/codemaker/StaticLibrary_commoncpp.mk b/codemaker/StaticLibrary_commoncpp.mk
new file mode 100644
index 000000000000..a8d7e9ffd291
--- /dev/null
+++ b/codemaker/StaticLibrary_commoncpp.mk
@@ -0,0 +1,45 @@
+###############################################################
+#  
+#  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.
+#  
+###############################################################
+
+
+
+$(eval $(call gb_StaticLibrary_StaticLibrary,commoncpp))
+
+$(eval $(call gb_StaticLibrary_add_package_headers,commoncpp,codemaker_inc))
+
+$(eval $(call gb_Library_add_precompiled_header,commoncpp,$(SRCDIR)/commoncpp/inc/pch/precompiled_commoncpp))
+
+#$(eval $(call gb_StaticLibrary_add_api,commoncpp,\
+#	udkapi \
+#	offapi \
+#))
+
+$(eval $(call gb_StaticLibrary_set_include,commoncpp,\
+	-I$(SRCDIR)/codemaker/inc \
+        -I$(SRCDIR)/codemaker/inc/pch \
+	$$(INCLUDE) \
+))
+
+$(eval $(call gb_StaticLibrary_add_exception_objects,commoncpp,\
+	codemaker/source/commoncpp/commoncpp \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/codemaker/StaticLibrary_commonjava.mk b/codemaker/StaticLibrary_commonjava.mk
new file mode 100644
index 000000000000..c25a532b0937
--- /dev/null
+++ b/codemaker/StaticLibrary_commonjava.mk
@@ -0,0 +1,45 @@
+###############################################################
+#  
+#  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.
+#  
+###############################################################
+
+
+
+$(eval $(call gb_StaticLibrary_StaticLibrary,commonjava))
+
+$(eval $(call gb_StaticLibrary_add_package_headers,commonjava,codemaker_inc))
+
+$(eval $(call gb_Library_add_precompiled_header,commonjava,$(SRCDIR)/commonjava/inc/pch/precompiled_commonjava))
+
+#$(eval $(call gb_StaticLibrary_add_api,commonjava,\
+#	udkapi \
+#	offapi \
+#))
+
+$(eval $(call gb_StaticLibrary_set_include,commonjava,\
+	-I$(SRCDIR)/codemaker/inc \
+        -I$(SRCDIR)/codemaker/inc/pch \
+	$$(INCLUDE) \
+))
+
+$(eval $(call gb_StaticLibrary_add_exception_objects,commonjava,\
+	codemaker/source/commonjava/commonjava \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/codemaker/codemaker.pmk b/codemaker/codemaker.pmk
deleted file mode 100644
index e7c8125a5f54..000000000000
--- a/codemaker/codemaker.pmk
+++ /dev/null
@@ -1,49 +0,0 @@
-#**************************************************************
-#  
-#  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.
-#  
-#**************************************************************
-
-
-
-.IF "$(GUI)" == "OS2"
-STL_OS2_BUILDING=1
-.ENDIF
-
-.IF "$(GUI)"=="WNT" || "$(GUI)"=="OS2"
-CODEMAKERLIBDEPN=codemaker.lib
-COMMONCPPLIBDEPN=commoncpp.lib
-COMMONJAVALIBDEPN=commonjava.lib
-.IF "$(COM)"=="GCC" && ("$(GUI)"=="WNT" || "$(GUI)"=="OS2")
-CODEMAKERLIBST=-lcodemaker
-COMMONCPPLIBST=-lcommoncpp
-COMMONJAVALIBST=-lcommonjava
-.ELSE
-CODEMAKERLIBST=codemaker.lib
-COMMONCPPLIBST=commoncpp.lib
-COMMONJAVALIBST=commonjava.lib
-.ENDIF
-.ELSE
-CODEMAKERLIBDEPN=libcodemaker.a
-COMMONCPPLIBDEPN=libcommoncpp.a
-COMMONJAVALIBDEPN=libcommonjava.a
-CODEMAKERLIBST=-lcodemaker
-COMMONCPPLIBST=-lcommoncpp
-COMMONJAVALIBST=-lcommonjava
-.ENDIF
-
diff --git a/codemaker/inc/pch/precompiled_commoncpp.cxx b/codemaker/inc/pch/precompiled_commoncpp.cxx
new file mode 100644
index 000000000000..8875ea8419ee
--- /dev/null
+++ b/codemaker/inc/pch/precompiled_commoncpp.cxx
@@ -0,0 +1,25 @@
+/**************************************************************
+ *
+ * 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.
+ *
+ *************************************************************/
+
+
+
+#include "precompiled_commoncpp.hxx"
+
diff --git a/codemaker/inc/pch/precompiled_commoncpp.hxx b/codemaker/inc/pch/precompiled_commoncpp.hxx
new file mode 100644
index 000000000000..d583f4d7ca34
--- /dev/null
+++ b/codemaker/inc/pch/precompiled_commoncpp.hxx
@@ -0,0 +1,28 @@
+/**************************************************************
+ *
+ * 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.
+ *
+ *************************************************************/
+
+
+
+// MARKER(update_precomp.py): Generated on 2006-09-01 17:49:33.874150
+
+#ifdef PRECOMPILED_HEADERS
+#endif
+
diff --git a/codemaker/inc/pch/precompiled_commonjava.cxx b/codemaker/inc/pch/precompiled_commonjava.cxx
new file mode 100644
index 000000000000..c73d70517b9e
--- /dev/null
+++ b/codemaker/inc/pch/precompiled_commonjava.cxx
@@ -0,0 +1,25 @@
+/**************************************************************
+ *
+ * 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.
+ *
+ *************************************************************/
+
+
+
+#include "precompiled_commonjava.hxx"
+
diff --git a/codemaker/inc/pch/precompiled_commonjava.hxx b/codemaker/inc/pch/precompiled_commonjava.hxx
new file mode 100644
index 000000000000..d583f4d7ca34
--- /dev/null
+++ b/codemaker/inc/pch/precompiled_commonjava.hxx
@@ -0,0 +1,28 @@
+/**************************************************************
+ *
+ * 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.
+ *
+ *************************************************************/
+
+
+
+// MARKER(update_precomp.py): Generated on 2006-09-01 17:49:33.874150
+
+#ifdef PRECOMPILED_HEADERS
+#endif
+
diff --git a/codemaker/inc/pch/precompiled_cppumaker.cxx b/codemaker/inc/pch/precompiled_cppumaker.cxx
new file mode 100644
index 000000000000..5decbf54561d
--- /dev/null
+++ b/codemaker/inc/pch/precompiled_cppumaker.cxx
@@ -0,0 +1,25 @@
+/**************************************************************
+ *
+ * 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.
+ *
+ *************************************************************/
+
+
+
+#include "precompiled_cppumaker.hxx"
+
diff --git a/codemaker/inc/pch/precompiled_cppumaker.hxx b/codemaker/inc/pch/precompiled_cppumaker.hxx
new file mode 100644
index 000000000000..d583f4d7ca34
--- /dev/null
+++ b/codemaker/inc/pch/precompiled_cppumaker.hxx
@@ -0,0 +1,28 @@
+/**************************************************************
+ *
+ * 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.
+ *
+ *************************************************************/
+
+
+
+// MARKER(update_precomp.py): Generated on 2006-09-01 17:49:33.874150
+
+#ifdef PRECOMPILED_HEADERS
+#endif
+
diff --git a/codemaker/inc/pch/precompiled_javamaker.cxx b/codemaker/inc/pch/precompiled_javamaker.cxx
new file mode 100644
index 000000000000..e6878bd76142
--- /dev/null
+++ b/codemaker/inc/pch/precompiled_javamaker.cxx
@@ -0,0 +1,25 @@
+/**************************************************************
+ *
+ * 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.
+ *
+ *************************************************************/
+
+
+
+#include "precompiled_javamaker.hxx"
+
diff --git a/codemaker/inc/pch/precompiled_javamaker.hxx b/codemaker/inc/pch/precompiled_javamaker.hxx
new file mode 100644
index 000000000000..d583f4d7ca34
--- /dev/null
+++ b/codemaker/inc/pch/precompiled_javamaker.hxx
@@ -0,0 +1,28 @@
+/**************************************************************
+ *
+ * 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.
+ *
+ *************************************************************/
+
+
+
+// MARKER(update_precomp.py): Generated on 2006-09-01 17:49:33.874150
+
+#ifdef PRECOMPILED_HEADERS
+#endif
+
diff --git a/codemaker/prj/build.lst b/codemaker/prj/build.lst
index c7bdd16c5e12..89f5093b74ce 100644
--- a/codemaker/prj/build.lst
+++ b/codemaker/prj/build.lst
@@ -1,10 +1,2 @@
 cm	codemaker	:	registry NULL
-cm	codemaker								usr1	-	all	cm_mkout NULL
-cm	codemaker\inc							nmake	-	all	cm_inc NULL
-cm	codemaker\prj							get		-	all	cm_prj NULL
-cm	codemaker\source\codemaker				nmake	-	all	cm_codemaker cm_inc NULL
-cm	codemaker\source\commoncpp				nmake	-	all	cm_cpp cm_inc NULL
-cm	codemaker\source\cppumaker				nmake	-	all	cm_cppumaker 	cm_codemaker cm_cpp cm_inc NULL
-cm	codemaker\source\commonjava				nmake	-	all	cm_java cm_inc NULL
-cm	codemaker\source\javamaker				nmake	-	all	cm_javamaker cm_codemaker cm_java cm_inc NULL
-cm	codemaker\test\cppumaker				nmake	-	all	cm_cppumaker_test cm_cppumaker cm_codemaker cm_cpp cm_inc NULL
+cm	codemaker\prj								nmake	-	all	cm_mkout NULL
diff --git a/codemaker/prj/d.lst b/codemaker/prj/d.lst
index 62b56b948e5c..e69de29bb2d1 100644
--- a/codemaker/prj/d.lst
+++ b/codemaker/prj/d.lst
@@ -1,14 +0,0 @@
-..\%__SRC%\bin\cppumaker.exe %_DEST%\bin%_EXT%\cppumaker.exe
-..\%__SRC%\bin\cppumaker.pdb %_DEST%\bin%_EXT%\cppumaker.pdb
-..\%__SRC%\bin\javamaker.exe %_DEST%\bin%_EXT%\javamaker.exe
-..\%__SRC%\bin\javamaker.pdb %_DEST%\bin%_EXT%\javamaker.pdb
-
-..\inc\codemaker\*.h %_DEST%\inc%_EXT%\codemaker\*.h
-..\inc\codemaker\*.hxx %_DEST%\inc%_EXT%\codemaker\*.hxx
-
-..\%__SRC%\bin\cppumaker %_DEST%\bin%_EXT%\cppumaker
-..\%__SRC%\bin\javamaker %_DEST%\bin%_EXT%\javamaker
-
-..\%__SRC%\lib\*.lib %_DEST%\lib%_EXT%\*.lib
-..\%__SRC%\lib\i*.lib %_DEST%\lib%_EXT%\i*.lib
-..\%__SRC%\lib\*.a %_DEST%\lib%_EXT%\*.a
diff --git a/codemaker/test/javamaker/makefile.mk b/codemaker/prj/makefile.mk
similarity index 71%
rename from codemaker/test/javamaker/makefile.mk
rename to codemaker/prj/makefile.mk
index 560469ed72fa..c62c6a657d16 100644
--- a/codemaker/test/javamaker/makefile.mk
+++ b/codemaker/prj/makefile.mk
@@ -21,17 +21,24 @@
 
 
 
-PRJ := ..$/..
-PRJNAME := codemaker
-TARGET := test_codemaker_javamaker
+PRJ=..
+TARGET=prj
 
-PACKAGE := test$/codemaker$/javamaker
-JAVATESTFILES := Test.java
-IDLTESTFILES := types.idl
-JARFILES := juh.jar jurt.jar ridl.jar OOoRunner.jar
+.INCLUDE : settings.mk
 
-JAVAMAKER = $(AUGMENT_LIBRARY_PATH) $(BIN)$/javamaker$(EXECPOST)
+.IF "$(VERBOSE)"!=""
+VERBOSEFLAG :=
+.ELSE
+VERBOSEFLAG := -s
+.ENDIF
 
-.INCLUDE: javaunittest.mk
+.IF "$(DEBUG)"!=""
+DEBUG_ARGUMENT=DEBUG=$(DEBUG)
+.ELIF "$(debug)"!=""
+DEBUG_ARGUMENT=debug=$(debug)
+.ELSE
+DEBUG_ARGUMENT=
+.ENDIF
 
-$(MISC)$/$(TARGET).javamaker.flag: $(BIN)$/javamaker$(EXECPOST)
+all:
+    cd $(PRJ) && $(GNUMAKE) $(VERBOSEFLAG) -r -j$(MAXPROCESS) $(gb_MAKETARGET) $(DEBUG_ARGUMENT) && $(GNUMAKE) $(VERBOSEFLAG) -r deliverlog
diff --git a/codemaker/source/commoncpp/commoncpp.cxx b/codemaker/source/commoncpp/commoncpp.cxx
index f99652318ddf..27cb3cb02b69 100644
--- a/codemaker/source/commoncpp/commoncpp.cxx
+++ b/codemaker/source/commoncpp/commoncpp.cxx
@@ -22,7 +22,7 @@
 
 
 // MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_codemaker.hxx"
+#include "precompiled_commoncpp.hxx"
 #include "sal/config.h"
 
 #include "codemaker/commoncpp.hxx"
diff --git a/codemaker/source/cppumaker/cppumaker.cxx b/codemaker/source/cppumaker/cppumaker.cxx
index 2d6085c500a4..fb68760fa23b 100644
--- a/codemaker/source/cppumaker/cppumaker.cxx
+++ b/codemaker/source/cppumaker/cppumaker.cxx
@@ -22,7 +22,7 @@
 
 
 // MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_codemaker.hxx"
+#include "precompiled_cppumaker.hxx"
 
 #include <stdio.h>
 
diff --git a/codemaker/source/cppumaker/cppuoptions.cxx b/codemaker/source/cppumaker/cppuoptions.cxx
index c2c71de4757b..bba5bc4a2783 100644
--- a/codemaker/source/cppumaker/cppuoptions.cxx
+++ b/codemaker/source/cppumaker/cppuoptions.cxx
@@ -22,7 +22,7 @@
 
 
 // MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_codemaker.hxx"
+#include "precompiled_cppumaker.hxx"
 #include <stdio.h>
 #include <string.h>
 
diff --git a/codemaker/source/cppumaker/cpputype.cxx b/codemaker/source/cppumaker/cpputype.cxx
index 3f0de055401d..86f8c5ad8136 100644
--- a/codemaker/source/cppumaker/cpputype.cxx
+++ b/codemaker/source/cppumaker/cpputype.cxx
@@ -22,7 +22,7 @@
 
 
 // MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_codemaker.hxx"
+#include "precompiled_cppumaker.hxx"
 
 #include <algorithm>
 #include <map>
diff --git a/codemaker/source/cppumaker/dumputils.cxx b/codemaker/source/cppumaker/dumputils.cxx
index b03a4c2b0b0b..cfbb9b491423 100644
--- a/codemaker/source/cppumaker/dumputils.cxx
+++ b/codemaker/source/cppumaker/dumputils.cxx
@@ -22,7 +22,7 @@
 
 
 // MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_codemaker.hxx"
+#include "precompiled_cppumaker.hxx"
 
 #include "dumputils.hxx"
 
diff --git a/codemaker/source/cppumaker/includes.cxx b/codemaker/source/cppumaker/includes.cxx
index 7b4043147fe2..b58e60b0b62e 100644
--- a/codemaker/source/cppumaker/includes.cxx
+++ b/codemaker/source/cppumaker/includes.cxx
@@ -22,7 +22,7 @@
 
 
 // MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_codemaker.hxx"
+#include "precompiled_cppumaker.hxx"
 
 #include "includes.hxx"
 
diff --git a/codemaker/source/cppumaker/makefile.mk b/codemaker/source/cppumaker/makefile.mk
deleted file mode 100644
index d23bfc65463c..000000000000
--- a/codemaker/source/cppumaker/makefile.mk
+++ /dev/null
@@ -1,61 +0,0 @@
-#**************************************************************
-#  
-#  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=codemaker
-TARGET=cppumaker
-TARGETTYPE=CUI
-LIBTARGET=NO
-
-ENABLE_EXCEPTIONS=TRUE
-
-# --- Settings -----------------------------------------------------
-.INCLUDE : settings.mk
-.INCLUDE : $(PRJ)$/codemaker.pmk
-
-# --- Files --------------------------------------------------------
-
-.IF "$(GUI)"=="WNT"
-.IF "$(COM)"!="GCC"
-CFLAGSNOOPT+=-Ob0
-.ENDIF
-.ENDIF
-
-OBJFILES=   $(OBJ)$/cppumaker.obj	\
-            $(OBJ)$/cppuoptions.obj \
-            $(OBJ)$/cpputype.obj \
-            $(OBJ)$/dumputils.obj \
-            $(OBJ)$/includes.obj
-
-NOOPTFILES= \
-            $(OBJ)$/cpputype.obj
-
-APP1TARGET= $(TARGET)
-APP1RPATH=SDK
-APP1OBJS=   $(OBJFILES)
-
-APP1DEPN= $(OUT)$/lib$/$(CODEMAKERLIBDEPN) $(OUT)$/lib$/$(COMMONCPPLIBDEPN)
-APP1STDLIBS= $(SALLIB) $(SALHELPERLIB) $(REGLIB) $(CODEMAKERLIBST) $(COMMONCPPLIBST)
-
-.INCLUDE :  target.mk
diff --git a/codemaker/source/javamaker/makefile.mk b/codemaker/source/javamaker/makefile.mk
deleted file mode 100644
index 7627abb721fc..000000000000
--- a/codemaker/source/javamaker/makefile.mk
+++ /dev/null
@@ -1,54 +0,0 @@
-#**************************************************************
-#  
-#  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=codemaker
-TARGET=javamaker
-TARGETTYPE=CUI
-LIBTARGET=NO
-
-ENABLE_EXCEPTIONS=TRUE
-
-# --- Settings -----------------------------------------------------
-
-.INCLUDE : settings.mk
-.INCLUDE : $(PRJ)$/codemaker.pmk
-
-# --- Files --------------------------------------------------------
-
-OBJFILES = \
-    $(OBJ)$/classfile.obj \
-    $(OBJ)$/javamaker.obj \
-    $(OBJ)$/javaoptions.obj \
-    $(OBJ)$/javatype.obj
-
-APP1TARGET= $(TARGET)
-APP1RPATH=SDK
-APP1OBJS = $(OBJFILES)
-
-APP1DEPN= $(OUT)$/lib$/$(CODEMAKERLIBDEPN) $(OUT)$/lib$/$(COMMONJAVALIBDEPN)
-APP1STDLIBS= $(SALLIB) $(SALHELPERLIB) $(REGLIB) $(CODEMAKERLIBST) $(COMMONJAVALIBST)
-
-.INCLUDE :  target.mk
-
diff --git a/codemaker/test/cppumaker/makefile.mk b/codemaker/test/cppumaker/makefile.mk
deleted file mode 100644
index 69dc75eeed45..000000000000
--- a/codemaker/test/cppumaker/makefile.mk
+++ /dev/null
@@ -1,71 +0,0 @@
-#**************************************************************
-#  
-#  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.
-#  
-#**************************************************************
-
-
-
-.IF "$(OOO_SUBSEQUENT_TESTS)" == ""
-nothing .PHONY:
-.ELSE
-
-PRJ := ..$/..
-PRJNAME := codemaker
-TARGET := test_codemaker_cppumaker
-
-ENABLE_EXCEPTIONS := TRUE
-
-.INCLUDE: settings.mk
-
-.IF "$(ENABLE_UNIT_TESTS)" != "YES"
-all:
-    @echo unit tests are disabled. Nothing to do.
-
-.ELSE
-
-INCPRE += $(MISC)$/$(TARGET)$/inc
-
-APP1TARGET = $(TARGET)
-APP1OBJS = $(SLO)$/test_codemaker_cppumaker.obj
-APP1STDLIBS = $(CPPULIB) $(GTESTLIB) $(SALLIB) $(TESTSHL2LIB)
-APP1TEST = enabled
-
-.INCLUDE: target.mk
-
-$(APP1OBJS): $(MISC)$/$(TARGET).cppumaker.flag
-
-$(MISC)$/$(TARGET).cppumaker.flag: $(BIN)$/cppumaker$(EXECPOST)
-$(MISC)$/$(TARGET).cppumaker.flag: $(MISC)$/$(TARGET).rdb
-    - $(MKDIRHIER) $(MISC)$/$(TARGET)$/inc
-    $(AUGMENT_LIBRARY_PATH) $(BIN)$/cppumaker$(EXECPOST) \
-        -O$(MISC)$/$(TARGET)$/inc -BUCR -C $< $(SOLARBINDIR)$/udkapi.rdb
-    $(TOUCH) $@
-
-$(MISC)$/$(TARGET).rdb: $(MISC)$/$(TARGET)$/types.urd
-    - rm $@
-    $(REGMERGE) $@ /UCR $<
-
-$(MISC)$/$(TARGET)$/types.urd: types.idl
-    - $(MKDIR) $(MISC)$/$(TARGET)
-    $(IDLC) -O$(MISC)$/$(TARGET) -I$(SOLARIDLDIR) -cid -we $<
-
-
-.ENDIF # "$(ENABLE_UNIT_TESTS)" != "YES"
-
-.END # "$(OOO_SUBSEQUENT_TESTS)" == ""
diff --git a/codemaker/test/javamaker/build.xml b/codemaker/test/javamaker/build.xml
new file mode 100644
index 000000000000..d455f8e6f003
--- /dev/null
+++ b/codemaker/test/javamaker/build.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--***********************************************************
+ *
+ * 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.
+ *
+ ***********************************************************-->
+
+
+<project name="codemaker_test" default="main">
+
+    <property file="../../../ant.properties"/>
+    <import file="${SRC_ROOT}/solenv/ant/aoo-ant.xml"/>
+
+    <target name="init-project">
+
+        <path id="main.classpath">
+            <pathelement location="${OUTDIR}/bin/juh.jar"/>
+            <pathelement location="${OUTDIR}/bin/jurt.jar"/>
+            <pathelement location="${OUTDIR}/bin/ridl.jar"/>
+        </path>
+
+        <filelist id="idl.files">
+            <file name="${test.src.dir}/test/codemaker/javamaker/types.idl"/>
+            <file name="${test.src.dir}/test/codemaker/javamaker/java15/types15.idl"/>
+        </filelist>
+
+    </target>
+
+</project>
+
diff --git a/codemaker/test/javamaker/Test.java b/codemaker/test/javamaker/src/test/java/test/codemaker/javamaker/Javamaker_Test.java
similarity index 52%
rename from codemaker/test/javamaker/Test.java
rename to codemaker/test/javamaker/src/test/java/test/codemaker/javamaker/Javamaker_Test.java
index 0c0cdf78f90b..06eb16f75f2e 100644
--- a/codemaker/test/javamaker/Test.java
+++ b/codemaker/test/javamaker/src/test/java/test/codemaker/javamaker/Javamaker_Test.java
@@ -30,8 +30,9 @@ import com.sun.star.uno.DeploymentException;
 import com.sun.star.uno.Type;
 import com.sun.star.uno.XComponentContext;
 import com.sun.star.uno.XNamingService;
-import complexlib.ComplexTestCase;
 import java.util.EventListener;
+import org.junit.Before;
+import org.junit.Test;
 import test.codemaker.javamaker.Enum1;
 import test.codemaker.javamaker.Enum2;
 import test.codemaker.javamaker.PolyStruct;
@@ -74,155 +75,156 @@ import test.codemaker.javamaker.services.service_volatile;
 import test.codemaker.javamaker.services.service_while;
 import test.codemaker.javamaker.singleton_abstract;
 
-public final class Test extends ComplexTestCase {
-    public String[] getTestMethodNames() {
-        return new String[] {
-            "testEnum1", "testEnum2", "testPolyStruct", "testEmptyStruct2",
-            "testFullStruct2", "testXEventListener", "testS1", "testS2",
-            "testKeywordServices", "testSingletons" };
-    }
+import static org.junit.Assert.*;
 
+public final class Javamaker_Test {
+    @Before
     public void before() throws Exception {
         context = Bootstrap.createInitialComponentContext(null);
     }
 
+    @Test
     public void testEnum1() {
-        assure(Enum1.VALUE1.getValue() == -100);
-        assure(Enum1.VALUE2.getValue() == 100);
-        assure(Enum1.VALUE1_value == -100);
-        assure(Enum1.VALUE2_value == 100);
-        assure(Enum1.getDefault() == Enum1.VALUE1);
-        assure(Enum1.fromInt(-101) == null);
-        assure(Enum1.fromInt(-100) == Enum1.VALUE1);
-        assure(Enum1.fromInt(-99) == null);
-        assure(Enum1.fromInt(0) == null);
-        assure(Enum1.fromInt(99) == null);
-        assure(Enum1.fromInt(100) == Enum1.VALUE2);
-        assure(Enum1.fromInt(101) == null);
+        assertTrue(Enum1.VALUE1.getValue() == -100);
+        assertTrue(Enum1.VALUE2.getValue() == 100);
+        assertTrue(Enum1.VALUE1_value == -100);
+        assertTrue(Enum1.VALUE2_value == 100);
+        assertTrue(Enum1.getDefault() == Enum1.VALUE1);
+        assertTrue(Enum1.fromInt(-101) == null);
+        assertTrue(Enum1.fromInt(-100) == Enum1.VALUE1);
+        assertTrue(Enum1.fromInt(-99) == null);
+        assertTrue(Enum1.fromInt(0) == null);
+        assertTrue(Enum1.fromInt(99) == null);
+        assertTrue(Enum1.fromInt(100) == Enum1.VALUE2);
+        assertTrue(Enum1.fromInt(101) == null);
     }
 
+    @Test
     public void testEnum2() {
-        assure(Enum2.VALUE0.getValue() == 0);
-        assure(Enum2.VALUE1.getValue() == 1);
-        assure(Enum2.VALUE2.getValue() == 2);
-        assure(Enum2.VALUE4.getValue() == 4);
-        assure(Enum2.VALUE0_value == 0);
-        assure(Enum2.VALUE1_value == 1);
-        assure(Enum2.VALUE2_value == 2);
-        assure(Enum2.VALUE4_value == 4);
-        assure(Enum2.getDefault() == Enum2.VALUE0);
-        assure(Enum2.fromInt(-1) == null);
-        assure(Enum2.fromInt(0) == Enum2.VALUE0);
-        assure(Enum2.fromInt(1) == Enum2.VALUE1);
-        assure(Enum2.fromInt(2) == Enum2.VALUE2);
-        assure(Enum2.fromInt(3) == null);
-        assure(Enum2.fromInt(4) == Enum2.VALUE4);
-        assure(Enum2.fromInt(5) == null);
+        assertTrue(Enum2.VALUE0.getValue() == 0);
+        assertTrue(Enum2.VALUE1.getValue() == 1);
+        assertTrue(Enum2.VALUE2.getValue() == 2);
+        assertTrue(Enum2.VALUE4.getValue() == 4);
+        assertTrue(Enum2.VALUE0_value == 0);
+        assertTrue(Enum2.VALUE1_value == 1);
+        assertTrue(Enum2.VALUE2_value == 2);
+        assertTrue(Enum2.VALUE4_value == 4);
+        assertTrue(Enum2.getDefault() == Enum2.VALUE0);
+        assertTrue(Enum2.fromInt(-1) == null);
+        assertTrue(Enum2.fromInt(0) == Enum2.VALUE0);
+        assertTrue(Enum2.fromInt(1) == Enum2.VALUE1);
+        assertTrue(Enum2.fromInt(2) == Enum2.VALUE2);
+        assertTrue(Enum2.fromInt(3) == null);
+        assertTrue(Enum2.fromInt(4) == Enum2.VALUE4);
+        assertTrue(Enum2.fromInt(5) == null);
     }
 
+    @Test
     public void testPolyStruct() {
         PolyStruct s = new PolyStruct();
-        assure(s.member1 == null);
-        assure(s.member2 == 0);
+        assertTrue(s.member1 == null);
+        assertTrue(s.member2 == 0);
         s = new PolyStruct("ABC", 5);
-        assure(s.member1.equals("ABC"));
-        assure(s.member2 == 5);
+        assertTrue(s.member1.equals("ABC"));
+        assertTrue(s.member2 == 5);
     }
 
+    @Test
     public void testEmptyStruct2() {
         Struct2 s = new Struct2();
-        assure(s.p1 == false);
-        assure(s.p2 == 0);
-        assure(s.p3 == 0);
-        assure(s.p4 == 0);
-        assure(s.p5 == 0);
-        assure(s.p6 == 0);
-        assure(s.p7 == 0L);
-        assure(s.p8 == 0L);
-        assure(s.p9 == 0.0f);
-        assure(s.p10 == 0.0);
-        assure(s.p11 == '\u0000');
-        assure(s.p12.equals(""));
-        assure(s.p13.equals(Type.VOID));
-        assure(s.p14.equals(Any.VOID));
-        assure(s.p15 == Enum2.VALUE0);
-        assure(s.p16.member1 == 0);
-        assure(s.p17 == null);
-        assure(s.p18 == null);
-        assure(s.t1 == false);
-        assure(s.t2 == 0);
-        assure(s.t3 == 0);
-        assure(s.t4 == 0);
-        assure(s.t5 == 0);
-        assure(s.t6 == 0);
-        assure(s.t7 == 0L);
-        assure(s.t8 == 0L);
-        assure(s.t9 == 0.0f);
-        assure(s.t10 == 0.0);
-        assure(s.t11 == '\u0000');
-        assure(s.t12.equals(""));
-        assure(s.t13.equals(Type.VOID));
-        assure(s.t14.equals(Any.VOID));
-        assure(s.t15 == Enum2.VALUE0);
-        assure(s.t16.member1 == 0);
-        assure(s.t17 == null);
-        assure(s.t18 == null);
-        assure(s.a1.length == 0);
-        assure(s.a2.length == 0);
-        assure(s.a3.length == 0);
-        assure(s.a4.length == 0);
-        assure(s.a5.length == 0);
-        assure(s.a6.length == 0);
-        assure(s.a7.length == 0);
-        assure(s.a8.length == 0);
-        assure(s.a9.length == 0);
-        assure(s.a10.length == 0);
-        assure(s.a11.length == 0);
-        assure(s.a12.length == 0);
-        assure(s.a13.length == 0);
-        assure(s.a14.length == 0);
-        assure(s.a15.length == 0);
-        assure(s.a16.length == 0);
-        assure(s.a17.length == 0);
-        assure(s.a18.length == 0);
-        assure(s.aa1.length == 0);
-        assure(s.aa2.length == 0);
-        assure(s.aa3.length == 0);
-        assure(s.aa4.length == 0);
-        assure(s.aa5.length == 0);
-        assure(s.aa6.length == 0);
-        assure(s.aa7.length == 0);
-        assure(s.aa8.length == 0);
-        assure(s.aa9.length == 0);
-        assure(s.aa10.length == 0);
-        assure(s.aa11.length == 0);
-        assure(s.aa12.length == 0);
-        assure(s.aa13.length == 0);
-        assure(s.aa14.length == 0);
-        assure(s.aa15.length == 0);
-        assure(s.aa16.length == 0);
-        assure(s.aa17.length == 0);
-        assure(s.aa18.length == 0);
-        assure(s.at1.length == 0);
-        assure(s.at2.length == 0);
-        assure(s.at3.length == 0);
-        assure(s.at4.length == 0);
-        assure(s.at5.length == 0);
-        assure(s.at6.length == 0);
-        assure(s.at7.length == 0);
-        assure(s.at8.length == 0);
-        assure(s.at9.length == 0);
-        assure(s.at10.length == 0);
-        assure(s.at11.length == 0);
-        assure(s.at12.length == 0);
-        assure(s.at13.length == 0);
-        assure(s.at14.length == 0);
-        assure(s.at15.length == 0);
-        assure(s.at16.length == 0);
-        assure(s.at17.length == 0);
-        assure(s.at18.length == 0);
+        assertTrue(s.p1 == false);
+        assertTrue(s.p2 == 0);
+        assertTrue(s.p3 == 0);
+        assertTrue(s.p4 == 0);
+        assertTrue(s.p5 == 0);
+        assertTrue(s.p6 == 0);
+        assertTrue(s.p7 == 0L);
+        assertTrue(s.p8 == 0L);
+        assertTrue(s.p9 == 0.0f);
+        assertTrue(s.p10 == 0.0);
+        assertTrue(s.p11 == '\u0000');
+        assertTrue(s.p12.equals(""));
+        assertTrue(s.p13.equals(Type.VOID));
+        assertTrue(s.p14.equals(Any.VOID));
+        assertTrue(s.p15 == Enum2.VALUE0);
+        assertTrue(s.p16.member1 == 0);
+        assertTrue(s.p17 == null);
+        assertTrue(s.p18 == null);
+        assertTrue(s.t1 == false);
+        assertTrue(s.t2 == 0);
+        assertTrue(s.t3 == 0);
+        assertTrue(s.t4 == 0);
+        assertTrue(s.t5 == 0);
+        assertTrue(s.t6 == 0);
+        assertTrue(s.t7 == 0L);
+        assertTrue(s.t8 == 0L);
+        assertTrue(s.t9 == 0.0f);
+        assertTrue(s.t10 == 0.0);
+        assertTrue(s.t11 == '\u0000');
+        assertTrue(s.t12.equals(""));
+        assertTrue(s.t13.equals(Type.VOID));
+        assertTrue(s.t14.equals(Any.VOID));
+        assertTrue(s.t15 == Enum2.VALUE0);
+        assertTrue(s.t16.member1 == 0);
+        assertTrue(s.t17 == null);
+        assertTrue(s.t18 == null);
+        assertTrue(s.a1.length == 0);
+        assertTrue(s.a2.length == 0);
+        assertTrue(s.a3.length == 0);
+        assertTrue(s.a4.length == 0);
+        assertTrue(s.a5.length == 0);
+        assertTrue(s.a6.length == 0);
+        assertTrue(s.a7.length == 0);
+        assertTrue(s.a8.length == 0);
+        assertTrue(s.a9.length == 0);
+        assertTrue(s.a10.length == 0);
+        assertTrue(s.a11.length == 0);
+        assertTrue(s.a12.length == 0);
+        assertTrue(s.a13.length == 0);
+        assertTrue(s.a14.length == 0);
+        assertTrue(s.a15.length == 0);
+        assertTrue(s.a16.length == 0);
+        assertTrue(s.a17.length == 0);
+        assertTrue(s.a18.length == 0);
+        assertTrue(s.aa1.length == 0);
+        assertTrue(s.aa2.length == 0);
+        assertTrue(s.aa3.length == 0);
+        assertTrue(s.aa4.length == 0);
+        assertTrue(s.aa5.length == 0);
+        assertTrue(s.aa6.length == 0);
+        assertTrue(s.aa7.length == 0);
+        assertTrue(s.aa8.length == 0);
+        assertTrue(s.aa9.length == 0);
+        assertTrue(s.aa10.length == 0);
+        assertTrue(s.aa11.length == 0);
+        assertTrue(s.aa12.length == 0);
+        assertTrue(s.aa13.length == 0);
+        assertTrue(s.aa14.length == 0);
+        assertTrue(s.aa15.length == 0);
+        assertTrue(s.aa16.length == 0);
+        assertTrue(s.aa17.length == 0);
+        assertTrue(s.aa18.length == 0);
+        assertTrue(s.at1.length == 0);
+        assertTrue(s.at2.length == 0);
+        assertTrue(s.at3.length == 0);
+        assertTrue(s.at4.length == 0);
+        assertTrue(s.at5.length == 0);
+        assertTrue(s.at6.length == 0);
+        assertTrue(s.at7.length == 0);
+        assertTrue(s.at8.length == 0);
+        assertTrue(s.at9.length == 0);
+        assertTrue(s.at10.length == 0);
+        assertTrue(s.at11.length == 0);
+        assertTrue(s.at12.length == 0);
+        assertTrue(s.at13.length == 0);
+        assertTrue(s.at14.length == 0);
+        assertTrue(s.at15.length == 0);
+        assertTrue(s.at16.length == 0);
+        assertTrue(s.at17.length == 0);
+        assertTrue(s.at18.length == 0);
     }
 
+    @Test
     public void testFullStruct2() {
         //TODO:
         Struct2 s = new Struct2(
@@ -247,125 +249,127 @@ public final class Test extends ComplexTestCase {
             new char[0][], new String[0][], new Type[0][], new Object[0][],
             new Enum2[0][], new Struct1[0][], new Object[0][],
             new XNamingService[0][]);
-        assure(s.p1 == true);
-        assure(s.p2 == 1);
-        assure(s.p3 == 2);
-        assure(s.p4 == 3);
-        assure(s.p5 == 4);
-        assure(s.p6 == 5);
-        assure(s.p7 == 6L);
-        assure(s.p8 == 7L);
-        assure(s.p9 == 0.8f);
-        assure(s.p10 == 0.9);
-        assure(s.p11 == 'A');
-        assure(s.p12.equals("BCD"));
-        assure(s.p13.equals(Type.UNSIGNED_HYPER));
-        assure(s.p14.equals(new Integer(22)));
-        assure(s.p15 == Enum2.VALUE4);
-        assure(s.p16.member1 == 1);
-        assure(s.p17 == null);
-        assure(s.p18 == null);
-        assure(s.t1 == false);
-        assure(s.t2 == 0);
-        assure(s.t3 == 0);
-        assure(s.t4 == 0);
-        assure(s.t5 == 0);
-        assure(s.t6 == 0);
-        assure(s.t7 == 0L);
-        assure(s.t8 == 0L);
-        assure(s.t9 == 0.0f);
-        assure(s.t10 == 0.0);
-        assure(s.t11 == '\u0000');
-        assure(s.t12.equals(""));
-        assure(s.t13.equals(Type.VOID));
-        assure(s.t14.equals(Any.VOID));
-        assure(s.t15 == Enum2.VALUE0);
-        assure(s.t16.member1 == 0);
-        assure(s.t17 == null);
-        assure(s.t18 == null);
-        assure(s.a1.length == 2);
-        assure(s.a1[0] == false);
-        assure(s.a1[1] == true);
-        assure(s.a2.length == 2);
-        assure(s.a2[0] == 1);
-        assure(s.a2[1] == 2);
-        assure(s.a3.length == 0);
-        assure(s.a4.length == 0);
-        assure(s.a5.length == 0);
-        assure(s.a6.length == 0);
-        assure(s.a7.length == 0);
-        assure(s.a8.length == 0);
-        assure(s.a9.length == 0);
-        assure(s.a10.length == 0);
-        assure(s.a11.length == 0);
-        assure(s.a12.length == 0);
-        assure(s.a13.length == 0);
-        assure(s.a14.length == 0);
-        assure(s.a15.length == 0);
-        assure(s.a16.length == 2);
-        assure(s.a16[0].member1 == 1);
-        assure(s.a16[1].member1 == 2);
-        assure(s.a17.length == 0);
-        assure(s.a18.length == 0);
-        assure(s.aa1.length == 0);
-        assure(s.aa2.length == 0);
-        assure(s.aa3.length == 0);
-        assure(s.aa4.length == 0);
-        assure(s.aa5.length == 0);
-        assure(s.aa6.length == 0);
-        assure(s.aa7.length == 0);
-        assure(s.aa8.length == 0);
-        assure(s.aa9.length == 0);
-        assure(s.aa10.length == 0);
-        assure(s.aa11.length == 0);
-        assure(s.aa12.length == 0);
-        assure(s.aa13.length == 0);
-        assure(s.aa14.length == 0);
-        assure(s.aa15.length == 0);
-        assure(s.aa16.length == 0);
-        assure(s.aa17.length == 0);
-        assure(s.aa18.length == 0);
-        assure(s.at1.length == 0);
-        assure(s.at2.length == 0);
-        assure(s.at3.length == 0);
-        assure(s.at4.length == 0);
-        assure(s.at5.length == 0);
-        assure(s.at6.length == 0);
-        assure(s.at7.length == 0);
-        assure(s.at8.length == 0);
-        assure(s.at9.length == 0);
-        assure(s.at10.length == 0);
-        assure(s.at11.length == 0);
-        assure(s.at12.length == 0);
-        assure(s.at13.length == 0);
-        assure(s.at14.length == 0);
-        assure(s.at15.length == 0);
-        assure(s.at16.length == 0);
-        assure(s.at17.length == 0);
-        assure(s.at18.length == 0);
+        assertTrue(s.p1 == true);
+        assertTrue(s.p2 == 1);
+        assertTrue(s.p3 == 2);
+        assertTrue(s.p4 == 3);
+        assertTrue(s.p5 == 4);
+        assertTrue(s.p6 == 5);
+        assertTrue(s.p7 == 6L);
+        assertTrue(s.p8 == 7L);
+        assertTrue(s.p9 == 0.8f);
+        assertTrue(s.p10 == 0.9);
+        assertTrue(s.p11 == 'A');
+        assertTrue(s.p12.equals("BCD"));
+        assertTrue(s.p13.equals(Type.UNSIGNED_HYPER));
+        assertTrue(s.p14.equals(new Integer(22)));
+        assertTrue(s.p15 == Enum2.VALUE4);
+        assertTrue(s.p16.member1 == 1);
+        assertTrue(s.p17 == null);
+        assertTrue(s.p18 == null);
+        assertTrue(s.t1 == false);
+        assertTrue(s.t2 == 0);
+        assertTrue(s.t3 == 0);
+        assertTrue(s.t4 == 0);
+        assertTrue(s.t5 == 0);
+        assertTrue(s.t6 == 0);
+        assertTrue(s.t7 == 0L);
+        assertTrue(s.t8 == 0L);
+        assertTrue(s.t9 == 0.0f);
+        assertTrue(s.t10 == 0.0);
+        assertTrue(s.t11 == '\u0000');
+        assertTrue(s.t12.equals(""));
+        assertTrue(s.t13.equals(Type.VOID));
+        assertTrue(s.t14.equals(Any.VOID));
+        assertTrue(s.t15 == Enum2.VALUE0);
+        assertTrue(s.t16.member1 == 0);
+        assertTrue(s.t17 == null);
+        assertTrue(s.t18 == null);
+        assertTrue(s.a1.length == 2);
+        assertTrue(s.a1[0] == false);
+        assertTrue(s.a1[1] == true);
+        assertTrue(s.a2.length == 2);
+        assertTrue(s.a2[0] == 1);
+        assertTrue(s.a2[1] == 2);
+        assertTrue(s.a3.length == 0);
+        assertTrue(s.a4.length == 0);
+        assertTrue(s.a5.length == 0);
+        assertTrue(s.a6.length == 0);
+        assertTrue(s.a7.length == 0);
+        assertTrue(s.a8.length == 0);
+        assertTrue(s.a9.length == 0);
+        assertTrue(s.a10.length == 0);
+        assertTrue(s.a11.length == 0);
+        assertTrue(s.a12.length == 0);
+        assertTrue(s.a13.length == 0);
+        assertTrue(s.a14.length == 0);
+        assertTrue(s.a15.length == 0);
+        assertTrue(s.a16.length == 2);
+        assertTrue(s.a16[0].member1 == 1);
+        assertTrue(s.a16[1].member1 == 2);
+        assertTrue(s.a17.length == 0);
+        assertTrue(s.a18.length == 0);
+        assertTrue(s.aa1.length == 0);
+        assertTrue(s.aa2.length == 0);
+        assertTrue(s.aa3.length == 0);
+        assertTrue(s.aa4.length == 0);
+        assertTrue(s.aa5.length == 0);
+        assertTrue(s.aa6.length == 0);
+        assertTrue(s.aa7.length == 0);
+        assertTrue(s.aa8.length == 0);
+        assertTrue(s.aa9.length == 0);
+        assertTrue(s.aa10.length == 0);
+        assertTrue(s.aa11.length == 0);
+        assertTrue(s.aa12.length == 0);
+        assertTrue(s.aa13.length == 0);
+        assertTrue(s.aa14.length == 0);
+        assertTrue(s.aa15.length == 0);
+        assertTrue(s.aa16.length == 0);
+        assertTrue(s.aa17.length == 0);
+        assertTrue(s.aa18.length == 0);
+        assertTrue(s.at1.length == 0);
+        assertTrue(s.at2.length == 0);
+        assertTrue(s.at3.length == 0);
+        assertTrue(s.at4.length == 0);
+        assertTrue(s.at5.length == 0);
+        assertTrue(s.at6.length == 0);
+        assertTrue(s.at7.length == 0);
+        assertTrue(s.at8.length == 0);
+        assertTrue(s.at9.length == 0);
+        assertTrue(s.at10.length == 0);
+        assertTrue(s.at11.length == 0);
+        assertTrue(s.at12.length == 0);
+        assertTrue(s.at13.length == 0);
+        assertTrue(s.at14.length == 0);
+        assertTrue(s.at15.length == 0);
+        assertTrue(s.at16.length == 0);
+        assertTrue(s.at17.length == 0);
+        assertTrue(s.at18.length == 0);
     }
 
+    @Test
     public void testXEventListener() {
-        assure(EventListener.class.isAssignableFrom(XEventListener.class));
+        assertTrue(EventListener.class.isAssignableFrom(XEventListener.class));
     }
 
+    @Test
     public void testS1() throws com.sun.star.uno.Exception {
         //TODO:
         try {
             S1.create1(context);
-            failed("S1.create1");
+            fail("S1.create1");
         } catch (DeploymentException e) {}
         try {
             S1.create2(context, new Any[0]);
-            failed("S1.create2");
+            fail("S1.create2");
         } catch (com.sun.star.uno.Exception e) {}
         try {
             S1.create3(context, new Any[0]);
-            failed("S1.create3");
+            fail("S1.create3");
         } catch (DeploymentException e) {}
         try {
             S1.create4(context, 0, 0, 0);
-            failed("S1.create4");
+            fail("S1.create4");
         } catch (DeploymentException e) {}
         try {
             S1.create5(
@@ -389,165 +393,168 @@ public final class Test extends ComplexTestCase {
                 new char[0][], new String[0][], new Type[0][], new Object[0][],
                 new Enum2[0][], new Struct1[0][], new Object[0][],
                 new XNamingService[0][]);
-            failed("S1.create4");
+            fail("S1.create4");
         } catch (DeploymentException e) {}
     }
 
+    @Test
     public void testS2() {
         //TODO
     }
 
+    @Test
     public void testKeywordServices() {
         try {
             service_abstract.method_abstract(context, 0);
-            failed("service_abstract.method_abstract");
+            fail("service_abstract.method_abstract");
         } catch (DeploymentException e) {}
         try {
             service_assert.method_assert(context, 0);
-            failed("service_assert.method_assert");
+            fail("service_assert.method_assert");
         } catch (DeploymentException e) {}
         try {
             service_break.method_break(context, 0);
-            failed("service_break.method_break");
+            fail("service_break.method_break");
         } catch (DeploymentException e) {}
         try {
             service_catch.method_catch(context, 0);
-            failed("service_catch.method_catch");
+            fail("service_catch.method_catch");
         } catch (DeploymentException e) {}
         try {
             service_class.method_class(context, 0);
-            failed("service_class.method_class");
+            fail("service_class.method_class");
         } catch (DeploymentException e) {}
         try {
             service_continue.method_continue(context, 0);
-            failed("service_continue.method_continue");
+            fail("service_continue.method_continue");
         } catch (DeploymentException e) {}
         try {
             service_do.method_do(context, 0);
-            failed("service_do.method_do");
+            fail("service_do.method_do");
         } catch (DeploymentException e) {}
         try {
             service_else.method_else(context, 0);
-            failed("service_else.method_else");
+            fail("service_else.method_else");
         } catch (DeploymentException e) {}
         try {
             service_extends.method_extends(context, 0);
-            failed("service_extends.method_extends");
+            fail("service_extends.method_extends");
         } catch (DeploymentException e) {}
         try {
             service_final.method_final(context, 0);
-            failed("service_final.method_final");
+            fail("service_final.method_final");
         } catch (DeploymentException e) {}
         try {
             service_finally.method_finally(context, 0);
-            failed("service_finally.method_finally");
+            fail("service_finally.method_finally");
         } catch (DeploymentException e) {}
         try {
             service_for.method_for(context, 0);
-            failed("service_for.method_for");
+            fail("service_for.method_for");
         } catch (DeploymentException e) {}
         try {
             service_goto.method_goto(context, 0);
-            failed("service_goto.method_goto");
+            fail("service_goto.method_goto");
         } catch (DeploymentException e) {}
         try {
             service_if.method_if(context, 0);
-            failed("service_if.method_if");
+            fail("service_if.method_if");
         } catch (DeploymentException e) {}
         try {
             service_implements.method_implements(context, 0);
-            failed("service_implements.method_implements");
+            fail("service_implements.method_implements");
         } catch (DeploymentException e) {}
         try {
             service_import.method_import(context, 0);
-            failed("service_import.method_import");
+            fail("service_import.method_import");
         } catch (DeploymentException e) {}
         try {
             service_instanceof.method_instanceof(context, 0);
-            failed("service_instanceof.method_instanceof");
+            fail("service_instanceof.method_instanceof");
         } catch (DeploymentException e) {}
         try {
             service_int.method_int(context, 0);
-            failed("service_int.method_int");
+            fail("service_int.method_int");
         } catch (DeploymentException e) {}
         try {
             service_native.method_native(context, 0);
-            failed("service_native.method_native");
+            fail("service_native.method_native");
         } catch (DeploymentException e) {}
         try {
             service_new.method_new(context, 0);
-            failed("service_new.method_new");
+            fail("service_new.method_new");
         } catch (DeploymentException e) {}
         try {
             service_package.method_package(context, 0);
-            failed("service_package.method_package");
+            fail("service_package.method_package");
         } catch (DeploymentException e) {}
         try {
             service_private.method_private(context, 0);
-            failed("service_private.method_private");
+            fail("service_private.method_private");
         } catch (DeploymentException e) {}
         try {
             service_protected.method_protected(context, 0);
-            failed("service_protected.method_protected");
+            fail("service_protected.method_protected");
         } catch (DeploymentException e) {}
         try {
             service_public.method_public(context, 0);
-            failed("service_public.method_public");
+            fail("service_public.method_public");
         } catch (DeploymentException e) {}
         try {
             service_return.method_return(context, 0);
-            failed("service_return.method_return");
+            fail("service_return.method_return");
         } catch (DeploymentException e) {}
         try {
             service_static.method_static(context, 0);
-            failed("service_static.method_static");
+            fail("service_static.method_static");
         } catch (DeploymentException e) {}
         try {
             service_strictfp.method_strictfp(context, 0);
-            failed("service_strictfp.method_strictfp");
+            fail("service_strictfp.method_strictfp");
         } catch (DeploymentException e) {}
         try {
             service_super.method_super(context, 0);
-            failed("service_super.method_super");
+            fail("service_super.method_super");
         } catch (DeploymentException e) {}
         try {
             service_synchronized.method_synchronized(context, 0);
-            failed("service_synchronized.method_synchronized");
+            fail("service_synchronized.method_synchronized");
         } catch (DeploymentException e) {}
         try {
             service_this.method_this(context, 0);
-            failed("service_this.method_this");
+            fail("service_this.method_this");
         } catch (DeploymentException e) {}
         try {
             service_throw.method_throw(context, 0);
-            failed("service_throw.method_throw");
+            fail("service_throw.method_throw");
         } catch (DeploymentException e) {}
         try {
             service_throws.method_throws(context, 0);
-            failed("service_throws.method_throws");
+            fail("service_throws.method_throws");
         } catch (DeploymentException e) {}
         try {
             service_try.method_try(context, 0);
-            failed("service_try.method_try");
+            fail("service_try.method_try");
         } catch (DeploymentException e) {}
         try {
             service_volatile.method_volatile(context, 0);
-            failed("service_volatile.method_volatile");
+            fail("service_volatile.method_volatile");
         } catch (DeploymentException e) {}
         try {
             service_while.method_while(context, 0);
-            failed("service_while.method_while");
+            fail("service_while.method_while");
         } catch (DeploymentException e) {}
     }
 
+    @Test
     public void testSingletons() {
         try {
             S4.get(context);
-            failed("S4");
+            fail("S4");
         } catch (DeploymentException e) {}
         try {
             singleton_abstract.get(context);
-            failed("singleton_abstract");
+            fail("singleton_abstract");
         } catch (DeploymentException e) {}
     }
 
diff --git a/codemaker/test/javamaker/java15/Test.java b/codemaker/test/javamaker/src/test/java/test/codemaker/javamaker/java15/Java15Javamaker_Test.java
similarity index 74%
rename from codemaker/test/javamaker/java15/Test.java
rename to codemaker/test/javamaker/src/test/java/test/codemaker/javamaker/java15/Java15Javamaker_Test.java
index b0133dcbccc9..00e32290398f 100644
--- a/codemaker/test/javamaker/java15/Test.java
+++ b/codemaker/test/javamaker/src/test/java/test/codemaker/javamaker/java15/Java15Javamaker_Test.java
@@ -26,47 +26,47 @@ package test.codemaker.javamaker.java15;
 import com.sun.star.lang.XMultiComponentFactory;
 import com.sun.star.uno.DeploymentException;
 import com.sun.star.uno.XComponentContext;
-import complexlib.ComplexTestCase;
+import org.junit.Test;
 
-public final class Test extends ComplexTestCase {
-    public String[] getTestMethodNames() {
-        return new String[] {
-            "testPlainPolyStruct", "testBooleanPolyStruct", "testStruct",
-            "testService" };
-    }
+import static org.junit.Assert.*;
 
+public final class Java15Javamaker_Test {
+    @Test
     public void testPlainPolyStruct() {
         PolyStruct s = new PolyStruct();
-        assure(s.member1 == null);
-        assure(s.member2 == 0);
+        assertTrue(s.member1 == null);
+        assertTrue(s.member2 == 0);
         s = new PolyStruct("ABC", 5);
-        assure(s.member1.equals("ABC"));
-        assure(s.member2 == 5);
+        assertTrue(s.member1.equals("ABC"));
+        assertTrue(s.member2 == 5);
     }
 
+    @Test
     public void testBooleanPolyStruct() {
         PolyStruct<Boolean,Object> s = new PolyStruct<Boolean,Object>();
-        assure(s.member1 == null);
-        assure(s.member2 == 0);
+        assertTrue(s.member1 == null);
+        assertTrue(s.member2 == 0);
         s = new PolyStruct<Boolean,Object>(true, 5);
-        assure(s.member1 == true);
-        assure(s.member2 == 5);
+        assertTrue(s.member1 == true);
+        assertTrue(s.member2 == 5);
     }
 
+    @Test
     public void testStruct() {
         Struct s = new Struct();
-        assure(s.member.member1 == null);
-        assure(s.member.member2 == 0);
+        assertTrue(s.member.member1 == null);
+        assertTrue(s.member.member2 == 0);
         s = new Struct(
             new PolyStruct<PolyStruct<boolean[], Object>, Integer>(
                 new PolyStruct<boolean[], Object>(new boolean[] { true }, 3),
                 4));
-        assure(s.member.member1.member1.length == 1);
-        assure(s.member.member1.member1[0] == true);
-        assure(s.member.member1.member2 == 3);
-        assure(s.member.member2 == 4);
+        assertTrue(s.member.member1.member1.length == 1);
+        assertTrue(s.member.member1.member1[0] == true);
+        assertTrue(s.member.member1.member2 == 3);
+        assertTrue(s.member.member2 == 4);
     }
 
+    @Test
     public void testService() {
         XComponentContext context = new XComponentContext() {
                 public Object getValueByName(String name) {
@@ -79,12 +79,12 @@ public final class Test extends ComplexTestCase {
             };
         try {
             Service.create(context);
-            failed();
+            fail();
         } catch (DeploymentException e) {}
         try {
             Service.create(
                 context, false, (byte) 1, (short) 2, Integer.valueOf(4));
-            failed();
+            fail();
         } catch (DeploymentException e) {}
     }
 
diff --git a/codemaker/test/javamaker/java15/makefile.mk b/codemaker/test/javamaker/src/test/java/test/codemaker/javamaker/java15/makefile.mk
similarity index 100%
rename from codemaker/test/javamaker/java15/makefile.mk
rename to codemaker/test/javamaker/src/test/java/test/codemaker/javamaker/java15/makefile.mk
diff --git a/codemaker/test/javamaker/java15/types.idl b/codemaker/test/javamaker/src/test/java/test/codemaker/javamaker/java15/types.idl
similarity index 100%
rename from codemaker/test/javamaker/java15/types.idl
rename to codemaker/test/javamaker/src/test/java/test/codemaker/javamaker/java15/types.idl
diff --git a/codemaker/test/javamaker/src/test/java/test/codemaker/javamaker/java15/types15.idl b/codemaker/test/javamaker/src/test/java/test/codemaker/javamaker/java15/types15.idl
new file mode 100644
index 000000000000..4271e121b259
--- /dev/null
+++ b/codemaker/test/javamaker/src/test/java/test/codemaker/javamaker/java15/types15.idl
@@ -0,0 +1,46 @@
+/**************************************************************
+ *
+ * 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.
+ *
+ *************************************************************/
+
+
+
+#include "com/sun/star/uno/XInterface.idl"
+
+module test { module codemaker { module javamaker { module java15 {
+
+struct PolyStruct<if,else> {
+    if member1;
+    long member2;
+};
+
+struct Struct {
+    PolyStruct<PolyStruct<sequence<boolean>,any>,long> member;
+};
+
+service Service: com::sun::star::uno::XInterface {
+    create([in] any... args);
+};
+
+interface XIfc {
+    void f1([in] PolyStruct<long, long> arg);
+    void f2([in] PolyStruct<any, com::sun::star::uno::XInterface> arg);
+};
+
+}; }; }; };
diff --git a/codemaker/test/javamaker/types.idl b/codemaker/test/javamaker/src/test/java/test/codemaker/javamaker/types.idl
similarity index 100%
rename from codemaker/test/javamaker/types.idl
rename to codemaker/test/javamaker/src/test/java/test/codemaker/javamaker/types.idl
diff --git a/solenv/ant/idl.xml b/solenv/ant/idl.xml
index 12f6d56b2d56..24174332d01c 100644
--- a/solenv/ant/idl.xml
+++ b/solenv/ant/idl.xml
@@ -41,6 +41,12 @@
         <build-idl unless:set="idl.uptodate"/>
     </target>
 
+    <target name="unoprivateapi-cppumaker">
+        <property name="idl.cppumaker.flag" location="${unoprivateapi.outdir}/idl.cppumaker.flag"/>
+        <check-idl-cppumaker/>
+        <build-idl-cppumaker unless:set="idl.cppumaker.uptodate"/>
+    </target>
+
     <macrodef name="check-idl">
         <sequential>
             <local name="idl.files.exist"/>
@@ -48,21 +54,35 @@
                 <resourcecount refid="idl.files" when="greater" count="0"/>
             </condition>
 
-            <local name="idl.files.union"/>
-            <union id="idl.files.union" if:set="idl.files.exist">
-                <filelist refid="idl.files"/>
-            </union>
             <uptodate property="idl.uptodate" targetfile="${idl.javamaker.flag}" if:set="idl.files.exist">
-                <srcresources refid="idl.files.union"/>
+                <srcresources>
+                    <resources refid="idl.files"/>
+                </srcresources>
             </uptodate>
             <property name="idl.uptodate" value="true" unless:set="idl.files.exist"/>
         </sequential>
     </macrodef>
 
+    <macrodef name="check-idl-cppumaker">
+        <sequential>
+            <uptodate property="idl.cppumaker.uptodate" targetfile="${idl.cppumaker.flag}">
+                <srcresources>
+                    <file name="${unoprivateapi.idl}"/>
+                </srcresources>
+            </uptodate>
+        </sequential>
+    </macrodef>
+
     <macrodef name="build-idl">
         <sequential>
-            <idlc/>
-            <regmerge/>
+            <idlc urdDirectory="${idl.urd.build.dir}">
+                <idlFiles>
+                    <resources refid="idl.files"/>
+                </idlFiles>
+            </idlc>
+            <regmerge
+                urdDirectory="${idl.urd.build.dir}"
+                rdbDirectory="${idl.rdb.build.dir}"/>
             <javamaker
                 inputRdb="${idl.rdb.build.dir}/registry.rdb"
                 outputDirectory="${idl.classes.build.dir}"
@@ -72,33 +92,56 @@
         </sequential>
     </macrodef>
 
+    <macrodef name="build-idl-cppumaker">
+        <sequential>
+            <idlc urdDirectory="${unoprivateapi.outdir}/urd">
+                <idlFiles>
+                    <file name="${unoprivateapi.idl}"/>
+                </idlFiles>
+            </idlc>
+            <regmerge
+                urdDirectory="${unoprivateapi.outdir}/urd"
+                rdbDirectory="${unoprivateapi.outdir}/rdb"/>
+            <cppumaker
+                inputRdb="${unoprivateapi.outdir}/rdb/registry.rdb"
+                outputDirectory="${unoprivateapi.outdir}/inc"/>
+            <touch file="${idl.cppumaker.flag}"/>
+        </sequential>
+    </macrodef>
+
     <macrodef name="idlc">
+        <element name="idlFiles"/>
+        <attribute name="urdDirectory"/>
         <sequential>
-            <mkdir dir="${idl.urd.build.dir}"/>
+            <mkdir dir="@{urdDirectory}"/>
             <apply executable="${OUTDIR}/bin/idlc" failonerror="true">
                 <env key="LD_LIBRARY_PATH" value="${OUTDIR}/lib"/>
                 <env key="DYLD_LIBRARY_PATH" value="${OUTDIR}/lib"/>
                 <arg value="-I${OUTDIR}/idl"/>
                 <arg value="-O"/>
-                <arg value="${idl.urd.build.dir}"/>
+                <arg value="@{urdDirectory}"/>
                 <arg value="-verbose"/>
                 <arg value="-cid"/>
                 <arg value="-we"/>
-                <filelist refid="idl.files"/>
+                <resources>
+                    <idlFiles/>
+                </resources>
             </apply>
         </sequential>
     </macrodef>
 
     <macrodef name="regmerge">
+        <attribute name="urdDirectory"/>
+        <attribute name="rdbDirectory"/>
         <sequential>
-            <mkdir dir="${idl.rdb.build.dir}"/>
-            <delete file="${idl.rdb.build.dir}/registry.rdb"/>
+            <mkdir dir="@{rdbDirectory}"/>
+            <delete file="@{rdbDirectory}/registry.rdb"/>
             <apply executable="${OUTDIR}/bin/regmerge" failonerror="true">
                 <env key="LD_LIBRARY_PATH" value="${OUTDIR}/lib"/>
                 <env key="DYLD_LIBRARY_PATH" value="${OUTDIR}/lib"/>
-                <arg value="${idl.rdb.build.dir}/registry.rdb"/>
+                <arg value="@{rdbDirectory}/registry.rdb"/>
                 <arg value="/UCR"/>
-                <fileset dir="${idl.urd.build.dir}" includes="**/*.urd"/>
+                <fileset dir="@{urdDirectory}" includes="**/*.urd"/>
             </apply>
         </sequential>
     </macrodef>
@@ -123,5 +166,22 @@
             </exec>
         </sequential>
     </macrodef>
+
+    <macrodef name="cppumaker">
+        <attribute name="inputRdb"/>
+        <attribute name="outputDirectory"/>
+        <sequential>
+            <mkdir dir="@{outputDirectory}"/>
+            <exec executable="${OUTDIR}/bin/cppumaker" failonerror="true">
+                <env key="LD_LIBRARY_PATH" value="${OUTDIR}/lib"/>
+                <env key="DYLD_LIBRARY_PATH" value="${OUTDIR}/lib"/>
+                <arg value="-O@{outputDirectory}"/>
+                <arg value="-BUCR"/>
+                <arg value="-C"/>
+                <arg value="@{inputRdb}"/>
+                <arg value="${OUTDIR}/bin/udkapi.rdb"/>
+            </exec>
+        </sequential>
+    </macrodef>
 </project>
 
diff --git a/solenv/gbuild/Executable.mk b/solenv/gbuild/Executable.mk
index 99660bb2d153..a276625a492f 100644
--- a/solenv/gbuild/Executable.mk
+++ b/solenv/gbuild/Executable.mk
@@ -89,6 +89,7 @@ $(eval $(foreach method,\
 	add_libs \
 	set_library_path_flags \
 	add_api \
+	set_private_api \
 	add_linked_libs \
 	add_linked_static_libs \
 	use_external \
diff --git a/solenv/gbuild/GoogleTest.mk b/solenv/gbuild/GoogleTest.mk
index 8166d0f48321..c93c311c57e4 100644
--- a/solenv/gbuild/GoogleTest.mk
+++ b/solenv/gbuild/GoogleTest.mk
@@ -97,6 +97,7 @@ $(eval $(foreach method,\
 	add_libs \
 	set_library_path_flags \
 	add_api \
+	set_private_api \
 	add_linked_libs \
 	add_linked_static_libs \
 	use_external \
diff --git a/solenv/gbuild/LinkTarget.mk b/solenv/gbuild/LinkTarget.mk
index f18373948d68..108b94dfd68c 100644
--- a/solenv/gbuild/LinkTarget.mk
+++ b/solenv/gbuild/LinkTarget.mk
@@ -533,6 +533,44 @@ endif
 
 endef
 
+define gb_LinkTarget_add_private_api
+$(call gb_LinkTarget_get_external_headers_target,$(1)) :| \
+	$(call gb_UnoPrivateApiTarget_get_target,$(1)/idl.cppumaker.flag)
+$(call gb_LinkTarget_get_headers_target,$(1)) \
+$(call gb_LinkTarget_get_target,$(1)) : INCLUDE += -I$(call gb_UnoPrivateApiTarget_get_target,$(1)/inc)
+ifeq ($(gb_FULLDEPS),$(true))
+$(call gb_LinkTarget_get_dep_target,$(1)) : INCLUDE += -I$(call gb_UnoPrivateApiTarget_get_target,$(1)/inc)
+endif
+
+$(call gb_UnoPrivateApiTarget_get_target,$(1)/idl.cppumaker.flag): $(2)
+	$(call gb_Output_announce,$@,$(true),PVTIDL,2)
+	-$$(call gb_Helper_abbreviate_dirs,\
+		mkdir -p $$(call gb_UnoPrivateApiTarget_get_target,$(1)/urd) && \
+		mkdir -p $$(call gb_UnoPrivateApiTarget_get_target,$(1)/rdb) && \
+		mkdir -p $$(call gb_UnoPrivateApiTarget_get_target,$(1)/inc) && \
+		$$(gb_UnoApiTarget_IDLCCOMMAND) -I$$(OUTDIR)/idl -O $$(call gb_UnoPrivateApiTarget_get_target,$(1)/urd) \
+			-verbose -cid -we $(2) && \
+		$$(gb_UnoApiTarget_REGMERGECOMMAND) $$(call gb_UnoPrivateApiTarget_get_target,$(1)/rdb/registry.rdb) /UCR \
+			$(patsubst %.idl,%.urd,$$(call gb_UnoPrivateApiTarget_get_target,$(1)/urd)/$(notdir $(2))) && \
+		$(gb_UnoApiTarget_CPPUMAKERCOMMAND) \
+			-O $$(call gb_UnoPrivateApiTarget_get_target,$(1)/inc) \
+			-BUCR \
+			-C \
+			$$(call gb_UnoPrivateApiTarget_get_target,$(1)/rdb/registry.rdb) \
+			$$(OUTDIR)/bin/udkapi.rdb && \
+		touch $(call gb_UnoPrivateApiTarget_get_target,$(1)/idl.cppumaker.flag))
+
+$(call gb_LinkTarget_get_clean_target,$(1)) :
+	rm -rf $(call gb_UnoPrivateApiTarget_get_target,$(1))
+
+endef
+
+# FIXME: multiple??
+define gb_LinkTarget_set_private_api
+$(foreach api,$(2),$(call gb_LinkTarget_add_private_api,$(1),$(api)))
+
+endef
+
 define gb_LinkTarget_add_libs
 $(call gb_LinkTarget_get_target,$(1)) : LIBS += $(2)
 endef
diff --git a/solenv/gbuild/TargetLocations.mk b/solenv/gbuild/TargetLocations.mk
index 8ec415f0597a..c46d8fe82c75 100644
--- a/solenv/gbuild/TargetLocations.mk
+++ b/solenv/gbuild/TargetLocations.mk
@@ -72,6 +72,7 @@ gb_UnoApiTarget_get_target = $(WORKDIR)/UnoApiTarget/$(1).rdb
 gb_UnoApiOutTarget_get_target = $(OUTDIR)/bin/$(1).rdb
 gb_UnoApiPartTarget_get_target = $(WORKDIR)/UnoApiPartTarget/$(1)
 gb_UnoApiTarget_get_header_target = $(WORKDIR)/UnoApiHeaders/$(1)
+gb_UnoPrivateApiTarget_get_target = $(WORKDIR)/UnoPrivateApi/$(1)
 gb_Module_get_check_target = $(WORKDIR)/Module/check/$(1)
 gb_Module_get_subsequentcheck_target = $(WORKDIR)/Module/subsequentcheck/$(1)
 gb_Module_get_target = $(WORKDIR)/Module/$(1)


More information about the Libreoffice-commits mailing list