Alternative build systems
=========================

The autotools based build system is the official build system for the
libdivecomputer project. But for convenience, a few alternative build systems
are available as well. Unfortunately, these builds systems require a few extra
steps to generate some header files.

If you have access to a UNIX build system (for example a Linux virtual machine,
MinGW, Cygwin or the Windows Subsystem for Linux), you can use the autotools
build system to generate those files:

  $ autoreconf --install --force
  $ ./configure
  $ make -C src revision.h

Alternative, you can generate those files manually. First, create the version.h
file from the version.h.in template:

  $ cp include/libdivecomputer/version.h.in include/libdivecomputer/version.h

and replace all the @DC_VERSION@ placeholders with the values defined in the
configure.ac file.

Next, generate the revision.h file:

  $ echo "#define DC_VERSION_REVISION \"$(git rev-parse --verify HEAD)\"" > src/revision.h

The alternative build systems are ready to use now.

Visual Studio
-------------

The Visual Studio project file can be opened in the IDE, or build directly from
the command-line:

  msbuild -m -p:Platform=x86|x64 -p:Configuration=Debug|Release contrib/msvc/libdivecomputer.vcxproj

Android NDK
-----------

  $ANDROID_NDK/ndk-build -C contrib/android NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=Android.mk

Linux udev rules
================

For dive computers using USB or USB HID communication, regular users typically
don't have the necessary permissions to access the device nodes. This can be
fixed with some udev rules.

Install the udev rules, and reload them:

  $ sudo cp contrib/udev/libdivecomputer.rules /etc/udev/rules.d/
  $ sudo udevadm control --reload

Note: the provided udev rules assume the user is in the plugdev group.
