CopperSpice Overview  1.5.2
Building for Unix

This information pertains to building CopperSpice for developing applications on Unix operating systems.

Building

For a typical CopperSpice setup refer to the table below.

Description Folder Name
CS source cs
CS build cs_build
CS install cs_lib

(1)    This step only needs to be run if CopperSpice has been checked out from the Git repository or the configure.ac file or any Makefile.am files have been modified. Running this command unnecessarily will not do any harm. This command is run from a terminal window in the CopperSpice source directory (cs folder).

autoreconf -i


(2)    To configure CopperSpice using the default options, run configure in the CopperSpice build folder. This syntax will leave the CopperSpice source untouched in the cs folder and put the CopperSpice build in cs_build folder during the make process.

../cs/configure


The CopperSpice libraries can be installed to a unique folder leaving the source, build, and system library folders untouched. The value for ––prefix specifies the CopperSpice install path.

../cs/configure --prefix $HOME/cs_lib


An alternative to typing the prior command repeatedly, is to create a file like config-cs in the build folder. This file can pass the prefix and any other required options to configure. The following is a sample of a typical config-cs file.

../cs/configure CC=gcc-7.3 CXX=g++-7.3 --prefix $HOME/cs_lib


To run configure using the config-cs file, use the following command and syntax from the CopperSpice build directory (cs_build folder).

./config-cs


Note
If you want to override the CXXFLAGS you can not pass the changes to make on the command line. Instead, create a file like config-cs and pass the changes when running configure.
make CXXFLAGS='-O2' // does not do what you think


(3)    To compile the CopperSpice libraries use the following syntax from your CopperSpice build directory (cs_build folder). This step is run every time CopperSpice source code is changed.

make

From the build folder run the following command to delete all of the object and intermediate files. The next time 'make' is run every file will be compiled, since they were deleted.

make clean


(4)    To install the CopperSpice libraries and deploy to the location specified in ––prefix, use the following syntax. This step is done every time CopperSpice is deployed.

make install


Required Packages

In order to build CopperSpice on Unix several packages may need to be installed. The version number shown in the last column indicates what was tested with current release of CopperSpice. A newer version may work however we do not recommend and older version of any given package.

Debian 8 (Jessie)

Name Package Library Notes Version
FreeType libfreetype6-dev libfreetype Font rendering engine 2.5.2
Fontconfig libfontconfig-dev libfontconfig Font configuration 2.11.0
glib libglib2.0-dev libglib-2.0 Common event loop handling 2.42.1
GStreamer libgstreamer0.10-dev libgst Multimedia API 0.10.36
GStreamer Plugins libgstreamer-plugins-base0.10-dev libgstaudio-0.10 Multimedia API 0.10.36
ICE libice-dev libICE Inter-Client Exchange 1.0.9
Network Audio libaudio-dev libaudio Audio library 1.9.4
OpenGL libgl1-mesa-dev libGL 3D Graphics API 10.3.2
pthread libc6-dev libpthread Multithreading 2.19
SM libsm-dev libSM X11 Session Management 1.2.2
Xcursor libxcursor-dev libXcursor X11 Cursor Extension 1.1.14
Xext libxext-dev libXext X11 Extensions 1.3.3
Xfixes libxfixes-dev libXfixes X11 Fixes Extension 5.0.1
Xi libxi-dev libXi X11 Input Extensions 1.7.4
Xinerama libxinerama-dev libXinerama Multi-monitor support 1.1.3
Xrandr libxrandr-dev libXrandr Resize and Rotate Extension 1.4.2
Xrender libxrender-dev libXrender Rendering Extension (anti-aliasing) 0.9.8
X11 libx11-dev libX11 X11 Client-Side library 1.6.2

Debian 9 (Stretch)

Name Package Library Notes Version
FreeType libfreetype6-dev libfreetype Font rendering engine 2.6.3
Fontconfig libfontconfig-dev libfontconfig Font configuration 2.11.0
glib libglib2.0-dev libglib-2.0 Common event loop handling 2.50.3
GStreamer libgstreamer0.10-dev libgst Multimedia API * Support Pending
GStreamer Plugins libgstreamer-plugins-base0.10-dev libgstaudio-0.10 Multimedia API * Support Pending
ICE libice-dev libICE Inter-Client Exchange 1.0.9
Network Audio libaudio-dev libaudio Audio library 1.9.4
OpenGL libgl1-mesa-dev libGL 3D Graphics API 13.0.6
pthread libc6-dev libpthread Multithreading 2.24
SM libsm-dev libSM X11 Session Management 1.2.2
Xcursor libxcursor-dev libXcursor X11 Cursor Extension 1.1.14
Xext libxext-dev libXext X11 Extensions 1.3.3
Xfixes libxfixes-dev libXfixes X11 Fixes Extension 5.0.3
Xi libxi-dev libXi X11 Input Extensions 1.7.9
Xinerama libxinerama-dev libXinerama Multi-monitor support 1.1.3
Xrandr libxrandr-dev libXrandr Resize and Rotate Extension 1.5.1
Xrender libxrender-dev libXrender Rendering Extension (anti-aliasing) 0.9.10
X11 libx11-dev libX11 X11 Client-Side library 1.6.4

Fedora 27

Name Package Library Notes Version
FreeType freetype-devel libfreetype Font rendering engine 2.8
Fontconfig fontconfig-devel libfontconfig Font configuration 2.12.6
glib glib2-devel libglib-2.0 Common event loop handling 2.54.3
GStreamer gstreamer-devel libgst Multimedia API 0.10.36
GStreamer Plugins gstreamer-plugins-base-devel libgstaudio-0.10 Multimedia API 0.10.36
ICE libICE-devel libICE Inter-Client Exchange 1.0.9
Network Audio nas-devel libaudio Audio library 1.9.4
OpenGL mesa-libGL-devel libGL 3D Graphics API 17.3.6
pthread glibc-devel libpthread Multithreading 2.26
SM libSM-devel libSM X11 Session Management 1.2.2
Xcursor libXcursor-devel libXcursor X11 Cursor Extension 1.1.15
Xext libXext-devel libXext X11 Extensions 1.3.3
Xfixes libXfixes-devel libXfixes X11 Fixes Extension 5.0.3
Xi libXi-devel libXi X11 Input Extensions 1.7.9
Xinerama libXinerama-devel libXinerama Multi-monitor support 1.1.3
Xrandr libXrandr-devel libXrandr Resize and Rotate Extension 1.5.1
Xrender libXrender-devel libXrender Rendering Extension (anti-aliasing) 0.9.10
X11 libX11-devel libX11 X11 Client-Side library 1.6.5

Fedora 28

With this release the maintainers of the project removed the deprecated SUN RPC functionality. To support RPC two new libraries must be installed. The packages are called libtirpc-devel and libnsl2-devel. To support the new headers the CCXFLAGS and LDFLAGS must be passed as shown from configure.

../cs/configure CC=gcc-8.1.1 CXX=g++-8.1.1 --prefix $HOME/cs_lib CXXFLAGS=-I/usr/include/tirpc LDFLAGS=-ltirpc
Name Package Library Notes Version
FreeType freetype-devel libfreetype Font rendering engine 2.8
Fontconfig fontconfig-devel libfontconfig Font configuration 2.13.0
glib glib2-devel libglib-2.0 Common event loop handling 2.56.1
GStreamer gstreamer-devel libgst Multimedia API 0.10.36
GStreamer Plugins gstreamer-plugins-base-devel libgstaudio-0.10 Multimedia API 0.10.36
ICE libICE-devel libICE Inter-Client Exchange 1.0.9
Network Audio nas-devel libaudio Audio library 1.9.4
OpenGL mesa-libGL-devel libGL 3D Graphics API 18.0.5
pthread glibc-devel libpthread Multithreading 2.27
TI-RPC libtirpc-devel tirpc Sun RPC Protocol 1.0.3
NIS Library libnsl2-devel libnsl NIS Protocol 1.2.0
SM libSM-devel libSM X11 Session Management 1.2.2
Xcursor libXcursor-devel libXcursor X11 Cursor Extension 1.1.15
Xext libXext-devel libXext X11 Extensions 1.3.3
Xfixes libXfixes-devel libXfixes X11 Fixes Extension 5.0.3
Xi libXi-devel libXi X11 Input Extensions 1.7.9
Xinerama libXinerama-devel libXinerama Multi-monitor support 1.1.3
Xrandr libXrandr-devel libXrandr Resize and Rotate Extension 1.5.1
Xrender libXrender-devel libXrender Rendering Extension (anti-aliasing) 0.9.10
X11 libX11-devel libX11 X11 Client-Side library 1.6.5

Fedora 29

With this release the maintainers of the project removed the deprecated SUN RPC functionality. To support RPC two new libraries must be installed. The packages are called libtirpc-devel and libnsl2-devel. To support the new headers the CCXFLAGS and LDFLAGS must be passed as shown from configure.

../cs/configure CC=gcc-8.3.1 CXX=g++-8.3.1 --prefix $HOME/cs_lib CXXFLAGS=-I/usr/include/tirpc LDFLAGS=-ltirpc
Name Package Library Notes Version
FreeType freetype-devel libfreetype Font rendering engine 2.9.1
Fontconfig fontconfig-devel libfontconfig Font configuration 2.13.1
glib glib2-devel libglib-2.0 Common event loop handling 2.58.3
GStreamer gstreamer-devel libgst Multimedia API 0.10.36
GStreamer Plugins gstreamer-plugins-base-devel libgstaudio-0.10 Multimedia API 0.10.36
ICE libICE-devel libICE Inter-Client Exchange 1.0.9
Network Audio nas-devel libaudio Audio library 1.9.4
OpenGL mesa-libGL-devel libGL 3D Graphics API 18.3.5
pthread glibc-devel libpthread Multithreading 2.28
TI-RPC libtirpc-devel tirpc Sun RPC Protocol 1.1.4
NIS Library libnsl2-devel libnsl NIS Protocol 1.2.0
SM libSM-devel libSM X11 Session Management 1.2.3
Xcursor libXcursor-devel libXcursor X11 Cursor Extension 1.1.15
Xext libXext-devel libXext X11 Extensions 1.3.3
Xfixes libXfixes-devel libXfixes X11 Fixes Extension 5.0.3
Xi libXi-devel libXi X11 Input Extensions 1.7.9
Xinerama libXinerama-devel libXinerama Multi-monitor support 1.1.4
Xrandr libXrandr-devel libXrandr Resize and Rotate Extension 1.5.1
Xrender libXrender-devel libXrender Rendering Extension (anti-aliasing) 0.9.10
X11 libX11-devel libX11 X11 Client-Side library 1.6.7

FreeBSD 11.2

Name Package Library Notes Version
FreeType freetype2 libfreetype Font rendering engine 2.9
Fontconfig fontconfig libfontconfig Font configuration 2.12.6
glib glib libglib-2.0 Common event loop handling 2.50.3
GStreamer gstreamer libgst Multimedia API 0.10.36
GStreamer Plugins gstreamer-plugins libgstaudio-0.10 Multimedia API 0.10.36
ICE libICE libICE Inter-Client Exchange 1.0.9
Network Audio nas libaudio Audio library 1.9.4
OpenGL mesa-libs libGL 3D Graphics API 18.1.2
SM libSM libSM X11 Session Management 1.2.2
Xcursor libXcursor libXcursor X11 Cursor Extension 1.1.15
Xext libXext libXext X11 Extensions 1.3.3
Xfixes libXfixes libXfixes X11 Fixes Extension 5.0.3
Xi libXi libXi X11 Input Extensions 1.7.9
Xinerama libXinerama libXinerama Multi-monitor support 1.1.3
Xrandr libXrandr libXrandr Resize and Rotate Extension 1.5.1
Xrender libXrender libXrender Rendering Extension (anti-aliasing) 0.9.10
X11 libX11 libX11 X11 Client-Side library 1.6.5

Ubuntu 14.04

Name Package Library Notes Version
FreeType libfreetype6-dev libfreetype Font rendering engine 2.5.2
Fontconfig libfontconfig1-dev libfontconfig Font configuration 2.11.0
glib libglib2.0-dev libglib-2.0 Common event loop handling 2.40.2
GStreamer libgstreamer0.10-dev libgstreamer-0.10 Multimedia API 0.10.36
GStreamer Plugins libgstreamer-plugins-base0.10-dev libgstaudio-0.10 Multimedia API 0.10.36
ICE libice-dev libICE Inter-Client Exchange 1.0.8
Network Audio libaudio-dev libaudio Audio library 1.9.4
OpenGL libgl1-mesa-dev libGL 3D Graphics API 10.1.3
pthread libc6-dev libpthread Multithreading 2.19
SM libsm-dev libSM X11 Session Management 1.2.1
Xcursor libxcursor-dev libXcursor X11 Cursor Extension 1.1.14
Xext libxext-dev libXext X11 Extensions 1.3.2
Xfixes libxfixes-dev libXfixes X11 Fixes Extension 5.0.1
Xi libxi-dev libXi X11 Input Extensions 1.7.1
Xinerama libxinerama-dev libXinerama Multi-monitor support 1.1.3
Xrandr libxrandr-dev libXrandr Resize and Rotate Extension 1.4.2
Xrender libxrender-dev libXrender Rendering Extension (anti-aliasing) 0.9.8
Xt libxt6 libXt Xt Intrinsics 1.1.4
X11 libx11-dev libX11 X11 Client-Side library 1.6.2

Ubuntu 16.04

Name Package Library Notes Version
FreeType libfreetype6-dev libfreetype Font rendering engine 2.6.1
Fontconfig libfontconfig1-dev libfontconfig Font configuration 2.11.94
glib libglib2.0-dev libglib-2.0 Common event loop handling 2.48.1
GStreamer libgstreamer0.10-dev libgstreamer-0.10 Multimedia API 0.10.36
GStreamer Plugins libgstreamer-plugins-base0.10-dev libgstaudio-0.10 Multimedia API 0.10.36
ICE libice-dev libICE Inter-Client Exchange 1.0.9
Network Audio libaudio-dev libaudio Audio library 1.9.4
OpenGL libgl1-mesa-dev libGL 3D Graphics API 11.2.0
pthread libc6-dev libpthread Multithreading 2.23
SM libsm-dev libSM X11 Session Management 1.2.2
Xcursor libxcursor-dev libXcursor X11 Cursor Extension 1.1.14
Xext libxext-dev libXext X11 Extensions 1.3.3
Xfixes libxfixes-dev libXfixes X11 Fixes Extension 5.0.1
Xi libxi-dev libXi X11 Input Extensions 1.7.6
Xinerama libxinerama-dev libXinerama Multi-monitor support 1.1.3
Xrandr libxrandr-dev libXrandr Resize and Rotate Extension 1.5.0
Xrender libxrender-dev libXrender Rendering Extension (anti-aliasing) 0.9.9
Xt libxt6 libXt Xt Intrinsics 1.1.5
X11 libx11-dev libX11 X11 Client-Side library 1.6.3
Pulse Audio libpulse-dev libpulse Sound Server 8.0
ALSA libasound2-dev libasound Sound library 1.1.0

Ubuntu 18.04

Name Package Library Notes Version
FreeType libfreetype6-dev libfreetype Font rendering engine 2.8.1
Fontconfig libfontconfig1-dev libfontconfig Font configuration 2.12.6
glib libglib2.0-dev libglib-2.0 Common event loop handling 2.56.1
GStreamer libgstreamer1.0-dev libgstreamer-1.0 Multimedia API * Support Pending
GStreamer Plugins libgstreamer-plugins-base1.0-dev libgstaudio-1.0 Multimedia API * Support Pending
ICE libice-dev libICE Inter-Client Exchange 1.0.9
Network Audio libaudio-dev libaudio Audio library 1.9.4
OpenGL libgl1-mesa-dev libGL 3D Graphics API 18.0.0
pthread libc6-dev libpthread Multithreading 2.27
SM libsm-dev libSM X11 Session Management 1.2.2
Xcursor libxcursor-dev libXcursor X11 Cursor Extension 1.1.15
Xext libxext-dev libXext X11 Extensions 1.3.3
Xfixes libxfixes-dev libXfixes X11 Fixes Extension 5.0.3
Xi libxi-dev libXi X11 Input Extensions 1.7.9
Xinerama libxinerama-dev libXinerama Multi-monitor support 1.1.3
Xrandr libxrandr-dev libXrandr Resize and Rotate Extension 1.5.1
Xrender libxrender-dev libXrender Rendering Extension (anti-aliasing) 0.9.10
Xt libxt6 libXt Xt Intrinsics 1.1.5
X11 libx11-dev libX11 X11 Client-Side library 1.6.4
Pulse Audio libpulse-dev libpulse Sound Server 11.1
ALSA libasound2-dev libasound Sound library 1.1.3

OpenGL Dependencies

For additional information refer to OpenGL

Phonon Dependencies

The CsPhonon library uses the GStreamer multimedia framework as the backend for audio and video playback on Unix. The minimum required version of GStreamer is 0.10.

To build CsPhonon you will need the GStreamer library, base plugins, and development files for your system. The package names for GStreamer vary between Linux distributions. Search for gstreamer or libgstreamer in your distribution's package repository to find suitable packages.