# Doxygen
# =======
# I'll leave .org set as the home page URL, but FYI - the www.doxygen.org
# URL currently redirects here:
# https://www.doxygen.nl/
# Below I cover installing Doxygen from source 1.9.8, source 1.9.1, and from
# a binary distribution of 1.9.8
## If you try to build 1.9.7 or 1.9.8 and get an error like this:
# doxygen-1.9.?/src/util.h:28:19: fatal error: variant: No such file or directory
# compilation terminated.
## ...you may have an old version of gcc. As this is written, Slackware
## 15.0 is the latest, and the patches version of gcc included in 14.2
## is too old to include 'variant'. Building gcc from source is no
## small undertaking, so you may then want to try installing/upgrading
## doxygen with a binary distribution. Skip down to that section below.
# Prerequisites:
# flex (< 2.4.31, see below)
# bison
# glibc's iconv or libiconv
# Perl
# Qt >= 5.14 (optional)
# A LaTeX such as TeX Live or the no longer maintained TeTeX (for LaTeX, PS, and PDF output)
# GraphViz >= 2.38
# - with support for FreeType
# Ghostscript
# Python >= 2.7 (for 'make docs')
# CMake >= 3.14
# I've had trouble building older versions with certain versions of flex,
# ones newer than the version that comes with Slackware. With Doxygen
# 1.5.1 and Slackware's flex 2.5.4a package it was fine, and after that
# it was fine with Doxygen 1.5.5 and flex 2.5.34
# Get the source tarball
cd
test -f installed/doxygen-1.9.8.src.tar.gz &&
mv installed/doxygen-1.9.8.src.tar.gz .
test ! -f doxygen-1.9.8.src.tar.gz &&
wget https://www.doxygen.nl/files/doxygen-1.9.8.src.tar.gz
# Create a directory for build files
mkdir -p build
cd build
# If you have compiled it before, clean up
test -f Makefile && make clean
test -f CMakeCache.txt && rm CMakeCache.txt
# List configuration options
cmake -L ..
# If you want Doxygen-generated documentation in English only:
# -Denglish_only=ON
# If you want Doxygen documentation, add -Dbuild_doc=YES
# If you have libiconv installed under the /usr/local prefix, want
# to use that instead of glibc's iconv, use
# -DICONV_IN_GLIBC=false
# Configure the build with CMake
cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/usr ..
# Build it
make
# Test the build
make tests
# Build the documentation (if you used -Dbuild_doc=YES above)
make docs
# Become root to install Doxygen
su
# Remove the Slackware package, if there is one
test -x /sbin/removepkg && /sbin/removepkg doxygen
# If you have an old one in /usr/local/bin, remove it
rm /usr/local/bin/doxygen
# Install it
make install
# Become yourself again
exit
# Save the source for later
cd
mkdir -p -m 0700 installed
rm -f installed/doxygen-*.src.tar.*
mv doxygen-1.9.8.src.tar.gz installed/
# Doxygen 1.9.1 - source (released 2021-01-08)
# =============
# AFAIK, 1.9.6 is the latest version that will build with a gcc that does
# not have 'variant', which includes gcc 5.5.0 from patches Slackware 14.2
#
# 1.9.1 is the latest that I was able to build at all due to other issues,
# having tried 1.9.6, 1.9.5, 1.9.4, 1.9.3, 1.9.2 and failed
#
# Unless you specifically need 1.9.1 from source, I would recommend using
# the binary release of the latest version in the section below instead
# Get the source tarball
cd
test -f installed/doxygen-1.9.1.src.tar.gz &&
mv installed/doxygen-1.9.1.src.tar.gz .
test ! -f doxygen-1.9.1.src.tar.gz &&
wget https://github.com/doxygen/doxygen/releases/download/Release_1_9_1/\
doxygen-1.9.1.src.tar.gz
# Verify tarball w/ sha256sum:
# (this came from mine, so only proves yours = mine)
echo "67aeae1be4e1565519898f46f1f7092f1973cce8a767e93101ee0111717091\
d1 doxygen-1.9.1.src.tar.gz" | sha256sum -c
# Extract the source
mkdir -p -m 0700 ~/src
cd ~/src
find -maxdepth 1 -type d -name "doxygen-*" -exec rm -r {} \;
tar xzvf ~/doxygen-1.9.1.src.tar.gz
cd doxygen-1.9.1
test $UID = 0 && chown -R root:root .
# Create a directory for build files
mkdir -p build
cd build
# If you have compiled it before, clean up
test -f Makefile && make clean
test -f CMakeCache.txt && rm CMakeCache.txt
# List configuration options
cmake -L ..
# If you want Doxygen-generated documentation in English only:
# -Denglish_only=ON
# If you want Doxygen documentation, add -Dbuild_doc=YES
# If you have libiconv installed under the /usr/local prefix, want
# to use that instead of glibc's iconv, use
# -DICONV_IN_GLIBC=false
# Configure the build with CMake
cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/usr ..
# Build it
make
# Test the build
make tests
# Build the documentation (if you used -Dbuild_doc=YES above)
# (last time I tried this it failed for me with Python 3.8)
make docs
# Become root to install Doxygen
su
# Remove the Slackware package, if there is one
test -x /sbin/removepkg && /sbin/removepkg doxygen
# If you have an old one in /usr/local/bin, remove it
rm /usr/local/bin/doxygen
# Install it (/usr/bin/doxygen)
make install
# If you did NOT do -Dbuild_doc=YES above and then 'make docs',
# manually install the existing man pages
install -m 644 ../doc/*.1 /usr/man/man1/
# Make sure your non-root user can remove the source later
chown -R $(logname) .
chmod -R u+w .
# Become yourself again
exit
# Save the source for later
cd
mkdir -p -m 0700 installed
rm -f installed/doxygen-*.src.tar.*
mv doxygen-1.9.1.src.tar.gz installed/
# doxygen 1.9.8 - binary distribution x86-64
# =============
# If you're going from a source-installed doxygen or Slackware package,
# skip down to the bottom to remove that first, then proceed here
## If you run through all of this and see errors like:
# doxygen: /lib64/libc.so.6: version `GLIBC_X.XX' not found (required by doxygen)
## ...then you need to downgrade Doxygen to an earlier version that works with
## your older glibc, or upgrade your distribution to one with a newer
## glibc...
cd
test -f installed/doxygen-1.9.8.linux.bin.tar.gz &&
mv -f installed/doxygen-1.9.8.linux.bin.tar.gz .
test ! -f doxygen-1.9.8.linux.bin.tar.gz &&
wget https://www.doxygen.nl/files/doxygen-1.9.8.linux.bin.tar.gz
# Remove the Slackware package, if there is one
test -x /sbin/removepkg && /sbin/removepkg doxygen
# If you have an old one in /usr/local/bin, remove it
rm /usr/local/bin/doxygen
# You can just run 'make install' to use the default prefix of
# /usr/local, or match Slackware's paths like so:
install -m 755 bin/doxygen /usr/bin/
install -d /usr/doc/doxygen/examples /usr/doc/doxygen/html
install -m 644 doxygen_manual-1.9.8.pdf /usr/doc/doxygen/
install -m 644 examples/* /usr/doc/doxygen/examples/
install -m 644 html/* /usr/doc/doxygen/html/
install -m 644 man/man1/*.1.gz /usr/man/man1/
# Make sure your non-root user can remove the binary distribution later
chown -R $(logname) .
chmod -R u+w .
# Become yourself again
exit
# Save the tarball for later
cd
mkdir -p -m 0700 installed
rm -f installed/doxygen-*.linux.bin.tar.*
mv doxygen-1.9.8.linux.bin.tar.gz installed/
# If you ever want to uninstall Doxygen, this should do it:
# (see 'install_manifest.txt in the source build directory)
cd
su
for pfx in /usr/local /usr;
do
rm -f ${pfx}/bin/doxygen
test -d ${pfx}/doc/doxygen && rm -r ${pfx}/doc/doxygen
find ${pfx}/doc -maxdepth 1 -type d -name "doxygen-*" -exec rm -r {} \;
( cd ${pfx}/man/man1
rm -f doxygen.1* doxyindexer.1* doxysearch.1* doxywizard.1* )
done
exit
find ~/src -maxdepth 1 -type d -name "doxygen-*" -exec rm -r {} \;
rm -f ~/installed/doxygen-*.tar.*