cmake-rust: merge two RustStaticLibrary.cmake and add feature support
[hiphop-php.git] / third-party / double-conversion / CMakeLists.txt
blob5f8f853363b3071c73cd6410ccec38cfabe053bd
1 include(ExternalProject)
2 include(HPHPFunctions)
4 SET_HHVM_THIRD_PARTY_SOURCE_ARGS(
5   DOUBLE_CONVERSION_DOWNLOAD_ARGS
6   SOURCE_URL "https://github.com/google/double-conversion/archive/refs/tags/v3.0.1.tar.gz"
7   SOURCE_HASH "SHA256=d400c86417df2980b60dc27ad68249dd124964738916d20cdc9c90b42de86490"
8   # The tarball name is just the tag name, which can conflict in the cache
9   FILENAME_PREFIX "double-conversion-"
12 ExternalProject_Add(
13   bundled_double-conversion
14   ${DOUBLE_CONVERSION_DOWNLOAD_ARGS}
15   CMAKE_ARGS
16     -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
17     -DCMAKE_INSTALL_LIBDIR=lib
18     -DCMAKE_INSTALL_INCLUDEDIR=include
19     -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
20     -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
21     -DCMAKE_OSX_SYSROOT=${CMAKE_OSX_SYSROOT}
22   EXCLUDE_FROM_ALL
25 option(FORCE_BUNDLED_DOUBLE_CONVERSION "Always use bundled double-conversion" OFF)
26 if(FORCE_BUNDLED_DOUBLE_CONVERSION)
27   set(DOUBLE_CONVERSION_FOUND FALSE)
28 else()
29   find_package(DoubleConversion)
30 endif()
32 add_library(double-conversion INTERFACE)
33 if(DOUBLE_CONVERSION_FOUND)
34   set_target_properties(
35     double-conversion
36     PROPERTIES
37     INTERFACE_INCLUDE_DIRECTORIES "${DOUBLE_CONVERSION_INCLUDE_DIR}"
38   )
39   target_link_libraries(double-conversion INTERFACE "${DOUBLE_CONVERSION_LIBRARY}")
40 else()
41   add_dependencies(double-conversion bundled_double-conversion)
42   ExternalProject_Get_Property(bundled_double-conversion INSTALL_DIR)
43   set_target_properties(
44     double-conversion
45     PROPERTIES
46     INTERFACE_INCLUDE_DIRECTORIES "${INSTALL_DIR}/include"
47   )
48   target_link_libraries(
49     double-conversion
50     INTERFACE
51     "${INSTALL_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}double-conversion${CMAKE_STATIC_LIBRARY_SUFFIX}"
52   )
53 endif()