1
0
mirror of https://github.com/gryf/wmaker.git synced 2025-12-19 04:20:27 +01:00
Files
wmaker/doc/build/Compilation.texi
Christophe CURIS d1c9f791d8 doc: describe the "new" options to the "configure" script
As there are many options, they have been split into 5 sections; added
documentation for all the legacy Window Maker options that were missing and
for the new ones; added documentation for a few of the "autotools" standard
options that can be considered interesting.

Signed-off-by: Christophe CURIS <christophe.curis@free.fr>
2015-04-18 23:29:37 +01:00

771 lines
25 KiB
Plaintext

\input texinfo @c -*-texinfo-*-
@c %**start of header
@setfilename wmaker_install.info
@settitle Window Maker Compilation and Installation 1.0
@c %**end of header
@c This documentation is written in Texinfo format:
@c https://www.gnu.org/software/texinfo/manual/texinfo/
@c
@c The reference checker is the GNU texi2any tool, which can be invoked like this:
@c texi2any --plaintext --no-split --verbose Compilation.texi
@c
@c If you modify this file, you may want to spell-check it with:
@c aspell --lang=en_GB --mode=texinfo check Compilation.texi
@c
@c The length of lines in this file is set to 100 because it tends to keep sentences together
@c despite the embedded @commands{};
@c
@c It is generally considered good practice for Tex and Texinfo formats to keep sentences on
@c different lines, using the fact that in the end they will be merged in paragraph anyway, because
@c it makes the patchs clearer about where the changes actually are.
@finalout
@c If the version was not given to texi2any with -D, assume we are being run
@c on the git dev branch
@ifclear version
@set version git#next
@end ifclear
@c We provide the ability to change the email address for support from the
@c command line
@ifclear emailsupport
@set emailsupport @email{wmaker-dev@@lists.windowmaker.org}
@end ifclear
@c ---------------------------------------------------------------------------------- Title Page ---
@copying
@noindent
This manual is for @sc{Window Maker} window manager, version @value{version}.
@noindent Copyright @copyright{} 2015 The Window Maker Team.
@quotation
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program, see file COPYING for details.
@end quotation
@end copying
@titlepage
@title Window Maker Compilation and Installation
@subtitle A guide to configure, compile and install
@subtitle @sc{Window Maker} from sources.
@author The Window Maker Team
@page
@vskip 0pt plus 1filll
@insertcopying
@sp 1
Published by The Window Maker team on @today{}.
@end titlepage
@c ---------------------------------------------------------------------------- Table of Content ---
@node Top
@ifnottex
@top Window Maker Compilation and Installation
@ifclear cctexi2txt
A guide to configure, compile and install
@sc{Window Maker} from sources.
@end ifclear
@end ifnottex
@contents
@ifnottex
@ifclear cctexi2txt
@sp 1
This manual is for Window Maker, version @value{version}.
@end ifclear
@end ifnottex
@menu
* Prerequisites:: What you will need to build Window Maker
* Building Window Maker:: How to build Window Maker
* Miscellaneous:: Misc. information you may want to know
* Troubleshooting:: Help on a few rare build problems
@end menu
@c ------------------------------------------------------------------------------- Prerequisites ---
@node Prerequisites
@chapter Prerequisites
@section Supported Platforms
@itemize -
@item Intel GNU/Linux Systems in general, @t{ix86} and @t{x86_64} but other architectures should work
@item BSD systems
@item Solaris, at least on release 10 and 11
@end itemize
Patches to make it work on other platforms are welcome.
@section Software Dependencies
@anchor{Software Dependencies}
The following software is required to use @sc{Window Maker}:
@itemize -
@item X11R6.x
Window Maker can be compiled in older versions of @emph{X}, like @emph{X11R5} (@emph{Solaris})
or @emph{X11R4} (@emph{OpenWindows}) but it will not work 100% correctly.
In such servers there will not be application icons and you'll have trouble using the dock.
Upgrading the client libraries (@emph{Xlib}, @emph{Xt}, etc.) will help if you can't upgrade
the server.
@end itemize
@noindent The following is required to build @sc{Window Maker}:
@itemize -
@item Basic obvious stuff
@itemize
@item @emph{gcc} (or some other ANSI C compiler, supporting some C99 extensions)
@item @emph{glibc} development files (usually @file{glibc-devel} in Linux distributions)
@item @emph{X} development files (@file{XFree86-devel} or something similar)
@end itemize
@item @emph{Xft2} and its dependencies
Dependencies include @emph{freetype2} and @emph{fontconfig}.
You will also need the development files for them (@file{xft2-devel}).
Sources are available at: @uref{http://www.freedesktop.org/wiki/Software/Xft/}
@end itemize
@noindent @b{Note}:
@sc{Window Maker} is known to compile with @emph{gcc} and @emph{clang};
the code source is mostly ANSI C (also known as C89 and C90) but is uses very few of the C99
novelties;
it also uses a few attributes introduced in the C11 standard but those are detected automatically,
so most compilers should work.
@section Special Dependencies
@anchor{Special Dependencies}
If you want to compile using the sources from the git repository instead of the distribution
package, you will also need:
@itemize
@item @emph{git}
@item @emph{autoconf} 2.69
@item @emph{automake} 1.11
@item @emph{libtool} 1.4.2
@end itemize
@section Optional Dependencies
@anchor{Optional Dependencies}
These libraries are not required to make @sc{Window Maker} work, but they are supported in case you
want to use them. Version numbers are indicative, but other versions might work too.
@itemize -
@item @emph{libXPM} 4.7 or newer
Older versions may not work!
Available from @uref{http://xlibs.freedesktop.org/release/}
There is built-in support for @emph{XPM} files, but it will not
load images in some uncommon encodings.
@item @emph{libpng} 0.96 or newer and @emph{zlib}
For @emph{PNG} image support,
@uref{http://www.libpng.org/pub/png/libpng.html}
@item @emph{libtiff} 3.4 or newer
For @emph{TIFF} image support,
@uref{http://www.libtiff.org/}
@item @emph{libjpeg} 6.0.1 or newer
For @emph{JPEG} image support,
@uref{http://www.ijg.org/}
Note that if you don't have it, @command{configure} will issue a big warning in the end,
this is because JPEG images are often used in themes and for background images
so you probably want this format supported.
@item @emph{libgif} 2.2 or @emph{libungif}
For @emph{GIF} image support,
@uref{http://giflib.sourceforge.net/}
@item @emph{WebP} 0.4.1 or newer
The reference library from @emph{Google} for their image format,
@uref{https://developers.google.com/speed/webp/download}
@item @emph{GNU xgettext}
If you want to use translated messages, you will need @emph{GNU gettext}.
Other versions of @emph{gettext} are not compatible and will not work.
Get the @emph{GNU} version from @uref{http://www.gnu.org/software/gettext/}
@item @emph{Pango} 1.36.8 or newer
This library can be used by the @emph{WINGs} toolkit to improve support for @emph{UTF-8} and for
languages written in right-to-left direction, in some widgets.
You have to explicitly ask for its support through (@pxref{Configure Options}).
You can get it from @uref{http://www.pango.org/Download}
@item @emph{libbsd}
This library can be used by the @emph{WINGs} utility library to make use of @command{strlcat} and
@command{strlcpy} instead of using built-in functions if your system does not provide them in its
core @emph{libc}.
You should let @sc{Window Maker}'s @command{configure} detect this for you.
You can get it from @uref{http://libbsd.freedesktop.org/wiki/}
@item @emph{Inotify}
If you have Linux's @emph{inotify} support, @sc{Window Maker} will use it to check for configuration
updates instead of polling regularly the file.
The needed header comes with the kernel, typical packages names include:
@itemize
@item @file{kernel-headers} for @emph{Slackware} and @emph{Fedora}
@item @file{linux-userspace-headers} for @emph{Mageia}
@item @file{linux-libc-dev} for @emph{Debian} and @emph{Ubuntu}
@item @file{linux-glibc-devel} for @emph{OpenSuSE}
@end itemize
@item @emph{MagickWand} 6.8.9-9 or newer
If found, then the library @emph{WRaster} can use the @emph{ImageMagick} library to let
@sc{Window Maker} support more image formats, like @emph{SVG}, @emph{BMP}, @emph{TGA}, ...
You can get it from @uref{http://www.imagemagick.org/}
@item @emph{Boehm GC}
This library can be used by the @emph{WINGs} utility toolkit to use a
@cite{Boehm-Demers-Weiser Garbage Collector} instead of the traditional
@command{malloc}/@command{free} functions from the @emph{libc}.
You have to explicitly ask for its support though (@pxref{Configure Options}).
You can get it from @uref{http://www.hboehm.info/gc/}
@end itemize
@c ----------------------------------------------------------------------- Building Window Maker ---
@node Building Window Maker
@chapter Building @sc{Window Maker}
@section Getting the Sources
The latest version of @sc{Window Maker} (@t{-crm}) can be downloaded from
@uref{http://www.windowmaker.org/}
Alternatively, the development branch, called @t{#next} is in the @emph{git} repository at
@uref{http://repo.or.cz/w/wmaker-crm.git}
If you want to use the @emph{git} versions, you can get it with:
@example
git clone -b next git://repo.or.cz/wmaker-crm.git
@end example
@noindent then, assuming you have the dependencies listed in @ref{Special Dependencies}, you have to
type:
@example
./autogen.sh
@end example
@noindent to generate the configuration script.
@section Build and Install
For a quick start, type the following in your shell prompt:
@example
./configure
make
@end example
@noindent then, login as @emph{root} and type:
@example
make install
ldconfig
@end example
@noindent or if you want to strip the debugging symbols from the binaries to make them smaller,
you can type instead:
@example
make install-strip
ldconfig
@end example
@noindent This will build and install @sc{Window Maker} with default parameters.
If you want to customise some compile-time options, you can do the following:
@enumerate
@item
(optional) Look at the @ref{Configure Options}, for the options available.
Also run:
@example
./configure --help
@end example
to get a complete list of options that are available.
@item
Run configure with the options you want.
For example, if you want to use the @option{--enable-modelock} option, type:
@example
./configure --enable-modelock
@end example
@item
(optional) Edit @file{src/wconfig.h} with your favourite text editor and browse through it for some
options you might want to change.
@item
Compile. Just type:
@example
make
@end example
@item
Login as root (if you can't do that, read the @ref{No Root Password, , I don't have the @emph{root} password})
and install @sc{Window Maker} in your system:
@example
su root
make install
@end example
@end enumerate
@section User specific configuration
These instructions do not need to be followed when upgrading @sc{Window Maker}
from an older version, unless stated differently in the @cite{NEWS} file.
Every user on your system that wishes to run @sc{Window Maker} must do the
following:
@enumerate
@item
Install Window Maker configuration files in your home directory.
Type:
@example
wmaker.inst
@end example
@command{wmaker.inst} will install @sc{Window Maker} configuration files and will
setup X to automatically launch @sc{Window Maker} at startup.
@end enumerate
That's it!
You can type @command{man wmaker} to get some general help for configuration
and other stuff.
Read the @cite{User Guide} for a more in-depth explanation of @sc{Window Maker}.
You might want to take a look at the @cite{FAQ} too.
@section Locales/Internationalisation
@sc{Window Maker} has national language support. The procedure to enable national
language support is described in the dedicated
@ref{Enabling Languages support,,,wmaker_i18n,@file{README.i18n}}.
@section Configure Options
@anchor{Configure Options}
These options can be passed to the configure script to enable/disable
some @sc{Window Maker} features. Example:
@example
./configure --enable-modelock --disable-gif
@end example
will configure @sc{Window Maker} with @emph{modelock} supported and disable @emph{gif} support.
Normally, you won't need any of them.
To get the list of all options, run @command{./configure --help}
@subsection Installation Directory
The default installation path will be in the @file{/usr/local} hierarchy;
a number of option can customise this:
@table @option
@item --prefix=@i{PREFIX}
@itemx --exec-prefix=@i{EPREFIX}
@itemx --bindir=@i{DIR}
@itemx --sysconfdir=@i{DIR}
@itemx --libdir=@i{DIR}
@itemx --includedir=@i{DIR}
@itemx --datarootdir=@i{DIR}
@itemx --datadir=@i{DIR}
@itemx --localedir=@i{DIR}
@itemx --mandir=@i{DIR}
Standard options from @emph{autoconf} to define target paths,
you probably want to read @ref{Installation Names,,,INSTALL,@file{INSTALL}}.
@item --sbindir=@i{DIR}
@itemx --libexecdir=@i{DIR}
@itemx --sharedstatedir=@i{DIR}
@itemx --localstatedir=@i{DIR}
@itemx --oldincludedir=@i{DIR}
@itemx --infodir=@i{DIR}
@itemx --docdir=@i{DIR}
@itemx --htmldir=@i{DIR}
@itemx --dvidir=@i{DIR}
@itemx --pdfdir=@i{DIR}
@itemx --psdir=@i{DIR}
More standard options from @emph{autoconf}, today these are not used by @sc{Window Maker};
they are provided automatically by @emph{autoconf} for consistency.
@item --with-gnustepdir=@i{PATH}
Specific to @sc{Window Maker}, defines the directory where @file{WPrefs.app} will be installed,
if you want to install it like a @emph{GNUstep} applications.
If not specified, it will be installed like usual programs.
@item --with-pixmapdir=@i{DIR}
Specific to @sc{Window Maker}, this option defines an additional path where @emph{pixmaps} will be
searched. Nothing will be installed there; the default path taken is @file{@emph{DATADIR}/pixmaps},
where @var{DATADIR} is the path defined from @option{--datadir}.
@end table
@subsection External Libraries
Unless specifically written, @command{configure} will try to detect automatically for the libraries;
if you explicitly provide @option{--enable-@emph{FEATURE}} then it will break with an error message
if the library cannot be linked;
if you specify @option{--disable-@emph{FEATURE}} then it will not try to search for the library.
You can find more information about the libraries in the
@ref{Optional Dependencies}.
@table @option
@item --enable-boehm-gc
Never enabled by default, use Boehm GC instead of the default @emph{libc} @command{malloc()}
@item --disable-gif
Disable GIF support in @emph{WRaster} library; when enabled use @file{libgif} or @file{libungif}.
@item --disable-jpeg
Disable JPEG support in @emph{WRaster} library; when enabled use @file{libjpeg}.
@item --without-libbsd
Refuse use of the @file{libbsd} compatibility library in @emph{WINGs} utility library,
even if your system provides it.
@item --disable-magick
Disable @emph{ImageMagick's MagickWand} support in @emph{WRaster}, used to support for image formats.
@item --enable-pango
Disabled by default, enable @emph{Pango} text layout support in @emph{WINGs}.
@item --disable-png
Disable PNG support in @emph{WRaster}; when enabled use @file{libpng}.
@item --disable-tiff
Disable TIFF support in @emph{WRaster}. when enabled use @file{libtiff}.
@item --disable-webp
Disable WEBP support in @emph{WRaster}. when enabled use @file{libwebp}.
@item --disable-xpm
Disable use of @file{libXpm} for XPM support in @emph{WRaster}, use internal code instead.
@end table
The following options can be used to tell @command{configure} about extra paths that needs to be
used when compiling against libraries:
@table @option
@item --with-libs-from
specify additional paths for libraries to be searched.
The @option{-L} flag must precede each path, like:
@example
--with-libs-from="-L/opt/libs -L/usr/local/lib"
@end example
@item --with-incs-from
specify additional paths for header files to be searched.
The @option{-I} flag must precede each paths, like:
@example
--with-incs-from="-I/opt/headers -I/usr/local/include"
@end example
@end table
@subsection X11 and Extensions
@command{configure} will try to detect automatically the compilation paths for X11 headers and
libraries, and which X Extensions support can be enabled.
if you explicitly provide @option{--enable-@emph{FEATURE}} then it will break with an error message
if the extension cannot be used;
if you specify @option{--disable-@emph{FEATURE}} then it will not check for the extension.
@table @option
@item --x-includes=@i{DIR}
@itemx --x-libraries=@i{DIR}
@emph{Autoconf}'s option to specify search paths for @emph{X11},
for the case were it would not have been able to detect it automatically.
@item --disable-xlocale
If you activated support for Native Languages, then @emph{X11} may use a hack to also configure its
locale support when the program configure the locale for itself.
The @command{configure} script detects if the @emph{Xlib} supports this or not;
this options explicitly disable this initialisation mechanism.
@item --enable-modelock
XKB language status lock support. If you don't know what it is you probably don't need it.
The default is to not enable it.
@item --disable-shm
Disable use of the @emph{MIT shared memory} extension.
This will slow down texture generation a little bit, but in some cases it seems to be necessary due
to a bug that manifests as messed icons and textures.
@item --disable-shape
Disables support for @emph{shaped} windows (for @command{oclock}, @command{xeyes}, etc.).
@item --enable-xinerama
The @emph{Xinerama} extension provides information about the different screens connected when
running a multi-head setting (if you plug more than one monitor).
@item --enable-randr
The @emph{RandR} extension provides feedback when changing the multiple-monitor configuration in X11
and allows to re-configure how screens are organised.
At current time, it is not enabled by default because it is NOT recommended (buggy);
@sc{Window Maker} only restart itself when the configuration change, to take into account the new
screen size.
@end table
@subsection Feature Selection
@table @option
@item --disable-motif
Disable support for Motif's MWM Window Manager hints.
@item --enable-ld-version-script
This feature is auto-detected, and you should not use this option.
When compiling a library (@file{wrlib}, ...), @emph{gcc} has the possibility to filter the list of
functions that will be visible, to keep only the public API, because it helps running programs
faster.
The @command{configure} script checks if this feature is available;
if you specify this option it will not check anymore and blindly trust you that it is supposed to
work, which is not a good idea as you may encounter problems later when compiling.
@item --enable-usermenu
This feature, disabled by default, allows to add a user-defined custom menu to applications;
when choosing an entry of the menu it will send the key combination defined by the user to that
application. @xref{Application User Menu,,,NEWS,@file{NEWS}} for more information.
@item --with-menu-textdomain=@i{DOMAIN}
Selection of the domain used for translation of the menus;
@pxref{Translations for Menus,,,wmaker_i18n,@file{README.i18n}}.
@end table
@subsection Developer Stuff
These options are disabled by default:
@table @option
@item --config-cache
If you intend to re-run the @command{configure} script often, you probably want to include this
option, so it will save and re-use the status of what have been detected in the file
@file{config.cache}.
@item --enable-debug
Enable debugging features (debug symbol, some extra verbosity and checks) and add a number of
check flags (warnings) for the compiler (in @emph{gcc} fashion).
@item --enable-lcov=@i{DIRECTORY}
Enable generation of code coverage and profiling data;
if the @file{@i{DIRECTORY}} is not specified, use @file{coverage-report}.
This option was meant to be use with @emph{gcc};
it was not used recently so it is probable that is does not work anymore;
the @command{configure} script will not even check that your compiling environment has the
appropriate requirements and works with this.
Despite all this, if you think there's a use for it and feel in the mood to help, do not hesitate to
discuss on the mailing list @value{emailsupport} to get it working.
@end table
@c ------------------------------------------------------------------------------- Miscelleanous ---
@node Miscellaneous
@chapter Miscellaneous
@section Platform Specific Notes
@itemize -
@item @emph{GNU/Linux} in general
Make sure you have @file{/usr/local/lib} in @file{/etc/ld.so.conf} and that you
run @command{ldconfig} after installing.
Uninstall any packaged version of @sc{Window Maker} before installing a new version.
@item @emph{RedHat GNU/Linux}
@emph{RedHat} systems have several annoying problems.
If you use it, be sure to follow the steps below or @sc{Window Maker} will not work:
@itemize
@item
if you installed the @sc{Window Maker} that comes with @emph{RedHat}, uninstall it before upgrading;
@item
make sure you have @file{/usr/local/bin} in your @env{PATH} environment variable;
@item
make sure you have @file{/usr/local/lib} in @file{/etc/ld.so.conf} before running @command{ldconfig};
@end itemize
@item @emph{PowerPC MkLinux}
You will need to have the latest version of @emph{Xpmac}.
Older versions seem to have bugs that cause the system to hang.
@item @emph{Debian GNU/Linux}
If you want @emph{JPEG} and @emph{TIFF} support, make sure you have @file{libtiff-dev}
and @file{libjpeg-dev} installed.
@item @emph{SuSE GNU/Linux}
If you installed the @sc{Window Maker} package from @emph{SuSE}, uninstall it before trying to
compile @emph{Window Maker} or you might have problems.
@item @emph{MetroX} (unknown version)
@emph{MetroX} has a bug that corrupts pixmaps that are set as window backgrounds.
If you use @emph{MetroX} and have weird problems with textures, do not use textures in title bars.
Or use a different X server.
@end itemize
@section I don't have the @emph{root} password :(
@anchor{No Root Password}
If you can't get superuser privileges (can't be @i{root}) you can install @emph{Window Maker} in your own
home directory.
For that, supply the @option{--prefix} option when running configure in step 2 of building
@sc{Window Maker}.
You will also need to supply the @option{--with-gnustepdir} option, to specify the path for
@command{WPrefs.app}.
Example:
@example
./configure --prefix=/home/jshmoe --with-gnustepdir=/home/jshmoe/GNUstep/Applications
@end example
Then make @file{/home/jshmoe/bin} be included in your search @env{PATH}, add @file{/home/jshmoe/lib}
to your @env{LD_LIBRARY_PATH} environment variable and run @command{bin/wmaker.inst}
Of course, @file{/home/jshmoe} is supposed to be replaced by your actual home directory path.
@section Upgrading
If you are upgrading from an older version of @sc{Window Maker}:
@enumerate
@item Configure and build @sc{Window Maker} as always
@item Install @sc{Window Maker} (but do not run @command{wmaker.inst})
@item Read the @cite{NEWS} file and update your configuration files if necessary.
@end enumerate
@c ------------------------------------------------------------------------------- Miscelleanous ---
@node Troubleshooting
@chapter Troubleshooting
When you have some trouble during configuration (while running configure), like not being able to
use a graphic format library you think you have installed, look at the @file{config.log} file for
clues of the problem.
@section Error with loading fonts, even if they exist
This is probably a problem with NLS (Native Language Support), you probably want to look at the
@ref{Troubleshooting,,,wmaker_i18n,@file{README.i18n}}
or try rebuilding without NLS support, which is done with:
@example
./configure LINGUAS=""
@end example
@section configure doesn't detect @emph{libtiff}, or other graphic libraries
Delete @file{config.cache}, then rerun configure adding the following options to @command{configure}
(among the other options you use):
@example
--with-libs-from="-L/usr/local/lib"
--with-incs-from="-I/usr/local/include -I/usr/local/include/tiff"
@end example
Put the paths where your graphic libs and their corresponding header files are located.
You can put multiple paths in any of these options, as the example of @option{--with-incs-from} shows.
Just put a space between them.
@section configure doesn't detect @emph{libXpm}
Check if you have a symbolic link from @file{libXpm.so.4.9} to @file{libXpm.so}
@section Segmentation fault on startup
@itemize
@item Check if the version of @emph{libXPM} you have is at least 4.7
@item Check if you have an updated version of @file{~/GNUstep/Defaults/WindowMaker}
@end itemize
If you're not sure, try renaming @file{~/GNUstep} to @file{~/GNUtmp}
and then run @command{wmaker.inst}
@section "...: your machine is misconfigured. gethostname() returned (none)"
the host name of your machine is set to something invalid, that starts with a parenthesis.
Do a @command{man hostname} for info about how to set it.
@section The root menu contains only 2 entries. ("XTerm" and "Exit...")
@sc{Window Maker} could not read your menu definition file.
You should check the output of @command{wmaker} for an error, it may be visible in the console or in the
@file{.xsession-errors} file.
@c ------------------------------------------------------------------------------------- The End ---
@bye