|
@@ -28,6 +28,7 @@
|
|
|
#define MAXPATH 128
|
|
|
|
|
|
static int prefix = 0;
|
|
|
+static int hprefix = 0;
|
|
|
|
|
|
static int check_symbol(char *symbol) {
|
|
|
|
|
@@ -64,7 +65,7 @@ static int check_symbol(char *symbol) {
|
|
|
}
|
|
|
|
|
|
/*@null@*/
|
|
|
-static char *parse_line(char *package, char *pkgvar, char *string, int checksym, int pprefix, int system) {
|
|
|
+static char *parse_line(char *package, char *pkgvar, char *string, int checksym, int pprefix, int system, int *prefixp) {
|
|
|
|
|
|
char *key, *value, *dep, *key_sym, *pkgdeps;
|
|
|
char temp[MAXLINE];
|
|
@@ -114,8 +115,8 @@ static char *parse_line(char *package, char *pkgvar, char *string, int checksym,
|
|
|
value = strtok(NULL, "=\t");
|
|
|
dep = strtok(value, " ");
|
|
|
while (dep != NULL) {
|
|
|
- if (prefix == 0) {
|
|
|
- prefix = 1;
|
|
|
+ if (*prefixp == 0) {
|
|
|
+ *prefixp = 1;
|
|
|
if (snprintf(temp, MAXLINE, "%s-compile: %s-compile", package, dep) < 0)
|
|
|
perror("Can not create string variable.");
|
|
|
} else {
|
|
@@ -135,7 +136,7 @@ int main() {
|
|
|
FILE *pkg;
|
|
|
char buf[MAXLINE];
|
|
|
char path[MAXPATH];
|
|
|
- char *string, *pkgvar, *pkgdeps, *tmp, *fpkg, *cpkg, *spkg, *key, *check, *dpkg;
|
|
|
+ char *string, *pkgvar, *pkgdeps, *hpkgdeps = NULL, *tmp, *fpkg, *cpkg, *spkg, *key, *check, *dpkg;
|
|
|
char *stringtmp;
|
|
|
int i;
|
|
|
|
|
@@ -182,6 +183,7 @@ int main() {
|
|
|
exit(EXIT_FAILURE);
|
|
|
}
|
|
|
prefix = 0;
|
|
|
+ hprefix = 0;
|
|
|
|
|
|
/* generate build dependencies */
|
|
|
while (fgets(buf, MAXLINE, pkg) != NULL) {
|
|
@@ -197,7 +199,7 @@ int main() {
|
|
|
|
|
|
string = strstr(buf, "PKG_BUILDDEP:=");
|
|
|
if (string != NULL) {
|
|
|
- tmp = parse_line(pkgdirp->d_name, pkgvar, string, 0, 0, 0);
|
|
|
+ tmp = parse_line(pkgdirp->d_name, pkgvar, string, 0, 0, 0, &prefix);
|
|
|
if (tmp != NULL) {
|
|
|
strncat(pkgdeps, tmp, strlen(tmp));
|
|
|
}
|
|
@@ -205,7 +207,7 @@ int main() {
|
|
|
|
|
|
string = strstr(buf, "PKG_BUILDDEP+=");
|
|
|
if (string != NULL) {
|
|
|
- tmp = parse_line(pkgdirp->d_name, pkgvar, string, 0, 0, 0);
|
|
|
+ tmp = parse_line(pkgdirp->d_name, pkgvar, string, 0, 0, 0, &prefix);
|
|
|
if (tmp != NULL)
|
|
|
strncat(pkgdeps, tmp, strlen(tmp));
|
|
|
}
|
|
@@ -219,7 +221,7 @@ int main() {
|
|
|
string[strlen(string)-1] = '\0';
|
|
|
key = strtok(string, ":=");
|
|
|
dpkg = strdup(key+13);
|
|
|
- tmp = parse_line(pkgdirp->d_name, dpkg, stringtmp, 1, 0, 1);
|
|
|
+ tmp = parse_line(pkgdirp->d_name, dpkg, stringtmp, 1, 0, 1, &prefix);
|
|
|
if (tmp != NULL)
|
|
|
strncat(pkgdeps, tmp, strlen(tmp));
|
|
|
}
|
|
@@ -238,7 +240,7 @@ int main() {
|
|
|
|
|
|
string = strstr(buf, "PKGFB_");
|
|
|
if (string != NULL) {
|
|
|
- tmp = parse_line(pkgdirp->d_name, fpkg, string, 1, 0, 0);
|
|
|
+ tmp = parse_line(pkgdirp->d_name, fpkg, string, 1, 0, 0, &prefix);
|
|
|
if (tmp != NULL)
|
|
|
strncat(pkgdeps, tmp, strlen(tmp));
|
|
|
}
|
|
@@ -255,7 +257,7 @@ int main() {
|
|
|
}
|
|
|
string = strstr(buf, "PKGCB_");
|
|
|
if (string != NULL) {
|
|
|
- tmp = parse_line(pkgdirp->d_name, cpkg, string, 1, 0, 0);
|
|
|
+ tmp = parse_line(pkgdirp->d_name, cpkg, string, 1, 0, 0, &prefix);
|
|
|
if (tmp != NULL)
|
|
|
strncat(pkgdeps, tmp, strlen(tmp));
|
|
|
}
|
|
@@ -273,16 +275,31 @@ int main() {
|
|
|
|
|
|
string = strstr(buf, "PKGSB_");
|
|
|
if (string != NULL) {
|
|
|
- tmp = parse_line(pkgdirp->d_name, spkg, string, 1, 1, 0);
|
|
|
+ tmp = parse_line(pkgdirp->d_name, spkg, string, 1, 1, 0, &prefix);
|
|
|
if (tmp != NULL) {
|
|
|
strncat(pkgdeps, tmp, strlen(tmp));
|
|
|
}
|
|
|
}
|
|
|
+ } else if (strncmp(buf, "HOST_BUILDDEP", 13) == 0) {
|
|
|
+ asprintf(&string, "%s-host", pkgdirp->d_name);
|
|
|
+ // check retval; string for NULL
|
|
|
+ tmp = parse_line(string, NULL, buf, 0, 0, 0, &hprefix);
|
|
|
+ if (tmp && *tmp) {
|
|
|
+ asprintf(&string, "%s%s",
|
|
|
+ hpkgdeps ? hpkgdeps : "",
|
|
|
+ tmp);
|
|
|
+ free(hpkgdeps);
|
|
|
+ hpkgdeps = string;
|
|
|
+ }
|
|
|
}
|
|
|
free(tmp);
|
|
|
}
|
|
|
if (strlen(pkgdeps) != 0)
|
|
|
printf("%s\n", pkgdeps);
|
|
|
+ if (hpkgdeps && *hpkgdeps)
|
|
|
+ printf("%s\n", hpkgdeps);
|
|
|
+ free(hpkgdeps);
|
|
|
+ hpkgdeps = NULL;
|
|
|
free(pkgdeps);
|
|
|
free(pkgvar);
|
|
|
if (fclose(pkg) != 0)
|