## Build system

You must have a working build system before you even can think about hacking the source code. Make sure you can build a git clone.
Try building the sources from git before you try anything else.
The wiki page http://wiki.geda-project.org/geda:developer shows the git command to get the geda-gaf repository. We are talking about pcb here.
For pcb we need to do:

    git clone git://git.geda-project.org/pcb.git

For the other repositories take a look at http://git.geda-project.org/

Next get your build system working. http://wiki.geda-project.org/geda:gaf_building_git_version

While working on the pcb sources remember that PCB uses The AutoTools as there build system.
This isn't as daunting as it sounds, for the newbie developer.
The PCB development team has made it easy for us.

Generally just run:

    ./autogen.sh

and the scary part is over

Then do the usual:

    ./configure
    make

The autogen.sh script is usually only needed once, after a git clone or if a file is added to be build into PCB. See Example on when to use the autogen.sh script.

For more information on the AutoTools take a look at: https://www.gnu.org/software/automake/manual/html_node/Autotools-Introduction.html

If you want to know more about git take a look at: https://git-scm.com/docs/gittutorial

## Dependencies

PCB is a open source program and it uses open source libraries and tools to do what it does. Doing a `repoquery –requires pcb` on my Fedora 20 system show the following dependencies:

perl | libdl.so.2() | libm.so.6(GLIBC_2.2.5)
wish | libdl.so.2(GLIBC_2.2.5) | libpango-1.0.so.0()
libGL.so.1() | libfontconfig.so.1() | libpangocairo-1.0.so.0()
libGLU.so.1() | libfreetype.so.6() | libpangoft2-1.0.so.0()
libICE.so.6() | libgd.so.3() | libpangox-1.0.so.0()
libSM.so.6() | libgdk-x11-2.0.so.0() | libpng16.so.16()
libX11.so.6() | libgdk_pixbuf-2.0.so.0() | libpthread.so.0()
libXinerama.so.1() | libgdkglext-x11-1.0.so.0() | libpthread.so.0(GLIBC_2.2.5)
libXmu.so.6() | libgio-2.0.so.0() | libtiff.so.5()
libXpm.so.4() | libglib-2.0.so.0() | libvpx.so.1()
libXrender.so.1() | libgmodule-2.0.so.0() | libz.so.1()
libXt.so.6() | libgobject-2.0.so.0() | m4
libatk-1.0.so.0() | libgtk-x11-2.0.so.0() | perl(File::Basename)
libc.so.6(GLIBC_2.14) | libgtkglext-x11-1.0.so.0() | perl(File::Copy)
libcairo.so.2() | libjpeg.so.62() | rtld(GNU_HASH)
libdbus-1.so.3() | libm.so.6() |