quickjs-tart

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

CMakeLists.txt (5306B)


      1 # Copyright (C) The c-ares project and its contributors
      2 # SPDX-License-Identifier: MIT
      3 
      4 # Transform Makefile.inc
      5 transform_makefile_inc("Makefile.inc" "${PROJECT_BINARY_DIR}/src/lib/Makefile.inc.cmake")
      6 include(${PROJECT_BINARY_DIR}/src/lib/Makefile.inc.cmake)
      7 
      8 # Write ares_config.h configuration file.  This is used only for the build.
      9 CONFIGURE_FILE (ares_config.h.cmake ${PROJECT_BINARY_DIR}/ares_config.h)
     10 
     11 # Build the dynamic/shared library
     12 IF (CARES_SHARED)
     13 	ADD_LIBRARY (${PROJECT_NAME} SHARED ${CSOURCES})
     14 
     15 	# Include resource file in windows builds for versioned DLLs
     16 	IF (WIN32)
     17 		TARGET_SOURCES (${PROJECT_NAME} PRIVATE cares.rc)
     18 	ENDIF()
     19 
     20 	# Convert CARES_LIB_VERSIONINFO libtool version format into VERSION and SOVERSION
     21 	# Convert from ":" separated into CMake list format using ";"
     22 	STRING (REPLACE ":" ";" CARES_LIB_VERSIONINFO ${CARES_LIB_VERSIONINFO})
     23 	LIST (GET CARES_LIB_VERSIONINFO 0 CARES_LIB_VERSION_CURRENT)
     24 	LIST (GET CARES_LIB_VERSIONINFO 1 CARES_LIB_VERSION_REVISION)
     25 	LIST (GET CARES_LIB_VERSIONINFO 2 CARES_LIB_VERSION_AGE)
     26 	MATH (EXPR CARES_LIB_VERSION_MAJOR "${CARES_LIB_VERSION_CURRENT} - ${CARES_LIB_VERSION_AGE}")
     27 	SET  (CARES_LIB_VERSION_MINOR "${CARES_LIB_VERSION_AGE}")
     28 	SET  (CARES_LIB_VERSION_RELEASE "${CARES_LIB_VERSION_REVISION}")
     29 
     30 	SET_TARGET_PROPERTIES (${PROJECT_NAME} PROPERTIES
     31 		EXPORT_NAME                  cares
     32 		OUTPUT_NAME                  cares
     33 		COMPILE_PDB_NAME             cares
     34 		SOVERSION                    ${CARES_LIB_VERSION_MAJOR}
     35 		VERSION                      "${CARES_LIB_VERSION_MAJOR}.${CARES_LIB_VERSION_MINOR}.${CARES_LIB_VERSION_RELEASE}"
     36 		C_STANDARD                   90
     37 	)
     38 
     39 	IF (ANDROID)
     40 		SET_TARGET_PROPERTIES (${PROJECT_NAME} PROPERTIES C_STANDARD 99)
     41 	ENDIF ()
     42 
     43 	IF (CARES_SYMBOL_HIDING)
     44 		SET_TARGET_PROPERTIES (${PROJECT_NAME} PROPERTIES
     45 			C_VISIBILITY_PRESET hidden
     46 			VISIBILITY_INLINES_HIDDEN YES
     47 		)
     48 	ENDIF ()
     49 
     50 	TARGET_INCLUDE_DIRECTORIES (${PROJECT_NAME}
     51 		PUBLIC "$<BUILD_INTERFACE:${PROJECT_BINARY_DIR}>"
     52 		       "$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>"
     53 		       "$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>"
     54 		       "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>"
     55 		PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}"
     56 		        "${CMAKE_CURRENT_SOURCE_DIR}/include"
     57 	)
     58 
     59 	TARGET_COMPILE_DEFINITIONS (${PROJECT_NAME} PRIVATE HAVE_CONFIG_H=1 CARES_BUILDING_LIBRARY)
     60 
     61 	TARGET_LINK_LIBRARIES (${PROJECT_NAME}
     62 		PUBLIC ${CARES_DEPENDENT_LIBS}
     63 		PRIVATE ${CMAKE_THREAD_LIBS_INIT}
     64 	)
     65 
     66 	IF (CARES_INSTALL)
     67 		INSTALL (TARGETS ${PROJECT_NAME}
     68 			EXPORT ${PROJECT_NAME}-targets
     69 			COMPONENT Library
     70 			${TARGETS_INST_DEST}
     71 		)
     72 		IF (MSVC)
     73 			INSTALL(FILES $<TARGET_PDB_FILE:${PROJECT_NAME}>
     74 			        DESTINATION ${CMAKE_INSTALL_BINDIR}
     75 				COMPONENT Library
     76 				OPTIONAL
     77 			)
     78 		ENDIF ()
     79 	ENDIF ()
     80 	SET (STATIC_SUFFIX "_static")
     81 
     82 	# For chain building: add alias targets that look like import libs that would be returned by find_package(c-ares).
     83 	ADD_LIBRARY (${PROJECT_NAME}::cares_shared ALIAS ${PROJECT_NAME})
     84 	ADD_LIBRARY (${PROJECT_NAME}::cares        ALIAS ${PROJECT_NAME})
     85 ENDIF ()
     86 
     87 # Build the static library
     88 IF (CARES_STATIC)
     89 	SET (LIBNAME ${PROJECT_NAME}${STATIC_SUFFIX})
     90 
     91 	ADD_LIBRARY (${LIBNAME} STATIC ${CSOURCES})
     92 
     93 	SET_TARGET_PROPERTIES (${LIBNAME} PROPERTIES
     94 		EXPORT_NAME                  cares${STATIC_SUFFIX}
     95 		COMPILE_PDB_NAME             cares${STATIC_SUFFIX}
     96 		C_STANDARD                   90
     97 	)
     98 
     99 	# On Windows, the output name should have a static suffix since otherwise
    100 	# we would have conflicting output names (libcares.lib) for the link
    101 	# library.
    102 	# However on Unix-like systems, we typically have something like
    103 	# libcares.so  for shared libraries  and libcares.a for static
    104 	# libraries, so these don't conflict.
    105 	# This behavior better emulates what happens with autotools builds
    106 	IF (WIN32)
    107 		SET_TARGET_PROPERTIES(${LIBNAME} PROPERTIES OUTPUT_NAME cares${STATIC_SUFFIX})
    108 	ELSE ()
    109 		SET_TARGET_PROPERTIES(${LIBNAME} PROPERTIES OUTPUT_NAME cares)
    110 	ENDIF()
    111 
    112 	IF (ANDROID)
    113 		SET_TARGET_PROPERTIES (${LIBNAME} PROPERTIES C_STANDARD 99)
    114 	ENDIF ()
    115 
    116 	IF (CARES_STATIC_PIC)
    117 		SET_TARGET_PROPERTIES (${LIBNAME} PROPERTIES POSITION_INDEPENDENT_CODE True)
    118 	ENDIF ()
    119 
    120 	TARGET_INCLUDE_DIRECTORIES (${LIBNAME}
    121 		PUBLIC "$<BUILD_INTERFACE:${PROJECT_BINARY_DIR}>"
    122 		       "$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>"
    123 		       "$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>"
    124 		       "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>"
    125 		PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}"
    126 		        "${CMAKE_CURRENT_SOURCE_DIR}/include"
    127 	)
    128 
    129 	TARGET_COMPILE_DEFINITIONS (${LIBNAME} PRIVATE HAVE_CONFIG_H=1 CARES_BUILDING_LIBRARY)
    130 
    131 	# Only matters on Windows
    132 	IF (WIN32 OR CYGWIN)
    133 		TARGET_COMPILE_DEFINITIONS (${LIBNAME} PUBLIC CARES_STATICLIB)
    134 	ENDIF()
    135 
    136 	TARGET_LINK_LIBRARIES (${LIBNAME} PUBLIC ${CARES_DEPENDENT_LIBS})
    137 	IF (CARES_INSTALL)
    138 		INSTALL (TARGETS ${LIBNAME} EXPORT ${PROJECT_NAME}-targets COMPONENT Devel
    139 			${TARGETS_INST_DEST}
    140 		)
    141 	ENDIF ()
    142 
    143 	# For chain building: add alias targets that look like import libs that would be returned by find_package(c-ares).
    144 	ADD_LIBRARY (${PROJECT_NAME}::cares_static ALIAS ${LIBNAME})
    145 	IF (NOT TARGET ${PROJECT_NAME}::cares)
    146 		# Only use static for the generic alias if shared lib wasn't built.
    147 		ADD_LIBRARY (${PROJECT_NAME}::cares ALIAS ${LIBNAME})
    148 	ENDIF ()
    149 ENDIF ()
    150 
    151 
    152 
    153