Skip to content

Commit 0122452

Browse files
authored
Merge pull request pytorch#105 from xoofx/fix-windows-export
Use sleef.lib on Windows. Export functions with extern "C"
2 parents 03742ac + fbb3334 commit 0122452

File tree

5 files changed

+27
-20
lines changed

5 files changed

+27
-20
lines changed

src/libm/CMakeLists.txt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ include_directories(${CMAKE_CURRENT_SOURCE_DIR})
66
# sleef.h
77
# --------------------------------------------------------------------
88
# File generated for the headers
9-
set(SLEEF_ORG_HEADER ${CMAKE_CURRENT_SOURCE_DIR}/sleeflibm.h.org)
9+
set(SLEEF_ORG_HEADER ${CMAKE_CURRENT_SOURCE_DIR}/sleeflibm_header.h.org)
10+
set(SLEEF_ORG_FOOTER ${CMAKE_CURRENT_SOURCE_DIR}/sleeflibm_footer.h.org)
1011
set(SLEEF_INCLUDE_HEADER ${CMAKE_BINARY_DIR}/include/sleef.h)
1112

1213
set(SLEEF_HEADER_COMMANDS "")
@@ -16,18 +17,18 @@ foreach(SIMD ${SLEEF_HEADER_LIST})
1617
list(APPEND SLEEF_HEADER_COMMANDS COMMAND ${TARGET_MKRENAME} ${HEADER_PARAMS_${SIMD}} >> ${SLEEF_INCLUDE_HEADER})
1718
endforeach()
1819

19-
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/sleef_footer.h "#undef IMPORT\n#endif\n")
2020
if(MSVC)
21-
string(REPLACE "/" "\\" sleef_footer_input_file "${CMAKE_CURRENT_BINARY_DIR}/sleef_footer.h")
21+
string(REPLACE "/" "\\" sleef_footer_input_file "${SLEEF_ORG_FOOTER}")
2222
list(APPEND SLEEF_HEADER_COMMANDS COMMAND type ${sleef_footer_input_file} >> ${SLEEF_INCLUDE_HEADER})
2323
else()
24-
list(APPEND SLEEF_HEADER_COMMANDS COMMAND cat ${CMAKE_CURRENT_BINARY_DIR}/sleef_footer.h >> ${SLEEF_INCLUDE_HEADER})
24+
list(APPEND SLEEF_HEADER_COMMANDS COMMAND cat ${SLEEF_ORG_FOOTER} >> ${SLEEF_INCLUDE_HEADER})
2525
endif()
2626

2727
add_custom_command(OUTPUT ${SLEEF_INCLUDE_HEADER}
2828
${SLEEF_HEADER_COMMANDS}
2929
DEPENDS
3030
${SLEEF_ORG_HEADER}
31+
${SLEEF_ORG_FOOTER}
3132
${TARGET_MKRENAME}
3233
)
3334

src/libm/Makefile

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ ifeq ($(X86ARCH),1)
7878
sleef.h : mkrename
7979
$(FLOCK) mkrename.lock -c 'echo Acquiring lock for mkrename'
8080
$(eval RND := $(shell bash -c 'echo $$(( RANDOM ))' ))
81-
cp sleeflibm.h.org sleef.h.$(RND)
81+
cp sleeflibm_header.h.org sleef.h.$(RND)
8282
./mkrename 2 4 __m128d __m128 __m128i __m128i __SSE2__ >> sleef.h.$(RND)
8383
./mkrename 2 4 __m128d __m128 __m128i __m128i __SSE2__ sse2 >> sleef.h.$(RND)
8484
./mkrename 2 4 __m128d __m128 __m128i __m128i __SSE2__ sse4 >> sleef.h.$(RND)
@@ -88,40 +88,36 @@ sleef.h : mkrename
8888
./mkrename 4 8 __m256d __m256 __m128i 'struct { __m128i x, y; }' __AVX__ fma4 >> sleef.h.$(RND)
8989
./mkrename 4 8 __m256d __m256 __m128i __m256i __AVX__ avx2 >> sleef.h.$(RND)
9090
./mkrename 8 16 __m512d __m512 __m256i __m512i __AVX512F__ avx512f >> sleef.h.$(RND)
91-
echo '#undef IMPORT' >> sleef.h.$(RND)
92-
echo '#endif' >> sleef.h.$(RND)
91+
cat sleeflibm_footer.h.org >> sleef.h.$(RND)
9392
mv sleef.h.$(RND) sleef.h
9493
cp sleef.h ../../include/sleef.h.$(RND)
9594
mv ../../include/sleef.h.$(RND) ../../include/sleef.h
9695
else ifeq ($(ARCH), arm)
9796
sleef.h : mkrename
9897
$(FLOCK) mkrename.lock -c 'echo Acquiring lock for mkrename'
9998
$(eval RND := $(shell bash -c 'echo $$(( RANDOM ))' ))
100-
cp sleeflibm.h.org sleef.h.$(RND)
99+
cp sleeflibm_header.h.org sleef.h.$(RND)
101100
./mkrename 2 4 - float32x4_t int32x4_t int32x4_t __ARM_NEON__ neon >> sleef.h.$(RND)
102-
echo '#undef IMPORT' >> sleef.h.$(RND)
103-
echo '#endif' >> sleef.h.$(RND)
101+
cat sleeflibm_footer.h.org >> sleef.h.$(RND)
104102
mv sleef.h.$(RND) sleef.h
105103
cp sleef.h ../../include/sleef.h.$(RND)
106104
mv ../../include/sleef.h.$(RND) ../../include/sleef.h
107105
else ifeq ($(ARCH), aarch64)
108106
sleef.h : mkrename
109107
$(FLOCK) mkrename.lock -c 'echo Acquiring lock for mkrename'
110108
$(eval RND := $(shell bash -c 'echo $$(( RANDOM ))' ))
111-
cp sleeflibm.h.org sleef.h.$(RND)
109+
cp sleeflibm_header.h.org sleef.h.$(RND)
112110
./mkrename 2 4 float64x2_t float32x4_t int32x2_t int32x4_t __ARM_NEON advsimd >> sleef.h.$(RND)
113-
echo '#undef IMPORT' >> sleef.h.$(RND)
114-
echo '#endif' >> sleef.h.$(RND)
111+
cat sleeflibm_footer.h.org >> sleef.h.$(RND)
115112
mv sleef.h.$(RND) sleef.h
116113
cp sleef.h ../../include/sleef.h.$(RND)
117114
mv ../../include/sleef.h.$(RND) ../../include/sleef.h
118115
else
119116
sleef.h :
120117
$(FLOCK) mkrename.lock -c 'echo Acquiring lock for mkrename'
121118
$(eval RND := $(shell bash -c 'echo $$(( RANDOM ))' ))
122-
cp sleeflibm.h.org sleef.h.$(RND)
123-
echo '#undef IMPORT' >> sleef.h.$(RND)
124-
echo '#endif' >> sleef.h.$(RND)
119+
cp sleeflibm_header.h.org sleef.h.$(RND)
120+
cat sleeflibm_footer.h.org >> sleef.h.$(RND)
125121
mv sleef.h.$(RND) sleef.h
126122
cp sleef.h ../../include/sleef.h.$(RND)
127123
mv ../../include/sleef.h.$(RND) ../../include/sleef.h

src/libm/Makefile.vc

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,16 +27,15 @@ OBJ2.txt : $(OBJ2)
2727
for i in `echo $(OBJ2)`; do ../script/abspath.sh $(@D) $$i >> OBJ2.txt; done
2828

2929
sleef.h : mkrename.exe
30-
cp sleeflibm.h.org sleef.h
30+
cp sleeflibm_header.h.org sleef.h
3131
./mkrename.exe 2 4 __m128d __m128 __m128i __m128i __SSE2__ >> sleef.h
3232
./mkrename.exe 2 4 __m128d __m128 __m128i __m128i __SSE2__ sse2 >> sleef.h
3333
./mkrename.exe 2 4 __m128d __m128 __m128i __m128i __SSE2__ sse4 >> sleef.h
3434
./mkrename.exe 2 4 __m128d __m128 __m128i __m128i __SSE2__ avx2128 >> sleef.h
3535
./mkrename.exe 4 8 __m256d __m256 __m128i 'struct { __m128i x, y; }' __AVX__ >> sleef.h
3636
./mkrename.exe 4 8 __m256d __m256 __m128i 'struct { __m128i x, y; }' __AVX__ avx >> sleef.h
3737
./mkrename.exe 4 8 __m256d __m256 __m128i __m256i __AVX__ avx2 >> sleef.h
38-
echo '#undef IMPORT' >> sleef.h
39-
echo '#endif' >> sleef.h
38+
type sleeflibm_footer.h.org >> sleef.h
4039
cp sleef.h ../../include
4140

4241
#

src/libm/sleeflibm_footer.h.org

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
#undef IMPORT
2+
#endif
3+
4+
#ifdef __cplusplus
5+
}
6+
#endif

src/libm/sleeflibm.h.org renamed to src/libm/sleeflibm_header.h.org

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
#else
2222
#define IMPORT __declspec(dllimport)
2323
#if (defined(_MSC_VER))
24-
#pragma comment(lib,"libsleef.lib")
24+
#pragma comment(lib,"sleef.lib")
2525
#endif
2626
#endif
2727
#else // #if defined(__MINGW32__) || defined(__MINGW64__) || defined(__CYGWIN__) || defined(_MSC_VER)
@@ -81,6 +81,11 @@ typedef struct {
8181
} Sleef_quad2;
8282
#endif
8383

84+
#ifdef __cplusplus
85+
extern "C"
86+
{
87+
#endif
88+
8489
IMPORT CONST double Sleef_sin_u35(double);
8590
IMPORT CONST double Sleef_cos_u35(double);
8691
IMPORT CONST Sleef_double2 Sleef_sincos_u35(double);

0 commit comments

Comments
 (0)