--- misc/apr-util-1.4.1/Library_apr-util.mk	2012-01-05 14:49:40.529219100 +0100
+++ misc/build/apr-util-1.4.1/Library_apr-util.mk	2012-01-05 14:47:18.621102400 +0100
@@ -1 +1,90 @@
-dummy
+#/**************************************************************
+# * 
+# * 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,apr-util))
+
+$(eval $(call gb_Library_add_package_headers,apr-util,apr-util_inc))
+
+$(eval $(call gb_Library_set_include,apr-util,\
+	$$(INCLUDE) \
+	-I./include \
+	-I./include/private \
+	-I$(OUTDIR)/inc/apr \
+))
+
+$(eval $(call gb_Library_set_defs,apr-util,\
+	$$(DEFS) \
+	-DAPU_DECLARE_EXPORT -DWIN32 -DNDEBUG -D_WINDOWS -D_USRDLL -DWIN32_EXPORTS \
+))
+
+$(eval $(call gb_Library_add_linked_libs,apr-util,\
+	apr \
+	expat_xmltok \
+	expat_xmlparse \
+    $(gb_STDLIBS) \
+))
+
+$(eval $(call gb_Library_add_cobjects,apr-util,\
+	apr-util/$(INPATH)/misc/build/apr-util-1.4.1/buckets/apr_brigade \
+	apr-util/$(INPATH)/misc/build/apr-util-1.4.1/buckets/apr_buckets \
+	apr-util/$(INPATH)/misc/build/apr-util-1.4.1/buckets/apr_buckets_alloc \
+	apr-util/$(INPATH)/misc/build/apr-util-1.4.1/buckets/apr_buckets_eos \
+	apr-util/$(INPATH)/misc/build/apr-util-1.4.1/buckets/apr_buckets_file \
+	apr-util/$(INPATH)/misc/build/apr-util-1.4.1/buckets/apr_buckets_flush \
+	apr-util/$(INPATH)/misc/build/apr-util-1.4.1/buckets/apr_buckets_heap \
+	apr-util/$(INPATH)/misc/build/apr-util-1.4.1/buckets/apr_buckets_mmap \
+	apr-util/$(INPATH)/misc/build/apr-util-1.4.1/buckets/apr_buckets_pipe \
+	apr-util/$(INPATH)/misc/build/apr-util-1.4.1/buckets/apr_buckets_pool \
+	apr-util/$(INPATH)/misc/build/apr-util-1.4.1/buckets/apr_buckets_refcount \
+	apr-util/$(INPATH)/misc/build/apr-util-1.4.1/buckets/apr_buckets_simple \
+	apr-util/$(INPATH)/misc/build/apr-util-1.4.1/buckets/apr_buckets_socket \
+	apr-util/$(INPATH)/misc/build/apr-util-1.4.1/crypto/apr_crypto \
+	apr-util/$(INPATH)/misc/build/apr-util-1.4.1/crypto/apr_md4 \
+	apr-util/$(INPATH)/misc/build/apr-util-1.4.1/crypto/apr_md5 \
+	apr-util/$(INPATH)/misc/build/apr-util-1.4.1/crypto/apr_sha1 \
+	apr-util/$(INPATH)/misc/build/apr-util-1.4.1/crypto/getuuid \
+	apr-util/$(INPATH)/misc/build/apr-util-1.4.1/crypto/uuid \
+	apr-util/$(INPATH)/misc/build/apr-util-1.4.1/dbd/apr_dbd \
+	apr-util/$(INPATH)/misc/build/apr-util-1.4.1/dbm/apr_dbm \
+	apr-util/$(INPATH)/misc/build/apr-util-1.4.1/dbm/apr_dbm_sdbm \
+	apr-util/$(INPATH)/misc/build/apr-util-1.4.1/dbm/sdbm/sdbm \
+	apr-util/$(INPATH)/misc/build/apr-util-1.4.1/dbm/sdbm/sdbm_hash \
+	apr-util/$(INPATH)/misc/build/apr-util-1.4.1/dbm/sdbm/sdbm_lock \
+	apr-util/$(INPATH)/misc/build/apr-util-1.4.1/dbm/sdbm/sdbm_pair \
+	apr-util/$(INPATH)/misc/build/apr-util-1.4.1/encoding/apr_base64 \
+	apr-util/$(INPATH)/misc/build/apr-util-1.4.1/hooks/apr_hooks \
+	apr-util/$(INPATH)/misc/build/apr-util-1.4.1/ldap/apr_ldap_stub \
+	apr-util/$(INPATH)/misc/build/apr-util-1.4.1/ldap/apr_ldap_url \
+	apr-util/$(INPATH)/misc/build/apr-util-1.4.1/memcache/apr_memcache \
+	apr-util/$(INPATH)/misc/build/apr-util-1.4.1/misc/apr_date \
+	apr-util/$(INPATH)/misc/build/apr-util-1.4.1/misc/apr_queue \
+	apr-util/$(INPATH)/misc/build/apr-util-1.4.1/misc/apr_reslist \
+	apr-util/$(INPATH)/misc/build/apr-util-1.4.1/misc/apr_rmm \
+	apr-util/$(INPATH)/misc/build/apr-util-1.4.1/misc/apr_thread_pool \
+	apr-util/$(INPATH)/misc/build/apr-util-1.4.1/misc/apu_dso \
+	apr-util/$(INPATH)/misc/build/apr-util-1.4.1/misc/apu_version \
+	apr-util/$(INPATH)/misc/build/apr-util-1.4.1/strmatch/apr_strmatch \
+	apr-util/$(INPATH)/misc/build/apr-util-1.4.1/uri/apr_uri \
+	apr-util/$(INPATH)/misc/build/apr-util-1.4.1/xlate/xlate \
+	apr-util/$(INPATH)/misc/build/apr-util-1.4.1/xml/apr_xml \
+))
+
+# vim: set noet sw=4 ts=4:
--- misc/apr-util-1.4.1/Makefile	2012-01-05 14:49:40.420212900 +0100
+++ misc/build/apr-util-1.4.1/Makefile	2012-01-05 14:47:07.827485100 +0100
@@ -1 +1,32 @@
-dummy
+#/**************************************************************
+# * 
+# * 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:
--- misc/apr-util-1.4.1/Module_apr-util.mk	2012-01-05 14:49:40.476216100 +0100
+++ misc/build/apr-util-1.4.1/Module_apr-util.mk	2012-01-05 14:47:42.567472100 +0100
@@ -1 +1,29 @@
-dummy
+#/**************************************************************
+# * 
+# * 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,apr-util))
+
+$(eval $(call gb_Module_add_targets,apr-util,\
+	Library_apr-util \
+	Package_inc \
+))
+
+# vim: set noet ts=4 sw=4:
--- misc/apr-util-1.4.1/Package_inc.mk	2012-01-05 14:49:40.585222300 +0100
+++ misc/build/apr-util-1.4.1/Package_inc.mk	2012-01-05 14:47:51.616989700 +0100
@@ -1 +1,32 @@
-dummy
+#/**************************************************************
+# * 
+# * 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,apr-util_inc,$(EXT_LIBRARIES)/apr-util/$(INPATH)/misc/build/apr-util-1.4.1/include))
+$(eval $(call gb_Package_add_files, apr-util_inc, inc/apr-util,        \
+       apu.h                                                           \
+       apr_uri.h                                                       \
+       apr_date.h                                                      \
+       apr_uuid.h                                                      \
+       apr_md5.h                                                       \
+       apr_xlate.h                                                     \
+       apr_base64.h                                                    \
+))
+
