Skip to main content

Build and Install

This document describes how to build XFEL from source on each platform and install it to your system.

Dependencies​

XFEL depends on the libusb-1.0 library. Install the development package for your platform before compiling.

Linux​

Install dependencies​

On Ubuntu / Debian:

sudo apt install libusb-1.0-0-dev

Build and install​

From the source root directory:

cd xfel
make
sudo make install

This produces the xfel executable. make install installs the following files:

FileDefault path
xfel executable/usr/local/bin/xfel
udev rule 99-xfel.rules/etc/udev/rules.d/99-xfel.rules
License LICENSE/usr/local/share/licenses/xfel/LICENSE

Custom install paths​

The install paths are controlled by the following variables (all overridable on the command line):

VariableDefaultDescription
PREFIX/usr/localInstall prefix for the executable and license
DESTDIR(empty)Staging directory prepended to all install paths, for packaging
UDEV_RULES_DIR/etc/udev/rules.dDirectory for the udev rule

Install to the /usr prefix and place the udev rule under /lib/udev/rules.d:

sudo make install PREFIX=/usr UDEV_RULES_DIR=/lib/udev/rules.d

Distribution packagers typically combine this with DESTDIR for a staged install:

make install PREFIX=/usr DESTDIR=$pkgdir UDEV_RULES_DIR=/lib/udev/rules.d

Udev rules (optional)​

make install already installs the udev rule by default; override its location with the UDEV_RULES_DIR variable. This section applies when you skip make install and place the rule manually.

To avoid running as root every time, copy 99-xfel.rules from the repository root to the udev rules directory:

sudo cp 99-xfel.rules /etc/udev/rules.d/
sudo udevadm control --reload

This rule sets the FEL device (1f3a:efe8) access mode to 666 so non-root users can access it.

Windows​

Windows binaries are produced via cross-compilation on Ubuntu.

Install the cross toolchain​

sudo apt install mingw-w64
sudo apt install autoconf
sudo apt install libtool-bin

Cross-compile libusb​

git clone https://github.com/libusb/libusb.git
cd libusb
./autogen.sh
./configure --host=x86_64-w64-mingw32 --prefix=/usr/x86_64-w64-mingw32/
make
sudo make install

Build XFEL​

cd xfel
CROSS=x86_64-w64-mingw32- make

For 32-bit Windows, replace CROSS with i686-w64-mingw32-.

macOS​

note

macOS ARM (Apple Silicon) support is to be added.

Install Command Line Tools​

Make sure Xcode Command Line Tools are installed:

xcode-select --install

Install libusb​

Install the dependency with Homebrew:

brew install libusb

Build​

cd xfel
make

Prebuilt binaries​

To use XFEL directly, download the prebuilt Windows binary from the Releases page.