Russian Qt Forum
Март 28, 2024, 12:53 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 2 [3]   Вниз
  Печать  
Автор Тема: [QBS] baremetal: Хочу поддержку IAR, KEIL, SDCC тулчейна  (Прочитано 29219 раз)
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3257


Просмотр профиля
« Ответ #30 : Ноябрь 13, 2019, 15:16 »

Я заметил, что qbs setup-toolchains --detect стал тормозить на венде (28 секунд). kuzulis, не замечал? Может это связано с изменениями с баре метал?
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #31 : Ноябрь 13, 2019, 21:22 »

Не, 6-7 секунд (Qbs 1.14.1)
Записан

ArchLinux x86_64 / Win10 64 bit
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3257


Просмотр профиля
« Ответ #32 : Ноябрь 13, 2019, 23:51 »

Ну 6 секунд тоже дофига, нет?=)
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #33 : Ноябрь 14, 2019, 16:39 »

ХЗ, но там же дохрена надо по реестру шляться и пр. Я в тебя верю, ты сможешь это победить! Подмигивающий
Записан

ArchLinux x86_64 / Win10 64 bit
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3257


Просмотр профиля
« Ответ #34 : Ноябрь 14, 2019, 18:19 »

Я профильнул, тормозит спавн процессов на моей машине как то: вызов vswhere, вызов cl.exe (чтобы получить его версию). Можно немножко ускорить путем кеширования инфы при вызове clang-cl probe (так как мы уже делали примерно те же вызовы когда сетапили msvc), но большого выигрыша это не даст. Хотя процентов 10 тоже бонус=).
Еще тормозят регэкспы в gccProbe (ноги растут из buildCompilerNameFilters) - это еще процентов 10.
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #35 : Ноябрь 14, 2019, 19:31 »

Цитировать
buildCompilerNameFilters

Этот код я копипастил из QtC.

Цитировать
регэкспы в gccProbe

Согласен, по-хорошему там все надо переделывать, да в автотесты добавить, но уж не оч хочется копаться там.

ЗЫ: Я сейчас занят оч. (пытаюсь пришпандорить к QtC кейловский отладчик из uVision4, чтобы не только GDB && CDB были). Улыбающийся


UPD: У меня вот такой результат на винде (через Power Shell):

QBS 1.14.1 (релиз, из установлнного QtC)
Цитировать
PS C:\Qt-meta\Tools\QtCreator\bin> Measure-Command {.\qbs-setup-toolchains.exe --detect}


Days              : 0
Hours             : 0
Minutes           : 0
Seconds           : 4
Milliseconds      : 579
Ticks             : 45792279
TotalDays         : 5,30003229166667E-05
TotalHours        : 0,00127200775
TotalMinutes      : 0,076320465
TotalSeconds      : 4,5792279
TotalMilliseconds : 4579,2279

QBS 1.16.0 (отладка, из мастер ветки)
Цитировать
PS E:\git\ng\git\123\qbs-git\build-qbs-Desktop_Qt_5_13_1_MSVC2017_32bit-Debug\bin> Measure-Command {.\qbs-setup-toolchains.exe --detect}


Days              : 0
Hours             : 0
Minutes           : 0
Seconds           : 4
Milliseconds      : 963
Ticks             : 49639633
TotalDays         : 5,74532789351852E-05
TotalHours        : 0,00137887869444444
TotalMinutes      : 0,0827327216666667
TotalSeconds      : 4,9639633
TotalMilliseconds : 4963,9633

Больше всего времени тратится на MSVC пробу (я закомментировал все пробы кроме нее):

Цитировать
PS E:\git\ng\git\123\qbs-git\build-qbs-Desktop_Qt_5_13_1_MSVC2017_32bit-Debug\bin> Measure-Command {.\qbs-setup-toolchains.exe --detect}


Days              : 0
Hours             : 0
Minutes           : 0
Seconds           : 4
Milliseconds      : 323
Ticks             : 43230334
TotalDays         : 5,00351087962963E-05
TotalHours        : 0,00120084261111111
TotalMinutes      : 0,0720505566666667
TotalSeconds      : 4,3230334
TotalMilliseconds : 4323,0334

Если оставить только Clang-CL, то:

Цитировать
PS E:\git\ng\git\123\qbs-git\build-qbs-Desktop_Qt_5_13_1_MSVC2017_32bit-Debug\bin> Measure-Command {.\qbs-setup-toolchains.exe --detect}
Could not detect any toolchains. No profile created.


Days              : 0
Hours             : 0
Minutes           : 0
Seconds           : 0
Milliseconds      : 31
Ticks             : 310493
TotalDays         : 3,59366898148148E-07
TotalHours        : 8,62480555555556E-06
TotalMinutes      : 0,000517488333333333
TotalSeconds      : 0,0310493
TotalMilliseconds : 31,0493

Если только GCC:

Цитировать
PS E:\git\ng\git\123\qbs-git\build-qbs-Desktop_Qt_5_13_1_MSVC2017_32bit-Debug\bin> Measure-Command {.\qbs-setup-toolchains.exe --detect}


Days              : 0
Hours             : 0
Minutes           : 0
Seconds           : 0
Milliseconds      : 356
Ticks             : 3562163
TotalDays         : 4,12287384259259E-06
TotalHours        : 9,89489722222222E-05
TotalMinutes      : 0,00593693833333333
TotalSeconds      : 0,3562163
TotalMilliseconds : 356,2163

Если только Clang:

Цитировать
PS E:\git\ng\git\123\qbs-git\build-qbs-Desktop_Qt_5_13_1_MSVC2017_32bit-Debug\bin> Measure-Command {.\qbs-setup-toolchains.exe --detect}
Could not detect any toolchains. No profile created.


Days              : 0
Hours             : 0
Minutes           : 0
Seconds           : 0
Milliseconds      : 303
Ticks             : 3038970
TotalDays         : 3,51732638888889E-06
TotalHours        : 8,44158333333333E-05
TotalMinutes      : 0,00506495
TotalSeconds      : 0,303897
TotalMilliseconds : 303,897

Если только IAR EW:

Цитировать
PS E:\git\ng\git\123\qbs-git\build-qbs-Desktop_Qt_5_13_1_MSVC2017_32bit-Debug\bin> Measure-Command {.\qbs-setup-toolchains.exe --detect}


Days              : 0
Hours             : 0
Minutes           : 0
Seconds           : 0
Milliseconds      : 47
Ticks             : 475093
TotalDays         : 5,49876157407407E-07
TotalHours        : 1,31970277777778E-05
TotalMinutes      : 0,000791821666666667
TotalSeconds      : 0,0475093
TotalMilliseconds : 47,5093

Если только KEIL:

Цитировать
PS E:\git\ng\git\123\qbs-git\build-qbs-Desktop_Qt_5_13_1_MSVC2017_32bit-Debug\bin> Measure-Command {.\qbs-setup-toolchains.exe --detect}


Days              : 0
Hours             : 0
Minutes           : 0
Seconds           : 0
Milliseconds      : 41
Ticks             : 413757
TotalDays         : 4,78885416666667E-07
TotalHours        : 1,149325E-05
TotalMinutes      : 0,000689595
TotalSeconds      : 0,0413757
TotalMilliseconds : 41,3757

Если только SDCC:

Цитировать
PS E:\git\ng\git\123\qbs-git\build-qbs-Desktop_Qt_5_13_1_MSVC2017_32bit-Debug\bin> Measure-Command {.\qbs-setup-toolchains.exe --detect}
Could not detect any toolchains. No profile created.


Days              : 0
Hours             : 0
Minutes           : 0
Seconds           : 0
Milliseconds      : 114
Ticks             : 1147311
TotalDays         : 1,32790625E-06
TotalHours        : 3,186975E-05
TotalMinutes      : 0,001912185
TotalSeconds      : 0,1147311
TotalMilliseconds : 114,7311

Возможно, что там еще разница по времени зависит от кол-ва обнаруженых тулчейнов:

Цитировать
PS E:\git\ng\git\123\qbs-git\build-qbs-Desktop_Qt_5_13_1_MSVC2017_32bit-Debug\bin> .\qbs-setup-toolchains.exe --detect
Detecting MSVC toolchains...
  MSVC 2017 (x64) detected in
    C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\Hostx64\x64
  MSVC 2017 (x64_x86) detected in
    C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\Hostx64\x86
  MSVC 2017 (x86_x64) detected in
    C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\Hostx86\x64
  MSVC 2017 (x86) detected in
    C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\Hostx86\x86
Detecting build environment...
Setting up profile 'MSVC2017-x64'.
Setting up profile 'MSVC2017-x64_x86'.
Setting up profile 'MSVC2017-x86_x64'.
Setting up profile 'MSVC2017-x86'.
Trying to detect clang-cl...
clang-cl was not found.
Trying to detect gcc...
Profile 'rl78-elf-gcc-4_9_2_201902-GNURL78' created for 'C:/GCC/GCC for Renesas RL78 4.9.2.201902-GNURL78-ELF/rl78-elf/rl78-elf/bin/rl78-elf-gcc-4.9.2.201902-GNURL78.exe'.
Profile 'xc32-gcc' created for 'C:/microchip/xc32/v2.20/bin/xc32-gcc.exe'.
Trying to detect clang...
No clang toolchains found.
Trying to detect IAR toolchains...
Profile 'iar-10_10_1-mcs51' created for 'C:/Program Files (x86)/IAR Systems/Embedded Workbench 8.0/8051/bin/icc8051.exe'.
Trying to detect KEIL toolchains...
Profile 'keil-9_53_0-mcs51' created for 'C:/Keil_v5/C51/BIN/c51.exe'.
Trying to detect SDCC toolchains...
Profile 'sdcc-3_9_0-mcs51' created for 'C:/Program Files/SDCC/bin/sdcc.exe'.
Profile 'sdcc-3_9_0-stm8' created for 'C:/Program Files/SDCC/bin/sdcc.exe'.
PS E:\git\ng\git\123\qbs-git\build-qbs-Desktop_Qt_5_13_1_MSVC2017_32bit-Debug\bin>

Например, для SDCC, возможно надо время делить на два. Для GCC наверно тоже. Хотя не уверен, надо проверять - да лень.
« Последнее редактирование: Ноябрь 18, 2019, 10:29 от kuzulis » Записан

ArchLinux x86_64 / Win10 64 bit
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3257


Просмотр профиля
« Ответ #36 : Ноябрь 17, 2019, 17:28 »

ага, интересно, похоже это мой лэптоп тормозит из-за секурити говна установленного
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3257


Просмотр профиля
« Ответ #37 : Декабрь 04, 2019, 19:44 »

ага, интересно, похоже это мой лэптоп тормозит из-за секурити говна установленного

Как оказалось нет, на макбуке такие же тормоза Злой

Вопрос, а вот тут на значения энумов что-то завязано? Я думаю заменить значения на флаги, а std::set<Architecture> на QFlags<Architecture>. 32 архитектуры хватит всем (с)
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #38 : Декабрь 04, 2019, 20:46 »

Цитировать
Вопрос, а вот тут на значения энумов что-то завязано?

Вроде нет, поэтому они и сделаны енум классом.

Цитировать
32 архитектуры хватит всем

в принципе, наверно да, хватит


Записан

ArchLinux x86_64 / Win10 64 bit
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3257


Просмотр профиля
« Ответ #39 : Декабрь 22, 2019, 21:04 »

Короче я запилил что хотел, но, кажется, частично зря.
Я чем больше смотрю на этот код, тем меньше понимаю

Код:
int IarewVersionInfo::marketingVersion() const
{
    const auto mv = gen::VersionInfo::marketingVersion();
    for (const IarewVersionInfo &known : knownVersions()) {
        if (known.version().majorVersion() == mv)
            return mv;
    }
    qWarning() << QStringLiteral("Unrecognized IAR EW version: ")
               << version().toString();
    return 0;
}

Вот тут мы вызываем VersionInfo::marketingVersion() которая тупо мажорная версия.

А вот тут мы перебиравшем все известные версии и создаем генератор.

Код:
static void QbsIarewGeneratorPluginLoad()
{
    for (const auto &info : qbs::IarewVersionInfo::knownVersions()) {
        qbs::ProjectGeneratorManager::registerGenerator(
                    std::make_shared<qbs::IarewGenerator>(info));
    }
}

Внимание вопрос, как мы можем попасть в ветку "Unrecognized IAR EW version:" и если ответ никак то нафейхоа метод О(1) превращать в О(N).
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #40 : Декабрь 22, 2019, 22:02 »

Цитировать
Короче я запилил что хотел, но, кажется, частично зря.

Где и что запилил?

Цитировать
Внимание вопрос, как мы можем попасть в ветку "Unrecognized IAR EW version:"

Наверно, когда пользователь введет что-то типа:

Цитировать
qbs --generate -g iarew100500

ЗЫ:

Я там попытался скопипастить реализацию из MSVC генератора, но что-то там сходу не срослось и решил оставить как есть..
Я сам до сих пор еще не понимаю как бы там получше сделать. Т.е. может быть, что маркетинговой версии будет мало (т.е. мажорной) в имени генератора,
и возможно нужно еще будет использовать и минорную, типа:

Цитировать
qbs --generate -g iarew8.1

или как то так (возможно, что есть разница в структуре файлов проекта минорных IAR EW).

В общем, я не я и хата не моя. Улыбающийся
« Последнее редактирование: Декабрь 22, 2019, 22:04 от kuzulis » Записан

ArchLinux x86_64 / Win10 64 bit
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3257


Просмотр профиля
« Ответ #41 : Декабрь 22, 2019, 22:22 »


Где и что запилил?


Вот тут пока https://github.com/ABBAPOH/qbs/tree/constexpr

Но я не уверен, что хочу щаз добавлять gsl::span может можно проще сделать=)
Записан
Страниц: 1 2 [3]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.055 секунд. Запросов: 22.