graphlcd (base, vdr-plugin) touchcol branch (archiv)

  • ich verwende dzt. noch 1.7.28


    (1.4.x ist auf einem alten rechner, ab und zu teste ich aber damit).



    muss, damit es jetzt mit dem aktuellen makefile funktioniert, folgendes aendern:


    export CXXFLAGS = $(call PKGCFG,cxxflags)


    auf


    export CXXFLAGS = $(call PKGCFG,cxxflags) $(call PKGCFG,plugincflags)



    da sonst -fPIC fehlt und es dann beim linken kracht.

  • export CXXFLAGS = $(call PKGCFG,cxxflags) $(call PKGCFG,plugincflags)

    Oh, ja, Du hast vollkommen Recht, da gab es doch einige Versionen mit "plugincflags", habe es nun so aktualisiert.



    Gentoo overlay mit VDR (und nicht nur) ebuilds, vdrcm, GLCDprocDriver

  • VDRDIR solltest du garnicht mehr brauchen und plugincflags wird mit der nächsten VDR-Version wieder entfallen, bzw sollte schon in 1.7.35 nicht mehr existieren...


    Wenn du VDRDIR in der von dir vorgeschlagenen Form einbaust, dann machst du die pkg-config-Funktionalität an sich tot. Plugin-Bauen außerhalb des VDR-Trees wird dann unmöglich.

  • zu 1) ich will, dass nicht nur die letzte vdr-version unterstuetzt wird, sondern auch aeltere - so dies moeglich ist. und das ist es hier.


    zu 2) ohne VDRDIR ist es innerhalb des vdr-trees nicht mehr moeglich. und es wird ja nur dann gesetzt, wenn es noch _nicht_ gesetzt ist. wieso das die PKGCFG-geschichte unbrauchbar machen soll, musst du mir erst einmal erklaeren ...



    KORREKTUR: sehe gerade, dass der fall v. zoolook vorgesehen waere, nur da anscheinend ein bug enthalten ist. darum hats bei mir nicht funktioniert ...


    wenn in der derzeitigen version v. Makefile VDRDIR nicht gesetzt ist, wird PKGCFG trotzdem richtig gesetzt, aber auch PLGCFG scheint dann gesetzt zu werden.
    weiter unten wird dann aber auf ifeq ($(PLGCFG),) getestet und darin dann VDRDIR auf ../../.. gesetzt, wenn nicht vorhanden.
    da PLGCFG aber gesetzt ist (zumindest bei mir), bleibt VDRDIR ungesetzt und dann kracht es - so wie eben bei mir ...

  • Zum ersten gebe ich dir recht.


    Zum zweiten Thema: Wenn VDRDIR gesetzt ist, dann wird pkg-config das "vdr.pc" im VDRDIR suchen und nicht im System.


    Du kannst ohne deine zusätzlichen Zeilen mit "make plugins" im im VDR-Sourcedir bauen. Das Makefile vom VDR selbst übergibt VDRDIR in diesem Fall.

  • koennte man machen, aber wie gesagt: es soll auch 1.6.x - 1.4.x unterstuetzt werden ...


    es ist aber viel einfacher (und trotzdem allgemein) zu fixen (gerade getestet):


    statt

    Code
    ifeq ($(PLGCFG),)
    
    
    	VDRDIR ?= ../../..
    
    
    	PLGCFG = $(VDRDIR)/Make.config
    
    
    endif


    ->

  • Sorry, aber das wird nix...


    Andere Projekte legen für diesen Fall zwei Makefiles ab. Ein neues und ein altes.


    Dadurch, dass du die Existenz von VDRDIR erzwingst, wird die ganze Idee hinter dem neuen Makefile-System kaputt gemacht.

  • Teste das mal lieber vorher. Das sind Makros. Der pkg-config-Aufruf erfolgt also erst vor Ort wo die Variable eingesetzt wird!


    Zudem ist PLGCFG auch auf den allermeisten neuen VDRs leer. Nur einige wenige haben da Interesse bekundet. Die meisten werden diese Funktion nicht nutzen! Auf einem neuen VDR darf die "Make.config" aber nicht mehr in Plugin-Makefiles geladen werden!

  • und? das tut dann auch keinem weh. dann wird halt eine leere Make.config inkludiert. weltuntergang.
    aber fuer aeltere vdr-versionen wird's sehr wohl benoetigt ..
    und da braucht man wirklich keine alte und neue Makefile-version (wer macht denn bitte sowas??) angst vor ein paar ifdefs?


    ERGAENZUNG:
    bzw: wenn ab einer version Make.config nicht mehr inkludiert werden darf: += ifdef ;)

  • Das Plugin Makefile muss so aussehen, dass es auch kompiliert wenn der VDR (mit aktuellsten Makefilefix-Patch) ohne Make.config kompiliert wurde.


    Das Pluginmakefile muss in 3 Varianten funktionieren


    Plugin liegt im VDR-Source und es wird "make plugins" aufgerufen
    Plugin liegt im VDR-Source und im Pluginverzeichnis wird "make VDRDIR=../../.." aufgerufen
    Plugin liegt nicht im VDR-Source und es wird im Pluginverzeichnis "make" aufgerufen


    Am besten testest du ohne Make.config im VDR-Source, dass ist nämlich die Standardeinstellung und in diese Konstellation gibt es kein PKGCFG.



    Wenn es weiterhin Probleme gibt stelle ich gerne ein Makefile zur Verfügung. Von mir gibts aber nur (wie von Klaus gewünscht) Makefiles die mit dem aktuellsten VDR funktionieren.
    An der Stelle auch sollte man auch nochmal drauf hinweisen, dass Klaus keine Rückwärtskompatibilitätsgefrickel will.


    Nach meinem letzten Stand fliegt der Support für Plugin mit altem Makefile in 2.0 sowieso raus.

  • Beim neuen VDR wird erst die CFLAGS via pkg-config auf valide Werte für Plugin-Bauen gesetzt und durch deine "Make.config-Include-Geschichte" mit CFLAGS ohne -fPIC wieder überschrieben.


    Copperhead: Soweit ich mich erinnere war der letzte Stand für deinen zweiten Fall (Bauen im VDR-Pluginverzeichnis), dass "VDRDIR=../../.." mit übergeben werden musste, denn sonst wird das Plugin generell gegen den im System installierten VDR kompiliert.

  • eines sollte klar sein:


    1.7.x ist eine entwicklerversion.


    das plugin sollte daher auf jeden fall auch mit der aktuell gueltigen prod-version klar kommen (1.6.x), wenn es auch noch mit aelteren versionen zurecht kommt (und dagegen spricht imho nix): noch besser.


    und das alles mit einem Makefile. 2 ist 1 zuviel :)

Jetzt mitmachen!

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