New Upstream Release - ode

Ready changes

Summary

Merged new upstream version: 0.16.3 (was: 0.16.2).

Resulting package

Built on 2023-01-04T18:39 (took 16m3s)

The resulting binary packages can be installed (if you have the apt repository enabled) by running one of:

apt install -t fresh-releases libode-devapt install -t fresh-releases libode8-dbgsymapt install -t fresh-releases libode8

Diff

diff --git a/CMakeLists.txt b/CMakeLists.txt
index b105b9a..c45bdce 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -9,7 +9,7 @@ include(GNUInstallDirs)
 
 set(VERSION_MAJOR 0)
 set(VERSION_MINOR 16)
-set(VERSION_PATCH 2)
+set(VERSION_PATCH 3)
 set(VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH})
 
 option(BUILD_SHARED_LIBS "Build shared libraries." ON)
@@ -518,6 +518,12 @@ target_compile_definitions(
 
 if(APPLE)
 	target_compile_definitions(ODE PRIVATE -DMAC_OS_X_VERSION=${MAC_OS_X_VERSION})
+	if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
+		find_library(CORESERVICES_FW NAMES CoreServices)
+		if (CORESERVICES_FW)
+			target_link_libraries(ODE PRIVATE ${CORESERVICES_FW})
+		endif()
+	endif()
 endif()
 
 if(WIN32)
@@ -670,6 +676,8 @@ configure_file(ode-config.in ode-config @ONLY)
 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/ode.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig COMPONENT development)
 install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/ode-config DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT development)
 
+unset(DRAWSTUFF_RSRC)
+
 if(ODE_WITH_DEMOS)
 	set(
 		DRAWSTUFF_SRCS
@@ -680,11 +688,12 @@ if(ODE_WITH_DEMOS)
 	)
 	
 	if(WIN32)
+		set(DRAWSTUFF_RSRC drawstuff/src/resources.rc)
 		list(
 			APPEND DRAWSTUFF_SRCS
 			drawstuff/src/resource.h
-			drawstuff/src/resources.rc
 			drawstuff/src/windows.cpp
+			${DRAWSTUFF_RSRC}
 		)
 	elseif(APPLE)
 		list(APPEND DRAWSTUFF_SRCS drawstuff/src/osx.cpp)
@@ -717,7 +726,7 @@ if(ODE_WITH_DEMOS)
 	endif()
 	
 	set(
-		DEMO_SRCS
+		ALL_DEMO_SRCS
 		ode/demo/demo_boxstack.cpp
 		ode/demo/demo_buggy.cpp
 		ode/demo/demo_cards.cpp
@@ -755,7 +764,7 @@ if(ODE_WITH_DEMOS)
 	
 	if(NOT ODE_NO_TRIMESH)
 		list(
-			APPEND DEMO_SRCS
+			APPEND ALL_DEMO_SRCS
 			ode/demo/demo_basket.cpp
 			ode/demo/demo_cyl.cpp
 			ode/demo/demo_moving_convex.cpp
@@ -765,12 +774,31 @@ if(ODE_WITH_DEMOS)
 		)
 	endif()
 	
-	foreach(DEMO_SRC ${DEMO_SRCS})
-		get_filename_component(DEMO ${DEMO_SRC} NAME_WE)
-		add_executable(${DEMO} ${DEMO_SRC})
+	foreach(MAIN_DEMO_SRC ${ALL_DEMO_SRCS})
+		get_filename_component(DEMO ${MAIN_DEMO_SRC} NAME_WE)
+		set(
+			DEMO_SRC
+			${MAIN_DEMO_SRC}
+		)
+
+		if(NOT WIN32 OR ${DEMO} STREQUAL "demo_ode")
+			add_executable(${DEMO} ${DEMO_SRC})
+		else()
+			if(NOT BUILD_SHARED_LIBS)
+				list(
+					APPEND DEMO_SRC 
+					${DRAWSTUFF_RSRC}
+				)
+			endif()
+
+			add_executable(${DEMO} WIN32 ${DEMO_SRC})
+			if(WIN32 AND MSVC)
+				set_target_properties(${DEMO} PROPERTIES LINK_FLAGS /ENTRY:mainCRTStartup)
+			endif()
+		endif()
 		target_link_libraries(${DEMO} drawstuff)
 		
-		if(NOT WIN32 AND ${DEMO} MATCHES "demo_chain1")
+		if(NOT WIN32 AND ${DEMO} STREQUAL "demo_chain1")
 			target_link_libraries(${DEMO} m)
 		endif()
 	endforeach()
diff --git a/build/config-default.h b/build/config-default.h
index a51e309..7831235 100644
--- a/build/config-default.h
+++ b/build/config-default.h
@@ -67,7 +67,7 @@
   #define ODE_PLATFORM_PSP
 #elif defined(SN_TARGET_PS3)
   #define ODE_PLATFORM_PS3
-#elif defined(_MSC_VER) || defined(__CYGWIN32__) || defined(__MINGW32__)
+#elif defined(_MSC_VER) || defined(__CYGWIN__) || defined(__MINGW32__)
   #define ODE_PLATFORM_WINDOWS
 #elif defined(__linux__)
   #define ODE_PLATFORM_LINUX
@@ -82,7 +82,7 @@
   #define WIN32
 #endif
 
-#if defined(__CYGWIN32__) || defined(__MINGW32__)
+#if defined(__CYGWIN__) || defined(__MINGW32__)
   #define CYGWIN
 #endif
 
diff --git a/build/premake4.lua b/build/premake4.lua
index 4922688..faa9e87 100644
--- a/build/premake4.lua
+++ b/build/premake4.lua
@@ -4,7 +4,7 @@
 -- For more information on Premake: http://industriousone.com/premake
 ----------------------------------------------------------------------
 
-  ode_version = "0.16.2"
+  ode_version = "0.16.3
 
 ----------------------------------------------------------------------
 -- Demo list: add/remove demos from here and the rest of the build
diff --git a/config.h.cmake.in b/config.h.cmake.in
index d2f9599..6016f67 100644
--- a/config.h.cmake.in
+++ b/config.h.cmake.in
@@ -65,7 +65,7 @@
 #define ODE_PLATFORM_PSP
 #elif defined(SN_TARGET_PS3)
 #define ODE_PLATFORM_PS3
-#elif defined(_MSC_VER) || defined(__CYGWIN32__) || defined(__MINGW32__)
+#elif defined(_MSC_VER) || defined(__CYGWIN__) || defined(__MINGW32__)
 #define ODE_PLATFORM_WINDOWS
 #elif defined(__linux__)
 #define ODE_PLATFORM_LINUX
@@ -80,7 +80,7 @@
 #define WIN32
 #endif
 
-#if defined(__CYGWIN32__) || defined(__MINGW32__)
+#if defined(__CYGWIN__) || defined(__MINGW32__)
 #define CYGWIN
 #endif
 
diff --git a/configure b/configure
index bc3d686..c23af25 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for ODE 0.16.2.
+# Generated by GNU Autoconf 2.69 for ODE 0.16.3.
 #
 # Report bugs to <ode@ode.org>.
 #
@@ -589,8 +589,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='ODE'
 PACKAGE_TARNAME='ode'
-PACKAGE_VERSION='0.16.2'
-PACKAGE_STRING='ODE 0.16.2'
+PACKAGE_VERSION='0.16.3'
+PACKAGE_STRING='ODE 0.16.3'
 PACKAGE_BUGREPORT='ode@ode.org'
 PACKAGE_URL=''
 
@@ -1426,7 +1426,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures ODE 0.16.2 to adapt to many kinds of systems.
+\`configure' configures ODE 0.16.3 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1497,7 +1497,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of ODE 0.16.2:";;
+     short | recursive ) echo "Configuration of ODE 0.16.3:";;
    esac
   cat <<\_ACEOF
 
@@ -1662,7 +1662,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-ODE configure 0.16.2
+ODE configure 0.16.3
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2336,7 +2336,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by ODE $as_me 0.16.2, which was
+It was created by ODE $as_me 0.16.3, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2684,7 +2684,7 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
-ODE_VERSION=0.16.2
+ODE_VERSION=0.16.3
 
 
 # Those are instructions from the Libtool manual:
@@ -2707,7 +2707,7 @@ ODE_VERSION=0.16.2
 #  6. If any interfaces have been removed since the last public release,
 #     then set AGE to 0.
 CURRENT=8
-REVISION=2
+REVISION=3
 AGE=0
 
 # Check whether --enable-version-info was given.
@@ -3316,7 +3316,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='ode'
- VERSION='0.16.2'
+ VERSION='0.16.3'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -19355,7 +19355,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by ODE $as_me 0.16.2, which was
+This file was extended by ODE $as_me 0.16.3, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -19421,7 +19421,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-ODE config.status 0.16.2
+ODE config.status 0.16.3
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff --git a/configure.ac b/configure.ac
index 9a8c63f..88d5bad 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,6 +1,6 @@
 dnl AC_INIT does not take a macro as a version nr: set it separately! - Bram
-AC_INIT([ODE],[0.16.2],[ode@ode.org])
-ODE_VERSION=0.16.2
+AC_INIT([ODE],[0.16.3],[ode@ode.org])
+ODE_VERSION=0.16.3
 AC_SUBST(ODE_VERSION)
 
 # Those are instructions from the Libtool manual:
@@ -23,7 +23,7 @@ AC_SUBST(ODE_VERSION)
 #  6. If any interfaces have been removed since the last public release,
 #     then set AGE to 0.
 CURRENT=8
-REVISION=2
+REVISION=3
 AGE=0
 
 AC_ARG_ENABLE(version-info,
diff --git a/debian/changelog b/debian/changelog
index ea585cc..867a5d1 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+ode (2:0.16.3-1) UNRELEASED; urgency=low
+
+  * New upstream release.
+
+ -- Debian Janitor <janitor@jelmer.uk>  Wed, 04 Jan 2023 18:25:43 -0000
+
 ode (2:0.16.2-1) unstable; urgency=medium
 
   * New upstream version. Fix some issues by upstream.
diff --git a/include/ode/precision.h b/include/ode/precision.h
index 456fc36..af81c10 100644
--- a/include/ode/precision.h
+++ b/include/ode/precision.h
@@ -10,7 +10,7 @@
 #elif defined(dIDEDOUBLE)
 #define dDOUBLE
 #else
-#define dSINGLE
+#define dDOUBLE
 #endif
 
 #endif
diff --git a/include/ode/version.h b/include/ode/version.h
index 312a38c..8c2e489 100644
--- a/include/ode/version.h
+++ b/include/ode/version.h
@@ -1,6 +1,6 @@
 #ifndef _ODE_VERSION_H_
 #define _ODE_VERSION_H_
 
-#define dODE_VERSION "0.16.2"
+#define dODE_VERSION "0.16.3"
 
 #endif
diff --git a/ode/doc/Makefile.in b/ode/doc/Makefile.in
index c0dcddf..f031226 100644
--- a/ode/doc/Makefile.in
+++ b/ode/doc/Makefile.in
@@ -374,8 +374,8 @@ distclean-generic:
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
 	@echo "it deletes files that may require special tools to rebuild."
-@HAVE_DOXYGEN_FALSE@mostlyclean-local:
 @HAVE_DOXYGEN_FALSE@html-local:
+@HAVE_DOXYGEN_FALSE@mostlyclean-local:
 clean: clean-am
 
 clean-am: clean-generic clean-libtool mostlyclean-am
diff --git a/ode/src/lcp.cpp b/ode/src/lcp.cpp
index 58db0bd..550c9e2 100644
--- a/ode/src/lcp.cpp
+++ b/ode/src/lcp.cpp
@@ -378,10 +378,10 @@ struct dLCP {
     int *const m_findex;
     unsigned *const m_p, *const m_C;
 
-    dLCP (unsigned _n, unsigned _nskip, unsigned _nub, dReal *_Adata, dReal *_pairsbx, dReal *_w,
-        dReal *_pairslh, dReal *_L, dReal *_d,
-        dReal *_Dell, dReal *_ell, dReal *_tmp,
-        bool *_state, int *_findex, unsigned *_p, unsigned *_C, dReal **Arows);
+    dLCP (unsigned n, unsigned nskip, unsigned nub, dReal *Adata, dReal *pairsbx, dReal *w,
+        dReal *pairslh, dReal *L, dReal *d,
+        dReal *Dell, dReal *ell, dReal *tmp,
+        bool *state, int *findex, unsigned *p, unsigned *C, dReal **Arows);
     unsigned getNub() const { return m_nub; }
     void transfer_i_to_C (unsigned i);
     void transfer_i_to_N (unsigned /*i*/) { m_nN++; }			// because we can assume C and N span 1:i-1
@@ -408,43 +408,38 @@ struct dLCP {
 };
 
 
-dLCP::dLCP (unsigned _n, unsigned _nskip, unsigned _nub, dReal *_Adata, dReal *_pairsbx, dReal *_w,
-            dReal *_pairslh, dReal *_L, dReal *_d,
-            dReal *_Dell, dReal *_ell, dReal *_tmp,
-            bool *_state, int *_findex, unsigned *_p, unsigned *_C, dReal **Arows):
-    m_n(_n), m_nskip(_nskip), m_nub(_nub), m_nC(0), m_nN(0),
+dLCP::dLCP (unsigned n, unsigned nskip, unsigned nub, dReal *Adata, dReal *pairsbx, dReal *w,
+            dReal *pairslh, dReal *L, dReal *d,
+            dReal *Dell, dReal *ell, dReal *tmp,
+            bool *state, int *findex, unsigned *p, unsigned *C, dReal **Arows):
+    m_n(n), m_nskip(nskip), m_nub(nub), m_nC(0), m_nN(0),
 # ifdef ROWPTRS
     m_A(Arows),
 #else
-    m_A(_Adata),
+    m_A(Adata),
 #endif
-    m_pairsbx(_pairsbx), m_w(_w), m_pairslh(_pairslh), 
-    m_L(_L), m_d(_d), m_Dell(_Dell), m_ell(_ell), m_tmp(_tmp),
-    m_state(_state), m_findex(_findex), m_p(_p), m_C(_C)
+    m_pairsbx(pairsbx), m_w(w), m_pairslh(pairslh), 
+    m_L(L), m_d(d), m_Dell(Dell), m_ell(ell), m_tmp(tmp),
+    m_state(state), m_findex(findex), m_p(p), m_C(C)
 {
-    dxtSetZero<PBX__MAX>(m_pairsbx + PBX_X, m_n);
+    dxtSetZero<PBX__MAX>(pairsbx + PBX_X, n);
 
     {
 # ifdef ROWPTRS
         // make matrix row pointers
-        dReal *aptr = _Adata;
+        dReal *aptr = Adata;
         ATYPE A = m_A;
-        const unsigned n = m_n, nskip = m_nskip;
         for (unsigned k=0; k<n; aptr+=nskip, ++k) A[k] = aptr;
 # endif
     }
 
     {
-        unsigned *p = m_p;
-        const unsigned n = m_n;
         for (unsigned k=0; k != n; ++k) p[k] = k;		// initially unpermutted
     }
 
     /*
     // for testing, we can do some random swaps in the area i > nub
     {
-    const unsigned n = m_n;
-    const unsigned nub = m_nub;
     if (nub < n) {
     for (unsigned k=0; k<100; k++) {
     unsigned i1,i2;
@@ -468,48 +463,42 @@ dLCP::dLCP (unsigned _n, unsigned _nskip, unsigned _nub, dReal *_Adata, dReal *_
     // if lo=-inf and hi=inf - this is because these limits may change during the
     // solution process.
 
+	unsigned currNub = nub;
     {
-        int *findex = m_findex;
-        dReal *pairslh = m_pairslh;
-        const unsigned n = m_n;
-        for (unsigned k = m_nub; k < n; ++k) {
+        for (unsigned k = currNub; k < n; ++k) {
             if (findex && findex[k] >= 0) continue;
             if ((pairslh + (sizeint)k * PLH__MAX)[PLH_LO] == -dInfinity && (pairslh + (sizeint)k * PLH__MAX)[PLH_HI] == dInfinity) {
-                swapProblem (m_A, m_pairsbx, m_w, pairslh, m_p, m_state, findex, n, m_nub, k, m_nskip, 0);
-                m_nub++;
+                swapProblem (m_A, m_pairsbx, m_w, pairslh, m_p, m_state, findex, n, currNub, k, nskip, 0);
+                m_nub = ++currNub;
             }
         }
     }
 
     // if there are unbounded variables at the start, factorize A up to that
-    // point and solve for x. this puts all indexes 0..nub-1 into C.
-    if (m_nub > 0) {
-        const unsigned nub = m_nub;
+    // point and solve for x. this puts all indexes 0..currNub-1 into C.
+    if (currNub > 0) {
         {
             dReal *Lrow = m_L;
-            const unsigned nskip = m_nskip;
-            for (unsigned j = 0; j < nub; Lrow += nskip, ++j) memcpy(Lrow, AROW(j), (j + 1) * sizeof(dReal));
+            for (unsigned j = 0; j < currNub; Lrow += nskip, ++j) memcpy(Lrow, AROW(j), (j + 1) * sizeof(dReal));
         }
-        transfer_b_to_x<false> (m_pairsbx, nub);
-        factorMatrixAsLDLT<1> (m_L, m_d, nub, m_nskip);
-        solveEquationSystemWithLDLT<1, PBX__MAX> (m_L, m_d, m_pairsbx + PBX_X, nub, m_nskip);
-        dSetZero (m_w, nub);
+        transfer_b_to_x<false> (m_pairsbx, currNub);
+        factorMatrixAsLDLT<1> (m_L, m_d, currNub, nskip);
+        solveEquationSystemWithLDLT<1, PBX__MAX> (m_L, m_d, m_pairsbx + PBX_X, currNub, nskip);
+        dSetZero (m_w, currNub);
         {
             unsigned *C = m_C;
-            for (unsigned k = 0; k < nub; ++k) C[k] = k;
+            for (unsigned k = 0; k < currNub; ++k) C[k] = k;
         }
-        m_nC = nub;
+        m_nC = currNub;
     }
 
-    // permute the indexes > nub such that all findex variables are at the end
-    if (m_findex) {
-        const unsigned nub = m_nub;
-        int *findex = m_findex;
+    // permute the indexes > currNub such that all findex variables are at the end
+    if (findex) {
         unsigned num_at_end = 0;
-        for (unsigned k = m_n; k > nub; ) {
+        for (unsigned k = m_n; k > currNub; ) {
             --k;
             if (findex[k] >= 0) {
-                swapProblem (m_A, m_pairsbx, m_w, m_pairslh, m_p, m_state, findex, m_n, k, m_n - 1 - num_at_end, m_nskip, 1);
+                swapProblem (m_A, m_pairsbx, m_w, m_pairslh, m_p, m_state, findex, m_n, k, m_n - 1 - num_at_end, nskip, 1);
                 num_at_end++;
             }
         }
@@ -518,10 +507,8 @@ dLCP::dLCP (unsigned _n, unsigned _nskip, unsigned _nub, dReal *_Adata, dReal *_
     // print info about indexes
     /*
     {
-    const unsigned n = m_n;
-    const unsigned nub = m_nub;
     for (unsigned k=0; k<n; k++) {
-    if (k<nub) printf ("C");
+    if (k<currNub) printf ("C");
     else if ((m_pairslh + (sizeint)k * PLH__MAX)[PLH_LO] == -dInfinity && (m_pairslh + (sizeint)k * PLH__MAX)[PLH_HI] == dInfinity) printf ("c");
     else printf (".");
     }
diff --git a/ode/src/timer.cpp b/ode/src/timer.cpp
index 4f3434a..aae1420 100644
--- a/ode/src/timer.cpp
+++ b/ode/src/timer.cpp
@@ -42,7 +42,7 @@ TODO
 //****************************************************************************
 // implementation for windows based on the multimedia performance counter.
 
-#ifdef WIN32
+#ifdef _WIN32
 
 #include "windows.h"
 
@@ -88,7 +88,6 @@ double dTimerTicksPerSecond()
     return hz;
 }
 
-#endif
 
 //****************************************************************************
 // implementation based on the pentium time stamp counter. the timer functions
@@ -96,7 +95,7 @@ double dTimerTicksPerSecond()
 // instructions have executed and data has been written back before the cpu
 // time stamp counter is read. the CPUID instruction is used to serialize.
 
-#if defined(PENTIUM) && !defined(WIN32)
+#elif defined(PENTIUM)
 
 // we need to know the clock rate so that the timing function can report
 // accurate times. this number only needs to be set accurately if we're
@@ -169,31 +168,63 @@ double dTimerTicksPerSecond()
     return PENTIUM_HZ;
 }
 
-#endif
 
 //****************************************************************************
-// otherwise, do the implementation based on gettimeofday().
-
-#if !defined(PENTIUM) && !defined(WIN32)
+// Implementation based on OSX mach_absolute_time()
 
-#ifndef macintosh
+#elif defined(__APPLE__) && defined(__MACH__)
 
-#include <sys/time.h>
+#include <CoreServices/CoreServices.h>
+#include <mach/mach.h>
+#include <mach/mach_time.h>
 #include <unistd.h>
 
-
 static inline void getClockCount (unsigned long cc[2])
 {
-    struct timeval tv;
-    gettimeofday (&tv,0);
-    cc[0] = tv.tv_usec;
-    cc[1] = tv.tv_sec;
+    uint64_t absTime = mach_absolute_time();
+    cc[1] = (uint32_t)((absTime >> 32) & 0xFFFFFFFF);
+    cc[0] = (uint32_t)(absTime & 0xFFFFFFFF);
+}
+
+static inline void serialize()
+{
+}
+
+
+static inline double loadClockCount (unsigned long a[2])
+{
+    uint64_t absTime = (uint64_t)(a[0] | ((uint64_t)a[1] << 32));
+
+    mach_timebase_info_data_t timeInfo;
+    double resultTime = mach_timebase_info(&timeInfo) == 0 ? absTime * ((double)timeInfo.numer / timeInfo.denom) : 0.0;
+
+    return resultTime;
+}
+
+double dTimerResolution()
+{
+    mach_timebase_info_data_t timeInfo;
+    double nanoResolution = 1e-9;
+    double resultResolution = mach_timebase_info(&timeInfo) == 0 ? nanoResolution * ((double)timeInfo.numer / timeInfo.denom) : nanoResolution;
+
+    return resultResolution;
+}
+
+double dTimerTicksPerSecond()
+{
+    return 1e9;
 }
 
-#else // macintosh
+
+//****************************************************************************
+// Otherwise, do the implementation based on Macintosh Microseconds 
+// or POSIX gettimeofday().
+
+#else 
+
+#if defined(macintosh)
 
 #include <CoreServices/CoreServices.h>
-#include <ode/Timer.h>
 
 static inline void getClockCount (unsigned long cc[2])
 {
@@ -203,7 +234,21 @@ static inline void getClockCount (unsigned long cc[2])
     cc[0] = ms.lo - ( cc[1] * 1000000 );
 }
 
-#endif
+
+#else // POSIX
+
+#include <sys/time.h>
+#include <unistd.h>
+
+static inline void getClockCount (unsigned long cc[2])
+{
+    struct timeval tv;
+    gettimeofday (&tv,0);
+    cc[0] = tv.tv_usec;
+    cc[1] = tv.tv_sec;
+}
+
+#endif // POSIX
 
 
 static inline void serialize()
diff --git a/ou/include/ou/atomic.h b/ou/include/ou/atomic.h
index 2f90a70..56c6edb 100644
--- a/ou/include/ou/atomic.h
+++ b/ou/include/ou/atomic.h
@@ -574,8 +574,16 @@ static _OU_ALWAYSINLINE bool _OU_CONVENTION_API
 
 #define __OU_ATOMIC_READREORDERBARRIER_FUNCTION_DEFINED
 
+
+END_NAMESPACE_OU();
+
+
 #include <intrin.h>
 
+
+BEGIN_NAMESPACE_OU();
+
+
 static _OU_ALWAYSINLINE void _OU_CONVENTION_API 
 /*void */AtomicReadReorderBarrier()
 {

Debdiff

[The following lists of changes regard files as different if they have different names, permissions or owners.]

Files in second set of .debs but not in first

-rw-r--r--  root/root   /usr/lib/debug/.build-id/c8/3a4548c2d4300f01216e4d009c4111ee8a78e4.debug
-rw-r--r--  root/root   /usr/lib/x86_64-linux-gnu/libode.so.8.0.3
lrwxrwxrwx  root/root   /usr/lib/x86_64-linux-gnu/libode.so -> libode.so.8.0.3
lrwxrwxrwx  root/root   /usr/lib/x86_64-linux-gnu/libode.so.8 -> libode.so.8.0.3

Files in first set of .debs but not in second

-rw-r--r--  root/root   /usr/lib/debug/.build-id/28/91694f3452bf0dd2d4dc26bca5e440acb9142c.debug
-rw-r--r--  root/root   /usr/lib/x86_64-linux-gnu/libode.so.8.0.2
lrwxrwxrwx  root/root   /usr/lib/x86_64-linux-gnu/libode.so -> libode.so.8.0.2
lrwxrwxrwx  root/root   /usr/lib/x86_64-linux-gnu/libode.so.8 -> libode.so.8.0.2

No differences were encountered between the control files of package libode-dev

No differences were encountered between the control files of package libode8

Control files of package libode8-dbgsym: lines which differ (wdiff format)

  • Build-Ids: 2891694f3452bf0dd2d4dc26bca5e440acb9142c c83a4548c2d4300f01216e4d009c4111ee8a78e4

More details

Full run details