quickjs-tart

quickjs-based runtime for wallet-core logic
Log | Files | Refs | README | LICENSE

CMakeLists.txt (5482B)


      1 #***************************************************************************
      2 #                                  _   _ ____  _
      3 #  Project                     ___| | | |  _ \| |
      4 #                             / __| | | | |_) | |
      5 #                            | (__| |_| |  _ <| |___
      6 #                             \___|\___/|_| \_\_____|
      7 #
      8 # Copyright (C) Daniel Stenberg, <daniel@haxx.se>, 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(OUTPUT "tool_hugehelp.c"
     34     COMMAND ${CMAKE_COMMAND} -E echo "#include \"tool_setup.h\"" > "tool_hugehelp.c"
     35     COMMAND ${CMAKE_COMMAND} -E echo "/* !checksrc! disable COPYRIGHT all */" >> "tool_hugehelp.c"
     36     COMMAND ${CMAKE_COMMAND} -E echo "/* !checksrc! disable INCLUDEDUP all */" >> "tool_hugehelp.c"
     37     COMMAND ${CMAKE_COMMAND} -E echo "/* !checksrc! disable LONGLINE all */" >> "tool_hugehelp.c"
     38     COMMAND ${CMAKE_COMMAND} -E echo "#ifndef HAVE_LIBZ" >> "tool_hugehelp.c"
     39     COMMAND "${PERL_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/mkhelp.pl"    < "${CURL_ASCIIPAGE}" >> "tool_hugehelp.c"
     40     COMMAND ${CMAKE_COMMAND} -E echo "#else" >> "tool_hugehelp.c"
     41     COMMAND "${PERL_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/mkhelp.pl" -c < "${CURL_ASCIIPAGE}" >> "tool_hugehelp.c"
     42     COMMAND ${CMAKE_COMMAND} -E echo "#endif /* HAVE_LIBZ */" >> "tool_hugehelp.c"
     43     DEPENDS
     44       generate-curl.1
     45       "${CMAKE_CURRENT_SOURCE_DIR}/mkhelp.pl"
     46       "${CMAKE_CURRENT_SOURCE_DIR}/tool_hugehelp.h"
     47       "${CURL_ASCIIPAGE}"
     48     VERBATIM)
     49   list(APPEND _curl_cfiles_gen "tool_hugehelp.c")
     50   list(APPEND _curl_hfiles_gen "tool_hugehelp.h")
     51 endif()
     52 
     53 if(CURL_CA_EMBED_SET)
     54   if(PERL_FOUND)
     55     list(APPEND _curl_definitions "CURL_CA_EMBED")
     56     add_custom_command(OUTPUT "tool_ca_embed.c"
     57       COMMAND "${PERL_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/mk-file-embed.pl" --var curl_ca_embed
     58         < "${CURL_CA_EMBED}" > "tool_ca_embed.c"
     59       DEPENDS
     60         "${CMAKE_CURRENT_SOURCE_DIR}/mk-file-embed.pl"
     61         "${CURL_CA_EMBED}"
     62       VERBATIM)
     63     list(APPEND _curl_cfiles_gen "tool_ca_embed.c")
     64   else()
     65     message(WARNING "Perl not found. Will not embed the CA bundle.")
     66   endif()
     67 endif()
     68 
     69 # Get CURL_CFILES, CURL_HFILES, CURLX_CFILES, CURLX_HFILES, CURL_RCFILES variables
     70 curl_transform_makefile_inc("Makefile.inc" "${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake")
     71 include("${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake")
     72 
     73 source_group("curl source files" FILES ${CURL_CFILES} ${_curl_cfiles_gen})
     74 source_group("curl header files" FILES ${CURL_HFILES} ${_curl_hfiles_gen})
     75 source_group("curlx source files" FILES ${CURLX_CFILES})
     76 source_group("curlx header files" FILES ${CURLX_HFILES})
     77 
     78 if(WIN32)
     79   list(APPEND CURL_CFILES ${CURL_RCFILES})
     80 endif()
     81 
     82 set(_curlx_cfiles_lib ${CURLX_CFILES})
     83 set(_curlx_hfiles_lib ${CURLX_HFILES})
     84 if(LIB_SELECTED STREQUAL LIB_STATIC)
     85   set(_curlx_cfiles_lib "")
     86   set(_curlx_hfiles_lib "")
     87 endif()
     88 
     89 if(BUILD_STATIC_CURL)
     90   set(CURLX_CFILES "")
     91   set(CURLX_HFILES "")
     92 endif()
     93 
     94 set_property(DIRECTORY APPEND PROPERTY INCLUDE_DIRECTORIES
     95   "${PROJECT_BINARY_DIR}/lib"        # for "curl_config.h"
     96   "${PROJECT_SOURCE_DIR}/lib"        # for "curl_setup.h", curlx
     97   "${CMAKE_CURRENT_SOURCE_DIR}"      # for "tool_hugehelp.c"
     98 )
     99 
    100 # Build curl executable
    101 add_executable(${EXE_NAME} ${CURL_CFILES} ${CURL_HFILES} ${_curl_cfiles_gen} ${_curl_hfiles_gen} ${CURLX_CFILES} ${CURLX_HFILES})
    102 target_compile_definitions(${EXE_NAME} PRIVATE ${_curl_definitions})
    103 target_link_libraries(${EXE_NAME} ${LIB_SELECTED_FOR_EXE} ${CURL_LIBS})
    104 
    105 add_executable(${PROJECT_NAME}::${EXE_NAME} ALIAS ${EXE_NAME})
    106 
    107 add_executable(curlinfo EXCLUDE_FROM_ALL "curlinfo.c")
    108 
    109 # special libcurltool library just for unittests
    110 add_library(curltool STATIC EXCLUDE_FROM_ALL ${CURL_CFILES} ${CURL_HFILES} ${_curlx_cfiles_lib} ${_curlx_hfiles_lib})
    111 target_compile_definitions(curltool PUBLIC "CURL_STATICLIB" "UNITTESTS")
    112 target_link_libraries(curltool PRIVATE ${CURL_LIBS})
    113 set_target_properties(curltool PROPERTIES C_CLANG_TIDY "")
    114 
    115 if(CURL_HAS_LTO)
    116   set_target_properties(${EXE_NAME} PROPERTIES INTERPROCEDURAL_OPTIMIZATION TRUE)
    117 endif()
    118 
    119 if(ENABLE_UNICODE AND MINGW AND NOT MINGW32CE)
    120   if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.13)
    121     target_link_options(${EXE_NAME} PRIVATE "-municode")
    122   else()
    123     target_link_libraries(${EXE_NAME} PRIVATE "-municode")
    124   endif()
    125 endif()
    126 
    127 ################################################################################
    128 
    129 install(TARGETS ${EXE_NAME} EXPORT ${TARGETS_EXPORT_NAME} DESTINATION ${CMAKE_INSTALL_BINDIR})
    130 export(TARGETS ${EXE_NAME}
    131   FILE "${PROJECT_BINARY_DIR}/curl-target.cmake"
    132   NAMESPACE ${PROJECT_NAME}::
    133 )