1*6236dae4SAndroid Build Coastguard Worker#*************************************************************************** 2*6236dae4SAndroid Build Coastguard Worker# _ _ ____ _ 3*6236dae4SAndroid Build Coastguard Worker# Project ___| | | | _ \| | 4*6236dae4SAndroid Build Coastguard Worker# / __| | | | |_) | | 5*6236dae4SAndroid Build Coastguard Worker# | (__| |_| | _ <| |___ 6*6236dae4SAndroid Build Coastguard Worker# \___|\___/|_| \_\_____| 7*6236dae4SAndroid Build Coastguard Worker# 8*6236dae4SAndroid Build Coastguard Worker# Copyright (C) Daniel Stenberg, <[email protected]>, et al. 9*6236dae4SAndroid Build Coastguard Worker# 10*6236dae4SAndroid Build Coastguard Worker# This software is licensed as described in the file COPYING, which 11*6236dae4SAndroid Build Coastguard Worker# you should have received as part of this distribution. The terms 12*6236dae4SAndroid Build Coastguard Worker# are also available at https://curl.se/docs/copyright.html. 13*6236dae4SAndroid Build Coastguard Worker# 14*6236dae4SAndroid Build Coastguard Worker# You may opt to use, copy, modify, merge, publish, distribute and/or sell 15*6236dae4SAndroid Build Coastguard Worker# copies of the Software, and permit persons to whom the Software is 16*6236dae4SAndroid Build Coastguard Worker# furnished to do so, under the terms of the COPYING file. 17*6236dae4SAndroid Build Coastguard Worker# 18*6236dae4SAndroid Build Coastguard Worker# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY 19*6236dae4SAndroid Build Coastguard Worker# KIND, either express or implied. 20*6236dae4SAndroid Build Coastguard Worker# 21*6236dae4SAndroid Build Coastguard Worker# SPDX-License-Identifier: curl 22*6236dae4SAndroid Build Coastguard Worker# 23*6236dae4SAndroid Build Coastguard Worker########################################################################### 24*6236dae4SAndroid Build Coastguard Workerset(EXE_NAME curl) 25*6236dae4SAndroid Build Coastguard Workeradd_definitions("-DBUILDING_CURL") 26*6236dae4SAndroid Build Coastguard Worker 27*6236dae4SAndroid Build Coastguard Workerif(ENABLE_CURL_MANUAL AND HAVE_MANUAL_TOOLS) 28*6236dae4SAndroid Build Coastguard Worker add_definitions("-DUSE_MANUAL") 29*6236dae4SAndroid Build Coastguard Worker add_custom_command( 30*6236dae4SAndroid Build Coastguard Worker OUTPUT "tool_hugehelp.c" 31*6236dae4SAndroid Build Coastguard Worker COMMAND ${CMAKE_COMMAND} -E echo "#include \"tool_setup.h\"" > "tool_hugehelp.c" 32*6236dae4SAndroid Build Coastguard Worker COMMAND ${CMAKE_COMMAND} -E echo "#ifndef HAVE_LIBZ" >> "tool_hugehelp.c" 33*6236dae4SAndroid Build Coastguard Worker COMMAND "${PERL_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/mkhelp.pl" < "${CURL_ASCIIPAGE}" >> "tool_hugehelp.c" 34*6236dae4SAndroid Build Coastguard Worker COMMAND ${CMAKE_COMMAND} -E echo "#else" >> "tool_hugehelp.c" 35*6236dae4SAndroid Build Coastguard Worker COMMAND "${PERL_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/mkhelp.pl" -c < "${CURL_ASCIIPAGE}" >> "tool_hugehelp.c" 36*6236dae4SAndroid Build Coastguard Worker COMMAND ${CMAKE_COMMAND} -E echo "#endif /* HAVE_LIBZ */" >> "tool_hugehelp.c" 37*6236dae4SAndroid Build Coastguard Worker DEPENDS 38*6236dae4SAndroid Build Coastguard Worker generate-curl.1 39*6236dae4SAndroid Build Coastguard Worker "${CMAKE_CURRENT_SOURCE_DIR}/mkhelp.pl" 40*6236dae4SAndroid Build Coastguard Worker "${CMAKE_CURRENT_SOURCE_DIR}/tool_hugehelp.h" 41*6236dae4SAndroid Build Coastguard Worker "${CURL_ASCIIPAGE}" 42*6236dae4SAndroid Build Coastguard Worker VERBATIM) 43*6236dae4SAndroid Build Coastguard Workerelse() 44*6236dae4SAndroid Build Coastguard Worker add_custom_command( 45*6236dae4SAndroid Build Coastguard Worker OUTPUT "tool_hugehelp.c" 46*6236dae4SAndroid Build Coastguard Worker COMMAND ${CMAKE_COMMAND} -E echo "#include \"tool_hugehelp.h\"" > "tool_hugehelp.c" 47*6236dae4SAndroid Build Coastguard Worker DEPENDS 48*6236dae4SAndroid Build Coastguard Worker "${CMAKE_CURRENT_SOURCE_DIR}/tool_hugehelp.h" 49*6236dae4SAndroid Build Coastguard Worker VERBATIM) 50*6236dae4SAndroid Build Coastguard Workerendif() 51*6236dae4SAndroid Build Coastguard Worker 52*6236dae4SAndroid Build Coastguard Worker# Get 'CURL_CFILES', 'CURLX_CFILES', 'CURL_HFILES', 'CURLTOOL_LIBCURL_CFILES' variables 53*6236dae4SAndroid Build Coastguard Workertransform_makefile_inc("Makefile.inc" "${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake") 54*6236dae4SAndroid Build Coastguard Workerinclude("${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake") 55*6236dae4SAndroid Build Coastguard Worker 56*6236dae4SAndroid Build Coastguard Workerif(CURL_CA_EMBED_SET) 57*6236dae4SAndroid Build Coastguard Worker if(PERL_FOUND) 58*6236dae4SAndroid Build Coastguard Worker add_definitions("-DCURL_CA_EMBED") 59*6236dae4SAndroid Build Coastguard Worker add_custom_command( 60*6236dae4SAndroid Build Coastguard Worker OUTPUT "tool_ca_embed.c" 61*6236dae4SAndroid Build Coastguard Worker COMMAND "${PERL_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/mk-file-embed.pl" --var curl_ca_embed 62*6236dae4SAndroid Build Coastguard Worker < "${CURL_CA_EMBED}" > "tool_ca_embed.c" 63*6236dae4SAndroid Build Coastguard Worker DEPENDS 64*6236dae4SAndroid Build Coastguard Worker "${CMAKE_CURRENT_SOURCE_DIR}/mk-file-embed.pl" 65*6236dae4SAndroid Build Coastguard Worker "${CURL_CA_EMBED}" 66*6236dae4SAndroid Build Coastguard Worker VERBATIM) 67*6236dae4SAndroid Build Coastguard Worker list(APPEND CURL_CFILES "tool_ca_embed.c") 68*6236dae4SAndroid Build Coastguard Worker else() 69*6236dae4SAndroid Build Coastguard Worker message(WARNING "Perl not found. Will not embed the CA bundle.") 70*6236dae4SAndroid Build Coastguard Worker endif() 71*6236dae4SAndroid Build Coastguard Workerendif() 72*6236dae4SAndroid Build Coastguard Worker 73*6236dae4SAndroid Build Coastguard Workerif(WIN32) 74*6236dae4SAndroid Build Coastguard Worker list(APPEND CURL_CFILES "curl.rc") 75*6236dae4SAndroid Build Coastguard Workerendif() 76*6236dae4SAndroid Build Coastguard Worker 77*6236dae4SAndroid Build Coastguard Workerif(BUILD_STATIC_CURL) 78*6236dae4SAndroid Build Coastguard Worker set(CURLX_CFILES ${CURLTOOL_LIBCURL_CFILES}) 79*6236dae4SAndroid Build Coastguard Workerendif() 80*6236dae4SAndroid Build Coastguard Worker 81*6236dae4SAndroid Build Coastguard Workerif(ENABLE_CURLDEBUG) 82*6236dae4SAndroid Build Coastguard Worker # We must compile this source separately to avoid memdebug.h redefinitions 83*6236dae4SAndroid Build Coastguard Worker # applying to them. 84*6236dae4SAndroid Build Coastguard Worker set_source_files_properties("../lib/curl_multibyte.c" PROPERTIES SKIP_UNITY_BUILD_INCLUSION ON) 85*6236dae4SAndroid Build Coastguard Workerendif() 86*6236dae4SAndroid Build Coastguard Worker 87*6236dae4SAndroid Build Coastguard Workeradd_executable( 88*6236dae4SAndroid Build Coastguard Worker ${EXE_NAME} 89*6236dae4SAndroid Build Coastguard Worker ${CURL_CFILES} ${CURLX_CFILES} ${CURL_HFILES} 90*6236dae4SAndroid Build Coastguard Worker) 91*6236dae4SAndroid Build Coastguard Worker 92*6236dae4SAndroid Build Coastguard Workeradd_executable( 93*6236dae4SAndroid Build Coastguard Worker ${PROJECT_NAME}::${EXE_NAME} 94*6236dae4SAndroid Build Coastguard Worker ALIAS ${EXE_NAME} 95*6236dae4SAndroid Build Coastguard Worker) 96*6236dae4SAndroid Build Coastguard Worker 97*6236dae4SAndroid Build Coastguard Workeradd_library( 98*6236dae4SAndroid Build Coastguard Worker curltool # special libcurltool library just for unittests 99*6236dae4SAndroid Build Coastguard Worker STATIC 100*6236dae4SAndroid Build Coastguard Worker EXCLUDE_FROM_ALL 101*6236dae4SAndroid Build Coastguard Worker ${CURL_CFILES} ${CURLTOOL_LIBCURL_CFILES} ${CURL_HFILES} 102*6236dae4SAndroid Build Coastguard Worker) 103*6236dae4SAndroid Build Coastguard Workertarget_compile_definitions(curltool PUBLIC "UNITTESTS" "CURL_STATICLIB") 104*6236dae4SAndroid Build Coastguard Workertarget_link_libraries(curltool PRIVATE ${CURL_LIBS}) 105*6236dae4SAndroid Build Coastguard Worker 106*6236dae4SAndroid Build Coastguard Workerif(CURL_HAS_LTO) 107*6236dae4SAndroid Build Coastguard Worker set_target_properties(${EXE_NAME} PROPERTIES 108*6236dae4SAndroid Build Coastguard Worker INTERPROCEDURAL_OPTIMIZATION_RELEASE TRUE 109*6236dae4SAndroid Build Coastguard Worker INTERPROCEDURAL_OPTIMIZATION_RELWITHDEBINFO TRUE) 110*6236dae4SAndroid Build Coastguard Workerendif() 111*6236dae4SAndroid Build Coastguard Worker 112*6236dae4SAndroid Build Coastguard Workerif(ENABLE_UNICODE AND MINGW) 113*6236dae4SAndroid Build Coastguard Worker target_link_libraries(${EXE_NAME} "-municode") 114*6236dae4SAndroid Build Coastguard Workerendif() 115*6236dae4SAndroid Build Coastguard Worker 116*6236dae4SAndroid Build Coastguard Workersource_group("curlX source files" FILES ${CURLX_CFILES}) 117*6236dae4SAndroid Build Coastguard Workersource_group("curl source files" FILES ${CURL_CFILES}) 118*6236dae4SAndroid Build Coastguard Workersource_group("curl header files" FILES ${CURL_HFILES}) 119*6236dae4SAndroid Build Coastguard Worker 120*6236dae4SAndroid Build Coastguard Workerinclude_directories( 121*6236dae4SAndroid Build Coastguard Worker "${PROJECT_BINARY_DIR}/lib" # for "curl_config.h" 122*6236dae4SAndroid Build Coastguard Worker "${PROJECT_SOURCE_DIR}/lib" # for "curl_setup.h" 123*6236dae4SAndroid Build Coastguard Worker # This is needed as tool_hugehelp.c is generated in the binary dir 124*6236dae4SAndroid Build Coastguard Worker "${PROJECT_SOURCE_DIR}/src" # for "tool_hugehelp.h" 125*6236dae4SAndroid Build Coastguard Worker) 126*6236dae4SAndroid Build Coastguard Worker 127*6236dae4SAndroid Build Coastguard Worker# Build curl executable 128*6236dae4SAndroid Build Coastguard Workertarget_link_libraries(${EXE_NAME} ${LIB_SELECTED_FOR_EXE} ${CURL_LIBS}) 129*6236dae4SAndroid Build Coastguard Worker 130*6236dae4SAndroid Build Coastguard Worker################################################################################ 131*6236dae4SAndroid Build Coastguard Worker 132*6236dae4SAndroid Build Coastguard Workerinstall(TARGETS ${EXE_NAME} EXPORT ${TARGETS_EXPORT_NAME} DESTINATION ${CMAKE_INSTALL_BINDIR}) 133*6236dae4SAndroid Build Coastguard Workerexport(TARGETS ${EXE_NAME} 134*6236dae4SAndroid Build Coastguard Worker FILE "${PROJECT_BINARY_DIR}/curl-target.cmake" 135*6236dae4SAndroid Build Coastguard Worker NAMESPACE ${PROJECT_NAME}:: 136*6236dae4SAndroid Build Coastguard Worker) 137