Supporting installation of include files
This commit is contained in:
parent
fff4df084b
commit
a70745de40
110
src/makefile.c
110
src/makefile.c
@ -97,6 +97,7 @@ static int _variables_print(Configure * configure, FILE * fp,
|
|||||||
char const * input, char const * output);
|
char const * input, char const * output);
|
||||||
static int _variables_targets(Configure * configure, FILE * fp);
|
static int _variables_targets(Configure * configure, FILE * fp);
|
||||||
static int _variables_executables(Configure * configure, FILE * fp);
|
static int _variables_executables(Configure * configure, FILE * fp);
|
||||||
|
static int _variables_includes(Configure * configure, FILE * fp);
|
||||||
static int _write_variables(Configure * configure, FILE * fp)
|
static int _write_variables(Configure * configure, FILE * fp)
|
||||||
{
|
{
|
||||||
String const * directory = config_get(configure->config, "",
|
String const * directory = config_get(configure->config, "",
|
||||||
@ -107,6 +108,7 @@ static int _write_variables(Configure * configure, FILE * fp)
|
|||||||
ret |= _variables_print(configure, fp, "subdirs", "SUBDIRS");
|
ret |= _variables_print(configure, fp, "subdirs", "SUBDIRS");
|
||||||
ret |= _variables_targets(configure, fp);
|
ret |= _variables_targets(configure, fp);
|
||||||
ret |= _variables_executables(configure, fp);
|
ret |= _variables_executables(configure, fp);
|
||||||
|
ret |= _variables_includes(configure, fp);
|
||||||
if(!(configure->prefs->flags & PREFS_n))
|
if(!(configure->prefs->flags & PREFS_n))
|
||||||
fputc('\n', fp);
|
fputc('\n', fp);
|
||||||
return ret;
|
return ret;
|
||||||
@ -220,12 +222,15 @@ static int _executables_variables(Configure * configure, FILE * fp,
|
|||||||
static int _variables_executables(Configure * configure, FILE * fp)
|
static int _variables_executables(Configure * configure, FILE * fp)
|
||||||
{
|
{
|
||||||
String * targets;
|
String * targets;
|
||||||
|
String * includes;
|
||||||
int i;
|
int i;
|
||||||
char c;
|
char c;
|
||||||
|
|
||||||
if(configure->prefs->flags & PREFS_n)
|
if(configure->prefs->flags & PREFS_n)
|
||||||
return 0;
|
return 0;
|
||||||
if((targets = config_get(configure->config, "", "targets")) != NULL)
|
targets = config_get(configure->config, "", "targets");
|
||||||
|
includes = config_get(configure->config, "", "includes");
|
||||||
|
if(targets != NULL)
|
||||||
{
|
{
|
||||||
for(i = 0;; i++)
|
for(i = 0;; i++)
|
||||||
{
|
{
|
||||||
@ -240,15 +245,16 @@ static int _variables_executables(Configure * configure, FILE * fp)
|
|||||||
targets+=i+1;
|
targets+=i+1;
|
||||||
i = 0;
|
i = 0;
|
||||||
}
|
}
|
||||||
fprintf(fp, "%s", "RM\t= rm -f\n");
|
|
||||||
}
|
}
|
||||||
|
if(targets != NULL || includes != NULL)
|
||||||
|
fprintf(fp, "%s", "RM\t= rm -f\n");
|
||||||
if(config_get(configure->config, "", "package"))
|
if(config_get(configure->config, "", "package"))
|
||||||
{
|
{
|
||||||
if(targets == NULL)
|
if(targets == NULL && includes == NULL)
|
||||||
fprintf(fp, "%s", "RM\t= rm -f\n");
|
fprintf(fp, "%s", "RM\t= rm -f\n");
|
||||||
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 || includes != NULL)
|
||||||
{
|
{
|
||||||
fprintf(fp, "%s", "MKDIR\t= mkdir -p\n");
|
fprintf(fp, "%s", "MKDIR\t= mkdir -p\n");
|
||||||
fprintf(fp, "%s", "INSTALL\t= install\n");
|
fprintf(fp, "%s", "INSTALL\t= install\n");
|
||||||
@ -309,12 +315,6 @@ static void _variables_binary(Configure * configure, FILE * fp, char * done)
|
|||||||
else
|
else
|
||||||
fprintf(fp, "%s%s\n", "BINDIR\t= $(PREFIX)/",
|
fprintf(fp, "%s%s\n", "BINDIR\t= $(PREFIX)/",
|
||||||
configure->prefs->bindir);
|
configure->prefs->bindir);
|
||||||
if(configure->prefs->includedir[0] == '/')
|
|
||||||
fprintf(fp, "%s%s\n", "INCLUDEDIR= ",
|
|
||||||
configure->prefs->includedir);
|
|
||||||
else
|
|
||||||
fprintf(fp, "%s%s\n", "INCLUDEDIR= $(PREFIX)/",
|
|
||||||
configure->prefs->includedir);
|
|
||||||
if(!done[TT_LIBRARY])
|
if(!done[TT_LIBRARY])
|
||||||
{
|
{
|
||||||
_targets_cflags(configure, fp);
|
_targets_cflags(configure, fp);
|
||||||
@ -463,6 +463,23 @@ static void _variables_library(Configure * configure, FILE * fp, char * done)
|
|||||||
fputs("AR\t= ar -rc\nRANLIB\t= ranlib\nLD\t= ld -shared\n", fp);
|
fputs("AR\t= ar -rc\nRANLIB\t= ranlib\nLD\t= ld -shared\n", fp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int _variables_includes(Configure * configure, FILE * fp)
|
||||||
|
{
|
||||||
|
String const * includes;
|
||||||
|
|
||||||
|
if((includes = config_get(configure->config, "", "includes")) == NULL)
|
||||||
|
return 0;
|
||||||
|
if(fp == NULL)
|
||||||
|
return 0;
|
||||||
|
if(configure->prefs->includedir[0] == '/')
|
||||||
|
fprintf(fp, "%s%s\n", "INCLUDEDIR= ",
|
||||||
|
configure->prefs->includedir);
|
||||||
|
else
|
||||||
|
fprintf(fp, "%s%s\n", "INCLUDEDIR= $(PREFIX)/",
|
||||||
|
configure->prefs->includedir);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static int _targets_all(Configure * configure, FILE * fp);
|
static int _targets_all(Configure * configure, FILE * fp);
|
||||||
static int _targets_subdirs(Configure * configure, FILE * fp);
|
static int _targets_subdirs(Configure * configure, FILE * fp);
|
||||||
static int _targets_target(Configure * configure, FILE * fp, String * target);
|
static int _targets_target(Configure * configure, FILE * fp, String * target);
|
||||||
@ -1037,14 +1054,14 @@ static int _write_dist(Configure * configure, FILE * fp, configArray * ca,
|
|||||||
|
|
||||||
if(configure->prefs->flags & PREFS_n)
|
if(configure->prefs->flags & PREFS_n)
|
||||||
return 0;
|
return 0;
|
||||||
if((package = config_get(configure->config, "", "package")) == NULL
|
package = config_get(configure->config, "", "package");
|
||||||
|| (version = config_get(configure->config, "",
|
version = config_get(configure->config, "", "version");
|
||||||
"version")) == NULL)
|
if(package == NULL || version == NULL)
|
||||||
return 0;
|
return 0;
|
||||||
fputs("\ndist:\n\t$(RM) -r $(PACKAGE)-$(VERSION)\n"
|
fputs("\ndist:\n\t$(RM) -r $(PACKAGE)-$(VERSION)\n"
|
||||||
"\t$(LN) . $(PACKAGE)-$(VERSION)\n"
|
"\t$(LN) . $(PACKAGE)-$(VERSION)\n"
|
||||||
"\t@$(TAR) $(PACKAGE)-$(VERSION).tar.gz \\\n", fp);
|
"\t@$(TAR) $(PACKAGE)-$(VERSION).tar.gz \\\n", 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(configure->config, fp, p);
|
_dist_subdir(configure->config, fp, p);
|
||||||
@ -1066,6 +1083,7 @@ static int _dist_subdir(Config * config, FILE * fp, Config * subdir)
|
|||||||
String * path;
|
String * path;
|
||||||
int len;
|
int len;
|
||||||
String * targets;
|
String * targets;
|
||||||
|
String * includes;
|
||||||
String * dist;
|
String * dist;
|
||||||
int i;
|
int i;
|
||||||
char c;
|
char c;
|
||||||
@ -1093,6 +1111,8 @@ static int _dist_subdir(Config * config, FILE * fp, Config * subdir)
|
|||||||
targets+=i+1;
|
targets+=i+1;
|
||||||
i = 0;
|
i = 0;
|
||||||
}
|
}
|
||||||
|
if((includes = config_get(subdir, "", "includes")) != NULL)
|
||||||
|
_dist_subdir_dist(fp, path, includes);
|
||||||
if((dist = config_get(subdir, "", "dist")) != NULL)
|
if((dist = config_get(subdir, "", "dist")) != NULL)
|
||||||
_dist_subdir_dist(fp, path, dist);
|
_dist_subdir_dist(fp, path, dist);
|
||||||
fprintf(fp, "%s%s%s%s%s", "\t\t$(PACKAGE)-$(VERSION)/", path,
|
fprintf(fp, "%s%s%s%s%s", "\t\t$(PACKAGE)-$(VERSION)/", path,
|
||||||
@ -1125,11 +1145,13 @@ 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 _install_include(Config * config, FILE * fp, String * include);
|
||||||
static int _write_install(Configure * configure, FILE * fp)
|
static int _write_install(Configure * configure, FILE * fp)
|
||||||
{
|
{
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
String * subdirs;
|
String * subdirs;
|
||||||
String * targets;
|
String * targets;
|
||||||
|
String * includes;
|
||||||
int i;
|
int i;
|
||||||
char c;
|
char c;
|
||||||
|
|
||||||
@ -1146,11 +1168,26 @@ static int _write_install(Configure * configure, FILE * fp)
|
|||||||
continue;
|
continue;
|
||||||
c = targets[i];
|
c = targets[i];
|
||||||
targets[i] = '\0';
|
targets[i] = '\0';
|
||||||
ret = _install_target(configure->config, fp, targets);
|
ret |= _install_target(configure->config, fp, targets);
|
||||||
if(c == '\0')
|
if(c == '\0')
|
||||||
break;
|
break;
|
||||||
targets[i] = c;
|
targets[i] = c;
|
||||||
targets+=i+1;
|
targets += i + 1;
|
||||||
|
i = 0;
|
||||||
|
}
|
||||||
|
if((includes = config_get(configure->config, "", "includes")) != NULL)
|
||||||
|
for(i = 0; ret == 0; i++)
|
||||||
|
{
|
||||||
|
if(includes[i] != ',' && includes[i] != '\0')
|
||||||
|
continue;
|
||||||
|
c = includes[i];
|
||||||
|
includes[i] = '\0';
|
||||||
|
ret |= _install_include(configure->config, fp,
|
||||||
|
includes);
|
||||||
|
if(c == '\0')
|
||||||
|
break;
|
||||||
|
includes[i] = c;
|
||||||
|
includes += i + 1;
|
||||||
i = 0;
|
i = 0;
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
@ -1197,12 +1234,32 @@ static int _install_target(Config * config, FILE * fp, String * target)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int _install_include(Config * config, FILE * fp, String * include)
|
||||||
|
{
|
||||||
|
static Config * flag = NULL;
|
||||||
|
static int done;
|
||||||
|
|
||||||
|
if(flag != config)
|
||||||
|
{
|
||||||
|
flag = config;
|
||||||
|
done = 0;
|
||||||
|
}
|
||||||
|
if(!done)
|
||||||
|
fputs("\t$(MKDIR) $(DESTDIR)$(INCLUDEDIR)\n", fp);
|
||||||
|
fprintf(fp, "%s%s%s%s%s", "\t$(INSTALL) -m 0644 ", include,
|
||||||
|
" $(DESTDIR)$(INCLUDEDIR)/", include, "\n");
|
||||||
|
done = 1;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static int _uninstall_target(Config * config, FILE * fp, String * target);
|
static int _uninstall_target(Config * config, FILE * fp, String * target);
|
||||||
|
static int _uninstall_include(FILE * fp, String * include);
|
||||||
static int _write_uninstall(Configure * configure, FILE * fp)
|
static int _write_uninstall(Configure * configure, FILE * fp)
|
||||||
{
|
{
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
String * subdirs;
|
String * subdirs;
|
||||||
String * targets;
|
String * targets;
|
||||||
|
String * includes;
|
||||||
int i;
|
int i;
|
||||||
char c;
|
char c;
|
||||||
|
|
||||||
@ -1226,6 +1283,20 @@ static int _write_uninstall(Configure * configure, FILE * fp)
|
|||||||
targets+=i+1;
|
targets+=i+1;
|
||||||
i = 0;
|
i = 0;
|
||||||
}
|
}
|
||||||
|
if((includes = config_get(configure->config, "", "includes")) != NULL)
|
||||||
|
for(i = 0; ret == 0; i++)
|
||||||
|
{
|
||||||
|
if(includes[i] != ',' && includes[i] != '\0')
|
||||||
|
continue;
|
||||||
|
c = includes[i];
|
||||||
|
includes[i] = '\0';
|
||||||
|
ret = _uninstall_include(fp, includes);
|
||||||
|
if(c == '\0')
|
||||||
|
break;
|
||||||
|
includes[i] = c;
|
||||||
|
includes+=i+1;
|
||||||
|
i = 0;
|
||||||
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1253,3 +1324,10 @@ static int _uninstall_target(Config * config, FILE * fp, String * target)
|
|||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int _uninstall_include(FILE * fp, String * include)
|
||||||
|
{
|
||||||
|
fprintf(fp, "%s%s%s", "\t$(RM) $(DESTDIR)$(INCLUDEDIR)/", include,
|
||||||
|
"\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user