1# Boost serialization Library Build Jamfile 2# (C) Copyright Robert Ramey 2002-2004. 3# Use, modification, and distribution are subject to the 4# Boost Software License, Version 1.0. (See accompanying file 5# LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 6# 7# See http://www.boost.org/libs/serialization for the library home page. 8 9project boost/serialization 10 : source-location ../src 11 : requirements 12 <conditional>@include-spirit 13; 14 15SPIRIT_ROOT = [ modules.peek : SPIRIT_ROOT ] ; 16rule include-spirit ( properties * ) 17{ 18 local old-compiler ; 19 if <toolset>borland in $(properties) 20 { 21 if ! <toolset-borland:version>6.1.0 in $(properties) 22 { 23 old-compiler = true ; 24 } 25 26 } 27 else if <toolset>msvc in $(properties) 28 { 29 if <toolset-msvc:version>6.5 in $(properties) 30 || <toolset-msvc:version>7.0 in $(properties) 31 { 32 old-compiler = true ; 33 } 34 } 35 36 local result ; 37 if $(old-compiler) 38 { 39 if $(SPIRIT_ROOT) 40 { 41 # note - we can't use <include>$(SPIRIT_ROOT) because 42 # it puts -I$(SPIRIT_ROOT) AFTER the "../../.." in the command line. 43 # so use these instead 44 result = <cxxflags>-I$(SPIRIT_ROOT) ; 45 } 46 else 47 { 48 echo **** spirit 1.6x required to build library with this compiler **** ; 49 result = <build>no ; 50 } 51 } 52 return $(result) ; 53} 54 55SOURCES = 56 archive_exception 57 basic_archive 58 basic_iarchive 59 basic_iserializer 60 basic_oarchive 61 basic_oserializer 62 basic_pointer_iserializer 63 basic_pointer_oserializer 64 basic_serializer_map 65 basic_text_iprimitive 66 basic_text_oprimitive 67 basic_xml_archive 68 binary_iarchive 69 binary_oarchive 70 extended_type_info 71 extended_type_info_typeid 72 extended_type_info_no_rtti 73 polymorphic_iarchive 74 polymorphic_oarchive 75 stl_port 76 text_iarchive 77 text_oarchive 78 polymorphic_text_iarchive 79 polymorphic_text_oarchive 80 polymorphic_binary_iarchive 81 polymorphic_binary_oarchive 82 polymorphic_xml_iarchive 83 polymorphic_xml_oarchive 84 void_cast 85 xml_grammar 86 xml_iarchive 87 xml_archive_exception 88 codecvt_null 89 ; 90 91SOURCES_HAS_STD_LOCALE = 92 xml_oarchive 93 utf8_codecvt_facet 94; 95 96WSOURCES = 97 basic_text_wiprimitive 98 basic_text_woprimitive 99 text_wiarchive 100 text_woarchive 101 polymorphic_text_wiarchive 102 polymorphic_text_woarchive 103 xml_wgrammar 104 xml_wiarchive 105 xml_woarchive 106 polymorphic_xml_wiarchive 107 polymorphic_xml_woarchive 108; 109 110rule has-config-flag ( flag : properties * ) 111{ 112 if ( "<define>$(flag)" in $(properties) || "<define>$(flag)=1" in $(properties) ) 113 { 114 return 1 ; 115 } 116 else 117 { 118 return ; 119 } 120} 121 122rule select-define-specific-sources ( properties * ) 123{ 124 local result ; 125 if ! [ has-config-flag BOOST_NO_STD_LOCALE : $(properties) ] 126 { 127 result += <source>$(SOURCES_HAS_STD_LOCALE).cpp ; 128 } 129 130 #ECHO additional sources $(result) ; 131 132 return $(result) ; 133} 134 135rule should-build-wserialization ( properties * ) 136{ 137 local result ; 138 if [ has-config-flag BOOST_NO_STD_LOCALE : $(properties) ] 139 { 140 result += <build>no ; 141 } 142 143 #ECHO should build wserialization $(result) ; 144 145 return $(result) ; 146} 147 148lib boost_serialization 149 : ## sources ## 150 $(SOURCES).cpp 151 : ## requirements ## 152 <conditional>@select-define-specific-sources 153 <toolset>msvc:<cxxflags>/Gy 154 <toolset>msvc:<define>_SCL_SECURE_NO_WARNINGS 155 <toolset>msvc:<define>_CRT_SECURE_NO_WARNINGS 156 <toolset>clang:<cxxflags>"-fvisibility=hidden -fvisibility-inlines-hidden" 157 <toolset>gcc:<cxxflags>"-fvisibility=hidden -fvisibility-inlines-hidden" 158 <toolset>darwin:<cxxflags>"-fvisibility=hidden -fvisibility-inlines-hidden" 159 <toolset>gcc:<cxxflags>"-ftemplate-depth-255" 160 <toolset>clang:<cxxflags>"-ftemplate-depth-255" 161 <toolset>darwin:<cxxflags>"-ftemplate-depth-255" 162 <link>shared:<define>BOOST_SERIALIZATION_DYN_LINK=1 163 ; 164 165lib boost_wserialization 166 : $(WSOURCES).cpp boost_serialization 167 : 168 <conditional>@should-build-wserialization 169 <toolset>msvc:<cxxflags>/Gy 170 <toolset>msvc:<define>_SCL_SECURE_NO_WARNINGS 171 <toolset>msvc:<define>_CRT_SECURE_NO_WARNINGS 172 <toolset>clang:<cxxflags>"-fvisibility=hidden -fvisibility-inlines-hidden" 173 <toolset>gcc:<cxxflags>"-fvisibility=hidden -fvisibility-inlines-hidden" 174 <toolset>darwin:<cxxflags>"-fvisibility=hidden -fvisibility-inlines-hidden" 175 <toolset>gcc:<cxxflags>"-ftemplate-depth-255" 176 <toolset>clang:<cxxflags>"-ftemplate-depth-255" 177 <toolset>darwin:<cxxflags>"-ftemplate-depth-255" 178 # note: both serialization and wserialization are conditioned on the this 179 # switch - don't change it to BOOST_WSERIALIZATION_DYN_LINK 180 <link>shared:<define>BOOST_SERIALIZATION_DYN_LINK=1 181 ; 182 183boost-install boost_serialization boost_wserialization ; 184