deps-bullet-raub

Binaries and headers for Bullet-dependent compilation

Usage no npm install needed!

<script type="module">
  import depsBulletRaub from 'https://cdn.skypack.dev/deps-bullet-raub';
</script>

README

Bullet binaries

This is a part of Node3D project.

NPM

Build Status CodeFactor

npm i deps-bullet-raub

Synopsis

This dependency package is distributing Bullet Physics binaries through NPM for Node.js addons.

  • Platforms (x64): Windows, Linux, OSX.
  • Library: Bullet physics.
  • Linking: static lib-type.

Usage

If you don't know Bullet Physics, then probably you could learn it better before rushing into the Node.js addons with it. Anyway the official manual is a good place to start. Also there are a lot of examples.

And, the most important, take a look at the existing bullet-raub addon, that exports a very simple API for Node.js.


Example binding.gyp

As in glfw-raub Node.js addon.

{
    'variables': {
        'bin'            : '<!(node -p "require(\'addon-tools-raub\').bin")',
        'bullet_include' : '<!(node -p "require(\'deps-bullet-raub\').include")',
        'bullet_bin'     : '<!(node -p "require(\'deps-bullet-raub\').bin")',
    },
    'targets': [
        {
            'target_name' : 'bullet',
            'sources' : [
                'cpp/bindings.cpp',
                'cpp/body.cpp',
                'cpp/joint.cpp',
                'cpp/scene.cpp',
            ],
            'include_dirs' : [
                '<!@(node -p "require(\'addon-tools-raub\').include")',
                '<(bullet_include)',
            ],
            'library_dirs' : [ '<(bullet_bin)' ],
            'libraries'    : [ '-lbullet' ],
            'cflags!': ['-fno-exceptions'],
            'cflags_cc!': ['-fno-exceptions'],
            'conditions': [
                
                [
                    'OS=="linux"',
                    {
                        'libraries': [
                            "-Wl,-rpath,'$ORIGIN'",
                            "-Wl,-rpath,'$ORIGIN/../node_modules/deps-bullet-raub/<(bin)'",
                            "-Wl,-rpath,'$ORIGIN/../../deps-bullet-raub/<(bin)'",
                        ],
                        'defines': ['__linux__'],
                    }
                ],
                
                [
                    'OS=="mac"',
                    {
                        'libraries': [
                            '-Wl,-rpath,@loader_path',
                            '-Wl,-rpath,@loader_path/../node_modules/deps-bullet-raub/<(bin)',
                            '-Wl,-rpath,@loader_path/../../deps-bullet-raub/<(bin)',
                        ],
                        'defines': ['__APPLE__'],
                    }
                ],
                
                [
                    'OS=="win"',
                    {
                        'defines' : [
                            'WIN32_LEAN_AND_MEAN',
                            'VC_EXTRALEAN',
                            '_WIN32',
                        ],
                        'msvs_settings' : {
                            'VCCLCompilerTool' : {
                                'AdditionalOptions' : [
                                    '/GL', '/GF', '/EHsc', '/GS', '/Gy', '/GR-',
                                ]
                            },
                            'VCLinkerTool' : {
                                'AdditionalOptions' : ['/RELEASE','/OPT:REF','/OPT:ICF','/LTCG'],
                            },
                        },
                    },
                ],
                
            ],
        },
    ]
}

addon.cpp

#include <...>

Legal notice

This software uses the Bullet physics open source library. Bullet is legally used under the ZLIB license. It is explicitly stated that Bullet can be used commercially in closed-source projects. Bullet licensing information (a COPY) is given in a separate file, which also can be found on Bullet's official repository.

Binaries for all current platforms are built through MAKE system with Travis CI matrix. See Travis config for details. Brute-force extracted Bullet sources are inside cpp folder. As the layout of Bullet's source tree and the way it is compiled were changed, the whole new codebase is published here to both comply with ZLIB requirements and provide means for further expansion of this set of precompiled binaries to different platforms.

Only Bullet-2 part is compiled, Bullet-3 and CL are excluded, for now. No changes to the original content of any Bullet source file were made. No claims are made that any physics algorithms are changed/invented within this repository.