summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.fetch1
-rw-r--r--RepositoryExternal.mk35
-rw-r--r--config_host.mk.in3
-rw-r--r--configure.ac31
-rw-r--r--download.lst2
-rw-r--r--external/Module_external.mk1
-rw-r--r--external/box2d/Makefile7
-rw-r--r--external/box2d/Module_box2d.mk20
-rw-r--r--external/box2d/README3
-rw-r--r--external/box2d/StaticLibrary_box2d.mk72
-rw-r--r--external/box2d/UnpackedTarball_box2d.mk14
11 files changed, 189 insertions, 0 deletions
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.]),,
@@ -10264,6 +10269,32 @@ 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 ===================================================================
AC_MSG_CHECKING([which altlinuxhyph to use])
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: