[flashrom] [PATCH] Override incompatible CONFIG_FOO for DOS

Carl-Daniel Hailfinger c-d.hailfinger.devel.2006 at gmx.net
Mon Jun 14 18:27:42 CEST 2010


On 14.06.2010 17:59, Idwer Vollering wrote:
> 2010/6/14 Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006 at gmx.net>
>
>   
>> On 14.06.2010 17:38, Idwer Vollering wrote:
>>     
>>> 2010/6/14 Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006 at gmx.net>
>>>
>>>       
>>>> On 12.06.2010 22:35, Carl-Daniel Hailfinger wrote:
>>>>
>>>>         
>>>>> On 05.06.2010 00:06, Carl-Daniel Hailfinger wrote:
>>>>>
>>>>>
>>>>>           
>>>>>> Override incompatible CONFIG_FOO settings for DOS. This allows you to
>>>>>> specify CONFIG_FOO=yes for all drivers and still get only those which
>>>>>> compile under DOS.
>>>>>>
>>>>>>
>>>>>>
>>>>>>             
>>>>> Silently disabling explicitly requested features is a really bad idea.
>>>>> This new patch instead warns the user if any impossible (i.e. not
>>>>> compilable on this platform) features were specified. Such a warning
>>>>> will look like this:
>>>>>
>>>>> The following features are unavailable on your machine:
>>>>>
>>>>>           
>>>> CONFIG_NIC3COM=yes
>>>>
>>>>         
>>>>> If a user does not explicitly request an impossible feature, such a
>>>>> feature will be automatically disabled, so just typing "make" will get
>>>>> you the common subset of default and possible features.
>>>>>
>>>>>
>>>>>           
>>>> Fixed a few minor bugs. Should be ready for merge.
>>>>
>>>>
>>>>         
>>> I'm not sure about that, it breaks djgpp-dos' compilation:
>>>
>>> $ make distclean CONFIG_SERPROG=yes djgpp-dos
>>> rm -f flashrom flashrom.exe *.o *.d
>>> rm -f .features .libdeps
>>> make CC=i586-pc-msdosdjgpp-gcc STRIP=i586-pc-msdosdjgpp-strip
>>>       
>> WARNERROR=no
>>     
>>> OS_ARCH=DOS
>>> make[1]: Entering directory
>>> `/home/idwer/coreboot/svn/flashrom/trunk-r1047-patchwork-1509'
>>> The following features are unavailable on your machine:
>>>       
>> CONFIG_SERPROG=yes
>>     
>> This is a desired effect of my patch, and we want that because serprog
>> does not work on DOS (yet).
>>
>>
>>     
>>> make[1]: *** [featuresavailable] Error 1
>>> make[1]: Leaving directory
>>> `/home/idwer/coreboot/svn/flashrom/trunk-r1047-patchwork-1509'
>>> make: *** [djgpp-dos] Error 2
>>>
>>> $ make distclean djgpp-dos
>>> rm -f flashrom flashrom.exe *.o *.d
>>> rm -f .features .libdeps
>>> make CC=i586-pc-msdosdjgpp-gcc STRIP=i586-pc-msdosdjgpp-strip
>>>       
>> WARNERROR=no
>>     
>>> OS_ARCH=DOS
>>> make[1]: Entering directory
>>> `/home/idwer/coreboot/svn/flashrom/trunk-r1047-patchwork-1509'
>>> Checking for a C compiler... found.
>>> Checking for libpci headers... found.
>>> Checking if libpci is present and sufficient... no.
>>> Checking if libz+libpci are present and sufficient...no.
>>>
>>>       
>> And this is a bug. Can you reproduce this bug
>>     
>
>
> No, I can only reproduce it when running "make distclean djgpp-dos" with
> http://patchwork.coreboot.org/patch/1509/ applied.
>
> Index: Makefile
> ===================================================================
> --- Makefile    (revision 1047)
> +++ Makefile    (working copy)
> @@ -50,13 +50,32 @@
>  endif
>  ifeq ($(OS_ARCH), DOS)
>  EXEC_SUFFIX := .exe
> -CPPFLAGS += -I../libgetopt -I../libpci/include
> +CPPFLAGS += -I../../../djgpp/libgetopt -I../../../djgpp/libpci/include
>  # FIXME Check if we can achieve the same effect with -L../libgetopt
> -lgetopt
>  LIBS += ../libgetopt/libgetopt.a
>   

I think this is the reason why compilation fails. This LIBS statement
has the wrong path for your installation.


> -# Bus Pirate and Serprog are not supported under DOS.
> -CONFIG_BUSPIRATE_SPI = no
> -CONFIG_SERPROG = no
> +# Bus Pirate and Serprog are not supported under DOS (missing serial
> support).
> +ifeq ($(CONFIG_BUSPIRATE_SPI), yes)
> +UNSUPPORTED_FEATURES += CONFIG_BUSPIRATE_SPI=yes
> +else
> +override CONFIG_BUSPIRATE_SPI = no
>  endif
> +ifeq ($(CONFIG_SERPROG), yes)
> +UNSUPPORTED_FEATURES += CONFIG_SERPROG=yes
> +else
> +override CONFIG_SERPROG = no
> +endif
> +# Dediprog and FT2232 are not supported under DOS (missing USB support).
> +ifeq ($(CONFIG_DEDIPROG), yes)
> +UNSUPPORTED_FEATURES += CONFIG_DEDIPROG=yes
> +else
> +override CONFIG_DEDIPROG = no
> +endif
> +ifeq ($(CONFIG_FT2232_SPI), yes)
> +UNSUPPORTED_FEATURES += CONFIG_FT2232_SPI=yes
> +else
> +override CONFIG_FT2232_SPI = no
> +endif
> +endif
>
>  CHIP_OBJS = jedec.o stm50flw0x0x.o w39v040c.o w39v080fa.o w29ee011.o \
>         sst28sf040.o m29f400bt.o 82802ab.o pm49fl00x.o \
>
>
>   
>> with a clean (no local patches) tree with latest svn HEAD?
>>
>>     
>
> These are the local modifications I apply/applied against HEAD:
>
> Index: Makefile
> ===================================================================
> --- Makefile    (revision 1047)
> +++ Makefile    (working copy)
> @@ -49,10 +49,9 @@
>  LDFLAGS += -L/usr/local/lib
>  endif
>  ifeq ($(OS_ARCH), DOS)
> -EXEC_SUFFIX := .exe
>   

Hm. Is this EXEC_SUFFIX removal intentional?


> -CPPFLAGS += -I../libgetopt -I../libpci/include
> +CPPFLAGS += -I../../../djgpp/libgetopt -I../../../djgpp/libpci/include
>  # FIXME Check if we can achieve the same effect with -L../libgetopt
> -lgetopt
> -LIBS += ../libgetopt/libgetopt.a
> +LIBS += ../../../djgpp/libgetopt/libgetopt.a
>  # Bus Pirate and Serprog are not supported under DOS.
>  CONFIG_BUSPIRATE_SPI = no
>  CONFIG_SERPROG = no
>   

Regards,
Carl-Daniel

-- 
http://www.hailfinger.org/





More information about the flashrom mailing list