| Index: services/job.h |
| =================================================================== |
| --- services/job.h (revision 843731) |
| +++ services/job.h (working copy) |
| @@ -57,6 +57,10 @@ |
| |
| unsigned int argumentFlags() const; |
| |
| + const ArgumentsList getFlags() { |
| + return m_flags; |
| + } |
| + |
| void setFlags( const ArgumentsList &flags ) { |
| m_flags = flags; |
| } |
| Index: client/main.cpp |
| =================================================================== |
| --- client/main.cpp (revision 843731) |
| +++ client/main.cpp (working copy) |
| @@ -218,6 +218,39 @@ |
| |
| local |= analyse_argv( argv, job ); |
| |
| + /* honour Gentoo's ${CFLAGS_${ABI}} environment variable */ |
| + if (getenv("ABI") != NULL) { |
| + char* envar = (char*) malloc(sizeof(char) * |
| + (strlen("CFLAGS_") + strlen(getenv("ABI")) + 1)); |
| + |
| + if (!envar) |
| + return 1; |
| + |
| + /* We use CFLAGS_${ABI} for gcc, g++, g77, etc as they are |
| + * the same no matter which compiler we are using. |
| + */ |
| + sprintf(envar, "CFLAGS_%s", getenv("ABI")); |
| + |
| + if (getenv(envar)) { |
| + ArgumentsList args = job.getFlags(); |
| + |
| + char* pch = strtok(getenv(envar)," \t"); |
| + while (pch != NULL) { |
| + #if CLIENT_DEBUG |
| + log_info() << "adding CFLAG '" << pch << "' as specified in environment variable ${CFLAGS_${ABI}}" << endl; |
| + #endif |
| + args.append(pch, Arg_Remote); |
| + pch = strtok(NULL, " \t"); |
| + } |
| + |
| + job.setFlags(args); |
| + |
| + free(pch); |
| + } |
| + |
| + free(envar); |
| + } |
| + |
| /* if ICECC is set to no, then run job locally */ |
| char* icecc = getenv("ICECC"); |
| if ( icecc && !strcasecmp(icecc, "no") ) |