blob: 2f75c92b41fc120ab92ccbb1fd8dea2720f087c3 [file] [log] [blame]
Patrick Georgib1d26f02018-05-02 17:13:34 +02001This enables building on Mac OS and FreeBSD by adding support to their
2variants of the sed utility.
3
Stefan Reinauerba3a69f2016-04-06 13:00:16 -07004diff -urN gcc-5.2.0.orig/libgcc/config/t-hardfp gcc-5.2.0/libgcc/config/t-hardfp
5--- gcc-5.2.0.orig/libgcc/config/t-hardfp 2015-01-05 04:33:28.000000000 -0800
Patrick Georgib1d26f02018-05-02 17:13:34 +02006+++ gcc-8.1.0/libgcc/config/t-hardfp 2016-04-06 12:04:51.000000000 -0700
Stefan Reinauerba3a69f2016-04-06 13:00:16 -07007@@ -59,21 +59,52 @@
8
9 hardfp_func_list := $(filter-out $(hardfp_exclusions),$(hardfp_func_list))
10
11+HOST_OS ?= $(shell uname)
12+
13 # Regexp for matching a floating-point mode.
14+ifeq ($(HOST_OS), Darwin)
15+hardfp_mode_regexp := $(shell echo $(hardfp_float_modes) | sed 's/ /|/g')
16+else
17+ifeq ($(HOST_OS), FreeBSD)
18+hardfp_mode_regexp := $(shell echo $(hardfp_float_modes) | sed 's/ /|/g')
19+else
20 hardfp_mode_regexp := $(shell echo $(hardfp_float_modes) | sed 's/ /\\|/g')
21+endif
22+endif
23
24 # Regexp for matching the end of a function name, after the last
25 # floating-point mode.
26+ifeq ($(HOST_OS), Darwin)
27+hardfp_suffix_regexp := $(shell echo $(hardfp_int_modes) 2 3 | sed 's/ /|/g')
28+else
29+ifeq ($(HOST_OS), FreeBSD)
30+hardfp_suffix_regexp := $(shell echo $(hardfp_int_modes) 2 3 | sed 's/ /|/g')
31+else
32 hardfp_suffix_regexp := $(shell echo $(hardfp_int_modes) 2 3 | sed 's/ /\\|/g')
33+endif
34+endif
35
36 # Add -D options to define:
37 # FUNC: the function name (e.g. __addsf3)
38 # OP: the function name without the leading __ and with the last
39 # floating-point mode removed (e.g. add3)
40 # TYPE: the last floating-point mode (e.g. sf)
41+
42+ifeq ($(HOST_OS), Darwin)
43 hardfp_defines_for = \
44 $(shell echo $1 | \
45- sed 's/\(.*\)\($(hardfp_mode_regexp)\)\($(hardfp_suffix_regexp)\|\)$$/-DFUNC=__& -DOP_\1\3 -DTYPE=\2/')
46+ sed -E 's/(.*)($(hardfp_mode_regexp))($(hardfp_suffix_regexp)|.*)$$/-DFUNC=__& -DOP_\1\3 -DTYPE=\2/')
47+else
48+ifeq ($(HOST_OS), FreeBSD)
49+hardfp_defines_for = \
50+ $(shell echo $1 | \
51+ sed -r 's/(.*)($(hardfp_mode_regexp))($(hardfp_suffix_regexp)|.*)$$/-DFUNC=__& -DOP_\1\3 -DTYPE=\2/')
52+else
53+hardfp_defines_for = \
54+ $(shell echo $1 | \
55+ sed 's/\(.*\)\($(hardfp_mode_regexp)\)\($(hardfp_suffix_regexp)\|\)$$/-DFUNC=__& -DOP_\1\3 -DTYPE=\2/')
56+endif
57+endif
58
59 hardfp-o = $(patsubst %,%$(objext),$(hardfp_func_list))
60 $(hardfp-o): %$(objext): $(srcdir)/config/hardfp.c