[Libreoffice-commits] core.git: Branch 'aoo/trunk' - 2 commits - Module_ooo.mk registry/Executable_checksingleton.mk registry/Executable_rdbedit.mk registry/Executable_regcompare.mk registry/Executable_regmerge.mk registry/Executable_regview.mk registry/inc registry/Library_reg.mk registry/Makefile registry/Module_registry.mk registry/Package_inc.mk registry/prj registry/source registry/tools registry/util Repository.mk solenv/gbuild

Damjan Jovanovic damjan at apache.org
Thu Mar 22 07:13:39 UTC 2018


 Module_ooo.mk                          |    1 
 Repository.mk                          |   14 +++++
 registry/Executable_checksingleton.mk  |   49 +++++++++++++++++++
 registry/Executable_rdbedit.mk         |   39 +++++++--------
 registry/Executable_regcompare.mk      |   48 ++++++++++++++++++
 registry/Executable_regmerge.mk        |   47 ++++++++++++++++++
 registry/Executable_regview.mk         |   46 ++++++++++++++++++
 registry/Library_reg.mk                |   64 +++++++++++++++++++++++++
 registry/Makefile                      |   32 ++++++++++++
 registry/Module_registry.mk            |   38 ++++++++++++++
 registry/Package_inc.mk                |   37 ++++++++++++++
 registry/inc/registry/reader.h         |   69 +++++++++++++--------------
 registry/inc/registry/reflread.hxx     |    3 -
 registry/inc/registry/reflwrit.hxx     |    3 -
 registry/inc/registry/registry.h       |   67 +++++++++++++-------------
 registry/inc/registry/registry.hxx     |    3 -
 registry/inc/registry/registrydllapi.h |   37 ++++++++++++++
 registry/inc/registry/writer.h         |   19 +++----
 registry/prj/build.lst                 |    7 --
 registry/prj/d.lst                     |   20 -------
 registry/prj/makefile.mk               |   41 ++++++++--------
 registry/tools/makefile.mk             |   84 ---------------------------------
 registry/util/makefile.mk              |   72 ----------------------------
 solenv/gbuild/Deliver.mk               |    4 -
 solenv/gbuild/Library.mk               |    9 +++
 solenv/gbuild/gbuild.mk                |    2 
 solenv/gbuild/platform/freebsd.mk      |   16 +++++-
 solenv/gbuild/platform/linux.mk        |   15 +++++
 solenv/gbuild/platform/solaris.mk      |   15 +++++
 29 files changed, 593 insertions(+), 308 deletions(-)

New commits:
commit 0ae30994cefb0a39d0dd1b8b3c10045fd765a069
Author: Damjan Jovanovic <damjan at apache.org>
Date:   Thu Mar 22 06:22:38 2018 +0000

    Add registry to Module_ooo.mk
    
    Patch by: me

diff --git a/Module_ooo.mk b/Module_ooo.mk
index a0b3b1b65de0..e01beeae1d80 100644
--- a/Module_ooo.mk
+++ b/Module_ooo.mk
@@ -60,6 +60,7 @@ $(eval $(call gb_Module_add_moduledirs,ooo,\
     padmin \
     package \
     rdbmaker \
+    registry \
     reportdesign \
     remotebridges \
     sane \
commit fa6e37ede484ef12706fc0df45e6143083c12392
Author: Damjan Jovanovic <damjan at apache.org>
Date:   Thu Mar 22 05:29:37 2018 +0000

    Implement the ability to build "UDK versioned" libraries in gbuild
    
    for *nix platforms. Do this by setting the ELF SONAME to the
    libxyz.so.3 style library output name, changing the output file
    that the linker writes to to be in this format (from libxyz.so),
    making a symlink from libxyz.so to libxyz.so.3, adding libxyz.so.3
    as a delivery AUXTARGET for the deliverable libxyz.so, and
    changing the deliver commands to copy symlinks properly. This is
    all what dmake does too.
    
    Use this to port main/registry to gbuild.
    
    Patch by: me

diff --git a/Repository.mk b/Repository.mk
index a485eb47ffca..40a240fa7650 100644
--- a/Repository.mk
+++ b/Repository.mk
@@ -27,8 +27,10 @@ $(eval $(call gb_Helper_register_repository,SRCDIR))
 $(eval $(call gb_Helper_register_executables,NONE, \
     bmp \
     bmpsum \
+    checksingleton \
     g2g \
     mkunroll \
+    rdbedit \
     rdbmaker \
     rscdep \
     so_checksum \
@@ -42,6 +44,15 @@ $(eval $(call gb_Helper_register_executables,OOO, \
     spadmin.bin \
 ))
 
+$(eval $(call gb_Helper_register_executables,SDK, \
+    regcompare \
+))
+
+$(eval $(call gb_Helper_register_executables,UREBIN, \
+    regmerge \
+    regview \
+))
+
 $(eval $(call gb_Helper_register_libraries,OOOLIBS, \
     AppleRemote \
     adabas \
@@ -101,7 +112,6 @@ $(eval $(call gb_Helper_register_libraries,OOOLIBS, \
     oox \
     package2 \
     qstart_gtk \
-    reg \
     rpt \
     rptui \
     rptxml \
@@ -163,6 +173,8 @@ $(eval $(call gb_Helper_register_libraries,OOOLIBS, \
 ))
 
 $(eval $(call gb_Helper_register_libraries,PLAINLIBS_URE, \
+    reg \
+    store \
     xmlreader \
 ))
 
diff --git a/registry/Executable_checksingleton.mk b/registry/Executable_checksingleton.mk
new file mode 100644
index 000000000000..6167df920b07
--- /dev/null
+++ b/registry/Executable_checksingleton.mk
@@ -0,0 +1,49 @@
+#**************************************************************
+#  
+#  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,checksingleton))
+
+$(eval $(call gb_Library_add_package_headers,checksingleton,registry_inc))
+
+$(eval $(call gb_Executable_set_include,checksingleton,\
+       $$(INCLUDE) \
+       -I$(SRCDIR)/registry/inc/ \
+       -I$(SRCDIR)/registry/inc/pch \
+))
+
+$(eval $(call gb_Executable_add_linked_libs,checksingleton,\
+       reg \
+       sal \
+       salhelper \
+       stl \
+       $(gb_STDLIBS) \
+))
+
+$(eval $(call gb_Executable_add_exception_objects,checksingleton,\
+       registry/tools/checksingleton \
+       registry/tools/fileurl \
+       registry/tools/options \
+))
+
+# vim: set noet sw=4 ts=4:
+
diff --git a/registry/source/makefile.mk b/registry/Executable_rdbedit.mk
similarity index 62%
rename from registry/source/makefile.mk
rename to registry/Executable_rdbedit.mk
index eba8ad98e32f..8bf4a8af7006 100644
--- a/registry/source/makefile.mk
+++ b/registry/Executable_rdbedit.mk
@@ -21,29 +21,26 @@
 
 
 
-PRJ=..
+$(eval $(call gb_Executable_Executable,rdbedit))
 
-PRJNAME=registry
-TARGET=regcpp
+$(eval $(call gb_Library_add_package_headers,rdbedit,registry_inc))
 
-ENABLE_EXCEPTIONS := TRUE
+$(eval $(call gb_Executable_set_include,rdbedit,\
+	$$(INCLUDE) \
+	-I$(SRCDIR)/registry/inc/ \
+	-I$(SRCDIR)/registry/inc/pch \
+))
 
-# --- Settings -----------------------------------------------------
+$(eval $(call gb_Executable_add_linked_libs,rdbedit,\
+	reg \
+	sal \
+	salhelper \
+	stl \
+    $(gb_STDLIBS) \
+))
 
-.INCLUDE :  settings.mk
-.INCLUDE : ..$/version.mk
-
-# ------------------------------------------------------------------
-
-SLOFILES= \
-            $(SLO)$/regimpl.obj		\
-            $(SLO)$/regkey.obj		\
-            $(SLO)$/registry.obj 	\
-            $(SLO)$/keyimpl.obj 	\
-            $(SLO)$/reflread.obj	\
-            $(SLO)$/reflwrit.obj
-
-# ------------------------------------------------------------------
-
-.INCLUDE :  target.mk
+$(eval $(call gb_Executable_add_exception_objects,rdbedit,\
+	registry/tools/rdbedit \
+))
 
+# vim: set noet sw=4 ts=4:
diff --git a/registry/Executable_regcompare.mk b/registry/Executable_regcompare.mk
new file mode 100644
index 000000000000..ba289a8cdd4b
--- /dev/null
+++ b/registry/Executable_regcompare.mk
@@ -0,0 +1,48 @@
+#**************************************************************
+#  
+#  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,regcompare))
+
+$(eval $(call gb_Library_add_package_headers,regcompare,registry_inc))
+
+$(eval $(call gb_Executable_set_include,regcompare,\
+	$$(INCLUDE) \
+	-I$(SRCDIR)/registry/inc/ \
+	-I$(SRCDIR)/registry/inc/pch \
+))
+
+$(eval $(call gb_Executable_add_linked_libs,regcompare,\
+	reg \
+	sal \
+	salhelper \
+	stl \
+    $(gb_STDLIBS) \
+))
+
+$(eval $(call gb_Executable_add_exception_objects,regcompare,\
+	registry/tools/regcompare \
+	registry/tools/fileurl \
+	registry/tools/options \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/registry/Executable_regmerge.mk b/registry/Executable_regmerge.mk
new file mode 100644
index 000000000000..0fcb386f737c
--- /dev/null
+++ b/registry/Executable_regmerge.mk
@@ -0,0 +1,47 @@
+#**************************************************************
+#  
+#  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,regmerge))
+
+$(eval $(call gb_Library_add_package_headers,regmerge,registry_inc))
+
+$(eval $(call gb_Executable_set_include,regmerge,\
+	$$(INCLUDE) \
+	-I$(SRCDIR)/registry/inc/ \
+	-I$(SRCDIR)/registry/inc/pch \
+))
+
+$(eval $(call gb_Executable_add_linked_libs,regmerge,\
+	reg \
+	sal \
+	stl \
+    $(gb_STDLIBS) \
+))
+
+$(eval $(call gb_Executable_add_exception_objects,regmerge,\
+	registry/tools/regmerge \
+	registry/tools/fileurl \
+	registry/tools/options \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/registry/Executable_regview.mk b/registry/Executable_regview.mk
new file mode 100644
index 000000000000..a90d8577b781
--- /dev/null
+++ b/registry/Executable_regview.mk
@@ -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.
+#  
+#**************************************************************
+
+
+
+$(eval $(call gb_Executable_Executable,regview))
+
+$(eval $(call gb_Library_add_package_headers,regview,registry_inc))
+
+$(eval $(call gb_Executable_set_include,regview,\
+	$$(INCLUDE) \
+	-I$(SRCDIR)/registry/inc/ \
+	-I$(SRCDIR)/registry/inc/pch \
+))
+
+$(eval $(call gb_Executable_add_linked_libs,regview,\
+	reg \
+	sal \
+	stl \
+    $(gb_STDLIBS) \
+))
+
+$(eval $(call gb_Executable_add_exception_objects,regview,\
+	registry/tools/regview \
+	registry/tools/fileurl \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/registry/Library_reg.mk b/registry/Library_reg.mk
new file mode 100644
index 000000000000..802956363027
--- /dev/null
+++ b/registry/Library_reg.mk
@@ -0,0 +1,64 @@
+#**************************************************************
+#  
+#  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_Library_Library,reg))
+
+$(eval $(call gb_Library_add_package_headers,reg,registry_inc))
+
+$(eval $(call gb_Library_add_precompiled_header,reg,$(SRCDIR)/registry/inc/pch/precompiled_registry))
+
+$(eval $(call gb_Library_set_versionmap,reg,$(SRCDIR)/registry/util/reg.map))
+
+$(eval $(call gb_Library_set_include,reg,\
+	$$(INCLUDE) \
+	-I$(SRCDIR)/registry/inc/pch \
+	-I$(OUTDIR)/inc \
+))
+
+#$(eval $(call gb_Library_add_api,reg, \
+#        udkapi \
+#	offapi \
+#))
+
+$(eval $(call gb_Library_add_defs,reg,\
+        -DREGISTRY_DLLIMPLEMENTATION \
+))
+
+$(eval $(call gb_Library_add_linked_libs,reg,\
+	sal \
+	store \
+	stl \
+	$(gb_STDLIBS) \
+))
+
+$(eval $(call gb_Library_add_exception_objects,reg,\
+	registry/source/regimpl \
+	registry/source/regkey \
+	registry/source/registry \
+	registry/source/keyimpl \
+	registry/source/reflread \
+	registry/source/reflwrit \
+))
+
+# vim: set noet sw=4 ts=4:
+
diff --git a/registry/Makefile b/registry/Makefile
new file mode 100644
index 000000000000..c1d144cbd4c9
--- /dev/null
+++ b/registry/Makefile
@@ -0,0 +1,32 @@
+#**************************************************************
+#  
+#  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.
+#  
+#**************************************************************
+
+ifeq ($(strip $(SOLARENV)),)
+$(error No environment set!)
+endif
+
+gb_PARTIALBUILD := T
+GBUILDDIR := $(SOLARENV)/gbuild
+include $(GBUILDDIR)/gbuild.mk
+
+$(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
+
+# vim: set noet sw=4 ts=4:
diff --git a/registry/Module_registry.mk b/registry/Module_registry.mk
new file mode 100644
index 000000000000..106d5176c5ae
--- /dev/null
+++ b/registry/Module_registry.mk
@@ -0,0 +1,38 @@
+#**************************************************************
+#  
+#  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_Module_Module,registry))
+
+$(eval $(call gb_Module_add_targets,registry,\
+	Library_reg \
+	Executable_regmerge \
+	Executable_regview \
+	Executable_regcompare \
+	Executable_checksingleton \
+	Package_inc \
+))
+
+#	Executable_rdbedit \
+
+
+# vim: set noet sw=4 ts=4:
diff --git a/registry/Package_inc.mk b/registry/Package_inc.mk
new file mode 100644
index 000000000000..a9b697400cf7
--- /dev/null
+++ b/registry/Package_inc.mk
@@ -0,0 +1,37 @@
+#**************************************************************
+#  
+#  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,registry_inc,$(SRCDIR)/registry/inc))
+$(eval $(call gb_Package_add_file,registry_inc,inc/registry/reader.h,registry/reader.h))
+$(eval $(call gb_Package_add_file,registry_inc,inc/registry/reader.hxx,registry/reader.hxx))
+$(eval $(call gb_Package_add_file,registry_inc,inc/registry/reflread.hxx,registry/reflread.hxx))
+$(eval $(call gb_Package_add_file,registry_inc,inc/registry/refltype.hxx,registry/refltype.hxx))
+$(eval $(call gb_Package_add_file,registry_inc,inc/registry/reflwrit.hxx,registry/reflwrit.hxx))
+$(eval $(call gb_Package_add_file,registry_inc,inc/registry/registry.h,registry/registry.h))
+$(eval $(call gb_Package_add_file,registry_inc,inc/registry/registry.hxx,registry/registry.hxx))
+$(eval $(call gb_Package_add_file,registry_inc,inc/registry/registrydllapi.h,registry/registrydllapi.h))
+$(eval $(call gb_Package_add_file,registry_inc,inc/registry/regtype.h,registry/regtype.h))
+$(eval $(call gb_Package_add_file,registry_inc,inc/registry/types.h,registry/types.h))
+$(eval $(call gb_Package_add_file,registry_inc,inc/registry/version.h,registry/version.h))
+$(eval $(call gb_Package_add_file,registry_inc,inc/registry/writer.h,registry/writer.h))
+$(eval $(call gb_Package_add_file,registry_inc,inc/registry/writer.hxx,registry/writer.hxx))
diff --git a/registry/inc/registry/reader.h b/registry/inc/registry/reader.h
index a59c5d4fe946..e671ddc304b9 100644
--- a/registry/inc/registry/reader.h
+++ b/registry/inc/registry/reader.h
@@ -26,6 +26,7 @@
 
 #include "registry/types.h"
 #include "registry/version.h"
+#include "registry/registrydllapi.h"
 
 #include "rtl/ustring.h"
 #include "sal/types.h"
@@ -65,7 +66,7 @@ extern "C" {
 
    @since UDK 3.2.0
  */
-sal_Bool SAL_CALL typereg_reader_create(
+REGISTRY_DLLPUBLIC sal_Bool SAL_CALL typereg_reader_create(
     void const * buffer, sal_uInt32 length, sal_Bool copy,
     enum typereg_Version maxVersion, void ** result)
     SAL_THROW_EXTERN_C();
@@ -77,7 +78,7 @@ sal_Bool SAL_CALL typereg_reader_create(
 
    @since UDK 3.2.0
  */
-void SAL_CALL typereg_reader_acquire(void * handle) SAL_THROW_EXTERN_C();
+REGISTRY_DLLPUBLIC void SAL_CALL typereg_reader_acquire(void * handle) SAL_THROW_EXTERN_C();
 
 /**
    Decrements the reference count of a type reader.
@@ -88,7 +89,7 @@ void SAL_CALL typereg_reader_acquire(void * handle) SAL_THROW_EXTERN_C();
 
    @since UDK 3.2.0
  */
-void SAL_CALL typereg_reader_release(void * handle) SAL_THROW_EXTERN_C();
+REGISTRY_DLLPUBLIC void SAL_CALL typereg_reader_release(void * handle) SAL_THROW_EXTERN_C();
 
 /**
    Returns the binary blob version of a type reader.
@@ -101,7 +102,7 @@ void SAL_CALL typereg_reader_release(void * handle) SAL_THROW_EXTERN_C();
 
    @since UDK 3.2.0
  */
-enum typereg_Version SAL_CALL typereg_reader_getVersion(void * handle)
+REGISTRY_DLLPUBLIC enum typereg_Version SAL_CALL typereg_reader_getVersion(void * handle)
     SAL_THROW_EXTERN_C();
 
 /**
@@ -115,7 +116,7 @@ enum typereg_Version SAL_CALL typereg_reader_getVersion(void * handle)
 
    @since UDK 3.2.0
  */
-void SAL_CALL typereg_reader_getDocumentation(
+REGISTRY_DLLPUBLIC void SAL_CALL typereg_reader_getDocumentation(
     void * handle, rtl_uString ** result) SAL_THROW_EXTERN_C();
 
 /**
@@ -130,7 +131,7 @@ void SAL_CALL typereg_reader_getDocumentation(
    @since UDK 3.2.0
    @deprecated
  */
-void SAL_CALL typereg_reader_getFileName(void * handle, rtl_uString ** result)
+REGISTRY_DLLPUBLIC void SAL_CALL typereg_reader_getFileName(void * handle, rtl_uString ** result)
     SAL_THROW_EXTERN_C();
 
 /**
@@ -148,7 +149,7 @@ void SAL_CALL typereg_reader_getFileName(void * handle, rtl_uString ** result)
 
    @since UDK 3.2.0
  */
-enum RTTypeClass SAL_CALL typereg_reader_getTypeClass(void * handle)
+REGISTRY_DLLPUBLIC enum RTTypeClass SAL_CALL typereg_reader_getTypeClass(void * handle)
     SAL_THROW_EXTERN_C();
 
 /**
@@ -161,7 +162,7 @@ enum RTTypeClass SAL_CALL typereg_reader_getTypeClass(void * handle)
 
    @since UDK 3.2.0
  */
-sal_Bool SAL_CALL typereg_reader_isPublished(void * handle)
+REGISTRY_DLLPUBLIC sal_Bool SAL_CALL typereg_reader_isPublished(void * handle)
     SAL_THROW_EXTERN_C();
 
 /**
@@ -175,7 +176,7 @@ sal_Bool SAL_CALL typereg_reader_isPublished(void * handle)
 
    @since UDK 3.2.0
  */
-void SAL_CALL typereg_reader_getTypeName(void * handle, rtl_uString ** result)
+REGISTRY_DLLPUBLIC void SAL_CALL typereg_reader_getTypeName(void * handle, rtl_uString ** result)
     SAL_THROW_EXTERN_C();
 
 /**
@@ -188,7 +189,7 @@ void SAL_CALL typereg_reader_getTypeName(void * handle, rtl_uString ** result)
 
    @since UDK 3.2.0
  */
-sal_uInt16 SAL_CALL typereg_reader_getSuperTypeCount(void * handle)
+REGISTRY_DLLPUBLIC sal_uInt16 SAL_CALL typereg_reader_getSuperTypeCount(void * handle)
     SAL_THROW_EXTERN_C();
 
 /**
@@ -205,7 +206,7 @@ sal_uInt16 SAL_CALL typereg_reader_getSuperTypeCount(void * handle)
 
    @since UDK 3.2.0
  */
-void SAL_CALL typereg_reader_getSuperTypeName(
+REGISTRY_DLLPUBLIC void SAL_CALL typereg_reader_getSuperTypeName(
     void * handle, rtl_uString ** result, sal_uInt16 index)
     SAL_THROW_EXTERN_C();
 
@@ -219,7 +220,7 @@ void SAL_CALL typereg_reader_getSuperTypeName(
 
    @since UDK 3.2.0
  */
-sal_uInt16 SAL_CALL typereg_reader_getFieldCount(void * handle)
+REGISTRY_DLLPUBLIC sal_uInt16 SAL_CALL typereg_reader_getFieldCount(void * handle)
     SAL_THROW_EXTERN_C();
 
 /**
@@ -235,7 +236,7 @@ sal_uInt16 SAL_CALL typereg_reader_getFieldCount(void * handle)
 
    @since UDK 3.2.0
  */
-void SAL_CALL typereg_reader_getFieldDocumentation(
+REGISTRY_DLLPUBLIC void SAL_CALL typereg_reader_getFieldDocumentation(
     void * handle, rtl_uString ** result, sal_uInt16 index)
     SAL_THROW_EXTERN_C();
 
@@ -253,7 +254,7 @@ void SAL_CALL typereg_reader_getFieldDocumentation(
    @since UDK 3.2.0
    @deprecated
  */
-void SAL_CALL typereg_reader_getFieldFileName(
+REGISTRY_DLLPUBLIC void SAL_CALL typereg_reader_getFieldFileName(
     void * handle, rtl_uString ** result, sal_uInt16 index)
     SAL_THROW_EXTERN_C();
 
@@ -268,7 +269,7 @@ void SAL_CALL typereg_reader_getFieldFileName(
 
    @since UDK 3.2.0
  */
-RTFieldAccess SAL_CALL typereg_reader_getFieldFlags(
+REGISTRY_DLLPUBLIC RTFieldAccess SAL_CALL typereg_reader_getFieldFlags(
     void * handle, sal_uInt16 index) SAL_THROW_EXTERN_C();
 
 /**
@@ -284,7 +285,7 @@ RTFieldAccess SAL_CALL typereg_reader_getFieldFlags(
 
    @since UDK 3.2.0
  */
-void SAL_CALL typereg_reader_getFieldName(
+REGISTRY_DLLPUBLIC void SAL_CALL typereg_reader_getFieldName(
     void * handle, rtl_uString ** result, sal_uInt16 index)
     SAL_THROW_EXTERN_C();
 
@@ -301,7 +302,7 @@ void SAL_CALL typereg_reader_getFieldName(
 
    @since UDK 3.2.0
  */
-void SAL_CALL typereg_reader_getFieldTypeName(
+REGISTRY_DLLPUBLIC void SAL_CALL typereg_reader_getFieldTypeName(
     void * handle, rtl_uString ** result, sal_uInt16 index)
     SAL_THROW_EXTERN_C();
 
@@ -323,7 +324,7 @@ void SAL_CALL typereg_reader_getFieldTypeName(
 
    @since UDK 3.2.0
  */
-sal_Bool SAL_CALL typereg_reader_getFieldValue(
+REGISTRY_DLLPUBLIC sal_Bool SAL_CALL typereg_reader_getFieldValue(
     void * handle, sal_uInt16 index, enum RTValueType * type,
     union RTConstValueUnion * value)
     SAL_THROW_EXTERN_C();
@@ -338,7 +339,7 @@ sal_Bool SAL_CALL typereg_reader_getFieldValue(
 
    @since UDK 3.2.0
  */
-sal_uInt16 SAL_CALL typereg_reader_getMethodCount(void * handle)
+REGISTRY_DLLPUBLIC sal_uInt16 SAL_CALL typereg_reader_getMethodCount(void * handle)
     SAL_THROW_EXTERN_C();
 
 /**
@@ -354,7 +355,7 @@ sal_uInt16 SAL_CALL typereg_reader_getMethodCount(void * handle)
 
    @since UDK 3.2.0
  */
-void SAL_CALL typereg_reader_getMethodDocumentation(
+REGISTRY_DLLPUBLIC void SAL_CALL typereg_reader_getMethodDocumentation(
     void * handle, rtl_uString ** result, sal_uInt16 index)
     SAL_THROW_EXTERN_C();
 
@@ -369,7 +370,7 @@ void SAL_CALL typereg_reader_getMethodDocumentation(
 
    @since UDK 3.2.0
  */
-enum RTMethodMode SAL_CALL typereg_reader_getMethodFlags(
+REGISTRY_DLLPUBLIC enum RTMethodMode SAL_CALL typereg_reader_getMethodFlags(
     void * handle, sal_uInt16 index) SAL_THROW_EXTERN_C();
 
 /**
@@ -385,7 +386,7 @@ enum RTMethodMode SAL_CALL typereg_reader_getMethodFlags(
 
    @since UDK 3.2.0
  */
-void SAL_CALL typereg_reader_getMethodName(
+REGISTRY_DLLPUBLIC void SAL_CALL typereg_reader_getMethodName(
     void * handle, rtl_uString ** result, sal_uInt16 index)
     SAL_THROW_EXTERN_C();
 
@@ -402,7 +403,7 @@ void SAL_CALL typereg_reader_getMethodName(
 
    @since UDK 3.2.0
  */
-void SAL_CALL typereg_reader_getMethodReturnTypeName(
+REGISTRY_DLLPUBLIC void SAL_CALL typereg_reader_getMethodReturnTypeName(
     void * handle, rtl_uString ** result, sal_uInt16 index)
     SAL_THROW_EXTERN_C();
 
@@ -417,7 +418,7 @@ void SAL_CALL typereg_reader_getMethodReturnTypeName(
 
    @since UDK 3.2.0
  */
-sal_uInt16 SAL_CALL typereg_reader_getMethodParameterCount(
+REGISTRY_DLLPUBLIC sal_uInt16 SAL_CALL typereg_reader_getMethodParameterCount(
     void * handle, sal_uInt16 index) SAL_THROW_EXTERN_C();
 
 /**
@@ -436,7 +437,7 @@ sal_uInt16 SAL_CALL typereg_reader_getMethodParameterCount(
 
    @since UDK 3.2.0
  */
-enum RTParamMode SAL_CALL typereg_reader_getMethodParameterFlags(
+REGISTRY_DLLPUBLIC enum RTParamMode SAL_CALL typereg_reader_getMethodParameterFlags(
     void * handle, sal_uInt16 methodIndex, sal_uInt16 parameterIndex)
     SAL_THROW_EXTERN_C();
 
@@ -457,7 +458,7 @@ enum RTParamMode SAL_CALL typereg_reader_getMethodParameterFlags(
 
    @since UDK 3.2.0
  */
-void SAL_CALL typereg_reader_getMethodParameterName(
+REGISTRY_DLLPUBLIC void SAL_CALL typereg_reader_getMethodParameterName(
     void * handle, rtl_uString ** result, sal_uInt16 methodIndex,
     sal_uInt16 parameterIndex)
     SAL_THROW_EXTERN_C();
@@ -479,7 +480,7 @@ void SAL_CALL typereg_reader_getMethodParameterName(
 
    @since UDK 3.2.0
  */
-void SAL_CALL typereg_reader_getMethodParameterTypeName(
+REGISTRY_DLLPUBLIC void SAL_CALL typereg_reader_getMethodParameterTypeName(
     void * handle, rtl_uString ** result, sal_uInt16 methodIndex,
     sal_uInt16 parameterIndex)
     SAL_THROW_EXTERN_C();
@@ -495,7 +496,7 @@ void SAL_CALL typereg_reader_getMethodParameterTypeName(
 
    @since UDK 3.2.0
  */
-sal_uInt16 SAL_CALL typereg_reader_getMethodExceptionCount(
+REGISTRY_DLLPUBLIC sal_uInt16 SAL_CALL typereg_reader_getMethodExceptionCount(
     void * handle, sal_uInt16 index) SAL_THROW_EXTERN_C();
 
 /**
@@ -515,7 +516,7 @@ sal_uInt16 SAL_CALL typereg_reader_getMethodExceptionCount(
 
    @since UDK 3.2.0
  */
-void SAL_CALL typereg_reader_getMethodExceptionTypeName(
+REGISTRY_DLLPUBLIC void SAL_CALL typereg_reader_getMethodExceptionTypeName(
     void * handle, rtl_uString ** result, sal_uInt16 methodIndex,
     sal_uInt16 exceptionIndex)
     SAL_THROW_EXTERN_C();
@@ -530,7 +531,7 @@ void SAL_CALL typereg_reader_getMethodExceptionTypeName(
 
    @since UDK 3.2.0
  */
-sal_uInt16 SAL_CALL typereg_reader_getReferenceCount(void * handle)
+REGISTRY_DLLPUBLIC sal_uInt16 SAL_CALL typereg_reader_getReferenceCount(void * handle)
     SAL_THROW_EXTERN_C();
 
 /**
@@ -547,7 +548,7 @@ sal_uInt16 SAL_CALL typereg_reader_getReferenceCount(void * handle)
 
    @since UDK 3.2.0
  */
-void SAL_CALL typereg_reader_getReferenceDocumentation(
+REGISTRY_DLLPUBLIC void SAL_CALL typereg_reader_getReferenceDocumentation(
     void * handle, rtl_uString ** result, sal_uInt16 index)
     SAL_THROW_EXTERN_C();
 
@@ -563,7 +564,7 @@ void SAL_CALL typereg_reader_getReferenceDocumentation(
 
    @since UDK 3.2.0
  */
-RTFieldAccess SAL_CALL typereg_reader_getReferenceFlags(
+REGISTRY_DLLPUBLIC RTFieldAccess SAL_CALL typereg_reader_getReferenceFlags(
     void * handle, sal_uInt16 index) SAL_THROW_EXTERN_C();
 
 /**
@@ -578,7 +579,7 @@ RTFieldAccess SAL_CALL typereg_reader_getReferenceFlags(
 
    @since UDK 3.2.0
  */
-enum RTReferenceType SAL_CALL typereg_reader_getReferenceSort(
+REGISTRY_DLLPUBLIC enum RTReferenceType SAL_CALL typereg_reader_getReferenceSort(
     void * handle, sal_uInt16 index) SAL_THROW_EXTERN_C();
 
 /**
@@ -595,7 +596,7 @@ enum RTReferenceType SAL_CALL typereg_reader_getReferenceSort(
 
    @since UDK 3.2.0
  */
-void SAL_CALL typereg_reader_getReferenceTypeName(
+REGISTRY_DLLPUBLIC void SAL_CALL typereg_reader_getReferenceTypeName(
     void * handle, rtl_uString ** result, sal_uInt16 index)
     SAL_THROW_EXTERN_C();
 
diff --git a/registry/inc/registry/reflread.hxx b/registry/inc/registry/reflread.hxx
index f27471b36873..813daee5cc1f 100644
--- a/registry/inc/registry/reflread.hxx
+++ b/registry/inc/registry/reflread.hxx
@@ -26,6 +26,7 @@
 
 #include <registry/refltype.hxx>
 #include <registry/regtype.h>
+#include "registry/registrydllapi.h"
 #include <rtl/ustring.hxx>
 
 /// Implememetation handle
@@ -86,7 +87,7 @@ struct RegistryTypeReader_Api
 
 /** the API initialization function.
 */
-RegistryTypeReader_Api* TYPEREG_CALLTYPE initRegistryTypeReader_Api(void);
+REGISTRY_DLLPUBLIC RegistryTypeReader_Api* TYPEREG_CALLTYPE initRegistryTypeReader_Api(void);
 
 #ifdef __cplusplus
 }
diff --git a/registry/inc/registry/reflwrit.hxx b/registry/inc/registry/reflwrit.hxx
index 5aeab1f5320c..ade7fb58e53d 100644
--- a/registry/inc/registry/reflwrit.hxx
+++ b/registry/inc/registry/reflwrit.hxx
@@ -26,6 +26,7 @@
 
 #include <registry/refltype.hxx>
 #include <registry/regtype.h>
+#include "registry/registrydllapi.h"
 #include <rtl/ustring.hxx>
 
 /// Implememetation handle
@@ -65,7 +66,7 @@ struct RegistryTypeWriter_Api
 
 /** the API initialization function.
 */
-RegistryTypeWriter_Api* TYPEREG_CALLTYPE initRegistryTypeWriter_Api(void);
+REGISTRY_DLLPUBLIC RegistryTypeWriter_Api* TYPEREG_CALLTYPE initRegistryTypeWriter_Api(void);
 
 #ifdef __cplusplus
 }
diff --git a/registry/inc/registry/registry.h b/registry/inc/registry/registry.h
index 46d03e9d9c07..bed718efa2bf 100644
--- a/registry/inc/registry/registry.h
+++ b/registry/inc/registry/registry.h
@@ -27,6 +27,7 @@
 #include <stddef.h>
 #include <rtl/ustring.h>
 #include <registry/regtype.h>
+#include "registry/registrydllapi.h"
 
 #ifdef __cplusplus
 extern "C" {
@@ -43,7 +44,7 @@ extern "C" {
                      reg_closeKey. If the function fails, phNewKey is NULL.
     @return REG_NO_ERROR if succeeds else an error code.
 */
-RegError REGISTRY_CALLTYPE reg_createKey(RegKeyHandle hKey,
+REGISTRY_DLLPUBLIC RegError REGISTRY_CALLTYPE reg_createKey(RegKeyHandle hKey,
                                          rtl_uString* keyName,
                                          RegKeyHandle* phNewKey);
 
@@ -58,7 +59,7 @@ RegError REGISTRY_CALLTYPE reg_createKey(RegKeyHandle hKey,
                      reg_closeKey. If the function fails, phNewKey is NULL.
     @return REG_NO_ERROR if succeeds else an error code.
 */
-RegError REGISTRY_CALLTYPE reg_openKey(RegKeyHandle hKey,
+REGISTRY_DLLPUBLIC RegError REGISTRY_CALLTYPE reg_openKey(RegKeyHandle hKey,
                                          rtl_uString* keyName,
                                          RegKeyHandle* phOpenKey);
 
@@ -76,7 +77,7 @@ RegError REGISTRY_CALLTYPE reg_openKey(RegKeyHandle hKey,
     @param  pnSubKeys specifies the length of the array (the number of open subkeys).
     @return REG_NO_ERROR if succeeds else an error code.
 */
-RegError REGISTRY_CALLTYPE reg_openSubKeys(RegKeyHandle hKey,
+REGISTRY_DLLPUBLIC RegError REGISTRY_CALLTYPE reg_openSubKeys(RegKeyHandle hKey,
                                              rtl_uString* keyName,
                                              RegKeyHandle** pphSubKeys,
                                              sal_uInt32* pnSubKeys);
@@ -89,7 +90,7 @@ RegError REGISTRY_CALLTYPE reg_openSubKeys(RegKeyHandle hKey,
     @param  nSubKeys specifies the length of the array (the number of subkeys to closed).
     @return REG_NO_ERROR if succeeds else an error code.
 */
-RegError REGISTRY_CALLTYPE reg_closeSubKeys(RegKeyHandle* phSubKeys,
+REGISTRY_DLLPUBLIC RegError REGISTRY_CALLTYPE reg_closeSubKeys(RegKeyHandle* phSubKeys,
                                                sal_uInt32 nSubKeys);
 
 
@@ -101,7 +102,7 @@ RegError REGISTRY_CALLTYPE reg_closeSubKeys(RegKeyHandle* phSubKeys,
                     be deleted.
     @return REG_NO_ERROR if succeeds else an error code.
 */
-RegError REGISTRY_CALLTYPE reg_deleteKey(RegKeyHandle hKey,
+REGISTRY_DLLPUBLIC RegError REGISTRY_CALLTYPE reg_deleteKey(RegKeyHandle hKey,
                                          rtl_uString* keyName);
 
 
@@ -111,7 +112,7 @@ RegError REGISTRY_CALLTYPE reg_deleteKey(RegKeyHandle hKey,
                  The memory of the variable specifying the key will be freed.
     @return REG_NO_ERROR if succeeds else an error code.
 */
-RegError REGISTRY_CALLTYPE reg_closeKey(RegKeyHandle hKey);
+REGISTRY_DLLPUBLIC RegError REGISTRY_CALLTYPE reg_closeKey(RegKeyHandle hKey);
 
 
 /** This function returns the name of a key.
@@ -119,7 +120,7 @@ RegError REGISTRY_CALLTYPE reg_closeKey(RegKeyHandle hKey);
     @param  hKey identifies a currently open key which name will be returned.
     @param  pKeyName contains the keyname if succeeds else an empty string.
 */
-RegError REGISTRY_CALLTYPE reg_getKeyName(RegKeyHandle hKey, rtl_uString** pKeyName);
+REGISTRY_DLLPUBLIC RegError REGISTRY_CALLTYPE reg_getKeyName(RegKeyHandle hKey, rtl_uString** pKeyName);
 
 
 /** This function sets a value of a key.
@@ -134,7 +135,7 @@ RegError REGISTRY_CALLTYPE reg_getKeyName(RegKeyHandle hKey, rtl_uString** pKeyN
     @param  valueSize specifies the size of pData in bytes
     @return REG_NO_ERROR if succeeds else an error code.
 */
-RegError REGISTRY_CALLTYPE reg_setValue(RegKeyHandle hKey,
+REGISTRY_DLLPUBLIC RegError REGISTRY_CALLTYPE reg_setValue(RegKeyHandle hKey,
                                            rtl_uString* keyName,
                                            RegValueType valueType,
                                            RegValue pData,
@@ -150,7 +151,7 @@ RegError REGISTRY_CALLTYPE reg_setValue(RegKeyHandle hKey,
     @param  len specifies the len of pValueList.
     @return REG_NO_ERROR if succeeds else an error code.
 */
-RegError REGISTRY_CALLTYPE reg_setLongListValue(RegKeyHandle hKey,
+REGISTRY_DLLPUBLIC RegError REGISTRY_CALLTYPE reg_setLongListValue(RegKeyHandle hKey,
                                                       rtl_uString* keyName,
                                                       sal_Int32* pValueList,
                                                       sal_uInt32 len);
@@ -165,7 +166,7 @@ RegError REGISTRY_CALLTYPE reg_setLongListValue(RegKeyHandle hKey,
     @param  len specifies the len of pValueList.
     @return REG_NO_ERROR if succeeds else an error code.
 */
-RegError REGISTRY_CALLTYPE reg_setStringListValue(RegKeyHandle hKey,
+REGISTRY_DLLPUBLIC RegError REGISTRY_CALLTYPE reg_setStringListValue(RegKeyHandle hKey,
                                                           rtl_uString* keyName,
                                                           sal_Char** pValueList,
                                                           sal_uInt32 len);
@@ -180,7 +181,7 @@ RegError REGISTRY_CALLTYPE reg_setStringListValue(RegKeyHandle hKey,
     @param  len specifies the len of pValueList.
     @return REG_NO_ERROR if succeeds else an error code.
 */
-RegError REGISTRY_CALLTYPE reg_setUnicodeListValue(RegKeyHandle hKey,
+REGISTRY_DLLPUBLIC RegError REGISTRY_CALLTYPE reg_setUnicodeListValue(RegKeyHandle hKey,
                                                             rtl_uString* keyName,
                                                             sal_Unicode** pValueList,
                                                             sal_uInt32 len);
@@ -197,7 +198,7 @@ RegError REGISTRY_CALLTYPE reg_setUnicodeListValue(RegKeyHandle hKey,
     @param  pValueSize returns the size of the value in bytes
     @return REG_NO_ERROR if succeeds else an error code.
 */
-RegError REGISTRY_CALLTYPE reg_getValueInfo(RegKeyHandle hKey,
+REGISTRY_DLLPUBLIC RegError REGISTRY_CALLTYPE reg_getValueInfo(RegKeyHandle hKey,
                                                rtl_uString* keyName,
                                                RegValueType* pValueType,
                                                sal_uInt32* pValueSize);
@@ -213,7 +214,7 @@ RegError REGISTRY_CALLTYPE reg_getValueInfo(RegKeyHandle hKey,
     @param  pData points to an allocated memory block receiving the data of the value.
     @return REG_NO_ERROR if succeeds else an error code.
 */
-RegError REGISTRY_CALLTYPE reg_getValue(RegKeyHandle hKey,
+REGISTRY_DLLPUBLIC RegError REGISTRY_CALLTYPE reg_getValue(RegKeyHandle hKey,
                                            rtl_uString* keyName,
                                            RegValue pData);
 
@@ -227,7 +228,7 @@ RegError REGISTRY_CALLTYPE reg_getValue(RegKeyHandle hKey,
     @param  pLen returns the length of the value list.
     @return REG_NO_ERROR if succeeds else an error code.
 */
-RegError REGISTRY_CALLTYPE reg_getLongListValue(RegKeyHandle hKey,
+REGISTRY_DLLPUBLIC RegError REGISTRY_CALLTYPE reg_getLongListValue(RegKeyHandle hKey,
                                                       rtl_uString* keyName,
                                                       sal_Int32** pValueList,
                                                       sal_uInt32* pLen);
@@ -242,7 +243,7 @@ RegError REGISTRY_CALLTYPE reg_getLongListValue(RegKeyHandle hKey,
     @param  pLen returns the length of the value list.
     @return REG_NO_ERROR if succeeds else an error code.
 */
-RegError REGISTRY_CALLTYPE reg_getStringListValue(RegKeyHandle hKey,
+REGISTRY_DLLPUBLIC RegError REGISTRY_CALLTYPE reg_getStringListValue(RegKeyHandle hKey,
                                                        rtl_uString* keyName,
                                                        sal_Char*** pValueList,
                                                        sal_uInt32* pLen);
@@ -257,7 +258,7 @@ RegError REGISTRY_CALLTYPE reg_getStringListValue(RegKeyHandle hKey,
     @param  pLen returns the length of the value list.
     @return REG_NO_ERROR if succeeds else an error code.
 */
-RegError REGISTRY_CALLTYPE reg_getUnicodeListValue(RegKeyHandle hKey,
+REGISTRY_DLLPUBLIC RegError REGISTRY_CALLTYPE reg_getUnicodeListValue(RegKeyHandle hKey,
                                                          rtl_uString* keyName,
                                                          sal_Unicode*** pValueList,
                                                          sal_uInt32* pLen);
@@ -270,7 +271,7 @@ RegError REGISTRY_CALLTYPE reg_getUnicodeListValue(RegKeyHandle hKey,
     @param  len specifies the length of the value list.
     @return REG_NO_ERROR if succeeds else an error code.
 */
-RegError REGISTRY_CALLTYPE reg_freeValueList(RegValueType valueType,
+REGISTRY_DLLPUBLIC RegError REGISTRY_CALLTYPE reg_freeValueList(RegValueType valueType,
                                                   RegValue pValueList,
                                                   sal_uInt32 len);
 
@@ -280,7 +281,7 @@ RegError REGISTRY_CALLTYPE reg_freeValueList(RegValueType valueType,
 
     @return REG_INVALID_LINK
 */
-RegError REGISTRY_CALLTYPE reg_createLink(RegKeyHandle hKey,
+REGISTRY_DLLPUBLIC RegError REGISTRY_CALLTYPE reg_createLink(RegKeyHandle hKey,
                                                rtl_uString* linkName,
                                           rtl_uString* linkTarget);
 
@@ -290,7 +291,7 @@ RegError REGISTRY_CALLTYPE reg_createLink(RegKeyHandle hKey,
 
     @return REG_INVALID_LINK
 */
-RegError REGISTRY_CALLTYPE reg_deleteLink(RegKeyHandle hKey,
+REGISTRY_DLLPUBLIC RegError REGISTRY_CALLTYPE reg_deleteLink(RegKeyHandle hKey,
                                             rtl_uString* linkName);
 
 /** This function returns the type of a key.
@@ -303,7 +304,7 @@ RegError REGISTRY_CALLTYPE reg_deleteLink(RegKeyHandle hKey,
     @param  pKeyType returns the type of the key.
     @return REG_NO_ERROR if succeeds else an error code.
 */
-RegError REGISTRY_CALLTYPE reg_getKeyType(RegKeyHandle hKey,
+REGISTRY_DLLPUBLIC RegError REGISTRY_CALLTYPE reg_getKeyType(RegKeyHandle hKey,
                                           rtl_uString* keyName,
                                              RegKeyType* pKeyType);
 
@@ -313,7 +314,7 @@ RegError REGISTRY_CALLTYPE reg_getKeyType(RegKeyHandle hKey,
 
     @return REG_INVALID_LINK
 */
-RegError REGISTRY_CALLTYPE reg_getLinkTarget(RegKeyHandle hKey,
+REGISTRY_DLLPUBLIC RegError REGISTRY_CALLTYPE reg_getLinkTarget(RegKeyHandle hKey,
                                              rtl_uString* linkName,
                                                rtl_uString** pLinkTarget);
 
@@ -327,7 +328,7 @@ RegError REGISTRY_CALLTYPE reg_getLinkTarget(RegKeyHandle hKey,
     @param firstLinkOnly ignored
     @return REG_NO_ERROR if succeeds else an error code.
  */
-RegError REGISTRY_CALLTYPE reg_getResolvedKeyName(RegKeyHandle hKey,
+REGISTRY_DLLPUBLIC RegError REGISTRY_CALLTYPE reg_getResolvedKeyName(RegKeyHandle hKey,
                                                     rtl_uString* keyName,
                                                    sal_Bool firstLinkOnly,
                                                       rtl_uString** pResolvedName);
@@ -344,7 +345,7 @@ RegError REGISTRY_CALLTYPE reg_getResolvedKeyName(RegKeyHandle hKey,
                         registry information.
     @return REG_NO_ERROR if succeeds else an error code.
 */
-RegError REGISTRY_CALLTYPE reg_loadKey(RegKeyHandle hKey,
+REGISTRY_DLLPUBLIC RegError REGISTRY_CALLTYPE reg_loadKey(RegKeyHandle hKey,
                                          rtl_uString* keyName,
                                          rtl_uString* regFileName);
 
@@ -361,7 +362,7 @@ RegError REGISTRY_CALLTYPE reg_loadKey(RegKeyHandle hKey,
                         registry information.
     @return REG_NO_ERROR if succeeds else an error code.
 */
-RegError REGISTRY_CALLTYPE reg_saveKey(RegKeyHandle hKey,
+REGISTRY_DLLPUBLIC RegError REGISTRY_CALLTYPE reg_saveKey(RegKeyHandle hKey,
                                          rtl_uString* keyName,
                                          rtl_uString* regFileName);
 
@@ -381,7 +382,7 @@ RegError REGISTRY_CALLTYPE reg_saveKey(RegKeyHandle hKey,
     @param  bReport if TRUE the function reports warnings on stdout if a key already exists.
     @return REG_NO_ERROR if succeeds else an error code.
 */
-RegError REGISTRY_CALLTYPE reg_mergeKey(RegKeyHandle hKey,
+REGISTRY_DLLPUBLIC RegError REGISTRY_CALLTYPE reg_mergeKey(RegKeyHandle hKey,
                                            rtl_uString* keyName,
                                            rtl_uString* regFileName,
                                            sal_Bool bWarnings,
@@ -394,7 +395,7 @@ RegError REGISTRY_CALLTYPE reg_mergeKey(RegKeyHandle hKey,
     @param  phRegistry points to a handle of the new registry if the function succeeds otherwise NULL.
     @return REG_NO_ERROR if succeeds else an error code.
 */
-RegError REGISTRY_CALLTYPE reg_createRegistry(rtl_uString* registryName,
+REGISTRY_DLLPUBLIC RegError REGISTRY_CALLTYPE reg_createRegistry(rtl_uString* registryName,
                                                RegHandle* phRegistry);
 
 
@@ -404,7 +405,7 @@ RegError REGISTRY_CALLTYPE reg_createRegistry(rtl_uString* registryName,
     @param  phRootKey points to a handle of the open root key if the function succeeds otherwise NULL.
     @return REG_NO_ERROR if succeeds else an error code.
 */
-RegError REGISTRY_CALLTYPE reg_openRootKey(RegHandle hRegistry,
+REGISTRY_DLLPUBLIC RegError REGISTRY_CALLTYPE reg_openRootKey(RegHandle hRegistry,
                                              RegKeyHandle* phRootKey);
 
 
@@ -414,7 +415,7 @@ RegError REGISTRY_CALLTYPE reg_openRootKey(RegHandle hRegistry,
     @param  pName returns the name of the registry if the function succeeds otherwise an empty string.
     @return REG_NO_ERROR if succeeds else an error code.
 */
-RegError REGISTRY_CALLTYPE reg_getName(RegHandle hRegistry, rtl_uString** pName);
+REGISTRY_DLLPUBLIC RegError REGISTRY_CALLTYPE reg_getName(RegHandle hRegistry, rtl_uString** pName);
 
 
 /** This function returns the access mode of the registry.
@@ -422,7 +423,7 @@ RegError REGISTRY_CALLTYPE reg_getName(RegHandle hRegistry, rtl_uString** pName)
     @param  hReg identifies a currently open registry.
     @return TRUE if accessmode is read only else FALSE.
 */
-sal_Bool REGISTRY_CALLTYPE reg_isReadOnly(RegHandle hReg);
+REGISTRY_DLLPUBLIC sal_Bool REGISTRY_CALLTYPE reg_isReadOnly(RegHandle hReg);
 
 
 /** This function opens a registry with the specified name.
@@ -432,7 +433,7 @@ sal_Bool REGISTRY_CALLTYPE reg_isReadOnly(RegHandle hReg);
     @param  accessMode specifies the accessmode of the registry, REG_READONLY or REG_READWRITE.
     @return REG_NO_ERROR if succeeds else an error code.
 */
-RegError REGISTRY_CALLTYPE reg_openRegistry(rtl_uString* registryName,
+REGISTRY_DLLPUBLIC RegError REGISTRY_CALLTYPE reg_openRegistry(rtl_uString* registryName,
                                                RegHandle* phRegistry,
                                                RegAccessMode accessMode);
 
@@ -442,7 +443,7 @@ RegError REGISTRY_CALLTYPE reg_openRegistry(rtl_uString* registryName,
     @param  hRegistry identifies a currently open registry which should be closed.
     @return REG_NO_ERROR if succeeds else an error code.
 */
-RegError REGISTRY_CALLTYPE reg_closeRegistry(RegHandle hRegistry);
+REGISTRY_DLLPUBLIC RegError REGISTRY_CALLTYPE reg_closeRegistry(RegHandle hRegistry);
 
 
 /** This function destroys a registry.
@@ -452,7 +453,7 @@ RegError REGISTRY_CALLTYPE reg_closeRegistry(RegHandle hRegistry);
                          name is NULL the registry itselfs will be destroyed.
     @return REG_NO_ERROR if succeeds else an error code.
 */
-RegError REGISTRY_CALLTYPE reg_destroyRegistry(RegHandle hRegistry,
+REGISTRY_DLLPUBLIC RegError REGISTRY_CALLTYPE reg_destroyRegistry(RegHandle hRegistry,
                                                rtl_uString* registryName);
 
 
@@ -463,7 +464,7 @@ RegError REGISTRY_CALLTYPE reg_destroyRegistry(RegHandle hRegistry,
     @param  hKey identifies a currently open key which content will be reported.
     @return REG_NO_ERROR if succeeds else an error code.
 */
-RegError REGISTRY_CALLTYPE reg_dumpRegistry(RegKeyHandle hKey);
+REGISTRY_DLLPUBLIC RegError REGISTRY_CALLTYPE reg_dumpRegistry(RegKeyHandle hKey);
 
 #ifdef __cplusplus
 }
diff --git a/registry/inc/registry/registry.hxx b/registry/inc/registry/registry.hxx
index 5453e8889623..e5e021979056 100644
--- a/registry/inc/registry/registry.hxx
+++ b/registry/inc/registry/registry.hxx
@@ -26,6 +26,7 @@
 
 #include <registry/regtype.h>
 #include <rtl/ustring.hxx>
+#include "registry/registrydllapi.h"
 
 #ifdef __cplusplus
 extern "C" {
@@ -81,7 +82,7 @@ struct Registry_Api
 
 /** the API initialization function.
 */
-Registry_Api* REGISTRY_CALLTYPE initRegistry_Api(void);
+REGISTRY_DLLPUBLIC Registry_Api* REGISTRY_CALLTYPE initRegistry_Api(void);
 
 #ifdef __cplusplus
 }
diff --git a/registry/inc/registry/registrydllapi.h b/registry/inc/registry/registrydllapi.h
new file mode 100644
index 000000000000..ded7b38d087c
--- /dev/null
+++ b/registry/inc/registry/registrydllapi.h
@@ -0,0 +1,37 @@
+/**************************************************************
+ *
+ * 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.
+ *
+ *************************************************************/
+
+
+
+#ifndef INCLUDED_REGISTRYDLLAPI_H
+#define INCLUDED_REGISTRYDLLAPI_H
+
+#include "sal/types.h"
+
+#if defined(REGISTRY_DLLIMPLEMENTATION)
+#define REGISTRY_DLLPUBLIC  SAL_DLLPUBLIC_EXPORT
+#else
+#define REGISTRY_DLLPUBLIC  SAL_DLLPUBLIC_IMPORT
+#endif
+#define REGISTRY_DLLPRIVATE SAL_DLLPRIVATE
+
+#endif /* INCLUDED_REGISTRYDLLAPI_H */
+
diff --git a/registry/inc/registry/writer.h b/registry/inc/registry/writer.h
index da2afa9d41a0..25acb8d0ead7 100644
--- a/registry/inc/registry/writer.h
+++ b/registry/inc/registry/writer.h
@@ -26,6 +26,7 @@
 
 #include "registry/types.h"
 #include "registry/version.h"
+#include "registry/registrydllapi.h"
 
 #include "rtl/ustring.h"
 #include "sal/types.h"
@@ -67,7 +68,7 @@ extern "C" {
 
    @since UDK 3.2.0
  */
-void * SAL_CALL typereg_writer_create(
+REGISTRY_DLLPUBLIC void * SAL_CALL typereg_writer_create(
     typereg_Version version, rtl_uString const * documentation,
     rtl_uString const * fileName, RTTypeClass typeClass, sal_Bool published,
     rtl_uString const * typeName, sal_uInt16 superTypeCount,
@@ -82,7 +83,7 @@ void * SAL_CALL typereg_writer_create(
 
    @since UDK 3.2.0
  */
-void SAL_CALL typereg_writer_destroy(void * handle) SAL_THROW_EXTERN_C();
+REGISTRY_DLLPUBLIC void SAL_CALL typereg_writer_destroy(void * handle) SAL_THROW_EXTERN_C();
 
 /**
    Sets the type name of a super type of a type writer.
@@ -99,7 +100,7 @@ void SAL_CALL typereg_writer_destroy(void * handle) SAL_THROW_EXTERN_C();
 
    @since UDK 3.2.0
  */
-sal_Bool SAL_CALL typereg_writer_setSuperTypeName(
+REGISTRY_DLLPUBLIC sal_Bool SAL_CALL typereg_writer_setSuperTypeName(
     void * handle, sal_uInt16 index, rtl_uString const * typeName)
         SAL_THROW_EXTERN_C();
 
@@ -129,7 +130,7 @@ sal_Bool SAL_CALL typereg_writer_setSuperTypeName(
 
    @since UDK 3.2.0
  */
-sal_Bool SAL_CALL typereg_writer_setFieldData(
+REGISTRY_DLLPUBLIC sal_Bool SAL_CALL typereg_writer_setFieldData(
     void * handle, sal_uInt16 index, rtl_uString const * documentation,
     rtl_uString const * fileName, RTFieldAccess flags, rtl_uString const * name,
     rtl_uString const * typeName, RTValueType valueType,
@@ -160,7 +161,7 @@ sal_Bool SAL_CALL typereg_writer_setFieldData(
 
    @since UDK 3.2.0
  */
-sal_Bool SAL_CALL typereg_writer_setMethodData(
+REGISTRY_DLLPUBLIC sal_Bool SAL_CALL typereg_writer_setMethodData(
     void * handle, sal_uInt16 index, rtl_uString const * documentation,
     RTMethodMode flags, rtl_uString const * name,
     rtl_uString const * returnTypeName, sal_uInt16 parameterCount,
@@ -189,7 +190,7 @@ sal_Bool SAL_CALL typereg_writer_setMethodData(
 
    @since UDK 3.2.0
  */
-sal_Bool SAL_CALL typereg_writer_setMethodParameterData(
+REGISTRY_DLLPUBLIC sal_Bool SAL_CALL typereg_writer_setMethodParameterData(
     void * handle, sal_uInt16 methodIndex, sal_uInt16 parameterIndex,
     RTParamMode flags, rtl_uString const * name, rtl_uString const * typeName)
     SAL_THROW_EXTERN_C();
@@ -212,7 +213,7 @@ sal_Bool SAL_CALL typereg_writer_setMethodParameterData(
 
    @since UDK 3.2.0
  */
-sal_Bool SAL_CALL typereg_writer_setMethodExceptionTypeName(
+REGISTRY_DLLPUBLIC sal_Bool SAL_CALL typereg_writer_setMethodExceptionTypeName(
     void * handle, sal_uInt16 methodIndex, sal_uInt16 exceptionIndex,
     rtl_uString const * typeName)
     SAL_THROW_EXTERN_C();
@@ -238,7 +239,7 @@ sal_Bool SAL_CALL typereg_writer_setMethodExceptionTypeName(
 
    @since UDK 3.2.0
  */
-sal_Bool SAL_CALL typereg_writer_setReferenceData(
+REGISTRY_DLLPUBLIC sal_Bool SAL_CALL typereg_writer_setReferenceData(
     void * handle, sal_uInt16 index, rtl_uString const * documentation,
     RTReferenceType sort, RTFieldAccess flags, rtl_uString const * typeName)
     SAL_THROW_EXTERN_C();
@@ -255,7 +256,7 @@ sal_Bool SAL_CALL typereg_writer_setReferenceData(
    the given type writer; if an out-of-memory condition occurs, null is returned
    and <code>size</code> is not modified
  */
-void const * SAL_CALL typereg_writer_getBlob(void * handle, sal_uInt32 * size)
+REGISTRY_DLLPUBLIC void const * SAL_CALL typereg_writer_getBlob(void * handle, sal_uInt32 * size)
     SAL_THROW_EXTERN_C();
 
 #ifdef __cplusplus
diff --git a/registry/prj/build.lst b/registry/prj/build.lst
index 624601246e3a..71728c86ebeb 100644
--- a/registry/prj/build.lst
+++ b/registry/prj/build.lst
@@ -1,7 +1,2 @@
 rg	registry	:	salhelper store NULL
-rg	registry								usr1	-	all	rg_mkout NULL
-rg	registry\inc							nmake	-	all	rg_inc NULL
-rg	registry\prj							get		-	all	rg_prj rg_inc NULL
-rg	registry\source							nmake	-	all	rg_src rg_inc NULL
-rg	registry\util							nmake	-	all	rg_utl rg_src NULL
-rg	registry\tools							nmake	-	all	rg_tls rg_utl NULL
+rg	registry\prj							nmake		-	all rg_prj NULL
diff --git a/registry/prj/d.lst b/registry/prj/d.lst
index 89798dba5aca..e69de29bb2d1 100644
--- a/registry/prj/d.lst
+++ b/registry/prj/d.lst
@@ -1,20 +0,0 @@
-mkdir: %_DEST%\inc%_EXT%\registry
-
-..\inc\registry\*.h %_DEST%\inc%_EXT%\registry\*.h
-..\inc\registry\*.hxx %_DEST%\inc%_EXT%\registry\*.hxx
-
-..\%__SRC%\lib\ireg.lib %_DEST%\lib%_EXT%\ireg.lib
-..\%__SRC%\lib\reg*.lib %_DEST%\lib%_EXT%\*
-..\%__SRC%\lib\libreg.*.* %_DEST%\lib%_EXT%\*
-..\%__SRC%\bin\reg*.dll %_DEST%\bin%_EXT%\reg*.dll
-
-..\%__SRC%\bin\checksingleton.exe %_DEST%\bin%_EXT%\checksingleton.exe
-..\%__SRC%\bin\regcompare.exe %_DEST%\bin%_EXT%\regcompare.exe
-..\%__SRC%\bin\regmerge.exe %_DEST%\bin%_EXT%\regmerge.exe
-..\%__SRC%\bin\regview.exe %_DEST%\bin%_EXT%\regview.exe
-..\%__SRC%\bin\checksingleton %_DEST%\bin%_EXT%\checksingleton
-..\%__SRC%\bin\regcompare %_DEST%\bin%_EXT%\regcompare
-..\%__SRC%\bin\regmerge %_DEST%\bin%_EXT%\regmerge
-..\%__SRC%\bin\regview %_DEST%\bin%_EXT%\regview
-
-linklib: libreg.*.*
diff --git a/registry/inc/makefile.mk b/registry/prj/makefile.mk
similarity index 69%
rename from registry/inc/makefile.mk
rename to registry/prj/makefile.mk
index 7abbd5b7aa9d..c62c6a657d16 100644
--- a/registry/inc/makefile.mk
+++ b/registry/prj/makefile.mk
@@ -20,24 +20,25 @@
 #**************************************************************
 
 
-PRJ=..
-
-PRJNAME=registry
-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)"!=""
 
+PRJ=..
+TARGET=prj
+
+.INCLUDE : settings.mk
+
+.IF "$(VERBOSE)"!=""
+VERBOSEFLAG :=
+.ELSE
+VERBOSEFLAG := -s
+.ENDIF
+
+.IF "$(DEBUG)"!=""
+DEBUG_ARGUMENT=DEBUG=$(DEBUG)
+.ELIF "$(debug)"!=""
+DEBUG_ARGUMENT=debug=$(debug)
+.ELSE
+DEBUG_ARGUMENT=
+.ENDIF
+
+all:
+    cd $(PRJ) && $(GNUMAKE) $(VERBOSEFLAG) -r -j$(MAXPROCESS) $(gb_MAKETARGET) $(DEBUG_ARGUMENT) && $(GNUMAKE) $(VERBOSEFLAG) -r deliverlog
diff --git a/registry/tools/makefile.mk b/registry/tools/makefile.mk
deleted file mode 100644
index 1f5adf871d8c..000000000000
--- a/registry/tools/makefile.mk
+++ /dev/null
@@ -1,84 +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=registry
-TARGET=regmerge
-TARGETTYPE=CUI
-LIBTARGET=NO
-
-ENABLE_EXCEPTIONS := TRUE
-
-# --- Settings -----------------------------------------------------
-.INCLUDE :  settings.mk
-
-.INCLUDE :  ..$/version.mk
-
-# --- Files --------------------------------------------------------
-CDEFS += -DDLL_VERSION=$(EMQ)"$(DLLPOSTFIX)$(EMQ)"
-
-APP1TARGET= $(TARGET)
-APP1OBJS=   $(OBJ)$/regmerge.obj $(OBJ)/fileurl.obj $(OBJ)/options.obj
-APP1RPATH=  UREBIN
-
-APP1STDLIBS=\
-            $(SALLIB) \
-            $(REGLIB)
-
-APP2TARGET= regview
-APP2OBJS=   $(OBJ)$/regview.obj $(OBJ)/fileurl.obj
-APP2RPATH=  UREBIN
-
-APP2STDLIBS=\
-            $(SALLIB) \
-            $(REGLIB)
-
-APP3TARGET= regcompare
-APP3OBJS=   $(OBJ)$/regcompare.obj $(OBJ)/fileurl.obj $(OBJ)/options.obj
-APP3RPATH=  SDK
-
-APP3STDLIBS=\
-            $(SALLIB) \
-            $(SALHELPERLIB) \
-            $(REGLIB)
-
-APP4TARGET= checksingleton
-APP4OBJS=   $(OBJ)$/checksingleton.obj $(OBJ)/fileurl.obj $(OBJ)/options.obj
-
-APP4STDLIBS=\
-            $(SALLIB) \
-            $(SALHELPERLIB) \
-            $(REGLIB)
-
-APP5TARGET= rdbedit
-APP5OBJS=   $(OBJ)$/rdbedit.obj
-
-APP5STDLIBS=\
-            $(SALLIB) \
-            $(SALHELPERLIB) \
-            $(REGLIB)
-
-OBJFILES = $(APP1OBJS) $(APP2OBJS) $(APP3OBJS) $(APP4OBJS) $(APP5OBJS)
-
-.INCLUDE :  target.mk
diff --git a/registry/util/makefile.mk b/registry/util/makefile.mk
deleted file mode 100644
index 486d3329e3e8..000000000000
--- a/registry/util/makefile.mk
+++ /dev/null
@@ -1,72 +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=registry
-TARGET=reg
-
-UNIXVERSIONNAMES=UDK
-
-# --- Settings -----------------------------------------------------
-.INCLUDE :  settings.mk
-
-# ------------------------------------------------------------------
-
-USE_LDUMP2=TRUE
-#USE_DEFFILE=TRUE
-LDUMP2=LDUMP3
-
-DOCPPFILES= $(INC)$/registry$/registry.hxx \
-            $(INC)$/registry$/registry.h \
-            $(INC)$/registry$/regtype.h \
-            $(INC)$/registry$/reflread.hxx \
-            $(INC)$/registry$/reflwrit.hxx \
-            $(INC)$/registry$/refltype.hxx \
-
-LIB1TARGET= $(SLB)$/$(TARGET).lib
-
-LIB1FILES= 	$(SLB)$/$(TARGET)cpp.lib
-
-SHL1TARGET= $(TARGET)
-SHL1IMPLIB= ireg
-SHL1STDLIBS= \
-    $(SALLIB) \
-    $(STORELIB)
-
-SHL1VERSIONMAP=	$(TARGET).map
-
-SHL1LIBS= $(LIB1TARGET)	
-SHL1DEPN= $(LIB1TARGET)
-SHL1DEF= $(MISC)$/$(SHL1TARGET).def
-DEF1NAME= $(SHL1TARGET)
-DEF1DES	= RegistryRuntime
-SHL1RPATH=URELIB
-
-# --- Targets ------------------------------------------------------
-
-.INCLUDE :  target.mk
-
-makedocpp: $(DOCPPFILES)
-     docpp -H -m -f  -u -d $(OUT)$/doc$/$(PRJNAME) $(DOCPPFILES)
-
diff --git a/solenv/gbuild/Deliver.mk b/solenv/gbuild/Deliver.mk
index 5f33eea7d18e..eb21af7b83e4 100644
--- a/solenv/gbuild/Deliver.mk
+++ b/solenv/gbuild/Deliver.mk
@@ -56,11 +56,11 @@ endef
 
 ifeq ($(strip $(gb_Deliver_GNUCOPY)),)
 define gb_Deliver__deliver
-mkdir -p $(dir $(2)) && $(if $(gb_Deliver_CLEARONDELIVER),rm -f $(2) &&) cp -f $(1) $(2) && touch -r $(1) $(2)
+mkdir -p $(dir $(2)) && $(if $(gb_Deliver_CLEARONDELIVER),rm -f $(2) &&) cp -R -P -f $(1) $(2) && touch -r $(1) $(2)
 endef
 else
 define gb_Deliver__deliver
-mkdir -p $(dir $(2)) && $(gb_Deliver_GNUCOPY) $(if $(gb_Deliver_CLEARONDELIVER),--remove-destination) --force --preserve=timestamps $(1) $(2)
+mkdir -p $(dir $(2)) && $(gb_Deliver_GNUCOPY) $(if $(gb_Deliver_CLEARONDELIVER),--remove-destination) -R -P --force --preserve=timestamps $(1) $(2)
 endef
 endif
 
diff --git a/solenv/gbuild/Library.mk b/solenv/gbuild/Library.mk
index 68c000d860c0..57f0348477f2 100644
--- a/solenv/gbuild/Library.mk
+++ b/solenv/gbuild/Library.mk
@@ -100,6 +100,15 @@ endef
 gb_Library_get_runtime_filename = \
  $(or $(call gb_Library_get_dllname,$(1)),$(call gb_Library_get_filename,$(1)))
 
+# FIXME: is there a better way?
+define gb_Library_is_udk_versioned
+$(or \
+	$(filter $(patsubst %:$(notdir $(1)),%,$(filter %:$(notdir $(1)),$(gb_Library_FILENAMES))),$(gb_Library_RTVERLIBS)),\
+	$(filter $(patsubst %:$(notdir $(1)),%,$(filter %:$(notdir $(1)),$(gb_Library_FILENAMES))),$(gb_Library_UNOVERLIBS)),\
+	$(filter reg,$(patsubst %:$(notdir $(1)),%,$(filter %:$(notdir $(1)),$(gb_Library_FILENAMES)))),\
+	$(filter store,$(patsubst %:$(notdir $(1)),%,$(filter %:$(notdir $(1)),$(gb_Library_FILENAMES)))))
+endef
+
 $(eval $(foreach method,\
 	add_cobject \
 	add_cobjects \
diff --git a/solenv/gbuild/gbuild.mk b/solenv/gbuild/gbuild.mk
index e63e96d910c0..0b39bb73afee 100644
--- a/solenv/gbuild/gbuild.mk
+++ b/solenv/gbuild/gbuild.mk
@@ -118,6 +118,8 @@ else
 gb_FULLDEPS := $(true)
 endif
 
+gb_UDK_MAJOR := 3
+
 include $(GBUILDDIR)/Helper.mk
 include $(GBUILDDIR)/TargetLocations.mk
 
diff --git a/solenv/gbuild/platform/freebsd.mk b/solenv/gbuild/platform/freebsd.mk
index 367ea97f7558..74fea0cbb4e6 100644
--- a/solenv/gbuild/platform/freebsd.mk
+++ b/solenv/gbuild/platform/freebsd.mk
@@ -256,6 +256,7 @@ $(call gb_Helper_abbreviate_dirs,\
 	$(gb_CXX) \
 		$(if $(filter Library,$(TARGETTYPE)),$(gb_Library_TARGETTYPEFLAGS)) \
 		$(if $(VERSIONMAP),$(gb_Library_VERSIONMAPFLAG) $(VERSIONMAP)) \
+		$(if $(call gb_Library_is_udk_versioned,$(1)),-Wl$(COMMA)-h$(notdir $(1)).$(gb_UDK_MAJOR)) \
 		$(subst \d,$$,$(RPATH)) \
 		$(T_LDFLAGS) \
 		$(foreach object,$(COBJECTS),$(call gb_CObject_get_target,$(object))) \
@@ -265,7 +266,13 @@ $(call gb_Helper_abbreviate_dirs,\
 		$(patsubst lib%.so,-l%,$(foreach lib,$(LINKED_LIBS),$(call gb_Library_get_filename,$(lib)))) \
 		$(patsubst %,-l%,$(EXTERNAL_LIBS)) \
 		$(LIBS) \
-		-o $(1))
+		-o $(if $(call gb_Library_is_udk_versioned,$(1)),$(1).$(gb_UDK_MAJOR),$(1)))
+endef
+
+define gb_LinkTarget__command_symlink_udk_versioned_library
+	$(if $(call gb_Library_is_udk_versioned,$(1)),
+		$(call gb_Helper_abbreviate_dirs,\
+			rm -f $(1) && ln -s $(notdir $(1)).$(gb_UDK_MAJOR) $(1)))
 endef
 
 define gb_LinkTarget__command_staticlink
@@ -281,6 +288,7 @@ endef
 define gb_LinkTarget__command
 $(call gb_Output_announce,$(2),$(true),LNK,4)
 $(if $(filter Library GoogleTest Executable,$(TARGETTYPE)),$(call gb_LinkTarget__command_dynamiclink,$(1)))
+$(if $(filter Library,$(TARGETTYPE)),$(call gb_LinkTarget__command_symlink_udk_versioned_library,$(1)))
 $(if $(filter StaticLibrary,$(TARGETTYPE)),$(call gb_LinkTarget__command_staticlink,$(1)))
 endef
 
@@ -352,6 +360,12 @@ endef
 define gb_Library_Library_platform
 $(call gb_LinkTarget_get_target,$(2)) : RPATH := $(call gb_Library_get_rpath,$(1))
 
+ifneq (,$(call gb_Library_is_udk_versioned,$(call gb_Library_get_target,$(1))))
+$(call gb_Library_get_target,$(1)) \
+$(call gb_Library_get_clean_target,$(1)) : AUXTARGETS +=  \
+	$(call gb_Library_get_target,$(1)).$(gb_UDK_MAJOR)
+
+endif
 endef
 
 
diff --git a/solenv/gbuild/platform/linux.mk b/solenv/gbuild/platform/linux.mk
index ea54db3168a3..df237d96601b 100644
--- a/solenv/gbuild/platform/linux.mk
+++ b/solenv/gbuild/platform/linux.mk
@@ -245,6 +245,7 @@ $(call gb_Helper_abbreviate_dirs,\
 	$(gb_CXX) \
 		$(if $(filter Library,$(TARGETTYPE)),$(gb_Library_TARGETTYPEFLAGS)) \
 		$(if $(VERSIONMAP),$(gb_Library_VERSIONMAPFLAG) $(VERSIONMAP)) \
+		$(if $(call gb_Library_is_udk_versioned,$(1)),-Wl$(COMMA)-h$(notdir $(1)).$(gb_UDK_MAJOR)) \
 		$(subst \d,$$,$(RPATH)) \
 		$(T_LDFLAGS) \
 		$(foreach object,$(COBJECTS),$(call gb_CObject_get_target,$(object))) \
@@ -255,7 +256,13 @@ $(call gb_Helper_abbreviate_dirs,\
 		$(patsubst %,-l%,$(EXTERNAL_LIBS)) \
 		$(LIBS) \
 		-lc \
-		-o $(1))
+		-o $(if $(call gb_Library_is_udk_versioned,$(1)),$(1).$(gb_UDK_MAJOR),$(1)))
+endef
+
+define gb_LinkTarget__command_symlink_udk_versioned_library
+	$(if $(call gb_Library_is_udk_versioned,$(1)),
+		$(call gb_Helper_abbreviate_dirs,\
+			rm -f $(1) && ln -s $(notdir $(1)).$(gb_UDK_MAJOR) $(1)))
 endef
 
 define gb_LinkTarget__command_staticlink
@@ -271,6 +278,7 @@ endef
 define gb_LinkTarget__command
 $(call gb_Output_announce,$(2),$(true),LNK,4)
 $(if $(filter Library GoogleTest Executable,$(TARGETTYPE)),$(call gb_LinkTarget__command_dynamiclink,$(1)))
+$(if $(filter Library,$(TARGETTYPE)),$(call gb_LinkTarget__command_symlink_udk_versioned_library,$(1)))
 $(if $(filter StaticLibrary,$(TARGETTYPE)),$(call gb_LinkTarget__command_staticlink,$(1)))
 endef
 
@@ -342,6 +350,11 @@ endef
 define gb_Library_Library_platform
 $(call gb_LinkTarget_get_target,$(2)) : RPATH := $(call gb_Library_get_rpath,$(1))
 
+ifneq (,$(call gb_Library_is_udk_versioned,$(call gb_Library_get_target,$(1))))
+$(call gb_Library_get_target,$(1)) \
+$(call gb_Library_get_clean_target,$(1)) : AUXTARGETS +=  \
+	$(call gb_Library_get_target,$(1)).$(gb_UDK_MAJOR)
+endif
 endef
 
 
diff --git a/solenv/gbuild/platform/solaris.mk b/solenv/gbuild/platform/solaris.mk
index 765bc054c6e3..17961a7ea124 100644
--- a/solenv/gbuild/platform/solaris.mk
+++ b/solenv/gbuild/platform/solaris.mk
@@ -211,6 +211,7 @@ $(call gb_Helper_abbreviate_dirs,\
 	$(gb_CXX) \
 		$(if $(filter Library,$(TARGETTYPE)),$(gb_Library_TARGETTYPEFLAGS)) \
 		$(if $(VERSIONMAP),$(gb_Library_VERSIONMAPFLAG) $(VERSIONMAP)) \
+		$(if $(call gb_Library_is_udk_versioned,$(1)),-Wl$(COMMA)-h$(notdir $(1)).$(gb_UDK_MAJOR)) \
 		$(subst \d,$$,$(RPATH)) \
 		$(T_LDFLAGS) \
 		$(foreach object,$(COBJECTS),$(call gb_CObject_get_target,$(object))) \
@@ -220,7 +221,13 @@ $(call gb_Helper_abbreviate_dirs,\
 		$(patsubst lib%.so,-l%,$(foreach lib,$(LINKED_LIBS),$(call gb_Library_get_filename,$(lib)))) \
 		$(patsubst %,-l%,$(EXTERNAL_LIBS)) \
 		$(LIBS) \
-		-o $(1))
+		-o $(if $(call gb_Library_is_udk_versioned,$(1)),$(1).$(gb_UDK_MAJOR),$(1)))
+endef
+
+define gb_LinkTarget__command_symlink_udk_versioned_library
+	$(if $(call gb_Library_is_udk_versioned,$(1)),
+		$(call gb_Helper_abbreviate_dirs,\
+			rm -f $(1) && ln -s $(notdir $(1)).$(gb_UDK_MAJOR) $(1)))
 endef
 
 define gb_LinkTarget__command_staticlink
@@ -236,6 +243,7 @@ endef
 define gb_LinkTarget__command
 $(call gb_Output_announce,$(2),$(true),LNK,4)
 $(if $(filter Library GoogleTest Executable,$(TARGETTYPE)),$(call gb_LinkTarget__command_dynamiclink,$(1)))
+$(if $(filter Library,$(TARGETTYPE)),$(call gb_LinkTarget__command_symlink_udk_versioned_library,$(1)))
 $(if $(filter StaticLibrary,$(TARGETTYPE)),$(call gb_LinkTarget__command_staticlink,$(1)))
 endef
 
@@ -310,6 +318,11 @@ endef
 define gb_Library_Library_platform
 $(call gb_LinkTarget_get_target,$(2)) : RPATH := $(call gb_Library_get_rpath,$(1))
 
+ifneq (,$(call gb_Library_is_udk_versioned,$(call gb_Library_get_target,$(1))))
+$(call gb_Library_get_target,$(1)) \
+$(call gb_Library_get_clean_target,$(1)) : AUXTARGETS +=  \
+	$(call gb_Library_get_target,$(1)).$(gb_UDK_MAJOR)
+endif
 endef
 
 


More information about the Libreoffice-commits mailing list