First, src/include/cpu/cpufixup.h is changed to follow the common linuxbios usage.
#if CPU_FIXUP == 1 # if (k8==1) #warning "====>Temporary notice that we are using k8 cpufixup" # define cpufixup(mem) k8_cpufixup(mem) # elif (k7==1) #warning "====>Temporary notice that we are using k7 cpufixup" # define cpufixup(mem) k7_cpufixup(mem) # elif (i786==1) #warning "====>Temporary notice that we are using i786 cpufixup" # define cpufixup(mem) i786_cpufixup(mem) # elif (i686==1) #warning "====>Temporary notice that we are using i686 cpufixup" # define cpufixup(mem) p6_cpufixup(mem) # endif #else #warning "====>YOU DID NOT DEFINE ONE OF: k8, k7, i786, i686" # define cpufixup(mem) do {} while(0) #endif
note that it is compare to 1, not just an #ifdef. We are leaving the warning in for a while to make sure people see this. In the EPIA, the symbol k8 even if defined to 1 would end up needing k8_cpufixup, which is wrong.
Just a reminder, make your stuff testing against ==1, not ifdef.
Second, a subtle change in the config tool.
IF: a symbol is always exported and has no default value, AND the value is not set by the time the config tool is generating makefile settings, then you will get an error, not just a warning.
One error in the EPIA build process was because the symbol 'k8' was defined but had no value.
I don't think this will break anything, but you never know. Watch your K8 builds carefully. We're hoping this fixes the latest EPIA problems.
ron
Close, but no banana.
The new rules for options are as follows:
1. Options declared as 'default none' and 'export always' MUST have a value set or a default value assigned. Any options of this type that are still undefined when processing of config files is finished will result in a fatal error.
2. All options declared as 'export always' and those declared as 'export used' that have a value set, or the default value altered, will result in an entry in Makefile.settings and ldoptions (for numeric values only.)
3. The appropriate way to test for a variable is '#if VAR==0' or '#if VAR==1'. Tests using '#ifdef VAR' or '#if defined(VAR)' may produced incorrect results.
So far I've checked the epia and arima configurations and they build ok. I'll check the others tomorrow before I commit the changes.
Regards,
Greg
On 22/03/2004, at 3:00 PM, ron minnich wrote:
First, src/include/cpu/cpufixup.h is changed to follow the common linuxbios usage.
#if CPU_FIXUP == 1 # if (k8==1) #warning "====>Temporary notice that we are using k8 cpufixup" # define cpufixup(mem) k8_cpufixup(mem) # elif (k7==1) #warning "====>Temporary notice that we are using k7 cpufixup" # define cpufixup(mem) k7_cpufixup(mem) # elif (i786==1) #warning "====>Temporary notice that we are using i786 cpufixup" # define cpufixup(mem) i786_cpufixup(mem) # elif (i686==1) #warning "====>Temporary notice that we are using i686 cpufixup" # define cpufixup(mem) p6_cpufixup(mem) # endif #else #warning "====>YOU DID NOT DEFINE ONE OF: k8, k7, i786, i686" # define cpufixup(mem) do {} while(0) #endif
note that it is compare to 1, not just an #ifdef. We are leaving the warning in for a while to make sure people see this. In the EPIA, the symbol k8 even if defined to 1 would end up needing k8_cpufixup, which is wrong.
Just a reminder, make your stuff testing against ==1, not ifdef.
Second, a subtle change in the config tool.
IF: a symbol is always exported and has no default value, AND the value is not set by the time the config tool is generating makefile settings, then you will get an error, not just a warning.
One error in the EPIA build process was because the symbol 'k8' was defined but had no value.
I don't think this will break anything, but you never know. Watch your K8 builds carefully. We're hoping this fixes the latest EPIA problems.
ron
Linuxbios mailing list Linuxbios@clustermatic.org http://www.clustermatic.org/mailman/listinfo/linuxbios