Blame README.Unix.txt

Packit 328d5c
README.Unix.txt - 2010-11-14 - Building FLTK on Unix
Packit 328d5c
-----------------------------------------------------
Packit 328d5c
Packit 328d5c
Packit 328d5c
Packit 328d5c
 CONTENTS
Packit 328d5c
========== 
Packit 328d5c
Packit 328d5c
  1   INTRODUCTION
Packit 328d5c
  2   PREREQUISITES
Packit 328d5c
    2.1   Ubuntu 10
Packit 328d5c
    2.2   Linux Mint 9
Packit 328d5c
    2.3   Fedora 13
Packit 328d5c
    2.4   * http://www2.mandriva.com/
Packit 328d5c
    2.5   * http://www.opensuse.org/en/
Packit 328d5c
    2.6   * http://www.debian.org/
Packit 328d5c
    2.7   * Mandrake?
Packit 328d5c
    2.8   SunOS / Solaris
Packit 328d5c
    2.9   * SGI?
Packit 328d5c
    2.10  HP-UX
Packit 328d5c
    2.11  AIX
Packit 328d5c
    2.12  NetBSD
Packit 328d5c
  3   HOW TO BUILD FLTK USING GCC
Packit 328d5c
    3.1   Prerequisites
Packit 328d5c
    3.2   Downloading and Unpacking
Packit 328d5c
    3.3   Configuring FLTK
Packit 328d5c
    3.4   Building FLTK
Packit 328d5c
    3.5   Testing FLTK
Packit 328d5c
    3.6   Installing FLTK
Packit 328d5c
    3.7   Creating new Projects
Packit 328d5c
  4   CREATING A NEW PROJECT IN CODE::BLOCKS
Packit 328d5c
  5   DOCUMENT HISTORY
Packit 328d5c
Packit 328d5c
* TODO: we still need to write these chapters
Packit 328d5c
Packit 328d5c
Packit 328d5c
Packit 328d5c
 1  INTRODUCTION
Packit 328d5c
=================
Packit 328d5c
Packit 328d5c
FLTK currently supports the following development environments on most Unix
Packit 328d5c
platforms:
Packit 328d5c
Packit 328d5c
    - gcc command line tools
Packit 328d5c
    - Code::Blocks
Packit 328d5c
    - ...
Packit 328d5c
    
Packit 328d5c
The Symbol font and the Zapf Dingbats font do not work on X11. This is correct
Packit 328d5c
behavior for UTF-8 platforms.
Packit 328d5c
Packit 328d5c
Packit 328d5c
Packit 328d5c
 2  PREREQUISITES
Packit 328d5c
==================
Packit 328d5c
Packit 328d5c
Packit 328d5c
 2.1  Ubuntu 10
Packit 328d5c
----------------
Packit 328d5c
Packit 328d5c
Ubuntu Linux can be downloaded here:
Packit 328d5c
Packit 328d5c
  http://www.ubuntu.com/
Packit 328d5c
  
Packit 328d5c
If you have not done so yet, download and install Ubuntu.
Packit 328d5c
Packit 328d5c
Open a shell and install some software:
Packit 328d5c
Packit 328d5c
  sudo apt-get install g++
Packit 328d5c
  sudo apt-get install gdb
Packit 328d5c
  sudo apt-get install subversion
Packit 328d5c
  sudo apt-get install autoconf
Packit 328d5c
  sudo apt-get install libx11-dev
Packit 328d5c
  sudo apt-get install libglu1-mesa-dev
Packit 328d5c
  
Packit 328d5c
These two are optional, but highly recommended:  
Packit 328d5c
  
Packit 328d5c
  sudo apt-get install libasound2-dev
Packit 328d5c
  sudo apt-get install libxft-dev
Packit 328d5c
Packit 328d5c
If you are planning to use the Code::Blocks IDE, also install this
Packit 328d5c
Packit 328d5c
  sudo apt-get install codeblocks
Packit 328d5c
Packit 328d5c
I like to use subversion to install the latest FLTK-1.3.release:
Packit 328d5c
Packit 328d5c
  svn co http://seriss.com/public/fltk/fltk/branches/branch-1.3/ fltk-1.3
Packit 328d5c
  
Packit 328d5c
To update to the latest version, just go into the fltk-1.3 directory and type
Packit 328d5c
Packit 328d5c
  svn update
Packit 328d5c
Packit 328d5c
Packit 328d5c
 2.2  Linux Mint 9
Packit 328d5c
-------------------
Packit 328d5c
Packit 328d5c
Linux Mint 9 can be downloaded here:
Packit 328d5c
Packit 328d5c
  http://www.linuxmint.com/
Packit 328d5c
  
Packit 328d5c
If you have not done so yet, download and install Linux Mint.
Packit 328d5c
Packit 328d5c
Open a shell and install some software:
Packit 328d5c
Packit 328d5c
  sudo apt-get install g++
Packit 328d5c
  sudo apt-get install gdb
Packit 328d5c
  sudo apt-get install subversion
Packit 328d5c
  sudo apt-get install autoconf
Packit 328d5c
  sudo apt-get install libx11-dev
Packit 328d5c
  sudo apt-get install libglu1-mesa-dev
Packit 328d5c
  
Packit 328d5c
These two are optional, but highly recommended:  
Packit 328d5c
  
Packit 328d5c
  sudo apt-get install libasound2-dev
Packit 328d5c
  sudo apt-get install libxft-dev
Packit 328d5c
Packit 328d5c
If you are planning to use the Code::Blocks IDE, also install this
Packit 328d5c
Packit 328d5c
  sudo apt-get install codeblocks
Packit 328d5c
Packit 328d5c
I like to use subversion to install the latest FLTK-1.3.release:
Packit 328d5c
Packit 328d5c
  svn co http://seriss.com/public/fltk/fltk/branches/branch-1.3/ fltk-1.3
Packit 328d5c
  
Packit 328d5c
To update to the latest version, just go into the fltk-1.3 directory and type
Packit 328d5c
Packit 328d5c
  svn update
Packit 328d5c
Packit 328d5c
FIXME: no FL_SYMBOL font (-*-symbol-*),  font 15 (Zapf-Dingbats)
Packit 328d5c
Packit 328d5c
Packit 328d5c
 2.3  Fedora 13
Packit 328d5c
-------------------
Packit 328d5c
Packit 328d5c
Fedora 13 Linux can be downloaded here:
Packit 328d5c
Packit 328d5c
  http://fedoraproject.org/
Packit 328d5c
  
Packit 328d5c
If you have not done so yet, download and install Fedora.
Packit 328d5c
Packit 328d5c
Open a terminal window and install some software. In Fedora, the default user 
Packit 328d5c
has no permission to call "sudo", so we will change user a few times:
Packit 328d5c
Packit 328d5c
  su root
Packit 328d5c
  yum groupinstall "Development Tools"
Packit 328d5c
  yum groupinstall "X Software Development"
Packit 328d5c
  yum groupinstall "C Development Tools and Libraries"
Packit 328d5c
Packit 328d5c
If you are planning to use the Code::Blocks IDE, also install this
Packit 328d5c
Packit 328d5c
  yum install codeblocks.i686  (for 64 bit machines)
Packit 328d5c
Packit 328d5c
Don't forget to leave root status (Ctrl-D) before loading FLTK. To install FLTK 
Packit 328d5c
for every user, you either have to set root user again, or use "visudo" to add 
Packit 328d5c
yourself to the "sudo" list.
Packit 328d5c
Packit 328d5c
I like to use subversion to install the latest FLTK-1.3.release:
Packit 328d5c
Packit 328d5c
  svn co http://seriss.com/public/fltk/fltk/branches/branch-1.3/ fltk-1.3
Packit 328d5c
  
Packit 328d5c
To update to the latest version, just go into the fltk-1.3 directory and type
Packit 328d5c
Packit 328d5c
  svn update
Packit 328d5c
Packit 328d5c
FIXME: no FL_SYMBOL font (-*-symbol-*),  font 15 (Zapf-Dingbats)
Packit 328d5c
Packit 328d5c
Packit 328d5c
 2.8  SunOS / Solaris
Packit 328d5c
----------------------
Packit 328d5c
Packit 328d5c
SunOS is a commercial operating system from Sun Microsystems (in 2009 the
Packit 328d5c
company was sold to Oracle). SunOS is also called Solaris since version 5.
Packit 328d5c
There was an open source derivative called OpenSolaris (based on Solaris 10)
Packit 328d5c
that was cancelled by Oracle. The successor in spirit is called OpenIndiana
Packit 328d5c
and can be downloaded from here:
Packit 328d5c
Packit 328d5c
  http://www.openindiana.org/
Packit 328d5c
Packit 328d5c
For FLTK you need at least SunOS 5.7 (aka Solaris 7). This version supports
Packit 328d5c
64 bit machines and POSIX threads. For machines with 64 bit SPARC processors
Packit 328d5c
it is highly recommended to use Sun compilers, the 64 bit code generated by
Packit 328d5c
older versions of GCC for such machines is unusable (expect something between
Packit 328d5c
horribly broken and immediate crash).
Packit 328d5c
Packit 328d5c
Consider using pkgsrc with this operating system. See the NetBSD section if
Packit 328d5c
you want to do so.
Packit 328d5c
If you have GCC and Sun compilers installed, configure your environment like
Packit 328d5c
this to use the Sun compilers and pkgsrc graphics libraries:
Packit 328d5c
Packit 328d5c
  export CC="cc"
Packit 328d5c
  export CXX="CC"
Packit 328d5c
  export CPPFLAGS="-I/usr/pkg/include"
Packit 328d5c
  export LDFLAGS="-L/usr/pkg/lib -R/usr/pkg/lib"
Packit 328d5c
Packit 328d5c
To build a 64 bit FLTK library, add the following flags:
Packit 328d5c
Packit 328d5c
  export CFLAGS="-xarch=v9"
Packit 328d5c
  export CXXFLAGS="-xarch=v9"
Packit 328d5c
Packit 328d5c
Packit 328d5c
 2.10  HP-UX
Packit 328d5c
-------------
Packit 328d5c
Packit 328d5c
HP-UX is a commercial operating system from HP, no free or open source
Packit 328d5c
derivatives are available.
Packit 328d5c
Packit 328d5c
For FLTK you need at least HP-UX 11.11 and the latest patch bundles should be
Packit 328d5c
installed.
Packit 328d5c
Packit 328d5c
Consider using pkgsrc with this operating system. See the NetBSD section if
Packit 328d5c
you want to do so.
Packit 328d5c
Packit 328d5c
Packit 328d5c
 2.11  AIX
Packit 328d5c
-----------
Packit 328d5c
Packit 328d5c
AIX is a commercial operating system from IBM, no free or open source
Packit 328d5c
derivatives are available.
Packit 328d5c
Packit 328d5c
For FLTK you need at least AIX 5L, I have tested version 5.1 patched to ML9.
Packit 328d5c
Packit 328d5c
Consider using pkgsrc with this operating system. See the NetBSD section if
Packit 328d5c
you want to do so.
Packit 328d5c
Packit 328d5c
Packit 328d5c
 2.12  NetBSD
Packit 328d5c
--------------
Packit 328d5c
Packit 328d5c
NetBSD can be downloaded here:
Packit 328d5c
Packit 328d5c
  http://www.netbsd.org/
Packit 328d5c
Packit 328d5c
If you have not done so yet, download and install NetBSD. Ensure that the
Packit 328d5c
optional distribution sets "comp" (Compiler, header files, development tools)
Packit 328d5c
and x*** (X Window System) are installed.
Packit 328d5c
Packit 328d5c
Now install and configure pkgsrc. The current version can be downloaded here:
Packit 328d5c
Packit 328d5c
  http://www.pkgsrc.org/
Packit 328d5c
Packit 328d5c
To use the current stable version of FLTK, simply install it from pkgsrc:
Packit 328d5c
Packit 328d5c
  cd /usr/pkgsrc/x11/fltk13
Packit 328d5c
  bmake install
Packit 328d5c
Packit 328d5c
For the latest development snapshot, first install the svn client from pkgsrc:
Packit 328d5c
Packit 328d5c
  cd /usr/pkgsrc/devel/subversion
Packit 328d5c
  bmake install
Packit 328d5c
Packit 328d5c
Now fetch the latest FLTK source code:
Packit 328d5c
Packit 328d5c
  svn co http://seriss.com/public/fltk/fltk/branches/branch-1.3/ fltk-1.3
Packit 328d5c
Packit 328d5c
To update to the latest version, just go into the fltk-1.3 directory and type
Packit 328d5c
Packit 328d5c
  svn update
Packit 328d5c
Packit 328d5c
If you have installed JPEG and PNG libraries from pkgsrc, configure your
Packit 328d5c
environment as follows so that the FLTK configure script can find them:
Packit 328d5c
Packit 328d5c
  export CPPFLAGS="-I/usr/pkg/include"
Packit 328d5c
  export LDFLAGS="-L/usr/pkg/lib"
Packit 328d5c
Packit 328d5c
To install GNU autoconf from pkgsrc:
Packit 328d5c
Packit 328d5c
  cd /usr/pkgsrc/devel/autoconf
Packit 328d5c
  bmake install
Packit 328d5c
Packit 328d5c
Packit 328d5c
 3  HOW TO BUILD FLTK USING GCC
Packit 328d5c
================================
Packit 328d5c
Packit 328d5c
Packit 328d5c
 3.1  Downloading and Unpacking
Packit 328d5c
--------------------------------
Packit 328d5c
Packit 328d5c
Download FLTK from here:
Packit 328d5c
Packit 328d5c
  http://www.fltk.org/software.php
Packit 328d5c
Packit 328d5c
If you are familiar with "subversion" and like to stay current with your 
Packit 328d5c
version, you will find the subversion access parameters at the bottom of that 
Packit 328d5c
page. Unpack FLTK into a convenient location. I like to have everything in my 
Packit 328d5c
dev directory:
Packit 328d5c
Packit 328d5c
  cd
Packit 328d5c
  mkdir dev
Packit 328d5c
  cd dev
Packit 328d5c
  mv ~/Downloads/fltk-1.3.xxxx.tar.gz .
Packit 328d5c
  tar xvfz fltk-1.3.xxxx.tar.gz
Packit 328d5c
  cd fltk-1.3.xxxx
Packit 328d5c
  
Packit 328d5c
Packit 328d5c
 3.2  Configuring FLTK
Packit 328d5c
-----------------------
Packit 328d5c
Packit 328d5c
If you got FLTK via subversion then you need one extra step. Otherwise skip
Packit 328d5c
over this part. Stay in your FLTK source-code directory and type the
Packit 328d5c
following:
Packit 328d5c
Packit 328d5c
  NOCONFIGURE=1 ./autogen.sh
Packit 328d5c
Packit 328d5c
Now configure your FLTK installation:
Packit 328d5c
Packit 328d5c
  ./configure
Packit 328d5c
  
Packit 328d5c
ADVANCED: type "./configure --help" to get a complete list of optional 
Packit 328d5c
configuration parameters. These should be pretty self-explanatory. Some
Packit 328d5c
more details can be found in README. 
Packit 328d5c
:END_ADVANCED
Packit 328d5c
Packit 328d5c
The configuration script will check your machine for the required resources
Packit 328d5c
which you should have installed as described in the Prerequisites chapter.
Packit 328d5c
Review the Configuration Summary, maybe take some notes.
Packit 328d5c
Packit 328d5c
Packit 328d5c
 3.3  Building FLTK
Packit 328d5c
--------------------
Packit 328d5c
Packit 328d5c
Now this is easy. Stay in your FLTK source-code directory and type: 
Packit 328d5c
Packit 328d5c
  make
Packit 328d5c
Packit 328d5c
The entire FLTK toolkit including many test programs will be built for you. No 
Packit 328d5c
warnings should appear. If some do, please let the FLTK developer team know via
Packit 328d5c
the mailing list or the bug reporting template at www.fltk.org .
Packit 328d5c
Packit 328d5c
Actually, as of Apr 13 2016, one or two warnings will show, mostly about
Packit 328d5c
deprecated declarations. Please ignore them.
Packit 328d5c
Packit 328d5c
Packit 328d5c
 3.4  Testing FLTK
Packit 328d5c
-------------------
Packit 328d5c
Packit 328d5c
After a successful build, you can test FLTK's capabilities:
Packit 328d5c
Packit 328d5c
  test/demo
Packit 328d5c
Packit 328d5c
Packit 328d5c
 3.5  Installing FLTK
Packit 328d5c
----------------------
Packit 328d5c
Packit 328d5c
If you did not change any of the configuration settings, FLTK will be installed 
Packit 328d5c
in "/usr/local/include" and "/usr/local/lib" by typing
Packit 328d5c
Packit 328d5c
  sudo make install
Packit 328d5c
  
Packit 328d5c
If you are using the KDE, GNOME or XFCE desktop environments and want to call
Packit 328d5c
"fluid" from the desktop menu, you will need to install additional files and
Packit 328d5c
icons under "/usr/share" by typing:
Packit 328d5c
Packit 328d5c
  sudo make install-desktop
Packit 328d5c
  
Packit 328d5c
It is possible to install FLTK without superuser privileges by changing the 
Packit 328d5c
installation path to a location within the user account by adding the 
Packit 328d5c
"--prefix=PREFIX" parameters to the "./configure" command.
Packit 328d5c
Packit 328d5c
Packit 328d5c
 3.6  Creating new Projects
Packit 328d5c
----------------------------
Packit 328d5c
Packit 328d5c
FLTK provides a neat script named "fltk-config" that can provide all the flags
Packit 328d5c
needed to build FLTK applications using the same flags that were used to build
Packit 328d5c
the library itself. Running "fltk-config" without arguments will print a list
Packit 328d5c
of options. The easiest call to compile an FLTK application from a single
Packit 328d5c
source file is:
Packit 328d5c
Packit 328d5c
  fltk-config --compile myProgram.cxx
Packit 328d5c
Packit 328d5c
"fltk-config" and "fluid" will be installed in "/usr/local/bin/" by default. I
Packit 328d5c
recommend that you add it to the command search path.
Packit 328d5c
Packit 328d5c
Packit 328d5c
Packit 328d5c
 4  CREATING A NEW PROJECT IN CODE::BLOCKS
Packit 328d5c
===========================================
Packit 328d5c
Packit 328d5c
Code::Blocks is a free and popular C++ IDE in the Linux world. It also runs on
Packit 328d5c
OS X and MSWindows. Configured correctly, it can also cross-compile between
Packit 328d5c
these platforms. This chapter focuses on creating a new FLTK project for Linux, 
Packit 328d5c
assuming that FLTK 1.3 was previously built and installed in its default 
Packit 328d5c
location from the command line.
Packit 328d5c
Packit 328d5c
If not done yet, install Code::Blocks as described in the Prerequisites chapter 
Packit 328d5c
above, or download it from their web site. This description is based on 
Packit 328d5c
version 10.05:
Packit 328d5c
Packit 328d5c
  http://www.codeblocks.org/
Packit 328d5c
  
Packit 328d5c
Start Code::Blocks. Select File > New > Project. In the "New from template"
Packit 328d5c
dialog box, click on "FLTK project" and follow the instructions.
Packit 328d5c
Packit 328d5c
The default project supports basic fltk. If you would like to add support for
Packit 328d5c
images, OpenGL, GLUT, or Forms, add the corresponding flags --use-images,
Packit 328d5c
--use-gl, --use-glut, and --use-forms respectively.
Packit 328d5c
Packit 328d5c
The flags are located in the "Project Build Options" dialog. To change the
Packit 328d5c
compiler flags, select your project in the tree view, then select the
Packit 328d5c
"Compiler Settings" tab, then "Other Options" and add the flags to
Packit 328d5c
`fltk-config --cxxflags` in front of the second "`".
Packit 328d5c
Packit 328d5c
The linker flags are located in the "Linker Settings" tab under "Other Linker
Packit 328d5c
Options". Add the flags to `fltk-config --ldstaticflags` in front of the 
Packit 328d5c
second "`".
Packit 328d5c
Packit 328d5c
CodeBlocks can be set up to use fluid to manage modules.
Packit 328d5c
The following info is from mingodad@gmail.com posted on fltk.general 06/17/2013:
Packit 328d5c
Packit 328d5c
"""
Packit 328d5c
    I have these settings in codeblocks on linux:
Packit 328d5c
Packit 328d5c
    Settings -> 
Packit 328d5c
      Compiler and debugging settings ->
Packit 328d5c
        Other settings -> 
Packit 328d5c
	  Advanced options:
Packit 328d5c
Packit 328d5c
    -- Add an extension (in my case "fl")
Packit 328d5c
Packit 328d5c
    -- On command line macro:
Packit 328d5c
		cd $file_dir;  fluid -c $file
Packit 328d5c
Packit 328d5c
    -- Generated files  (to be further compiled):
Packit 328d5c
		$file_dir/$file_name.cxx
Packit 328d5c
		$file_dir/$file_name.h
Packit 328d5c
Packit 328d5c
    Settings -> Environment -> Files extension handling :
Packit 328d5c
		Wildcard : *.fl
Packit 328d5c
		To open file: Launch an external program
Packit 328d5c
		External program: fluid
Packit 328d5c
Packit 328d5c
    With that I can double click on any fluid file I include on a project
Packit 328d5c
    and it opens with fluid. When I press "run" or "build" codeblocks
Packit 328d5c
    calls fluid to generate the c++ files and compiles if needed.
Packit 328d5c
"""
Packit 328d5c
Packit 328d5c
Packit 328d5c
Packit 328d5c
 5  DOCUMENT HISTORY
Packit 328d5c
=====================
Packit 328d5c
Packit 328d5c
Oct 30 2010 - matt: added Code::Blocks chapter
Packit 328d5c
Oct 28 2010 - matt: restructured entire document and verified instructions
Packit 328d5c
Nov 14 2010 - duncan: added install-desktop
Packit 328d5c
Jun 17 2013 - erco: added mingodad's CodeBlocks/Fluid recommendations