]> git.proxmox.com Git - ceph.git/blame - ceph/src/jaegertracing/opentelemetry-cpp/tools/vcpkg/scripts/cmake/vcpkg_build_qmake.cmake
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / jaegertracing / opentelemetry-cpp / tools / vcpkg / scripts / cmake / vcpkg_build_qmake.cmake
CommitLineData
1e59de90
TL
1#[===[.md:
2# vcpkg_build_qmake
3
4Build a qmake-based project, previously configured using vcpkg_configure_qmake.
5
6```cmake
7vcpkg_build_qmake()
8```
9#]===]
10
11function(vcpkg_build_qmake)
12 # parse parameters such that semicolons in options arguments to COMMAND don't get erased
13 cmake_parse_arguments(PARSE_ARGV 0 _csc "SKIP_MAKEFILES" "BUILD_LOGNAME" "TARGETS;RELEASE_TARGETS;DEBUG_TARGETS")
14
15 if(CMAKE_HOST_WIN32)
16 if (VCPKG_QMAKE_USE_NMAKE)
17 find_program(NMAKE nmake)
18 set(INVOKE "${NMAKE}")
19 get_filename_component(NMAKE_EXE_PATH ${NMAKE} DIRECTORY)
20 set(PATH_GLOBAL "$ENV{PATH}")
21 set(ENV{PATH} "$ENV{PATH};${NMAKE_EXE_PATH}")
22 set(ENV{CL} "$ENV{CL} /MP${VCPKG_CONCURRENCY}")
23 else()
24 vcpkg_find_acquire_program(JOM)
25 set(INVOKE "${JOM}")
26 endif()
27 else()
28 find_program(MAKE make)
29 set(INVOKE "${MAKE}")
30 endif()
31
32 # Make sure that the linker finds the libraries used
33 set(ENV_PATH_BACKUP "$ENV{PATH}")
34
35 file(TO_NATIVE_PATH "${CURRENT_INSTALLED_DIR}" NATIVE_INSTALLED_DIR)
36
37 if(NOT _csc_BUILD_LOGNAME)
38 set(_csc_BUILD_LOGNAME build)
39 endif()
40
41 function(run_jom TARGETS LOG_PREFIX LOG_SUFFIX)
42 message(STATUS "Package ${LOG_PREFIX}-${TARGET_TRIPLET}-${LOG_SUFFIX}")
43 vcpkg_execute_build_process(
44 COMMAND ${INVOKE} -j ${VCPKG_CONCURRENCY} ${TARGETS}
45 NO_PARALLEL_COMMAND ${INVOKE} -j 1 ${TARGETS}
46 WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-${LOG_SUFFIX}
47 LOGNAME package-${LOG_PREFIX}-${TARGET_TRIPLET}-${LOG_SUFFIX}
48 )
49 endfunction()
50
51 # This fixes issues on machines with default codepages that are not ASCII compatible, such as some CJK encodings
52 set(ENV_CL_BACKUP "$ENV{_CL_}")
53 set(ENV{_CL_} "/utf-8")
54
55 #Replace with VCPKG variables if PR #7733 is merged
56 unset(BUILDTYPES)
57 if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
58 set(_buildname "DEBUG")
59 list(APPEND BUILDTYPES ${_buildname})
60 set(_short_name_${_buildname} "dbg")
61 set(_path_suffix_${_buildname} "/debug")
62 endif()
63 if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")
64 set(_buildname "RELEASE")
65 list(APPEND BUILDTYPES ${_buildname})
66 set(_short_name_${_buildname} "rel")
67 set(_path_suffix_${_buildname} "")
68 endif()
69 unset(_buildname)
70
71 foreach(_buildname ${BUILDTYPES})
72 set(_installed_prefix_ "${CURRENT_INSTALLED_DIR}${_path_suffix_${_buildname}}")
73 set(_installed_libpath_ "${_installed_prefix_}/lib/${VCPKG_HOST_PATH_SEPARATOR}${_installed_prefix_}/lib/manual-link/")
74
75 vcpkg_add_to_path(PREPEND "${_installed_prefix_}/bin")
76 vcpkg_add_to_path(PREPEND "${_installed_prefix_}/lib")
77
78 # We set LD_LIBRARY_PATH ENV variable to allow executing Qt tools (rcc,...) even with dynamic linking
79 if(CMAKE_HOST_UNIX)
80 if(DEFINED ENV{LD_LIBRARY_PATH})
81 set(_ld_library_path_defined_ TRUE)
82 set(_ld_library_path_backup_ $ENV{LD_LIBRARY_PATH})
83 set(ENV{LD_LIBRARY_PATH} "${_installed_libpath_}${VCPKG_HOST_PATH_SEPARATOR}${_ld_library_path_backup_}")
84 else()
85 set(_ld_library_path_defined_ FALSE)
86 set(ENV{LD_LIBRARY_PATH} "${_installed_libpath_}")
87 endif()
88 endif()
89
90 list(APPEND _csc_${_buildname}_TARGETS ${_csc_TARGETS})
91 if(NOT _csc_SKIP_MAKEFILES)
92 run_jom(qmake_all makefiles ${_short_name_${_buildname}})
93 endif()
94 run_jom("${_csc_${_buildname}_TARGETS}" ${_csc_BUILD_LOGNAME} ${_short_name_${_buildname}})
95
96 # Restore backup
97 if(CMAKE_HOST_UNIX)
98 if(_ld_library_path_defined_)
99 set(ENV{LD_LIBRARY_PATH} "${_ld_library_path_backup_}")
100 else()
101 unset(ENV{LD_LIBRARY_PATH})
102 endif()
103 endif()
104 endforeach()
105
106 # Restore the original value of ENV{PATH}
107 set(ENV{PATH} "${ENV_PATH_BACKUP}")
108 set(ENV{_CL_} "${ENV_CL_BACKUP}")
109endfunction()