github.com/igggame/nebulas-go@v2.1.0+incompatible/nbre/3rd_party/SoftFloat-3e/build/Win64-MinGW-w64/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    x86_64-w64-mingw32-gcc -c -Werror-implicit-function-declaration \
    48      -DSOFTFLOAT_FAST_INT64 $(SOFTFLOAT_OPTS) $(C_INCLUDES) -O2 -o $@
    49  MAKELIB = x86_64-w64-mingw32-ar crs $@
    50  
    51  OBJ = .o
    52  LIB = .a
    53  
    54  OTHER_HEADERS = $(SOURCE_DIR)/include/opts-GCC.h
    55  
    56  .PHONY: all
    57  all: softfloat$(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    softfloat_raiseFlags$(OBJ) \
    94    s_f16UIToCommonNaN$(OBJ) \
    95    s_commonNaNToF16UI$(OBJ) \
    96    s_propagateNaNF16UI$(OBJ) \
    97    s_f32UIToCommonNaN$(OBJ) \
    98    s_commonNaNToF32UI$(OBJ) \
    99    s_propagateNaNF32UI$(OBJ) \
   100    s_f64UIToCommonNaN$(OBJ) \
   101    s_commonNaNToF64UI$(OBJ) \
   102    s_propagateNaNF64UI$(OBJ) \
   103    extF80M_isSignalingNaN$(OBJ) \
   104    s_extF80UIToCommonNaN$(OBJ) \
   105    s_commonNaNToExtF80UI$(OBJ) \
   106    s_propagateNaNExtF80UI$(OBJ) \
   107    f128M_isSignalingNaN$(OBJ) \
   108    s_f128UIToCommonNaN$(OBJ) \
   109    s_commonNaNToF128UI$(OBJ) \
   110    s_propagateNaNF128UI$(OBJ) \
   111  
   112  OBJS_OTHERS = \
   113    s_roundToUI32$(OBJ) \
   114    s_roundToUI64$(OBJ) \
   115    s_roundToI32$(OBJ) \
   116    s_roundToI64$(OBJ) \
   117    s_normSubnormalF16Sig$(OBJ) \
   118    s_roundPackToF16$(OBJ) \
   119    s_normRoundPackToF16$(OBJ) \
   120    s_addMagsF16$(OBJ) \
   121    s_subMagsF16$(OBJ) \
   122    s_mulAddF16$(OBJ) \
   123    s_normSubnormalF32Sig$(OBJ) \
   124    s_roundPackToF32$(OBJ) \
   125    s_normRoundPackToF32$(OBJ) \
   126    s_addMagsF32$(OBJ) \
   127    s_subMagsF32$(OBJ) \
   128    s_mulAddF32$(OBJ) \
   129    s_normSubnormalF64Sig$(OBJ) \
   130    s_roundPackToF64$(OBJ) \
   131    s_normRoundPackToF64$(OBJ) \
   132    s_addMagsF64$(OBJ) \
   133    s_subMagsF64$(OBJ) \
   134    s_mulAddF64$(OBJ) \
   135    s_normSubnormalExtF80Sig$(OBJ) \
   136    s_roundPackToExtF80$(OBJ) \
   137    s_normRoundPackToExtF80$(OBJ) \
   138    s_addMagsExtF80$(OBJ) \
   139    s_subMagsExtF80$(OBJ) \
   140    s_normSubnormalF128Sig$(OBJ) \
   141    s_roundPackToF128$(OBJ) \
   142    s_normRoundPackToF128$(OBJ) \
   143    s_addMagsF128$(OBJ) \
   144    s_subMagsF128$(OBJ) \
   145    s_mulAddF128$(OBJ) \
   146    softfloat_state$(OBJ) \
   147    ui32_to_f16$(OBJ) \
   148    ui32_to_f32$(OBJ) \
   149    ui32_to_f64$(OBJ) \
   150    ui32_to_extF80$(OBJ) \
   151    ui32_to_extF80M$(OBJ) \
   152    ui32_to_f128$(OBJ) \
   153    ui32_to_f128M$(OBJ) \
   154    ui64_to_f16$(OBJ) \
   155    ui64_to_f32$(OBJ) \
   156    ui64_to_f64$(OBJ) \
   157    ui64_to_extF80$(OBJ) \
   158    ui64_to_extF80M$(OBJ) \
   159    ui64_to_f128$(OBJ) \
   160    ui64_to_f128M$(OBJ) \
   161    i32_to_f16$(OBJ) \
   162    i32_to_f32$(OBJ) \
   163    i32_to_f64$(OBJ) \
   164    i32_to_extF80$(OBJ) \
   165    i32_to_extF80M$(OBJ) \
   166    i32_to_f128$(OBJ) \
   167    i32_to_f128M$(OBJ) \
   168    i64_to_f16$(OBJ) \
   169    i64_to_f32$(OBJ) \
   170    i64_to_f64$(OBJ) \
   171    i64_to_extF80$(OBJ) \
   172    i64_to_extF80M$(OBJ) \
   173    i64_to_f128$(OBJ) \
   174    i64_to_f128M$(OBJ) \
   175    f16_to_ui32$(OBJ) \
   176    f16_to_ui64$(OBJ) \
   177    f16_to_i32$(OBJ) \
   178    f16_to_i64$(OBJ) \
   179    f16_to_ui32_r_minMag$(OBJ) \
   180    f16_to_ui64_r_minMag$(OBJ) \
   181    f16_to_i32_r_minMag$(OBJ) \
   182    f16_to_i64_r_minMag$(OBJ) \
   183    f16_to_f32$(OBJ) \
   184    f16_to_f64$(OBJ) \
   185    f16_to_extF80$(OBJ) \
   186    f16_to_extF80M$(OBJ) \
   187    f16_to_f128$(OBJ) \
   188    f16_to_f128M$(OBJ) \
   189    f16_roundToInt$(OBJ) \
   190    f16_add$(OBJ) \
   191    f16_sub$(OBJ) \
   192    f16_mul$(OBJ) \
   193    f16_mulAdd$(OBJ) \
   194    f16_div$(OBJ) \
   195    f16_rem$(OBJ) \
   196    f16_sqrt$(OBJ) \
   197    f16_eq$(OBJ) \
   198    f16_le$(OBJ) \
   199    f16_lt$(OBJ) \
   200    f16_eq_signaling$(OBJ) \
   201    f16_le_quiet$(OBJ) \
   202    f16_lt_quiet$(OBJ) \
   203    f16_isSignalingNaN$(OBJ) \
   204    f32_to_ui32$(OBJ) \
   205    f32_to_ui64$(OBJ) \
   206    f32_to_i32$(OBJ) \
   207    f32_to_i64$(OBJ) \
   208    f32_to_ui32_r_minMag$(OBJ) \
   209    f32_to_ui64_r_minMag$(OBJ) \
   210    f32_to_i32_r_minMag$(OBJ) \
   211    f32_to_i64_r_minMag$(OBJ) \
   212    f32_to_f16$(OBJ) \
   213    f32_to_f64$(OBJ) \
   214    f32_to_extF80$(OBJ) \
   215    f32_to_extF80M$(OBJ) \
   216    f32_to_f128$(OBJ) \
   217    f32_to_f128M$(OBJ) \
   218    f32_roundToInt$(OBJ) \
   219    f32_add$(OBJ) \
   220    f32_sub$(OBJ) \
   221    f32_mul$(OBJ) \
   222    f32_mulAdd$(OBJ) \
   223    f32_div$(OBJ) \
   224    f32_rem$(OBJ) \
   225    f32_sqrt$(OBJ) \
   226    f32_eq$(OBJ) \
   227    f32_le$(OBJ) \
   228    f32_lt$(OBJ) \
   229    f32_eq_signaling$(OBJ) \
   230    f32_le_quiet$(OBJ) \
   231    f32_lt_quiet$(OBJ) \
   232    f32_isSignalingNaN$(OBJ) \
   233    f64_to_ui32$(OBJ) \
   234    f64_to_ui64$(OBJ) \
   235    f64_to_i32$(OBJ) \
   236    f64_to_i64$(OBJ) \
   237    f64_to_ui32_r_minMag$(OBJ) \
   238    f64_to_ui64_r_minMag$(OBJ) \
   239    f64_to_i32_r_minMag$(OBJ) \
   240    f64_to_i64_r_minMag$(OBJ) \
   241    f64_to_f16$(OBJ) \
   242    f64_to_f32$(OBJ) \
   243    f64_to_extF80$(OBJ) \
   244    f64_to_extF80M$(OBJ) \
   245    f64_to_f128$(OBJ) \
   246    f64_to_f128M$(OBJ) \
   247    f64_roundToInt$(OBJ) \
   248    f64_add$(OBJ) \
   249    f64_sub$(OBJ) \
   250    f64_mul$(OBJ) \
   251    f64_mulAdd$(OBJ) \
   252    f64_div$(OBJ) \
   253    f64_rem$(OBJ) \
   254    f64_sqrt$(OBJ) \
   255    f64_eq$(OBJ) \
   256    f64_le$(OBJ) \
   257    f64_lt$(OBJ) \
   258    f64_eq_signaling$(OBJ) \
   259    f64_le_quiet$(OBJ) \
   260    f64_lt_quiet$(OBJ) \
   261    f64_isSignalingNaN$(OBJ) \
   262    extF80_to_ui32$(OBJ) \
   263    extF80_to_ui64$(OBJ) \
   264    extF80_to_i32$(OBJ) \
   265    extF80_to_i64$(OBJ) \
   266    extF80_to_ui32_r_minMag$(OBJ) \
   267    extF80_to_ui64_r_minMag$(OBJ) \
   268    extF80_to_i32_r_minMag$(OBJ) \
   269    extF80_to_i64_r_minMag$(OBJ) \
   270    extF80_to_f16$(OBJ) \
   271    extF80_to_f32$(OBJ) \
   272    extF80_to_f64$(OBJ) \
   273    extF80_to_f128$(OBJ) \
   274    extF80_roundToInt$(OBJ) \
   275    extF80_add$(OBJ) \
   276    extF80_sub$(OBJ) \
   277    extF80_mul$(OBJ) \
   278    extF80_div$(OBJ) \
   279    extF80_rem$(OBJ) \
   280    extF80_sqrt$(OBJ) \
   281    extF80_eq$(OBJ) \
   282    extF80_le$(OBJ) \
   283    extF80_lt$(OBJ) \
   284    extF80_eq_signaling$(OBJ) \
   285    extF80_le_quiet$(OBJ) \
   286    extF80_lt_quiet$(OBJ) \
   287    extF80_isSignalingNaN$(OBJ) \
   288    extF80M_to_ui32$(OBJ) \
   289    extF80M_to_ui64$(OBJ) \
   290    extF80M_to_i32$(OBJ) \
   291    extF80M_to_i64$(OBJ) \
   292    extF80M_to_ui32_r_minMag$(OBJ) \
   293    extF80M_to_ui64_r_minMag$(OBJ) \
   294    extF80M_to_i32_r_minMag$(OBJ) \
   295    extF80M_to_i64_r_minMag$(OBJ) \
   296    extF80M_to_f16$(OBJ) \
   297    extF80M_to_f32$(OBJ) \
   298    extF80M_to_f64$(OBJ) \
   299    extF80M_to_f128M$(OBJ) \
   300    extF80M_roundToInt$(OBJ) \
   301    extF80M_add$(OBJ) \
   302    extF80M_sub$(OBJ) \
   303    extF80M_mul$(OBJ) \
   304    extF80M_div$(OBJ) \
   305    extF80M_rem$(OBJ) \
   306    extF80M_sqrt$(OBJ) \
   307    extF80M_eq$(OBJ) \
   308    extF80M_le$(OBJ) \
   309    extF80M_lt$(OBJ) \
   310    extF80M_eq_signaling$(OBJ) \
   311    extF80M_le_quiet$(OBJ) \
   312    extF80M_lt_quiet$(OBJ) \
   313    f128_to_ui32$(OBJ) \
   314    f128_to_ui64$(OBJ) \
   315    f128_to_i32$(OBJ) \
   316    f128_to_i64$(OBJ) \
   317    f128_to_ui32_r_minMag$(OBJ) \
   318    f128_to_ui64_r_minMag$(OBJ) \
   319    f128_to_i32_r_minMag$(OBJ) \
   320    f128_to_i64_r_minMag$(OBJ) \
   321    f128_to_f16$(OBJ) \
   322    f128_to_f32$(OBJ) \
   323    f128_to_extF80$(OBJ) \
   324    f128_to_f64$(OBJ) \
   325    f128_roundToInt$(OBJ) \
   326    f128_add$(OBJ) \
   327    f128_sub$(OBJ) \
   328    f128_mul$(OBJ) \
   329    f128_mulAdd$(OBJ) \
   330    f128_div$(OBJ) \
   331    f128_rem$(OBJ) \
   332    f128_sqrt$(OBJ) \
   333    f128_eq$(OBJ) \
   334    f128_le$(OBJ) \
   335    f128_lt$(OBJ) \
   336    f128_eq_signaling$(OBJ) \
   337    f128_le_quiet$(OBJ) \
   338    f128_lt_quiet$(OBJ) \
   339    f128_isSignalingNaN$(OBJ) \
   340    f128M_to_ui32$(OBJ) \
   341    f128M_to_ui64$(OBJ) \
   342    f128M_to_i32$(OBJ) \
   343    f128M_to_i64$(OBJ) \
   344    f128M_to_ui32_r_minMag$(OBJ) \
   345    f128M_to_ui64_r_minMag$(OBJ) \
   346    f128M_to_i32_r_minMag$(OBJ) \
   347    f128M_to_i64_r_minMag$(OBJ) \
   348    f128M_to_f16$(OBJ) \
   349    f128M_to_f32$(OBJ) \
   350    f128M_to_extF80M$(OBJ) \
   351    f128M_to_f64$(OBJ) \
   352    f128M_roundToInt$(OBJ) \
   353    f128M_add$(OBJ) \
   354    f128M_sub$(OBJ) \
   355    f128M_mul$(OBJ) \
   356    f128M_mulAdd$(OBJ) \
   357    f128M_div$(OBJ) \
   358    f128M_rem$(OBJ) \
   359    f128M_sqrt$(OBJ) \
   360    f128M_eq$(OBJ) \
   361    f128M_le$(OBJ) \
   362    f128M_lt$(OBJ) \
   363    f128M_eq_signaling$(OBJ) \
   364    f128M_le_quiet$(OBJ) \
   365    f128M_lt_quiet$(OBJ) \
   366  
   367  OBJS_ALL = $(OBJS_PRIMITIVES) $(OBJS_SPECIALIZE) $(OBJS_OTHERS)
   368  
   369  $(OBJS_ALL): \
   370    $(OTHER_HEADERS) platform.h $(SOURCE_DIR)/include/primitiveTypes.h \
   371    $(SOURCE_DIR)/include/primitives.h
   372  $(OBJS_SPECIALIZE) $(OBJS_OTHERS): \
   373    $(SOURCE_DIR)/include/softfloat_types.h $(SOURCE_DIR)/include/internals.h \
   374    $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/specialize.h \
   375    $(SOURCE_DIR)/include/softfloat.h
   376  
   377  $(OBJS_PRIMITIVES) $(OBJS_OTHERS): %$(OBJ): $(SOURCE_DIR)/%.c
   378  	$(COMPILE_C) $(SOURCE_DIR)/$*.c
   379  
   380  $(OBJS_SPECIALIZE): %$(OBJ): $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/%.c
   381  	$(COMPILE_C) $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/$*.c
   382  
   383  softfloat$(LIB): $(OBJS_ALL)
   384  	$(DELETE) $@
   385  	$(MAKELIB) $^
   386  
   387  .PHONY: clean
   388  clean:
   389  	$(DELETE) $(OBJS_ALL) softfloat$(LIB)
   390