1*a6021da3SAndroid Build Coastguard Workercmake_minimum_required(VERSION 3.0) 2*a6021da3SAndroid Build Coastguard Workerproject(double-conversion VERSION 3.2.0) 3*a6021da3SAndroid Build Coastguard Worker 4*a6021da3SAndroid Build Coastguard Workeroption(BUILD_SHARED_LIBS "Build shared libraries (.dll/.so) instead of static ones (.lib/.a)" OFF) 5*a6021da3SAndroid Build Coastguard Worker 6*a6021da3SAndroid Build Coastguard Workerif(BUILD_SHARED_LIBS AND MSVC) 7*a6021da3SAndroid Build Coastguard Worker set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) 8*a6021da3SAndroid Build Coastguard Workerendif() 9*a6021da3SAndroid Build Coastguard Worker 10*a6021da3SAndroid Build Coastguard Workerset(headers 11*a6021da3SAndroid Build Coastguard Worker double-conversion/bignum.h 12*a6021da3SAndroid Build Coastguard Worker double-conversion/cached-powers.h 13*a6021da3SAndroid Build Coastguard Worker double-conversion/diy-fp.h 14*a6021da3SAndroid Build Coastguard Worker double-conversion/double-conversion.h 15*a6021da3SAndroid Build Coastguard Worker double-conversion/double-to-string.h 16*a6021da3SAndroid Build Coastguard Worker double-conversion/fast-dtoa.h 17*a6021da3SAndroid Build Coastguard Worker double-conversion/fixed-dtoa.h 18*a6021da3SAndroid Build Coastguard Worker double-conversion/ieee.h 19*a6021da3SAndroid Build Coastguard Worker double-conversion/string-to-double.h 20*a6021da3SAndroid Build Coastguard Worker double-conversion/strtod.h 21*a6021da3SAndroid Build Coastguard Worker double-conversion/utils.h) 22*a6021da3SAndroid Build Coastguard Worker 23*a6021da3SAndroid Build Coastguard Workeradd_library(double-conversion 24*a6021da3SAndroid Build Coastguard Worker double-conversion/bignum.cc 25*a6021da3SAndroid Build Coastguard Worker double-conversion/bignum-dtoa.cc 26*a6021da3SAndroid Build Coastguard Worker double-conversion/cached-powers.cc 27*a6021da3SAndroid Build Coastguard Worker double-conversion/double-to-string.cc 28*a6021da3SAndroid Build Coastguard Worker double-conversion/fast-dtoa.cc 29*a6021da3SAndroid Build Coastguard Worker double-conversion/fixed-dtoa.cc 30*a6021da3SAndroid Build Coastguard Worker double-conversion/string-to-double.cc 31*a6021da3SAndroid Build Coastguard Worker double-conversion/strtod.cc 32*a6021da3SAndroid Build Coastguard Worker ${headers}) 33*a6021da3SAndroid Build Coastguard Workertarget_include_directories( 34*a6021da3SAndroid Build Coastguard Worker double-conversion PUBLIC 35*a6021da3SAndroid Build Coastguard Worker $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>) 36*a6021da3SAndroid Build Coastguard Worker 37*a6021da3SAndroid Build Coastguard Worker# pick a version # 38*a6021da3SAndroid Build Coastguard Workerset_target_properties(double-conversion PROPERTIES VERSION ${PROJECT_VERSION} SOVERSION 3) 39*a6021da3SAndroid Build Coastguard Worker 40*a6021da3SAndroid Build Coastguard Worker# set up testing if requested 41*a6021da3SAndroid Build Coastguard Workeroption(BUILD_TESTING "Build test programs" OFF) 42*a6021da3SAndroid Build Coastguard Workerif(BUILD_TESTING) 43*a6021da3SAndroid Build Coastguard Worker enable_testing() 44*a6021da3SAndroid Build Coastguard Worker include(CTest) 45*a6021da3SAndroid Build Coastguard Worker add_subdirectory(test) 46*a6021da3SAndroid Build Coastguard Workerendif() 47*a6021da3SAndroid Build Coastguard Worker 48*a6021da3SAndroid Build Coastguard Worker#### 49*a6021da3SAndroid Build Coastguard Worker# Installation (https://github.com/forexample/package-example) 50*a6021da3SAndroid Build Coastguard Worker 51*a6021da3SAndroid Build Coastguard Workerinclude(GNUInstallDirs) 52*a6021da3SAndroid Build Coastguard Worker 53*a6021da3SAndroid Build Coastguard Worker# Layout. This works for all platforms: 54*a6021da3SAndroid Build Coastguard Worker# * <prefix>/lib/cmake/<PROJECT-NAME> 55*a6021da3SAndroid Build Coastguard Worker# * <prefix>/lib/ 56*a6021da3SAndroid Build Coastguard Worker# * <prefix>/include/ 57*a6021da3SAndroid Build Coastguard Workerset(config_install_dir "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}") 58*a6021da3SAndroid Build Coastguard Worker 59*a6021da3SAndroid Build Coastguard Workerset(generated_dir "${CMAKE_CURRENT_BINARY_DIR}/generated") 60*a6021da3SAndroid Build Coastguard Worker 61*a6021da3SAndroid Build Coastguard Worker# Configuration 62*a6021da3SAndroid Build Coastguard Workerset(version_config "${generated_dir}/${PROJECT_NAME}ConfigVersion.cmake") 63*a6021da3SAndroid Build Coastguard Workerset(project_config "${generated_dir}/${PROJECT_NAME}Config.cmake") 64*a6021da3SAndroid Build Coastguard Workerset(targets_export_name "${PROJECT_NAME}Targets") 65*a6021da3SAndroid Build Coastguard Workerset(namespace "${PROJECT_NAME}::") 66*a6021da3SAndroid Build Coastguard Worker 67*a6021da3SAndroid Build Coastguard Worker# Include module with function 'write_basic_package_version_file' 68*a6021da3SAndroid Build Coastguard Workerinclude(CMakePackageConfigHelpers) 69*a6021da3SAndroid Build Coastguard Worker 70*a6021da3SAndroid Build Coastguard Worker# Configure '<PROJECT-NAME>ConfigVersion.cmake' 71*a6021da3SAndroid Build Coastguard Worker# Note: PROJECT_VERSION is used as a VERSION 72*a6021da3SAndroid Build Coastguard Workerwrite_basic_package_version_file( 73*a6021da3SAndroid Build Coastguard Worker "${version_config}" COMPATIBILITY SameMajorVersion 74*a6021da3SAndroid Build Coastguard Worker) 75*a6021da3SAndroid Build Coastguard Worker 76*a6021da3SAndroid Build Coastguard Worker# Configure '<PROJECT-NAME>Config.cmake' 77*a6021da3SAndroid Build Coastguard Worker# Use variables: 78*a6021da3SAndroid Build Coastguard Worker# * targets_export_name 79*a6021da3SAndroid Build Coastguard Worker# * PROJECT_NAME 80*a6021da3SAndroid Build Coastguard Workerconfigure_package_config_file( 81*a6021da3SAndroid Build Coastguard Worker "cmake/Config.cmake.in" 82*a6021da3SAndroid Build Coastguard Worker "${project_config}" 83*a6021da3SAndroid Build Coastguard Worker INSTALL_DESTINATION "${config_install_dir}" 84*a6021da3SAndroid Build Coastguard Worker) 85*a6021da3SAndroid Build Coastguard Worker 86*a6021da3SAndroid Build Coastguard Worker# Targets: 87*a6021da3SAndroid Build Coastguard Worker# * <prefix>/lib/libdouble-conversion.a 88*a6021da3SAndroid Build Coastguard Worker# * header location after install: <prefix>/include/double-conversion/*.h 89*a6021da3SAndroid Build Coastguard Worker# * headers can be included by C++ code `#include <double-conversion/*.h>` 90*a6021da3SAndroid Build Coastguard Workerinstall( 91*a6021da3SAndroid Build Coastguard Worker TARGETS double-conversion 92*a6021da3SAndroid Build Coastguard Worker EXPORT "${targets_export_name}" 93*a6021da3SAndroid Build Coastguard Worker LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" 94*a6021da3SAndroid Build Coastguard Worker ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" 95*a6021da3SAndroid Build Coastguard Worker RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" 96*a6021da3SAndroid Build Coastguard Worker INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" 97*a6021da3SAndroid Build Coastguard Worker) 98*a6021da3SAndroid Build Coastguard Worker 99*a6021da3SAndroid Build Coastguard Worker# Headers: 100*a6021da3SAndroid Build Coastguard Worker# * double-conversion/*.h -> <prefix>/include/double-conversion/*.h 101*a6021da3SAndroid Build Coastguard Workerinstall( 102*a6021da3SAndroid Build Coastguard Worker FILES ${headers} 103*a6021da3SAndroid Build Coastguard Worker DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/double-conversion" 104*a6021da3SAndroid Build Coastguard Worker) 105*a6021da3SAndroid Build Coastguard Worker 106*a6021da3SAndroid Build Coastguard Worker# Config 107*a6021da3SAndroid Build Coastguard Worker# * <prefix>/lib/cmake/double-conversion/double-conversionConfig.cmake 108*a6021da3SAndroid Build Coastguard Worker# * <prefix>/lib/cmake/double-conversion/double-conversionConfigVersion.cmake 109*a6021da3SAndroid Build Coastguard Workerinstall( 110*a6021da3SAndroid Build Coastguard Worker FILES "${project_config}" "${version_config}" 111*a6021da3SAndroid Build Coastguard Worker DESTINATION "${config_install_dir}" 112*a6021da3SAndroid Build Coastguard Worker) 113*a6021da3SAndroid Build Coastguard Worker 114*a6021da3SAndroid Build Coastguard Worker# Config 115*a6021da3SAndroid Build Coastguard Worker# * <prefix>/lib/cmake/double-conversion/double-conversionTargets.cmake 116*a6021da3SAndroid Build Coastguard Workerinstall( 117*a6021da3SAndroid Build Coastguard Worker EXPORT "${targets_export_name}" 118*a6021da3SAndroid Build Coastguard Worker NAMESPACE "${namespace}" 119*a6021da3SAndroid Build Coastguard Worker DESTINATION "${config_install_dir}" 120*a6021da3SAndroid Build Coastguard Worker) 121*a6021da3SAndroid Build Coastguard Worker 122*a6021da3SAndroid Build Coastguard Workerif (MSVC AND BUILD_SHARED_LIBS) 123*a6021da3SAndroid Build Coastguard Worker # Install companion PDB for Visual Studio 124*a6021da3SAndroid Build Coastguard Worker install( 125*a6021da3SAndroid Build Coastguard Worker FILES $<TARGET_PDB_FILE:double-conversion> 126*a6021da3SAndroid Build Coastguard Worker TYPE BIN 127*a6021da3SAndroid Build Coastguard Worker OPTIONAL 128*a6021da3SAndroid Build Coastguard Worker ) 129*a6021da3SAndroid Build Coastguard Workerendif() 130*a6021da3SAndroid Build Coastguard Worker 131