Преобразовать Makefile gmake в Makefile?

Существует ли утилита для преобразования файла Makefile GNU для gmake в файл Makefile, который можно использовать для make (FreeBSD-make)?


person nickb    schedule 13.12.2011    source источник
comment
Вы видели это: stackoverflow.com/questions/1194957/?   -  person pmod    schedule 13.12.2011
comment
@pmod, нет, я не видел этого до своего поста. Интересное чтение, к сожалению - до сих пор не дает ответа на мой вопрос.   -  person nickb    schedule 13.12.2011
comment
какого рода несовместимости вы ожидаете, когда будете использовать make-файл, написанный для gmake из freebsd-make? вы пробовали использовать make-файлы? то есть не могли бы вы уточнить свой вопрос   -  person pmod    schedule 13.12.2011
comment
Я пытаюсь создать luajit.org на FreeBSD, и похоже, что make-файл был создан с использованием gmake. Я придерживаюсь философии FreeBSD, чтобы на моем сервере не было кода GPL. LuaJIT лицензирован MIT, но для его сборки требуется gmake. Таким образом, я хотел бы легко преобразовать make-файл LuaJIT в freebsd-make, чтобы я мог собрать его на своем сервере.   -  person nickb    schedule 13.12.2011
comment
Что это означает, что для его создания требуется gmake? Что произойдет, если вы используете make для его создания?   -  person pmod    schedule 13.12.2011
comment
Когда я запускаю freebsd-make на luajit, возникает ошибка. Makefile, строка 29: Требуется оператор Ошибка при раскрытии встроенной переменной. Когда я открываю Makefile для LuaJIT, он даже говорит, что нужно использовать Gmake.   -  person nickb    schedule 13.12.2011
comment
Я думаю, вы не найдете никаких конвертеров, вам придется собирать LuaJIT с помощью gmake, если он поддерживает только gmake. На самом деле для меня было неожиданностью, что они разные. Можете ли вы использовать порт gmake для Free BSD, например freebsd.org/ cgi / cvsweb.cgi / ports / devel / gmake?   -  person pmod    schedule 13.12.2011
comment
@pmod, да - gmake на FreeBSD работает, но опять же - это разрушает всю философию FreeBSD, заключающуюся в отсутствии кода GPL на вашем сервере.   -  person nickb    schedule 13.12.2011
comment
Вероятно, было бы проще изменить make-файл BSD для добавления функций, присутствующих в GNU make, используемых в make-файле LuaJIT GNU, чем писать программу для преобразования make-файла GNU в make-файл BSD. Это не требует добавления кода GPL на ваш сервер FreeBSD; вы просто добавляете необходимую функциональность из спецификаций, не глядя на код.   -  person Jonathan Leffler    schedule 14.12.2011


Ответы (3)


Эта утилита называется разработчиком (программист, make guru, ...) :-) Серьезно, ИИ, необходимый для этой задачи, достаточно сложен, а потребность в автоматическом преобразовании достаточно близка к эпсилону, чтобы никто не стал серьезно подумайте о программировании.

Если у вас есть make-файл GNU, лучше всего использовать GNU make.

person Jens    schedule 13.12.2011

Как уже отмечалось, такого конвертера нет, и я очень сомневаюсь, что он может существовать. Насколько я понимаю, у вас есть два варианта:

  1. Используйте GNU для создания порта FreeBSD. Например, this.

  2. Исправьте make-файлы, чтобы они были совместимы с FreeBSD make. На самом деле их в LuaJIT не так уж много (основной Makefile и src / Makefile). Это должно быть довольно просто. Просто убедитесь, что у вас есть все инструменты (проверьте, что вызывается в оболочке), и исправляйте ошибки шаг за шагом.

    Например, ошибка в строке 29 (export PREFIX = / usr / local) связана с директивой GNU make export, которая не имеет аналогов в программе make FreeBSD. В руководстве говорится, что переменные среды устанавливаются вне Makefile в оболочке, которая запускаете make и, следовательно, вы должны выполнить это требование.

    Также вам нужно исправить все условия make и т. Д., Вся куча различий собрана в BSD make против GNU make

person pmod    schedule 13.12.2011

Маловероятно, что он есть, потому что есть вещи, которые вы можете делать в GNU make, но не можете делать в других версиях make. Среди прочего, функциональные макросы для управления строками и условные обозначения в make-файле обычно недоступны.

person Jonathan Leffler    schedule 13.12.2011