Skip to content

Commit b9a34d7

Browse files
committed
add support for clang on windows (cmake&ninja)
1 parent 420fb0c commit b9a34d7

File tree

1 file changed

+31
-15
lines changed

1 file changed

+31
-15
lines changed

CMakeLists.txt

+31-15
Original file line numberDiff line numberDiff line change
@@ -64,12 +64,19 @@ if (STATIC)
6464
set(LIBRARY_TYPE)
6565
endif()
6666

67+
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
68+
set(CLANG 1)
69+
endif()
70+
6771
if (WIN32)
6872
if (MSVC)
6973
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
7074
add_definitions(-DNOMINMAX)
71-
72-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP /openmp /utf-8")
75+
if (CLANG)
76+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Xclang -fopenmp /utf-8")
77+
else()
78+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP /openmp /utf-8")
79+
endif()
7380
endif()
7481

7582
set(LIB_Ws2_32 Ws2_32)
@@ -226,19 +233,21 @@ if (WIN32)
226233
${tesseract_hdr}
227234
${CMAKE_CURRENT_SOURCE_DIR}/src/vs2010/tesseract/resource.h)
228235
set(tesseract_rsc ${CMAKE_CURRENT_BINARY_DIR}/vs2010/tesseract/libtesseract.rc)
229-
set_source_files_properties(
230-
${CMAKE_CURRENT_SOURCE_DIR}/src/arch/dotproductsse.cpp
231-
PROPERTIES COMPILE_DEFINITIONS __SSE4_1__)
232-
set_source_files_properties(
233-
${CMAKE_CURRENT_SOURCE_DIR}/src/arch/intsimdmatrixsse.cpp
234-
PROPERTIES COMPILE_DEFINITIONS __SSE4_1__)
235-
set_source_files_properties(
236-
${CMAKE_CURRENT_SOURCE_DIR}/src/arch/dotproductavx.cpp
237-
PROPERTIES COMPILE_FLAGS "/arch:AVX")
238-
set_source_files_properties(
239-
${CMAKE_CURRENT_SOURCE_DIR}/src/arch/intsimdmatrixavx2.cpp
240-
PROPERTIES COMPILE_FLAGS "/arch:AVX2")
241-
endif()
236+
if (NOT CLANG)
237+
set_source_files_properties(
238+
${CMAKE_CURRENT_SOURCE_DIR}/src/arch/dotproductsse.cpp
239+
PROPERTIES COMPILE_DEFINITIONS __SSE4_1__)
240+
set_source_files_properties(
241+
${CMAKE_CURRENT_SOURCE_DIR}/src/arch/intsimdmatrixsse.cpp
242+
PROPERTIES COMPILE_DEFINITIONS __SSE4_1__)
243+
set_source_files_properties(
244+
${CMAKE_CURRENT_SOURCE_DIR}/src/arch/dotproductavx.cpp
245+
PROPERTIES COMPILE_FLAGS "/arch:AVX")
246+
set_source_files_properties(
247+
${CMAKE_CURRENT_SOURCE_DIR}/src/arch/intsimdmatrixavx2.cpp
248+
PROPERTIES COMPILE_FLAGS "/arch:AVX2")
249+
endif() # NOT CLANG
250+
endif() # MSVC
242251
else()
243252
set_source_files_properties(
244253
${CMAKE_CURRENT_SOURCE_DIR}/src/arch/dotproductsse.cpp
@@ -283,6 +292,13 @@ else()
283292
export(TARGETS libtesseract APPEND FILE ${CMAKE_CURRENT_BINARY_DIR}/TesseractTargets.cmake)
284293
endif()
285294

295+
if (WIN32 AND CLANG)
296+
# Workaround for "libomp.lib is not automatically added on Windows"
297+
# see: http://lists.llvm.org/pipermail/openmp-dev/2015-August/000857.html
298+
# TODO: Find better way how to set Clang OpenMP library for linking on Windows
299+
target_link_libraries (libtesseract "c:\\Program Files\\LLVM\\lib\\libomp.lib")
300+
endif()
301+
286302
########################################
287303
# EXECUTABLE tesseractmain
288304
########################################

0 commit comments

Comments
 (0)