github.com/igggame/nebulas-go@v2.1.0+incompatible/nbre/3rd_party/SoftFloat-3e/build/Linux-x86_64-GCC/Makefile (about)

     1  
     2  #=============================================================================
     3  #
     4  # This Makefile is part of the SoftFloat IEEE Floating-Point Arithmetic
     5  # Package, Release 3e, by John R. Hauser.
     6  #
     7  # Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
     8  # University of California.  All rights reserved.
     9  #
    10  # Redistribution and use in source and binary forms, with or without
    11  # modification, are permitted provided that the following conditions are met:
    12  #
    13  #  1. Redistributions of source code must retain the above copyright notice,
    14  #     this list of conditions, and the following disclaimer.
    15  #
    16  #  2. Redistributions in binary form must reproduce the above copyright
    17  #     notice, this list of conditions, and the following disclaimer in the
    18  #     documentation and/or other materials provided with the distribution.
    19  #
    20  #  3. Neither the name of the University nor the names of its contributors
    21  #     may be used to endorse or promote products derived from this software
    22  #     without specific prior written permission.
    23  #
    24  # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
    25  # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
    26  # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
    27  # DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
    28  # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
    29  # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
    30  # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
    31  # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    32  # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
    33  # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    34  #
    35  #=============================================================================
    36  
    37  SOURCE_DIR ?= ../../source
    38  SPECIALIZE_TYPE ?= 8086-SSE
    39  
    40  SOFTFLOAT_OPTS ?= \
    41    -DSOFTFLOAT_ROUND_ODD -DINLINE_LEVEL=5 -DSOFTFLOAT_FAST_DIV32TO16 \
    42    -DSOFTFLOAT_FAST_DIV64TO32
    43  
    44  DELETE = rm -f
    45  C_INCLUDES = -I. -I$(SOURCE_DIR)/$(SPECIALIZE_TYPE) -I$(SOURCE_DIR)/include
    46  COMPILE_C = \
    47    clang -c -fPIC -Werror-implicit-function-declaration -DSOFTFLOAT_FAST_INT64 \
    48      $(SOFTFLOAT_OPTS) $(C_INCLUDES) -O2 -o $@
    49  MAKELIB = ar crs $@
    50  
    51  OBJ = .o
    52  LIB = .so
    53  
    54  OTHER_HEADERS = $(SOURCE_DIR)/include/opts-GCC.h
    55  
    56  .PHONY: all
    57  all: libsoftfloat$(LIB)
    58  
    59  OBJS_PRIMITIVES = \
    60    s_eq128$(OBJ) \
    61    s_le128$(OBJ) \
    62    s_lt128$(OBJ) \
    63    s_shortShiftLeft128$(OBJ) \
    64    s_shortShiftRight128$(OBJ) \
    65    s_shortShiftRightJam64$(OBJ) \
    66    s_shortShiftRightJam64Extra$(OBJ) \
    67    s_shortShiftRightJam128$(OBJ) \
    68    s_shortShiftRightJam128Extra$(OBJ) \
    69    s_shiftRightJam32$(OBJ) \
    70    s_shiftRightJam64$(OBJ) \
    71    s_shiftRightJam64Extra$(OBJ) \
    72    s_shiftRightJam128$(OBJ) \
    73    s_shiftRightJam128Extra$(OBJ) \
    74    s_shiftRightJam256M$(OBJ) \
    75    s_countLeadingZeros8$(OBJ) \
    76    s_countLeadingZeros16$(OBJ) \
    77    s_countLeadingZeros32$(OBJ) \
    78    s_countLeadingZeros64$(OBJ) \
    79    s_add128$(OBJ) \
    80    s_add256M$(OBJ) \
    81    s_sub128$(OBJ) \
    82    s_sub256M$(OBJ) \
    83    s_mul64ByShifted32To128$(OBJ) \
    84    s_mul64To128$(OBJ) \
    85    s_mul128By32$(OBJ) \
    86    s_mul128To256M$(OBJ) \
    87    s_approxRecip_1Ks$(OBJ) \
    88    s_approxRecip32_1$(OBJ) \
    89    s_approxRecipSqrt_1Ks$(OBJ) \
    90    s_approxRecipSqrt32_1$(OBJ) \
    91  
    92  OBJS_SPECIALIZE = \
    93    s_f16UIToCommonNaN$(OBJ) \
    94    s_commonNaNToF16UI$(OBJ) \
    95    s_propagateNaNF16UI$(OBJ) \
    96    s_f32UIToCommonNaN$(OBJ) \
    97    s_commonNaNToF32UI$(OBJ) \
    98    s_propagateNaNF32UI$(OBJ) \
    99    s_f64UIToCommonNaN$(OBJ) \
   100    s_commonNaNToF64UI$(OBJ) \
   101    s_propagateNaNF64UI$(OBJ) \
   102    extF80M_isSignalingNaN$(OBJ) \
   103    s_extF80UIToCommonNaN$(OBJ) \
   104    s_commonNaNToExtF80UI$(OBJ) \
   105    s_propagateNaNExtF80UI$(OBJ) \
   106    f128M_isSignalingNaN$(OBJ) \
   107    s_f128UIToCommonNaN$(OBJ) \
   108    s_commonNaNToF128UI$(OBJ) \
   109    s_propagateNaNF128UI$(OBJ) \
   110  
   111  #OBJS_SPECIALIZE = \
   112    #softfloat_raiseFlags$(OBJ) \
   113    #s_f16UIToCommonNaN$(OBJ) \
   114    #s_commonNaNToF16UI$(OBJ) \
   115    #s_propagateNaNF16UI$(OBJ) \
   116    #s_f32UIToCommonNaN$(OBJ) \
   117    #s_commonNaNToF32UI$(OBJ) \
   118    #s_propagateNaNF32UI$(OBJ) \
   119    #s_f64UIToCommonNaN$(OBJ) \
   120    #s_commonNaNToF64UI$(OBJ) \
   121    #s_propagateNaNF64UI$(OBJ) \
   122    #extF80M_isSignalingNaN$(OBJ) \
   123    #s_extF80UIToCommonNaN$(OBJ) \
   124    #s_commonNaNToExtF80UI$(OBJ) \
   125    #s_propagateNaNExtF80UI$(OBJ) \
   126    #f128M_isSignalingNaN$(OBJ) \
   127    #s_f128UIToCommonNaN$(OBJ) \
   128    #s_commonNaNToF128UI$(OBJ) \
   129    #s_propagateNaNF128UI$(OBJ) \
   130  
   131  OBJS_OTHERS = \
   132    s_roundToUI32$(OBJ) \
   133    s_roundToUI64$(OBJ) \
   134    s_roundToI32$(OBJ) \
   135    s_roundToI64$(OBJ) \
   136    s_normSubnormalF16Sig$(OBJ) \
   137    s_roundPackToF16$(OBJ) \
   138    s_normRoundPackToF16$(OBJ) \
   139    s_addMagsF16$(OBJ) \
   140    s_subMagsF16$(OBJ) \
   141    s_mulAddF16$(OBJ) \
   142    s_normSubnormalF32Sig$(OBJ) \
   143    s_roundPackToF32$(OBJ) \
   144    s_normRoundPackToF32$(OBJ) \
   145    s_addMagsF32$(OBJ) \
   146    s_subMagsF32$(OBJ) \
   147    s_mulAddF32$(OBJ) \
   148    s_normSubnormalF64Sig$(OBJ) \
   149    s_roundPackToF64$(OBJ) \
   150    s_normRoundPackToF64$(OBJ) \
   151    s_addMagsF64$(OBJ) \
   152    s_subMagsF64$(OBJ) \
   153    s_mulAddF64$(OBJ) \
   154    s_normSubnormalExtF80Sig$(OBJ) \
   155    s_roundPackToExtF80$(OBJ) \
   156    s_normRoundPackToExtF80$(OBJ) \
   157    s_addMagsExtF80$(OBJ) \
   158    s_subMagsExtF80$(OBJ) \
   159    s_normSubnormalF128Sig$(OBJ) \
   160    s_roundPackToF128$(OBJ) \
   161    s_normRoundPackToF128$(OBJ) \
   162    s_addMagsF128$(OBJ) \
   163    s_subMagsF128$(OBJ) \
   164    s_mulAddF128$(OBJ) \
   165    softfloat_state$(OBJ) \
   166    ui32_to_f16$(OBJ) \
   167    ui32_to_f32$(OBJ) \
   168    ui32_to_f64$(OBJ) \
   169    ui32_to_extF80$(OBJ) \
   170    ui32_to_extF80M$(OBJ) \
   171    ui32_to_f128$(OBJ) \
   172    ui32_to_f128M$(OBJ) \
   173    ui64_to_f16$(OBJ) \
   174    ui64_to_f32$(OBJ) \
   175    ui64_to_f64$(OBJ) \
   176    ui64_to_extF80$(OBJ) \
   177    ui64_to_extF80M$(OBJ) \
   178    ui64_to_f128$(OBJ) \
   179    ui64_to_f128M$(OBJ) \
   180    i32_to_f16$(OBJ) \
   181    i32_to_f32$(OBJ) \
   182    i32_to_f64$(OBJ) \
   183    i32_to_extF80$(OBJ) \
   184    i32_to_extF80M$(OBJ) \
   185    i32_to_f128$(OBJ) \
   186    i32_to_f128M$(OBJ) \
   187    i64_to_f16$(OBJ) \
   188    i64_to_f32$(OBJ) \
   189    i64_to_f64$(OBJ) \
   190    i64_to_extF80$(OBJ) \
   191    i64_to_extF80M$(OBJ) \
   192    i64_to_f128$(OBJ) \
   193    i64_to_f128M$(OBJ) \
   194    f16_to_ui32$(OBJ) \
   195    f16_to_ui64$(OBJ) \
   196    f16_to_i32$(OBJ) \
   197    f16_to_i64$(OBJ) \
   198    f16_to_ui32_r_minMag$(OBJ) \
   199    f16_to_ui64_r_minMag$(OBJ) \
   200    f16_to_i32_r_minMag$(OBJ) \
   201    f16_to_i64_r_minMag$(OBJ) \
   202    f16_to_f32$(OBJ) \
   203    f16_to_f64$(OBJ) \
   204    f16_to_extF80$(OBJ) \
   205    f16_to_extF80M$(OBJ) \
   206    f16_to_f128$(OBJ) \
   207    f16_to_f128M$(OBJ) \
   208    f16_roundToInt$(OBJ) \
   209    f16_add$(OBJ) \
   210    f16_sub$(OBJ) \
   211    f16_mul$(OBJ) \
   212    f16_mulAdd$(OBJ) \
   213    f16_div$(OBJ) \
   214    f16_rem$(OBJ) \
   215    f16_sqrt$(OBJ) \
   216    f16_eq$(OBJ) \
   217    f16_le$(OBJ) \
   218    f16_lt$(OBJ) \
   219    f16_eq_signaling$(OBJ) \
   220    f16_le_quiet$(OBJ) \
   221    f16_lt_quiet$(OBJ) \
   222    f16_isSignalingNaN$(OBJ) \
   223    f32_to_ui32$(OBJ) \
   224    f32_to_ui64$(OBJ) \
   225    f32_to_i32$(OBJ) \
   226    f32_to_i64$(OBJ) \
   227    f32_to_ui32_r_minMag$(OBJ) \
   228    f32_to_ui64_r_minMag$(OBJ) \
   229    f32_to_i32_r_minMag$(OBJ) \
   230    f32_to_i64_r_minMag$(OBJ) \
   231    f32_to_f16$(OBJ) \
   232    f32_to_f64$(OBJ) \
   233    f32_to_extF80$(OBJ) \
   234    f32_to_extF80M$(OBJ) \
   235    f32_to_f128$(OBJ) \
   236    f32_to_f128M$(OBJ) \
   237    f32_roundToInt$(OBJ) \
   238    f32_add$(OBJ) \
   239    f32_sub$(OBJ) \
   240    f32_mul$(OBJ) \
   241    f32_mulAdd$(OBJ) \
   242    f32_div$(OBJ) \
   243    f32_rem$(OBJ) \
   244    f32_sqrt$(OBJ) \
   245    f32_eq$(OBJ) \
   246    f32_le$(OBJ) \
   247    f32_lt$(OBJ) \
   248    f32_eq_signaling$(OBJ) \
   249    f32_le_quiet$(OBJ) \
   250    f32_lt_quiet$(OBJ) \
   251    f32_isSignalingNaN$(OBJ) \
   252    f64_to_ui32$(OBJ) \
   253    f64_to_ui64$(OBJ) \
   254    f64_to_i32$(OBJ) \
   255    f64_to_i64$(OBJ) \
   256    f64_to_ui32_r_minMag$(OBJ) \
   257    f64_to_ui64_r_minMag$(OBJ) \
   258    f64_to_i32_r_minMag$(OBJ) \
   259    f64_to_i64_r_minMag$(OBJ) \
   260    f64_to_f16$(OBJ) \
   261    f64_to_f32$(OBJ) \
   262    f64_to_extF80$(OBJ) \
   263    f64_to_extF80M$(OBJ) \
   264    f64_to_f128$(OBJ) \
   265    f64_to_f128M$(OBJ) \
   266    f64_roundToInt$(OBJ) \
   267    f64_add$(OBJ) \
   268    f64_sub$(OBJ) \
   269    f64_mul$(OBJ) \
   270    f64_mulAdd$(OBJ) \
   271    f64_div$(OBJ) \
   272    f64_rem$(OBJ) \
   273    f64_sqrt$(OBJ) \
   274    f64_eq$(OBJ) \
   275    f64_le$(OBJ) \
   276    f64_lt$(OBJ) \
   277    f64_eq_signaling$(OBJ) \
   278    f64_le_quiet$(OBJ) \
   279    f64_lt_quiet$(OBJ) \
   280    f64_isSignalingNaN$(OBJ) \
   281    extF80_to_ui32$(OBJ) \
   282    extF80_to_ui64$(OBJ) \
   283    extF80_to_i32$(OBJ) \
   284    extF80_to_i64$(OBJ) \
   285    extF80_to_ui32_r_minMag$(OBJ) \
   286    extF80_to_ui64_r_minMag$(OBJ) \
   287    extF80_to_i32_r_minMag$(OBJ) \
   288    extF80_to_i64_r_minMag$(OBJ) \
   289    extF80_to_f16$(OBJ) \
   290    extF80_to_f32$(OBJ) \
   291    extF80_to_f64$(OBJ) \
   292    extF80_to_f128$(OBJ) \
   293    extF80_roundToInt$(OBJ) \
   294    extF80_add$(OBJ) \
   295    extF80_sub$(OBJ) \
   296    extF80_mul$(OBJ) \
   297    extF80_div$(OBJ) \
   298    extF80_rem$(OBJ) \
   299    extF80_sqrt$(OBJ) \
   300    extF80_eq$(OBJ) \
   301    extF80_le$(OBJ) \
   302    extF80_lt$(OBJ) \
   303    extF80_eq_signaling$(OBJ) \
   304    extF80_le_quiet$(OBJ) \
   305    extF80_lt_quiet$(OBJ) \
   306    extF80_isSignalingNaN$(OBJ) \
   307    extF80M_to_ui32$(OBJ) \
   308    extF80M_to_ui64$(OBJ) \
   309    extF80M_to_i32$(OBJ) \
   310    extF80M_to_i64$(OBJ) \
   311    extF80M_to_ui32_r_minMag$(OBJ) \
   312    extF80M_to_ui64_r_minMag$(OBJ) \
   313    extF80M_to_i32_r_minMag$(OBJ) \
   314    extF80M_to_i64_r_minMag$(OBJ) \
   315    extF80M_to_f16$(OBJ) \
   316    extF80M_to_f32$(OBJ) \
   317    extF80M_to_f64$(OBJ) \
   318    extF80M_to_f128M$(OBJ) \
   319    extF80M_roundToInt$(OBJ) \
   320    extF80M_add$(OBJ) \
   321    extF80M_sub$(OBJ) \
   322    extF80M_mul$(OBJ) \
   323    extF80M_div$(OBJ) \
   324    extF80M_rem$(OBJ) \
   325    extF80M_sqrt$(OBJ) \
   326    extF80M_eq$(OBJ) \
   327    extF80M_le$(OBJ) \
   328    extF80M_lt$(OBJ) \
   329    extF80M_eq_signaling$(OBJ) \
   330    extF80M_le_quiet$(OBJ) \
   331    extF80M_lt_quiet$(OBJ) \
   332    f128_to_ui32$(OBJ) \
   333    f128_to_ui64$(OBJ) \
   334    f128_to_i32$(OBJ) \
   335    f128_to_i64$(OBJ) \
   336    f128_to_ui32_r_minMag$(OBJ) \
   337    f128_to_ui64_r_minMag$(OBJ) \
   338    f128_to_i32_r_minMag$(OBJ) \
   339    f128_to_i64_r_minMag$(OBJ) \
   340    f128_to_f16$(OBJ) \
   341    f128_to_f32$(OBJ) \
   342    f128_to_extF80$(OBJ) \
   343    f128_to_f64$(OBJ) \
   344    f128_roundToInt$(OBJ) \
   345    f128_add$(OBJ) \
   346    f128_sub$(OBJ) \
   347    f128_mul$(OBJ) \
   348    f128_mulAdd$(OBJ) \
   349    f128_div$(OBJ) \
   350    f128_rem$(OBJ) \
   351    f128_sqrt$(OBJ) \
   352    f128_eq$(OBJ) \
   353    f128_le$(OBJ) \
   354    f128_lt$(OBJ) \
   355    f128_eq_signaling$(OBJ) \
   356    f128_le_quiet$(OBJ) \
   357    f128_lt_quiet$(OBJ) \
   358    f128_isSignalingNaN$(OBJ) \
   359    f128M_to_ui32$(OBJ) \
   360    f128M_to_ui64$(OBJ) \
   361    f128M_to_i32$(OBJ) \
   362    f128M_to_i64$(OBJ) \
   363    f128M_to_ui32_r_minMag$(OBJ) \
   364    f128M_to_ui64_r_minMag$(OBJ) \
   365    f128M_to_i32_r_minMag$(OBJ) \
   366    f128M_to_i64_r_minMag$(OBJ) \
   367    f128M_to_f16$(OBJ) \
   368    f128M_to_f32$(OBJ) \
   369    f128M_to_extF80M$(OBJ) \
   370    f128M_to_f64$(OBJ) \
   371    f128M_roundToInt$(OBJ) \
   372    f128M_add$(OBJ) \
   373    f128M_sub$(OBJ) \
   374    f128M_mul$(OBJ) \
   375    f128M_mulAdd$(OBJ) \
   376    f128M_div$(OBJ) \
   377    f128M_rem$(OBJ) \
   378    f128M_sqrt$(OBJ) \
   379    f128M_eq$(OBJ) \
   380    f128M_le$(OBJ) \
   381    f128M_lt$(OBJ) \
   382    f128M_eq_signaling$(OBJ) \
   383    f128M_le_quiet$(OBJ) \
   384    f128M_lt_quiet$(OBJ) \
   385  
   386  OBJS_ALL = $(OBJS_PRIMITIVES) $(OBJS_SPECIALIZE) $(OBJS_OTHERS)
   387  
   388  $(OBJS_ALL): \
   389    $(OTHER_HEADERS) platform.h $(SOURCE_DIR)/include/primitiveTypes.h \
   390    $(SOURCE_DIR)/include/primitives.h
   391  $(OBJS_SPECIALIZE) $(OBJS_OTHERS): \
   392    $(SOURCE_DIR)/include/softfloat_types.h $(SOURCE_DIR)/include/internals.h \
   393    $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/specialize.h \
   394    $(SOURCE_DIR)/include/softfloat.h
   395  
   396  $(OBJS_PRIMITIVES) $(OBJS_OTHERS): %$(OBJ): $(SOURCE_DIR)/%.c
   397  	$(COMPILE_C) $(SOURCE_DIR)/$*.c
   398  
   399  $(OBJS_SPECIALIZE): %$(OBJ): $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/%.c
   400  	$(COMPILE_C) $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/$*.c
   401  
   402  libsoftfloat$(LIB): $(OBJS_ALL)
   403  	$(DELETE) $@
   404  	$(MAKELIB) $^
   405  
   406  .PHONY: clean
   407  clean:
   408  	$(DELETE) $(OBJS_ALL) libsoftfloat$(LIB)
   409