├── .gitignore ├── Jenkinsfile ├── Makefile ├── Package.swift ├── README.md ├── boost ├── Info.plist └── boost.h ├── iOSBoostFramework.xcodeproj ├── project.pbxproj ├── project.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist └── xcshareddata │ └── xcschemes │ └── boost.xcscheme └── patches ├── 1_53_0 ├── cas64strong_hpp.patch ├── date_hpp.patch ├── duration_hpp.patch ├── floating_point_comparison_hpp.patch ├── future_hpp.patch ├── gregorian_calendar_ipp.patch ├── int_adapter_hpp.patch ├── plain_report_formatter_ipp.patch ├── posix_time_conversion_hpp.patch ├── posix_time_duration_hpp.patch ├── time_system_counted_hpp.patch ├── unit_test_suite_impl_hpp.patch ├── unit_test_suite_ipp.patch └── xtime_hpp.patch ├── 1_55_0 ├── clang-darwin_jam.patch ├── date_hpp.patch ├── future_hpp.patch ├── gregorian_calendar_ipp.patch ├── int_adapter_hpp.patch ├── plain_report_formatter_ipp.patch ├── posix_time_conversion_hpp.patch ├── posix_time_duration_hpp.patch ├── time_system_counted_hpp.patch ├── unit_test_suite_impl_hpp.patch ├── unit_test_suite_ipp.patch └── xtime_hpp.patch ├── 1_58_0 ├── clang-darwin_jam.patch ├── conversion_hpp.patch ├── date_hpp.patch ├── dst_rules_hpp.patch ├── gregorian_calendar_ipp.patch ├── int_adapter_hpp.patch ├── plain_report_formatter_ipp.patch ├── posix_time_duration_hpp.patch ├── time_system_counted_hpp.patch ├── unit_test_suite_impl_hpp.patch ├── unit_test_suite_ipp.patch └── xtime_hpp.patch ├── 1_63_0 └── clang-darwin.jam.patch ├── 1_68_0 ├── array.hpp.patch ├── conversion.hpp.patch ├── dst_rules.hpp.patch ├── gcc.jam.patch ├── platform_time.hpp.patch └── socket_ops.ipp.patch ├── 1_70_0 ├── array.hpp.patch ├── gcc.jam.patch └── pthread_mutex_hpp.patch ├── 1_73_0 └── gcc.jam.patch └── 1_81_0 ├── array.hpp.patch ├── bootstrap.sh.patch └── converter_lexical_streams.hpp.patch /.gitignore: -------------------------------------------------------------------------------- 1 | *.bak 2 | *.swp 3 | .DS_Store 4 | /Info.plist 5 | /build/ 6 | **/xcuserdata 7 | /DerivedData/ 8 | /boost.xcframework.tar.bz2 9 | /boost.xcframework.zip 10 | /Carthage 11 | -------------------------------------------------------------------------------- /Jenkinsfile: -------------------------------------------------------------------------------- 1 | properties properties: [ 2 | [ 3 | $class: 'BuildDiscarderProperty', 4 | strategy: [$class: 'LogRotator', artifactDaysToKeepStr: '', artifactNumToKeepStr: '', daysToKeepStr: '', numToKeepStr: '30'] 5 | ] 6 | ] 7 | 8 | node('osx && ios') { 9 | def contributors = null 10 | def Utils 11 | def buildLabel 12 | currentBuild.result = "SUCCESS" 13 | 14 | stage ('Checkout Source') { 15 | deleteDir() 16 | checkout scm 17 | getUtils() 18 | // load pipeline utility functions 19 | Utils = load "utils/Utils.groovy" 20 | buildLabel = Utils.&getBuildLabel() 21 | } 22 | 23 | stage ('Create Change Logs') { 24 | sshagent(['38bf8b09-9e52-421a-a8ed-5280fcb921af']) { 25 | dir('./SCM') { 26 | sh '../utils/scmBuildDate > TIMESTAMP' 27 | writeFile file: "TAG", text: buildLabel 28 | writeFile file: "URL", text: env.BUILD_URL 29 | writeFile file: "BRANCH", text: env.BRANCH_NAME 30 | sh '../utils/scmBuildContributors > CONTRIBUTORS' 31 | sh '../utils/scmBuildOnHookEmail > ONHOOK_EMAIL' 32 | def htmlChangelog = Utils.&generateChangeLog(false) 33 | def mdChangelog = Utils.&generateChangeLog(true) 34 | currentBuild.description = htmlChangelog 35 | writeFile file: "CHANGELOG.md", text: mdChangelog 36 | } 37 | } 38 | } 39 | 40 | try { 41 | contributors = readFile './SCM/ONHOOK_EMAIL' 42 | 43 | stage ('Capture Build Environment') { 44 | sh 'env -u PWD -u HOME -u PATH -u \'BASH_FUNC_copy_reference_file()\' > SCM/build.env' 45 | } 46 | 47 | stage ('Notify Build Started') { 48 | Utils.&sendOnHookEmail(contributors) 49 | } 50 | 51 | stage ('Build') { 52 | // Accept the license on first install and updates 53 | Utils.&acceptXcodeLicense() 54 | sh 'make ENABLE_BITCODE=YES BITCODE_GENERATION_MODE=bitcode SDK=macosx install' 55 | sh 'make ENABLE_BITCODE=YES BITCODE_GENERATION_MODE=bitcode SDK=iphoneos install' 56 | sh 'make ENABLE_BITCODE=YES BITCODE_GENERATION_MODE=bitcode SDK=iphonesimulator install' 57 | } 58 | 59 | stage ('Assemble Framework') { 60 | sh 'make xcframework' 61 | } 62 | 63 | stage ('Archive Artifacts') { 64 | // Archive the SCM logs, the framework directory 65 | step([$class: 'ArtifactArchiver', 66 | artifacts: 'SCM/**, boost.framework.tar.bz2, boost.framework.zip', 67 | fingerprint: true, 68 | onlyIfSuccessful: true]) 69 | // Release to GitHub if on main branch 70 | withCredentials([string(credentialsId: '3ad153e6-ab28-48a1-80cf-845c30b29e94', variable: 'GH_TOKEN')]) { 71 | withEnv(['PATH=./utils:/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin']) { 72 | Utils.upgradeBrew() 73 | Utils.brewUpstall('gh') 74 | sh "make GITBRANCH=${env.BRANCH_NAME} release" 75 | } 76 | } 77 | } 78 | } 79 | catch(err) { 80 | currentBuild.result = "FAILURE" 81 | Utils.&sendFailureEmail(contributors, err) 82 | throw err 83 | } 84 | 85 | stage ('Notify Build Completion') { 86 | Utils.&sendOffHookEmail(contributors) 87 | } 88 | } 89 | 90 | def getUtils() { 91 | try { 92 | // Load the SCM util scripts first using the branch name of the main repo 93 | checkout([$class: 'GitSCM', 94 | branches: [[name: "*/${env.BRANCH_NAME}"]], 95 | doGenerateSubmoduleConfigurations: false, 96 | extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'utils']], 97 | submoduleCfg: [], 98 | userRemoteConfigs: [[url: 'git@github.com:Cogosense/JenkinsUtils.git', credentialsId: '38bf8b09-9e52-421a-a8ed-5280fcb921af']]]) 99 | } catch(err) { 100 | // Load the SCM util scripts falling back to the master branch 101 | checkout([$class: 'GitSCM', 102 | branches: [[name: "*/master"]], 103 | doGenerateSubmoduleConfigurations: false, 104 | extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'utils']], 105 | submoduleCfg: [], 106 | userRemoteConfigs: [[url: 'git@github.com:Cogosense/JenkinsUtils.git', credentialsId: '38bf8b09-9e52-421a-a8ed-5280fcb921af']]]) 107 | } 108 | } 109 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | # 2 | # supports architectures arm64, x86_64 and bitcode 3 | # 4 | # make - build a fat archive framework using $ARCHS, if $ARCHS is empty all architectures are built (device and simulator) 5 | # \ 6 | # make ARCHS=x86_64 | 7 | # > build a thin archive framework with named architecture 8 | # | 9 | # make ARCHS=arm64 / 10 | # make ARCHS='x86_64' - bulid a fat archive framework with only the named architectures 11 | # 12 | # From xcode build script: 13 | # make ARCHS=${ARCHS} - build all active architectures 14 | # 15 | # Xcode bitcode support: 16 | # make ARCHS="arm64" ENABLE_BITCODE=YES BITCODE_GENERATION_MODE=bitcode - create bitcode 17 | # make ARCHS="arm64" ENABLE_BITCODE=YES BITCODE_GENERATION_MODE=marker - add bitcode marker (but no real bitcode) 18 | # 19 | # The ENABLE_BITCODE and BITCODE_GENERATION_MODE flags are set in the Xcode project settings 20 | # 21 | 22 | SHELL = /bin/bash 23 | 24 | V ?= 0 25 | at = @ 26 | ifeq ($(V),1) 27 | at = 28 | endif 29 | 30 | # 31 | # Repository info 32 | # 33 | GITBRANCH ?= $(shell which git > /dev/null && git rev-parse --abbrev-ref --verify -q HEAD || echo "unknown") 34 | GITCOMMIT ?= $(shell which git > /dev/null && git rev-parse --verify -q HEAD || echo "unknown") 35 | 36 | # 37 | # library to be built 38 | NAME = boost 39 | BOOST_VERSION = 1_81_0 40 | # 41 | # Release version on GitHub - bump last digit to make new 42 | # GitHub release with same Boost version. 43 | VERSION = 1.81.2 44 | 45 | # 46 | # Download location URL 47 | # 48 | TARBALL = $(NAME)_$(BOOST_VERSION).tar.bz2 49 | DOWNLOAD_URL = http://sourceforge.net/projects/boost/files/boost/$(subst _,.,$(BOOST_VERSION))/$(TARBALL) 50 | 51 | # 52 | # Files used to trigger builds for each architecture 53 | # TARGET_BUILD_LIB file under install prefix that can be built directly 54 | # TARGET_NOBUILD_ARTIFACT file under install prefix that is built indirectly 55 | # 56 | INSTALLED_LIB = /lib/libboost.a 57 | INSTALLED_HEADER_DIR = /include/boost 58 | 59 | # 60 | # Output framework name 61 | # 62 | FRAMEWORK_NAME = $(NAME) 63 | 64 | # 65 | # The supported Xcode SDKs 66 | # 67 | MACOSX_SDK = macosx 68 | IPHONEOS_SDK = iphoneos 69 | IPHONESIMULATOR_SDK = iphonesimulator 70 | 71 | # 72 | # The supported Xcode build architectures 73 | # 74 | ARM_64_ARCH = arm64 75 | X86_64_ARCH = x86_64 76 | 77 | # 78 | # set or unset warning flags 79 | # 80 | WFLAGS = -Wall -pedantic -Wno-unused-variable -Wno-deprecated-declarations 81 | 82 | # 83 | # The following options must be the same for all projects that 84 | # link against this boost library 85 | # -fvisibility=hidden 86 | # -fvisibility-inlines-hidden 87 | # (if -fvisibility=hidden is specified, then -fvisibility-inlines-hidden is unnecessary as inlines are already hidden) 88 | # 89 | EXTRA_CPPFLAGS = -DBOOST_AC_USE_PTHREADS -DBOOST_SP_USE_PTHREADS -stdlib=libc++ -std=c++17 90 | BOOST_LIBS = atomic date_time exception filesystem locale program_options random regex serialization system test thread chrono 91 | JAM_PROPERTIES = visibility=global 92 | 93 | # 94 | # set minimum MacOSX version supported 95 | # 96 | ifneq "$(IPHONEOS_DEPLOYMENT_TARGET)" "" 97 | MIN_OS_VER = $(MACOSX_DEPLOYMENT_TARGET) 98 | else 99 | MIN_OS_VER = 10.0 100 | endif 101 | 102 | # 103 | # set minimum iOS version supported 104 | # 105 | ifneq "$(IPHONEOS_DEPLOYMENT_TARGET)" "" 106 | MIN_OS_VER = $(IPHONEOS_DEPLOYMENT_TARGET) 107 | else 108 | MIN_OS_VER = 11.0 109 | endif 110 | 111 | # 112 | # enable bitcode support 113 | # 114 | ifeq "$(ENABLE_BITCODE)" "YES" 115 | ifeq "$(BITCODE_GENERATION_MODE)" "marker" 116 | XCODE_BITCODE_FLAG = -fembed-bitcode-marker 117 | endif 118 | ifeq "$(BITCODE_GENERATION_MODE)" "bitcode" 119 | XCODE_BITCODE_FLAG = -fembed-bitcode 120 | endif 121 | endif 122 | 123 | # 124 | # SDK_NAME, ARCHS and BUILT_PRODUCTS_DIR are set by xcode 125 | # only set them if make is invoked directly 126 | # 127 | # build for device or simulator 128 | ifneq ($(findstring $(IPHONEOS_SDK), $(SDK_NAME)),) 129 | SDK = $(IPHONEOS_SDK) 130 | else 131 | ifneq ($(findstring $(IPHONESIMULATOR_SDK), $(SDK_NAME)),) 132 | SDK = $(IPHONESIMULATOR_SDK) 133 | else 134 | ifneq ($(findstring $(MACOSX_SDK), $(SDK_NAME)),) 135 | SDK = $(MACOSX_SDK) 136 | else 137 | ifneq ($(SDK_NAME),) 138 | SDK = $(SDK_NAME) 139 | endif 140 | endif 141 | endif 142 | endif 143 | SDK ?= $(IPHONEOS_SDK) 144 | # build for device or simulator 145 | ifeq ($(SDK),$(IPHONEOS_SDK)) 146 | SDK = $(IPHONEOS_SDK) 147 | ARCHS ?= $(ARM_64_ARCH) 148 | else 149 | ifeq ($(SDK),$(IPHONESIMULATOR_SDK)) 150 | SDK = $(IPHONESIMULATOR_SDK) 151 | ARCHS ?= $(ARM_64_ARCH) $(X86_64_ARCH) 152 | else 153 | ifeq ($(SDK),$(MACOSX_SDK)) 154 | SDK = $(MACOSX_SDK) 155 | ARCHS ?= $(ARM_64_ARCH) $(X86_64_ARCH) 156 | else 157 | $(error unsupported sdk: $(SDK)) 158 | endif 159 | endif 160 | endif 161 | 162 | BUILT_PRODUCTS_DIR ?= $(CURDIR)/build 163 | 164 | MAKER_DIR = $(BUILT_PRODUCTS_DIR)/Maker 165 | MAKER_ARCHIVES_DIR = $(MAKER_DIR)/Archives 166 | MAKER_SOURCES_DIR = $(MAKER_DIR)/Sources 167 | MAKER_BUILD_DIR = $(MAKER_DIR)/Build 168 | MAKER_BUILDROOT_DIR = $(MAKER_DIR)/Buildroot 169 | MAKER_INTERMEDIATE_DIR = $(MAKER_DIR)/Intermediate 170 | 171 | PKGSRCDIR = $(MAKER_SOURCES_DIR)/$(NAME)_$(BOOST_VERSION) 172 | 173 | FRAMEWORKBUNDLE = $(FRAMEWORK_NAME).framework 174 | XCFRAMEWORKBUNDLE = $(FRAMEWORK_NAME).xcframework 175 | 176 | empty:= 177 | space:= $(empty) $(empty) 178 | comma:= , 179 | 180 | .PHONY : \ 181 | all \ 182 | build \ 183 | install \ 184 | carthage \ 185 | clean \ 186 | build-commence \ 187 | build-complete \ 188 | install-commence i\ 189 | nstall-complete \ 190 | dirs \ 191 | tarball \ 192 | bootstrap \ 193 | jams \ 194 | $(addprefix Jam_$(SDK)_, $(ARCHS)) \ 195 | builds \ 196 | $(addprefix Build_$(SDK)_, $(ARCHS)) 197 | 198 | all : build 199 | 200 | build : build-commence dirs tarball bootstrap jams builds bundle build-complete 201 | 202 | install : install-commence dirs tarball bootstrap jams builds bundle install-complete 203 | 204 | carthage: 205 | carthage build --no-skip-current 206 | carthage archive 207 | 208 | clean : 209 | $(RM) -r $(BUILT_PRODUCTS_DIR) 210 | $(RM) -r DerivedData 211 | $(RM) -r Carthage 212 | $(RM) *.xcframework.tar.bz2 213 | $(RM) *.xcframework.tar.zip 214 | $(RM) Info.plist 215 | 216 | build-commence : 217 | @echo "Commencing debug build for SDK:$(SDK) ARCHS:\"$(ARCHS)\" framework: $(FRAMEWORK_NAME)" 218 | 219 | build-complete : 220 | @echo "Completed debug build for SDK:$(SDK) ARCHS:\"$(ARCHS)\" framework: $(FRAMEWORK_NAME)" 221 | 222 | install-commence : 223 | @echo "Commencing release build for SDK:$(SDK) ARCHS:\"$(ARCHS)\" framework: $(FRAMEWORK_NAME)" 224 | 225 | install-complete : 226 | @echo "Completed release build for SDK:$(SDK) ARCHS:\"$(ARCHS)\" framework: $(FRAMEWORK_NAME)" 227 | 228 | dirs : $(MAKER_ARCHIVES_DIR) $(MAKER_SOURCES_DIR) $(MAKER_BUILD_DIR) $(MAKER_BUILDROOT_DIR) $(MAKER_INTERMEDIATE_DIR) 229 | 230 | $(MAKER_ARCHIVES_DIR) $(MAKER_SOURCES_DIR) $(MAKER_BUILD_DIR) $(MAKER_BUILDROOT_DIR) $(MAKER_INTERMEDIATE_DIR) : 231 | @mkdir -p $@ 232 | 233 | tarball : dirs $(MAKER_ARCHIVES_DIR)/$(TARBALL) 234 | 235 | $(MAKER_ARCHIVES_DIR)/$(TARBALL) : 236 | @echo "downloading $(DOWNLOAD_URL)" 237 | $(at)curl -L --retry 10 --retry-delay 12 -s -o $@ $(DOWNLOAD_URL) || { \ 238 | $(RM) $@ ; \ 239 | exit 1 ; \ 240 | } 241 | 242 | bootstrap : dirs tarball $(PKGSRCDIR)/bootstrap.sh 243 | 244 | $(PKGSRCDIR)/bootstrap.sh : 245 | tar -C $(MAKER_SOURCES_DIR) -xmf $(MAKER_ARCHIVES_DIR)/$(TARBALL) 246 | if [ -d patches/$(BOOST_VERSION) ] ; then \ 247 | for p in patches/$(BOOST_VERSION)/* ; do \ 248 | if [ -f $$p ] ; then \ 249 | patch -d $(PKGSRCDIR) -p1 < $$p ; \ 250 | fi ; \ 251 | done ; \ 252 | fi 253 | 254 | jams : dirs tarball bootstrap $(addprefix Jam_$(SDK)_, $(ARCHS)) $(PKGSRCDIR)/b2 255 | 256 | # 257 | # bjam source code is not c99 compatible, setting iOS9.3 258 | # compatibility forces c99 mode, iOS9.3 is default level for 259 | # Xcode 7.3.1 260 | # 261 | $(PKGSRCDIR)/b2 : $(PKGSRCDIR)/bootstrap.sh 262 | unset IPHONEOS_DEPLOYMENT_TARGET ;\ 263 | unset SDKROOT ;\ 264 | export PATH=usr/local/bin:/usr/bin:/bin ; \ 265 | cd $(PKGSRCDIR) && CXXFLAGS="$(WFLAGS)" ./bootstrap.sh --with-toolset=clang --with-libraries=$(subst $(space),$(comma),$(BOOST_LIBS)) 266 | 267 | builds : dirs tarball bootstrap jams $(addprefix Build_$(SDK)_, $(ARCHS)) 268 | 269 | # 270 | # $1 - sdk (iphoneos or iphonesimulator) 271 | # $2 - xcode architecture (arm64, x86_64) 272 | # $3 - boost toolchain architecture (arm64, x86_64) 273 | # 274 | define configure_template 275 | 276 | Jam_$(1)_$(2) : $(MAKER_BUILD_DIR)/$(1)/$(2) $(MAKER_BUILD_DIR)/$(1)/$(2)/user-config.jam 277 | 278 | $(MAKER_BUILD_DIR)/$(1)/$(2) : 279 | $(at)mkdir -p $$@ 280 | 281 | $(MAKER_BUILD_DIR)/$(1)/$(2)/user-config.jam : 282 | @echo using clang-darwin : $(3) > $$@ 283 | @echo " : xcrun --sdk $(1) clang++" >> $$@ 284 | @echo " : \"-m$(1)-version-min=$$(MIN_OS_VER) $$(XCODE_BITCODE_FLAG) -arch $(2) $$(EXTRA_CPPFLAGS) $$(JAM_DEFINES) $$(WFLAGS)\"" >> $$@ 285 | @echo " \"-arch $(2)\"" >> $$@ 286 | @echo " " >> $$@ 287 | @echo " ;" >> $$@ 288 | 289 | Build_$(1)_$(2) : $(MAKER_BUILDROOT_DIR)/$(1)/$(2)/$(FRAMEWORKBUNDLE)$(INSTALLED_LIB) 290 | 291 | $(MAKER_BUILDROOT_DIR)/$(1)/$(2)/$(FRAMEWORKBUNDLE)$(INSTALLED_LIB) : 292 | $(at)builddir="$(MAKER_BUILDROOT_DIR)/$(1)/$(2)" ; \ 293 | installdir="$(MAKER_BUILDROOT_DIR)/$(1)/$(2)/$(FRAMEWORKBUNDLE)" ; \ 294 | cd $(PKGSRCDIR) && \ 295 | PATH=usr/local/bin:/usr/bin:/bin ; \ 296 | BOOST_BUILD_USER_CONFIG=$(MAKER_BUILD_DIR)/$(1)/$(2)/user-config.jam \ 297 | ./b2 --build-dir="$$$$builddir" --prefix="$$$$installdir" $$(JAM_OPTIONS) toolset=clang-darwin-$(3) target-os=iphone warnings=off link=static $$(JAM_PROPERTIES) install && \ 298 | cd $$$$installdir/lib && printf "[$(1)-$(2)] extracting... " && \ 299 | for ar in `find . -name "*.a"` ; do \ 300 | boostlib=`basename $$$$ar` ; \ 301 | if [ $$$$boostlib != libboost.a ] ; then \ 302 | libname=`echo $$$$boostlib | sed 's/.*libboost_\([^.]*\).*$$$$/\1/'` ; \ 303 | mkdir $$$$libname && printf "$$$$libname " ; \ 304 | (cd $$$$libname && xcrun -sdk $(1) ar -x ../$$$$boostlib) || { \ 305 | echo "failed to extract $$(dir $$@)/$$$$boostlib"; \ 306 | $(RM) $$@; \ 307 | exit 1 ; \ 308 | } ; \ 309 | for obj in `find $$$$libname -name '*.o'` ; do \ 310 | file=`basename $$$$obj` ; \ 311 | mv $$$$obj ./$$$${libname}_$$$${file} ; \ 312 | done ; \ 313 | $(RM) -r $$$$libname ; \ 314 | fi ; \ 315 | $(RM) $$$$ar ; \ 316 | done ; \ 317 | printf "\n" ; \ 318 | xcrun -sdk $(1) ar -cruS libboost.a *.o ; \ 319 | xcrun -sdk $(1) ranlib libboost.a > /dev/null 2>&1 ; \ 320 | $(RM) *.o 321 | 322 | endef 323 | 324 | $(eval $(call configure_template,$(MACOSX_SDK),$(ARM_64_ARCH),arm64)) 325 | $(eval $(call configure_template,$(MACOSX_SDK),$(X86_64_ARCH),x86_64)) 326 | $(eval $(call configure_template,$(IPHONEOS_SDK),$(ARM_64_ARCH),arm64)) 327 | $(eval $(call configure_template,$(IPHONESIMULATOR_SDK),$(ARM_64_ARCH),arm64)) 328 | $(eval $(call configure_template,$(IPHONESIMULATOR_SDK),$(X86_64_ARCH),x86_64)) 329 | 330 | FIRST_ARCH = $(firstword $(ARCHS)) 331 | 332 | .PHONY : bundle-dirs bundle-headers bundle-rm-fat-library bundle-info 333 | 334 | SDK_DIR = $(MAKER_INTERMEDIATE_DIR)/$(SDK) 335 | SDK_FRAMEWORK_DIR = $(SDK_DIR)/$(FRAMEWORKBUNDLE) 336 | 337 | bundle : \ 338 | bundle-dirs \ 339 | bundle-headers \ 340 | bundle-rm-fat-library \ 341 | $(SDK_FRAMEWORK_DIR)/$(FRAMEWORK_NAME) \ 342 | bundle-info \ 343 | $(SDK_DIR)/$(FRAMEWORKBUNDLE).zip 344 | 345 | FRAMEWORK_DIRS = \ 346 | $(SDK_FRAMEWORK_DIR) \ 347 | $(SDK_FRAMEWORK_DIR)/Resources \ 348 | $(SDK_FRAMEWORK_DIR)/Headers \ 349 | $(SDK_FRAMEWORK_DIR)/Documentation \ 350 | $(SDK_FRAMEWORK_DIR)/Modules 351 | 352 | bundle-dirs : $(FRAMEWORK_DIRS) 353 | 354 | $(FRAMEWORK_DIRS) : 355 | @mkdir -p $@ 356 | 357 | bundle-headers : bundle-dirs 358 | $(at)rsync -r -u $(MAKER_BUILDROOT_DIR)/$(SDK)/$(FIRST_ARCH)/$(FRAMEWORKBUNDLE)$(INSTALLED_HEADER_DIR)/* $(SDK_FRAMEWORK_DIR)/Headers 359 | 360 | $(SDK_FRAMEWORK_DIR)/Info.plist : 361 | $(at)cp $(FRAMEWORK_NAME)/Info.plist $@ 362 | $(at)/usr/libexec/plistbuddy -c "Set:CFBundleDevelopmentRegion English" $@ 363 | $(at)/usr/libexec/plistbuddy -c "Set:CFBundleExecutable $(NAME)" $@ 364 | $(at)/usr/libexec/plistbuddy -c "Set:CFBundleName $(FRAMEWORK_NAME)" $@ 365 | $(at)/usr/libexec/plistbuddy -c "Set:CFBundleIdentifier com.cogosense.$(NAME)" $@ 366 | 367 | bundle-info : $(SDK_FRAMEWORK_DIR)/Info.plist 368 | $(at)verCode=$$(git tag -l '[0-9]*\.[0-9]*\.[0-9]' | wc -l) ; \ 369 | verStr=$$(git describe --match '[0-9]*\.[0-9]*\.[0-9]' --always) ; \ 370 | /usr/libexec/plistbuddy -c "Set:CFBundleShortVersionString $${verStr}" $< ; \ 371 | /usr/libexec/plistbuddy -c "Set:CFBundleVersion $${verCode}" $< 372 | $(at)plutil -convert binary1 $< 373 | 374 | bundle-rm-fat-library : 375 | $(at)$(RM) $(SDK_FRAMEWORK_DIR)/$(FRAMEWORK_NAME) 376 | 377 | $(SDK_FRAMEWORK_DIR)/$(FRAMEWORK_NAME) : $(addprefix $(MAKER_BUILDROOT_DIR)/$(SDK)/, $(addsuffix /$(FRAMEWORKBUNDLE)$(INSTALLED_LIB),$(ARCHS))) 378 | $(at)mkdir -p $(@D) 379 | $(at)xcrun -sdk $(SDK) lipo -create $^ -o $@ 380 | 381 | $(SDK_DIR)/$(FRAMEWORKBUNDLE).zip : $(SDK_DIR)/$(FRAMEWORKBUNDLE) 382 | @echo "creating $@" 383 | $(at)(cd $(SDK_DIR) && zip -qr $(FRAMEWORKBUNDLE).zip $(FRAMEWORKBUNDLE)) || exit $? 384 | @echo "$(FRAMEWORKBUNDLE) for $(SDK) saved to archive $@" 385 | 386 | .PHONY : xcframework 387 | xcframework : $(BUILT_PRODUCTS_DIR)/$(XCFRAMEWORKBUNDLE) $(XCFRAMEWORKBUNDLE).tar.bz2 $(XCFRAMEWORKBUNDLE).zip 388 | 389 | $(BUILT_PRODUCTS_DIR)/$(XCFRAMEWORKBUNDLE) : $(wildcard $(MAKER_INTERMEDIATE_DIR)/*/$(FRAMEWORKBUNDLE)) 390 | $(at)$(RM) -r $@ 391 | $(at)xcodebuild -create-xcframework -output $@ $(addprefix -framework , $^) 392 | 393 | $(XCFRAMEWORKBUNDLE).tar.bz2 : $(BUILT_PRODUCTS_DIR)/$(XCFRAMEWORKBUNDLE) 394 | @echo "creating $@" 395 | $(at)tar -C $(BUILT_PRODUCTS_DIR) -cjf $(XCFRAMEWORKBUNDLE).tar.bz2 $(XCFRAMEWORKBUNDLE) 396 | @echo "$(XCFRAMEWORKBUNDLE) saved to archive $@" 397 | 398 | $(XCFRAMEWORKBUNDLE).zip : $(BUILT_PRODUCTS_DIR)/$(XCFRAMEWORKBUNDLE) 399 | @echo "creating $@" 400 | $(at)(cd $(BUILT_PRODUCTS_DIR) && zip -qr ../$(XCFRAMEWORKBUNDLE).zip $(XCFRAMEWORKBUNDLE)) || exit $? 401 | @echo "$(XCFRAMEWORKBUNDLE) saved to archive $@" 402 | 403 | .PHONY : release update-spm 404 | 405 | release : $(XCFRAMEWORKBUNDLE).zip update-spm 406 | $(at)if [ $(GITBRANCH) == 'master' ] ; then \ 407 | if ! gh release view $(VERSION) > /dev/null 2>&1 ; then \ 408 | echo "creating release $(VERSION)" ; \ 409 | git commit -m "Update SPM to version $(VERSION)" Package.swift ; \ 410 | git tag -am "Release Boost for iOS $(VERSION)" $(VERSION) ; \ 411 | git push origin HEAD:master --follow-tags ; \ 412 | gh release create "$(VERSION)" --verify-tag --generate-notes $(XCFRAMEWORKBUNDLE).zip $(MAKER_INTERMEDIATE_DIR)/$(IPHONEOS_SDK)/$(FRAMEWORKBUNDLE).zip; \ 413 | else \ 414 | echo "warning: iOSBoostFramework $(VERSION) has already been created: skipping release" ; \ 415 | fi ; \ 416 | fi 417 | 418 | update-spm : $(XCFRAMEWORKBUNDLE).zip 419 | $(at)CHKSUM=$$(swift package compute-checksum $<) ; \ 420 | sed -E -i '' '/let moduleName =/s/= ".+"/= "$(NAME)"/' Package.swift ; \ 421 | sed -E -i '' '/let version =/s/= ".+"/= "$(VERSION)"/' Package.swift ; \ 422 | sed -E -i '' "/let checksum =/s/= \".+\"/= \"$$CHKSUM\"/" Package.swift 423 | -------------------------------------------------------------------------------- /Package.swift: -------------------------------------------------------------------------------- 1 | // swift-tools-version:5.5 2 | // The swift-tools-version declares the minimum version of Swift required to build this package. 3 | import PackageDescription 4 | 5 | let version = "1.81.2" 6 | let moduleName = "boost" 7 | let checksum = "f0cd644ee12f1dd359300830b50442396b3d518e7e3a23a409c9128669003d2d" 8 | 9 | let package = Package( 10 | name: moduleName, 11 | platforms: [ 12 | .iOS(.v11) 13 | ], 14 | products: [ 15 | .library( 16 | name: moduleName, 17 | targets: [moduleName] 18 | ) 19 | ], 20 | targets: [ 21 | .binaryTarget( 22 | name: moduleName, 23 | url: "https://github.com/Cogosense/iOSBoostFramework/releases/download/\(version)/\(moduleName).xcframework.zip", 24 | checksum: checksum 25 | ) 26 | ] 27 | ) 28 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # A Boost library framework for iOS 2 | [![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) 3 | [![SPM compatible](https://img.shields.io/badge/platform-iphoneos%20iphonesimulator%20macosx-blue)](https://developer.apple.com/documentation/xcode/adding-package-dependencies-to-your-app) 4 | 5 | More information on the [Boost home page](http://www.boost.org/) 6 | 7 | ## Distribution 8 | 9 | The frameworks are distributed using the following methods: 10 | 11 | * As a binary XCFramework using Swift Package Manager 12 | * As a binary XCFramework using carthage 13 | * The iOSBoostFramework project can be included into an Xcode workspace 14 | 15 | SPM is now the preferred method. Other methods will be deprecated in the next 16 | major release. 17 | 18 | To add the swift package right click your project in the Xcode project explorer, 19 | select __Add packages...__. 20 | * In the search field enter the package URL __https://github.com/Cogosense/iOSBoostFramework__ 21 | * In the __Dependency Rule__ field set the version to __1.81.0__ 22 | 23 | ## Platform Support 24 | 25 | The Makefile in this project creates a iOS XCframework bundle that 26 | supports the following platforms: 27 | 28 | * iphoneos arm64 29 | * iphonesimulator x86_64 30 | * iphonesimulator arm64 31 | * macosx x86_64 32 | * macosx arm64 33 | 34 | It is suitable for using on all iOS devices and simulators that support 35 | iOS 11 and greater. The macosx platform supprts v10 and greater. 36 | 37 | ## Xcode Support 38 | 39 | Xcode14 has removed support for 32bit compilation, so the armv7 device and 40 | i386 simulator architecture have been removed. 41 | 42 | Note: The latest release of iOSBoostFramework (1.81.0) is the first release 43 | to support: 44 | * MacOS 45 | * M1 and M2 Apple Silicon processors. 46 | * iOS Simulator on M! and M2 CPUs. 47 | 48 | ## Supported Libraries 49 | 50 | The following boost libraries are built 51 | 52 | * test 53 | * thread 54 | * atomic 55 | * signals 56 | * filesystem 57 | * regex 58 | * program_options 59 | * system 60 | * date_time 61 | * serialization 62 | * exception 63 | * random 64 | * locale 65 | 66 | The locale library has the POSIX option turned on and the libiconv library 67 | supplied with iOS is used. 68 | 69 | ## Bitcode 70 | 71 | The Makefile supports bitcode generation for release builds. Debug builds use 72 | a bitcode-marker. Bitcode generation is controlled by the build variable 73 | **ENABLE_BITCODE** and the mode is controlled by the build variable 74 | **BITCODE_GENERATION_MODE**. 75 | 76 | ## SDK 77 | 78 | The macosx, iphoneos and iphonesimulator SDKs are currently supported. Using the 79 | XCFramework, a single binary can be created that supports ARM devices and 80 | ARM and x86_64 simulators in a single framework bundle. 81 | 82 | To build a device framework only: 83 | 84 | make 85 | make xcframework 86 | 87 | To build a universal XCframework: 88 | 89 | make SDK=macosx 90 | make SDK=iphoneos 91 | make SDK=iphonesimulator 92 | make xcframework 93 | 94 | ## Active Architectures 95 | 96 | When used in conjunction with an Xcode workspace, only the active architecture 97 | is built. This is specified by Xcode using the **ARCHS** build variable. 98 | 99 | ## Support for Swift Package Manager 100 | 101 | The new XCframework is distributed as a binary framework. Use the Xcode 102 | packages feature to include it into a project. 103 | See [Addingpackage dependencies to your app](https://developer.apple.com/documentation/xcode/adding-package-dependencies-to-your-app) 104 | 105 | ## Support for Xcode Workspaces 106 | 107 | The project can be checked out into an Xcode workspace. Use Finder to drag the project file **iOSBoostFramework/iOSBoostFramework.xcodeproj** to the Xcode 108 | workspace. 109 | 110 | ## Carthage 111 | 112 | The Makefile was refactored to work better with the new Xcode10+ build system. The **iOSBoostFramework.xcodeproj** 113 | file was updated to include a shared Cocoa Touch Framework target **boost**. This is required 114 | by [Carthage](https://github.com/Carthage/Carthage). 115 | 116 | To add **iOSBoostFramework** to your project, first create a *Cartfile* in your project's root 117 | with the following contents: 118 | 119 | github "Cogosense/iOSBoostFramework" >= 1.81.2 120 | 121 | Then build with Carthage: 122 | 123 | carthage update 124 | 125 | More details on adding frameworks to a project can be found [here](https://github.com/Carthage/Carthage#adding-frameworks-to-an-application). 126 | 127 | ## Legacy Makefile (deprecated) 128 | 129 | This has now been removed - the last version to support it was 1.73.0. 130 | -------------------------------------------------------------------------------- /boost/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | $(CURRENT_PROJECT_VERSION) 21 | 22 | 23 | -------------------------------------------------------------------------------- /boost/boost.h: -------------------------------------------------------------------------------- 1 | // 2 | // boost.h 3 | // boost 4 | // 5 | // Created by Steve Williams on 2018-10-26. 6 | // Copyright © 2018 Steve Williams. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | //! Project version number for boost. 12 | FOUNDATION_EXPORT double boostVersionNumber; 13 | 14 | //! Project version string for boost. 15 | FOUNDATION_EXPORT const unsigned char boostVersionString[]; 16 | 17 | // In this header, you should import all the public headers of your framework using statements like #import 18 | 19 | 20 | -------------------------------------------------------------------------------- /iOSBoostFramework.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 54; 7 | objects = { 8 | 9 | /* Begin PBXFileReference section */ 10 | F1AB372A21840B40000DB450 /* boost.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = boost.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 11 | F1AB372C21840B40000DB450 /* boost.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = boost.h; sourceTree = ""; }; 12 | F1AB372D21840B40000DB450 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 13 | /* End PBXFileReference section */ 14 | 15 | /* Begin PBXFrameworksBuildPhase section */ 16 | F1AB372721840B40000DB450 /* Frameworks */ = { 17 | isa = PBXFrameworksBuildPhase; 18 | buildActionMask = 2147483647; 19 | files = ( 20 | ); 21 | runOnlyForDeploymentPostprocessing = 0; 22 | }; 23 | /* End PBXFrameworksBuildPhase section */ 24 | 25 | /* Begin PBXGroup section */ 26 | F1AB372B21840B40000DB450 /* boost */ = { 27 | isa = PBXGroup; 28 | children = ( 29 | F1AB372C21840B40000DB450 /* boost.h */, 30 | F1AB372D21840B40000DB450 /* Info.plist */, 31 | ); 32 | path = boost; 33 | sourceTree = ""; 34 | }; 35 | F1C800211D2F07F2004CFAAB = { 36 | isa = PBXGroup; 37 | children = ( 38 | F1AB372A21840B40000DB450 /* boost.framework */, 39 | F1AB372B21840B40000DB450 /* boost */, 40 | ); 41 | sourceTree = ""; 42 | }; 43 | /* End PBXGroup section */ 44 | 45 | /* Begin PBXHeadersBuildPhase section */ 46 | F1AB372521840B40000DB450 /* Headers */ = { 47 | isa = PBXHeadersBuildPhase; 48 | buildActionMask = 2147483647; 49 | files = ( 50 | ); 51 | runOnlyForDeploymentPostprocessing = 0; 52 | }; 53 | /* End PBXHeadersBuildPhase section */ 54 | 55 | /* Begin PBXLegacyTarget section */ 56 | F1C800361D2F0811004CFAAB /* boost.framework */ = { 57 | isa = PBXLegacyTarget; 58 | buildArgumentsString = "-f Makefile.legacy $(ACTION)"; 59 | buildConfigurationList = F1C800371D2F0811004CFAAB /* Build configuration list for PBXLegacyTarget "boost.framework" */; 60 | buildPhases = ( 61 | ); 62 | buildToolPath = /usr/bin/make; 63 | buildWorkingDirectory = ""; 64 | dependencies = ( 65 | ); 66 | name = boost.framework; 67 | passBuildSettingsInEnvironment = 1; 68 | productName = boost.framework; 69 | }; 70 | /* End PBXLegacyTarget section */ 71 | 72 | /* Begin PBXNativeTarget section */ 73 | F1AB372921840B40000DB450 /* boost */ = { 74 | isa = PBXNativeTarget; 75 | buildConfigurationList = F1AB372F21840B40000DB450 /* Build configuration list for PBXNativeTarget "boost" */; 76 | buildPhases = ( 77 | F1AB372521840B40000DB450 /* Headers */, 78 | F1AB372621840B40000DB450 /* Sources */, 79 | F1AB372721840B40000DB450 /* Frameworks */, 80 | F1AB372821840B40000DB450 /* Resources */, 81 | F1AB373221840B70000DB450 /* Make boost */, 82 | ); 83 | buildRules = ( 84 | ); 85 | dependencies = ( 86 | ); 87 | name = boost; 88 | productName = boost; 89 | productReference = F1AB372A21840B40000DB450 /* boost.framework */; 90 | productType = "com.apple.product-type.framework"; 91 | }; 92 | /* End PBXNativeTarget section */ 93 | 94 | /* Begin PBXProject section */ 95 | F1C800221D2F07F2004CFAAB /* Project object */ = { 96 | isa = PBXProject; 97 | attributes = { 98 | LastUpgradeCheck = 1000; 99 | ORGANIZATIONNAME = "Steve Williams"; 100 | TargetAttributes = { 101 | F1AB372921840B40000DB450 = { 102 | CreatedOnToolsVersion = 10.0; 103 | ProvisioningStyle = Manual; 104 | }; 105 | F1C800361D2F0811004CFAAB = { 106 | CreatedOnToolsVersion = 7.3.1; 107 | }; 108 | }; 109 | }; 110 | buildConfigurationList = F1C800251D2F07F2004CFAAB /* Build configuration list for PBXProject "iOSBoostFramework" */; 111 | compatibilityVersion = "Xcode 8.0"; 112 | developmentRegion = en; 113 | hasScannedForEncodings = 0; 114 | knownRegions = ( 115 | en, 116 | ); 117 | mainGroup = F1C800211D2F07F2004CFAAB; 118 | productRefGroup = F1C800211D2F07F2004CFAAB; 119 | projectDirPath = ""; 120 | projectRoot = ""; 121 | targets = ( 122 | F1C800361D2F0811004CFAAB /* boost.framework */, 123 | F1AB372921840B40000DB450 /* boost */, 124 | ); 125 | }; 126 | /* End PBXProject section */ 127 | 128 | /* Begin PBXResourcesBuildPhase section */ 129 | F1AB372821840B40000DB450 /* Resources */ = { 130 | isa = PBXResourcesBuildPhase; 131 | buildActionMask = 2147483647; 132 | files = ( 133 | ); 134 | runOnlyForDeploymentPostprocessing = 0; 135 | }; 136 | /* End PBXResourcesBuildPhase section */ 137 | 138 | /* Begin PBXShellScriptBuildPhase section */ 139 | F1AB373221840B70000DB450 /* Make boost */ = { 140 | isa = PBXShellScriptBuildPhase; 141 | alwaysOutOfDate = 1; 142 | buildActionMask = 2147483647; 143 | files = ( 144 | ); 145 | inputFileListPaths = ( 146 | ); 147 | inputPaths = ( 148 | ); 149 | name = "Make boost"; 150 | outputFileListPaths = ( 151 | ); 152 | outputPaths = ( 153 | ); 154 | runOnlyForDeploymentPostprocessing = 0; 155 | shellPath = /bin/sh; 156 | shellScript = "# Type a script or drag a script file from your workspace to insert its path.\nmake ${ACTION}\n"; 157 | showEnvVarsInLog = 0; 158 | }; 159 | /* End PBXShellScriptBuildPhase section */ 160 | 161 | /* Begin PBXSourcesBuildPhase section */ 162 | F1AB372621840B40000DB450 /* Sources */ = { 163 | isa = PBXSourcesBuildPhase; 164 | buildActionMask = 2147483647; 165 | files = ( 166 | ); 167 | runOnlyForDeploymentPostprocessing = 0; 168 | }; 169 | /* End PBXSourcesBuildPhase section */ 170 | 171 | /* Begin XCBuildConfiguration section */ 172 | F1AB373021840B40000DB450 /* Debug */ = { 173 | isa = XCBuildConfiguration; 174 | buildSettings = { 175 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 176 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 177 | CLANG_ENABLE_OBJC_WEAK = YES; 178 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 179 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 180 | CODE_SIGN_IDENTITY = ""; 181 | CODE_SIGN_STYLE = Manual; 182 | CURRENT_PROJECT_VERSION = 1; 183 | DEFINES_MODULE = YES; 184 | DEVELOPMENT_TEAM = ""; 185 | DYLIB_COMPATIBILITY_VERSION = 1; 186 | DYLIB_CURRENT_VERSION = 1; 187 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 188 | GCC_C_LANGUAGE_STANDARD = gnu11; 189 | INFOPLIST_FILE = boost/Info.plist; 190 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 191 | IPHONEOS_DEPLOYMENT_TARGET = 11.0; 192 | LD_RUNPATH_SEARCH_PATHS = ( 193 | "$(inherited)", 194 | "@executable_path/Frameworks", 195 | "@loader_path/Frameworks", 196 | ); 197 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; 198 | MTL_FAST_MATH = YES; 199 | PRODUCT_BUNDLE_IDENTIFIER = com.cogosense.boost; 200 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; 201 | PROVISIONING_PROFILE_SPECIFIER = ""; 202 | SKIP_INSTALL = YES; 203 | TARGETED_DEVICE_FAMILY = "1,2"; 204 | VERSIONING_SYSTEM = "apple-generic"; 205 | VERSION_INFO_PREFIX = ""; 206 | }; 207 | name = Debug; 208 | }; 209 | F1AB373121840B40000DB450 /* Release */ = { 210 | isa = XCBuildConfiguration; 211 | buildSettings = { 212 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 213 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 214 | CLANG_ENABLE_OBJC_WEAK = YES; 215 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 216 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 217 | CODE_SIGN_IDENTITY = ""; 218 | CODE_SIGN_STYLE = Manual; 219 | CURRENT_PROJECT_VERSION = 1; 220 | DEFINES_MODULE = YES; 221 | DEVELOPMENT_TEAM = ""; 222 | DYLIB_COMPATIBILITY_VERSION = 1; 223 | DYLIB_CURRENT_VERSION = 1; 224 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 225 | GCC_C_LANGUAGE_STANDARD = gnu11; 226 | INFOPLIST_FILE = boost/Info.plist; 227 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 228 | IPHONEOS_DEPLOYMENT_TARGET = 11.0; 229 | LD_RUNPATH_SEARCH_PATHS = ( 230 | "$(inherited)", 231 | "@executable_path/Frameworks", 232 | "@loader_path/Frameworks", 233 | ); 234 | MTL_FAST_MATH = YES; 235 | PRODUCT_BUNDLE_IDENTIFIER = com.cogosense.boost; 236 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; 237 | PROVISIONING_PROFILE_SPECIFIER = ""; 238 | SKIP_INSTALL = YES; 239 | TARGETED_DEVICE_FAMILY = "1,2"; 240 | VERSIONING_SYSTEM = "apple-generic"; 241 | VERSION_INFO_PREFIX = ""; 242 | }; 243 | name = Release; 244 | }; 245 | F1C800311D2F07F2004CFAAB /* Debug */ = { 246 | isa = XCBuildConfiguration; 247 | buildSettings = { 248 | ALWAYS_SEARCH_USER_PATHS = NO; 249 | BITCODE_GENERATION_MODE = marker; 250 | CLANG_ANALYZER_NONNULL = YES; 251 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 252 | CLANG_CXX_LIBRARY = "libc++"; 253 | CLANG_ENABLE_MODULES = YES; 254 | CLANG_ENABLE_OBJC_ARC = YES; 255 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 256 | CLANG_WARN_BOOL_CONVERSION = YES; 257 | CLANG_WARN_COMMA = YES; 258 | CLANG_WARN_CONSTANT_CONVERSION = YES; 259 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 260 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 261 | CLANG_WARN_EMPTY_BODY = YES; 262 | CLANG_WARN_ENUM_CONVERSION = YES; 263 | CLANG_WARN_INFINITE_RECURSION = YES; 264 | CLANG_WARN_INT_CONVERSION = YES; 265 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 266 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 267 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 268 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 269 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 270 | CLANG_WARN_STRICT_PROTOTYPES = YES; 271 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 272 | CLANG_WARN_UNREACHABLE_CODE = YES; 273 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 274 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 275 | CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)"; 276 | COPY_PHASE_STRIP = NO; 277 | DEBUG_INFORMATION_FORMAT = dwarf; 278 | ENABLE_BITCODE = YES; 279 | ENABLE_STRICT_OBJC_MSGSEND = YES; 280 | ENABLE_TESTABILITY = YES; 281 | GCC_C_LANGUAGE_STANDARD = gnu99; 282 | GCC_DYNAMIC_NO_PIC = NO; 283 | GCC_NO_COMMON_BLOCKS = YES; 284 | GCC_OPTIMIZATION_LEVEL = 0; 285 | GCC_PREPROCESSOR_DEFINITIONS = ( 286 | "DEBUG=1", 287 | "$(inherited)", 288 | ); 289 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 290 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 291 | GCC_WARN_UNDECLARED_SELECTOR = YES; 292 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 293 | GCC_WARN_UNUSED_FUNCTION = YES; 294 | GCC_WARN_UNUSED_VARIABLE = YES; 295 | IPHONEOS_DEPLOYMENT_TARGET = 11.0; 296 | MTL_ENABLE_DEBUG_INFO = YES; 297 | ONLY_ACTIVE_ARCH = YES; 298 | SDKROOT = iphoneos; 299 | SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; 300 | TARGETED_DEVICE_FAMILY = "1,2"; 301 | }; 302 | name = Debug; 303 | }; 304 | F1C800321D2F07F2004CFAAB /* Release */ = { 305 | isa = XCBuildConfiguration; 306 | buildSettings = { 307 | ALWAYS_SEARCH_USER_PATHS = NO; 308 | BITCODE_GENERATION_MODE = bitcode; 309 | CLANG_ANALYZER_NONNULL = YES; 310 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 311 | CLANG_CXX_LIBRARY = "libc++"; 312 | CLANG_ENABLE_MODULES = YES; 313 | CLANG_ENABLE_OBJC_ARC = YES; 314 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 315 | CLANG_WARN_BOOL_CONVERSION = YES; 316 | CLANG_WARN_COMMA = YES; 317 | CLANG_WARN_CONSTANT_CONVERSION = YES; 318 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 319 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 320 | CLANG_WARN_EMPTY_BODY = YES; 321 | CLANG_WARN_ENUM_CONVERSION = YES; 322 | CLANG_WARN_INFINITE_RECURSION = YES; 323 | CLANG_WARN_INT_CONVERSION = YES; 324 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 325 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 326 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 327 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 328 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 329 | CLANG_WARN_STRICT_PROTOTYPES = YES; 330 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 331 | CLANG_WARN_UNREACHABLE_CODE = YES; 332 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 333 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 334 | CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)"; 335 | COPY_PHASE_STRIP = NO; 336 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 337 | ENABLE_BITCODE = YES; 338 | ENABLE_NS_ASSERTIONS = NO; 339 | ENABLE_STRICT_OBJC_MSGSEND = YES; 340 | GCC_C_LANGUAGE_STANDARD = gnu99; 341 | GCC_NO_COMMON_BLOCKS = YES; 342 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 343 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 344 | GCC_WARN_UNDECLARED_SELECTOR = YES; 345 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 346 | GCC_WARN_UNUSED_FUNCTION = YES; 347 | GCC_WARN_UNUSED_VARIABLE = YES; 348 | IPHONEOS_DEPLOYMENT_TARGET = 11.0; 349 | MTL_ENABLE_DEBUG_INFO = NO; 350 | SDKROOT = iphoneos; 351 | SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; 352 | TARGETED_DEVICE_FAMILY = "1,2"; 353 | VALIDATE_PRODUCT = YES; 354 | }; 355 | name = Release; 356 | }; 357 | F1C800381D2F0811004CFAAB /* Debug */ = { 358 | isa = XCBuildConfiguration; 359 | buildSettings = { 360 | DEBUGGING_SYMBOLS = YES; 361 | DEBUG_INFORMATION_FORMAT = dwarf; 362 | GCC_GENERATE_DEBUGGING_SYMBOLS = YES; 363 | GCC_OPTIMIZATION_LEVEL = 0; 364 | OTHER_CFLAGS = ""; 365 | OTHER_LDFLAGS = ""; 366 | PRODUCT_NAME = "$(TARGET_NAME)"; 367 | }; 368 | name = Debug; 369 | }; 370 | F1C800391D2F0811004CFAAB /* Release */ = { 371 | isa = XCBuildConfiguration; 372 | buildSettings = { 373 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 374 | OTHER_CFLAGS = ""; 375 | OTHER_LDFLAGS = ""; 376 | PRODUCT_NAME = "$(TARGET_NAME)"; 377 | }; 378 | name = Release; 379 | }; 380 | /* End XCBuildConfiguration section */ 381 | 382 | /* Begin XCConfigurationList section */ 383 | F1AB372F21840B40000DB450 /* Build configuration list for PBXNativeTarget "boost" */ = { 384 | isa = XCConfigurationList; 385 | buildConfigurations = ( 386 | F1AB373021840B40000DB450 /* Debug */, 387 | F1AB373121840B40000DB450 /* Release */, 388 | ); 389 | defaultConfigurationIsVisible = 0; 390 | defaultConfigurationName = Release; 391 | }; 392 | F1C800251D2F07F2004CFAAB /* Build configuration list for PBXProject "iOSBoostFramework" */ = { 393 | isa = XCConfigurationList; 394 | buildConfigurations = ( 395 | F1C800311D2F07F2004CFAAB /* Debug */, 396 | F1C800321D2F07F2004CFAAB /* Release */, 397 | ); 398 | defaultConfigurationIsVisible = 0; 399 | defaultConfigurationName = Release; 400 | }; 401 | F1C800371D2F0811004CFAAB /* Build configuration list for PBXLegacyTarget "boost.framework" */ = { 402 | isa = XCConfigurationList; 403 | buildConfigurations = ( 404 | F1C800381D2F0811004CFAAB /* Debug */, 405 | F1C800391D2F0811004CFAAB /* Release */, 406 | ); 407 | defaultConfigurationIsVisible = 0; 408 | defaultConfigurationName = Release; 409 | }; 410 | /* End XCConfigurationList section */ 411 | }; 412 | rootObject = F1C800221D2F07F2004CFAAB /* Project object */; 413 | } 414 | -------------------------------------------------------------------------------- /iOSBoostFramework.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /iOSBoostFramework.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /iOSBoostFramework.xcodeproj/xcshareddata/xcschemes/boost.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 34 | 35 | 45 | 46 | 52 | 53 | 54 | 55 | 56 | 57 | 63 | 64 | 70 | 71 | 72 | 73 | 75 | 76 | 79 | 80 | 81 | -------------------------------------------------------------------------------- /patches/1_53_0/cas64strong_hpp.patch: -------------------------------------------------------------------------------- 1 | --- boost_1_53_0/boost/atomic/detail/cas64strong.hpp 2012-12-15 10:28:27.000000000 -0800 2 | +++ boost_1_53_0.patched/boost/atomic/detail/cas64strong.hpp 2014-03-11 23:39:41.000000000 -0700 3 | @@ -220,7 +220,7 @@ 4 | { 5 | value_type original = load(memory_order_relaxed); 6 | do { 7 | - } while (!compare_exchange_weak(original, original + v, order, memory_order_relaxed)); 8 | + } while (!compare_exchange_weak(original, (char*)original + v, order, memory_order_relaxed)); 9 | return original; 10 | } 11 | 12 | @@ -229,7 +229,7 @@ 13 | { 14 | value_type original = load(memory_order_relaxed); 15 | do { 16 | - } while (!compare_exchange_weak(original, original - v, order, memory_order_relaxed)); 17 | + } while (!compare_exchange_weak(original, (char*)original - v, order, memory_order_relaxed)); 18 | return original; 19 | } 20 | 21 | -------------------------------------------------------------------------------- /patches/1_53_0/date_hpp.patch: -------------------------------------------------------------------------------- 1 | --- boost_1_53_0/boost/date_time/date.hpp 2012-09-22 15:33:33.000000000 -0700 2 | +++ boost_1_53_0.patched/boost/date_time/date.hpp 2014-03-12 13:45:07.000000000 -0700 3 | @@ -177,7 +177,7 @@ 4 | { 5 | return date_type(date_rep_type(days_) + dd.get_rep()); 6 | } 7 | - return date_type(date_rep_type(days_) + dd.days()); 8 | + return date_type(date_rep_type(days_) + static_cast(dd.days())); 9 | } 10 | date_type operator+=(const duration_type& dd) 11 | { 12 | -------------------------------------------------------------------------------- /patches/1_53_0/duration_hpp.patch: -------------------------------------------------------------------------------- 1 | --- boost_1_53_0/boost/chrono/duration.hpp 2012-12-01 07:22:34.000000000 -0800 2 | +++ boost_1_53_0.patched/boost/chrono/duration.hpp 2014-03-12 00:45:38.000000000 -0700 3 | @@ -663,7 +663,7 @@ 4 | template 5 | struct duration_eq 6 | { 7 | - BOOST_CONSTEXPR bool operator()(const LhsDuration& lhs, const RhsDuration& rhs) 8 | + BOOST_CONSTEXPR bool operator()(const LhsDuration& lhs, const RhsDuration& rhs) const 9 | { 10 | typedef typename common_type::type CD; 11 | return CD(lhs).count() == CD(rhs).count(); 12 | @@ -673,7 +673,7 @@ 13 | template 14 | struct duration_eq 15 | { 16 | - BOOST_CONSTEXPR bool operator()(const LhsDuration& lhs, const LhsDuration& rhs) 17 | + BOOST_CONSTEXPR bool operator()(const LhsDuration& lhs, const LhsDuration& rhs) const 18 | { 19 | return lhs.count() == rhs.count(); 20 | } 21 | @@ -682,7 +682,7 @@ 22 | template 23 | struct duration_lt 24 | { 25 | - BOOST_CONSTEXPR bool operator()(const LhsDuration& lhs, const RhsDuration& rhs) 26 | + BOOST_CONSTEXPR bool operator()(const LhsDuration& lhs, const RhsDuration& rhs) const 27 | { 28 | typedef typename common_type::type CD; 29 | return CD(lhs).count() < CD(rhs).count(); 30 | @@ -692,7 +692,7 @@ 31 | template 32 | struct duration_lt 33 | { 34 | - BOOST_CONSTEXPR bool operator()(const LhsDuration& lhs, const LhsDuration& rhs) 35 | + BOOST_CONSTEXPR bool operator()(const LhsDuration& lhs, const LhsDuration& rhs) const 36 | { 37 | return lhs.count() < rhs.count(); 38 | } 39 | -------------------------------------------------------------------------------- /patches/1_53_0/floating_point_comparison_hpp.patch: -------------------------------------------------------------------------------- 1 | --- boost_1_51_0/boost/test/floating_point_comparison.hpp 2009-11-28 01:19:18.000000000 -0800 2 | +++ boost_1_51_0.patched/boost/test/floating_point_comparison.hpp 2013-06-09 23:11:33.000000000 -0700 3 | @@ -247,10 +247,26 @@ 4 | } 5 | }; 6 | 7 | +/* 8 | + * clang generates unused variable warnings for: 9 | + * floating_point_comparison.hpp:251:25: Unused variable 'check_is_close' 10 | + * floating_point_comparison.hpp:273:25: Unused variable 'check_is_small' 11 | + * 12 | + * This is the workaround 13 | + */ 14 | +#ifdef __clang__ 15 | +#pragma clang diagnostic push 16 | +#pragma clang diagnostic ignored "-Wunused-variable" 17 | +#endif 18 | + 19 | namespace { 20 | check_is_close_t const& check_is_close = unit_test::ut_detail::static_constant::value; 21 | } 22 | 23 | +#ifdef __clang__ 24 | +#pragma clang diagnostic pop 25 | +#endif 26 | + 27 | //____________________________________________________________________________// 28 | 29 | // ************************************************************************** // 30 | @@ -269,10 +285,26 @@ 31 | } 32 | }; 33 | 34 | +/* 35 | + * clang generates unused variable warnings for: 36 | + * floating_point_comparison.hpp:251:25: Unused variable 'check_is_close' 37 | + * floating_point_comparison.hpp:273:25: Unused variable 'check_is_small' 38 | + * 39 | + * This is the workaround 40 | + */ 41 | +#ifdef __clang__ 42 | +#pragma clang diagnostic push 43 | +#pragma clang diagnostic ignored "-Wunused-variable" 44 | +#endif 45 | + 46 | namespace { 47 | check_is_small_t const& check_is_small = unit_test::ut_detail::static_constant::value; 48 | } 49 | 50 | +#ifdef __clang__ 51 | +#pragma clang diagnostic pop 52 | +#endif 53 | + 54 | //____________________________________________________________________________// 55 | 56 | } // namespace test_tools 57 | -------------------------------------------------------------------------------- /patches/1_53_0/future_hpp.patch: -------------------------------------------------------------------------------- 1 | --- boost_1_53_0/boost/thread/future.hpp 2012-12-16 11:01:45.000000000 -0800 2 | +++ boost_1_53_0.patched/boost/thread/future.hpp 2014-03-12 12:00:43.000000000 -0700 3 | @@ -1184,28 +1184,26 @@ 4 | } 5 | 6 | template 7 | - unsigned wait_for_any(F1& f1,F2& f2,F3& f3) 8 | + void wait_for_any(F1& f1,F2& f2,F3& f3) 9 | { 10 | detail::future_waiter waiter; 11 | waiter.add(f1); 12 | waiter.add(f2); 13 | waiter.add(f3); 14 | - return waiter.wait(); 15 | } 16 | 17 | template 18 | - unsigned wait_for_any(F1& f1,F2& f2,F3& f3,F4& f4) 19 | + void wait_for_any(F1& f1,F2& f2,F3& f3,F4& f4) 20 | { 21 | detail::future_waiter waiter; 22 | waiter.add(f1); 23 | waiter.add(f2); 24 | waiter.add(f3); 25 | waiter.add(f4); 26 | - return waiter.wait(); 27 | } 28 | 29 | template 30 | - unsigned wait_for_any(F1& f1,F2& f2,F3& f3,F4& f4,F5& f5) 31 | + void wait_for_any(F1& f1,F2& f2,F3& f3,F4& f4,F5& f5) 32 | { 33 | detail::future_waiter waiter; 34 | waiter.add(f1); 35 | @@ -1213,7 +1211,6 @@ 36 | waiter.add(f3); 37 | waiter.add(f4); 38 | waiter.add(f5); 39 | - return waiter.wait(); 40 | } 41 | 42 | template 43 | -------------------------------------------------------------------------------- /patches/1_53_0/gregorian_calendar_ipp.patch: -------------------------------------------------------------------------------- 1 | --- boost_1_53_0/boost/date_time/gregorian_calendar.ipp 2012-09-22 09:04:10.000000000 -0700 2 | +++ boost_1_53_0.patched/boost/date_time/gregorian_calendar.ipp 2014-03-12 11:47:16.000000000 -0700 3 | @@ -38,10 +38,10 @@ 4 | BOOST_DATE_TIME_INLINE 5 | int 6 | gregorian_calendar_base::week_number(const ymd_type& ymd) { 7 | - unsigned long julianbegin = julian_day_number(ymd_type(ymd.year,1,1)); 8 | - unsigned long juliantoday = julian_day_number(ymd); 9 | - unsigned long day = (julianbegin + 3) % 7; 10 | - unsigned long week = (juliantoday + day - julianbegin + 4)/7; 11 | + int julianbegin = julian_day_number(ymd_type(ymd.year,1,1)); 12 | + int juliantoday = julian_day_number(ymd); 13 | + int day = (julianbegin + 3) % 7; 14 | + int week = (juliantoday + day - julianbegin + 4)/7; 15 | 16 | if ((week >= 1) && (week <= 52)) { 17 | return week; 18 | @@ -78,7 +78,7 @@ 19 | unsigned short a = static_cast((14-ymd.month)/12); 20 | unsigned short y = static_cast(ymd.year + 4800 - a); 21 | unsigned short m = static_cast(ymd.month + 12*a - 3); 22 | - unsigned long d = ymd.day + ((153*m + 2)/5) + 365*y + (y/4) - (y/100) + (y/400) - 32045; 23 | + date_int_type_ d = ymd.day + ((153*m + 2)/5) + 365*y + (y/4) - (y/100) + (y/400) - 32045; 24 | return d; 25 | } 26 | 27 | -------------------------------------------------------------------------------- /patches/1_53_0/int_adapter_hpp.patch: -------------------------------------------------------------------------------- 1 | --- boost_1_53_0/boost/date_time/int_adapter.hpp 2008-11-12 11:37:53.000000000 -0800 2 | +++ boost_1_53_0.patched/boost/date_time/int_adapter.hpp 2014-03-12 14:04:46.000000000 -0700 3 | @@ -246,7 +246,14 @@ 4 | return *this; 5 | } 6 | } 7 | +#ifdef __clang__ 8 | +#pragma clang diagnostic push 9 | +#pragma clang diagnostic ignored "-Wconversion" 10 | +#endif 11 | return int_adapter(value_ + rhs); 12 | +#ifdef __clang__ 13 | +#pragma clang diagnostic pop 14 | +#endif 15 | } 16 | 17 | /*! Operator allows for subtracting dissimilar int_adapter types. 18 | -------------------------------------------------------------------------------- /patches/1_53_0/plain_report_formatter_ipp.patch: -------------------------------------------------------------------------------- 1 | --- boost_1_53_0/boost/test/impl/plain_report_formatter.ipp 2008-10-13 01:20:26.000000000 -0700 2 | +++ boost_1_53_0.patched/boost/test/impl/plain_report_formatter.ipp 2014-03-12 14:15:44.000000000 -0700 3 | @@ -62,7 +62,7 @@ 4 | const_string name, const_string res ) 5 | { 6 | if( v > 0 ) { 7 | - ostr << std::setw( indent ) << "" 8 | + ostr << std::setw( (int)indent ) << "" 9 | << v << ' ' << name << ( v != 1 ? "s" : "" ); 10 | if( total > 0 ) 11 | ostr << " out of " << total; 12 | @@ -112,7 +112,7 @@ 13 | else 14 | descr = "failed"; 15 | 16 | - ostr << std::setw( m_indent ) << "" 17 | + ostr << std::setw( (int)m_indent ) << "" 18 | << "Test " << (tu.p_type == tut_case ? "case " : "suite " ) << quote() << tu.p_name << ' ' << descr; 19 | 20 | if( tr.p_skipped ) { 21 | -------------------------------------------------------------------------------- /patches/1_53_0/posix_time_conversion_hpp.patch: -------------------------------------------------------------------------------- 1 | --- boost_1_53_0/boost/date_time/posix_time/conversion.hpp 2014-03-12 12:38:00.000000000 -0700 2 | +++ boost_1_53_0.patched/boost/date_time/posix_time/conversion.hpp 2014-03-12 12:38:21.000000000 -0700 3 | @@ -27,7 +27,7 @@ 4 | ptime from_time_t(std::time_t t) 5 | { 6 | ptime start(gregorian::date(1970,1,1)); 7 | - return start + seconds(static_cast(t)); 8 | + return start + seconds(static_cast(t)); 9 | } 10 | 11 | //! Convert a time to a tm structure truncating any fractional seconds 12 | -------------------------------------------------------------------------------- /patches/1_53_0/posix_time_duration_hpp.patch: -------------------------------------------------------------------------------- 1 | --- boost_1_53_0/boost/date_time/posix_time/posix_time_duration.hpp 2008-02-27 12:00:24.000000000 -0800 2 | +++ boost_1_53_0.patched/boost/date_time/posix_time/posix_time_duration.hpp 2014-03-12 11:26:19.000000000 -0700 3 | @@ -20,7 +20,7 @@ 4 | class hours : public time_duration 5 | { 6 | public: 7 | - explicit hours(long h) : 8 | + explicit hours(hour_type h) : 9 | time_duration(h,0,0) 10 | {} 11 | }; 12 | @@ -31,7 +31,7 @@ 13 | class minutes : public time_duration 14 | { 15 | public: 16 | - explicit minutes(long m) : 17 | + explicit minutes(min_type m) : 18 | time_duration(0,m,0) 19 | {} 20 | }; 21 | @@ -42,7 +42,7 @@ 22 | class seconds : public time_duration 23 | { 24 | public: 25 | - explicit seconds(long s) : 26 | + explicit seconds(sec_type s) : 27 | time_duration(0,0,s) 28 | {} 29 | }; 30 | -------------------------------------------------------------------------------- /patches/1_53_0/time_system_counted_hpp.patch: -------------------------------------------------------------------------------- 1 | --- boost_1_53_0/boost/date_time/time_system_counted.hpp 2008-02-27 12:00:24.000000000 -0800 2 | +++ boost_1_53_0.patched/boost/date_time/time_system_counted.hpp 2014-03-12 13:13:40.000000000 -0700 3 | @@ -61,7 +61,7 @@ 4 | } 5 | } 6 | //int_type day_count() const 7 | - unsigned long day_count() const 8 | + typename calendar_type::date_int_type day_count() const 9 | { 10 | /* resolution_traits::as_number returns a boost::int64_t & 11 | * frac_sec_per_day is also a boost::int64_t so, naturally, 12 | @@ -75,7 +75,7 @@ 13 | * The division operation will then return a value of 106751991 - 14 | * easily fitting in an unsigned long. 15 | */ 16 | - return static_cast(resolution_traits::as_number(time_count_) / frac_sec_per_day()); 17 | + return static_cast(resolution_traits::as_number(time_count_) / frac_sec_per_day()); 18 | } 19 | int_type time_count() const 20 | { 21 | -------------------------------------------------------------------------------- /patches/1_53_0/unit_test_suite_impl_hpp.patch: -------------------------------------------------------------------------------- 1 | --- boost_1_53_0/boost/test/unit_test_suite_impl.hpp 2009-07-03 23:36:59.000000000 -0700 2 | +++ boost_1_53_0.patched/boost/test/unit_test_suite_impl.hpp 2014-03-12 14:26:32.000000000 -0700 3 | @@ -74,7 +74,7 @@ 4 | readwrite_property p_expected_failures; // number of expected failures in this test unit 5 | mutable readwrite_property p_enabled; // enabled status for this unit 6 | 7 | - void increase_exp_fail( unsigned num ); 8 | + void increase_exp_fail( counter_t num ); 9 | 10 | protected: 11 | ~test_unit(); 12 | -------------------------------------------------------------------------------- /patches/1_53_0/unit_test_suite_ipp.patch: -------------------------------------------------------------------------------- 1 | --- boost_1_53_0/boost/test/impl/unit_test_suite.ipp 2009-07-03 23:36:59.000000000 -0700 2 | +++ boost_1_53_0.patched/boost/test/impl/unit_test_suite.ipp 2014-03-12 14:27:03.000000000 -0700 3 | @@ -89,7 +89,7 @@ 4 | //____________________________________________________________________________// 5 | 6 | void 7 | -test_unit::increase_exp_fail( unsigned num ) 8 | +test_unit::increase_exp_fail( counter_t num ) 9 | { 10 | p_expected_failures.value += num; 11 | 12 | -------------------------------------------------------------------------------- /patches/1_53_0/xtime_hpp.patch: -------------------------------------------------------------------------------- 1 | --- boost_1_53_0/boost/thread/xtime.hpp 2012-12-02 01:22:33.000000000 -0800 2 | +++ boost_1_53_0.patched/boost/thread/xtime.hpp 2014-03-12 12:44:34.000000000 -0700 3 | @@ -47,7 +47,7 @@ 4 | operator system_time() const 5 | { 6 | return boost::posix_time::from_time_t(0)+ 7 | - boost::posix_time::seconds(static_cast(sec))+ 8 | + boost::posix_time::seconds(static_cast(sec))+ 9 | #ifdef BOOST_DATE_TIME_HAS_NANOSECONDS 10 | boost::posix_time::nanoseconds(nsec); 11 | #else 12 | -------------------------------------------------------------------------------- /patches/1_55_0/clang-darwin_jam.patch: -------------------------------------------------------------------------------- 1 | --- boost_1_55_0/tools/build/v2/tools/clang-darwin.jam 2010-05-08 17:25:36.000000000 -0700 2 | +++ boost_1_55_0.patched/tools/build/v2/tools/clang-darwin.jam 2015-06-09 23:00:22.000000000 -0700 3 | @@ -83,7 +83,7 @@ 4 | 5 | toolset.flags clang-darwin.compile OPTIONS off : -fno-inline ; 6 | toolset.flags clang-darwin.compile OPTIONS on : -Wno-inline ; 7 | -toolset.flags clang-darwin.compile OPTIONS full : -finline-functions -Wno-inline ; 8 | +toolset.flags clang-darwin.compile OPTIONS full : -Wno-inline ; 9 | 10 | toolset.flags clang-darwin.compile OPTIONS off : -w ; 11 | toolset.flags clang-darwin.compile OPTIONS on : -Wall ; 12 | -------------------------------------------------------------------------------- /patches/1_55_0/date_hpp.patch: -------------------------------------------------------------------------------- 1 | --- boost_1_55_0/boost/date_time/date.hpp 2012-09-22 15:33:33.000000000 -0700 2 | +++ boost_1_55_0.patched/boost/date_time/date.hpp 2014-03-12 13:46:11.000000000 -0700 3 | @@ -177,7 +177,7 @@ 4 | { 5 | return date_type(date_rep_type(days_) + dd.get_rep()); 6 | } 7 | - return date_type(date_rep_type(days_) + dd.days()); 8 | + return date_type(date_rep_type(days_) + static_cast(dd.days())); 9 | } 10 | date_type operator+=(const duration_type& dd) 11 | { 12 | -------------------------------------------------------------------------------- /patches/1_55_0/future_hpp.patch: -------------------------------------------------------------------------------- 1 | --- boost_1_55_0/boost/thread/future.hpp 2013-11-03 12:43:42.000000000 -0800 2 | +++ boost_1_55_0.patched/boost/thread/future.hpp 2014-08-10 12:46:46.000000000 -0700 3 | @@ -1232,7 +1232,7 @@ 4 | } 5 | 6 | template 7 | - unsigned wait_for_any(F1& f1,F2& f2,F3& f3) 8 | + unsigned long wait_for_any(F1& f1,F2& f2,F3& f3) 9 | { 10 | detail::future_waiter waiter; 11 | waiter.add(f1); 12 | @@ -1242,7 +1242,7 @@ 13 | } 14 | 15 | template 16 | - unsigned wait_for_any(F1& f1,F2& f2,F3& f3,F4& f4) 17 | + unsigned long wait_for_any(F1& f1,F2& f2,F3& f3,F4& f4) 18 | { 19 | detail::future_waiter waiter; 20 | waiter.add(f1); 21 | @@ -1253,7 +1253,7 @@ 22 | } 23 | 24 | template 25 | - unsigned wait_for_any(F1& f1,F2& f2,F3& f3,F4& f4,F5& f5) 26 | + unsigned long wait_for_any(F1& f1,F2& f2,F3& f3,F4& f4,F5& f5) 27 | { 28 | detail::future_waiter waiter; 29 | waiter.add(f1); 30 | -------------------------------------------------------------------------------- /patches/1_55_0/gregorian_calendar_ipp.patch: -------------------------------------------------------------------------------- 1 | --- boost_1_55_0/boost/date_time/gregorian_calendar.ipp 2012-09-22 09:04:10.000000000 -0700 2 | +++ boost_1_55_0.patched/boost/date_time/gregorian_calendar.ipp 2014-03-12 11:49:58.000000000 -0700 3 | @@ -38,10 +38,10 @@ 4 | BOOST_DATE_TIME_INLINE 5 | int 6 | gregorian_calendar_base::week_number(const ymd_type& ymd) { 7 | - unsigned long julianbegin = julian_day_number(ymd_type(ymd.year,1,1)); 8 | - unsigned long juliantoday = julian_day_number(ymd); 9 | - unsigned long day = (julianbegin + 3) % 7; 10 | - unsigned long week = (juliantoday + day - julianbegin + 4)/7; 11 | + int julianbegin = julian_day_number(ymd_type(ymd.year,1,1)); 12 | + int juliantoday = julian_day_number(ymd); 13 | + int day = (julianbegin + 3) % 7; 14 | + int week = (juliantoday + day - julianbegin + 4)/7; 15 | 16 | if ((week >= 1) && (week <= 52)) { 17 | return week; 18 | @@ -78,7 +78,7 @@ 19 | unsigned short a = static_cast((14-ymd.month)/12); 20 | unsigned short y = static_cast(ymd.year + 4800 - a); 21 | unsigned short m = static_cast(ymd.month + 12*a - 3); 22 | - unsigned long d = ymd.day + ((153*m + 2)/5) + 365*y + (y/4) - (y/100) + (y/400) - 32045; 23 | + date_int_type_ d = ymd.day + ((153*m + 2)/5) + 365*y + (y/4) - (y/100) + (y/400) - 32045; 24 | return d; 25 | } 26 | 27 | -------------------------------------------------------------------------------- /patches/1_55_0/int_adapter_hpp.patch: -------------------------------------------------------------------------------- 1 | --- boost_1_55_0/boost/date_time/int_adapter.hpp 2008-11-12 11:37:53.000000000 -0800 2 | +++ boost_1_55_0.patched/boost/date_time/int_adapter.hpp 2014-03-12 14:06:42.000000000 -0700 3 | @@ -230,7 +230,14 @@ 4 | return int_adapter::neg_infinity(); 5 | } 6 | } 7 | +#ifdef __clang__ 8 | +#pragma clang diagnostic push 9 | +#pragma clang diagnostic ignored "-Wconversion" 10 | +#endif 11 | return int_adapter(value_ + rhs.as_number()); 12 | +#ifdef __clang__ 13 | +#pragma clang diagnostic pop 14 | +#endif 15 | } 16 | 17 | int_adapter operator+(const int_type rhs) const 18 | -------------------------------------------------------------------------------- /patches/1_55_0/plain_report_formatter_ipp.patch: -------------------------------------------------------------------------------- 1 | --- boost_1_55_0/boost/test/impl/plain_report_formatter.ipp 2008-10-13 01:20:26.000000000 -0700 2 | +++ boost_1_55_0.patched/boost/test/impl/plain_report_formatter.ipp 2014-03-12 14:17:46.000000000 -0700 3 | @@ -62,7 +62,7 @@ 4 | const_string name, const_string res ) 5 | { 6 | if( v > 0 ) { 7 | - ostr << std::setw( indent ) << "" 8 | + ostr << std::setw( (int)indent ) << "" 9 | << v << ' ' << name << ( v != 1 ? "s" : "" ); 10 | if( total > 0 ) 11 | ostr << " out of " << total; 12 | @@ -112,7 +112,7 @@ 13 | else 14 | descr = "failed"; 15 | 16 | - ostr << std::setw( m_indent ) << "" 17 | + ostr << std::setw( (int)m_indent ) << "" 18 | << "Test " << (tu.p_type == tut_case ? "case " : "suite " ) << quote() << tu.p_name << ' ' << descr; 19 | 20 | if( tr.p_skipped ) { 21 | -------------------------------------------------------------------------------- /patches/1_55_0/posix_time_conversion_hpp.patch: -------------------------------------------------------------------------------- 1 | --- boost_1_55_0/boost/date_time/posix_time/conversion.hpp 2010-06-09 11:10:13.000000000 -0700 2 | +++ boost_1_55_0.patched/boost/date_time/posix_time/conversion.hpp 2014-03-12 12:40:31.000000000 -0700 3 | @@ -27,7 +27,7 @@ 4 | ptime from_time_t(std::time_t t) 5 | { 6 | ptime start(gregorian::date(1970,1,1)); 7 | - return start + seconds(static_cast(t)); 8 | + return start + seconds(static_cast(t)); 9 | } 10 | 11 | //! Convert a time to a tm structure truncating any fractional seconds 12 | -------------------------------------------------------------------------------- /patches/1_55_0/posix_time_duration_hpp.patch: -------------------------------------------------------------------------------- 1 | --- boost_1_55_0/boost/date_time/posix_time/posix_time_duration.hpp 2008-02-27 12:00:24.000000000 -0800 2 | +++ boost_1_55_0.patched/boost/date_time/posix_time/posix_time_duration.hpp 2014-03-12 11:28:15.000000000 -0700 3 | @@ -20,7 +20,7 @@ 4 | class hours : public time_duration 5 | { 6 | public: 7 | - explicit hours(long h) : 8 | + explicit hours(hour_type h) : 9 | time_duration(h,0,0) 10 | {} 11 | }; 12 | @@ -31,7 +31,7 @@ 13 | class minutes : public time_duration 14 | { 15 | public: 16 | - explicit minutes(long m) : 17 | + explicit minutes(min_type m) : 18 | time_duration(0,m,0) 19 | {} 20 | }; 21 | @@ -42,7 +42,7 @@ 22 | class seconds : public time_duration 23 | { 24 | public: 25 | - explicit seconds(long s) : 26 | + explicit seconds(sec_type s) : 27 | time_duration(0,0,s) 28 | {} 29 | }; 30 | -------------------------------------------------------------------------------- /patches/1_55_0/time_system_counted_hpp.patch: -------------------------------------------------------------------------------- 1 | --- boost_1_55_0/boost/date_time/time_system_counted.hpp 2008-02-27 12:00:24.000000000 -0800 2 | +++ boost_1_55_0.patched/boost/date_time/time_system_counted.hpp 2014-03-12 13:14:20.000000000 -0700 3 | @@ -61,7 +61,7 @@ 4 | } 5 | } 6 | //int_type day_count() const 7 | - unsigned long day_count() const 8 | + typename calendar_type::date_int_type day_count() const 9 | { 10 | /* resolution_traits::as_number returns a boost::int64_t & 11 | * frac_sec_per_day is also a boost::int64_t so, naturally, 12 | @@ -75,7 +75,7 @@ 13 | * The division operation will then return a value of 106751991 - 14 | * easily fitting in an unsigned long. 15 | */ 16 | - return static_cast(resolution_traits::as_number(time_count_) / frac_sec_per_day()); 17 | + return static_cast(resolution_traits::as_number(time_count_) / frac_sec_per_day()); 18 | } 19 | int_type time_count() const 20 | { 21 | -------------------------------------------------------------------------------- /patches/1_55_0/unit_test_suite_impl_hpp.patch: -------------------------------------------------------------------------------- 1 | --- boost_1_55_0/boost/test/unit_test_suite_impl.hpp 2009-07-03 23:36:59.000000000 -0700 2 | +++ boost_1_55_0.patched/boost/test/unit_test_suite_impl.hpp 2014-03-12 14:30:11.000000000 -0700 3 | @@ -74,7 +74,7 @@ 4 | readwrite_property p_expected_failures; // number of expected failures in this test unit 5 | mutable readwrite_property p_enabled; // enabled status for this unit 6 | 7 | - void increase_exp_fail( unsigned num ); 8 | + void increase_exp_fail( counter_t num ); 9 | 10 | protected: 11 | ~test_unit(); 12 | -------------------------------------------------------------------------------- /patches/1_55_0/unit_test_suite_ipp.patch: -------------------------------------------------------------------------------- 1 | --- boost_1_55_0/boost/test/impl/unit_test_suite.ipp 2009-07-03 23:36:59.000000000 -0700 2 | +++ boost_1_55_0.patched/boost/test/impl/unit_test_suite.ipp 2014-03-12 14:30:55.000000000 -0700 3 | @@ -89,7 +89,7 @@ 4 | //____________________________________________________________________________// 5 | 6 | void 7 | -test_unit::increase_exp_fail( unsigned num ) 8 | +test_unit::increase_exp_fail( counter_t num ) 9 | { 10 | p_expected_failures.value += num; 11 | 12 | -------------------------------------------------------------------------------- /patches/1_55_0/xtime_hpp.patch: -------------------------------------------------------------------------------- 1 | --- boost_1_55_0/boost/thread/xtime.hpp 2012-12-02 01:22:33.000000000 -0800 2 | +++ boost_1_55_0.patched/boost/thread/xtime.hpp 2014-03-12 12:46:08.000000000 -0700 3 | @@ -47,7 +47,7 @@ 4 | operator system_time() const 5 | { 6 | return boost::posix_time::from_time_t(0)+ 7 | - boost::posix_time::seconds(static_cast(sec))+ 8 | + boost::posix_time::seconds(static_cast(sec))+ 9 | #ifdef BOOST_DATE_TIME_HAS_NANOSECONDS 10 | boost::posix_time::nanoseconds(nsec); 11 | #else 12 | -------------------------------------------------------------------------------- /patches/1_58_0/clang-darwin_jam.patch: -------------------------------------------------------------------------------- 1 | --- boost_1_58_0/tools/build/src/tools/clang-darwin.jam 2015-04-04 10:25:07.000000000 -0700 2 | +++ boost_1_58_0.patched/tools/build/src/tools/clang-darwin.jam 2015-06-11 17:02:27.000000000 -0700 3 | @@ -83,7 +83,7 @@ 4 | 5 | toolset.flags clang-darwin.compile OPTIONS off : -fno-inline ; 6 | toolset.flags clang-darwin.compile OPTIONS on : -Wno-inline ; 7 | -toolset.flags clang-darwin.compile OPTIONS full : -finline-functions -Wno-inline ; 8 | +toolset.flags clang-darwin.compile OPTIONS full : -Wno-inline ; 9 | 10 | toolset.flags clang-darwin.compile OPTIONS off : -w ; 11 | toolset.flags clang-darwin.compile OPTIONS on : -Wall ; 12 | -------------------------------------------------------------------------------- /patches/1_58_0/conversion_hpp.patch: -------------------------------------------------------------------------------- 1 | --- boost_1_58_0/boost/date_time/posix_time/conversion.hpp 2015-03-03 14:19:01.000000000 -0800 2 | +++ boost_1_58_0.patched/boost/date_time/posix_time/conversion.hpp 2015-06-11 21:57:03.000000000 -0700 3 | @@ -27,7 +27,7 @@ 4 | ptime from_time_t(std::time_t t) 5 | { 6 | ptime start(gregorian::date(1970,1,1)); 7 | - return start + seconds(static_cast(t)); 8 | + return start + seconds(static_cast(t)); 9 | } 10 | 11 | //! Function that converts a ptime into a time_t 12 | -------------------------------------------------------------------------------- /patches/1_58_0/date_hpp.patch: -------------------------------------------------------------------------------- 1 | --- boost_1_58_0/boost/date_time/date.hpp 2015-03-03 14:19:01.000000000 -0800 2 | +++ boost_1_58_0.patched/boost/date_time/date.hpp 2015-06-11 22:04:13.000000000 -0700 3 | @@ -159,7 +159,7 @@ 4 | { 5 | return date_type(date_rep_type(days_) - dd.get_rep()); 6 | } 7 | - return date_type(date_rep_type(days_) - dd.days()); 8 | + return date_type(date_rep_type(days_) - static_cast(dd.days())); 9 | } 10 | date_type operator-=(const duration_type& dd) 11 | { 12 | @@ -177,7 +177,7 @@ 13 | { 14 | return date_type(date_rep_type(days_) + dd.get_rep()); 15 | } 16 | - return date_type(date_rep_type(days_) + dd.days()); 17 | + return date_type(date_rep_type(days_) + static_cast(dd.days())); 18 | } 19 | date_type operator+=(const duration_type& dd) 20 | { 21 | -------------------------------------------------------------------------------- /patches/1_58_0/dst_rules_hpp.patch: -------------------------------------------------------------------------------- 1 | --- boost_1_58_0/boost/date_time/dst_rules.hpp 2015-03-03 14:19:01.000000000 -0800 2 | +++ boost_1_58_0.patched/boost/date_time/dst_rules.hpp 2015-06-11 22:54:05.000000000 -0700 3 | @@ -47,13 +47,13 @@ 4 | static time_is_dst_result 5 | process_local_dst_start_day(const time_duration_type& time_of_day, 6 | unsigned int dst_start_offset_minutes, 7 | - long dst_length_minutes) 8 | + int dst_length_minutes) 9 | { 10 | //std::cout << "here" << std::endl; 11 | if (time_of_day < time_duration_type(0,dst_start_offset_minutes,0)) { 12 | return is_not_in_dst; 13 | } 14 | - long offset = dst_start_offset_minutes + dst_length_minutes; 15 | + int offset = dst_start_offset_minutes + dst_length_minutes; 16 | if (time_of_day >= time_duration_type(0,offset,0)) { 17 | return is_in_dst; 18 | } 19 | @@ -72,7 +72,7 @@ 20 | static time_is_dst_result 21 | process_local_dst_end_day(const time_duration_type& time_of_day, 22 | unsigned int dst_end_offset_minutes, 23 | - long dst_length_minutes) 24 | + int dst_length_minutes) 25 | { 26 | //in US this will be 60 so offset in day is 1,0,0 27 | int offset = dst_end_offset_minutes-dst_length_minutes; 28 | @@ -110,7 +110,7 @@ 29 | dst_start_offset.hours() * 60 + dst_start_offset.minutes(); 30 | unsigned int end_minutes = 31 | dst_end_offset.hours() * 60 + dst_end_offset.minutes(); 32 | - long length_minutes = 33 | + unsigned int length_minutes = 34 | dst_length_minutes.hours() * 60 + dst_length_minutes.minutes(); 35 | 36 | return local_is_dst(current_day, time_of_day, 37 | @@ -140,7 +140,7 @@ 38 | unsigned int dst_start_offset_minutes, 39 | const date_type& dst_end_day, 40 | unsigned int dst_end_offset_minutes, 41 | - long dst_length_minutes) 42 | + int dst_length_minutes) 43 | { 44 | //in northern hemisphere dst is in the middle of the year 45 | if (dst_start_day < dst_end_day) { 46 | -------------------------------------------------------------------------------- /patches/1_58_0/gregorian_calendar_ipp.patch: -------------------------------------------------------------------------------- 1 | --- boost_1_58_0/boost/date_time/gregorian_calendar.ipp 2015-03-03 14:19:01.000000000 -0800 2 | +++ boost_1_58_0.patched/boost/date_time/gregorian_calendar.ipp 2015-06-11 19:22:10.000000000 -0700 3 | @@ -38,10 +38,10 @@ 4 | BOOST_DATE_TIME_INLINE 5 | int 6 | gregorian_calendar_base::week_number(const ymd_type& ymd) { 7 | - unsigned long julianbegin = julian_day_number(ymd_type(ymd.year,1,1)); 8 | - unsigned long juliantoday = julian_day_number(ymd); 9 | - unsigned long day = (julianbegin + 3) % 7; 10 | - unsigned long week = (juliantoday + day - julianbegin + 4)/7; 11 | + int julianbegin = julian_day_number(ymd_type(ymd.year,1,1)); 12 | + int juliantoday = julian_day_number(ymd); 13 | + int day = (julianbegin + 3) % 7; 14 | + int week = (juliantoday + day - julianbegin + 4)/7; 15 | 16 | if ((week >= 1) && (week <= 52)) { 17 | return week; 18 | @@ -78,7 +78,7 @@ 19 | unsigned short a = static_cast((14-ymd.month)/12); 20 | unsigned short y = static_cast(ymd.year + 4800 - a); 21 | unsigned short m = static_cast(ymd.month + 12*a - 3); 22 | - unsigned long d = ymd.day + ((153*m + 2)/5) + 365*y + (y/4) - (y/100) + (y/400) - 32045; 23 | + date_int_type_ d = ymd.day + ((153*m + 2)/5) + 365*y + (y/4) - (y/100) + (y/400) - 32045; 24 | return d; 25 | } 26 | 27 | -------------------------------------------------------------------------------- /patches/1_58_0/int_adapter_hpp.patch: -------------------------------------------------------------------------------- 1 | --- boost_1_58_0/boost/date_time/int_adapter.hpp 2015-03-03 14:19:01.000000000 -0800 2 | +++ boost_1_58_0.patched/boost/date_time/int_adapter.hpp 2015-06-11 22:08:40.000000000 -0700 3 | @@ -230,7 +230,14 @@ 4 | return int_adapter::neg_infinity(); 5 | } 6 | } 7 | +#ifdef __clang__ 8 | +#pragma clang diagnostic push 9 | +#pragma clang diagnostic ignored "-Wconversion" 10 | +#endif 11 | return int_adapter(value_ + rhs.as_number()); 12 | +#ifdef __clang__ 13 | +#pragma clang diagnostic pop 14 | +#endif 15 | } 16 | 17 | int_adapter operator+(const int_type rhs) const 18 | @@ -279,7 +286,14 @@ 19 | return int_adapter::pos_infinity(); 20 | } 21 | } 22 | +#ifdef __clang__ 23 | +#pragma clang diagnostic push 24 | +#pragma clang diagnostic ignored "-Wconversion" 25 | +#endif 26 | return int_adapter(value_ - rhs.as_number()); 27 | +#ifdef __clang__ 28 | +#pragma clang diagnostic pop 29 | +#endif 30 | } 31 | int_adapter operator-(const int_type rhs) const 32 | { 33 | -------------------------------------------------------------------------------- /patches/1_58_0/plain_report_formatter_ipp.patch: -------------------------------------------------------------------------------- 1 | --- boost_1_58_0/boost/test/impl/plain_report_formatter.ipp 2012-12-13 13:32:58.000000000 -0800 2 | +++ boost_1_58_0.patched/boost/test/impl/plain_report_formatter.ipp 2015-06-11 19:48:28.000000000 -0700 3 | @@ -62,7 +62,7 @@ 4 | const_string name, const_string res ) 5 | { 6 | if( v > 0 ) { 7 | - ostr << std::setw( indent ) << "" 8 | + ostr << std::setw( (int)indent ) << "" 9 | << v << ' ' << name << ( v != 1 ? "s" : "" ); 10 | if( total > 0 ) 11 | ostr << " out of " << total; 12 | @@ -112,7 +112,7 @@ 13 | else 14 | descr = "failed"; 15 | 16 | - ostr << std::setw( m_indent ) << "" 17 | + ostr << std::setw( (int)m_indent ) << "" 18 | << "Test " << (tu.p_type == tut_case ? "case " : "suite " ) << quote() << tu.p_name << ' ' << descr; 19 | 20 | if( tr.p_skipped ) { 21 | -------------------------------------------------------------------------------- /patches/1_58_0/posix_time_duration_hpp.patch: -------------------------------------------------------------------------------- 1 | --- boost_1_58_0/boost/date_time/posix_time/posix_time_duration.hpp 2015-03-03 14:19:01.000000000 -0800 2 | +++ boost_1_58_0.patched/boost/date_time/posix_time/posix_time_duration.hpp 2015-06-11 19:25:21.000000000 -0700 3 | @@ -20,7 +20,7 @@ 4 | class hours : public time_duration 5 | { 6 | public: 7 | - explicit hours(long h) : 8 | + explicit hours(hour_type h) : 9 | time_duration(h,0,0) 10 | {} 11 | }; 12 | @@ -31,7 +31,7 @@ 13 | class minutes : public time_duration 14 | { 15 | public: 16 | - explicit minutes(long m) : 17 | + explicit minutes(min_type m) : 18 | time_duration(0,m,0) 19 | {} 20 | }; 21 | @@ -42,7 +42,7 @@ 22 | class seconds : public time_duration 23 | { 24 | public: 25 | - explicit seconds(long s) : 26 | + explicit seconds(sec_type s) : 27 | time_duration(0,0,s) 28 | {} 29 | }; 30 | -------------------------------------------------------------------------------- /patches/1_58_0/time_system_counted_hpp.patch: -------------------------------------------------------------------------------- 1 | --- boost_1_58_0/boost/date_time/time_system_counted.hpp 2015-03-03 14:19:01.000000000 -0800 2 | +++ boost_1_58_0.patched/boost/date_time/time_system_counted.hpp 2015-06-11 19:27:30.000000000 -0700 3 | @@ -61,7 +61,7 @@ 4 | } 5 | } 6 | //int_type day_count() const 7 | - unsigned long day_count() const 8 | + typename calendar_type::date_int_type day_count() const 9 | { 10 | /* resolution_traits::as_number returns a boost::int64_t & 11 | * frac_sec_per_day is also a boost::int64_t so, naturally, 12 | @@ -75,7 +75,7 @@ 13 | * The division operation will then return a value of 106751991 - 14 | * easily fitting in an unsigned long. 15 | */ 16 | - return static_cast(resolution_traits::as_number(time_count_) / frac_sec_per_day()); 17 | + return static_cast(resolution_traits::as_number(time_count_) / frac_sec_per_day()); 18 | } 19 | int_type time_count() const 20 | { 21 | -------------------------------------------------------------------------------- /patches/1_58_0/unit_test_suite_impl_hpp.patch: -------------------------------------------------------------------------------- 1 | --- boost_1_58_0/boost/test/unit_test_suite_impl.hpp 2012-12-13 13:32:58.000000000 -0800 2 | +++ boost_1_58_0.patched/boost/test/unit_test_suite_impl.hpp 2015-06-11 19:52:31.000000000 -0700 3 | @@ -74,7 +74,7 @@ 4 | readwrite_property p_expected_failures; // number of expected failures in this test unit 5 | mutable readwrite_property p_enabled; // enabled status for this unit 6 | 7 | - void increase_exp_fail( unsigned num ); 8 | + void increase_exp_fail( counter_t num ); 9 | 10 | protected: 11 | ~test_unit(); 12 | -------------------------------------------------------------------------------- /patches/1_58_0/unit_test_suite_ipp.patch: -------------------------------------------------------------------------------- 1 | --- boost_1_58_0/boost/test/impl/unit_test_suite.ipp 2012-12-13 13:32:58.000000000 -0800 2 | +++ boost_1_58_0.patched/boost/test/impl/unit_test_suite.ipp 2015-06-11 19:52:41.000000000 -0700 3 | @@ -89,7 +89,7 @@ 4 | //____________________________________________________________________________// 5 | 6 | void 7 | -test_unit::increase_exp_fail( unsigned num ) 8 | +test_unit::increase_exp_fail( counter_t num ) 9 | { 10 | p_expected_failures.value += num; 11 | 12 | -------------------------------------------------------------------------------- /patches/1_58_0/xtime_hpp.patch: -------------------------------------------------------------------------------- 1 | --- boost_1_58_0/boost/thread/xtime.hpp 2015-03-21 07:44:02.000000000 -0700 2 | +++ boost_1_58_0.patched/boost/thread/xtime.hpp 2015-06-11 21:53:45.000000000 -0700 3 | @@ -47,7 +47,7 @@ 4 | operator system_time() const 5 | { 6 | return boost::posix_time::from_time_t(0)+ 7 | - boost::posix_time::seconds(static_cast(sec))+ 8 | + boost::posix_time::seconds(static_cast(sec))+ 9 | #ifdef BOOST_DATE_TIME_HAS_NANOSECONDS 10 | boost::posix_time::nanoseconds(nsec); 11 | #else 12 | -------------------------------------------------------------------------------- /patches/1_63_0/clang-darwin.jam.patch: -------------------------------------------------------------------------------- 1 | --- boost_1_63_0//tools/build/src/tools/clang-darwin.jam 2017-01-12 15:18:28.000000000 -0800 2 | +++ boost_1_63_0.patched//tools/build/src/tools/clang-darwin.jam 2017-01-12 14:54:35.000000000 -0800 3 | @@ -92,7 +92,7 @@ 4 | toolset.flags clang-darwin.compile OPTIONS on : -Wno-inline ; 5 | toolset.flags clang-darwin.compile OPTIONS full : -Wno-inline ; 6 | 7 | -toolset.flags clang-darwin.compile OPTIONS off : -w ; 8 | +toolset.flags clang-darwin.compile OPTIONS off : ; 9 | toolset.flags clang-darwin.compile OPTIONS on : -Wall ; 10 | toolset.flags clang-darwin.compile OPTIONS all : -Wall -pedantic ; 11 | toolset.flags clang-darwin.compile OPTIONS on : -Werror ; 12 | -------------------------------------------------------------------------------- /patches/1_68_0/array.hpp.patch: -------------------------------------------------------------------------------- 1 | --- boost_1_68_0/boost/array.hpp 2018-08-01 13:50:45.000000000 -0700 2 | +++ boost_1_68_0.patched/boost/array.hpp 2018-10-20 14:26:46.000000000 -0700 3 | @@ -183,7 +183,7 @@ 4 | 5 | // check range (may be private because it is static) 6 | static BOOST_CONSTEXPR bool rangecheck (size_type i) { 7 | - return i > size() ? boost::throw_exception(std::out_of_range ("array<>: index out of range")), true : true; 8 | + return i > size() ? static_cast(boost::throw_exception(std::out_of_range ("array<>: index out of range"))), true : true; 9 | } 10 | 11 | }; 12 | -------------------------------------------------------------------------------- /patches/1_68_0/conversion.hpp.patch: -------------------------------------------------------------------------------- 1 | --- boost_1_68_0/boost/date_time/posix_time/conversion.hpp 2018-08-01 13:50:47.000000000 -0700 2 | +++ boost_1_68_0.patched/boost/date_time/posix_time/conversion.hpp 2018-10-24 18:06:06.000000000 -0700 3 | @@ -33,7 +33,7 @@ 4 | inline 5 | std::time_t to_time_t(ptime pt) 6 | { 7 | - return (pt - ptime(gregorian::date(1970,1,1))).total_seconds(); 8 | + return static_cast((pt - ptime(gregorian::date(1970,1,1))).total_seconds()); 9 | } 10 | 11 | //! Convert a time to a tm structure truncating any fractional seconds 12 | -------------------------------------------------------------------------------- /patches/1_68_0/dst_rules.hpp.patch: -------------------------------------------------------------------------------- 1 | --- boost_1_68_0/boost/date_time/dst_rules.hpp 2018-08-01 13:50:47.000000000 -0700 2 | +++ boost_1_68_0.patched/boost/date_time/dst_rules.hpp 2018-10-20 15:15:02.000000000 -0700 3 | @@ -75,7 +75,7 @@ 4 | long dst_length_minutes) 5 | { 6 | //in US this will be 60 so offset in day is 1,0,0 7 | - int offset = dst_end_offset_minutes-dst_length_minutes; 8 | + long offset = dst_end_offset_minutes-dst_length_minutes; 9 | if (time_of_day < time_duration_type(0,offset,0)) { 10 | return is_in_dst; 11 | } 12 | -------------------------------------------------------------------------------- /patches/1_68_0/gcc.jam.patch: -------------------------------------------------------------------------------- 1 | diff -ru boost_1_68_0/tools/build/src/tools/gcc.jam boost_1_68_0.patched/tools/build/src/tools/gcc.jam 2 | --- boost_1_68_0/tools/build/src/tools/gcc.jam 2018-08-01 13:50:55.000000000 -0700 3 | +++ boost_1_68_0.patched/tools/build/src/tools/gcc.jam 2018-10-19 15:51:06.000000000 -0700 4 | @@ -925,9 +925,8 @@ 5 | toolset.flags gcc.link RPATH $(generic-os) : ; 6 | toolset.flags gcc.link RPATH_OPTION $(generic-os) : -rpath ; 7 | toolset.flags gcc.link RPATH_LINK $(generic-os) : ; 8 | - toolset.flags gcc.link START-GROUP $(generic-os) : 9 | - -Wl,--start-group ; 10 | - toolset.flags gcc.link END-GROUP $(generic-os) : -Wl,--end-group ; 11 | + toolset.flags gcc.link START-GROUP $(generic-os) : ; 12 | + toolset.flags gcc.link END-GROUP $(generic-os) : ; 13 | 14 | # gnu ld has the ability to change the search behaviour for libraries 15 | # referenced by the -l switch. These modifiers are -Bstatic and 16 | @@ -962,8 +961,8 @@ 17 | # search patterns! 18 | 19 | # On *nix mixing shared libs with static runtime is not a good idea. 20 | - toolset.flags gcc.link FINDLIBS-ST-PFX $(generic-os)/shared : -Wl,-Bstatic ; 21 | - toolset.flags gcc.link FINDLIBS-SA-PFX $(generic-os)/shared : -Wl,-Bdynamic ; 22 | + toolset.flags gcc.link FINDLIBS-ST-PFX $(generic-os)/shared : ; 23 | + toolset.flags gcc.link FINDLIBS-SA-PFX $(generic-os)/shared : ; 24 | 25 | # On windows allow mixing of static and dynamic libs with static 26 | # runtime is not a good idea. 27 | -------------------------------------------------------------------------------- /patches/1_68_0/platform_time.hpp.patch: -------------------------------------------------------------------------------- 1 | --- boost_1_68_0/boost/thread/detail/platform_time.hpp 2018-08-01 13:50:53.000000000 -0700 2 | +++ boost_1_68_0.patched/boost/thread/detail/platform_time.hpp 2018-10-24 20:47:10.000000000 -0700 3 | @@ -145,7 +145,7 @@ 4 | platform_duration(boost::posix_time::time_duration const& rel_time) 5 | { 6 | #if defined BOOST_THREAD_CHRONO_POSIX_API || defined BOOST_THREAD_CHRONO_MAC_API 7 | - ts_val.tv_sec = rel_time.total_seconds(); 8 | + ts_val.tv_sec = static_cast(rel_time.total_seconds()); 9 | ts_val.tv_nsec = static_cast(rel_time.fractional_seconds() * (1000000000l / rel_time.ticks_per_second())); 10 | #else 11 | ns_val = static_cast(rel_time.total_seconds()) * 1000000000l; 12 | -------------------------------------------------------------------------------- /patches/1_68_0/socket_ops.ipp.patch: -------------------------------------------------------------------------------- 1 | --- boost_1_68_0/boost/asio/detail/impl/socket_ops.ipp 2018-08-01 13:50:46.000000000 -0700 2 | +++ boost_1_68_0.patched/boost/asio/detail/impl/socket_ops.ipp 2018-10-20 15:08:40.000000000 -0700 3 | @@ -3456,7 +3456,7 @@ 4 | host, hostlen, serv, servlen, flags, ec); 5 | #else 6 | clear_last_error(); 7 | - int error = ::getnameinfo(addr, addrlen, host, hostlen, serv, servlen, flags); 8 | + int error = ::getnameinfo(addr, static_cast(addrlen), host, static_cast(hostlen), serv, static_cast(servlen), flags); 9 | return ec = translate_addrinfo_error(error); 10 | #endif 11 | } 12 | -------------------------------------------------------------------------------- /patches/1_70_0/array.hpp.patch: -------------------------------------------------------------------------------- 1 | --- boost_1_70_0/boost/array.hpp 2019-06-05 13:19:09.000000000 -0700 2 | +++ boost_1_70_0.patched/boost/array.hpp 2019-06-05 13:17:47.000000000 -0700 3 | @@ -183,7 +183,7 @@ 4 | 5 | // check range (may be private because it is static) 6 | static BOOST_CONSTEXPR bool rangecheck (size_type i) { 7 | - return i >= size() ? boost::throw_exception(std::out_of_range ("array<>: index out of range")), true : true; 8 | + return i >= size() ? static_cast(boost::throw_exception(std::out_of_range ("array<>: index out of range"))), true : true; 9 | } 10 | 11 | }; 12 | -------------------------------------------------------------------------------- /patches/1_70_0/gcc.jam.patch: -------------------------------------------------------------------------------- 1 | --- boost_1_70_0/tools/build/src/tools/gcc.jam 2019-04-26 00:37:31.000000000 -0700 2 | +++ boost_1_70_0.patched/tools/build/src/tools/gcc.jam 2019-04-26 00:31:39.000000000 -0700 3 | @@ -461,7 +461,7 @@ 4 | 5 | local no-threading = android beos haiku sgi darwin vxworks ; 6 | local threading-generic-os = [ set.difference $(all-os) : $(no-threading) $(bsd) windows cygwin solaris ] ; 7 | - threading-flags $(threading-generic-os) : -pthread : rt ; 8 | + threading-flags $(threading-generic-os) : -pthread ; 9 | } 10 | 11 | { 12 | @@ -939,9 +939,8 @@ 13 | toolset.flags gcc.link RPATH $(generic-os) : ; 14 | toolset.flags gcc.link RPATH_OPTION $(generic-os) : -rpath ; 15 | toolset.flags gcc.link RPATH_LINK $(generic-os) : ; 16 | - toolset.flags gcc.link START-GROUP $(generic-os) : 17 | - -Wl,--start-group ; 18 | - toolset.flags gcc.link END-GROUP $(generic-os) : -Wl,--end-group ; 19 | + toolset.flags gcc.link START-GROUP $(generic-os) : ; 20 | + toolset.flags gcc.link END-GROUP $(generic-os) : ; 21 | 22 | # gnu ld has the ability to change the search behaviour for libraries 23 | # referenced by the -l switch. These modifiers are -Bstatic and 24 | @@ -976,8 +975,8 @@ 25 | # search patterns! 26 | 27 | # On *nix mixing shared libs with static runtime is not a good idea. 28 | - toolset.flags gcc.link FINDLIBS-ST-PFX $(generic-os)/shared : -Wl,-Bstatic ; 29 | - toolset.flags gcc.link FINDLIBS-SA-PFX $(generic-os)/shared : -Wl,-Bdynamic ; 30 | + toolset.flags gcc.link FINDLIBS-ST-PFX $(generic-os)/shared : ; 31 | + toolset.flags gcc.link FINDLIBS-SA-PFX $(generic-os)/shared : ; 32 | 33 | # On windows allow mixing of static and dynamic libs with static 34 | # runtime is not a good idea. 35 | -------------------------------------------------------------------------------- /patches/1_70_0/pthread_mutex_hpp.patch: -------------------------------------------------------------------------------- 1 | --- boost_1_70_0/boost/thread/pthread/mutex.hpp 2020-08-03 16:01:18.000000000 -0700 2 | +++ boost_1_70_0.patch/boost/thread/pthread/mutex.hpp 2020-08-03 16:10:38.000000000 -0700 3 | @@ -59,7 +59,7 @@ 4 | { 5 | int const res = posix::pthread_mutex_destroy(&m); 6 | boost::ignore_unused(res); 7 | - BOOST_ASSERT(!res); 8 | + //BOOST_ASSERT(!res); 9 | } 10 | 11 | void lock() BOOST_THREAD_ACQUIRE() 12 | -------------------------------------------------------------------------------- /patches/1_73_0/gcc.jam.patch: -------------------------------------------------------------------------------- 1 | --- boost_1_73_0/tools/build/src/tools/gcc.jam 2020-08-03 16:54:03.000000000 -0700 2 | +++ boost_1_73_0.patched/tools/build/src/tools/gcc.jam 2020-08-03 16:52:30.000000000 -0700 3 | @@ -466,7 +466,7 @@ 4 | 5 | local no-threading = android beos haiku sgi darwin vxworks ; 6 | local threading-generic-os = [ set.difference $(all-os) : $(no-threading) $(bsd) windows cygwin solaris qnx ] ; 7 | - threading-flags $(threading-generic-os) : -pthread : rt ; 8 | + threading-flags $(threading-generic-os) : -pthread ; 9 | } 10 | 11 | { 12 | @@ -979,9 +979,8 @@ 13 | toolset.flags gcc.link RPATH $(generic-os) : ; 14 | toolset.flags gcc.link RPATH_OPTION $(generic-os) : -rpath ; 15 | toolset.flags gcc.link RPATH_LINK $(generic-os) : ; 16 | - toolset.flags gcc.link START-GROUP $(generic-os) : 17 | - -Wl,--start-group ; 18 | - toolset.flags gcc.link END-GROUP $(generic-os) : -Wl,--end-group ; 19 | + toolset.flags gcc.link START-GROUP $(generic-os) : ; 20 | + toolset.flags gcc.link END-GROUP $(generic-os) : ; 21 | 22 | # gnu ld has the ability to change the search behaviour for libraries 23 | # referenced by the -l switch. These modifiers are -Bstatic and 24 | @@ -1016,8 +1015,8 @@ 25 | # search patterns! 26 | 27 | # On *nix mixing shared libs with static runtime is not a good idea. 28 | - toolset.flags gcc.link FINDLIBS-ST-PFX $(generic-os)/shared : -Wl,-Bstatic ; 29 | - toolset.flags gcc.link FINDLIBS-SA-PFX $(generic-os)/shared : -Wl,-Bdynamic ; 30 | + toolset.flags gcc.link FINDLIBS-ST-PFX $(generic-os)/shared : ; 31 | + toolset.flags gcc.link FINDLIBS-SA-PFX $(generic-os)/shared : ; 32 | 33 | # On windows allow mixing of static and dynamic libs with static 34 | # runtime is not a good idea. 35 | -------------------------------------------------------------------------------- /patches/1_81_0/array.hpp.patch: -------------------------------------------------------------------------------- 1 | --- boost_1_81_0/boost/array.hpp 2023-01-14 14:48:10 2 | +++ boost_1_81_0.patched/boost/array.hpp 2023-01-14 14:53:52 3 | @@ -182,7 +182,11 @@ 4 | 5 | // check range (may be private because it is static) 6 | static BOOST_CONSTEXPR bool rangecheck (size_type i) { 7 | - return i >= size() ? boost::throw_exception(std::out_of_range ("array<>: index out of range")), true : true; 8 | + if(i >= size()) 9 | + { 10 | + boost::throw_exception(std::out_of_range ("array<>: index out of range")); 11 | + } 12 | + return true; 13 | } 14 | 15 | }; 16 | -------------------------------------------------------------------------------- /patches/1_81_0/bootstrap.sh.patch: -------------------------------------------------------------------------------- 1 | Only in boost_1_81_0: INSTALL 2 | Only in boost_1_81_0: Jamroot 3 | Only in boost_1_81_0: LICENSE_1_0.txt 4 | Only in boost_1_81_0: README.md 5 | Only in boost_1_81_0: boost 6 | Only in boost_1_81_0: boost-build.jam 7 | Only in boost_1_81_0: boost.css 8 | Only in boost_1_81_0: boost.png 9 | Only in boost_1_81_0: boostcpp.jam 10 | Only in boost_1_81_0: bootstrap.bat 11 | diff -ru boost_1_81_0/bootstrap.sh boost_1_81_0.patched/bootstrap.sh 12 | --- boost_1_81_0/bootstrap.sh 2023-01-07 15:10:17 13 | +++ boost_1_81_0.patched/bootstrap.sh 2023-01-07 15:12:05 14 | @@ -226,7 +226,7 @@ 15 | if test "x$BJAM" = x; then 16 | $ECHO "Building B2 engine.." 17 | pwd=`pwd` 18 | - CXX= CXXFLAGS= "$my_dir/tools/build/src/engine/build.sh" ${TOOLSET} 19 | + CXX= "$my_dir/tools/build/src/engine/build.sh" --cxxflags="$CXXFLAGS" ${TOOLSET} 20 | if [ $? -ne 0 ]; then 21 | echo 22 | echo "Failed to build B2 build engine" 23 | Only in boost_1_81_0: doc 24 | Only in boost_1_81_0: index.htm 25 | Only in boost_1_81_0: index.html 26 | Only in boost_1_81_0: libs 27 | Only in boost_1_81_0: more 28 | Only in boost_1_81_0: rst.css 29 | Only in boost_1_81_0: status 30 | Only in boost_1_81_0: tools 31 | -------------------------------------------------------------------------------- /patches/1_81_0/converter_lexical_streams.hpp.patch: -------------------------------------------------------------------------------- 1 | --- boost_1_81_0/boost/lexical_cast/detail/converter_lexical_streams.hpp 2023-01-14 14:48:11 2 | +++ boost_1_81_0.patched/boost/lexical_cast/detail/converter_lexical_streams.hpp 2023-01-14 15:02:01 3 | @@ -282,7 +282,7 @@ 4 | #if defined(_MSC_VER) && (_MSC_VER >= 1400) && !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION) 5 | sprintf_s(begin, CharacterBufferSize, 6 | #else 7 | - sprintf(begin, 8 | + snprintf(begin, CharacterBufferSize, 9 | #endif 10 | "%.*g", static_cast(boost::detail::lcast_get_precision()), val_as_double); 11 | return finish > start; 12 | @@ -294,7 +294,7 @@ 13 | #if defined(_MSC_VER) && (_MSC_VER >= 1400) && !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION) 14 | sprintf_s(begin, CharacterBufferSize, 15 | #else 16 | - sprintf(begin, 17 | + snprintf(begin, CharacterBufferSize, 18 | #endif 19 | "%.*g", static_cast(boost::detail::lcast_get_precision()), val); 20 | return finish > start; 21 | @@ -307,7 +307,7 @@ 22 | #if defined(_MSC_VER) && (_MSC_VER >= 1400) && !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION) 23 | sprintf_s(begin, CharacterBufferSize, 24 | #else 25 | - sprintf(begin, 26 | + snprintf(begin, CharacterBufferSize, 27 | #endif 28 | "%.*Lg", static_cast(boost::detail::lcast_get_precision()), val ); 29 | return finish > start; 30 | --------------------------------------------------------------------------------