Merge pull request #26350 from jjd-uk/estuary_media_align
[xbmc.git] / cmake / modules / buildtools / FindJsonSchemaBuilder.cmake
blob1b9f2b031dc56110ee74a672a58d3e33f27a283f
1 #.rst:
2 # FindJsonSchemaBuilder
3 # ---------------------
4 # Finds the JsonSchemaBuilder
6 # If WITH_JSONSCHEMABUILDER is defined and points to a directory,
7 # this path will be used to search for the JsonSchemaBuilder binary
10 # This will define the following (imported) targets::
12 #   JsonSchemaBuilder::JsonSchemaBuilder   - The JsonSchemaBuilder executable
14 if(NOT TARGET JsonSchemaBuilder::JsonSchemaBuilder)
16   include(cmake/scripts/common/ModuleHelpers.cmake)
18   if(WITH_JSONSCHEMABUILDER)
19     get_filename_component(_jsbpath ${WITH_JSONSCHEMABUILDER} ABSOLUTE)
20     get_filename_component(_jsbpath ${_jsbpath} DIRECTORY)
21     find_program(JSONSCHEMABUILDER_EXECUTABLE NAMES "${APP_NAME_LC}-JsonSchemaBuilder" JsonSchemaBuilder
22                                                     "${APP_NAME_LC}-JsonSchemaBuilder.exe" JsonSchemaBuilder.exe
23                                               HINTS ${_jsbpath})
25     if(NOT JSONSCHEMABUILDER_EXECUTABLE)
26       message(FATAL_ERROR "Could not find 'JsonSchemaBuilder' executable in ${_jsbpath} supplied by -DWITH_JSONSCHEMABUILDER")
27     endif()
28   else()
30     set(MODULE_LC JsonSchemaBuilder)
31     set(${MODULE_LC}_LIB_TYPE native)
32     set(JSONSCHEMABUILDER_DISABLE_VERSION ON)
33     SETUP_BUILD_VARS()
35     # Override build type detection and always build as release
36     set(JSONSCHEMABUILDER_BUILD_TYPE Release)
38     set(CMAKE_ARGS -DDUMMY_ARG=1)
40     if(NATIVEPREFIX)
41       set(INSTALL_DIR "${NATIVEPREFIX}/bin")
42       set(JSONSCHEMABUILDER_INSTALL_PREFIX ${NATIVEPREFIX})
43     else()
44       set(INSTALL_DIR "${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/bin")
45       set(JSONSCHEMABUILDER_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR})
46     endif()
48     # Set host build info for buildtool
49     if(EXISTS "${NATIVEPREFIX}/share/Toolchain-Native.cmake")
50       set(JSONSCHEMABUILDER_TOOLCHAIN_FILE "${NATIVEPREFIX}/share/Toolchain-Native.cmake")
51     endif()
53     if(WIN32 OR WINDOWS_STORE)
54       # Make sure we generate for host arch, not target
55       set(JSONSCHEMABUILDER_GENERATOR_PLATFORM CMAKE_GENERATOR_PLATFORM ${HOSTTOOLSET})
56       set(APP_EXTENSION ".exe")
57     endif()
59     set(JSONSCHEMABUILDER_SOURCE_DIR ${CMAKE_SOURCE_DIR}/tools/depends/native/JsonSchemaBuilder/src)
60     set(JSONSCHEMABUILDER_EXECUTABLE ${INSTALL_DIR}/JsonSchemaBuilder${APP_EXTENSION})
62     set(BUILD_BYPRODUCTS ${JSONSCHEMABUILDER_EXECUTABLE})
64     BUILD_DEP_TARGET()
66   endif()
68   include(FindPackageHandleStandardArgs)
69   find_package_handle_standard_args(JsonSchemaBuilder
70                                     REQUIRED_VARS JSONSCHEMABUILDER_EXECUTABLE)
72   if(JSONSCHEMABUILDER_FOUND)
73     add_executable(JsonSchemaBuilder::JsonSchemaBuilder IMPORTED GLOBAL)
74     set_target_properties(JsonSchemaBuilder::JsonSchemaBuilder PROPERTIES
75                                                                IMPORTED_LOCATION "${JSONSCHEMABUILDER_EXECUTABLE}")
77     if(TARGET JsonSchemaBuilder)
78       add_dependencies(JsonSchemaBuilder::JsonSchemaBuilder JsonSchemaBuilder)
79     endif()
80   else()
81     if(JSONSCHEMABUILDER_FIND_REQUIRED)
82       message(FATAL_ERROR "JsonSchemaBuilder not found.")
83     endif()
84   endif()
86   mark_as_advanced(JSONSCHEMABUILDER_EXECUTABLE)
87 endif()