LINUX.ORG.RU

Сборка без GNU Make

 , , , ,


0

2

Можно ли собирать проекты с мейкфайлами для GNU Make без этого самого gmake?
Может, есть какой-то хитрый транслятор/конвертер в формат bmake?
Цель — собрать ядро, не используя инструменты GNU. Но, похоже, ядро плотно завязано на GNU Make. Ну, если не ядро, так хоть что-нибудь значимое!

Нашёл pymake, но он только "mostly GNU-compatible" и на питоне.

★★★★★

Есть, в принципе, только 2 make. BSD make и GNU make. Они немного отличаются друг от друга. И, с немного терпения, можно привести одно в другое. (В том числе clean room rewrite.) Вопрос только: зачем?

beastie ★★★★★
()
Ответ на: комментарий от beastie

Предлагаешь руками переписывать?

$ find . -type f -name Makefile | wc -l
1932
$ find . -type f -name Makefile -exec cat {} \; | wc -l
46240
И это только ядро.

CYB3R ★★★★★
() автор топика
Последнее исправление: CYB3R (всего исправлений: 1)
Ответ на: комментарий от beastie

Нашёл сейчас makepp. Завтра потестирую.

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от beastie

Проще переписать один убогий BSD make, чем все makefilы в мире.

anonymous
()
Ответ на: комментарий от i_gnatenko_brain

Моя цель — минимальный работающий линукс, не используя инструменты GNU. Просто потому что это возможно (на самом деле нет).
В базовой системе только хорошо переносимый код на Си и sh-совместимые скрипты. Потом понадобится красивая графика, тут уже не обойтись без C++ (Mesa на плюсах).
Сейчас у меня есть замена для gcc, для glibc и libstdc++, для всех binutils, кроме ld и as. Вот сейчас ищу замену для make. Вроде бы нашёл.

CYB3R ★★★★★
() автор топика

Можно ли собирать проекты с мейкфайлами для GNU Make без этого самого gmake? Может, есть какой-то хитрый транслятор/конвертер в формат bmake?

Для справки: во фрибсд при сборке портов одним из первых появляется gmake

Цель — собрать ядро, не используя инструменты GNU.

Даже не пытайся

Ну, если не ядро, так хоть что-нибудь значимое!

Так найди значимый проект, не использующий GNU make. Бздю собери :)

annulen ★★★★★
()

чтоб забивать гнутые гвозди нужет гнутый молоток :)

vel ★★★★★
()

Но зачем? Лучше иди на какой-нибудь форум и поучавствуй в специальной олимпиаде по дисциплине «Операционная система GNU».

anonymous
()
Ответ на: комментарий от CYB3R

не используя инструменты GNU

А что с ними не так?

кроме ld

Wlink, JWlink? Только если ты отказываешься от GNU по причине лицензии, это тебя вряд ли устроит. Есть еще wmake, аналог make

и as

llvm-mc - http://blog.llvm.org/2010/04/intro-to-llvm-mc-project.html Кроме того можно попробовать использовать yasm http://linux.die.net/man/7/yasm_parsers

The GNU Assembler (GAS) is the de-facto cross-platform assembler for modern Unix systems, and is used as the backend for the GCC compiler. Yasm's support for GAS syntax is moderately good, although immature: not all directives are supported, and only 32-bit x86 and AMD64 architectures are supported. Nearly all of the GAS preprocessor is also supported. Yasm's GAS syntax support is good enough to handle essentially all x86 and AMD64 GCC compiler output. The GAS parser can be selected with -p gas.

SZT ★★★★★
()
Ответ на: комментарий от CYB3R

ну шланг и musl ещё куда ни шло. Но тулчейн хорошо уже так попахивает.

devl547 ★★★★★
()
Ответ на: комментарий от CYB3R

линукс, не используя инструменты GNU

Как бы само ядро Linux - это инструмент GNU, потому что ядро GNU Linux. Пиши своё ядро.

kostik87 ★★★★★
()
Ответ на: комментарий от anonymous

http://lld.llvm.org/

Связывался с разработчиками. Они утверждают, что неюзабельно, и советуют mclinker.

http://sourceforge.net/projects/elftoolchain/ Неужели? А это тогда что по-вашему?

А это binutils, которые я использую:

    =========== ============================================
    Name        Description
    =========== ============================================
    ar          Archive manager.
    addr2line   Debug tool.
    brandelf    Manage the ELF brand on executables.
    c++filt     Translate encoded symbols.
    elfcopy     Copy and translate between object formats.
    elfdump     Diagnostic tool.
    findtextrel Find undesired text relocations.
    libdwarf    DWARF access library.
    libelf      ELF access library.
    mcs         Manage comment sections.
    nm          List symbols in an ELF object.
    ranlib      Add archive symbol tables to an archive.
    readelf     Display ELF information.
    size        List object sizes.
    strings     Extract printable strings.
    strip       Discard information from ELF objects.
    =========== ============================================

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от CYB3R

Связывался с разработчиками. Они утверждают, что неюзабельно, и советуют mclinker.

И правда похоже основной функционал работает только на FreeBSD, и то похоже только на amd64 aka x86-64 и не без мелких проблем: https://llvm.org/bugs/show_bug.cgi?id=23214

А это binutils, которые я использую:

Попробуйте devel-snapshot как можете видеть сами as и ld там присутствуют. http://sourceforge.net/p/elftoolchain/code/HEAD/tree/trunk/ + попробуйте заменить gdb на lldb http://lldb.llvm.org/lldb-gdb.html

anonymous
()
Ответ на: комментарий от anonymous

Попробуйте devel-snapshot

Попробую. Вряд ли с ними можно собрать ядро. Вероятно, GNU-синтаксис не поддерживается, это же BSD. Но в любом случае попробую и отпишусь.

CYB3R ★★★★★
() автор топика
2 ноября 2015 г.
Ответ на: комментарий от kostik87

GNU к ядру Linux не имеет никакого отношения вообще.

anonymous
()
Ответ на: комментарий от f1u77y

GNU Linux

Это обыватель услышал где-то про то, что Linux — это ядро, и правильно говорить GNU/Linux, совместил как-то у себя в голове эти факты и решил, что он самый умный.

CYB3R ★★★★★
() автор топика
4 января 2016 г.
Ответ на: комментарий от CYB3R

Моя цель — минимальный работающий линукс, не используя инструменты >GNU. Просто потому что это возможно (на самом деле нет).
В базовой системе только хорошо переносимый код на Си и sh->совместимые скрипты. Потом понадобится красивая графика, тут уже не >обойтись без C++ (Mesa на плюсах).
Сейчас у меня есть замена для gcc, для glibc и libstdc++, для всех >binutils, кроме ld и as. Вот сейчас ищу замену для make. Вроде бы >нашёл.

А что по поводу Autotools?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.