summaryrefslogtreecommitdiff
blob: fab3a8a09ee302b00e552e0aba098ce5dcc8b58b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
diff --git a/common.mk b/common.mk
index 5513098a5..999df774b 100644
--- a/common.mk
+++ b/common.mk
@@ -118,7 +118,8 @@ get-noopt-cxxflags-for   = $(strip $(CFLAGS_PRESET) \
 get-refinit-cflags-for   = $(strip $(call load-var-for,COPTFLAGS,$(1)) \
                                    $(call get-noopt-cflags-for,$(1)) \
                                    -DBLIS_CNAME=$(1) \
-                                   $(BUILD_FLAGS) \
+                                   $(BUILD_CPPFLAGS) \
+                                   $(BUILD_SYMFLAGS) \
                             )
 
 get-refkern-cflags-for   = $(strip $(call load-var-for,CROPTFLAGS,$(1)) \
@@ -126,23 +127,27 @@ get-refkern-cflags-for   = $(strip $(call load-var-for,CROPTFLAGS,$(1)) \
                                    $(call get-noopt-cflags-for,$(1)) \
                                    $(COMPSIMDFLAGS) \
                                    -DBLIS_CNAME=$(1) \
-                                   $(BUILD_FLAGS) \
+                                   $(BUILD_CPPFLAGS) \
+                                   $(BUILD_SYMFLAGS) \
                             )
 
 get-config-cflags-for    = $(strip $(call load-var-for,COPTFLAGS,$(1)) \
                                    $(call get-noopt-cflags-for,$(1)) \
-                                   $(BUILD_FLAGS) \
+                                   $(BUILD_CPPFLAGS) \
+                                   $(BUILD_SYMFLAGS) \
                             )
 
 get-frame-cflags-for     = $(strip $(call load-var-for,COPTFLAGS,$(1)) \
                                    $(call get-noopt-cflags-for,$(1)) \
-                                   $(BUILD_FLAGS) \
+                                   $(BUILD_CPPFLAGS) \
+                                   $(BUILD_SYMFLAGS) \
                             )
 
 get-kernel-cflags-for    = $(strip $(call load-var-for,CKOPTFLAGS,$(1)) \
                                    $(call load-var-for,CKVECFLAGS,$(1)) \
                                    $(call get-noopt-cflags-for,$(1)) \
-                                   $(BUILD_FLAGS) \
+                                   $(BUILD_CPPFLAGS) \
+                                   $(BUILD_SYMFLAGS) \
                             )
 
 # When compiling sandboxes, we use flags similar to those of general framework
@@ -153,19 +158,24 @@ get-kernel-cflags-for    = $(strip $(call load-var-for,CKOPTFLAGS,$(1)) \
 get-sandbox-c99flags-for = $(strip $(call load-var-for,COPTFLAGS,$(1)) \
                                    $(call get-noopt-cflags-for,$(1)) \
                                    $(CSBOXINCFLAGS) \
-                                   $(BUILD_FLAGS) \
+                                   $(BUILD_CPPFLAGS) \
+                                   $(BUILD_SYMFLAGS) \
                             )
 get-sandbox-cxxflags-for = $(strip $(call load-var-for,COPTFLAGS,$(1)) \
                                    $(call get-noopt-cxxflags-for,$(1)) \
                                    $(CSBOXINCFLAGS) \
-                                   $(BUILD_FLAGS) \
+                                   $(BUILD_CPPFLAGS) \
+                                   $(BUILD_SYMFLAGS) \
                             )
 
 # Define a separate function that will return appropriate flags for use by
 # applications that want to use the same basic flags as those used when BLIS
-# was compiled. (This is the same as get-frame-cflags-for(), except that it
-# omits the BUILD_FLAGS, which are exclusively for use when BLIS is being
-# compiled.)
+# was compiled. (NOTE: This is the same as the $(get-frame-cflags-for ...)
+# function, except that it omits two variables that contain flags exclusively
+# for use when BLIS is being compiled/built: BUILD_CPPFLAGS, which contains a
+# cpp macro that confirms that BLIS is being built; and BUILD_SYMFLAGS, which
+# contains symbol export flags that are only needed when a shared library is
+# being compiled/linked.)
 get-user-cflags-for      = $(strip $(call load-var-for,COPTFLAGS,$(1)) \
                                    $(call get-noopt-cflags-for,$(1)) \
                             )
@@ -627,22 +637,26 @@ $(foreach c, $(CONFIG_LIST_FAM), $(eval $(call append-var-for,CPICFLAGS,$(c))))
 
 # --- Symbol exporting flags (shared libraries only) ---
 
+# NOTE: These flags are only applied when building BLIS and not used by
+# applications that import BLIS compilation flags via the
+# $(get-user-cflags-for ...) function.
+
 # Determine default export behavior / visibility of symbols for gcc.
 ifeq ($(CC_VENDOR),gcc)
 ifeq ($(IS_WIN),yes)
 ifeq ($(EXPORT_SHARED),all)
-CMISCFLAGS := -Wl,--export-all-symbols, -Wl,--enable-auto-import
+BUILD_SYMFLAGS := -Wl,--export-all-symbols, -Wl,--enable-auto-import
 else # ifeq ($(EXPORT_SHARED),public)
-CMISCFLAGS := -Wl,--exclude-all-symbols
+BUILD_SYMFLAGS := -Wl,--exclude-all-symbols
 endif
 else # ifeq ($(IS_WIN),no)
 ifeq ($(EXPORT_SHARED),all)
 # Export all symbols by default.
-CMISCFLAGS := -fvisibility=default
+BUILD_SYMFLAGS := -fvisibility=default
 else # ifeq ($(EXPORT_SHARED),public)
 # Hide all symbols by default and export only those that have been annotated
 # as needing to be exported.
-CMISCFLAGS := -fvisibility=hidden
+BUILD_SYMFLAGS := -fvisibility=hidden
 endif
 endif
 endif
@@ -653,11 +667,11 @@ endif
 ifeq ($(CC_VENDOR),icc)
 ifeq ($(EXPORT_SHARED),all)
 # Export all symbols by default.
-CMISCFLAGS := -fvisibility=default
+BUILD_SYMFLAGS := -fvisibility=default
 else # ifeq ($(EXPORT_SHARED),public)
 # Hide all symbols by default and export only those that have been annotated
 # as needing to be exported.
-CMISCFLAGS := -fvisibility=hidden
+BUILD_SYMFLAGS := -fvisibility=hidden
 endif
 endif
 
@@ -667,27 +681,25 @@ ifeq ($(IS_WIN),yes)
 ifeq ($(EXPORT_SHARED),all)
 # NOTE: clang on Windows does not appear to support exporting all symbols
 # by default, and therefore we ignore the value of EXPORT_SHARED.
-CMISCFLAGS :=
+BUILD_SYMFLAGS :=
 else # ifeq ($(EXPORT_SHARED),public)
 # NOTE: The default behavior of clang on Windows is to hide all symbols
 # and only export functions and other declarations that have beenannotated
 # as needing to be exported.
-CMISCFLAGS :=
+BUILD_SYMFLAGS :=
 endif
 else # ifeq ($(IS_WIN),no)
 ifeq ($(EXPORT_SHARED),all)
 # Export all symbols by default.
-CMISCFLAGS := -fvisibility=default
+BUILD_SYMFLAGS := -fvisibility=default
 else # ifeq ($(EXPORT_SHARED),public)
 # Hide all symbols by default and export only those that have been annotated
 # as needing to be exported.
-CMISCFLAGS := -fvisibility=hidden
+BUILD_SYMFLAGS := -fvisibility=hidden
 endif
 endif
 endif
 
-$(foreach c, $(CONFIG_LIST_FAM), $(eval $(call append-var-for,CMISCFLAGS,$(c))))
-
 # --- Language flags ---
 
 # Enable C99.
@@ -1026,7 +1038,7 @@ VERS_DEF       := -DBLIS_VERSION_STRING=\"$(VERSION)\"
 # Define a C preprocessor flag that is *only* defined when BLIS is being
 # compiled. (In other words, an application that #includes blis.h will not
 # get this cpp macro.)
-BUILD_FLAGS    := -DBLIS_IS_BUILDING_LIBRARY
+BUILD_CPPFLAGS := -DBLIS_IS_BUILDING_LIBRARY
 
 
 
diff --git a/configure b/configure
index 5b5695cd5..bb21671f0 100755
--- a/configure
+++ b/configure
@@ -152,13 +152,13 @@ print_usage()
 	echo "                 functions and variables that belong to public APIs are"
 	echo "                 exported in shared libraries. However, the user may"
 	echo "                 instead export all symbols in BLIS, even those that were"
-	echo "                 intended for internal use only. Note Note that the public"
-	echo "                 APIs encompass all functions that almost any user would"
-	echo "                 ever want to call, including the BLAS/CBLAS compatibility"
-	echo "                 APIs as well as the basic and expert interfaces to the"
-	echo "                 typed and object APIs that are unique to BLIS. Also note"
-	echo "                 that changing this option to 'all' will have no effect in"
-	echo "                 some environments, such as when compiling with clang on"
+	echo "                 intended for internal use only. Note that the public APIs"
+	echo "                 encompass all functions that almost any user would ever"
+	echo "                 want to call, including the BLAS/CBLAS compatibility APIs"
+	echo "                 as well as the basic and expert interfaces to the typed"
+	echo "                 and object APIs that are unique to BLIS. Also note that"
+	echo "                 changing this option to 'all' will have no effect in some"
+	echo "                 environments, such as when compiling with clang on"
 	echo "                 Windows."
 	echo " "
 	echo "   -t MODEL, --enable-threading[=MODEL], --disable-threading"