Makefile für live Plugin, das DVBDIR unterstützt

  • Rein informativ, wozu bracht live das DVBDIR?

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

  • Hallo TheChief,


    > Rein informativ, wozu bracht live das DVBDIR?
    Nun, live Programme includen VDR Header, und die VDR Header includen dann die DVB Header. Z.B.:


    Code
    ecppc   edit_recording.ecpp
    In file included from /usr/include/vdr/dvbdevice.h:13,
                     from /usr/include/vdr/menuitems.h:14,
                     from /usr/include/vdr/plugin.h:14,
                     from menu.ecpp:3:
    /usr/include/linux/dvb/frontend.h:26:3: error: #error Wrong DVBDIR
    /usr/include/linux/dvb/frontend.h:27:3: error: invalid preprocessing directive #DVBDIR


    - Markus

    Client1: ASUS P5QC, Dual Core 3G, Cine S2, Ext. Board von TBE, Xubuntu 20.04, VDR 2.6x

    Client2: RPI3

    Server: RPI4, Sundtek SkyTV Dual 2x

  • Das stelle ich eben für das Image-Plugin auch fest (hat bereits neues Makefile). Wie muss ich dem Plugin das DVBDIR korrekt übergeben?


    Danke und Gruß,
    Stefan

  • Hm, bei mir kompiliert live aber, mit gesetztem DVBDIR in der Make.config des VDR.

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

  • Oliver (UFO) gab mir den Tipp, folgendes vorzunehmen, um festzustellen, ob gegen die Header des Kernels kompiliert wird, nachdem ich die media_build_experimental installiert hatte:

    Zitat

    vi /usr/include/linux/dvb/frontend.h

    #error Versuch, gegen Kernel zu kompilieren


    Bei einigen Plugins hagelt's dann Errors bzw. diese Meldung beim Kompilieren. Und das Image-Plugin kompiliert dann nicht mehr. Ich habe mir nun aber wie folgt geholfen:


    vi image/Makefile
    ### The directory environment:

    +DVBDIR = /usr/local/src/DVB/linux/include/uapi

    ### Includes and Defines (add further entries here):
    -INCLUDES += -I$(VDRDIR)/include -I.
    +INCLUDES += -I$(VDRDIR)/include -I$(DVBDIR) -I.


    vi image/liboutput/Makefile
    ### The directory environment:
    -INCLUDES += -I$(VDRDIR)/include -I.
    +INCLUDES += -I$(VDRDIR)/include -I$(DVBDIR) -I.

    Einmal editiert, zuletzt von 447377 ()

  • Hallo,


    die fehlenden Includes können mit

    Code
    INCLUDES += $(shell pkg-config --cflags-only-I vdr)


    ergänzt werden.


    - Markus

    Client1: ASUS P5QC, Dual Core 3G, Cine S2, Ext. Board von TBE, Xubuntu 20.04, VDR 2.6x

    Client2: RPI3

    Server: RPI4, Sundtek SkyTV Dual 2x

  • Hallo Markus,


    mit der INCLUDE-Zeile will das Image-Plugin dann auch gegen die Header des Kernels kompilieren, was aufgrund der eingefügten Zeile in frontend.h zum Abbruch führt.


    Stefan

    Einmal editiert, zuletzt von 447377 ()

  • Sollte aber, wenn das Makefile die cflags via pkg-config vom VDR übernimmt, nicht nötig sein. Steht da ja auch drin. Folglich sollte im Makefile ein anderes Problem sein.


    Hallo Mreimer,


    Das funktioniert so für Regeln, in denen die CFLAGS oder CXXFLAGS verwendet werden, also z.B. für

    Code
    %.o: %.cpp
            $(CXX) $(CXXFLAGS) -c $(DEFINES) $(PLUGINFEATURES) $(INCLUDES) $<


    . Bei anderen Regeln, also z.B.

    Code
    $(DEPFILE): Makefile
            @$(MAKEDEP) $(DEFINES) $(INCLUDES) $(OBJS:%.o=%.cpp) > $@


    funktioniert das nicht. Daher genügt es nicht, die Includes in CFLAGS und CXXFLAGS zu haben.


    - Markus

    Client1: ASUS P5QC, Dual Core 3G, Cine S2, Ext. Board von TBE, Xubuntu 20.04, VDR 2.6x

    Client2: RPI3

    Server: RPI4, Sundtek SkyTV Dual 2x

  • Hallo Markus,


    mit der INCLUDE-Zeile will das Image-Plugin dann auch gegen die Header des Kernels kompilieren, was aufgrund der eingefügten Zeile in frontend.h zum Abbruch führt.


    Stefan


    Hallo Stefan,


    was gibt denn

    Code
    pkg-config --cflags-only-I vdr


    aus, wenn Du es auf der Konsole eingibst? Wenn Du bei der Übersetzung und Installation von VDR DVBDIR korrekt gesetzt hast, sollte hier -I$(DVBDIR) ausgegeben werden.


    - Markus

    Client1: ASUS P5QC, Dual Core 3G, Cine S2, Ext. Board von TBE, Xubuntu 20.04, VDR 2.6x

    Client2: RPI3

    Server: RPI4, Sundtek SkyTV Dual 2x


  • . Bei anderen Regeln, also z.B.

    Code
    $(DEPFILE): Makefile
            @$(MAKEDEP) $(DEFINES) $(INCLUDES) $(OBJS:%.o=%.cpp) > $@


    funktioniert das nicht. Daher genügt es nicht, die Includes in CFLAGS und CXXFLAGS zu haben.


    Doch, denn wenn es um VDR-Plugins geht, dann ist entweder CFLAGS oder CXXFLAGS immer zu verwenden. Deine "anderen Regeln" müssen also korrigiert werden.

  • Hallo Markus,


    pkg-config --cflags-only-I vdr
    -> -I/usr/local/src/DVB/linux/include/uapi


    So wie im VDR-Make.config angegeben. Wie wird das nun an die Plugins übergeben?


    Gruß,
    Stefan


  • Was tut ihr?


    Ich warte ja jetzt schon seit Donnerstag, dass mal jemand auf die Idee kommt einfach in einem Makefile von Klaus nachzuschauen.


    Code
    %.o: %.c
    	$(CXX) $(CXXFLAGS) -c $(DEFINES) $(INCLUDES) -o $@ $<


    Code
    $(DEPFILE): Makefile
    	@$(MAKEDEP) $(CXXFLAGS) $(DEFINES) $(INCLUDES) $(OBJS:%.o=%.c) > $@
  • Dann hättest du auch am Donnerstag schon posten können.

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

  • Hallo Mreimer,


    vielen Dank für Deinen Hinweis. Ich habe also in den Makefiles von Klaus Plugins geschaut, und da steht

    Code
    $(DEPFILE): Makefile
            @$(MAKEDEP) $(CXXFLAGS) $(DEFINES) $(INCLUDES) $(OBJS:%.o=%.c) > $@


    Das wäre dann also ein Fehler in den Makefiles des live Plugin, da fehlt das $(CXXFLAGS) an dieser Stelle nämlich. Auch in dem hier plugins-mit-altem-makefile-sammlung auf Seite 3 geposteten Makefile.


    - Markus

    Client1: ASUS P5QC, Dual Core 3G, Cine S2, Ext. Board von TBE, Xubuntu 20.04, VDR 2.6x

    Client2: RPI3

    Server: RPI4, Sundtek SkyTV Dual 2x

  • Hab hier noch ein Problem mit der GIT Version vom live plugin mit den neuen Makefiles von hier. Compiliere ich innerhalb der Plugin Sourcen mit "make all", wird das Plugin anstandslos gebaut. Starte ich den Compilierungsvorgang vom VDR-Source-Verzeichnis mit "make clean clean-plugins && make -j2 all plugins", gibts einen Fehler da die Subplugins nicht gebaut werden:

    Code
    g++: error: pages/libpages.a: Datei oder Verzeichnis nicht gefunden
    g++: error: css/libcss.a: Datei oder Verzeichnis nicht gefunden
    g++: error: javascript/libjavascript.a: Datei oder Verzeichnis nicht gefunden
    make[1]: *** [libvdr-live.so] Fehler 1


    Gibts da noch ein Trick für die "Make.config" oder die Makefiles von live?


    Außerdem ist mir bei der Gelegenheit noch aufgefallen, dass die "vdr.pc" innerhalb des VDR-Source-Verzeichnis nach Änderungen der "Make.config" aktualisiert wird, nicht aber die "vdr.pc" in "/usr/lib/pkgconfig"? Gibts da einen Grund für?


    Gruß
    iNOB

Jetzt mitmachen!

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