Skip to content

Commit d3aed98

Browse files
authored
Merge pull request #14320 from wopeizl/windows/online
Windows/online
2 parents 9e6b1c5 + 2202f22 commit d3aed98

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+893
-554
lines changed

CMakeLists.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,11 @@ message(STATUS "C compiler: ${CMAKE_C_COMPILER}, version: "
2626
"${CMAKE_C_COMPILER_ID} ${CMAKE_C_COMPILER_VERSION}")
2727
if(WIN32)
2828
set(CMAKE_STATIC_LIBRARY_PREFIX lib)
29+
add_definitions("/DGOOGLE_GLOG_DLL_DECL=")
30+
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /bigobj /MTd")
31+
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /bigobj /MT")
32+
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /bigobj /MTd")
33+
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /bigobj /MT")
2934
endif(WIN32)
3035

3136
if(NOT CMAKE_CROSSCOMPILING)

cmake/cuda.cmake

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,9 @@ list(APPEND EXTERNAL_LIBS ${CUDA_LIBRARIES} ${CUDA_rt_LIBRARY})
157157
if(NOT WITH_DSO)
158158
# TODO(panyx0718): CUPTI only allows DSO?
159159
list(APPEND EXTERNAL_LIBS ${CUDNN_LIBRARY} ${CUPTI_LIBRARY} ${CUDA_CUBLAS_LIBRARIES} ${CUDA_curand_LIBRARY} ${NCCL_LIBRARY})
160+
if(WIN32)
161+
set_property(GLOBAL PROPERTY CUDA_MODULES ${CUDNN_LIBRARY} ${CUDA_CUBLAS_LIBRARIES} ${CUDA_curand_LIBRARY})
162+
endif(WIN32)
160163
endif(NOT WITH_DSO)
161164

162165
# setting nvcc arch flags
@@ -196,10 +199,12 @@ elseif(CMAKE_BUILD_TYPE STREQUAL "MinSizeRel")
196199
list(APPEND CUDA_NVCC_FLAGS ${CMAKE_CXX_FLAGS_RELEASE})
197200
endif()
198201
else(NOT WIN32)
199-
if(CMAKE_BUILD_TYPE STREQUAL "Release")
202+
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
203+
list(APPEND CUDA_NVCC_FLAGS "-g -G")
204+
elseif(CMAKE_BUILD_TYPE STREQUAL "Release")
200205
list(APPEND CUDA_NVCC_FLAGS "-O3 -DNDEBUG")
201206
else()
202-
message(FATAL "Windows only support Release build now. Please set visual studio build type to Release, x64 build.")
207+
message(FATAL "Windows only support Release or Debug build now. Please set visual studio build type to Release/Debug, x64 build.")
203208
endif()
204209
endif(NOT WIN32)
205210

cmake/cudnn.cmake

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,12 @@ if(NOT WITH_GPU)
22
return()
33
endif()
44

5-
set(CUDNN_ROOT "/usr" CACHE PATH "CUDNN ROOT")
5+
if(WIN32)
6+
set(CUDNN_ROOT ${CUDA_TOOLKIT_ROOT_DIR})
7+
else(WIN32)
8+
set(CUDNN_ROOT "/usr" CACHE PATH "CUDNN ROOT")
9+
endif(WIN32)
10+
611
find_path(CUDNN_INCLUDE_DIR cudnn.h
712
PATHS ${CUDNN_ROOT} ${CUDNN_ROOT}/include
813
$ENV{CUDNN_ROOT} $ENV{CUDNN_ROOT}/include ${CUDA_TOOLKIT_INCLUDE}

cmake/external/boost.cmake

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -28,34 +28,28 @@ if((NOT DEFINED BOOST_TAR) OR (NOT DEFINED BOOST_URL))
2828
set(BOOST_TAR "boost_1_41_0" CACHE STRING "" FORCE)
2929
set(BOOST_URL "http://paddlepaddledeps.cdn.bcebos.com/${BOOST_TAR}.tar.gz" CACHE STRING "" FORCE)
3030
endif()
31-
IF (WIN32)
32-
MESSAGE(WARNING, "In windows, boost can not be downloaded automaticlly, please build it manually and put it at " ${THIRD_PARTY_PATH}install/boost)
33-
else()
34-
MESSAGE(STATUS "BOOST_TAR: ${BOOST_TAR}, BOOST_URL: ${BOOST_URL}")
35-
ENDIF(WIN32)
31+
32+
MESSAGE(STATUS "BOOST_TAR: ${BOOST_TAR}, BOOST_URL: ${BOOST_URL}")
3633

3734
set(BOOST_SOURCES_DIR ${THIRD_PARTY_PATH}/boost)
3835
set(BOOST_DOWNLOAD_DIR "${BOOST_SOURCES_DIR}/src/${BOOST_PROJECT}")
39-
set(BOOST_INCLUDE_DIR "${BOOST_DOWNLOAD_DIR}/${BOOST_TAR}" CACHE PATH "boost include directory." FORCE)
40-
set_directory_properties(PROPERTIES CLEAN_NO_CUSTOM 1)
4136

37+
set(BOOST_INCLUDE_DIR "${BOOST_DOWNLOAD_DIR}" CACHE PATH "boost include directory." FORCE)
38+
set_directory_properties(PROPERTIES CLEAN_NO_CUSTOM 1)
4239
include_directories(${BOOST_INCLUDE_DIR})
4340

44-
if (NOT WIN32)
4541
ExternalProject_Add(
4642
${BOOST_PROJECT}
4743
${EXTERNAL_PROJECT_LOG_ARGS}
4844
DOWNLOAD_DIR ${BOOST_DOWNLOAD_DIR}
49-
DOWNLOAD_COMMAND wget --no-check-certificate ${BOOST_URL} -c -q -O ${BOOST_TAR}.tar.gz
50-
&& tar zxf ${BOOST_TAR}.tar.gz
45+
URL ${BOOST_URL}
5146
DOWNLOAD_NO_PROGRESS 1
5247
PREFIX ${BOOST_SOURCES_DIR}
5348
CONFIGURE_COMMAND ""
5449
BUILD_COMMAND ""
5550
INSTALL_COMMAND ""
5651
UPDATE_COMMAND ""
57-
)
58-
endif(NOT WIN32)
52+
)
5953

6054
if (${CMAKE_VERSION} VERSION_LESS "3.3.0" OR NOT WIN32)
6155
set(dummyfile ${CMAKE_CURRENT_BINARY_DIR}/boost_dummy.c)

cmake/external/gflags.cmake

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,12 @@ ExternalProject_Add(
3535
CMAKE_ARGS -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
3636
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
3737
-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
38+
-DCMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE}
39+
-DCMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG}
3840
-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
41+
-DCMAKE_C_FLAGS_DEBUG=${CMAKE_C_FLAGS_DEBUG}
42+
-DCMAKE_C_FLAGS_RELEASE=${CMAKE_C_FLAGS_RELEASE}
43+
-DBUILD_STATIC_LIBS=ON
3944
-DCMAKE_INSTALL_PREFIX=${GFLAGS_INSTALL_DIR}
4045
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
4146
-DBUILD_TESTING=OFF
@@ -48,8 +53,8 @@ ExternalProject_Add(
4853
IF(WIN32)
4954
IF(NOT EXISTS "${GFLAGS_INSTALL_DIR}/lib/libgflags.lib")
5055
add_custom_command(TARGET extern_gflags POST_BUILD
51-
COMMAND cmake -E rename ${GFLAGS_INSTALL_DIR}/lib/gflags_static.lib ${GFLAGS_INSTALL_DIR}/lib/libgflags.lib
52-
)
56+
COMMAND cmake -E copy ${GFLAGS_INSTALL_DIR}/lib/gflags_static.lib ${GFLAGS_INSTALL_DIR}/lib/libgflags.lib
57+
)
5358
ENDIF()
5459
ENDIF(WIN32)
5560
ADD_LIBRARY(gflags STATIC IMPORTED GLOBAL)

cmake/external/glog.cmake

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,11 @@ ExternalProject_Add(
4646
CMAKE_ARGS -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
4747
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
4848
-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
49+
-DCMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE}
50+
-DCMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG}
4951
-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
52+
-DCMAKE_C_FLAGS_DEBUG=${CMAKE_C_FLAGS_DEBUG}
53+
-DCMAKE_C_FLAGS_RELEASE=${CMAKE_C_FLAGS_RELEASE}
5054
-DCMAKE_INSTALL_PREFIX=${GLOG_INSTALL_DIR}
5155
-DCMAKE_INSTALL_LIBDIR=${GLOG_INSTALL_DIR}/lib
5256
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
@@ -63,7 +67,7 @@ ExternalProject_Add(
6367
IF(WIN32)
6468
IF(NOT EXISTS "${GLOG_INSTALL_DIR}/lib/libglog.lib")
6569
add_custom_command(TARGET extern_glog POST_BUILD
66-
COMMAND cmake -E rename ${GLOG_INSTALL_DIR}/lib/glog.lib ${GLOG_INSTALL_DIR}/lib/libglog.lib
70+
COMMAND cmake -E copy ${GLOG_INSTALL_DIR}/lib/glog.lib ${GLOG_INSTALL_DIR}/lib/libglog.lib
6771
)
6872
ENDIF()
6973
ENDIF(WIN32)

cmake/external/openblas.cmake

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,8 @@ IF(USE_EIGEN_FOR_BLAS)
1717
ENDIF(USE_EIGEN_FOR_BLAS)
1818

1919
INCLUDE(cblas)
20-
# IF(WIN32 AND NOT ${CBLAS_FOUND})
21-
22-
2320

2421
IF(NOT ${CBLAS_FOUND})
25-
2622
INCLUDE(ExternalProject)
2723

2824
SET(CBLAS_SOURCES_DIR ${THIRD_PARTY_PATH}/openblas)
@@ -34,6 +30,7 @@ IF(NOT ${CBLAS_FOUND})
3430
CACHE FILEPATH "openblas library." FORCE)
3531

3632
ADD_DEFINITIONS(-DPADDLE_USE_OPENBLAS)
33+
3734
IF (WIN32)
3835
SET(CBLAS_FOUND true)
3936
MESSAGE(WARNING, "In windows, openblas only support msvc build, please build it manually and put it at " ${CBLAS_INSTALL_DIR})

cmake/external/protobuf.cmake

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,6 @@ endmacro()
140140
set(PROTOBUF_ROOT "" CACHE PATH "Folder contains protobuf")
141141
IF (WIN32)
142142
SET(PROTOBUF_ROOT ${THIRD_PARTY_PATH}/install/protobuf)
143-
MESSAGE(WARNING, "In windows, protobuf only support msvc build, please build it manually and put it at " ${PROTOBUF_ROOT})
144143
ENDIF(WIN32)
145144

146145
if (NOT "${PROTOBUF_ROOT}" STREQUAL "")
@@ -188,13 +187,20 @@ FUNCTION(build_protobuf TARGET_NAME BUILD_FOR_HOST)
188187
SET(OPTIONAL_ARGS
189188
"-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}"
190189
"-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}"
191-
"-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}"
192190
"-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}"
191+
"-DCMAKE_C_FLAGS_DEBUG=${CMAKE_C_FLAGS_DEBUG}"
192+
"-DCMAKE_C_FLAGS_RELEASE=${CMAKE_C_FLAGS_RELEASE}"
193+
"-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}"
194+
"-DCMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE}"
195+
"-DCMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG}"
193196
"-Dprotobuf_WITH_ZLIB=ON"
194197
"-DZLIB_ROOT:FILEPATH=${ZLIB_ROOT}"
195198
${EXTERNAL_OPTIONAL_ARGS})
196199
SET(OPTIONAL_CACHE_ARGS "-DZLIB_ROOT:STRING=${ZLIB_ROOT}")
197200
ENDIF()
201+
IF(WIN32)
202+
SET(OPTIONAL_ARGS ${OPTIONAL_ARGS} "-DCMAKE_GENERATOR_PLATFORM=x64")
203+
ENDIF()
198204

199205
SET(PROTOBUF_REPO "https://github.com/google/protobuf.git")
200206
SET(PROTOBUF_TAG "9f75c5aa851cd877fb0d93ccc31b8567a6706546")

cmake/external/python.cmake

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,48 @@ INCLUDE(python_module)
2121
FIND_PACKAGE(PythonInterp ${PY_VERSION})
2222
FIND_PACKAGE(PythonLibs ${PY_VERSION})
2323

24+
if(WIN32)
25+
execute_process(COMMAND "${PYTHON_EXECUTABLE}" "-c"
26+
"from distutils import sysconfig as s;import sys;import struct;
27+
print(sys.prefix);
28+
print(s.get_config_var('LDVERSION') or s.get_config_var('VERSION'));
29+
"
30+
RESULT_VARIABLE _PYTHON_SUCCESS
31+
OUTPUT_VARIABLE _PYTHON_VALUES
32+
ERROR_VARIABLE _PYTHON_ERROR_VALUE)
33+
34+
if(NOT _PYTHON_SUCCESS MATCHES 0)
35+
set(PYTHONLIBS_FOUND FALSE)
36+
return()
37+
endif()
38+
39+
# Convert the process output into a list
40+
string(REGEX REPLACE ";" "\\\\;" _PYTHON_VALUES ${_PYTHON_VALUES})
41+
string(REGEX REPLACE "\n" ";" _PYTHON_VALUES ${_PYTHON_VALUES})
42+
list(GET _PYTHON_VALUES 0 PYTHON_PREFIX)
43+
list(GET _PYTHON_VALUES 1 PYTHON_LIBRARY_SUFFIX)
44+
45+
# Make sure all directory separators are '/'
46+
string(REGEX REPLACE "\\\\" "/" PYTHON_PREFIX ${PYTHON_PREFIX})
47+
48+
set(PYTHON_LIBRARY
49+
"${PYTHON_PREFIX}/libs/Python${PYTHON_LIBRARY_SUFFIX}.lib")
50+
51+
# when run in a venv, PYTHON_PREFIX points to it. But the libraries remain in the
52+
# original python installation. They may be found relative to PYTHON_INCLUDE_DIR.
53+
if(NOT EXISTS "${PYTHON_LIBRARY}")
54+
get_filename_component(_PYTHON_ROOT ${PYTHON_INCLUDE_DIR} DIRECTORY)
55+
set(PYTHON_LIBRARY
56+
"${_PYTHON_ROOT}/libs/Python${PYTHON_LIBRARY_SUFFIX}.lib")
57+
endif()
58+
59+
# raise an error if the python libs are still not found.
60+
if(NOT EXISTS "${PYTHON_LIBRARY}")
61+
message(FATAL_ERROR "Python libraries not found")
62+
endif()
63+
SET(PYTHON_LIBRARIES "${PYTHON_LIBRARY}")
64+
endif(WIN32)
65+
2466
# Fixme: Maybe find a static library. Get SHARED/STATIC by FIND_PACKAGE.
2567
ADD_LIBRARY(python SHARED IMPORTED GLOBAL)
2668
SET_PROPERTY(TARGET python PROPERTY IMPORTED_LOCATION ${PYTHON_LIBRARIES})

cmake/external/xxhash.cmake

Lines changed: 45 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -14,23 +14,52 @@ ELSE()
1414
ENDIF(APPLE)
1515
ENDIF()
1616
17-
ExternalProject_Add(
18-
extern_xxhash
19-
${EXTERNAL_PROJECT_LOG_ARGS}
20-
GIT_REPOSITORY "https://github.com/Cyan4973/xxHash"
21-
GIT_TAG "v0.6.5"
22-
PREFIX ${XXHASH_SOURCE_DIR}
23-
DOWNLOAD_NAME "xxhash"
24-
UPDATE_COMMAND ""
25-
CONFIGURE_COMMAND ""
26-
BUILD_IN_SOURCE 1
27-
PATCH_COMMAND
28-
BUILD_COMMAND ${BUILD_CMD}
29-
INSTALL_COMMAND export PREFIX=${XXHASH_INSTALL_DIR}/ && make install
30-
TEST_COMMAND ""
31-
)
17+
if(WIN32)
18+
ExternalProject_Add(
19+
extern_xxhash
20+
${EXTERNAL_PROJECT_LOG_ARGS}
21+
GIT_REPOSITORY "https://github.com/Cyan4973/xxHash"
22+
GIT_TAG "v0.6.5"
23+
PREFIX ${XXHASH_SOURCE_DIR}
24+
DOWNLOAD_NAME "xxhash"
25+
UPDATE_COMMAND ""
26+
BUILD_IN_SOURCE 1
27+
PATCH_COMMAND
28+
CONFIGURE_COMMAND
29+
${CMAKE_COMMAND} ${XXHASH_SOURCE_DIR}/src/extern_xxhash/cmake_unofficial
30+
-DCMAKE_INSTALL_PREFIX:PATH=${XXHASH_INSTALL_DIR}
31+
-DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
32+
-DCMAKE_VERBOSE_MAKEFILE:BOOL=OFF
33+
-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON
34+
-DBUILD_XXHSUM=OFF
35+
-DCMAKE_GENERATOR_PLATFORM=x64
36+
-DBUILD_SHARED_LIBS=OFF
37+
${OPTIONAL_CACHE_ARGS}
38+
TEST_COMMAND ""
39+
)
40+
else()
41+
ExternalProject_Add(
42+
extern_xxhash
43+
${EXTERNAL_PROJECT_LOG_ARGS}
44+
GIT_REPOSITORY "https://github.com/Cyan4973/xxHash"
45+
GIT_TAG "v0.6.5"
46+
PREFIX ${XXHASH_SOURCE_DIR}
47+
DOWNLOAD_NAME "xxhash"
48+
UPDATE_COMMAND ""
49+
CONFIGURE_COMMAND ""
50+
BUILD_IN_SOURCE 1
51+
PATCH_COMMAND
52+
BUILD_COMMAND ${BUILD_CMD}
53+
INSTALL_COMMAND export PREFIX=${XXHASH_INSTALL_DIR}/ && make install
54+
TEST_COMMAND ""
55+
)
56+
endif()
3257
33-
set(XXHASH_LIBRARIES "${XXHASH_INSTALL_DIR}/lib/libxxhash.a")
58+
if (WIN32)
59+
set(XXHASH_LIBRARIES "${XXHASH_INSTALL_DIR}/lib/xxhash.lib")
60+
else()
61+
set(XXHASH_LIBRARIES "${XXHASH_INSTALL_DIR}/lib/libxxhash.a")
62+
endif ()
3463
INCLUDE_DIRECTORIES(${XXHASH_INCLUDE_DIR})
3564
3665
add_library(xxhash STATIC IMPORTED GLOBAL)

0 commit comments

Comments
 (0)