Skip to content
/ polly Public
forked from cynnyx/polly

🔧 Collection of CMake toolchain files and scripts for cross-platform build and CI testing (gcc, msvc, ios, android, clang analyzer, sanitizers etc.)

License

Notifications You must be signed in to change notification settings

maross/polly

This branch is 129 commits behind cynnyx/polly:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

author
Marco Rossi
Jan 19, 2017
f06eb0e · Jan 19, 2017
Jan 19, 2017
Sep 1, 2016
Oct 29, 2016
Mar 11, 2016
Dec 31, 2013
Sep 30, 2016
Apr 20, 2015
Aug 1, 2016
Nov 25, 2015
Oct 29, 2016
Aug 13, 2016
Jul 25, 2016
Oct 4, 2016
Dec 3, 2015
Nov 2, 2013
Oct 29, 2016
Mar 22, 2016
Aug 3, 2015
Apr 18, 2016
Jun 17, 2015
Aug 17, 2015
Aug 17, 2015
Jul 8, 2015
Jun 17, 2015
Aug 3, 2015
Jun 17, 2015
Jun 11, 2015
Jun 17, 2015
Jun 10, 2015
May 30, 2015
Dec 9, 2015
Dec 9, 2015
Dec 9, 2015
Aug 17, 2015
Aug 17, 2015
May 30, 2015
May 30, 2015
Apr 18, 2016
Apr 18, 2016
Apr 18, 2016
Jun 8, 2016
Jun 8, 2016
Apr 18, 2016
Apr 18, 2016
Apr 18, 2016
Apr 18, 2016
Apr 18, 2016
Apr 18, 2016
Apr 18, 2016
Apr 18, 2016
Apr 18, 2016
Apr 18, 2016
Apr 18, 2016
Apr 18, 2016
Apr 18, 2016
Apr 18, 2016
Apr 18, 2016
Apr 18, 2016
Apr 18, 2016
Jul 28, 2016
Jul 28, 2016
Jul 28, 2016
Jul 28, 2016
Jun 17, 2016
Mar 22, 2016
Aug 22, 2014
Aug 27, 2014
Jul 14, 2014
Jul 29, 2014
Sep 1, 2016
Mar 15, 2016
Aug 27, 2014
Aug 11, 2015
Jul 15, 2015
Feb 5, 2016
Nov 25, 2015
Feb 5, 2016
Mar 22, 2016
Oct 29, 2016
Oct 29, 2016
Oct 29, 2016
Oct 29, 2016
Nov 23, 2016
Nov 23, 2016
Nov 23, 2016
Nov 23, 2016
Jun 11, 2015
Jun 11, 2015
Jun 11, 2015
Jun 11, 2015
Jun 30, 2015
Jun 11, 2015
Jun 11, 2015
Jun 11, 2015
Jun 11, 2015
Jul 18, 2015
Jul 18, 2015
Jul 18, 2015
Jul 30, 2015
Jul 15, 2015
Oct 3, 2015
Oct 30, 2015
Oct 14, 2015
Oct 16, 2015
Sep 17, 2015
Nov 6, 2015
Nov 2, 2015
Nov 3, 2015
Nov 25, 2015
Nov 21, 2015
Dec 3, 2015
Dec 19, 2015
Dec 19, 2015
Sep 24, 2016
Apr 23, 2016
Dec 19, 2015
Mar 19, 2016
Mar 19, 2016
Jul 12, 2016
Mar 19, 2016
Oct 19, 2016
Oct 19, 2016
Oct 19, 2016
Oct 19, 2016
Nov 23, 2016
Nov 23, 2016
Nov 23, 2016
Nov 23, 2016
Jan 19, 2017
Jan 19, 2017
Jan 19, 2017
Jan 19, 2017
Nov 16, 2016
Nov 16, 2016
Nov 16, 2016
Oct 5, 2016
Nov 6, 2015
Nov 6, 2015
Nov 6, 2015
Jan 7, 2016
Jan 7, 2016
Jan 7, 2016
Nov 16, 2016
Nov 16, 2016
Oct 24, 2016
Jun 15, 2016
Nov 16, 2016
Sep 29, 2015
Sep 29, 2015
Sep 24, 2016
Mar 22, 2016
Jun 11, 2015
Feb 5, 2016
Jul 31, 2015
Jun 10, 2015
Mar 22, 2016
Aug 8, 2015
Jul 14, 2014
Nov 11, 2014
Apr 16, 2016
Jul 11, 2016
Jan 27, 2016
Jan 27, 2016
Jun 11, 2015
Apr 13, 2016
Jun 11, 2015
Nov 5, 2016
Sep 28, 2016
Sep 17, 2015
Oct 29, 2016
Jun 11, 2015
Jun 11, 2015
Jun 11, 2015
Jul 12, 2015
Aug 27, 2014
Aug 27, 2014
Aug 27, 2014
Aug 27, 2014
Jan 27, 2016
Aug 11, 2016
Aug 11, 2016
Jan 27, 2016
Aug 11, 2016
Aug 16, 2016
Jan 27, 2016
Jan 27, 2016
Jan 27, 2016
Aug 11, 2016
Sep 22, 2016
Sep 22, 2016
Jul 5, 2016
Jan 27, 2016
Jan 27, 2016
Jan 27, 2016
Jun 11, 2015
Sep 24, 2016
Jun 11, 2015

Repository files navigation

Polly

Collection of CMake toolchain files and scripts.

Linux/OSX Windows
Build Status Build Status

Every toolchain defines compiler/flags and two variables:

  • POLLY_TOOLCHAIN_NAME
  • POLLY_TOOLCHAIN_TAG

First variable will be printed while processing file:

-- [polly] Used toolchain: Name of toolchain A
-- The CXX compiler identification is Clang 5.0.0
-- Check for working CXX compiler: /usr/bin/c++
-- [polly] Used toolchain: Name of toolchain A
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- [polly] Used toolchain: Name of toolchain A
-- Detecting CXX compiler ABI info - done
-- [polly] Used toolchain: Name of toolchain A
-- Configuring done
-- Generating done
-- Build files have been written to: ...

Second variable coincide with toolchain file name and can be used to define CMAKE_INSTALL_PREFIX like:

set(CMAKE_INSTALL_PREFIX "${PROJECT_SOURCE_DIR}/_install/${POLLY_TOOLCHAIN_TAG}")

In this case targets can coexist simultaneously:

 - Project\ -
            - CMakeLists.txt
            - sources\
            - documentation\
            - ...
            - _install\ -
                        - toolchain-A\
                        - toolchain-B\
                        - toolchain-C\
                        - ...

Note: This is a core idea of the tagged builds in hunter package manager.

New documentation

Toolchains

Usage

Just define CMAKE_TOOLCHAIN_FILE variable:

> cmake -H. -B_builds/clang-libstdcxx -DCMAKE_TOOLCHAIN_FILE=${POLLY_ROOT}/clang-libstdcxx.cmake -DCMAKE_VERBOSE_MAKEFILE=ON
-- [polly] Used toolchain: clang / GNU Standard C++ Library (libstdc++) / c++11 support
-- The CXX compiler identification is Clang 5.0.0
-- Check for working CXX compiler: /usr/bin/c++
-- [polly] Used toolchain: clang / GNU Standard C++ Library (libstdc++) / c++11 support
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- [polly] Used toolchain: clang / GNU Standard C++ Library (libstdc++) / c++11 support
-- Detecting CXX compiler ABI info - done
-- Configuring done
-- Generating done
-- Build files have been written to: /.../_builds/make-debug

Take a look at make output, you must see -stdlib=libstdc++ string:

> cmake --build _builds/clang_libstdcxx
/usr/bin/c++ -std=c++11 -stdlib=libstdc++ -o CMakeFiles/.../main.cpp.o -c /.../main.cpp

build.py

This is a python script that wrap cmake for you and automatically set:

  • build directory for your toolchain. E.g. _builds/xcode, _builds/libcxx-Debug, _builds/nmake-Release
  • local install directory. E.g. _install/vs-12-2013-x64, _install/libcxx
  • start an IDE project (Xcode, Visual Studio) if option --open passed
  • run ctest after the build done if option --test passed
  • run cpack after the build done if option --pack passed
  • create OS X/iOS framework if option --framework passed (can be used for broken iOS framework creation on CMake)

Example of usage (also see build.py --help):

  • build Debug Xcode project:
    • build.py --toolchain xcode --config Debug (_builds/xcode)
  • build and test Release Makefile project with libcxx:
    • build.py --toolchain libcxx --config Release --test (_builds/libcxx-Release)
  • install Debug Xcode project:
    • build.py --toolchain xcode --config Debug --install (_builds/xcode, _install/xcode)

Examples

See examples. Please read coding style and agreements before start looking through examples (may explain a lot). Take a look at the Travis config files: mac and linux, it's quite self-explanatory.

Contributing

See CONTRIBUTING.md.

Links

About

🔧 Collection of CMake toolchain files and scripts for cross-platform build and CI testing (gcc, msvc, ios, android, clang analyzer, sanitizers etc.)

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • CMake 83.7%
  • Python 15.8%
  • Other 0.5%