]>
Commit | Line | Data |
---|---|---|
1e59de90 TL |
1 | include(qt_fix_makefile_install) |
2 | ||
3 | function(install_qt) | |
4 | if(CMAKE_HOST_WIN32) | |
5 | if (VCPKG_QMAKE_USE_NMAKE) | |
6 | find_program(NMAKE nmake REQUIRED) | |
7 | set(INVOKE "${NMAKE}") | |
8 | set(INVOKE_SINGLE "${NMAKE}") | |
9 | get_filename_component(NMAKE_EXE_PATH ${NMAKE} DIRECTORY) | |
10 | set(PATH_GLOBAL "$ENV{PATH}") | |
11 | set(ENV{PATH} "$ENV{PATH};${NMAKE_EXE_PATH}") | |
12 | set(ENV{CL} "$ENV{CL} /MP${VCPKG_CONCURRENCY}") | |
13 | else() | |
14 | vcpkg_find_acquire_program(JOM) | |
15 | set(INVOKE "${JOM}" /J ${VCPKG_CONCURRENCY}) | |
16 | set(INVOKE_SINGLE "${JOM}" /J 1) | |
17 | endif() | |
18 | else() | |
19 | find_program(MAKE make) | |
20 | set(INVOKE "${MAKE}" -j${VCPKG_CONCURRENCY}) | |
21 | set(INVOKE_SINGLE "${MAKE}" -j1) | |
22 | endif() | |
23 | vcpkg_find_acquire_program(PYTHON3) | |
24 | get_filename_component(PYTHON3_EXE_PATH ${PYTHON3} DIRECTORY) | |
25 | vcpkg_add_to_path(PREPEND "${PYTHON3_EXE_PATH}") | |
26 | ||
27 | if (CMAKE_HOST_WIN32) | |
28 | # flex and bison for ANGLE library | |
29 | vcpkg_find_acquire_program(FLEX) | |
30 | get_filename_component(FLEX_EXE_PATH ${FLEX} DIRECTORY) | |
31 | get_filename_component(FLEX_DIR ${FLEX_EXE_PATH} NAME) | |
32 | ||
33 | file(COPY ${FLEX_EXE_PATH} DESTINATION "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-tools" ) | |
34 | set(FLEX_TEMP "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-tools/${FLEX_DIR}") | |
35 | file(RENAME "${FLEX_TEMP}/win_bison.exe" "${FLEX_TEMP}/bison.exe") | |
36 | file(RENAME "${FLEX_TEMP}/win_flex.exe" "${FLEX_TEMP}/flex.exe") | |
37 | vcpkg_add_to_path("${FLEX_TEMP}") | |
38 | endif() | |
39 | ||
40 | set(_path "$ENV{PATH}") | |
41 | ||
42 | #Replace with VCPKG variables if PR #7733 is merged | |
43 | unset(BUILDTYPES) | |
44 | if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug") | |
45 | set(_buildname "DEBUG") | |
46 | list(APPEND BUILDTYPES ${_buildname}) | |
47 | set(_short_name_${_buildname} "dbg") | |
48 | set(_path_suffix_${_buildname} "/debug") | |
49 | set(_build_type_${_buildname} "debug") | |
50 | endif() | |
51 | if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release") | |
52 | set(_buildname "RELEASE") | |
53 | list(APPEND BUILDTYPES ${_buildname}) | |
54 | set(_short_name_${_buildname} "rel") | |
55 | set(_path_suffix_${_buildname} "") | |
56 | set(_build_type_${_buildname} "release") | |
57 | endif() | |
58 | unset(_buildname) | |
59 | ||
60 | foreach(_buildname ${BUILDTYPES}) | |
61 | set(_build_triplet ${TARGET_TRIPLET}-${_short_name_${_buildname}}) | |
62 | ||
63 | set(_installed_prefix_ "${CURRENT_INSTALLED_DIR}${_path_suffix_${_buildname}}") | |
64 | set(_installed_libpath_ "${_installed_prefix_}/lib/${VCPKG_HOST_PATH_SEPARATOR}${_installed_prefix_}/lib/manual-link/") | |
65 | ||
66 | vcpkg_add_to_path(PREPEND "${_installed_prefix_}/bin") | |
67 | vcpkg_add_to_path(PREPEND "${_installed_prefix_}/lib") | |
68 | ||
69 | # We set LD_LIBRARY_PATH ENV variable to allow executing Qt tools (rcc,...) even with dynamic linking | |
70 | if(CMAKE_HOST_UNIX) | |
71 | if(DEFINED ENV{LD_LIBRARY_PATH}) | |
72 | set(_ld_library_path_defined_ TRUE) | |
73 | set(_ld_library_path_backup_ $ENV{LD_LIBRARY_PATH}) | |
74 | set(ENV{LD_LIBRARY_PATH} "${_installed_libpath_}${VCPKG_HOST_PATH_SEPARATOR}${_ld_library_path_backup_}") | |
75 | else() | |
76 | set(_ld_library_path_defined_ FALSE) | |
77 | set(ENV{LD_LIBRARY_PATH} "${_installed_libpath_}") | |
78 | endif() | |
79 | endif() | |
80 | ||
81 | if(VCPKG_TARGET_IS_OSX) | |
82 | # For some reason there will be an error on MacOSX without this clean! | |
83 | message(STATUS "Cleaning before build ${_build_triplet}") | |
84 | vcpkg_execute_required_process( | |
85 | COMMAND ${INVOKE_SINGLE} clean | |
86 | WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${_build_triplet} | |
87 | LOGNAME cleaning-1-${_build_triplet} | |
88 | ) | |
89 | endif() | |
90 | ||
91 | message(STATUS "Building ${_build_triplet}") | |
92 | vcpkg_execute_build_process( | |
93 | COMMAND ${INVOKE} | |
94 | NO_PARALLEL_COMMAND ${INVOKE_SINGLE} | |
95 | WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${_build_triplet} | |
96 | LOGNAME build-${_build_triplet} | |
97 | ) | |
98 | ||
99 | if(VCPKG_TARGET_IS_OSX) | |
100 | # For some reason there will be an error on MacOSX without this clean! | |
101 | message(STATUS "Cleaning after build before install ${_build_triplet}") | |
102 | vcpkg_execute_required_process( | |
103 | COMMAND ${INVOKE_SINGLE} clean | |
104 | WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${_build_triplet} | |
105 | LOGNAME cleaning-2-${_build_triplet} | |
106 | ) | |
107 | endif() | |
108 | ||
109 | message(STATUS "Fixing makefile installation path ${_build_triplet}") | |
110 | qt_fix_makefile_install("${CURRENT_BUILDTREES_DIR}/${_build_triplet}") | |
111 | message(STATUS "Installing ${_build_triplet}") | |
112 | vcpkg_execute_required_process( | |
113 | COMMAND ${INVOKE} install | |
114 | WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${_build_triplet} | |
115 | LOGNAME package-${_build_triplet} | |
116 | ) | |
117 | message(STATUS "Package ${_build_triplet} done") | |
118 | set(ENV{PATH} "${_path}") | |
119 | ||
120 | # Restore backup | |
121 | if(CMAKE_HOST_UNIX) | |
122 | if(_ld_library_path_defined_) | |
123 | set(ENV{LD_LIBRARY_PATH} "${_ld_library_path_backup_}") | |
124 | else() | |
125 | unset(ENV{LD_LIBRARY_PATH}) | |
126 | endif() | |
127 | endif() | |
128 | endforeach() | |
129 | endfunction() |