diff --git a/.travis.yml b/.travis.yml index 4efa9b0..04df287 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,28 +4,63 @@ notifications: email: recipients: - grafikrobot@gmail.com - on_success: change - on_failure: change irc: channels: - "chat.freenode.net#boost" template: - "%{repository}/%{branch} (%{commit} - %{author}): %{build_url}: %{message}" - on_success: change - on_failure: change -os: - - linux +sudo: required + +env: + matrix: + - TRAVIS_EMPTY_JOB_WORKAROUND=true matrix: + exclude: + - env: TRAVIS_EMPTY_JOB_WORKAROUND=true include: - env: TOOLSET=clang-3.4 + os: linux + dist: precise - env: TOOLSET=clang-3.5 + os: linux + dist: precise - env: TOOLSET=clang-3.6 + os: linux + dist: precise - env: TOOLSET=gcc-4.7 + os: linux + dist: precise - env: TOOLSET=gcc-4.8 + os: linux + dist: precise - env: TOOLSET=gcc-4.9 + os: linux + dist: precise - env: TOOLSET=gcc-5.1 + os: linux + dist: precise + - env: TOOLSET=xcode-6.1 + os: osx + - env: TOOLSET=xcode-6.2 + os: osx + osx_image: beta-xcode6.2 + - env: TOOLSET=xcode-6.3 + os: osx + osx_image: beta-xcode6.3 + - env: TOOLSET=xcode-6.4 + os: osx + osx_image: xcode6.4 + - env: TOOLSET=xcode-7.0 + os: osx + osx_image: xcode7 + - env: TOOLSET=xcode-7.1 + os: osx + osx_image: xcode7.1 + - env: TOOLSET=xcode-7.2 + os: osx + osx_image: xcode7.2 before_install: wget "https://raw.githubusercontent.com/boostorg/regression/develop/ci/src/script.py" install: python script.py install diff --git a/check/predef.jam b/check/predef.jam index 6fec1f0..7042dc1 100644 --- a/check/predef.jam +++ b/check/predef.jam @@ -1,202 +1,17 @@ -# Copyright Rene Rivera 2015 +# Copyright Rene Rivera 2016 # Distributed under the Boost Software License, Version 1.0. # (See accompanying file LICENSE_1_0.txt or copy at # http://www.boost.org/LICENSE_1_0.txt) -# Defines rules that provide requirements based on checking -# conditions using Boost Predef definitions and version numbers. - +# Hack, to reload check/predef.jam at its new location. import modules ; -import project ; -import feature ; -import string ; -import toolset ; -import modules ; -import path ; -import "class" : new ; -import regex ; - -# Create a project for our targets. -project.extension predef check ; - -# Feature to pass check expressions to check programs. -feature.feature predef-expression : : free ; - -# Checks the expressions and when used evaluates to the true-properties -# if the expressions are all true. Otherwise evaluates to the -# false-properties. -rule check ( expressions + : language ? : true-properties * : false-properties * ) +local _loaded_ ; +for local _module_ in [ modules.peek modules : .loaded ] { - # Default to C++ on the check context. - language ?= cpp ; - - local project_target = [ project.target $(__name__) ] ; - project.push-current $(project_target) ; - local terms ; - local result ; - for expression in $(expressions) + if $(_module_) != "predef" { - if $(expression:L) in "and" "or" - { - terms += $(expression:L) ; - } - else - { - # Create the check run if we don't have one yet. - local key = [ MD5 $(language)::$(expression) ] ; - if ! ( $(key) in $(_checks_) ) - { - _checks_ += $(key) ; - _message_(/check/predef//predef_check_cc_$(key)) = $(expression) ; - check_target $(language) $(key) : [ change_term_to_def $(expression) ] ; - } - - terms += /check/predef//predef_check_cc_$(key) ; - } - } - local instance = [ new check-expression-evaluator - $(terms) : $(true-properties) : $(false-properties) ] ; - result = @$(instance).check ; - project.pop-current ; - return $(result) ; -} - -# Checks the expressions and when used evaluates to no -# if the expressions are all false. Otherwise evaluates to the -# nothing. -rule require ( expressions + : language ? ) -{ - return [ check $(expressions) : $(language) : : no ] ; -} - -############################################################################# - -.c.ext = c ; -.cpp.ext = cpp ; -.objc.ext = m ; -.objcpp.ext = mm ; - -# Check targets. Each needs to be compiled for different languages -# even though they are all the same source code. -local rule check_target ( language key : requirements * ) -{ - # Need to use absolute paths because we don't know the - # context of the invocation which affects where the paths - # originate from. - local predef_jam - = [ modules.binding $(__name__) ] ; - local source_path - = $(predef_jam:D)/predef_check_cc_as_$(language).$(.$(language).ext) ; - local include_path - = $(predef_jam:D)/../include ; - obj predef_check_cc_$(key) - : $(source_path) - : $(include_path) $(requirements) ; - explicit predef_check_cc_$(key) ; - return predef_check_cc_$(key) ; -} - -local rule change_term_to_def ( term ) -{ - local parts = [ regex.split $(term) " " ] ; - if $(parts[3]) - { - local version_number = [ regex.split $(parts[3]) "[.]" ] ; - if ! $(version_number[3]) { version_number += "0" ; } - if ! $(version_number[3]) { version_number += "0" ; } - parts = $(parts[1-2]) BOOST_VERSION_NUMBER($(version_number:J=",")) ; - } - return CHECK=\"$(parts:J=" ")\" ; -} - -class check-expression-evaluator -{ - import configure ; - - rule __init__ ( expression + : true-properties * : false-properties * ) - { - self.expression = $(expression) ; - self.true-properties = $(true-properties) ; - self.false-properties = $(false-properties) ; - } - - rule check ( properties * ) - { - local to-eval ; - local tokens = "and" "or" ; - # Go through the expression and: eval the target values, - # and normalize to a full expression. - for local term in $(self.expression) - { - if ! ( $(term:L) in $(tokens) ) - { - # A value is a target reference that will evan to "true" - # or "false". - if $(to-eval[-1]:L) && ! ( $(to-eval[-1]:L) in $(tokens) ) - { - # Default to "and" operation. - to-eval += "and" ; - } - local message = [ modules.peek predef : _message_($(term)) ] ; - if [ configure.builds $(term) : $(properties) : $(message) ] - { - to-eval += "true" ; - } - else - { - to-eval += "false" ; - } - } - else - { - to-eval += $(term) ; - } - } - # Eval full the expression. - local eval-result = [ eval $(to-eval) ] ; - # And resolve true/false properties. - if $(eval-result) = "true" - { - return $(self.true-properties) ; - } - else - { - return $(self.false-properties) ; - } - } - - rule eval ( e * ) - { - local r ; - if $(e[1]) && $(e[2]) && $(e[3]) - { - if $(e[2]) = "and" - { - if $(e[1]) = "true" && $(e[3]) = "true" - { - r = [ eval "true" $(e[4-]) ] ; - } - else - { - r = [ eval "false" $(e[4-]) ] ; - } - } - else if $(e[2]) = "or" - { - if $(e[1]) = "true" || $(e[3]) = "true" - { - r = [ eval "true" $(e[4-]) ] ; - } - else - { - r = [ eval "false" $(e[4-]) ] ; - } - } - } - else - { - r = $(e[1]) ; - } - return $(r) ; + _loaded_ += $(_module_) ; } } +modules.poke modules : .loaded : $(_loaded_) ; +import ../tools/check/predef ; diff --git a/doc/build.jam b/doc/build.jam index 3965a08..79fe6ba 100644 --- a/doc/build.jam +++ b/doc/build.jam @@ -1,4 +1,4 @@ -# Copyright Rene Rivera 2011 +# Copyright Rene Rivera 2011-2016 # Distributed under the Boost Software License, Version 1.0. # (See accompanying file LICENSE_1_0.txt or copy at # http://www.boost.org/LICENSE_1_0.txt) @@ -23,6 +23,9 @@ else local BOOST_PREDEF_HEADERS = [ path.glob-tree $(BOOST_PREDEF_INCLUDE_ROOT)/boost/predef : *.h ] ; +# Intermediate targets.. + +# Quickbok to boostbook target. xml predef : predef.qbk @@ -32,6 +35,15 @@ xml predef ; explicit predef ; +# HTML dependencies for standalone docs. +install images : [ glob $(BOOST_ROOT)/doc/src/images/*.png ] : html/images ; +explicit images ; +install callouts : [ glob $(BOOST_ROOT)/doc/src/images/callouts/*.png ] : html/images/callouts ; +explicit callouts ; +install css : [ glob $(BOOST_ROOT)/doc/src/*.css ] : html ; +explicit css ; + +# Default target builds standalone docs. boostbook standalone : predef @@ -46,9 +58,6 @@ boostbook standalone css ; -install images : [ glob $(BOOST_ROOT)/doc/src/images/*.png ] : html/images ; -explicit images ; -install callouts : [ glob $(BOOST_ROOT)/doc/src/images/callouts/*.png ] : html/images/callouts ; -explicit callouts ; -install css : [ glob $(BOOST_ROOT)/doc/src/*.css ] : html ; -explicit css ; +# Target for Boost global documentation integration. +alias boostdoc : predef : : : predef ; +explicit boostdoc ; diff --git a/doc/history.qbk b/doc/history.qbk index 6358e1d..45807e8 100644 --- a/doc/history.qbk +++ b/doc/history.qbk @@ -1,5 +1,5 @@ [/ -Copyright 2014-2015 Rene Rivera +Copyright 2014-2016 Rene Rivera Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -7,6 +7,11 @@ http://www.boost.org/LICENSE_1_0.txt) [section History] +[heading 1.4.1] + +* Small fixes for some redefinition errors, and mispelled macros. +* Slightly rearrangement of structure to comply with current library requirements. + [heading 1.4] * Add detection of SIMD hardware. With the addition of the `BOOST_HW_*` diff --git a/doc/html/index.html b/doc/html/index.html index 70c1348..a1e170a 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -1,10 +1,10 @@ -Predef 1.4 +Predef 1.4.1 - + @@ -13,12 +13,11 @@

-Predef 1.4

+Predef 1.4.1

Rene Rivera

-
+
@@ -57,7 +56,7 @@
- +

Last revised: October 15, 2015 at 04:09:31 GMT

Last revised: February 17, 2016 at 15:44:31 GMT


diff --git a/doc/html/predef/acknoledgements.html b/doc/html/predef/acknoledgements.html index ccf5767..766f45b 100644 --- a/doc/html/predef/acknoledgements.html +++ b/doc/html/predef/acknoledgements.html @@ -4,8 +4,8 @@ Acknoledgements - - + + @@ -35,8 +35,7 @@
-
-
-

+ 1.4.1 +

+
    +
  • + Small fixes for some redefinition errors, and mispelled macros. +
  • +
  • + Slightly rearrangement of structure to comply with current library requirements. +
  • +
+

+ 1.4

    @@ -39,7 +51,7 @@

- + 1.3

    @@ -67,7 +79,7 @@

- + 1.2

    @@ -91,7 +103,7 @@

- + 1.1

    @@ -133,8 +145,7 @@
-
-
-
-
- @@ -692,7 +692,7 @@ @@ -704,7 +704,7 @@ @@ -716,7 +716,7 @@ @@ -728,7 +728,7 @@ @@ -1180,10 +1180,10 @@

- BOOST_HW_SIMD_X86_XOP_VERSION + BOOST_HW_SIMD_X86_FMA4_VERSION

- XOP + FMA4 x86 extension (AMD specific).

@@ -1191,7 +1191,7 @@

- BOOST_HW_SIMD_X86_XOP_VERSION + BOOST_HW_SIMD_X86_XOP_VERSION

XOP @@ -1283,8 +1283,7 @@

- BOOST_HW_SIMD_x86_AVX2_VERSION + BOOST_HW_SIMD_X86_AVX2_VERSION

- BOOST_HW_SIMD_x86_SSE4A_VERSION + BOOST_HW_SIMD_X86_SSE4A_VERSION

- BOOST_HW_SIMD_x86_FMA4_VERSION + BOOST_HW_SIMD_X86_FMA4_VERSION

- BOOST_HW_SIMD_x86_XOP_VERSION + BOOST_HW_SIMD_X86_XOP_VERSION

- BOOST_HW_SIMD_x86 + BOOST_HW_SIMD_X86

-
-
-
-
-
-
-
-
-