Blob Blame History Raw
CMake is a build automation system
  http://en.wikipedia.org/wiki/Cmake

We try to use it as a replacement for the established GNU build system.
This attempt is currently only experimental. If you wonder why anyone
should do this, read

  Why the KDE project switched to CMake -- and how 
  http://lwn.net/Articles/188693/
  Escape from GNU Autohell!
  http://www.shlomifish.org/open-source/anti/autohell

- How can I get GNU Awk compiled with CMake as fast as possible ?
  git clone git://git.savannah.gnu.org/gawk.git
  cd gawk
  git checkout cmake
  mkdir build
  cd build
  cmake ..
  make
  ./gawk --version
  make test
Notice that this git-checkout allows you to read the source code,
track the cmake branch and get updates. You will not be able to
commit anything.

- How can I use git to contribute source code ?
You need an account at Savannah. Read this to understand the first steps:
  http://savannah.gnu.org/maintenance/UsingGit
  README.git
Use your account there to register your public ssh key at Savannah.
Then you are ready to checkout. Remember that (when cloning) you are
setting up your own local repository and make sure you configure it
properly.
  git clone ssh://my_account_name@git.sv.gnu.org/srv/git/gawk.git
  git config --global user.name "first-name last-name"
  git config --global user.email First.Last@email.com
  git config --global color.ui auto

- What is the current status of the cmake branch ?
It has just begun, pre-alpha, unclear if it will ever be taken up
by the maintainer. We want to study if using CMake with such a
basic tool like gawk is feasible and if it easier to use than
the GNU build system.

- Where can I find a tutorial on CMake basics ?
Use the "official tutorial":
  http://www.cmake.org/cmake/help/cmake_tutorial.html

- Where is the reference of all commands and variables ?
Depending on the CMake version you use, select one of these:
  http://www.cmake.org/cmake/help/v2.8.10/cmake.html

- How can I cross-compile ?
Proceed in the same way as explained above for native compilation,
but use a different build directory. When using CMake, do this:
  cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain_mingw32.cmake ..
Write a new Toolchain file for your cross-compiler and use it.

- How can I build an installable file ?
By default, installable files will not be generated.
But if you instruct CMake about the kind of installable file you want,
then some kinds of files can be generated.
The exact kind of installable file depends on your operating system.
Possible kinds are TGZ (.tar.gz file), RPM (.rpm file), and DEB (.deb file).
   cmake -DCPACK_GENERATOR=DEB ..
   make package

- Can I build an executable that runs on any Win32 platform ?
Yes, there are two ways of doing this.
In both cases you need a MinGW compiler and the NSIS package builder
installed on the host that shall do the build.
  http://sourceforge.net/projects/mingw
  http://sourceforge.net/projects/nsis
When installed properly, the NSIS tool can even build an installer file
(a single .exe file that unpacks, registers and installs the gawk executable
and several other files).
1. way: native build on a Win32 platform 
   http://www.cmake.org/cmake/help/runningcmake.html
   After clicking "Configure" select the MinGW option with the default native compiler
   In the build directory, the command "mingw32-make" will build the gawk.exe
   The command "mingw32-make package" will build installer file
2. way: build with cross-compiler on a Linux platform like Ubuntu 12.04 LTS
   Proceed as describe above for cross-compilers.
   The command "make ; make package" will build gawk.exe and the installer file

- How can I run test cases ?
You can run all the test cases that are defined in test/Makefile.am.
These test case scripts were not changed, but the way they are invoked has
been adapted to CMake habits.
See http://cmake.org/Wiki/CMake/Testing_With_CTest#Simple_Testing
  cmake ..
  make
  make test          # run all test cases
  ctest -N           # list all test cases but don't run them
  ctest -R BASIC     # run all test cases belonging to group BASIC
  ctest -R MPFR      # run all test cases belonging to group MPFR
  ctest -E SHLIB.filefunc # run all tests, except the SHLIB.filefunc test case
Remember that running test cases is possible only after a native build.