summaryrefslogtreecommitdiffstats
path: root/cmake/modules/FindCrossGUID.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/modules/FindCrossGUID.cmake')
-rw-r--r--cmake/modules/FindCrossGUID.cmake78
1 files changed, 78 insertions, 0 deletions
diff --git a/cmake/modules/FindCrossGUID.cmake b/cmake/modules/FindCrossGUID.cmake
new file mode 100644
index 0000000..7384747
--- /dev/null
+++ b/cmake/modules/FindCrossGUID.cmake
@@ -0,0 +1,78 @@
1if(ENABLE_INTERNAL_CROSSGUID)
2 include(ExternalProject)
3 file(STRINGS ${CMAKE_SOURCE_DIR}/tools/depends/target/crossguid/Makefile VER)
4 string(REGEX MATCH "VERSION=[^ ]*" CGUID_VER "${VER}")
5 list(GET CGUID_VER 0 CGUID_VER)
6 string(SUBSTRING "${CGUID_VER}" 8 -1 CGUID_VER)
7
8 # allow user to override the download URL with a local tarball
9 # needed for offline build envs
10 if(CROSSGUID_URL)
11 get_filename_component(CROSSGUID_URL "${CROSSGUID_URL}" ABSOLUTE)
12 else()
13 set(CROSSGUID_URL http://mirrors.kodi.tv/build-deps/sources/crossguid-${CGUID_VER}.tar.gz)
14 endif()
15 if(VERBOSE)
16 message(STATUS "CROSSGUID_URL: ${CROSSGUID_URL}")
17 endif()
18
19 if(APPLE)
20 set(EXTRA_ARGS "-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}")
21 endif()
22
23 set(CROSSGUID_LIBRARY ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/lib/libcrossguid.a)
24 set(CROSSGUID_INCLUDE_DIR ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/include)
25 externalproject_add(crossguid
26 URL ${CROSSGUID_URL}
27 DOWNLOAD_DIR ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/download
28 PREFIX ${CORE_BUILD_DIR}/crossguid
29 CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}
30 -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
31 "${EXTRA_ARGS}"
32 PATCH_COMMAND ${CMAKE_COMMAND} -E copy
33 ${CMAKE_SOURCE_DIR}/tools/depends/target/crossguid/CMakeLists.txt
34 <SOURCE_DIR> &&
35 ${CMAKE_COMMAND} -E copy
36 ${CMAKE_SOURCE_DIR}/tools/depends/target/crossguid/FindUUID.cmake
37 <SOURCE_DIR> &&
38 ${CMAKE_COMMAND} -E copy
39 ${CMAKE_SOURCE_DIR}/tools/depends/target/crossguid/FindCXX11.cmake
40 <SOURCE_DIR>
41 BUILD_BYPRODUCTS ${CROSSGUID_LIBRARY})
42 set_target_properties(crossguid PROPERTIES FOLDER "External Projects")
43
44 include(FindPackageHandleStandardArgs)
45 find_package_handle_standard_args(CrossGUID
46 REQUIRED_VARS CROSSGUID_LIBRARY CROSSGUID_INCLUDE_DIR
47 VERSION_VAR CGUID_VER)
48
49 set(CROSSGUID_LIBRARIES ${CROSSGUID_LIBRARY})
50 set(CROSSGUID_INCLUDE_DIRS ${CROSSGUID_INCLUDE_DIR})
51else()
52 find_path(CROSSGUID_INCLUDE_DIR NAMES guid.h)
53
54 find_library(CROSSGUID_LIBRARY_RELEASE NAMES crossguid)
55 find_library(CROSSGUID_LIBRARY_DEBUG NAMES crossguidd)
56
57 include(SelectLibraryConfigurations)
58 select_library_configurations(CROSSGUID)
59
60 include(FindPackageHandleStandardArgs)
61 find_package_handle_standard_args(CrossGUID
62 REQUIRED_VARS CROSSGUID_LIBRARY CROSSGUID_INCLUDE_DIR)
63
64 if(CROSSGUID_FOUND)
65 set(CROSSGUID_LIBRARIES ${CROSSGUID_LIBRARY})
66 set(CROSSGUID_INCLUDE_DIRS ${CROSSGUID_INCLUDE_DIR})
67
68 add_custom_target(crossguid)
69 set_target_properties(crossguid PROPERTIES FOLDER "External Projects")
70 endif()
71 mark_as_advanced(CROSSGUID_INCLUDE_DIR CROSSGUID_LIBRARY)
72endif()
73
74if(NOT WIN32 AND NOT APPLE)
75 find_package(UUID REQUIRED)
76 list(APPEND CROSSGUID_INCLUDE_DIRS ${UUID_INCLUDE_DIRS})
77 list(APPEND CROSSGUID_LIBRARIES ${UUID_LIBRARIES})
78endif()