Skip to content

Commit 4324850

Browse files
committed
cmake: move winhttp build instructions into subdirectory
Extract code required to build the winhttp library into its own CMakeLists.txt, which is included as required.
1 parent bed7ca3 commit 4324850

File tree

2 files changed

+33
-28
lines changed

2 files changed

+33
-28
lines changed

CMakeLists.txt

Lines changed: 7 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -398,38 +398,17 @@ IF (WIN32 AND WINHTTP)
398398
# Since MinGW does not come with headers or an import library for winhttp,
399399
# we have to include a private header and generate our own import library
400400
IF (MINGW)
401-
FIND_PROGRAM(DLLTOOL dlltool CMAKE_FIND_ROOT_PATH_BOTH)
402-
IF (NOT DLLTOOL)
403-
MESSAGE(FATAL_ERROR "Could not find dlltool command")
404-
ENDIF ()
405-
406-
SET(LIBWINHTTP_PATH "${CMAKE_BINARY_DIR}/deps/winhttp")
407-
FILE(MAKE_DIRECTORY ${LIBWINHTTP_PATH})
408-
409-
IF (CMAKE_SIZEOF_VOID_P EQUAL 8)
410-
set(WINHTTP_DEF "${CMAKE_SOURCE_DIR}/deps/winhttp/winhttp64.def")
411-
ELSE()
412-
set(WINHTTP_DEF "${CMAKE_SOURCE_DIR}/deps/winhttp/winhttp.def")
413-
ENDIF()
414-
415-
ADD_CUSTOM_COMMAND(
416-
OUTPUT ${LIBWINHTTP_PATH}/libwinhttp.a
417-
COMMAND ${DLLTOOL} -d ${WINHTTP_DEF} -k -D winhttp.dll -l libwinhttp.a
418-
DEPENDS ${WINHTTP_DEF}
419-
WORKING_DIRECTORY ${LIBWINHTTP_PATH}
420-
)
421-
422-
SET_SOURCE_FILES_PROPERTIES(
423-
${CMAKE_CURRENT_SOURCE_DIR}/src/transports/winhttp.c
424-
PROPERTIES OBJECT_DEPENDS ${LIBWINHTTP_PATH}/libwinhttp.a
425-
)
426-
401+
ADD_SUBDIRECTORY("${CMAKE_SOURCE_DIR}/deps/winhttp" "${CMAKE_BINARY_DIR}/deps/winhttp")
402+
LIST(APPEND LIBGIT2_LIBS winhttp)
427403
LIST(APPEND LIBGIT2_INCLUDES "${CMAKE_SOURCE_DIR}/deps/winhttp")
428404
LIST(APPEND LIBGIT2_LIBDIRS ${LIBWINHTTP_PATH})
405+
ELSE()
406+
LIST(APPEND LIBGIT2_LIBS "winhttp")
407+
LIST(APPEND LIBGIT2_PC_LIBS "-lwinhttp")
429408
ENDIF ()
430409

431-
LIST(APPEND LIBGIT2_LIBS "winhttp" "rpcrt4" "crypt32" "ole32")
432-
LIST(APPEND LIBGIT2_PC_LIBS "-lwinhttp" "-lrpcrt4" "-lcrypt32" "-lole32")
410+
LIST(APPEND LIBGIT2_LIBS "rpcrt4" "crypt32" "ole32")
411+
LIST(APPEND LIBGIT2_PC_LIBS "-lrpcrt4" "-lcrypt32" "-lole32")
433412
ELSE ()
434413
IF (CURL)
435414
PKG_CHECK_MODULES(CURL libcurl)

deps/winhttp/CMakeLists.txt

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
FIND_PROGRAM(DLLTOOL dlltool CMAKE_FIND_ROOT_PATH_BOTH)
2+
IF (NOT DLLTOOL)
3+
MESSAGE(FATAL_ERROR "Could not find dlltool command")
4+
ENDIF ()
5+
6+
SET(LIBWINHTTP_PATH "${CMAKE_BINARY_DIR}/deps/winhttp")
7+
SET(LIBWINHTTP_PATH ${LIBWINHTTP_PATH} PARENT_SCOPE)
8+
FILE(MAKE_DIRECTORY ${LIBWINHTTP_PATH})
9+
10+
IF (CMAKE_SIZEOF_VOID_P EQUAL 8)
11+
set(WINHTTP_DEF "winhttp64.def")
12+
ELSE()
13+
set(WINHTTP_DEF "winhttp.def")
14+
ENDIF()
15+
16+
ADD_CUSTOM_COMMAND(
17+
OUTPUT ${LIBWINHTTP_PATH}/libwinhttp.a
18+
COMMAND ${DLLTOOL} -d ${WINHTTP_DEF} -k -D winhttp.dll -l libwinhttp.a
19+
DEPENDS ${WINHTTP_DEF}
20+
WORKING_DIRECTORY ${LIBWINHTTP_PATH}
21+
)
22+
23+
SET_SOURCE_FILES_PROPERTIES(
24+
${CMAKE_CURRENT_SOURCE_DIR}/src/transports/winhttp.c
25+
PROPERTIES OBJECT_DEPENDS ${LIBWINHTTP_PATH}/libwinhttp.a
26+
)

0 commit comments

Comments
 (0)