@@ -63,6 +63,7 @@ PLATFORM_SHARED_EXT="so"
63
63
PLATFORM_SHARED_LDFLAGS=" -shared -Wl,-soname -Wl,"
64
64
PLATFORM_SHARED_CFLAGS=" -fPIC"
65
65
PLATFORM_SHARED_VERSIONED=true
66
+ PLATFORM_SSEFLAGS=
66
67
67
68
MEMCMP_FLAG=
68
69
if [ " $CXX " = " g++" ]; then
@@ -77,6 +78,7 @@ case "$TARGET_OS" in
77
78
COMMON_FLAGS=" $MEMCMP_FLAG -lpthread -DOS_LINUX -DCYGWIN"
78
79
PLATFORM_LDFLAGS=" -lpthread"
79
80
PORT_FILE=port/port_posix.cc
81
+ PORT_SSE_FILE=port/port_posix_sse.cc
80
82
;;
81
83
Darwin)
82
84
PLATFORM=OS_MACOSX
@@ -85,24 +87,28 @@ case "$TARGET_OS" in
85
87
[ -z " $INSTALL_PATH " ] && INSTALL_PATH=` pwd`
86
88
PLATFORM_SHARED_LDFLAGS=" -dynamiclib -install_name $INSTALL_PATH /"
87
89
PORT_FILE=port/port_posix.cc
90
+ PORT_SSE_FILE=port/port_posix_sse.cc
88
91
;;
89
92
Linux)
90
93
PLATFORM=OS_LINUX
91
94
COMMON_FLAGS=" $MEMCMP_FLAG -pthread -DOS_LINUX"
92
95
PLATFORM_LDFLAGS=" -pthread"
93
96
PORT_FILE=port/port_posix.cc
97
+ PORT_SSE_FILE=port/port_posix_sse.cc
94
98
;;
95
99
SunOS)
96
100
PLATFORM=OS_SOLARIS
97
101
COMMON_FLAGS=" $MEMCMP_FLAG -D_REENTRANT -DOS_SOLARIS"
98
102
PLATFORM_LIBS=" -lpthread -lrt"
99
103
PORT_FILE=port/port_posix.cc
104
+ PORT_SSE_FILE=port/port_posix_sse.cc
100
105
;;
101
106
FreeBSD)
102
107
PLATFORM=OS_FREEBSD
103
108
COMMON_FLAGS=" $MEMCMP_FLAG -D_REENTRANT -DOS_FREEBSD"
104
109
PLATFORM_LIBS=" -lpthread"
105
110
PORT_FILE=port/port_posix.cc
111
+ PORT_SSE_FILE=port/port_posix_sse.cc
106
112
;;
107
113
GNU/kFreeBSD)
108
114
PLATFORM=OS_KFREEBSD
@@ -115,31 +121,36 @@ case "$TARGET_OS" in
115
121
COMMON_FLAGS=" $MEMCMP_FLAG -D_REENTRANT -DOS_NETBSD"
116
122
PLATFORM_LIBS=" -lpthread -lgcc_s"
117
123
PORT_FILE=port/port_posix.cc
124
+ PORT_SSE_FILE=port/port_posix_sse.cc
118
125
;;
119
126
OpenBSD)
120
127
PLATFORM=OS_OPENBSD
121
128
COMMON_FLAGS=" $MEMCMP_FLAG -D_REENTRANT -DOS_OPENBSD"
122
129
PLATFORM_LDFLAGS=" -pthread"
123
130
PORT_FILE=port/port_posix.cc
131
+ PORT_SSE_FILE=port/port_posix_sse.cc
124
132
;;
125
133
DragonFly)
126
134
PLATFORM=OS_DRAGONFLYBSD
127
135
COMMON_FLAGS=" $MEMCMP_FLAG -D_REENTRANT -DOS_DRAGONFLYBSD"
128
136
PLATFORM_LIBS=" -lpthread"
129
137
PORT_FILE=port/port_posix.cc
138
+ PORT_SSE_FILE=port/port_posix_sse.cc
130
139
;;
131
140
OS_ANDROID_CROSSCOMPILE)
132
141
PLATFORM=OS_ANDROID
133
142
COMMON_FLAGS=" $MEMCMP_FLAG -D_REENTRANT -DOS_ANDROID -DLEVELDB_PLATFORM_POSIX"
134
143
PLATFORM_LDFLAGS=" " # All pthread features are in the Android C library
135
144
PORT_FILE=port/port_posix.cc
145
+ PORT_SSE_FILE=port/port_posix_sse.cc
136
146
CROSS_COMPILE=true
137
147
;;
138
148
HP-UX)
139
149
PLATFORM=OS_HPUX
140
150
COMMON_FLAGS=" $MEMCMP_FLAG -D_REENTRANT -DOS_HPUX"
141
151
PLATFORM_LDFLAGS=" -pthread"
142
152
PORT_FILE=port/port_posix.cc
153
+ PORT_SSE_FILE=port/port_posix_sse.cc
143
154
# man ld: +h internal_name
144
155
PLATFORM_SHARED_LDFLAGS=" -shared -Wl,+h -Wl,"
145
156
;;
@@ -148,6 +159,7 @@ case "$TARGET_OS" in
148
159
COMMON_FLAGS=" $MEMCMP_FLAG -DOS_MACOSX"
149
160
[ -z " $INSTALL_PATH " ] && INSTALL_PATH=` pwd`
150
161
PORT_FILE=port/port_posix.cc
162
+ PORT_SSE_FILE=port/port_posix_sse.cc
151
163
PLATFORM_SHARED_EXT=
152
164
PLATFORM_SHARED_LDFLAGS=
153
165
PLATFORM_SHARED_CFLAGS=
@@ -182,7 +194,7 @@ set +f # re-enable globbing
182
194
183
195
# The sources consist of the portable files, plus the platform-specific port
184
196
# file.
185
- echo " SOURCES=$PORTABLE_FILES $PORT_FILE " >> $OUTPUT
197
+ echo " SOURCES=$PORTABLE_FILES $PORT_FILE $PORT_SSE_FILE " >> $OUTPUT
186
198
echo " MEMENV_SOURCES=helpers/memenv/memenv.cc" >> $OUTPUT
187
199
188
200
if [ " $CROSS_COMPILE " = " true" ]; then
213
225
fi
214
226
215
227
rm -f $CXXOUTPUT 2> /dev/null
228
+
229
+ # Test if gcc SSE 4.2 is supported
230
+ $CXX $CXXFLAGS -x c++ - -o $CXXOUTPUT -msse4.2 2> /dev/null << EOF
231
+ int main() {}
232
+ EOF
233
+ if [ " $? " = 0 ]; then
234
+ PLATFORM_SSEFLAGS=" -msse4.2"
235
+ fi
236
+
237
+ rm -f $CXXOUTPUT 2> /dev/null
238
+ fi
239
+
240
+ # Use the SSE 4.2 CRC32C intrinsics iff runtime checks indicate compiler supports them.
241
+ if [ -n " $PLATFORM_SSEFLAGS " ]; then
242
+ PLATFORM_SSEFLAGS=" $PLATFORM_SSEFLAGS -DLEVELDB_PLATFORM_POSIX_SSE"
216
243
fi
217
244
218
245
PLATFORM_CCFLAGS=" $PLATFORM_CCFLAGS $COMMON_FLAGS "
@@ -225,6 +252,7 @@ echo "PLATFORM_LDFLAGS=$PLATFORM_LDFLAGS" >> $OUTPUT
225
252
echo " PLATFORM_LIBS=$PLATFORM_LIBS " >> $OUTPUT
226
253
echo " PLATFORM_CCFLAGS=$PLATFORM_CCFLAGS " >> $OUTPUT
227
254
echo " PLATFORM_CXXFLAGS=$PLATFORM_CXXFLAGS " >> $OUTPUT
255
+ echo " PLATFORM_SSEFLAGS=$PLATFORM_SSEFLAGS " >> $OUTPUT
228
256
echo " PLATFORM_SHARED_CFLAGS=$PLATFORM_SHARED_CFLAGS " >> $OUTPUT
229
257
echo " PLATFORM_SHARED_EXT=$PLATFORM_SHARED_EXT " >> $OUTPUT
230
258
echo " PLATFORM_SHARED_LDFLAGS=$PLATFORM_SHARED_LDFLAGS " >> $OUTPUT
0 commit comments