
# -*- mode:python -*-

# Copyright (c) 2020 StreamComputing Corp.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met: redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer;
# redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution;
# neither the name of the copyright holders nor the names of its
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# Authors: Kai Ren

import os

Import('env')

# You can change it to undefine SOFTFLOAT_FAST_INT64
use_fast_int64 = True

sf_env = env.Clone()
if sf_env['GCC']:
    sf_env.Append(CCFLAGS=['-Wno-unused-variable',
                           '-Wno-unused-label',
                           '-Wno-implicit-fallthrough',
                           '-Wno-implicit-function-declaration',
                           '-g'])

elif sf_env['CLANG']:
    sf_env.Append(CCFLAGS=['-Wno-unused-variable',
                           '-Wno-unused-label',
                           '-Wno-implicit-function-declaration',
                           '-g'])

if use_fast_int64:
    sf_env.Prepend(CXXFLAGS=['-DSOFTFLOAT_FAST_INT64'])
    sf_env.Prepend(CFLAGS=['-DSOFTFLOAT_FAST_INT64'])

# Add the appropriate files for the library
softfloat_files = []


def SoftfloatFile(filename):
    softfloat_files.append(File('./' + filename))

SoftfloatFile('f16_add.c')
SoftfloatFile('f16_classify.c')
SoftfloatFile('f16_div.c')
SoftfloatFile('f16_eq.c')
SoftfloatFile('f16_eq_signaling.c')
SoftfloatFile('f16_isSignalingNaN.c')
SoftfloatFile('f16_le.c')
SoftfloatFile('f16_le_quiet.c')
SoftfloatFile('f16_lt.c')
SoftfloatFile('f16_lt_quiet.c')
SoftfloatFile('f16_mulAdd.c')
SoftfloatFile('f16_mul.c')
SoftfloatFile('f16_rem.c')
SoftfloatFile('f16_roundToInt.c')
SoftfloatFile('f16_sqrt.c')
SoftfloatFile('f16_sub.c')
SoftfloatFile('f16_to_f32.c')
SoftfloatFile('f16_to_f64.c')
SoftfloatFile('f16_to_i16.c')
SoftfloatFile('f16_to_i32.c')
SoftfloatFile('f16_to_i32_r_minMag.c')
SoftfloatFile('f16_to_i64.c')
SoftfloatFile('f16_to_i64_r_minMag.c')
SoftfloatFile('f16_to_i8.c')
SoftfloatFile('f16_to_ui16.c')
SoftfloatFile('f16_to_ui32.c')
SoftfloatFile('f16_to_ui32_r_minMag.c')
SoftfloatFile('f16_to_ui64.c')
SoftfloatFile('f16_to_ui64_r_minMag.c')
SoftfloatFile('f16_to_ui8.c')
SoftfloatFile('f32_add.c')
SoftfloatFile('f32_classify.c')
SoftfloatFile('f32_div.c')
SoftfloatFile('f32_eq.c')
SoftfloatFile('f32_eq_signaling.c')
SoftfloatFile('f32_isSignalingNaN.c')
SoftfloatFile('f32_le.c')
SoftfloatFile('f32_le_quiet.c')
SoftfloatFile('f32_lt.c')
SoftfloatFile('f32_lt_quiet.c')
SoftfloatFile('f32_mulAdd.c')
SoftfloatFile('f32_mul.c')
SoftfloatFile('f32_rem.c')
SoftfloatFile('f32_roundToInt.c')
SoftfloatFile('f32_sqrt.c')
SoftfloatFile('f32_sub.c')
SoftfloatFile('f32_to_f16.c')
SoftfloatFile('f32_to_f64.c')
SoftfloatFile('f32_to_i16.c')
SoftfloatFile('f32_to_i32.c')
SoftfloatFile('f32_to_i32_r_minMag.c')
SoftfloatFile('f32_to_i64.c')
SoftfloatFile('f32_to_i64_r_minMag.c')
SoftfloatFile('f32_to_ui16.c')
SoftfloatFile('f32_to_ui32.c')
SoftfloatFile('f32_to_ui32_r_minMag.c')
SoftfloatFile('f32_to_ui64.c')
SoftfloatFile('f32_to_ui64_r_minMag.c')
SoftfloatFile('f16_to_extF80M.c')
SoftfloatFile('f16_to_f128M.c')
SoftfloatFile('f32_to_extF80M.c')
SoftfloatFile('f32_to_f128M.c')
SoftfloatFile('f64_add.c')
SoftfloatFile('f64_classify.c')
SoftfloatFile('f64_div.c')
SoftfloatFile('f64_eq.c')
SoftfloatFile('f64_eq_signaling.c')
SoftfloatFile('f64_isSignalingNaN.c')
SoftfloatFile('f64_le.c')
SoftfloatFile('f64_le_quiet.c')
SoftfloatFile('f64_lt.c')
SoftfloatFile('f64_lt_quiet.c')
SoftfloatFile('f64_mulAdd.c')
SoftfloatFile('f64_mul.c')
SoftfloatFile('f64_rem.c')
SoftfloatFile('f64_roundToInt.c')
SoftfloatFile('f64_sqrt.c')
SoftfloatFile('f64_sub.c')
SoftfloatFile('f64_to_extF80M.c')
SoftfloatFile('f64_to_f128M.c')
SoftfloatFile('f64_to_f16.c')
SoftfloatFile('f64_to_f32.c')
SoftfloatFile('f64_to_i32.c')
SoftfloatFile('f64_to_i32_r_minMag.c')
SoftfloatFile('f64_to_i64.c')
SoftfloatFile('f64_to_i64_r_minMag.c')
SoftfloatFile('f64_to_ui32.c')
SoftfloatFile('f64_to_ui32_r_minMag.c')
SoftfloatFile('f64_to_ui64.c')
SoftfloatFile('f64_to_ui64_r_minMag.c')
SoftfloatFile('fall_maxmin.c')
SoftfloatFile('fall_reciprocal.c')
SoftfloatFile('i32_to_extF80M.c')
SoftfloatFile('i32_to_f128M.c')
SoftfloatFile('i32_to_f16.c')
SoftfloatFile('i32_to_f32.c')
SoftfloatFile('i32_to_f64.c')
SoftfloatFile('i64_to_extF80M.c')
SoftfloatFile('i64_to_f128M.c')
SoftfloatFile('i64_to_f16.c')
SoftfloatFile('i64_to_f32.c')
SoftfloatFile('i64_to_f64.c')
SoftfloatFile('s_addMagsF16.c')
SoftfloatFile('s_addMagsF32.c')
SoftfloatFile('s_addMagsF64.c')
SoftfloatFile('s_approxRecip_1Ks.c')
SoftfloatFile('s_approxRecip32_1.c')
SoftfloatFile('s_approxRecipSqrt_1Ks.c')
SoftfloatFile('s_approxRecipSqrt32_1.c')
SoftfloatFile('s_commonNaNToF16UI.c')
SoftfloatFile('s_commonNaNToF32UI.c')
SoftfloatFile('s_commonNaNToF64UI.c')
SoftfloatFile('s_countLeadingZeros16.c')
SoftfloatFile('s_countLeadingZeros32.c')
SoftfloatFile('s_countLeadingZeros64.c')
SoftfloatFile('s_countLeadingZeros8.c')
SoftfloatFile('s_f128UIToCommonNaN.c')
SoftfloatFile('s_f16UIToCommonNaN.c')
SoftfloatFile('s_f32UIToCommonNaN.c')
SoftfloatFile('s_f64UIToCommonNaN.c')
SoftfloatFile('s_mulAddF16.c')
SoftfloatFile('s_mulAddF32.c')
SoftfloatFile('s_mulAddF64.c')
SoftfloatFile('s_normRoundPackToF16.c')
SoftfloatFile('s_normRoundPackToF32.c')
SoftfloatFile('s_normRoundPackToF64.c')
SoftfloatFile('s_normSubnormalF16Sig.c')
SoftfloatFile('s_normSubnormalF32Sig.c')
SoftfloatFile('s_normSubnormalF64Sig.c')
SoftfloatFile('s_propagateNaNF16UI.c')
SoftfloatFile('s_propagateNaNF32UI.c')
SoftfloatFile('s_propagateNaNF64UI.c')
SoftfloatFile('s_roundPackToF16.c')
SoftfloatFile('s_roundPackToF32.c')
SoftfloatFile('s_roundPackToF64.c')
SoftfloatFile('s_roundPackToI32.c')
SoftfloatFile('s_roundPackToI64.c')
SoftfloatFile('s_roundPackToUI32.c')
SoftfloatFile('s_roundPackToUI64.c')
SoftfloatFile('s_roundToI32.c')
SoftfloatFile('s_roundToI64.c')
SoftfloatFile('s_roundToUI32.c')
SoftfloatFile('s_shiftRightJam32.c')
SoftfloatFile('s_shiftRightJam64.c')
SoftfloatFile('s_shortShiftRightExtendM.c')
SoftfloatFile('s_shortShiftRightJam64.c')
SoftfloatFile('s_subMagsF16.c')
SoftfloatFile('s_subMagsF32.c')
SoftfloatFile('s_subMagsF64.c')
SoftfloatFile('softfloat_raiseFlags.c')
SoftfloatFile('softfloat_state.c')
SoftfloatFile('ui32_to_f16.c')
SoftfloatFile('ui32_to_f32.c')
SoftfloatFile('ui32_to_f64.c')
SoftfloatFile('ui64_to_f16.c')
SoftfloatFile('ui64_to_f32.c')
SoftfloatFile('ui64_to_f64.c')

if use_fast_int64:
    SoftfloatFile('extF80_add.c')
    SoftfloatFile('extF80_div.c')
    SoftfloatFile('extF80_eq.c')
    SoftfloatFile('extF80_eq_signaling.c')
    SoftfloatFile('extF80_isSignalingNaN.c')
    SoftfloatFile('extF80_le.c')
    SoftfloatFile('extF80_le_quiet.c')
    SoftfloatFile('extF80_lt.c')
    SoftfloatFile('extF80_lt_quiet.c')
    SoftfloatFile('extF80_mul.c')
    SoftfloatFile('extF80_rem.c')
    SoftfloatFile('extF80_roundToInt.c')
    SoftfloatFile('extF80_sqrt.c')
    SoftfloatFile('extF80_sub.c')
    SoftfloatFile('extF80_to_f128.c')
    SoftfloatFile('extF80_to_f16.c')
    SoftfloatFile('extF80_to_f32.c')
    SoftfloatFile('extF80_to_f64.c')
    SoftfloatFile('extF80_to_i32.c')
    SoftfloatFile('extF80_to_i32_r_minMag.c')
    SoftfloatFile('extF80_to_i64.c')
    SoftfloatFile('extF80_to_i64_r_minMag.c')
    SoftfloatFile('extF80_to_ui32.c')
    SoftfloatFile('extF80_to_ui32_r_minMag.c')
    SoftfloatFile('extF80_to_ui64.c')
    SoftfloatFile('extF80_to_ui64_r_minMag.c')
    SoftfloatFile('f128_add.c')
    SoftfloatFile('f128_classify.c')
    SoftfloatFile('f128_div.c')
    SoftfloatFile('f128_eq.c')
    SoftfloatFile('f128_eq_signaling.c')
    SoftfloatFile('f128_isSignalingNaN.c')
    SoftfloatFile('f128_le.c')
    SoftfloatFile('f128_le_quiet.c')
    SoftfloatFile('f128_lt.c')
    SoftfloatFile('f128_lt_quiet.c')
    SoftfloatFile('f128_mulAdd.c')
    SoftfloatFile('f128_mul.c')
    SoftfloatFile('f128_rem.c')
    SoftfloatFile('f128_roundToInt.c')
    SoftfloatFile('f128_sqrt.c')
    SoftfloatFile('f128_sub.c')
    SoftfloatFile('f128_to_extF80.c')
    SoftfloatFile('f128_to_f16.c')
    SoftfloatFile('f128_to_f32.c')
    SoftfloatFile('f128_to_f64.c')
    SoftfloatFile('f128_to_i32.c')
    SoftfloatFile('f128_to_i32_r_minMag.c')
    SoftfloatFile('f128_to_i64.c')
    SoftfloatFile('f128_to_i64_r_minMag.c')
    SoftfloatFile('f128_to_ui32.c')
    SoftfloatFile('f128_to_ui32_r_minMag.c')
    SoftfloatFile('f128_to_ui64.c')
    SoftfloatFile('f128_to_ui64_r_minMag.c')
    SoftfloatFile('f16_to_extF80.c')
    SoftfloatFile('f16_to_f128.c')
    SoftfloatFile('f32_to_extF80.c')
    SoftfloatFile('f32_to_f128.c')
    SoftfloatFile('f64_to_extF80.c')
    SoftfloatFile('f64_to_f128.c')
    SoftfloatFile('i32_to_extF80.c')
    SoftfloatFile('i32_to_f128.c')
    SoftfloatFile('i64_to_extF80.c')
    SoftfloatFile('i64_to_f128.c')
    SoftfloatFile('s_addMagsExtF80.c')
    SoftfloatFile('s_addMagsF128.c')
    SoftfloatFile('s_add128.c')
    SoftfloatFile('s_add256M.c')
    SoftfloatFile('s_commonNaNToF128UI.c')
    SoftfloatFile('s_eq128.c')
    SoftfloatFile('s_le128.c')
    SoftfloatFile('s_lt128.c')
    SoftfloatFile('s_mulAddF128.c')
    SoftfloatFile('s_mul64ByShifted32To128.c')
    SoftfloatFile('s_mul64To128.c')
    SoftfloatFile('s_mul128By32.c')
    SoftfloatFile('s_mul128To256M.c')
    SoftfloatFile('s_normRoundPackToExtF80.c')
    SoftfloatFile('s_normRoundPackToF128.c')
    SoftfloatFile('s_normSubnormalExtF80Sig.c')
    SoftfloatFile('s_normSubnormalF128Sig.c')
    SoftfloatFile('s_propagateNaNF128UI.c')
    SoftfloatFile('s_roundPackToExtF80.c')
    SoftfloatFile('s_roundPackToF128.c')
    SoftfloatFile('s_roundToUI64.c')
    SoftfloatFile('s_shiftRightJam128.c')
    SoftfloatFile('s_shiftRightJam128Extra.c')
    SoftfloatFile('s_shiftRightJam256M.c')
    SoftfloatFile('s_shiftRightJam64Extra.c')
    SoftfloatFile('s_shortShiftLeft128.c')
    SoftfloatFile('s_shortShiftRight128.c')
    SoftfloatFile('s_shortShiftRightJam64Extra.c')
    SoftfloatFile('s_shortShiftRightJam128.c')
    SoftfloatFile('s_shortShiftRightJam128Extra.c')
    SoftfloatFile('s_subMagsExtF80.c')
    SoftfloatFile('s_subMagsF128.c')
    SoftfloatFile('s_sub128.c')
    SoftfloatFile('s_sub256M.c')
    SoftfloatFile('ui32_to_extF80.c')
    SoftfloatFile('ui32_to_f128.c')
    SoftfloatFile('ui64_to_extF80.c')
    SoftfloatFile('ui64_to_f128.c')

else:
    SoftfloatFile('extF80M_add.c')
    SoftfloatFile('extF80M_div.c')
    SoftfloatFile('extF80M_eq.c')
    SoftfloatFile('extF80M_eq_signaling.c')
    SoftfloatFile('extF80M_le.c')
    SoftfloatFile('extF80M_le_quiet.c')
    SoftfloatFile('extF80M_lt.c')
    SoftfloatFile('extF80M_lt_quiet.c')
    SoftfloatFile('extF80M_mul.c')
    SoftfloatFile('extF80M_rem.c')
    SoftfloatFile('extF80M_roundToInt.c')
    SoftfloatFile('extF80M_sqrt.c')
    SoftfloatFile('extF80M_sub.c')
    SoftfloatFile('extF80M_to_f128M.c')
    SoftfloatFile('extF80M_to_f16.c')
    SoftfloatFile('extF80M_to_f32.c')
    SoftfloatFile('extF80M_to_f64.c')
    SoftfloatFile('extF80M_to_i32.c')
    SoftfloatFile('extF80M_to_i32_r_minMag.c')
    SoftfloatFile('extF80M_to_i64.c')
    SoftfloatFile('extF80M_to_i64_r_minMag.c')
    SoftfloatFile('extF80M_to_ui32.c')
    SoftfloatFile('extF80M_to_ui32_r_minMag.c')
    SoftfloatFile('extF80M_to_ui64.c')
    SoftfloatFile('extF80M_to_ui64_r_minMag.c')
    SoftfloatFile('f128M_add.c')
    SoftfloatFile('f128M_div.c')
    SoftfloatFile('f128M_eq.c')
    SoftfloatFile('f128M_eq_signaling.c')
    SoftfloatFile('f128M_le.c')
    SoftfloatFile('f128M_le_quiet.c')
    SoftfloatFile('f128M_lt.c')
    SoftfloatFile('f128M_lt_quiet.c')
    SoftfloatFile('f128M_mulAdd.c')
    SoftfloatFile('f128M_mul.c')
    SoftfloatFile('f128M_rem.c')
    SoftfloatFile('f128M_roundToInt.c')
    SoftfloatFile('f128M_sqrt.c')
    SoftfloatFile('f128M_sub.c')
    SoftfloatFile('f128M_to_extF80M.c')
    SoftfloatFile('f128M_to_f16.c')
    SoftfloatFile('f128M_to_f32.c')
    SoftfloatFile('f128M_to_f64.c')
    SoftfloatFile('f128M_to_i32.c')
    SoftfloatFile('f128M_to_i32_r_minMag.c')
    SoftfloatFile('f128M_to_i64.c')
    SoftfloatFile('f128M_to_i64_r_minMag.c')
    SoftfloatFile('f128M_to_ui32.c')
    SoftfloatFile('f128M_to_ui32_r_minMag.c')
    SoftfloatFile('f128M_to_ui64.c')
    SoftfloatFile('f128M_to_ui64_r_minMag.c')
    SoftfloatFile('s_addM.c')
    SoftfloatFile('s_addCarryM.c')
    SoftfloatFile('s_addComplCarryM.c')
    SoftfloatFile('s_addExtF80M.c')
    SoftfloatFile('s_addF128M.c')
    SoftfloatFile('s_compareNonnormExtF80M.c')
    SoftfloatFile('s_compare128M.c')
    SoftfloatFile('s_compare96M.c')
    SoftfloatFile('s_invalidExtF80M.c')
    SoftfloatFile('s_invalidF128M.c')
    SoftfloatFile('s_isNaNF128M.c')
    SoftfloatFile('s_mulAddF128M.c')
    SoftfloatFile('s_mul128MTo256M.c')
    SoftfloatFile('s_mul64To128M.c')
    SoftfloatFile('s_negXM.c')
    SoftfloatFile('s_normExtF80SigM.c')
    SoftfloatFile('s_normRoundPackMToExtF80M.c')
    SoftfloatFile('s_normRoundPackMToF128M.c')
    SoftfloatFile('s_normSubnormalF128SigM.c')
    SoftfloatFile('s_remStepMBy32.c')
    SoftfloatFile('s_roundMToI64.c')
    SoftfloatFile('s_roundMToUI64.c')
    SoftfloatFile('s_roundPackMToExtF80M.c')
    SoftfloatFile('s_roundPackMToF128M.c')
    SoftfloatFile('s_roundPackMToI64.c')
    SoftfloatFile('s_roundPackMToUI64.c')
    SoftfloatFile('s_shiftLeftM.c')
    SoftfloatFile('s_shiftNormSigF128M.c')
    SoftfloatFile('s_shiftRightJamM.c')
    SoftfloatFile('s_shiftRightM.c')
    SoftfloatFile('s_shortShiftLeftM.c')
    SoftfloatFile('s_shortShiftLeft64To96M.c')
    SoftfloatFile('s_shortShiftRightJamM.c')
    SoftfloatFile('s_shortShiftRightM.c')
    SoftfloatFile('s_subM.c')
    SoftfloatFile('s_sub1XM.c')
    SoftfloatFile('s_tryPropagateNaNExtF80M.c')
    SoftfloatFile('s_tryPropagateNaNF128M.c')
    SoftfloatFile('ui32_to_extF80M.c')
    SoftfloatFile('ui32_to_f128M.c')
    SoftfloatFile('ui64_to_extF80M.c')
    SoftfloatFile('ui64_to_f128M.c')

sf_env.Library('softfloat', [sf_env.SharedObject(f) for f in softfloat_files])

env.Prepend(CPPPATH=Dir('.').srcnode())
env.Append(LIBS=['softfloat'])
env.Prepend(LIBPATH=[Dir('.')])
