Modified README written by D. Pinto, University of Stuttgart
Building on Linux for Windows 32/64 bit systems.
Dependencies (for RPM based systems) are stored in requirements_rpm.txt
and can be installed using # dnf install $(cat requirements_rpm.txt)
config.mak - configuration file for the build process
backend - the TimeTagger backend
doc - api documentation
core - vhdl core of the fpga
examples - programming examples
doc - latex manual
timetaggerd - the timetagger web server daemon
httpd - http library
arm-linux - linux arm build
win32 - windows 32 build
config.mak - configuration file for the win32 build process
build-depends - files needed for cross compiling
include - include files for native windows build
lib - libraries generated by vstudio
vstudio - native windows build environment
win64 - windows 64 build
config.mak - configuration file for the win32 build process
build-depends - files needed for cross compiling
include - include files for native windows build
lib - libraries generated by vstudio
setup - win 32 and win 64 installer.exe
all: - build backend, timetaggerd and documentation
clean: - cleanup sourcetree for clean build
dist-clean - tidy sourcetree for repository check-in (see Issues)
dist: - collect ditribution files
install: - install backend (linux only)
I586_LINUX set, for linux build. on the root level, this should always be set.
WITH_WIN32 set to use mingw win32 cross compile
WITH_WIN64 set to use mingw win64 cross compile
ARM_LINUX: set for cross compile for ARM. **not tested**
WITH_PYTHON set to build python bindings
WITH_DOXYGEN set to build documentation files
THREAD_PTHREADS set to use PTHREAD threading library
THREAD_BOOST set to use BOOST threading library
WITH_EMBEDDED_DOCS set to embedd htms/css/image files into the timetaggerd binary
SOURCE_ROOT location of source tree for cross compiling
A packaged file in timetagger/dist/TimeTagger.zip
. This file should (generally) be
placed under <Drive>:\\Program Files (x86)\SwabianInstruments\
.
Or optionally, a Windows executable located in timetagger/setup/TimeTagger-x.x.exe
.
To build a Windows executable:
Modify timetagger/setup/timetagger.nsi
to correct Python version (default 2.7)
Run make all
in timetagger/setup
By default Python 2 will be used. However, Python 3.5 bindings are also supported.
Uncomment WITH_PYTHON35
in the relevant config.mak
files to enable.
Compilation tends to fail after running dist-clean
. This is likely due to the
system being unable to rebuild an index for the required build. Currently the recommended
solution is to avoid using make dist-clean
entirely. Use make clean
instead.
on linux: the frontpanel libraray must be located either: - in the searchpath - in the local directory
the fpga bitfile must be located either
- in the local directory
- in ~/.timertaggerd/firmware
on windows: the frontpanel libraray must be located either: - in the searchpath - in the local directory - in \windows\system32 (setup will copy here)
the fpga bitfile must be located
- in ~/$INSTALLDIR/firmware
On windows, the vstudio redistributables (vcredist_x86.exe) must be installed. Also, the okFrontPanel Driver must be installed, too. the setup will take care for this prequesites. Just to be save, both the vcredist_x86.exe and the opal kelly driver are part of the installation.
also note: on 64bit windows, the driver must be installed manually!
The build process
Though win32 ist supported as a target, the build process is strictly linux centristic. There is no native buildscript for Windows yet.
dependencies
on the buildhost: the gnu compiler suite (gcc,g++) doxygen if you want to build the documentation mingw-w64 if you want to build for windows okFrontPanel libraries for target platforms Python 2.7 and swig if you want to build the python bindings nsis nullsoft installer if you want to build a windows installer package
sourcetree: config.mak - configuration file for the build process backend - the TimeTagger backend doc - api documentation core - vhdl core of the fpga example - programming examples doc - latex manual timetaggerd - the timetagger web server daemon httpd - http library arm-linux - linux arm build win32 - windows 32 build config.mak - configuration file for the win32 build process build-depends - files needed for cross compiling include - include files for native windows build lib - libraries generated by vstudio vstudio - native windows build environment win64 - windows 64 build config.mak - configuration file for the win32 build process build-depends - files needed for cross compiling include - include files for native windows build lib - libraries generated by vstudio setup - win 32 and win 64 installer.exe
make targets:
all: - build backend, timetaggerd and documentation clean: - cleanup sourcetree for clean build dist-clean - tidy sourcetree for repository checkin dist: - collect ditribution files install: - install backend (linux only)
On linux 'make dist-clean all' will build the complete dist tree. Edit config.mak to configure as needed:
I586_LINUX set, for linux build. on the root level, this sould always be set. WITH_WIN32 set to use mingw win32 cross compile WITH_WIN64 set to use mingw win64 cross compile ARM_LINUX: set for cross compile for ARM. not tested
WITH_PYTHON set to build python bindings WITH_DOXYGEN set to build documentation files
THREAD_PTHREADS set to use BOOST threading library THREAD_BOOST set to use BOOST threading library
WITH_EMBEDDED_DOCS set to embedd htms/css/image files into the timetaggerd binary
SOURCE_ROOT location of source tree for cross compiling
cross compiling
The sourcetree and makefiles are ready for cross compiling. Cross compiling must be done in a seperate directory tree below the repository root. Each crossbuild has its own config.mak and one main makefile. During build, package makefiles are linked into the cross tree. Refer to the arm-linux directory for reference.
building for windows
windows build two steps:
the first step, building the python binding and the timetagger daemon, is done under linux. if you set 'WITH_WIN32' in the root config.mak, just 'make all' will do the work for you. Otherwise do 'cd WIN32; make'.
This will build the timetagger daemon and the python bindings. As a result all files needed for the next buildstep are collected to WIN32/dist.
go to folder setup run "makensis timetagger.nsi" copy resulting setup file TimeTagger-0.9.exe to windows machine and install