Makefile.fetch                          |    1 
 RepositoryExternal.mk                   |   35 +++++++++++++++
 config_host.mk.in                       |    3 +
 configure.ac                            |   31 +++++++++++++
 download.lst                            |    2 
 external/Module_external.mk             |    1 
 external/box2d/Makefile                 |    7 +++
 external/box2d/Module_box2d.mk          |   20 ++++++++
 external/box2d/README                   |    3 +
 external/box2d/StaticLibrary_box2d.mk   |   72 ++++++++++++++++++++++++++++++++
 external/box2d/UnpackedTarball_box2d.mk |   14 ++++++
 11 files changed, 189 insertions(+)

New commits:
commit a7f2239e649ea1b9ef611d758841584ab51abed0
Author:     Sarper Akdemir <q.sarperakde...@gmail.com>
AuthorDate: Wed May 13 11:28:05 2020 +0300
Commit:     Thorsten Behrens <thorsten.behr...@cib.de>
CommitDate: Sun May 17 02:21:54 2020 +0200

    external: bundle box2d
    
    Bundled box2d with the build system of LO as a static library.
    If --with-system-box2d was specified checks for instance box2d in
    the system, defines SYSTEM_BOX2D and uses the library from the system.
    
    Change-Id: Ifb05912f2acaff273b25abebafc5af1cac3afec4
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94103
    Tested-by: Jenkins
    Reviewed-by: Thorsten Behrens <thorsten.behr...@cib.de>

diff --git a/Makefile.fetch b/Makefile.fetch
index cfa3dc58c3a5..0a6202a4b3c7 100644
--- a/Makefile.fetch
+++ b/Makefile.fetch
@@ -105,6 +105,7 @@ $(WORKDIR)/download: $(BUILDDIR)/config_$(gb_Side).mk 
$(SRCDIR)/download.lst $(S
                $(call fetch_Optional,APR,APR_TARBALL) \
                $(call fetch_Optional,APR,APR_UTIL_TARBALL) \
                $(call fetch_Optional,BOOST,BOOST_TARBALL) \
+               $(call fetch_Optional,BOX2D,BOX2D_TARBALL) \
                $(call fetch_Optional,BREAKPAD,BREAKPAD_TARBALL) \
                $(call fetch_Optional,BSH,BSH_TARBALL) \
                $(call fetch_Optional,BZIP2,BZIP2_TARBALL) \
diff --git a/RepositoryExternal.mk b/RepositoryExternal.mk
index ba6437276f28..81a65a1a8590 100644
--- a/RepositoryExternal.mk
+++ b/RepositoryExternal.mk
@@ -4229,4 +4229,39 @@ $(eval $(call 
gb_Helper_register_packages_for_install,ucrt_binarytable,\
        $(if $(UCRT_REDISTDIR),ucrt) \
 ))
 
+ifneq ($(SYSTEM_BOX2D),)
+
+define gb_LinkTarget__use_box2d
+$(call gb_LinkTarget_set_include,$(1),\
+       -DSYSTEM_BOX2D \
+       $$(INCLUDE) \
+       $(BOX2D_CFLAGS) \
+)
+$(call gb_LinkTarget_add_libs,$(1),$(BOX2D_LIBS))
+
+endef
+
+gb_ExternalProject__use_box2d :=
+
+else # !SYSTEM_BOX2D
+
+define gb_LinkTarget__use_box2d
+$(call gb_LinkTarget_use_unpacked,$(1),box2d)
+$(call gb_LinkTarget_set_include,$(1),\
+       -I$(call gb_UnpackedTarball_get_dir,box2d/Box2D/)\
+       $$(INCLUDE) \
+)
+$(call gb_LinkTarget_use_static_libraries,$(1),\
+       box2d \
+)
+
+endef
+
+define gb_ExternalProject__use_box2d
+$(call gb_ExternalProject_use_static_libraries,$(1),box2d)
+
+endef
+
+endif # SYSTEM_BOX2D
+
 # vim: set noet sw=4 ts=4:
diff --git a/config_host.mk.in b/config_host.mk.in
index 7df26713a1dd..bcce45b1ce77 100644
--- a/config_host.mk.in
+++ b/config_host.mk.in
@@ -45,6 +45,8 @@ export BOOST_FILESYSTEM_LIB=@BOOST_FILESYSTEM_LIB@
 export BOOST_IOSTREAMS_LIB=@BOOST_IOSTREAMS_LIB@
 export BOOST_LDFLAGS=@BOOST_LDFLAGS@
 export BOOST_SYSTEM_LIB=@BOOST_SYSTEM_LIB@
+export BOX2D_CFLAGS=@BOX2D_CFLAGS@
+export BOX2D_LIBS=@BOX2D_LIBS@
 export BRAND_INTRO_IMAGES=@BRAND_INTRO_IMAGES@
 export BREAKPAD_SYMBOL_CONFIG=@BREAKPAD_SYMBOL_CONFIG@
 export BSH_JAR=@BSH_JAR@
@@ -537,6 +539,7 @@ export SYSTEM_APR=@SYSTEM_APR@
 export SYSTEM_BLUEZ=@SYSTEM_BLUEZ@
 export SYSTEM_BOOST=@SYSTEM_BOOST@
 export SYSTEM_BSH=@SYSTEM_BSH@
+export SYSTEM_BOX2D=@SYSTEM_BOX2D@
 export SYSTEM_BZIP2=@SYSTEM_BZIP2@
 export SYSTEM_CAIRO=@SYSTEM_CAIRO@
 export SYSTEM_CLUCENE=@SYSTEM_CLUCENE@
diff --git a/configure.ac b/configure.ac
index 23683bed528d..2087b1d3d452 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1964,6 +1964,11 @@ AC_ARG_WITH(system-qrcodegen,
         [Use libqrcodegen already on system.]),,
     [with_system_qrcodegen="$with_system_libs"])
 
+AC_ARG_WITH(system-box2d,
+    AS_HELP_STRING([--with-system-box2d],
+        [Use box2d already on system.]),,
+    [with_system_box2d="$with_system_libs"])
+
 AC_ARG_WITH(system-mythes,
     AS_HELP_STRING([--with-system-mythes],
         [Use mythes already on system.]),,
@@ -10263,6 +10268,32 @@ AC_SUBST(SYSTEM_QRCODEGEN)
 AC_SUBST(QRCODEGEN_CFLAGS)
 AC_SUBST(QRCODEGEN_LIBS)
 
+dnl ===================================================================
+dnl Check for system box2d
+dnl ===================================================================
+AC_MSG_CHECKING([which box2d to use])
+if test "$with_system_box2d" = "yes"; then
+    AC_MSG_RESULT([external])
+    SYSTEM_BOX2D=TRUE
+    AC_LANG_PUSH([C++])
+    AC_CHECK_HEADER(Box2D/Box2D.h, [],
+        [AC_MSG_ERROR(box2d headers not found.)], [])
+    AC_CHECK_LIB([Box2D], [main], [:],
+        [ AC_MSG_ERROR(box2d library not found.) ], [])
+    BOX2D_LIBS=-lBox2D
+    AC_LANG_POP([C++])
+    BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
+    FilterLibs "${BOX2D_LIBS}"
+    BOX2D_LIBS="${filteredlibs}"
+else
+    AC_MSG_RESULT([internal])
+    SYSTEM_BOX2D=
+    BUILD_TYPE="$BUILD_TYPE BOX2D"
+fi
+AC_SUBST(SYSTEM_BOX2D)
+AC_SUBST(BOX2D_CFLAGS)
+AC_SUBST(BOX2D_LIBS)
+
 dnl ===================================================================
 dnl Checking for altlinuxhyph
 dnl ===================================================================
diff --git a/download.lst b/download.lst
index 88a723c7fd79..7c78e3071fb9 100644
--- a/download.lst
+++ b/download.lst
@@ -14,6 +14,8 @@ export APR_UTIL_TARBALL := apr-util-1.5.4.tar.gz
 # please repack the tarball using external/boost/repack_tarball.sh
 export BOOST_SHA256SUM := 
35e06a3bd7cd8f66be822c7d64e80c2b6051a181e9e897006917cb8e7988a543
 export BOOST_TARBALL := boost_1_71_0.tar.xz
+export BOX2D_SHA256SUM := 
58ffc8475a8650aadc351345aef696937747b40501ab78d72c197c5ff5b3035c
+export BOX2D_TARBALL := box2d-2.3.1.tar.gz
 export BREAKPAD_SHA256SUM := 
7060149be16a8789b0ccf596bdeaf63115f03f520acb508f72a14686fb311cb9
 export BREAKPAD_TARBALL := breakpad.zip
 export BSH_SHA256SUM := 
9e93c73e23aff644b17dfff656444474c14150e7f3b38b19635e622235e01c96
diff --git a/external/Module_external.mk b/external/Module_external.mk
index 286759927781..41e018d2ef3f 100644
--- a/external/Module_external.mk
+++ b/external/Module_external.mk
@@ -19,6 +19,7 @@ $(eval $(call gb_Module_add_moduledirs,external,\
        $(call gb_Helper_optional,APACHE_COMMONS,apache-commons) \
        $(call gb_Helper_optional,APR,apr) \
        $(call gb_Helper_optional,BOOST,boost) \
+       $(call gb_Helper_optional,BOX2D,box2d) \
        $(call gb_Helper_optional,BREAKPAD,breakpad) \
        $(call gb_Helper_optional,BSH,beanshell) \
        $(call gb_Helper_optional,BZIP2,bzip2) \
diff --git a/external/box2d/Makefile b/external/box2d/Makefile
new file mode 100644
index 000000000000..e4968cf85fb6
--- /dev/null
+++ b/external/box2d/Makefile
@@ -0,0 +1,7 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+
+module_directory:=$(dir $(realpath $(firstword $(MAKEFILE_LIST))))
+
+include $(module_directory)/../../solenv/gbuild/partial_build.mk
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/box2d/Module_box2d.mk b/external/box2d/Module_box2d.mk
new file mode 100644
index 000000000000..3986357b3668
--- /dev/null
+++ b/external/box2d/Module_box2d.mk
@@ -0,0 +1,20 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_Module_Module,box2d))
+
+$(eval $(call gb_Module_add_targets,box2d,\
+       UnpackedTarball_box2d \
+))
+
+$(eval $(call gb_Module_add_targets,box2d,\
+       StaticLibrary_box2d \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/box2d/README b/external/box2d/README
new file mode 100644
index 000000000000..d2b46b93b09f
--- /dev/null
+++ b/external/box2d/README
@@ -0,0 +1,3 @@
+Box2D is a 2D physics engine.
+
+It is available from [https://github.com/erincatto/box2d]
diff --git a/external/box2d/StaticLibrary_box2d.mk 
b/external/box2d/StaticLibrary_box2d.mk
new file mode 100644
index 000000000000..b50ee47aa498
--- /dev/null
+++ b/external/box2d/StaticLibrary_box2d.mk
@@ -0,0 +1,72 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_StaticLibrary_StaticLibrary,box2d))
+
+$(eval $(call gb_StaticLibrary_use_unpacked,box2d,box2d))
+
+$(eval $(call gb_StaticLibrary_set_warnings_disabled,box2d))
+
+$(eval $(call gb_StaticLibrary_set_generated_cxx_suffix,box2d,cpp))
+
+$(eval $(call gb_StaticLibrary_set_include,box2d,\
+    -I$(call gb_UnpackedTarball_get_dir,box2d/Box2D/)\
+    $$(INCLUDE)\
+))
+
+$(eval $(call gb_StaticLibrary_add_generated_exception_objects,box2d,\
+       UnpackedTarball/box2d/Box2D/Box2D/Common/b2Timer \
+       UnpackedTarball/box2d/Box2D/Box2D/Common/b2StackAllocator \
+       UnpackedTarball/box2d/Box2D/Box2D/Common/b2Draw \
+       UnpackedTarball/box2d/Box2D/Box2D/Common/b2Math \
+       UnpackedTarball/box2d/Box2D/Box2D/Common/b2BlockAllocator \
+       UnpackedTarball/box2d/Box2D/Box2D/Common/b2Settings \
+       UnpackedTarball/box2d/Box2D/Box2D/Dynamics/b2Body \
+       
UnpackedTarball/box2d/Box2D/Box2D/Dynamics/Contacts/b2PolygonAndCircleContact \
+       UnpackedTarball/box2d/Box2D/Box2D/Dynamics/Contacts/b2CircleContact \
+       UnpackedTarball/box2d/Box2D/Box2D/Dynamics/Contacts/b2ContactSolver \
+       UnpackedTarball/box2d/Box2D/Box2D/Dynamics/Contacts/b2PolygonContact \
+       
UnpackedTarball/box2d/Box2D/Box2D/Dynamics/Contacts/b2ChainAndPolygonContact \
+       
UnpackedTarball/box2d/Box2D/Box2D/Dynamics/Contacts/b2ChainAndCircleContact \
+       UnpackedTarball/box2d/Box2D/Box2D/Dynamics/Contacts/b2Contact \
+       
UnpackedTarball/box2d/Box2D/Box2D/Dynamics/Contacts/b2EdgeAndPolygonContact \
+       
UnpackedTarball/box2d/Box2D/Box2D/Dynamics/Contacts/b2EdgeAndCircleContact \
+       UnpackedTarball/box2d/Box2D/Box2D/Dynamics/Joints/b2RopeJoint \
+       UnpackedTarball/box2d/Box2D/Box2D/Dynamics/Joints/b2WheelJoint \
+       UnpackedTarball/box2d/Box2D/Box2D/Dynamics/Joints/b2FrictionJoint \
+       UnpackedTarball/box2d/Box2D/Box2D/Dynamics/Joints/b2PrismaticJoint \
+       UnpackedTarball/box2d/Box2D/Box2D/Dynamics/Joints/b2WeldJoint \
+       UnpackedTarball/box2d/Box2D/Box2D/Dynamics/Joints/b2PulleyJoint \
+       UnpackedTarball/box2d/Box2D/Box2D/Dynamics/Joints/b2MouseJoint \
+       UnpackedTarball/box2d/Box2D/Box2D/Dynamics/Joints/b2MotorJoint \
+       UnpackedTarball/box2d/Box2D/Box2D/Dynamics/Joints/b2DistanceJoint \
+       UnpackedTarball/box2d/Box2D/Box2D/Dynamics/Joints/b2GearJoint \
+       UnpackedTarball/box2d/Box2D/Box2D/Dynamics/Joints/b2Joint \
+       UnpackedTarball/box2d/Box2D/Box2D/Dynamics/Joints/b2RevoluteJoint \
+       UnpackedTarball/box2d/Box2D/Box2D/Dynamics/b2WorldCallbacks \
+       UnpackedTarball/box2d/Box2D/Box2D/Dynamics/b2Fixture \
+       UnpackedTarball/box2d/Box2D/Box2D/Dynamics/b2ContactManager \
+       UnpackedTarball/box2d/Box2D/Box2D/Dynamics/b2Island \
+       UnpackedTarball/box2d/Box2D/Box2D/Dynamics/b2World \
+       UnpackedTarball/box2d/Box2D/Box2D/Rope/b2Rope \
+       UnpackedTarball/box2d/Box2D/Box2D/Collision/b2TimeOfImpact \
+       UnpackedTarball/box2d/Box2D/Box2D/Collision/b2CollidePolygon \
+       UnpackedTarball/box2d/Box2D/Box2D/Collision/b2Distance \
+       UnpackedTarball/box2d/Box2D/Box2D/Collision/b2Collision \
+       UnpackedTarball/box2d/Box2D/Box2D/Collision/b2CollideEdge \
+       UnpackedTarball/box2d/Box2D/Box2D/Collision/b2CollideCircle \
+       UnpackedTarball/box2d/Box2D/Box2D/Collision/b2BroadPhase \
+       UnpackedTarball/box2d/Box2D/Box2D/Collision/Shapes/b2EdgeShape \
+       UnpackedTarball/box2d/Box2D/Box2D/Collision/Shapes/b2CircleShape \
+       UnpackedTarball/box2d/Box2D/Box2D/Collision/Shapes/b2ChainShape \
+       UnpackedTarball/box2d/Box2D/Box2D/Collision/Shapes/b2PolygonShape \
+       UnpackedTarball/box2d/Box2D/Box2D/Collision/b2DynamicTree \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/box2d/UnpackedTarball_box2d.mk 
b/external/box2d/UnpackedTarball_box2d.mk
new file mode 100644
index 000000000000..340a17511711
--- /dev/null
+++ b/external/box2d/UnpackedTarball_box2d.mk
@@ -0,0 +1,14 @@
+#-*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_UnpackedTarball_UnpackedTarball,box2d))
+
+$(eval $(call gb_UnpackedTarball_set_tarball,box2d,$(BOX2D_TARBALL)))
+
+# vim: set noet sw=4 ts=4:
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to