@@ -11,4 +11,53 @@ ENDIF()
1111ADD_SUBDIRECTORY (rpmalloc)
1212ADD_SUBDIRECTORY (weakjack)
1313
14- ADD_SUBDIRECTORY (libcds)
14+ IF (WIN32 AND CMAKE_COMPILER_IS_GNUCXX)
15+ SET (MINGW TRUE )
16+ ENDIF ()
17+
18+ IF (MINGW)
19+ # Work around linking errors with MinGW
20+ SET (CDS_LIBRARY_TYPE SHARED)
21+ ELSE ()
22+ SET (CDS_LIBRARY_TYPE STATIC )
23+ ENDIF ()
24+
25+ ADD_LIBRARY (cds ${CDS_LIBRARY_TYPE}
26+ libcds/src/init.cpp
27+ libcds/src/hp.cpp
28+ libcds/src/dhp.cpp
29+ libcds/src/urcu_gp.cpp
30+ libcds/src/urcu_sh.cpp
31+ libcds/src/thread_data.cpp
32+ libcds/src/topology_hpux.cpp
33+ libcds/src/topology_linux.cpp
34+ libcds/src/topology_osx.cpp
35+ libcds/src/dllmain.cpp
36+ )
37+ SET_TARGET_PROPERTIES (cds PROPERTIES
38+ CXX_STANDARD 11
39+ CXX_STANDARD_REQUIRED ON
40+ )
41+ TARGET_INCLUDE_DIRECTORIES (cds
42+ PUBLIC "${CMAKE_CURRENT_SOURCE_DIR} /libcds"
43+ )
44+
45+ IF (NEED_MINGW_THREADS_REPLACEMENT)
46+ # Provide win32 threads implementation
47+ TARGET_INCLUDE_DIRECTORIES (cds BEFORE
48+ PRIVATE "${CMAKE_SOURCE_DIR} /include/mingw-std-threads"
49+ PUBLIC "${CMAKE_CURRENT_SOURCE_DIR} /mingw-std-threads"
50+ )
51+ ENDIF ()
52+
53+ IF (CDS_LIBRARY_TYPE STREQUAL "STATIC" )
54+ TARGET_COMPILE_DEFINITIONS (cds
55+ PRIVATE CDS_BUILD_STATIC_LIB
56+ )
57+ ELSE ()
58+ TARGET_COMPILE_DEFINITIONS (cds
59+ PRIVATE CDS_BUILD_LIB
60+ )
61+ # Install DLL
62+ install (TARGETS cds RUNTIME DESTINATION .)
63+ ENDIF ()
0 commit comments