Makefile: wie Bedingung innerhalb eines targets einbauen?

  • ich bastele daran, ein neues Makefile für das mp3-Plugin fertigzustellen. Die Besonderheit bei diesem Plugin ist ja, dass es je nach Konfiguration zwei Plugins baut.


    im Makefile wird das so konfiguriert:

    Code
    ### uncomment one of these lines, if you don't want one of the plugins
    #WITHOUT_MP3=1
    #WITHOUT_MPLAYER=1


    Im Abschnitt Targets gibt es diese Zeilen


    Code
    install-$(PLUGIN): libvdr-$(PLUGIN).so
    	install -D libvdr-$(PLUGIN).so $(DESTDIR)$(LIBDIR)/libvdr-$(PLUGIN).so.$(APIVERSION)
    
    install-$(PLUGIN2): libvdr-$(PLUGIN2).so
    	install -D libvdr-$(PLUGIN2).so $(DESTDIR)$(LIBDIR)/libvdr-$(PLUGIN2).so.$(APIVERSION)
    
    install-lib: install-$(PLUGIN) install-$(PLUGIN2)
    
    
    install: install-lib install-i18n


    nun möchte ich das aber in Abhängigkeit zu den obigen Definitionen machen. Das target "install-lib" soll nur die targets aufrufen, die für das jeweilige Plugin stehen.


    so geht es nicht:

    Code
    install-lib:
    ifndef WITHOUT_MP3
    	install-$(PLUGIN)
    endif
    ifndef WITHOUT_MPLAYER
    	install-$(PLUGIN2)
    endif


    Soweit ich das inzwischen verstanden habe, geht das nur mit einer Shell-Bedingung. Aber wie müsste diese aussehen bzw. wie kann ich die am Anfang stehenden Definitionen per Shell-Bedingung prüfen?

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

  • Man könnte z.B. prüfen, ob die Variable eine Länge > 0 hat und dann schauen ob der Wert 1 ist:

    Code
    if [ ! -z "$WITHOUT_MP3" ] &&  [ "$WITHOUT_MP3" -eq 1 ]; then
    echo "ohne MP3"
    fi

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • die Shell-Syntax wird im Makefile leider nicht richtig erkannt, farblich hervorgehoben wird auch nur $W


    aber so geht es und berücksichtigt auch alle denkbaren Fälle (außer jemand wählt vor dem Kompilieren gleich beide Plugins ab, aber dann gehört er sowieso erschossen)


    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!