SConscript
1 # Copyright (C) 2019-2020 Advanced Micro Devices, Inc. All rights reserved. 2 # 3 # Redistribution and use in source and binary forms, with or without modification, 4 # are permitted provided that the following conditions are met: 5 # 1. Redistributions of source code must retain the above copyright notice, 6 # this list of conditions and the following disclaimer. 7 # 2. Redistributions in binary form must reproduce the above copyright notice, 8 # this list of conditions and the following disclaimer in the documentation 9 # and/or other materials provided with the distribution. 10 # 3. Neither the name of the copyright holder nor the names of its contributors 11 # may be used to endorse or promote products derived from this software without 12 # specific prior written permission. 13 # 14 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 15 # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 16 # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 17 # IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 18 # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 19 # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, 20 # OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 21 # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 22 # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 23 # POSSIBILITY OF SUCH DAMAGE. 24 25 # Inherit global environment 26 Import('env') 27 from os.path import join as joinpath 28 29 builddir = joinpath(env['BUILDROOT'], 'src', 'optmized') 30 31 e = env.Clone() 32 33 # These rearrangements are not value-safe: 34 # (a ⊕ b) ⊕ c ⇒ a ⊕ (b ⊕ c) 35 # a ⊗ (b ⊕ c) ⇒ (a ⊗ b) ⊕ (a ⊕ c) 36 # 37 # To Disallow these changes in gcc remove -ffast-math 38 if '-ffast-math' in e['CFLAGS']: 39 e['CFLAGS'].remove('-ffast-math') 40 41 incpaths = [ 42 '#' + joinpath(Dir('.').srcnode().path), 43 '#' + joinpath(Dir('.').srcnode().path, 'include') 44 ] 45 46 e.Append( 47 CFLAGS = ['-O3', '-fPIC', '-flax-vector-conversions'], 48 CPPPATH = incpaths 49 ) 50 51 experimental_src = [] 52 53 source = Glob('*.c', exclude=experimental_src) 54 55 objs = e.StaticObject(source) 56 57 Return('objs')