[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[csmith-project/creduce] db867c: Initial work toward fixing CMake-based build.



  Branch: refs/heads/master
  Home:   https://github.com/csmith-project/creduce
  Commit: db867c0759b48616904a606398fcad65f1199437
      https://github.com/csmith-project/creduce/commit/db867c0759b48616904a606398fcad65f1199437
  Author: Eric Eide <eeide@cs.utah.edu>
  Date:   2016-05-22 (Sun, 22 May 2016)

  Changed paths:
    M CMakeLists.txt
    M clang_delta/CMakeLists.txt
    M clex/CMakeLists.txt
    M creduce/CMakeLists.txt

  Log Message:
  -----------
  Initial work toward fixing CMake-based build.


  Commit: 81202921c958ca7134bcd65f1debeff5a9bf3515
      https://github.com/csmith-project/creduce/commit/81202921c958ca7134bcd65f1debeff5a9bf3515
  Author: Eric Eide <eeide@cs.utah.edu>
  Date:   2016-05-22 (Sun, 22 May 2016)

  Changed paths:
    M CMakeLists.txt
    A delta/CMakeLists.txt
    A unifdef/CMakeLists.txt

  Log Message:
  -----------
  Add "delta" and "unifdef" to CMake-based build.


  Commit: 19faa44b5e2fa08d75a8cf0793dba0a21616c147
      https://github.com/csmith-project/creduce/commit/19faa44b5e2fa08d75a8cf0793dba0a21616c147
  Author: Eric Eide <eeide@cs.utah.edu>
  Date:   2016-05-22 (Sun, 22 May 2016)

  Changed paths:
    M clex/CMakeLists.txt
    M creduce/CMakeLists.txt
    M delta/CMakeLists.txt
    M unifdef/CMakeLists.txt

  Log Message:
  -----------
  Make various cleanups in CMakeList.txt files.


  Commit: 2f5849128e55cd75990125c9f5c8ec6008c32479
      https://github.com/csmith-project/creduce/commit/2f5849128e55cd75990125c9f5c8ec6008c32479
  Author: Eric Eide <eeide@cs.utah.edu>
  Date:   2016-05-22 (Sun, 22 May 2016)

  Changed paths:
    M CMakeLists.txt
    M clang_delta/CMakeLists.txt
    M clex/CMakeLists.txt
    M creduce/CMakeLists.txt

  Log Message:
  -----------
  CMakeLists.txt files are not executable.


  Commit: 866bc4af5a5f2a08781ed846db77803e9f6bd983
      https://github.com/csmith-project/creduce/commit/866bc4af5a5f2a08781ed846db77803e9f6bd983
  Author: Eric Eide <eeide@cs.utah.edu>
  Date:   2016-05-23 (Mon, 23 May 2016)

  Changed paths:
    M creduce/CMakeLists.txt

  Log Message:
  -----------
  Make more CMakelists.txt cleanups.

Check the version of Perl, as we do in `configure.ac`.

For INDENT, look for a program called `gindent`, too.

When an external program is not found, set the corresponding variable to
"no", to emulate the behavior of the `configure.ac` build path.


  Commit: 91dc4455a0e99a31d9c4f681afadbec023f52c60
      https://github.com/csmith-project/creduce/commit/91dc4455a0e99a31d9c4f681afadbec023f52c60
  Author: Eric Eide <eeide@cs.utah.edu>
  Date:   2016-05-23 (Mon, 23 May 2016)

  Changed paths:
    M creduce/CMakeLists.txt

  Log Message:
  -----------
  Check for required and optional Perl modules.


  Commit: aeaaf8170cb047840552160ef4760a7e40c998c8
      https://github.com/csmith-project/creduce/commit/aeaaf8170cb047840552160ef4760a7e40c998c8
  Author: Eric Eide <eeide@cs.utah.edu>
  Date:   2016-06-02 (Thu, 02 Jun 2016)

  Changed paths:
    M clang_delta/CMakeLists.txt

  Log Message:
  -----------
  Put all `clang_delta` source files in one list.


  Commit: 6ddab02c659cb3c79489067f0f434e8056f40180
      https://github.com/csmith-project/creduce/commit/6ddab02c659cb3c79489067f0f434e8056f40180
  Author: Eric Eide <eeide@cs.utah.edu>
  Date:   2016-06-02 (Thu, 02 Jun 2016)

  Changed paths:
    M creduce/CMakeLists.txt

  Log Message:
  -----------
  At build time, copy Perl modules into build tree.


  Commit: 282a1d13e9a5f8e72ac8a7dca4e7918135aca88e
      https://github.com/csmith-project/creduce/commit/282a1d13e9a5f8e72ac8a7dca4e7918135aca88e
  Author: Eric Eide <eeide@cs.utah.edu>
  Date:   2016-06-02 (Thu, 02 Jun 2016)

  Changed paths:
    M creduce/CMakeLists.txt

  Log Message:
  -----------
  Clean up install rules.

Don't be confused by `*.pm` files that might be lingering in the build
tree.  Install the generated configuration file from the build tree, and
all other modules from the source tree.


  Commit: 5c0332ee69a7ef87d89dc73891fe2f28689d52e4
      https://github.com/csmith-project/creduce/commit/5c0332ee69a7ef87d89dc73891fe2f28689d52e4
  Author: Eric Eide <eeide@cs.utah.edu>
  Date:   2016-06-02 (Thu, 02 Jun 2016)

  Changed paths:
    M creduce/CMakeLists.txt

  Log Message:
  -----------
  Avoid a warning from CMake 3.1+.


  Commit: 384aa74ae8c92331dbbfa142bde40c306ae5e949
      https://github.com/csmith-project/creduce/commit/384aa74ae8c92331dbbfa142bde40c306ae5e949
  Author: Eric Eide <eeide@cs.utah.edu>
  Date:   2016-06-02 (Thu, 02 Jun 2016)

  Changed paths:
    M CMakeLists.txt

  Log Message:
  -----------
  Add "-fvisibility-inlines-hidden" to `CMAKE_CXX_FLAGS`.

Use the same logic that LLVM uses for including this flag in the C++
command-line options.

Without this, I get a bunch of link-time warnings when I build C-Reduce
against the precompiled OS X binary for LLVM 3.8.0.


  Commit: a570f2004472a17670cb5817ea7c00e212dec27d
      https://github.com/csmith-project/creduce/commit/a570f2004472a17670cb5817ea7c00e212dec27d
  Author: Eric Eide <eeide@cs.utah.edu>
  Date:   2016-06-10 (Fri, 10 Jun 2016)

  Changed paths:
    A cmake/GetGitRevisionDescription.cmake
    A cmake/GetGitRevisionDescription.cmake.in

  Log Message:
  -----------
  Add CMake module for extracting git info.

These files are copied from this project on GitHub:
  https://github.com/rpavlik/cmake-modules

They are licensed under the Boost Software License, version 1.0, as
described in the files themselves.

The use of these files is described in the answer to a question at the
StackOverflow website:
  http://stackoverflow.com/questions/1435953/how-can-i-pass-git-sha1-to-compiler-as-definition-using-cmake


  Commit: b50bc99c3a48635a1557c9db401c2df0590feb14
      https://github.com/csmith-project/creduce/commit/b50bc99c3a48635a1557c9db401c2df0590feb14
  Author: Eric Eide <eeide@cs.utah.edu>
  Date:   2016-06-10 (Fri, 10 Jun 2016)

  Changed paths:
    M .gitattributes
    M CMakeLists.txt
    M creduce/CMakeLists.txt

  Log Message:
  -----------
  Use the git-version CMake module.

Use the newly added CMake module that determines the git hash of the
source repository.  Additionally, for the CMake-based build system,
(1) reproduce the logic from file `git-hash.sh' for determining the
appropriate git hash to build into C-Reduce; and (2) actually pass the
git hash to the C/C++ compilers.

This includes the ability to "burn the hash" into a release tarball.


  Commit: 81a6002e034dba5b63ef65061a820d01b30066ed
      https://github.com/csmith-project/creduce/commit/81a6002e034dba5b63ef65061a820d01b30066ed
  Author: Eric Eide <eeide@cs.utah.edu>
  Date:   2016-06-10 (Fri, 10 Jun 2016)

  Changed paths:
    M CMakeLists.txt
    M clang_delta/CMakeLists.txt
    M clex/CMakeLists.txt
    M delta/CMakeLists.txt
    M unifdef/CMakeLists.txt

  Log Message:
  -----------
  Clean up uses of `add_definitions`.


  Commit: ca2b610cc909203f98b7ea7be2aa32570fd3e46e
      https://github.com/csmith-project/creduce/commit/ca2b610cc909203f98b7ea7be2aa32570fd3e46e
  Author: Eric Eide <eeide@cs.utah.edu>
  Date:   2016-06-11 (Sat, 11 Jun 2016)

  Changed paths:
    M Makefile.am
    M Makefile.in

  Log Message:
  -----------
  Include `cmake` directory in distributions.


  Commit: a454a3f6149da3bcd56764947c4abf01fb7a07eb
      https://github.com/csmith-project/creduce/commit/a454a3f6149da3bcd56764947c4abf01fb7a07eb
  Author: Eric Eide <eeide@cs.utah.edu>
  Date:   2016-06-11 (Sat, 11 Jun 2016)

  Changed paths:
    M CMakeLists.txt
    M clang_delta/CMakeLists.txt

  Log Message:
  -----------
  Handle `ENABLE_TRANS_ASSERT` as we do in `configure`.

The preprocessor symbol `ENABLE_TRANS_ASSERT` is now unset by default,
just as with the `configure`-based build system.


  Commit: c908206760b7db225bbf6c83ad6b4a861f931b1a
      https://github.com/csmith-project/creduce/commit/c908206760b7db225bbf6c83ad6b4a861f931b1a
  Author: Eric Eide <eeide@cs.utah.edu>
  Date:   2016-06-11 (Sat, 11 Jun 2016)

  Changed paths:
    M INSTALL

  Log Message:
  -----------
  Add documentation for CMake-based build path.


  Commit: a12b363c3d2bfba3dbca221308f7511bc18b7972
      https://github.com/csmith-project/creduce/commit/a12b363c3d2bfba3dbca221308f7511bc18b7972
  Author: Eric Eide <eeide@cs.utah.edu>
  Date:   2016-06-21 (Tue, 21 Jun 2016)

  Changed paths:
    M CMakeLists.txt
    M clang_delta/CMakeLists.txt
    M clex/CMakeLists.txt
    M creduce/CMakeLists.txt
    M delta/CMakeLists.txt

  Log Message:
  -----------
  Move package tests to topmost `CMakeLists.txt`.

Move the tests for LLVM, Perl, and flex to the topmost `CMakeLists.txt`
file.  Previously, some of these checks were duplicated among the
`CMakeLists.txt` files of the various subdirectories.


  Commit: 3064d2c64b791251e4e6adf36054b73451a02c05
      https://github.com/csmith-project/creduce/commit/3064d2c64b791251e4e6adf36054b73451a02c05
  Author: Eric Eide <eeide@cs.utah.edu>
  Date:   2016-06-21 (Tue, 21 Jun 2016)

  Changed paths:
    M .gitattributes
    M CMakeLists.txt
    M INSTALL
    M Makefile.am
    M Makefile.in
    M clang_delta/CMakeLists.txt
    M clex/CMakeLists.txt
    A cmake/GetGitRevisionDescription.cmake
    A cmake/GetGitRevisionDescription.cmake.in
    M creduce/CMakeLists.txt
    A delta/CMakeLists.txt
    A unifdef/CMakeLists.txt

  Log Message:
  -----------
  Merge updates to CMake-based build system.

The CMake-based build system is now more complete, and it works a lot
more like the Automake-based build system.  I have tested these updates
to the build system on (1) Ubuntu 14.04 with CMake 2.8 and on (2) OS X
10.10.5 with CMake 3.5.2.

See the `INSTALL` file for basic instructions about using the
CMake-based build system.

Let me encourage you to compile C-Reduce in a build tree that is
separate from your source tree.  It works.

There are some aspects of the CMake-based build system that I would like
to fix in the future.  But as is, I think the current system works
pretty well and it is ready to be tested by others.

A notable nit: Currently, a git commit in your source tree will trigger
a rebuild of every C/C++ file in your build tree, because (1) we
communicate the git hash to the compiler as a command-line option
and (2) CMake detects this as a change to the configuration, which is
technically correct.


Compare: https://github.com/csmith-project/creduce/compare/5baa9b4596a4...3064d2c64b79