Re: GNU-Make vs. BSD-Make: Syntax-Frage

Datumsansicht Baumansicht Betreffansicht Attachement-Sicht

From: Christian Weisgerber (naddy_at_mips.inka.de)
Date: 02. Nov 2000


Michael Lestinsky <michael_at_zaphod.rhein-neckar.de> wrote:

> Unter BSD-Make kann man Sachen wie:
>
> .if exists(Makefile.inc)
> .include "Makefile.inc"
> .endif
>
> schreiben. Wie macht man sowas mit GNU-Make?

Speziell dieses Beispiel?

-include Makefile.inc

Allgemein:

Diverse make(1)-Implementierungen (GNU, BSD, andere Unices) haben
einen gewissen gemeinsamen Befehlsumfang. Ich nehme an, dass der
auf das make von V7 zurückgeht. Vielleicht hat auch POSIX etwas
dazu zu sagen. Darüber hinaus gibt es vielfältige implementierungs-
spezifische Erweiterungen. Für BSD make kann man näherungsweise
sagen, dass alles, was mit ».« anfängt, eigene Erweiterung ist.

BSD und GNU make bringen jeweils eine ganze Menge von Erweiterungen
ein, die aber weder syntaxkompatibel sind, noch sich im Funktionsumfang
entsprechen. Bei BSD make ist das grob in der Man-Page beschrieben,
bei GNU make in der Info-Dokumentation (»info -f make«, auch auf
den BSD-Systemen, wo es als »gmake« installiert ist). Für den
exists-Operator habe ich z.B. kein Gegenstück bei GNU make gefunden,
obwohl man das zur Not mit sowas wie

ifeq (yes,$(shell test -e Makefile.inc && echo yes))

nachbilden kann.

> Geht dies auch so, dass hinterher beide Makes das Makefile
> verarbeiten können?

Für bedingte Verzweigungen und allerlei andere interessante Dinge:
nein. Man könnte ggfs. einen Satz m4(1)-Makros entwickeln, die dann
wahlweise zu BSD- oder GNU-make-Syntax expandieren.

-- 
Christian "naddy" Weisgerber                          naddy_at_mips.inka.de


Datumsansicht Baumansicht Betreffansicht Attachement-Sicht

Dieses Archiv wurde generiert von hypermail 2.1.2 : 11. Mar 2002 CET