1 2# Transform Makefile.inc 3transform_makefile_inc("Makefile.inc" "${PROJECT_BINARY_DIR}/src/lib/Makefile.inc.cmake") 4include(${PROJECT_BINARY_DIR}/src/lib/Makefile.inc.cmake) 5 6# Write ares_config.h configuration file. This is used only for the build. 7CONFIGURE_FILE (ares_config.h.cmake ${PROJECT_BINARY_DIR}/ares_config.h) 8 9# Build the dynamic/shared library 10IF (CARES_SHARED) 11 ADD_LIBRARY (${PROJECT_NAME} SHARED ${CSOURCES}) 12 13 # Convert CARES_LIB_VERSIONINFO libtool version format into VERSION and SOVERSION 14 # Convert from ":" separated into CMake list format using ";" 15 STRING (REPLACE ":" ";" CARES_LIB_VERSIONINFO ${CARES_LIB_VERSIONINFO}) 16 LIST (GET CARES_LIB_VERSIONINFO 0 CARES_LIB_VERSION_CURRENT) 17 LIST (GET CARES_LIB_VERSIONINFO 1 CARES_LIB_VERSION_REVISION) 18 LIST (GET CARES_LIB_VERSIONINFO 2 CARES_LIB_VERSION_AGE) 19 MATH (EXPR CARES_LIB_VERSION_MAJOR "${CARES_LIB_VERSION_CURRENT} - ${CARES_LIB_VERSION_AGE}") 20 SET (CARES_LIB_VERSION_MINOR "${CARES_LIB_VERSION_AGE}") 21 SET (CARES_LIB_VERSION_RELEASE "${CARES_LIB_VERSION_REVISION}") 22 23 SET_TARGET_PROPERTIES (${PROJECT_NAME} PROPERTIES 24 EXPORT_NAME cares 25 OUTPUT_NAME cares 26 COMPILE_PDB_NAME cares 27 COMPILE_PDB_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} 28 SOVERSION ${CARES_LIB_VERSION_MAJOR} 29 VERSION "${CARES_LIB_VERSION_MAJOR}.${CARES_LIB_VERSION_MINOR}.${CARES_LIB_VERSION_RELEASE}" 30 ) 31 32 TARGET_INCLUDE_DIRECTORIES (${PROJECT_NAME} 33 PUBLIC "$<BUILD_INTERFACE:${PROJECT_BINARY_DIR}>" 34 "$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>" 35 "$<BUILD_INTERFACE:${CARES_TOPLEVEL_DIR}/include>" 36 "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>" 37 PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}" 38 ) 39 40 TARGET_COMPILE_DEFINITIONS (${PROJECT_NAME} PRIVATE HAVE_CONFIG_H=1 CARES_BUILDING_LIBRARY) 41 42 TARGET_LINK_LIBRARIES (${PROJECT_NAME} PUBLIC ${CARES_DEPENDENT_LIBS}) 43 44 IF (CARES_INSTALL) 45 INSTALL (TARGETS ${PROJECT_NAME} 46 EXPORT ${PROJECT_NAME}-targets 47 COMPONENT Library 48 ${TARGETS_INST_DEST} 49 ) 50 INSTALL(FILES ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/cares.pdb 51 DESTINATION ${CMAKE_INSTALL_BINDIR} 52 COMPONENT Library 53 OPTIONAL 54 ) 55 ENDIF () 56 SET (STATIC_SUFFIX "_static") 57 58 # For chain building: add alias targets that look like import libs that would be returned by find_package(c-ares). 59 ADD_LIBRARY (${PROJECT_NAME}::cares_shared ALIAS ${PROJECT_NAME}) 60 ADD_LIBRARY (${PROJECT_NAME}::cares ALIAS ${PROJECT_NAME}) 61ENDIF () 62 63# Build the static library 64IF (CARES_STATIC) 65 SET (LIBNAME ${PROJECT_NAME}${STATIC_SUFFIX}) 66 67 ADD_LIBRARY (${LIBNAME} STATIC ${CSOURCES}) 68 69 SET_TARGET_PROPERTIES (${LIBNAME} PROPERTIES 70 EXPORT_NAME cares${STATIC_SUFFIX} 71 OUTPUT_NAME cares${STATIC_SUFFIX} 72 COMPILE_PDB_NAME cares${STATIC_SUFFIX} 73 COMPILE_PDB_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} 74 ) 75 76 IF (CARES_STATIC_PIC) 77 SET_TARGET_PROPERTIES (${LIBNAME} PROPERTIES POSITION_INDEPENDENT_CODE True) 78 ENDIF () 79 80 TARGET_INCLUDE_DIRECTORIES (${LIBNAME} 81 PUBLIC "$<BUILD_INTERFACE:${PROJECT_BINARY_DIR}>" 82 "$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>" 83 "$<BUILD_INTERFACE:${CARES_TOPLEVEL_DIR}/include>" 84 "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>" 85 PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}" 86 ) 87 88 TARGET_COMPILE_DEFINITIONS (${LIBNAME} 89 PUBLIC CARES_STATICLIB 90 PRIVATE HAVE_CONFIG_H=1 91 ) 92 93 TARGET_LINK_LIBRARIES (${LIBNAME} PUBLIC ${CARES_DEPENDENT_LIBS}) 94 IF (CARES_INSTALL) 95 INSTALL (TARGETS ${LIBNAME} EXPORT ${PROJECT_NAME}-targets COMPONENT Devel 96 ${TARGETS_INST_DEST} 97 ) 98 INSTALL(FILES ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/cares${STATIC_SUFFIX}.pdb 99 DESTINATION ${CMAKE_INSTALL_BINDIR} 100 COMPONENT Library 101 OPTIONAL 102 ) 103 ENDIF () 104 105 # For chain building: add alias targets that look like import libs that would be returned by find_package(c-ares). 106 ADD_LIBRARY (${PROJECT_NAME}::cares_static ALIAS ${LIBNAME}) 107 IF (NOT TARGET ${PROJECT_NAME}::cares) 108 # Only use static for the generic alias if shared lib wasn't built. 109 ADD_LIBRARY (${PROJECT_NAME}::cares ALIAS ${LIBNAME}) 110 ENDIF () 111ENDIF () 112 113 114 115 116