-
1. Data: 2011-04-10 20:37:04
Temat: make vs. gmake
Od: Maciej Sobczak <s...@g...com>
Piszę sobie Makefile i mam taki kaprys, żeby mi działał zarówno z make
jak i z gmake.
Całkiem sporo da się zrobić przenośnie, ale dotarłem do ściany z
konstrukcjami warunkowymi.
Otóż w gmake mogę uzależnić jakąś część od docelowej platformy, np.:
UNAME = $(shell uname)
ifeq ($(UNAME),Linux)
SOME_FLAGS = siabadaba
else
SOME_FLAGS = siubaduba
endif
Standardowy make (konkretnie chodzi o ten z FreeBSD) ma jakąś podobną
formę z .if/.else/.endif, ale nie mogę znaleźć konstrukcji, która by
była poprawna zarówno z make jak i z gmake. Jak bym tego nie wyginał,
dostaję błędy składniowe albo w jednym albo w drugim.
Czy ktoś z grupowiczów może już ten problem rozwiązał?
--
Maciej Sobczak * http://www.msobczak.com * http://www.inspirel.com
-
2. Data: 2011-04-10 21:24:13
Temat: Re: make vs. gmake
Od: "Stachu 'Dozzie' K." <d...@g...eat.some.screws.spammer.invalid>
On 2011-04-10, Maciej Sobczak <s...@g...com> wrote:
> Piszę sobie Makefile i mam taki kaprys, żeby mi działał zarówno z make
> jak i z gmake.
> Całkiem sporo da się zrobić przenośnie, ale dotarłem do ściany z
> konstrukcjami warunkowymi.
Niestety może się nie udać. O instrukcjach warunkowych nie ma ani słówka
w specyfikacji SUS:
http://pubs.opengroup.org/onlinepubs/009695399/utili
ties/make.html
Odbiłem się od tego samego gdy pracowałem krótką chwilę pod FreeBSD.
Mógłbyś próbować wychodzić do shella ($(shell ...)), ale raczej nie o to
ci chodzi.
> Standardowy make (konkretnie chodzi o ten z FreeBSD) ma jakąś podobną
> formę z .if/.else/.endif, ale nie mogę znaleźć konstrukcji, która by
> była poprawna zarówno z make jak i z gmake. Jak bym tego nie wyginał,
> dostaję błędy składniowe albo w jednym albo w drugim.
Moim zdaniem stick to the GNU make. Pod FreeBSD o niego łatwo, pod
Linuksem jest domyślny.
--
Secunia non olet.
Stanislaw Klekot
-
3. Data: 2011-04-11 06:55:23
Temat: Re: make vs. gmake
Od: Maciej Sobczak <s...@g...com>
On 10 Kwi, 23:24, "Stachu 'Dozzie' K."
<d...@g...eat.some.screws.spammer.invalid> wrote:
> Niestety może się nie udać. O instrukcjach warunkowych nie ma ani słówka
> w specyfikacji SUS:http://pubs.opengroup.org/onlinepubs/009695399/u
tilities/make.html
Tego się obawiałem.
> Moim zdaniem stick to the GNU make. Pod FreeBSD o niego łatwo, pod
> Linuksem jest domyślny.
Żeby było śmieszniej, ta konstrukcja warunkowa wcale nie jest mi
potrzebna do odróżniania Linuksa od FreeBSD, bo akurat dane opcje są
dla tych systemów takie same.
Konstrukcja jest potrzebna, żeby wyróżnić Darwina, któremu ogólnie
bliżej do FreeBSD, ale z jakiegoś powodu używa gmake (jak Linux) a
opcjami niczego nie przypomina...
I weź tu pisz wiersze.
W każdym razie dziękuję za radę, trzeba będzie pozostać przy gmake.
--
Maciej Sobczak * http://www.msobczak.com * http://www.inspirel.com
-
4. Data: 2011-04-11 13:12:56
Temat: Re: make vs. gmake
Od: Jędrzej Dudkiewicz <j...@n...com>
On 04/11/2011 08:55 AM, Maciej Sobczak wrote:
> Żeby było śmieszniej, ta konstrukcja warunkowa wcale nie jest mi
> potrzebna do odróżniania Linuksa od FreeBSD, bo akurat dane opcje są
> dla tych systemów takie same.
> Konstrukcja jest potrzebna, żeby wyróżnić Darwina, któremu ogólnie
> bliżej do FreeBSD
No nie wiem, wg mnie on szybko zamienia się w Linuksa - co jest zresztą
logiczne, bo helpów, tutoriali i skryptów pod Linuksa jest co niemiara,
a pod BSD mniej.
JD
-
5. Data: 2011-04-12 16:08:33
Temat: Re: make vs. gmake
Od: Waldek Hebisch <h...@m...uni.wroc.pl>
Maciej Sobczak <s...@g...com> wrote:
> Pisze sobie Makefile i mam taki kaprys, zeby mi dzialal zarowno z make
> jak i z gmake.
> Calkiem sporo da sie zrobic przenosnie, ale dotarlem do sciany z
> konstrukcjami warunkowymi.
>
> Standardowy make (konkretnie chodzi o ten z FreeBSD)
make z FreeBSD jest _bardzo_ mocno rozszerzony w stosunku do standardu.
O ile mi wiadomo w standartowym make nie ma konstrucji warunkowych,
ale mozna osiagnac rownowazny efekt np:
FLAGS_linux=aaaa
FLAGS_bsd=bbbb
FLAGS=$(FLAGS_$(OS))
zakladajac ze zmienna OS to albo linux albo bsd usyskujesz efekt
podstawienia warunkowego. Jesli OS bedzie mial inna wartosc to
zmienna FLAGS_xxx nie bedzie istniala i make da pusty string.
Jak dasz wiecej warstw tego typu to da sie zapisac calkiem
skomplikowana logike warunkowa. To dzialajaca technika i moze
sie przydac jesli musisz miec przenosny Makefile. Jesli
przenosnosc to tylko kaprys to odradzam uzycie...
--
Waldek Hebisch
h...@m...uni.wroc.pl
-
6. Data: 2011-04-16 14:59:00
Temat: Re: make vs. gmake
Od: "Matt P. Dz." <n...@i...local>
On 4/10/2011 10:37 PM, Maciej Sobczak wrote:
> Piszę sobie Makefile i mam taki kaprys, żeby mi działał zarówno z make
> jak i z gmake.
> Całkiem sporo da się zrobić przenośnie, ale dotarłem do ściany z
> konstrukcjami warunkowymi.
Jesli chodzi o przenosnosc, to, cytujac z "Paul's Rules of Makefiles" (
http://make.paulandlesley.org/rules.html ):
"Use GNU make.
Don't hassle with writing portable makefiles, use a portable make instead!"
:-)
Pozdrawiam,
Matt