Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/pkg
Path: blob/main/external/curl/src/CMakeLists.txt
2065 views
1
#***************************************************************************
2
# _ _ ____ _
3
# Project ___| | | | _ \| |
4
# / __| | | | |_) | |
5
# | (__| |_| | _ <| |___
6
# \___|\___/|_| \_\_____|
7
#
8
# Copyright (C) Daniel Stenberg, <[email protected]>, et al.
9
#
10
# This software is licensed as described in the file COPYING, which
11
# you should have received as part of this distribution. The terms
12
# are also available at https://curl.se/docs/copyright.html.
13
#
14
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
15
# copies of the Software, and permit persons to whom the Software is
16
# furnished to do so, under the terms of the COPYING file.
17
#
18
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
19
# KIND, either express or implied.
20
#
21
# SPDX-License-Identifier: curl
22
#
23
###########################################################################
24
set(EXE_NAME curl)
25
set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS "${CURL_DEBUG_MACROS}")
26
27
set(_curl_cfiles_gen "")
28
set(_curl_hfiles_gen "")
29
set(_curl_definitions "")
30
31
if(ENABLE_CURL_MANUAL AND HAVE_MANUAL_TOOLS)
32
list(APPEND _curl_definitions "USE_MANUAL")
33
add_custom_command(
34
OUTPUT "tool_hugehelp.c"
35
COMMAND ${CMAKE_COMMAND} -E echo "#include \"tool_setup.h\"" > "tool_hugehelp.c"
36
COMMAND ${CMAKE_COMMAND} -E echo "/* !checksrc! disable COPYRIGHT all */" >> "tool_hugehelp.c"
37
COMMAND ${CMAKE_COMMAND} -E echo "/* !checksrc! disable INCLUDEDUP all */" >> "tool_hugehelp.c"
38
COMMAND ${CMAKE_COMMAND} -E echo "/* !checksrc! disable LONGLINE all */" >> "tool_hugehelp.c"
39
COMMAND ${CMAKE_COMMAND} -E echo "#ifndef HAVE_LIBZ" >> "tool_hugehelp.c"
40
COMMAND "${PERL_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/mkhelp.pl" < "${CURL_ASCIIPAGE}" >> "tool_hugehelp.c"
41
COMMAND ${CMAKE_COMMAND} -E echo "#else" >> "tool_hugehelp.c"
42
COMMAND "${PERL_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/mkhelp.pl" -c < "${CURL_ASCIIPAGE}" >> "tool_hugehelp.c"
43
COMMAND ${CMAKE_COMMAND} -E echo "#endif /* HAVE_LIBZ */" >> "tool_hugehelp.c"
44
DEPENDS
45
generate-curl.1
46
"${CMAKE_CURRENT_SOURCE_DIR}/mkhelp.pl"
47
"${CMAKE_CURRENT_SOURCE_DIR}/tool_hugehelp.h"
48
"${CURL_ASCIIPAGE}"
49
VERBATIM)
50
list(APPEND _curl_cfiles_gen "tool_hugehelp.c")
51
list(APPEND _curl_hfiles_gen "tool_hugehelp.h")
52
endif()
53
54
if(CURL_CA_EMBED_SET)
55
if(PERL_FOUND)
56
list(APPEND _curl_definitions "CURL_CA_EMBED")
57
add_custom_command(
58
OUTPUT "tool_ca_embed.c"
59
COMMAND "${PERL_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/mk-file-embed.pl" --var curl_ca_embed
60
< "${CURL_CA_EMBED}" > "tool_ca_embed.c"
61
DEPENDS
62
"${CMAKE_CURRENT_SOURCE_DIR}/mk-file-embed.pl"
63
"${CURL_CA_EMBED}"
64
VERBATIM)
65
list(APPEND _curl_cfiles_gen "tool_ca_embed.c")
66
else()
67
message(WARNING "Perl not found. Will not embed the CA bundle.")
68
endif()
69
endif()
70
71
# Get 'CURL_CFILES', 'CURLX_CFILES', 'CURL_HFILES' variables
72
curl_transform_makefile_inc("Makefile.inc" "${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake")
73
include("${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake")
74
75
if(WIN32)
76
list(APPEND CURL_CFILES "curl.rc")
77
endif()
78
79
if(BUILD_STATIC_CURL)
80
set(CURLX_CFILES "")
81
endif()
82
83
set_property(DIRECTORY APPEND PROPERTY INCLUDE_DIRECTORIES
84
"${PROJECT_BINARY_DIR}/lib" # for "curl_config.h"
85
"${PROJECT_SOURCE_DIR}/lib" # for "curl_setup.h"
86
"${PROJECT_SOURCE_DIR}/lib/curlx" # for curlx functions
87
# This is needed as tool_hugehelp.c is generated in the binary dir
88
"${PROJECT_SOURCE_DIR}/src" # for "tool_hugehelp.h"
89
)
90
91
add_executable(
92
${EXE_NAME}
93
${CURL_CFILES} ${_curl_cfiles_gen} ${CURLX_CFILES} ${CURL_HFILES} ${_curl_hfiles_gen}
94
)
95
target_compile_definitions(${EXE_NAME} PRIVATE ${_curl_definitions})
96
97
add_executable(${PROJECT_NAME}::${EXE_NAME} ALIAS ${EXE_NAME})
98
99
add_executable(
100
curlinfo
101
EXCLUDE_FROM_ALL
102
curlinfo.c
103
)
104
105
add_library(
106
curltool # special libcurltool library just for unittests
107
STATIC
108
EXCLUDE_FROM_ALL
109
${CURL_CFILES} ${CURL_HFILES}
110
)
111
target_compile_definitions(curltool PUBLIC "CURL_STATICLIB" "UNITTESTS")
112
target_link_libraries(curltool PRIVATE ${CURL_LIBS})
113
114
if(CURL_HAS_LTO)
115
set_target_properties(${EXE_NAME} PROPERTIES INTERPROCEDURAL_OPTIMIZATION TRUE)
116
endif()
117
118
if(ENABLE_UNICODE AND MINGW AND NOT MINGW32CE)
119
target_link_libraries(${EXE_NAME} "-municode")
120
endif()
121
122
source_group("curlX source files" FILES ${CURLX_CFILES})
123
source_group("curl source files" FILES ${CURL_CFILES} ${_curl_cfiles_gen})
124
source_group("curl header files" FILES ${CURL_HFILES} ${_curl_hfiles_gen})
125
126
# Build curl executable
127
target_link_libraries(${EXE_NAME} ${LIB_SELECTED_FOR_EXE} ${CURL_LIBS})
128
129
################################################################################
130
131
install(TARGETS ${EXE_NAME} EXPORT ${TARGETS_EXPORT_NAME} DESTINATION ${CMAKE_INSTALL_BINDIR})
132
export(TARGETS ${EXE_NAME}
133
FILE "${PROJECT_BINARY_DIR}/curl-target.cmake"
134
NAMESPACE ${PROJECT_NAME}::
135
)
136
137