diff --git a/README.md b/README.md index 463f5a4..d71189d 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,28 @@ [![Build Status](https://travis-ci.org/scisoft/autocmake.svg?branch=master)](https://travis-ci.org/scisoft/autocmake/builds) + # Autocmake A CMake plugin composer. + ## Projects using Autocmake - [Numgrid](https://github.com/rbast/numgrid) + ## Bootstrapping a new project -Bootstrap a Autocmake infrastructure out of "nothing": +Download the ``bootstrap.py`` and execute it to fetch other infrastructure files +which will be needed to build the project: mkdir cmake # does not have to be called "cmake" - take the name you prefer cd cmake wget https://github.com/scisoft/autocmake/raw/master/bootstrap.py - python bootstrap.py --init + python bootstrap.py --update -This downloads and creates the following files: +This creates (or updates) the following files (an existing ``autocmake.cfg`` is +not overwritten by the script): cmake/ ├── bootstrap.py # no need to edit @@ -29,10 +34,11 @@ This downloads and creates the following files: If you use version control, then now is a good moment to status/diff/add the newly created files. + ## Creating the CMake infrastructure Then edit ``autocmake.cfg`` and run the ``bootstrap.py`` script which -creates ``CMakeLists.txt`` and ``setup.py`` in the path specified (here ".."): +creates ``CMakeLists.txt`` and ``setup.py`` in the build path: python bootstrap.py .. @@ -55,6 +61,7 @@ the project: cd build make + ## Customizing the CMake modules The CMake modules can be customized directly inside ``modules/`` but this is diff --git a/bootstrap.py b/bootstrap.py index 8a716ea..5aca417 100755 --- a/bootstrap.py +++ b/bootstrap.py @@ -4,7 +4,6 @@ import os import sys import urllib import shutil -import tempfile from collections import OrderedDict from ConfigParser import ConfigParser @@ -244,22 +243,18 @@ def main(argv): Main function. """ if len(argv) != 2: - sys.stderr.write("\nYou can bootstrap a project in two steps.\n") - sys.stderr.write("First step is typically done only once.\n") - sys.stderr.write("Second step can be repeated many time without re-running the first step.\n\n") - sys.stderr.write("Step 1:\n") - sys.stderr.write("Create an example autocmake.cfg and other infrastructure files\n") - sys.stderr.write("which will be needed to configure and build the project:\n") - sys.stderr.write("$ %s --init\n\n" % argv[0]) - sys.stderr.write("Step 2:\n") - sys.stderr.write("Create CMakeLists.txt and setup.py in PROJECT_ROOT:\n") - sys.stderr.write("$ %s PROJECT_ROOT\n" % argv[0]) - sys.stderr.write("example:\n") - sys.stderr.write("$ %s ..\n" % argv[0]) + sys.stderr.write("\nYou can bootstrap a project in two steps.\n\n") + sys.stderr.write("Step 1: Update or create infrastructure files\n") + sys.stderr.write(" which will be needed to configure and build the project:\n") + sys.stderr.write(" $ %s --update\n\n" % argv[0]) + sys.stderr.write("Step 2: Create CMakeLists.txt and setup.py in PROJECT_ROOT:\n") + sys.stderr.write(" $ %s \n" % argv[0]) + sys.stderr.write(" example:\n") + sys.stderr.write(" $ %s ..\n" % argv[0]) sys.exit(-1) - if argv[1] == '--init': - # empty project, create infrastructure files + if argv[1] == '--update': + # update infrastructure files if not os.path.isfile('autocmake.cfg'): print('- fetching example autocmake.cfg') fetch_url( @@ -276,6 +271,11 @@ def main(argv): src='https://github.com/docopt/docopt/raw/master/docopt.py', dst='lib/docopt.py' ) + print('- fetching bootstrap.py') + fetch_url( + src='%s/raw/master/bootstrap.py' % AUTOCMAKE_GITHUB_URL, + dst='bootstrap.py' + ) sys.exit(0) project_root = argv[1] diff --git a/test/test.py b/test/test.py index 9f51909..31cc086 100644 --- a/test/test.py +++ b/test/test.py @@ -16,7 +16,7 @@ def exe(command): def test_cxx(): os.chdir(os.path.join(HERE, 'cxx', 'cmake')) stdout, stderr = exe('wget https://github.com/scisoft/autocmake/raw/master/bootstrap.py') - stdout, stderr = exe('python bootstrap.py --init') + stdout, stderr = exe('python bootstrap.py --update') stdout, stderr = exe('python bootstrap.py ..') os.chdir(os.path.join(HERE, 'cxx')) stdout, stderr = exe('python setup.py --cxx=g++')