Поддержка Windows RT

Хотите предложить идею нового плагина или знаете, что улучшить в существующем? Пишите сюда.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Поддержка Windows RT

Post by DrKnS »

Latest post of the previous page:

usa wrote: Mon 01 Nov, 2021 20:59 Не могли бы вы и плагины скомпилировать? А то без них грустно.
Все, кроме luamacro. С luamacro проблема вроде бы только в отстутствии lua библиотек правильной битности - я понятия не имею, где их брать. Может быть @Shmuel подскажет.
usa wrote: Mon 01 Nov, 2021 20:59 как это сделать, имея VS2019?
Добавить ARM64 build tools и применить это:
arm.diff
(61.81 KiB) Downloaded 188 times
7z.dll для arclite можно взять на https://7-zip.org.
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Поддержка Windows RT

Post by Shmuel »

DrKnS wrote: Mon 01 Nov, 2021 22:55 С luamacro проблема вроде бы только в отстутствии lua библиотек правильной битности - я понятия не имею, где их брать.
LuaJIT, LPeg.
LuaJIT собирать только с использованием его мэйк- и/или батч-файлов (ARM поддерживается). Иначе сюрпризы практически гарантированы.
usa
Posts: 16
Joined: Mon 01 Nov, 2021 20:51
Has thanked: 1 time

Поддержка Windows RT

Post by usa »

Shmuel wrote: Mon 01 Nov, 2021 23:16 я понятия не имею, где их брать
Может быть, так?

Cкачиваем и распаковываем h!ttps://w!ww.lua.o!rg/ftp/lua-5.1.5.tar.gz
Запускаем "Developer Command Prompt for VS 2019"
  1. VC\Auxiliary\Build\vcvarsamd64_arm64.bat
Заходим в каталог "lua-5.1.5\src"
  1. cl /MD /O2 /c /DLUA_BUILD_AS_DLL *.c
  2.  
  3. ren lua.obj lua.o
  4.  
  5. ren luac.obj luac.o
  6.  
  7. link /DLL /IMPLIB:lua51.lib /OUT:lua51.dll *.obj
usa
Posts: 16
Joined: Mon 01 Nov, 2021 20:51
Has thanked: 1 time

Поддержка Windows RT

Post by usa »

Почему файлы LUA ищутся не в подкаталоге ARM64?

Code: Select all

Error	MSB3030	Could not copy the file "C:\Source\FarGroup-FarManager-597a299\plugins\luamacro\luasdk\lua51.dll" because it was not found.	luafar3	C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets	2580
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Поддержка Windows RT

Post by Shmuel »

usa wrote: Tue 02 Nov, 2021 10:40
Shmuel wrote: Mon 01 Nov, 2021 23:16 я понятия не имею, где их брать
Shmuel этого не писал.
usa wrote: Tue 02 Nov, 2021 10:40 Cкачиваем и распаковываем h!ttps://w!ww.lua.o!rg/ftp/lua-5.1.5.tar.gz
Да, можно использовать стандартный Lua 5.1 вместо LuaJIT, но уже не будет FFI и упадёт быстродействие (хотя и останется приемлемым).
usa
Posts: 16
Joined: Mon 01 Nov, 2021 20:51
Has thanked: 1 time

Поддержка Windows RT

Post by usa »

Shmuel этого не писал.
Извините, был напуган.
Да, можно использовать стандартный Lua 5.1
Получается 1 DLL, а Far хочет lua51.dll и lua5.1.dll
вместо LuaJIT
Не помпилируется стандартным BAT-ником:
---------------------------

cmd.exe - Machine Type Mismatch

The image file c:\Source\LuaJIT-2.1\src\minilua.exe is valid, but is for a machine type other than the current machine.

OK
---------------------------
Наверное, надо компилировать ARM64 на ARM64.

Не могли бы вы скомпилировать все нужные файлы?

P. S. Почему бы не добавить всё это в master?
usa
Posts: 16
Joined: Mon 01 Nov, 2021 20:51
Has thanked: 1 time

Поддержка Windows RT

Post by usa »

DrKnS wrote: Mon 01 Nov, 2021 22:55 Добавить ARM64 build tools и применить это
Спасибо!
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Поддержка Windows RT

Post by Shmuel »

usa wrote: Tue 02 Nov, 2021 12:06 Получается 1 DLL, а Far хочет lua51.dll и lua5.1.dll
Фару нужно только lua51.dll, а вторая DLL для особых случаев (думаю, что её можно убрать из дистрибутива Фара).
usa wrote: Tue 02 Nov, 2021 12:06 Не могли бы вы скомпилировать все нужные файлы?
Гляну, как освобожусь, результат не гарантирую.
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Поддержка Windows RT

Post by Shmuel »

Почитал документацию LuaJIT. Там есть "матрица совместимости", из неё следует, что комбинация ARM + Windows официально не поддерживается.
(Неофициально - может работать, например я собираю x64 с MinGW, а этой комбинации в матрице тоже нет).
Clipboard01.png
Видимо вам придётся ограничиться стандартным Lua 5.1.
usa
Posts: 16
Joined: Mon 01 Nov, 2021 20:51
Has thanked: 1 time

Поддержка Windows RT

Post by usa »

@Shmuel,

Выкидываю lua5.1.dll из plugins\luamacro\luafar3.vcxproj, как вы сказали.
Теперь не хватает упомянутого там же lpeg.dll.
Last edited by usa on Wed 03 Nov, 2021 14:52, edited 1 time in total.
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Поддержка Windows RT

Post by Shmuel »

usa wrote: Wed 03 Nov, 2021 14:52 Теперь не хватает упомянутого там же lpeg.dll.
Выше я приводил ссылку, откуда качать исходники LPeg. Скачайте и соберите.
usa
Posts: 16
Joined: Mon 01 Nov, 2021 20:51
Has thanked: 1 time

Поддержка Windows RT

Post by usa »

Скачиваем и распаковываем:
http://www.lua.org/ftp/lua-5.1.5.tar.gz
http://www.inf.puc-rio.br/~roberto/lpeg ... 0.2.tar.gz

В файле luaopen_lpeg lpeg-1.0.2\lptree.c меняем:
int luaopen_lpeg (lua_State *L);
int luaopen_lpeg (lua_State *L) {
на:
int __declspec(dllexport) luaopen_lpeg (lua_State *L);
int __declspec(dllexport) luaopen_lpeg (lua_State *L) {
Запускаем Developer Command Prompt for VS 2019

Выполняем:
VC\Auxiliary\Build\vcvarsamd64_arm64.bat
Заходим в каталон lua-5.1.5\src и выполняем :
cl /MD /O2 /c /DLUA_BUILD_AS_DLL *.c
ren lua.obj lua.o
ren luac.obj luac.o
link /DLL /IMPLIB:lua.lib /OUT:lua.dll *.obj
Копируем lua-5.1.5\src -> lpeg-1.0.2 файлы:
lua.dll
lua.lib
lua.h
luaconf.h
lauxlib.h
Заходим в lpeg-1.0.2 и выполняем:
cl /MD /O2 /c *.c
link /DLL /out:lpeg.dll *.obj lua.lib
Файлы lua.dll и lua.lib переименовываем в lua51.* и копируем в FarManager-master\plugins\luamacro\luasdk\ARM64.

В FarManager\plugins\luamacro\ применяем luamacro.diff.
Прикрепляю готовые DLL.
Attachments
make.zip
(485 Bytes) Downloaded 93 times
luamacro.diff
(1.59 KiB) Downloaded 86 times
dll.zip
(762.97 KiB) Downloaded 79 times
usa
Posts: 16
Joined: Mon 01 Nov, 2021 20:51
Has thanked: 1 time

Поддержка Windows RT

Post by usa »

@Shmuel,
Вы можете добавить это в master?
Кстати, а как NetBox собрать?
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Поддержка Windows RT

Post by Shmuel »

usa, разговоры о добавлении Lua/LuaJIT-библиотек в master уже были, и давно. Если поискать по форуму, должны найтись.
Второе, я с определённого момента снизил свою активность в Фаре, что включает в себя прекращение коммитов. Поэтому с предложениями обращайтесь к DrKnS или 2useven10.
usa
Posts: 16
Joined: Mon 01 Nov, 2021 20:51
Has thanked: 1 time

Поддержка Windows RT

Post by usa »

Я не столько о Lua, сколько о поддержке ARM64. Ну ведь есть такая Винда, есть машины с ней, почему бы не компилировать под них, если изменения минимальны?

@DrKnS , @2useven10
Добавьте поддержку ARM64 хотя бы master, пожалуйста, даже без NetBox. Выше есть всё необходимое для этого.
Идеально бы, конечно, добавить ещё и сборку в дистрибутив, и с NetBox.
Last edited by usa on Thu 04 Nov, 2021 08:53, edited 1 time in total.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Поддержка Windows RT

Post by DrKnS »

usa wrote: Thu 04 Nov, 2021 08:52 Ну ведь есть такая Винда, есть машины с ней, почему бы не компилировать под них, если изменения минимальны?
Почему - написано на предыдущей странице.
Выше есть всё необходимое для этого.
"Я открыл солюшен и накликал мышкой еще одну платформу" - это не совсем "все необходимое".
Вы собрали lua в VS, но, насколько я в курсе, это приведет к падениям при использовании FFI в скриптах из-за ABI. Чтобы все было кошерно, надо, чтобы в зависимостях была msvcrt.dll, а для этого надо собирать в mingw.

Кроме того, как вы правильно подметили, есть netbox, который может быть собирается под ARM, а может быть и нет, надо проверять.
А еще есть colorer, у которого вообще отдельный мейнтейнер.

В итоге имеем, что кто-то должен сесть и потратить несколько дней своего времени, чтобы из "готово на 80%" получить "готово на 100%".
И ради чего это все? Как выше отмечено, ARM-версией интересовались 2 человека за 8 лет (с вами - 3 за 9).

Если у вас есть устройство, есть VS, есть умение и желание - делайте пулл-реквесты, мы их с удовольствием примем. Но не стоит ожидать, что оно как-то само образуется.

То, что выше, я закоммитил.
Post Reply

Return to “Предложения и идеи”