Code cleanup and and improving C++ support
This commit is contained in:
parent
b2783ff65c
commit
029a749bc2
@ -259,7 +259,6 @@ static int _configure_do(Configure * configure, configArray * ca)
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
int cnt = array_count(ca);
|
int cnt = array_count(ca);
|
||||||
Config * ci;
|
|
||||||
String * di;
|
String * di;
|
||||||
int j;
|
int j;
|
||||||
Config * cj;
|
Config * cj;
|
||||||
@ -267,8 +266,8 @@ static int _configure_do(Configure * configure, configArray * ca)
|
|||||||
|
|
||||||
for(i = 0; i < cnt; i++)
|
for(i = 0; i < cnt; i++)
|
||||||
{
|
{
|
||||||
array_get_copy(ca, i, &ci);
|
array_get_copy(ca, i, &configure->config);
|
||||||
di = config_get(ci, "", "directory");
|
di = config_get(configure->config, "", "directory");
|
||||||
for(j = i; j < cnt; j++)
|
for(j = i; j < cnt; j++)
|
||||||
{
|
{
|
||||||
array_get_copy(ca, j, &cj);
|
array_get_copy(ca, j, &cj);
|
||||||
@ -276,7 +275,7 @@ static int _configure_do(Configure * configure, configArray * ca)
|
|||||||
if(string_find(dj, di) == NULL)
|
if(string_find(dj, di) == NULL)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if(makefile(configure, ci, di, ca, i, j) != 0)
|
if(makefile(configure, di, ca, i, j) != 0)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return i == cnt ? 0 : 1;
|
return i == cnt ? 0 : 1;
|
||||||
|
@ -84,6 +84,7 @@ typedef struct _Prefs
|
|||||||
typedef struct _Configure
|
typedef struct _Configure
|
||||||
{
|
{
|
||||||
Prefs * prefs;
|
Prefs * prefs;
|
||||||
|
Config * config;
|
||||||
HostArch arch;
|
HostArch arch;
|
||||||
HostOS os;
|
HostOS os;
|
||||||
HostKernel kernel;
|
HostKernel kernel;
|
||||||
|
387
src/makefile.c
387
src/makefile.c
@ -13,10 +13,11 @@ ARRAY(Config *, config);
|
|||||||
|
|
||||||
|
|
||||||
/* functions */
|
/* functions */
|
||||||
static int _makefile_write(Configure * configure, Config * config, FILE * fp,
|
static int _makefile_write(Configure * configure, FILE * fp, configArray * ca,
|
||||||
configArray * ca, int from, int to);
|
int from, int to);
|
||||||
int makefile(Configure * configure, Config * config, String * directory,
|
int makefile(Configure * configure, String * directory, configArray * ca,
|
||||||
configArray * ca, int from, int to)
|
int from, int to)
|
||||||
|
|
||||||
{
|
{
|
||||||
String * makefile;
|
String * makefile;
|
||||||
FILE * fp = NULL;
|
FILE * fp = NULL;
|
||||||
@ -33,7 +34,7 @@ int makefile(Configure * configure, Config * config, String * directory,
|
|||||||
if(configure->prefs->flags & PREFS_v)
|
if(configure->prefs->flags & PREFS_v)
|
||||||
printf("%s%s%s%s%s", "Creating ", MAKEFILE, " in ",
|
printf("%s%s%s%s%s", "Creating ", MAKEFILE, " in ",
|
||||||
directory, "\n");
|
directory, "\n");
|
||||||
ret |= _makefile_write(configure, config, fp, ca, from, to);
|
ret |= _makefile_write(configure, fp, ca, from, to);
|
||||||
if(fp != NULL)
|
if(fp != NULL)
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
}
|
}
|
||||||
@ -41,27 +42,28 @@ int makefile(Configure * configure, Config * config, String * directory,
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int _write_variables(Configure * configure, Config * config, FILE * fp);
|
static int _write_variables(Configure * configure, FILE * fp);
|
||||||
static int _write_targets(Prefs * prefs, Config * config, FILE * fp);
|
static int _write_targets(Configure * configure, FILE * fp);
|
||||||
static int _write_objects(Prefs * prefs, Config * config, FILE * fp);
|
static int _write_objects(Configure * configure, FILE * fp);
|
||||||
static int _write_clean(Prefs * prefs, Config * config, FILE * fp);
|
static int _write_clean(Configure * configure, FILE * fp);
|
||||||
static int _write_distclean(Prefs * prefs, Config * config, FILE * fp);
|
static int _write_distclean(Configure * configure, FILE * fp);
|
||||||
static int _write_dist(Prefs * prefs, Config * config, FILE * fp,
|
static int _write_dist(Configure * configure, FILE * fp, configArray * ca,
|
||||||
configArray * ca, int from, int to);
|
int from, int to);
|
||||||
static int _write_install(Prefs * prefs, Config * config, FILE * fp);
|
static int _write_install(Configure * configure, FILE * fp);
|
||||||
static int _write_uninstall(Prefs * prefs, Config * config, FILE * fp);
|
static int _write_uninstall(Configure * configure, FILE * fp);
|
||||||
static int _makefile_write(Configure * configure, Config * config, FILE * fp,
|
static int _makefile_write(Configure * configure, FILE * fp, configArray * ca,
|
||||||
configArray * ca, int from, int to)
|
int from, int to)
|
||||||
{
|
{
|
||||||
if(_write_variables(configure, config, fp) != 0
|
Config * config = configure->config;
|
||||||
|| _write_targets(configure->prefs, config, fp) != 0
|
|
||||||
|| _write_objects(configure->prefs, config, fp) != 0
|
if(_write_variables(configure, fp) != 0
|
||||||
|| _write_clean(configure->prefs, config, fp) != 0
|
|| _write_targets(configure, fp) != 0
|
||||||
|| _write_distclean(configure->prefs, config, fp) != 0
|
|| _write_objects(configure, fp) != 0
|
||||||
|| _write_dist(configure->prefs, config, fp, ca, from,
|
|| _write_clean(configure, fp) != 0
|
||||||
to) != 0
|
|| _write_distclean(configure, fp) != 0
|
||||||
|| _write_install(configure->prefs, config, fp) != 0
|
|| _write_dist(configure, fp, ca, from, to) != 0
|
||||||
|| _write_uninstall(configure->prefs, config, fp) != 0)
|
|| _write_install(configure, fp) != 0
|
||||||
|
|| _write_uninstall(configure, fp) != 0)
|
||||||
return 1;
|
return 1;
|
||||||
if(!(configure->prefs->flags & PREFS_n))
|
if(!(configure->prefs->flags & PREFS_n))
|
||||||
fprintf(fp, "%s%s%s%s%s", "\n.PHONY: all",
|
fprintf(fp, "%s%s%s%s%s", "\n.PHONY: all",
|
||||||
@ -75,67 +77,67 @@ static int _makefile_write(Configure * configure, Config * config, FILE * fp,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int _variables_package(Prefs * prefs, Config * config, FILE * fp,
|
static int _variables_package(Configure * configure, FILE * fp,
|
||||||
String const * directory);
|
String const * directory);
|
||||||
static int _variables_print(Prefs * prefs, Config * config, FILE * fp,
|
static int _variables_print(Configure * configure, FILE * fp,
|
||||||
char const * input, char const * output);
|
char const * input, char const * output);
|
||||||
static int _variables_targets(Prefs * prefs, Config * config, FILE * fp);
|
static int _variables_targets(Configure * configure, FILE * fp);
|
||||||
static int _variables_executables(Configure * configure, Config * config,
|
static int _variables_executables(Configure * configure, FILE * fp);
|
||||||
FILE * fp);
|
static int _write_variables(Configure * configure, FILE * fp)
|
||||||
static int _write_variables(Configure * configure, Config * config, FILE * fp)
|
|
||||||
{
|
{
|
||||||
String const * directory = config_get(config, "", "directory");
|
String const * directory = config_get(configure->config, "",
|
||||||
|
"directory");
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
ret |= _variables_package(configure->prefs, config, fp, directory);
|
ret |= _variables_package(configure, fp, directory);
|
||||||
ret |= _variables_print(configure->prefs, config, fp, "subdirs",
|
ret |= _variables_print(configure, fp, "subdirs", "SUBDIRS");
|
||||||
"SUBDIRS");
|
ret |= _variables_targets(configure, fp);
|
||||||
ret |= _variables_targets(configure->prefs, config, fp);
|
ret |= _variables_executables(configure, fp);
|
||||||
ret |= _variables_executables(configure, config, fp);
|
|
||||||
if(!(configure->prefs->flags & PREFS_n))
|
if(!(configure->prefs->flags & PREFS_n))
|
||||||
fputc('\n', fp);
|
fputc('\n', fp);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int _variables_package(Prefs * prefs, Config * config, FILE * fp,
|
static int _variables_package(Configure * configure, FILE * fp,
|
||||||
String const * directory)
|
String const * directory)
|
||||||
{
|
{
|
||||||
String * package;
|
String * package;
|
||||||
String * version;
|
String * version;
|
||||||
String * p;
|
String * p;
|
||||||
|
|
||||||
if((package = config_get(config, "", "package")) == NULL)
|
if((package = config_get(configure->config, "", "package")) == NULL)
|
||||||
return 0;
|
return 0;
|
||||||
if(prefs->flags & PREFS_v)
|
if(configure->prefs->flags & PREFS_v)
|
||||||
printf("%s%s", "Package: ", package);
|
printf("%s%s", "Package: ", package);
|
||||||
if((version = config_get(config, "", "version")) == NULL)
|
if((version = config_get(configure->config, "", "version")) == NULL)
|
||||||
{
|
{
|
||||||
if(prefs->flags & PREFS_v)
|
if(configure->prefs->flags & PREFS_v)
|
||||||
fputc('\n', stdout);
|
fputc('\n', stdout);
|
||||||
fprintf(stderr, "%s%s%s", "configure: ", directory,
|
fprintf(stderr, "%s%s%s", "configure: ", directory,
|
||||||
": \"package\" needs \"version\"\n");
|
": \"package\" needs \"version\"\n");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
if(prefs->flags & PREFS_v)
|
if(configure->prefs->flags & PREFS_v)
|
||||||
printf("%s%s%s", " ", version, "\n");
|
printf("%s%s%s", " ", version, "\n");
|
||||||
if(fp != NULL)
|
if(fp != NULL)
|
||||||
fprintf(fp, "%s%s%s%s%s", "PACKAGE\t= ", package,
|
fprintf(fp, "%s%s%s%s%s", "PACKAGE\t= ", package,
|
||||||
"\nVERSION\t= ", version, "\n");
|
"\nVERSION\t= ", version, "\n");
|
||||||
if((p = config_get(config, "", "config")) != NULL)
|
if((p = config_get(configure->config, "", "config")) != NULL)
|
||||||
return settings(prefs, config, directory, package, version);
|
return settings(configure->prefs, configure->config, directory,
|
||||||
|
package, version);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int _variables_print(Prefs * prefs, Config * config, FILE * fp,
|
static int _variables_print(Configure * configure, FILE * fp,
|
||||||
char const * input, char const * output)
|
char const * input, char const * output)
|
||||||
{
|
{
|
||||||
String * prints;
|
String * prints;
|
||||||
unsigned long i;
|
unsigned long i;
|
||||||
char c;
|
char c;
|
||||||
|
|
||||||
if(prefs->flags & PREFS_n)
|
if(configure->prefs->flags & PREFS_n)
|
||||||
return 0;
|
return 0;
|
||||||
if((prints = config_get(config, "", input)) == NULL)
|
if((prints = config_get(configure->config, "", input)) == NULL)
|
||||||
return 0;
|
return 0;
|
||||||
fprintf(fp, "%s%s", output, "\t=");
|
fprintf(fp, "%s%s", output, "\t=");
|
||||||
for(i = 0;; i++)
|
for(i = 0;; i++)
|
||||||
@ -155,16 +157,16 @@ static int _variables_print(Prefs * prefs, Config * config, FILE * fp,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int _variables_targets(Prefs * prefs, Config * config, FILE * fp)
|
static int _variables_targets(Configure * configure, FILE * fp)
|
||||||
{
|
{
|
||||||
String * prints;
|
String * prints;
|
||||||
unsigned long i;
|
unsigned long i;
|
||||||
char c;
|
char c;
|
||||||
String * type;
|
String * type;
|
||||||
|
|
||||||
if(prefs->flags & PREFS_n)
|
if(configure->prefs->flags & PREFS_n)
|
||||||
return 0;
|
return 0;
|
||||||
if((prints = config_get(config, "", "targets")) == NULL)
|
if((prints = config_get(configure->config, "", "targets")) == NULL)
|
||||||
return 0;
|
return 0;
|
||||||
fprintf(fp, "%s%s", "TARGETS", "\t=");
|
fprintf(fp, "%s%s", "TARGETS", "\t=");
|
||||||
for(i = 0;; i++)
|
for(i = 0;; i++)
|
||||||
@ -173,7 +175,8 @@ static int _variables_targets(Prefs * prefs, Config * config, FILE * fp)
|
|||||||
continue;
|
continue;
|
||||||
c = prints[i];
|
c = prints[i];
|
||||||
prints[i] = '\0';
|
prints[i] = '\0';
|
||||||
if((type = config_get(config, prints, "type")) == NULL)
|
if((type = config_get(configure->config, prints, "type"))
|
||||||
|
== NULL)
|
||||||
fprintf(fp, " %s", prints);
|
fprintf(fp, " %s", prints);
|
||||||
else
|
else
|
||||||
switch(enum_string(TT_LAST, sTargetType, type))
|
switch(enum_string(TT_LAST, sTargetType, type))
|
||||||
@ -198,10 +201,9 @@ static int _variables_targets(Prefs * prefs, Config * config, FILE * fp)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int _executables_variables(Configure * configure, Config * config,
|
static int _executables_variables(Configure * configure, FILE * fp,
|
||||||
FILE * fp, String * target);
|
String * target);
|
||||||
static int _variables_executables(Configure * configure, Config * config,
|
static int _variables_executables(Configure * configure, FILE * fp)
|
||||||
FILE * fp)
|
|
||||||
{
|
{
|
||||||
String * targets;
|
String * targets;
|
||||||
int i;
|
int i;
|
||||||
@ -209,7 +211,7 @@ static int _variables_executables(Configure * configure, Config * config,
|
|||||||
|
|
||||||
if(configure->prefs->flags & PREFS_n)
|
if(configure->prefs->flags & PREFS_n)
|
||||||
return 0;
|
return 0;
|
||||||
if((targets = config_get(config, "", "targets")) != NULL)
|
if((targets = config_get(configure->config, "", "targets")) != NULL)
|
||||||
{
|
{
|
||||||
for(i = 0;; i++)
|
for(i = 0;; i++)
|
||||||
{
|
{
|
||||||
@ -217,7 +219,7 @@ static int _variables_executables(Configure * configure, Config * config,
|
|||||||
continue;
|
continue;
|
||||||
c = targets[i];
|
c = targets[i];
|
||||||
targets[i] = '\0';
|
targets[i] = '\0';
|
||||||
_executables_variables(configure, config, fp, targets);
|
_executables_variables(configure, fp, targets);
|
||||||
if(c == '\0')
|
if(c == '\0')
|
||||||
break;
|
break;
|
||||||
targets[i] = c;
|
targets[i] = c;
|
||||||
@ -226,7 +228,7 @@ static int _variables_executables(Configure * configure, Config * config,
|
|||||||
}
|
}
|
||||||
fprintf(fp, "%s", "RM\t= rm -f\n");
|
fprintf(fp, "%s", "RM\t= rm -f\n");
|
||||||
}
|
}
|
||||||
if(config_get(config, "", "package"))
|
if(config_get(configure->config, "", "package"))
|
||||||
fprintf(fp, "%s", "LN\t= ln -sf\nTAR\t= tar -czvf\n");
|
fprintf(fp, "%s", "LN\t= ln -sf\nTAR\t= tar -czvf\n");
|
||||||
if(targets != NULL)
|
if(targets != NULL)
|
||||||
{
|
{
|
||||||
@ -236,34 +238,32 @@ static int _variables_executables(Configure * configure, Config * config,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void _variables_binary(Configure * configure, Config * config, FILE * fp,
|
static void _variables_binary(Configure * configure, FILE * fp, char * done);
|
||||||
char * done);
|
static void _variables_library(Configure * configure, FILE * fp, char * done);
|
||||||
static void _variables_library(Configure * configure, Config * config,
|
static int _executables_variables(Configure * configure, FILE * fp,
|
||||||
FILE * fp, char * done);
|
String * target)
|
||||||
static int _executables_variables(Configure * configure, Config * config,
|
|
||||||
FILE * fp, String * target)
|
|
||||||
{
|
{
|
||||||
static Config * flag = NULL;
|
static Config * flag = NULL;
|
||||||
String * type;
|
String * type;
|
||||||
char done[TT_LAST]; /* FIXME even better if'd be variable by variable */
|
char done[TT_LAST]; /* FIXME even better if'd be variable by variable */
|
||||||
TargetType tt;
|
TargetType tt;
|
||||||
|
|
||||||
if(flag != config)
|
if(flag != configure->config)
|
||||||
{
|
{
|
||||||
flag = config;
|
flag = configure->config;
|
||||||
memset(done, 0, sizeof(done));
|
memset(done, 0, sizeof(done));
|
||||||
}
|
}
|
||||||
if((type = config_get(config, target, "type")) == NULL)
|
if((type = config_get(configure->config, target, "type")) == NULL)
|
||||||
return 0;
|
return 0;
|
||||||
if(done[(tt = enum_string(TT_LAST, sTargetType, type))])
|
if(done[(tt = enum_string(TT_LAST, sTargetType, type))])
|
||||||
return 0;
|
return 0;
|
||||||
switch(tt)
|
switch(tt)
|
||||||
{
|
{
|
||||||
case TT_BINARY:
|
case TT_BINARY:
|
||||||
_variables_binary(configure, config, fp, done);
|
_variables_binary(configure, fp, done);
|
||||||
break;
|
break;
|
||||||
case TT_LIBRARY:
|
case TT_LIBRARY:
|
||||||
_variables_library(configure, config, fp, done);
|
_variables_library(configure, fp, done);
|
||||||
break;
|
break;
|
||||||
case TT_OBJECT:
|
case TT_OBJECT:
|
||||||
case TT_UNKNOWN:
|
case TT_UNKNOWN:
|
||||||
@ -273,13 +273,11 @@ static int _executables_variables(Configure * configure, Config * config,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void _targets_cflags(Configure * configure, Config * config, FILE * fp);
|
static void _targets_cflags(Configure * configure, FILE * fp);
|
||||||
static void _targets_cxxflags(Configure * configure, Config * config,
|
static void _targets_cxxflags(Configure * configure, FILE * fp);
|
||||||
FILE * fp);
|
|
||||||
static void _binary_ldflags(Configure * configure, FILE * fp,
|
static void _binary_ldflags(Configure * configure, FILE * fp,
|
||||||
String const * ldflags);
|
String const * ldflags);
|
||||||
static void _variables_binary(Configure * configure, Config * config, FILE * fp,
|
static void _variables_binary(Configure * configure, FILE * fp, char * done)
|
||||||
char * done)
|
|
||||||
{
|
{
|
||||||
String const * p;
|
String const * p;
|
||||||
|
|
||||||
@ -301,34 +299,34 @@ static void _variables_binary(Configure * configure, Config * config, FILE * fp,
|
|||||||
configure->prefs->includedir);
|
configure->prefs->includedir);
|
||||||
if(!done[TT_LIBRARY])
|
if(!done[TT_LIBRARY])
|
||||||
{
|
{
|
||||||
_targets_cflags(configure, config, fp);
|
_targets_cflags(configure, fp);
|
||||||
_targets_cxxflags(configure, config, fp);
|
_targets_cxxflags(configure, fp);
|
||||||
}
|
}
|
||||||
if((p = config_get(config, "", "ldflags_force")) != NULL)
|
if((p = config_get(configure->config, "", "ldflags_force")) != NULL)
|
||||||
{
|
{
|
||||||
fprintf(fp, "%s", "LDFLAGSF= ");
|
fprintf(fp, "%s", "LDFLAGSF= ");
|
||||||
_binary_ldflags(configure, fp, p);
|
_binary_ldflags(configure, fp, p);
|
||||||
}
|
}
|
||||||
if((p = config_get(config, "", "ldflags")) != NULL)
|
if((p = config_get(configure->config, "", "ldflags")) != NULL)
|
||||||
{
|
{
|
||||||
fprintf(fp, "%s", "LDFLAGS\t= ");
|
fprintf(fp, "%s", "LDFLAGS\t= ");
|
||||||
_binary_ldflags(configure, fp, p);
|
_binary_ldflags(configure, fp, p);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void _targets_cflags(Configure * configure, Config * config, FILE * fp)
|
static void _targets_cflags(Configure * configure, FILE * fp)
|
||||||
{
|
{
|
||||||
String const * p;
|
String const * p;
|
||||||
String const * q;
|
String const * q;
|
||||||
|
|
||||||
if((p = config_get(config, "", "cflags_force")) != NULL)
|
if((p = config_get(configure->config, "", "cflags_force")) != NULL)
|
||||||
{
|
{
|
||||||
fprintf(fp, "%s%s", "CC\t= cc\nCFLAGSF\t= ", p);
|
fprintf(fp, "%s%s", "CC\t= cc\nCFLAGSF\t= ", p);
|
||||||
if(configure->os == HO_GNU_LINUX && string_find(p, "-ansi"))
|
if(configure->os == HO_GNU_LINUX && string_find(p, "-ansi"))
|
||||||
fprintf(fp, "%s", " -D_GNU_SOURCE");
|
fprintf(fp, "%s", " -D_GNU_SOURCE"); /* FIXME undup */
|
||||||
fputc('\n', fp);
|
fputc('\n', fp);
|
||||||
}
|
}
|
||||||
if((q = config_get(config, "", "cflags")) != NULL)
|
if((q = config_get(configure->config, "", "cflags")) != NULL)
|
||||||
{
|
{
|
||||||
if(p == NULL)
|
if(p == NULL)
|
||||||
fprintf(fp, "%s", "CC\t= cc\n");
|
fprintf(fp, "%s", "CC\t= cc\n");
|
||||||
@ -339,19 +337,19 @@ static void _targets_cflags(Configure * configure, Config * config, FILE * fp)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void _targets_cxxflags(Configure * configure, Config * config, FILE * fp)
|
static void _targets_cxxflags(Configure * configure, FILE * fp)
|
||||||
{
|
{
|
||||||
String const * p;
|
String const * p;
|
||||||
String const * q;
|
String const * q;
|
||||||
|
|
||||||
if((p = config_get(config, "", "cxxflags_force")) != NULL)
|
if((p = config_get(configure->config, "", "cxxflags_force")) != NULL)
|
||||||
{
|
{
|
||||||
fprintf(fp, "%s%s", "CXX\t= c++\nCXXFLAGSF= ", p);
|
fprintf(fp, "%s%s", "CXX\t= c++\nCXXFLAGSF= ", p);
|
||||||
if(configure->os == HO_GNU_LINUX && string_find(p, "-ansi"))
|
if(configure->os == HO_GNU_LINUX && string_find(p, "-ansi"))
|
||||||
fprintf(fp, "%s", " -D_GNU_SOURCE");
|
fprintf(fp, "%s", " -D_GNU_SOURCE");
|
||||||
fputc('\n', fp);
|
fputc('\n', fp);
|
||||||
}
|
}
|
||||||
if((q = config_get(config, "", "cxxflags")) != NULL)
|
if((q = config_get(configure->config, "", "cxxflags")) != NULL)
|
||||||
{
|
{
|
||||||
if(p == NULL)
|
if(p == NULL)
|
||||||
fprintf(fp, "%s", "CXX\t= c++\n");
|
fprintf(fp, "%s", "CXX\t= c++\n");
|
||||||
@ -370,7 +368,7 @@ static void _binary_ldflags(Configure * configure, FILE * fp,
|
|||||||
char * libs_sunos[] = { "dl", NULL };
|
char * libs_sunos[] = { "dl", NULL };
|
||||||
char buf[10];
|
char buf[10];
|
||||||
char ** libs;
|
char ** libs;
|
||||||
char * p;
|
String * p;
|
||||||
String * q;
|
String * q;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
@ -407,8 +405,7 @@ static void _binary_ldflags(Configure * configure, FILE * fp,
|
|||||||
free(p);
|
free(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void _variables_library(Configure * configure, Config * config,
|
static void _variables_library(Configure * configure, FILE * fp, char * done)
|
||||||
FILE * fp, char * done)
|
|
||||||
{
|
{
|
||||||
if(!done[TT_LIBRARY])
|
if(!done[TT_LIBRARY])
|
||||||
{
|
{
|
||||||
@ -422,27 +419,26 @@ static void _variables_library(Configure * configure, Config * config,
|
|||||||
configure->prefs->libdir);
|
configure->prefs->libdir);
|
||||||
if(!done[TT_BINARY])
|
if(!done[TT_BINARY])
|
||||||
{
|
{
|
||||||
_targets_cflags(configure, config, fp);
|
_targets_cflags(configure, fp);
|
||||||
_targets_cxxflags(configure, config, fp);
|
_targets_cxxflags(configure, fp);
|
||||||
}
|
}
|
||||||
fprintf(fp, "%s", "AR\t= ar -rc\n");
|
fprintf(fp, "%s", "AR\t= ar -rc\n");
|
||||||
fprintf(fp, "%s", "RANLIB\t= ranlib\n");
|
fprintf(fp, "%s", "RANLIB\t= ranlib\n");
|
||||||
fprintf(fp, "%s", "LD\t= ld -shared\n");
|
fprintf(fp, "%s", "LD\t= ld -shared\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
static int _targets_all(Prefs * prefs, Config * config, FILE * fp);
|
static int _targets_all(Configure * configure, FILE * fp);
|
||||||
static int _targets_subdirs(Prefs * prefs, Config * config, FILE * fp);
|
static int _targets_subdirs(Configure * configure, FILE * fp);
|
||||||
static int _targets_target(Prefs * prefs, Config * config, FILE * fp,
|
static int _targets_target(Configure * configure, FILE * fp, String * target);
|
||||||
String * target);
|
static int _write_targets(Configure * configure, FILE * fp)
|
||||||
static int _write_targets(Prefs * prefs, Config * config, FILE * fp)
|
|
||||||
{
|
{
|
||||||
char * targets = config_get(config, "", "targets");
|
char * targets = config_get(configure->config, "", "targets");
|
||||||
char c;
|
char c;
|
||||||
int i;
|
int i;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
if(_targets_all(prefs, config, fp) != 0
|
if(_targets_all(configure, fp) != 0
|
||||||
|| _targets_subdirs(prefs, config, fp) != 0)
|
|| _targets_subdirs(configure, fp) != 0)
|
||||||
return 1;
|
return 1;
|
||||||
if(targets == NULL)
|
if(targets == NULL)
|
||||||
return 0;
|
return 0;
|
||||||
@ -452,7 +448,7 @@ static int _write_targets(Prefs * prefs, Config * config, FILE * fp)
|
|||||||
continue;
|
continue;
|
||||||
c = targets[i];
|
c = targets[i];
|
||||||
targets[i] = '\0';
|
targets[i] = '\0';
|
||||||
ret += _targets_target(prefs, config, fp, targets);
|
ret += _targets_target(configure, fp, targets);
|
||||||
if(c == '\0')
|
if(c == '\0')
|
||||||
break;
|
break;
|
||||||
targets[i] = c;
|
targets[i] = c;
|
||||||
@ -462,45 +458,41 @@ static int _write_targets(Prefs * prefs, Config * config, FILE * fp)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int _targets_all(Prefs * prefs, Config * config, FILE * fp)
|
static int _targets_all(Configure * configure, FILE * fp)
|
||||||
{
|
{
|
||||||
if(prefs->flags & PREFS_n)
|
if(configure->prefs->flags & PREFS_n)
|
||||||
return 0;
|
return 0;
|
||||||
fprintf(fp, "%s", "\nall:");
|
fprintf(fp, "%s", "\nall:");
|
||||||
if(config_get(config, "", "subdirs") != NULL)
|
if(config_get(configure->config, "", "subdirs") != NULL)
|
||||||
fprintf(fp, "%s", " subdirs");
|
fprintf(fp, "%s", " subdirs");
|
||||||
if(config_get(config, "", "targets") != NULL)
|
if(config_get(configure->config, "", "targets") != NULL)
|
||||||
fprintf(fp, "%s", " $(TARGETS)");
|
fprintf(fp, "%s", " $(TARGETS)");
|
||||||
fprintf(fp, "%s", "\n");
|
fprintf(fp, "%s", "\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int _targets_subdirs(Prefs * prefs, Config * config, FILE * fp)
|
static int _targets_subdirs(Configure * configure, FILE * fp)
|
||||||
{
|
{
|
||||||
String * subdirs;
|
String * subdirs;
|
||||||
|
|
||||||
if(prefs->flags & PREFS_n)
|
if(configure->prefs->flags & PREFS_n)
|
||||||
return 0;
|
return 0;
|
||||||
if((subdirs = config_get(config, "", "subdirs")) != NULL)
|
if((subdirs = config_get(configure->config, "", "subdirs")) != NULL)
|
||||||
fprintf(fp, "%s", "\nsubdirs:\n\t@for i in $(SUBDIRS); do"
|
fprintf(fp, "%s", "\nsubdirs:\n\t@for i in $(SUBDIRS); do"
|
||||||
" (cd $$i && $(MAKE)) || exit; done\n");
|
" (cd $$i && $(MAKE)) || exit; done\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int _target_objs(Prefs * prefs, Config * config, FILE * fp,
|
static int _target_objs(Configure * configure, FILE * fp, String * target);
|
||||||
String * target);
|
static int _target_binary(Configure * configure, FILE * fp, String * target);
|
||||||
static int _target_binary(Prefs * prefs, Config * config, FILE * fp,
|
static int _target_library(Configure * configure, FILE * fp, String * target);
|
||||||
String * target);
|
static int _targets_target(Configure * configure, FILE * fp, String * target)
|
||||||
static int _target_library(Prefs * prefs, Config * config, FILE * fp,
|
|
||||||
String * target);
|
|
||||||
static int _targets_target(Prefs * prefs, Config * config, FILE * fp,
|
|
||||||
String * target)
|
|
||||||
{
|
{
|
||||||
String * type;
|
String * type;
|
||||||
TargetType tt;
|
TargetType tt;
|
||||||
String * p;
|
String * p;
|
||||||
|
|
||||||
if((type = config_get(config, target, "type")) == NULL)
|
if((type = config_get(configure->config, target, "type")) == NULL)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "%s%s%s", "configure: ", target,
|
fprintf(stderr, "%s%s%s", "configure: ", target,
|
||||||
": no type defined for target\n");
|
": no type defined for target\n");
|
||||||
@ -510,17 +502,18 @@ static int _targets_target(Prefs * prefs, Config * config, FILE * fp,
|
|||||||
switch(tt)
|
switch(tt)
|
||||||
{
|
{
|
||||||
case TT_BINARY:
|
case TT_BINARY:
|
||||||
return _target_binary(prefs, config, fp, target);
|
return _target_binary(configure, fp, target);
|
||||||
case TT_LIBRARY:
|
case TT_LIBRARY:
|
||||||
return _target_library(prefs, config, fp, target);
|
return _target_library(configure, fp, target);
|
||||||
case TT_OBJECT:
|
case TT_OBJECT:
|
||||||
if((p = config_get(config, target, "sources")) == NULL)
|
if((p = config_get(configure->config, target,
|
||||||
|
"sources")) == NULL)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "%s%s%s", "configure: ", target,
|
fprintf(stderr, "%s%s%s", "configure: ", target,
|
||||||
" no sources for target\n");
|
" no sources for target\n");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
if(prefs->flags & PREFS_n)
|
if(configure->prefs->flags & PREFS_n)
|
||||||
return 0;
|
return 0;
|
||||||
fprintf(fp, "%s%s%s%s", target, ": ", p, "\n");
|
fprintf(fp, "%s%s%s%s", target, ": ", p, "\n");
|
||||||
/* FIXME */
|
/* FIXME */
|
||||||
@ -534,21 +527,20 @@ static int _targets_target(Prefs * prefs, Config * config, FILE * fp,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int _objs_source(Prefs * prefs, FILE * fp, String * source);
|
static int _objs_source(Prefs * prefs, FILE * fp, String * source);
|
||||||
static int _target_objs(Prefs * prefs, Config * config, FILE * fp,
|
static int _target_objs(Configure * configure, FILE * fp, String * target)
|
||||||
String * target)
|
|
||||||
{
|
{
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
String * sources;
|
String * sources;
|
||||||
int i;
|
int i;
|
||||||
char c;
|
char c;
|
||||||
|
|
||||||
if((sources = config_get(config, target, "sources")) == NULL)
|
if((sources = config_get(configure->config, target, "sources")) == NULL)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "%s%s%s", "configure: ", target,
|
fprintf(stderr, "%s%s%s", "configure: ", target,
|
||||||
": no sources defined for target\n");
|
": no sources defined for target\n");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
if(!(prefs->flags & PREFS_n))
|
if(!(configure->prefs->flags & PREFS_n))
|
||||||
fprintf(fp, "%s%s%s", "\n", target, "_OBJS =");
|
fprintf(fp, "%s%s%s", "\n", target, "_OBJS =");
|
||||||
for(i = 0; ret == 0; i++)
|
for(i = 0; ret == 0; i++)
|
||||||
{
|
{
|
||||||
@ -556,14 +548,14 @@ static int _target_objs(Prefs * prefs, Config * config, FILE * fp,
|
|||||||
continue;
|
continue;
|
||||||
c = sources[i];
|
c = sources[i];
|
||||||
sources[i] = '\0';
|
sources[i] = '\0';
|
||||||
ret = _objs_source(prefs, fp, sources);
|
ret = _objs_source(configure->prefs, fp, sources);
|
||||||
if(c == '\0')
|
if(c == '\0')
|
||||||
break;
|
break;
|
||||||
sources[i] = c;
|
sources[i] = c;
|
||||||
sources+=i+1;
|
sources+=i+1;
|
||||||
i = 0;
|
i = 0;
|
||||||
}
|
}
|
||||||
if(!(prefs->flags & PREFS_n))
|
if(!(configure->prefs->flags & PREFS_n))
|
||||||
fputc('\n', fp);
|
fputc('\n', fp);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -606,29 +598,28 @@ static int _objs_source(Prefs * prefs, FILE * fp, String * source)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void _target_flags(Config * config, FILE * fp, String * target);
|
static void _target_flags(Configure * configure, FILE * fp, String * target);
|
||||||
static int _target_binary(Prefs * prefs, Config * config, FILE * fp,
|
static int _target_binary(Configure * configure, FILE * fp, String * target)
|
||||||
String * target)
|
|
||||||
{
|
{
|
||||||
String * p;
|
String * p;
|
||||||
|
|
||||||
if(_target_objs(prefs, config, fp, target) != 0)
|
if(_target_objs(configure, fp, target) != 0)
|
||||||
return 1;
|
return 1;
|
||||||
if(prefs->flags & PREFS_n)
|
if(configure->prefs->flags & PREFS_n)
|
||||||
return 0;
|
return 0;
|
||||||
_target_flags(config, fp, target);
|
_target_flags(configure, fp, target);
|
||||||
fprintf(fp, "%s%s%s%s", target, ": $(", target, "_OBJS)\n");
|
fprintf(fp, "%s%s%s%s", target, ": $(", target, "_OBJS)\n");
|
||||||
fprintf(fp, "%s", "\t$(CC) $(LDFLAGSF)");
|
fprintf(fp, "%s", "\t$(CC) $(LDFLAGSF)");
|
||||||
if((p = config_get(config, target, "ldflags")) != NULL)
|
if((p = config_get(configure->config, target, "ldflags")) != NULL)
|
||||||
fprintf(fp, " %s", p);
|
fprintf(fp, " %s", p);
|
||||||
fprintf(fp, "%s%s%s%s%s", " $(LDFLAGS) -o ", target, " $(", target,
|
fprintf(fp, "%s%s%s%s%s", " $(LDFLAGS) -o ", target, " $(", target,
|
||||||
"_OBJS)\n");
|
"_OBJS)\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void _flags_c(Config * config, FILE * fp, String * target);
|
static void _flags_c(Configure * configure, FILE * fp, String * target);
|
||||||
static void _flags_cxx(Config * config, FILE * fp, String * target);
|
static void _flags_cxx(Configure * configure, FILE * fp, String * target);
|
||||||
static void _target_flags(Config * config, FILE * fp, String * target)
|
static void _target_flags(Configure * configure, FILE * fp, String * target)
|
||||||
{
|
{
|
||||||
char done[OT_LAST+1];
|
char done[OT_LAST+1];
|
||||||
String * sources;
|
String * sources;
|
||||||
@ -638,7 +629,7 @@ static void _target_flags(Config * config, FILE * fp, String * target)
|
|||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
|
||||||
memset(done, 0, sizeof(done));
|
memset(done, 0, sizeof(done));
|
||||||
if((sources = config_get(config, target, "sources")) == NULL)
|
if((sources = config_get(configure->config, target, "sources")) == NULL)
|
||||||
return;
|
return;
|
||||||
for(i = 0;; i++)
|
for(i = 0;; i++)
|
||||||
{
|
{
|
||||||
@ -660,13 +651,13 @@ static void _target_flags(Config * config, FILE * fp, String * target)
|
|||||||
case OT_ASM_SOURCE:
|
case OT_ASM_SOURCE:
|
||||||
break;
|
break;
|
||||||
case OT_C_SOURCE:
|
case OT_C_SOURCE:
|
||||||
_flags_c(config, fp, target);
|
_flags_c(configure, fp, target);
|
||||||
break;
|
break;
|
||||||
case OT_CXX_SOURCE:
|
case OT_CXX_SOURCE:
|
||||||
case OT_CPP_SOURCE:
|
case OT_CPP_SOURCE:
|
||||||
done[OT_CXX_SOURCE] = 1;
|
done[OT_CXX_SOURCE] = 1;
|
||||||
done[OT_CPP_SOURCE] = 1;
|
done[OT_CPP_SOURCE] = 1;
|
||||||
_flags_cxx(config, fp, target);
|
_flags_cxx(configure, fp, target);
|
||||||
break;
|
break;
|
||||||
case OT_UNKNOWN:
|
case OT_UNKNOWN:
|
||||||
break;
|
break;
|
||||||
@ -679,34 +670,35 @@ static void _target_flags(Config * config, FILE * fp, String * target)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void _flags_c(Config * config, FILE * fp, String * target)
|
static void _flags_c(Configure * configure, FILE * fp, String * target)
|
||||||
{
|
{
|
||||||
char * p;
|
String const * p;
|
||||||
|
|
||||||
fprintf(fp, "%s%s", target, "_CFLAGS = $(CFLAGSF) $(CFLAGS)");
|
fprintf(fp, "%s%s", target, "_CFLAGS = $(CFLAGSF) $(CFLAGS)");
|
||||||
if((p = config_get(config, target, "cflags")) != NULL)
|
if((p = config_get(configure->config, target, "cflags")) != NULL)
|
||||||
fprintf(fp, " %s", p);
|
fprintf(fp, " %s", p);
|
||||||
|
if(configure->os == HO_GNU_LINUX && string_find(p, "-ansi"))
|
||||||
|
fprintf(fp, "%s", " -D_GNU_SOURCE");
|
||||||
fputc('\n', fp);
|
fputc('\n', fp);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void _flags_cxx(Config * config, FILE * fp, String * target)
|
static void _flags_cxx(Configure * configure, FILE * fp, String * target)
|
||||||
{
|
{
|
||||||
char * p;
|
String const * p;
|
||||||
|
|
||||||
fprintf(fp, "%s%s", target, "_CXXFLAGS = $(CXXFLAGSF) $(CXXFLAGS)");
|
fprintf(fp, "%s%s", target, "_CXXFLAGS = $(CXXFLAGSF) $(CXXFLAGS)");
|
||||||
if((p = config_get(config, target, "cxxflags")) != NULL)
|
if((p = config_get(configure->config, target, "cxxflags")) != NULL)
|
||||||
fprintf(fp, " %s", p);
|
fprintf(fp, " %s", p);
|
||||||
fputc('\n', fp);
|
fputc('\n', fp);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int _target_library(Prefs * prefs, Config * config, FILE * fp,
|
static int _target_library(Configure * configure, FILE * fp, String * target)
|
||||||
String * target)
|
|
||||||
{
|
{
|
||||||
if(_target_objs(prefs, config, fp, target) != 0)
|
if(_target_objs(configure, fp, target) != 0)
|
||||||
return 1;
|
return 1;
|
||||||
if(prefs->flags & PREFS_n)
|
if(configure->prefs->flags & PREFS_n)
|
||||||
return 0;
|
return 0;
|
||||||
_target_flags(config, fp, target);
|
_target_flags(configure, fp, target);
|
||||||
fprintf(fp, "%s%s%s%s", target, ".a: $(", target, "_OBJS)\n");
|
fprintf(fp, "%s%s%s%s", target, ".a: $(", target, "_OBJS)\n");
|
||||||
fprintf(fp, "%s%s%s%s%s", "\t$(AR) ", target, ".a $(", target,
|
fprintf(fp, "%s%s%s%s%s", "\t$(AR) ", target, ".a $(", target,
|
||||||
"_OBJS)\n");
|
"_OBJS)\n");
|
||||||
@ -717,11 +709,10 @@ static int _target_library(Prefs * prefs, Config * config, FILE * fp,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int _objects_target(Prefs * prefs, Config * config, FILE * fp,
|
static int _objects_target(Configure * configure, FILE * fp, String * target);
|
||||||
String * target);
|
static int _write_objects(Configure * configure, FILE * fp)
|
||||||
static int _write_objects(Prefs * prefs, Config * config, FILE * fp)
|
|
||||||
{
|
{
|
||||||
char * targets = config_get(config, "", "targets");
|
char * targets = config_get(configure->config, "", "targets");
|
||||||
char c;
|
char c;
|
||||||
int i;
|
int i;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
@ -734,7 +725,7 @@ static int _write_objects(Prefs * prefs, Config * config, FILE * fp)
|
|||||||
continue;
|
continue;
|
||||||
c = targets[i];
|
c = targets[i];
|
||||||
targets[i] = '\0';
|
targets[i] = '\0';
|
||||||
ret += _objects_target(prefs, config, fp, targets);
|
ret += _objects_target(configure, fp, targets);
|
||||||
if(c == '\0')
|
if(c == '\0')
|
||||||
break;
|
break;
|
||||||
targets[i] = c;
|
targets[i] = c;
|
||||||
@ -744,16 +735,15 @@ static int _write_objects(Prefs * prefs, Config * config, FILE * fp)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int _target_source(Prefs * prefs, Config * config, FILE * fp,
|
static int _target_source(Configure * configure, FILE * fp, String * target,
|
||||||
String * target, String * source);
|
String * source);
|
||||||
static int _objects_target(Prefs * prefs, Config * config, FILE * fp,
|
static int _objects_target(Configure * configure, FILE * fp, String * target)
|
||||||
String * target)
|
|
||||||
{
|
{
|
||||||
String * sources;
|
String * sources;
|
||||||
int i;
|
int i;
|
||||||
char c;
|
char c;
|
||||||
|
|
||||||
if((sources = config_get(config, target, "sources")) == NULL)
|
if((sources = config_get(configure->config, target, "sources")) == NULL)
|
||||||
return 0;
|
return 0;
|
||||||
for(i = 0;; i++)
|
for(i = 0;; i++)
|
||||||
{
|
{
|
||||||
@ -761,7 +751,7 @@ static int _objects_target(Prefs * prefs, Config * config, FILE * fp,
|
|||||||
continue;
|
continue;
|
||||||
c = sources[i];
|
c = sources[i];
|
||||||
sources[i] = '\0';
|
sources[i] = '\0';
|
||||||
_target_source(prefs, config, fp, target, sources);
|
_target_source(configure, fp, target, sources);
|
||||||
if(c == '\0')
|
if(c == '\0')
|
||||||
break;
|
break;
|
||||||
sources[i] = c;
|
sources[i] = c;
|
||||||
@ -772,8 +762,8 @@ static int _objects_target(Prefs * prefs, Config * config, FILE * fp,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void _source_c_depends(Config * config, FILE * fp, String * source);
|
static void _source_c_depends(Config * config, FILE * fp, String * source);
|
||||||
static int _target_source(Prefs * prefs, Config * config, FILE * fp,
|
static int _target_source(Configure * configure, FILE * fp, String * target,
|
||||||
String * target, String * source)
|
String * source)
|
||||||
{
|
{
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
String * extension;
|
String * extension;
|
||||||
@ -789,18 +779,23 @@ static int _target_source(Prefs * prefs, Config * config, FILE * fp,
|
|||||||
{
|
{
|
||||||
case OT_ASM_SOURCE:
|
case OT_ASM_SOURCE:
|
||||||
case OT_C_SOURCE:
|
case OT_C_SOURCE:
|
||||||
if(prefs->flags & PREFS_n)
|
if(configure->prefs->flags & PREFS_n)
|
||||||
break;
|
break;
|
||||||
fprintf(fp, "%s%s%s%s%s%s", "\n", source, ".o: ",
|
fprintf(fp, "%s%s%s%s%s%s", "\n", source, ".o: ",
|
||||||
source, ".", sObjectType[ot]);
|
source, ".", sObjectType[ot]);
|
||||||
source[len] = '.'; /* FIXME ugly */
|
source[len] = '.'; /* FIXME ugly */
|
||||||
_source_c_depends(config, fp, source);
|
_source_c_depends(configure->config, fp, source);
|
||||||
p = config_get(config, source, "cflags");
|
p = config_get(configure->config, source, "cflags");
|
||||||
source[len] = '\0';
|
source[len] = '\0';
|
||||||
fprintf(fp, "%s%s%s", "\n\t$(CC) $(", target,
|
fprintf(fp, "%s%s%s", "\n\t$(CC) $(", target,
|
||||||
"_CFLAGS)");
|
"_CFLAGS)");
|
||||||
if(p != NULL)
|
if(p != NULL)
|
||||||
|
{
|
||||||
fprintf(fp, " %s", p);
|
fprintf(fp, " %s", p);
|
||||||
|
if(configure->os == HO_GNU_LINUX
|
||||||
|
&& string_find(p, "-ansi"))
|
||||||
|
fprintf(fp, "%s", " -D_GNU_SOURCE");
|
||||||
|
}
|
||||||
fprintf(fp, "%s%s%s%s", " -c ", source, ".",
|
fprintf(fp, "%s%s%s%s", " -c ", source, ".",
|
||||||
sObjectType[ot]);
|
sObjectType[ot]);
|
||||||
if(string_find(source, "/"))
|
if(string_find(source, "/"))
|
||||||
@ -809,13 +804,13 @@ static int _target_source(Prefs * prefs, Config * config, FILE * fp,
|
|||||||
break;
|
break;
|
||||||
case OT_CXX_SOURCE:
|
case OT_CXX_SOURCE:
|
||||||
case OT_CPP_SOURCE:
|
case OT_CPP_SOURCE:
|
||||||
if(prefs->flags & PREFS_n)
|
if(configure->prefs->flags & PREFS_n)
|
||||||
break;
|
break;
|
||||||
fprintf(fp, "%s%s%s%s%s%s", "\n", source, ".o: ",
|
fprintf(fp, "%s%s%s%s%s%s", "\n", source, ".o: ",
|
||||||
source, ".", sObjectType[ot]);
|
source, ".", sObjectType[ot]);
|
||||||
source[len] = '.'; /* FIXME ugly */
|
source[len] = '.'; /* FIXME ugly */
|
||||||
_source_c_depends(config, fp, source);
|
_source_c_depends(configure->config, fp, source);
|
||||||
p = config_get(config, source, "cxxflags");
|
p = config_get(configure->config, source, "cxxflags");
|
||||||
source[len] = '\0';
|
source[len] = '\0';
|
||||||
fprintf(fp, "%s%s%s", "\n\t$(CXX) $(", target,
|
fprintf(fp, "%s%s%s", "\n\t$(CXX) $(", target,
|
||||||
"_CXXFLAGS)");
|
"_CXXFLAGS)");
|
||||||
@ -859,15 +854,15 @@ static void _source_c_depends(Config * config, FILE * fp, String * source)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int _clean_targets(Config * config, FILE * fp);
|
static int _clean_targets(Config * config, FILE * fp);
|
||||||
static int _write_clean(Prefs * prefs, Config * config, FILE * fp)
|
static int _write_clean(Configure * configure, FILE * fp)
|
||||||
{
|
{
|
||||||
if(prefs->flags & PREFS_n)
|
if(configure->prefs->flags & PREFS_n)
|
||||||
return 0;
|
return 0;
|
||||||
fprintf(fp, "%s", "\nclean:\n");
|
fprintf(fp, "%s", "\nclean:\n");
|
||||||
if(config_get(config, "", "subdirs") != NULL)
|
if(config_get(configure->config, "", "subdirs") != NULL)
|
||||||
fprintf(fp, "%s", "\t@for i in $(SUBDIRS); do"
|
fprintf(fp, "%s", "\t@for i in $(SUBDIRS); do"
|
||||||
" (cd $$i && $(MAKE) clean) || exit; done\n");
|
" (cd $$i && $(MAKE) clean) || exit; done\n");
|
||||||
return _clean_targets(config, fp);
|
return _clean_targets(configure->config, fp);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int _clean_targets(Config * config, FILE * fp)
|
static int _clean_targets(Config * config, FILE * fp)
|
||||||
@ -896,40 +891,40 @@ static int _clean_targets(Config * config, FILE * fp)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int _write_distclean(Prefs * prefs, Config * config, FILE * fp)
|
static int _write_distclean(Configure * configure, FILE * fp)
|
||||||
{
|
{
|
||||||
String * subdirs;
|
String * subdirs;
|
||||||
|
|
||||||
if(prefs->flags & PREFS_n)
|
if(configure->prefs->flags & PREFS_n)
|
||||||
return 0;
|
return 0;
|
||||||
fprintf(fp, "%s", "\ndistclean:");
|
fprintf(fp, "%s", "\ndistclean:");
|
||||||
if((subdirs = config_get(config, "", "subdirs")) == NULL)
|
if((subdirs = config_get(configure->config, "", "subdirs")) == NULL)
|
||||||
fprintf(fp, "%s", " clean\n");
|
fprintf(fp, "%s", " clean\n");
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
fprintf(fp, "%s", "\n\t@for i in $(SUBDIRS); do (cd $$i"
|
fprintf(fp, "%s", "\n\t@for i in $(SUBDIRS); do (cd $$i"
|
||||||
" && $(MAKE) distclean) || exit; done\n");
|
" && $(MAKE) distclean) || exit; done\n");
|
||||||
_clean_targets(config, fp);
|
_clean_targets(configure->config, fp);
|
||||||
}
|
}
|
||||||
if(config_get(config, "", "targets") != NULL)
|
if(config_get(configure->config, "", "targets") != NULL)
|
||||||
fprintf(fp, "%s", "\t$(RM) $(TARGETS)\n");
|
fprintf(fp, "%s", "\t$(RM) $(TARGETS)\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int _dist_subdir(Config * config, FILE * fp, Config * subdir);
|
static int _dist_subdir(Config * config, FILE * fp, Config * subdir);
|
||||||
static int _write_dist(Prefs * prefs, Config * config, FILE * fp,
|
static int _write_dist(Configure * configure, FILE * fp, configArray * ca,
|
||||||
configArray * ca, int from, int to)
|
int from, int to)
|
||||||
{
|
{
|
||||||
String const * package;
|
String const * package;
|
||||||
String const * version;
|
String const * version;
|
||||||
Config * p;
|
Config * p;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if(prefs->flags & PREFS_n)
|
if(configure->prefs->flags & PREFS_n)
|
||||||
return 0;
|
return 0;
|
||||||
if((package = config_get(config, "", "package")) == NULL
|
if((package = config_get(configure->config, "", "package")) == NULL
|
||||||
|| (version = config_get(config, "", "version"))
|
|| (version = config_get(configure->config, "",
|
||||||
== NULL)
|
"version")) == NULL)
|
||||||
return 0;
|
return 0;
|
||||||
fprintf(fp, "%s", "\ndist:\n"
|
fprintf(fp, "%s", "\ndist:\n"
|
||||||
"\t$(RM) -r $(PACKAGE)-$(VERSION)\n"
|
"\t$(RM) -r $(PACKAGE)-$(VERSION)\n"
|
||||||
@ -938,12 +933,12 @@ static int _write_dist(Prefs * prefs, Config * config, FILE * fp,
|
|||||||
for(i = from+1; i < to; i++)
|
for(i = from+1; i < to; i++)
|
||||||
{
|
{
|
||||||
array_get_copy(ca, i, &p);
|
array_get_copy(ca, i, &p);
|
||||||
_dist_subdir(config, fp, p);
|
_dist_subdir(configure->config, fp, p);
|
||||||
}
|
}
|
||||||
if(from < to)
|
if(from < to)
|
||||||
{
|
{
|
||||||
array_get_copy(ca, from, &p);
|
array_get_copy(ca, from, &p);
|
||||||
_dist_subdir(config, fp, p);
|
_dist_subdir(configure->config, fp, p);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return 1;
|
return 1;
|
||||||
@ -1016,7 +1011,7 @@ static int _dist_subdir_dist(FILE * fp, String * path, String * dist)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int _install_target(Config * config, FILE * fp, String * target);
|
static int _install_target(Config * config, FILE * fp, String * target);
|
||||||
static int _write_install(Prefs * prefs, Config * config, FILE * fp)
|
static int _write_install(Configure * configure, FILE * fp)
|
||||||
{
|
{
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
String * subdirs;
|
String * subdirs;
|
||||||
@ -1024,20 +1019,20 @@ static int _write_install(Prefs * prefs, Config * config, FILE * fp)
|
|||||||
int i;
|
int i;
|
||||||
char c;
|
char c;
|
||||||
|
|
||||||
if(prefs->flags & PREFS_n)
|
if(configure->prefs->flags & PREFS_n)
|
||||||
return 0;
|
return 0;
|
||||||
fprintf(fp, "%s", "\ninstall: all\n");
|
fprintf(fp, "%s", "\ninstall: all\n");
|
||||||
if((subdirs = config_get(config, "", "subdirs")) != NULL)
|
if((subdirs = config_get(configure->config, "", "subdirs")) != NULL)
|
||||||
fprintf(fp, "%s", "\t@for i in $(SUBDIRS); do"
|
fprintf(fp, "%s", "\t@for i in $(SUBDIRS); do"
|
||||||
" (cd $$i && $(MAKE) install) || exit; done\n");
|
" (cd $$i && $(MAKE) install) || exit; done\n");
|
||||||
if((targets = config_get(config, "", "targets")) != NULL)
|
if((targets = config_get(configure->config, "", "targets")) != NULL)
|
||||||
for(i = 0; ret == 0; i++)
|
for(i = 0; ret == 0; i++)
|
||||||
{
|
{
|
||||||
if(targets[i] != ',' && targets[i] != '\0')
|
if(targets[i] != ',' && targets[i] != '\0')
|
||||||
continue;
|
continue;
|
||||||
c = targets[i];
|
c = targets[i];
|
||||||
targets[i] = '\0';
|
targets[i] = '\0';
|
||||||
ret = _install_target(config, fp, targets);
|
ret = _install_target(configure->config, fp, targets);
|
||||||
if(c == '\0')
|
if(c == '\0')
|
||||||
break;
|
break;
|
||||||
targets[i] = c;
|
targets[i] = c;
|
||||||
@ -1091,7 +1086,7 @@ static int _install_target(Config * config, FILE * fp, String * target)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int _uninstall_target(Config * config, FILE * fp, String * target);
|
static int _uninstall_target(Config * config, FILE * fp, String * target);
|
||||||
static int _write_uninstall(Prefs * prefs, Config * config, FILE * fp)
|
static int _write_uninstall(Configure * configure, FILE * fp)
|
||||||
{
|
{
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
String * subdirs;
|
String * subdirs;
|
||||||
@ -1099,20 +1094,20 @@ static int _write_uninstall(Prefs * prefs, Config * config, FILE * fp)
|
|||||||
int i;
|
int i;
|
||||||
char c;
|
char c;
|
||||||
|
|
||||||
if(prefs->flags & PREFS_n)
|
if(configure->prefs->flags & PREFS_n)
|
||||||
return 0;
|
return 0;
|
||||||
fprintf(fp, "%s", "\nuninstall:\n");
|
fprintf(fp, "%s", "\nuninstall:\n");
|
||||||
if((subdirs = config_get(config, "", "subdirs")) != NULL)
|
if((subdirs = config_get(configure->config, "", "subdirs")) != NULL)
|
||||||
fprintf(fp, "%s", "\t@for i in $(SUBDIRS); do (cd $$i &&"
|
fprintf(fp, "%s", "\t@for i in $(SUBDIRS); do (cd $$i &&"
|
||||||
" $(MAKE) uninstall) || exit; done\n");
|
" $(MAKE) uninstall) || exit; done\n");
|
||||||
if((targets = config_get(config, "", "targets")) != NULL)
|
if((targets = config_get(configure->config, "", "targets")) != NULL)
|
||||||
for(i = 0; ret == 0; i++)
|
for(i = 0; ret == 0; i++)
|
||||||
{
|
{
|
||||||
if(targets[i] != ',' && targets[i] != '\0')
|
if(targets[i] != ',' && targets[i] != '\0')
|
||||||
continue;
|
continue;
|
||||||
c = targets[i];
|
c = targets[i];
|
||||||
targets[i] = '\0';
|
targets[i] = '\0';
|
||||||
ret = _uninstall_target(config, fp, targets);
|
ret = _uninstall_target(configure->config, fp, targets);
|
||||||
if(c == '\0')
|
if(c == '\0')
|
||||||
break;
|
break;
|
||||||
targets[i] = c;
|
targets[i] = c;
|
||||||
|
@ -18,7 +18,8 @@ extern configArray * configarray_new(void);
|
|||||||
|
|
||||||
|
|
||||||
/* functions */
|
/* functions */
|
||||||
int makefile(Configure * configure, Config * config, String * directory,
|
int makefile(Configure * configure, String * directory, configArray * ca,
|
||||||
configArray * ca, int from, int to);
|
int from, int to);
|
||||||
|
|
||||||
|
|
||||||
#endif /* !CONFIGURE_MAKEFILE_H */
|
#endif /* !CONFIGURE_MAKEFILE_H */
|
||||||
|
Loading…
Reference in New Issue
Block a user