Pre-adaptation of LDFLAGSF and LDFLAGS with default libraries availability

This commit is contained in:
Pierre Pronchery 2006-06-18 21:43:57 +00:00
parent 4d2a50486b
commit 3d6608a4fa

View File

@ -265,10 +265,12 @@ static int _executables_variables(Configure * configure, Config * config,
return 0; return 0;
} }
static void _binary_ldflags(Configure * configure, Config * config, FILE * fp,
String const * ldflags);
static void _variables_binary(Configure * configure, Config * config, FILE * fp, static void _variables_binary(Configure * configure, Config * config, FILE * fp,
char * done) char * done)
{ {
String * p; String const * p;
/* FIXME path given from user or autodetected */ /* FIXME path given from user or autodetected */
if(!done[TT_LIBRARY]) if(!done[TT_LIBRARY])
@ -304,12 +306,63 @@ static void _variables_binary(Configure * configure, Config * config, FILE * fp,
fprintf(fp, "%s%s%s", "CFLAGS\t= ", p, fprintf(fp, "%s%s%s", "CFLAGS\t= ", p,
"\n"); "\n");
} }
/* FIXME remove -l dl and -l crypt on BSD, check on Solaris etc */
if((p = config_get(config, "", "ldflags_force")) if((p = config_get(config, "", "ldflags_force"))
!= NULL) != NULL)
fprintf(fp, "%s%s%s", "LDFLAGSF= ", p, "\n"); {
fprintf(fp, "%s", "LDFLAGSF= ");
_binary_ldflags(configure, config, fp, p);
}
if((p = config_get(config, "", "ldflags")) != NULL) if((p = config_get(config, "", "ldflags")) != NULL)
fprintf(fp, "%s%s%s", "LDFLAGS\t= ", p, "\n"); {
fprintf(fp, "%s", "LDFLAGS\t= ");
_binary_ldflags(configure, config, fp, p);
}
}
static void _binary_ldflags(Configure * configure, Config * config, FILE * fp,
String const * ldflags)
{
/* FIXME remove -l dl and -l crypt on BSD, check on Solaris etc */
char * libs_gnu[] = { "socket", NULL };
char * libs_bsd[] = { "dl", "socket", NULL };
char * libs_sunos[] = { "dl", NULL };
char buf[10];
char ** libs;
char * p;
char * q;
int i;
if((p = string_new(ldflags)) == NULL)
{
fprintf(fp, "%s%s", ldflags, "\n");
return;
}
switch(configure->os)
{
case HO_GNU_LINUX:
libs = libs_gnu;
break;
case HO_FREEBSD:
case HO_NETBSD:
case HO_OPENBSD:
libs = libs_bsd;
break;
case HO_SUNOS:
libs = libs_sunos;
break;
default:
libs = libs_gnu;
break;
}
for(i = 0; libs[i] != NULL; i++)
{
snprintf(buf, sizeof(buf), "-l %s", libs[i]);
if((q = string_find(p, buf)) == NULL)
continue;
memmove(q, q+strlen(buf), strlen(buf));
}
fprintf(fp, "%s%s", p, "\n");
free(p);
} }
static void _variables_library(Configure * configure, Config * config, static void _variables_library(Configure * configure, Config * config,