The vast majority of Synchronet C/C++ source files (including header files) are stored in in the src
and 3rdp
directories of the repository.
- src/sbbs3/git_*.h
- src/sbbs3/text.h
- src/sbbs3/text_defaults.c
The majority of Synchronet projects are cross-platform (binaries targetting multiple platforms are built from the same source files), so the generated output (e.g. object, library, executable) files are placed in sub-directories that attempt to uniquely identify the compiler and target platform. For example
*/msvc.win32.exe.debug/
*/gcc.linux.x64.lib.release/
Intermediary (e.g. object) files are stored in separate directories from generated executable and library files.
Synchronet includes "vendored" 3rd party libraries:
- cryptlib (for SSH and TLS/SSL support)
- libmozjs (for JavaScript support)
These libraries are automatically extracted (from 3rdp/dist/*
), patched, and built as part of the Synchronet build process for UNIX.
Synchronet includes some external programs (primarily, BBS door games) - the building of which is not documented here:
- xtrn/*
- src/odoors/
- src/doors/*
Ignore the CMake and CodeBlocks related build files: they're not currently used or supported.
UNIX
Building for UNIX-like operating systems (including macOS), requires:
- GNU make
- GNU C/C++ Compiler or Clang C/C++ Compiler
- libarchive library and headers
- ncurses library and headers
- pkgconf
- unzip
- patch
- Perl
- Python
- Netscape Portable Runtime Library and headers
Optionally:
- systemd library and headers
- Mosquitto (MQTT) library and headers
- Xorg library and headers
- SDL2 library and headers
- GTK+ library and headers
- GTK+ User Interface Builder (GLADE) library and headers
The install/install-sbbs.mk
file is normally used to both build and install Synchronet on UNIX-like systems in a single operation.
$ make -f path/to/install/install-sbbs.mk SYMLINK=1
If you to build without installing or want to rebuild (e.g. after pulling upstream changes), then running make
in the src/sbbs3
directory is usually sufficient:
$ make -C path/to/src/sbbs3
The src/sbbs3/GNUmakefile
is a parent Makefile that, by default, also builds projects in sub-directories of src/sbbs3
:
scfg/
uedit/
umonitor/
To build the GTK (GUI) sysop utilities, specify the gtkutils
target on the make command-line:
$ make -C path/to/src/sbbs3 gtkutils
Persistent and global build options (e.g. RELEASE=1
to specify a release instead of a debug build) may be specified in the src/build/localdefs.mk
file.
It is customary to symolically link (symlink) Synchronet libaries and executables from the Synchronet exec
directory to their respective build output directories (e.g. gcc.linux.x64.exe.release/*
). To update symlinks, include the symlinks
target on the make
command-line.
Run make help
or see GNUmakefile
(in the src/sbbs3
directory) for a complete list of supported build options and targets.
Windows
Please note that prebuilt (releases and nightly development builds) for Windows are available for Windows and usually preferred by sysops.
Although x64 versions of Windows can and usually are used to build Synchronet, we only build/support 32-bit Windows executables at this time.
Synchronet includes "vendored" 3rd party libraries pre-built for Windows:
- cryptlib (for SSH and TLS/SSL support)
- libmozjs and nspr (for JavaScript support)
- libarchive and zlib (for internal archive/zip file support)
- mosquitto (for MQTT support)
- sdl2 (for graphics and sound support in UIFC apps)
Building for Windows requires:
- Microsoft Visual Studio and Visual C++
- The
tr
GNU/UNIX utility
Optionally:
- Borland C++Builder 6 for the Win32 GUI components, e.g.
sbbsctrl.exe
- Microsoft Visual C++ v1.52 for
dosxtrn.exe
(16-bit portion of the Synchronet FOSSIL driver)
- Open
src/sbbs3/sbbs3.sln
in Microsoft Visual Studio and select Build Solution. - Alternatively, run
src/sbbs3/build.bat
in a Developer Command Prompt Windows (targetting x86 builds), generating debug (instead of release) output files, by default. - Copy the successfully built output files (
*.exe
,*.dll
) from the variousmsvc.win32.*
sub-directories to your Synchronetexec
directory.
Optionally (for Borland-built GUI components):
- Run Borland
make
in thesrc/xpdev/
directory - Run
build.bat
in thesrc/sbbs3/
sub-directories:ctrl
,chat
, anduseredit
- Copy the successfully built
*.exe
files to your Synchronetexec
directory.