From a0ea7c09e9b28bf6571363a2c3542fb03f7b34ae Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Fri, 7 Jan 2011 17:04:56 +0100 Subject: add varios patches... eglibc should install nsswitch.conf and others. add -fhonour-copts to TARGET_CFLAGS. --- tools/adk/pkgmaker.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'tools') diff --git a/tools/adk/pkgmaker.c b/tools/adk/pkgmaker.c index cee3f1420..eeba00304 100644 --- a/tools/adk/pkgmaker.c +++ b/tools/adk/pkgmaker.c @@ -1,7 +1,7 @@ /* * pkgmaker - create package meta-data for OpenADK buildsystem * - * Copyright (C) 2010 Waldemar Brodkorb + * Copyright (C) 2010,2011 Waldemar Brodkorb * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -222,6 +222,7 @@ int main() { char *key, *value, *token, *cftoken, *sp, *hkey, *val, *pkg_fd; char *pkg_name, *pkg_depends, *pkg_section, *pkg_descr, *pkg_url; char *pkg_cxx, *pkg_subpkgs, *pkg_cfline, *pkg_dflt, *pkg_multi; + char *pkg_need_cxx, *pkg_need_java; char *pkg_host_depends, *pkg_arch_depends, *pkg_flavours, *pkg_choices, *pseudo_name; char *packages, *pkg_name_u, *pkgs; char *saveptr, *p_ptr, *s_ptr; @@ -242,6 +243,8 @@ int main() { pkg_dflt = NULL; pkg_cfline = NULL; pkg_multi = NULL; + pkg_need_cxx = NULL; + pkg_need_java = NULL; p_ptr = NULL; s_ptr = NULL; @@ -351,6 +354,10 @@ int main() { continue; if ((parse_var(buf, "PKG_CXX", NULL, &pkg_cxx)) == 0) continue; + if ((parse_var(buf, "PKG_NEED_CXX", NULL, &pkg_need_cxx)) == 0) + continue; + if ((parse_var(buf, "PKG_NEED_JAVA", NULL, &pkg_need_java)) == 0) + continue; if ((parse_var(buf, "PKG_MULTI", NULL, &pkg_multi)) == 0) continue; if ((parse_var(buf, "PKG_DEPENDS", pkg_depends, &pkg_depends)) == 0) @@ -584,6 +591,13 @@ int main() { pkg_depends = NULL; } + if (pkg_need_cxx != NULL) { + fprintf(cfg, "\tdepends on ADK_TOOLCHAIN_GCC_CXX"); + } + if (pkg_need_java != NULL) { + fprintf(cfg, "\tdepends on ADK_TOOLCHAIN_GCC_JAVA"); + } + fprintf(cfg, "\tselect ADK_COMPILE_%s\n", toupperstr(pkgdirp->d_name)); if (pkg_dflt != NULL) { @@ -710,6 +724,8 @@ int main() { free(pkg_arch_depends); free(pkg_host_depends); free(pkg_cxx); + free(pkg_need_cxx); + free(pkg_need_java); free(pkg_dflt); free(pkg_cfline); free(pkg_multi); -- cgit v1.2.3 From 6eca921234f8c167e0fe4607b799d452cbe3dd72 Mon Sep 17 00:00:00 2001 From: Thorsten Glaser Date: Fri, 7 Jan 2011 16:38:29 +0000 Subject: use HOSTCC, HOSTCFLAGS, etc. here, too Signed-off-by: Thorsten Glaser --- tools/adk/Makefile | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'tools') diff --git a/tools/adk/Makefile b/tools/adk/Makefile index 02171c99b..a7dee6a2e 100644 --- a/tools/adk/Makefile +++ b/tools/adk/Makefile @@ -6,14 +6,16 @@ include $(TOPDIR)/rules.mk $(TOPDIR)/bin/tools: @mkdir -p $(TOPDIR)/bin/tools +CCANDLD.c= ${HOSTCC} ${HOSTCFLAGS} ${HOSTCPPFLAGS} ${HOSTLDFLAGS} + ${TOPDIR}/bin/tools/depmaker: $(TOPDIR)/bin/tools - $(HOSTCC) -o $(TOPDIR)/bin/tools/depmaker depmaker.c + ${CCANDLD.c} -o $(TOPDIR)/bin/tools/depmaker depmaker.c ${TOPDIR}/bin/tools/pkgrebuild: $(TOPDIR)/bin/tools - $(HOSTCC) -o $(TOPDIR)/bin/tools/pkgrebuild pkgrebuild.c strmap.c + ${CCANDLD.c} -o $(TOPDIR)/bin/tools/pkgrebuild pkgrebuild.c strmap.c ${TOPDIR}/bin/tools/dkgetsz: ${TOPDIR}/bin/tools - ${HOSTCC} -O2 -Wall -o $@ dkgetsz.c + ${CCANDLD.c} -Wall -o $@ dkgetsz.c install: ${TOPDIR}/bin/tools/depmaker ${TOPDIR}/bin/tools/pkgrebuild \ ${TOPDIR}/bin/tools/dkgetsz -- cgit v1.2.3 From ce0255bbd2d1719f1ce3a30504c19869802c0a8b Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Sat, 8 Jan 2011 11:22:41 +0100 Subject: rework and cleanup top level directory creation, avoid some unnecessary rebuils --- tools/adk/Makefile | 9 +++------ tools/cpio/Makefile | 2 +- tools/mkcrypt/Makefile | 2 +- 3 files changed, 5 insertions(+), 8 deletions(-) (limited to 'tools') diff --git a/tools/adk/Makefile b/tools/adk/Makefile index a7dee6a2e..1f8c2186e 100644 --- a/tools/adk/Makefile +++ b/tools/adk/Makefile @@ -3,18 +3,15 @@ include $(TOPDIR)/rules.mk -$(TOPDIR)/bin/tools: - @mkdir -p $(TOPDIR)/bin/tools - CCANDLD.c= ${HOSTCC} ${HOSTCFLAGS} ${HOSTCPPFLAGS} ${HOSTLDFLAGS} -${TOPDIR}/bin/tools/depmaker: $(TOPDIR)/bin/tools +${TOPDIR}/bin/tools/depmaker: ${CCANDLD.c} -o $(TOPDIR)/bin/tools/depmaker depmaker.c -${TOPDIR}/bin/tools/pkgrebuild: $(TOPDIR)/bin/tools +${TOPDIR}/bin/tools/pkgrebuild: ${CCANDLD.c} -o $(TOPDIR)/bin/tools/pkgrebuild pkgrebuild.c strmap.c -${TOPDIR}/bin/tools/dkgetsz: ${TOPDIR}/bin/tools +${TOPDIR}/bin/tools/dkgetsz: ${CCANDLD.c} -Wall -o $@ dkgetsz.c install: ${TOPDIR}/bin/tools/depmaker ${TOPDIR}/bin/tools/pkgrebuild \ diff --git a/tools/cpio/Makefile b/tools/cpio/Makefile index 142f65b70..bbf138918 100644 --- a/tools/cpio/Makefile +++ b/tools/cpio/Makefile @@ -28,7 +28,7 @@ SRCS+= \ src/cpio.c ${TOPDIR}/bin/tools/cpio: ${SRCS} - @${HOSTCC} ${HOSTCFLAGS} -D_GNU_SOURCE -Isrc -o $@ $^ + ${HOSTCC} ${HOSTCFLAGS} -D_GNU_SOURCE -Isrc -o $@ $^ install: ${TOPDIR}/bin/tools/cpio diff --git a/tools/mkcrypt/Makefile b/tools/mkcrypt/Makefile index 4baf56c44..54548c39e 100644 --- a/tools/mkcrypt/Makefile +++ b/tools/mkcrypt/Makefile @@ -4,7 +4,7 @@ include $(TOPDIR)/rules.mk ${TOPDIR}/bin/tools/mkcrypt: - $(HOSTCC) -o $(TOPDIR)/bin/tools/mkcrypt mkcrypt.c + $(HOSTCC) ${HOSTCFLAGS} -o $(TOPDIR)/bin/tools/mkcrypt mkcrypt.c install: ${TOPDIR}/bin/tools/mkcrypt -- cgit v1.2.3 From 18aa85857ca8fa9d75d41c36665a1cb7e8bbda5c Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Sat, 8 Jan 2011 19:56:21 +0100 Subject: variable name cleanup --- tools/adk/Makefile | 13 ++++++------- tools/cpio/Makefile | 4 ++-- tools/mkcrypt/Makefile | 6 +++--- 3 files changed, 11 insertions(+), 12 deletions(-) (limited to 'tools') diff --git a/tools/adk/Makefile b/tools/adk/Makefile index 1f8c2186e..638935e5e 100644 --- a/tools/adk/Makefile +++ b/tools/adk/Makefile @@ -5,16 +5,15 @@ include $(TOPDIR)/rules.mk CCANDLD.c= ${HOSTCC} ${HOSTCFLAGS} ${HOSTCPPFLAGS} ${HOSTLDFLAGS} -${TOPDIR}/bin/tools/depmaker: - ${CCANDLD.c} -o $(TOPDIR)/bin/tools/depmaker depmaker.c +${TOOLS_DIR}/depmaker: + ${CCANDLD.c} -Wall -o $@ depmaker.c -${TOPDIR}/bin/tools/pkgrebuild: - ${CCANDLD.c} -o $(TOPDIR)/bin/tools/pkgrebuild pkgrebuild.c strmap.c +${TOOLS_DIR}/pkgrebuild: + ${CCANDLD.c} -Wall -o $@ pkgrebuild.c strmap.c -${TOPDIR}/bin/tools/dkgetsz: +${TOOLS_DIR}/dkgetsz: ${CCANDLD.c} -Wall -o $@ dkgetsz.c -install: ${TOPDIR}/bin/tools/depmaker ${TOPDIR}/bin/tools/pkgrebuild \ - ${TOPDIR}/bin/tools/dkgetsz +install: ${TOOLS_DIR}/depmaker ${TOOLS_DIR}/pkgrebuild ${TOOLS_DIR}/dkgetsz include $(TOPDIR)/mk/tools.mk diff --git a/tools/cpio/Makefile b/tools/cpio/Makefile index bbf138918..a012c43a5 100644 --- a/tools/cpio/Makefile +++ b/tools/cpio/Makefile @@ -27,9 +27,9 @@ SRCS+= \ src/nonpax.c \ src/cpio.c -${TOPDIR}/bin/tools/cpio: ${SRCS} +${TOOLS_DIR}/cpio: ${SRCS} ${HOSTCC} ${HOSTCFLAGS} -D_GNU_SOURCE -Isrc -o $@ $^ -install: ${TOPDIR}/bin/tools/cpio +install: ${TOOLS_DIR}/cpio include $(TOPDIR)/mk/tools.mk diff --git a/tools/mkcrypt/Makefile b/tools/mkcrypt/Makefile index 54548c39e..1708f9f13 100644 --- a/tools/mkcrypt/Makefile +++ b/tools/mkcrypt/Makefile @@ -3,9 +3,9 @@ include $(TOPDIR)/rules.mk -${TOPDIR}/bin/tools/mkcrypt: - $(HOSTCC) ${HOSTCFLAGS} -o $(TOPDIR)/bin/tools/mkcrypt mkcrypt.c +${TOOLS_DIR}/mkcrypt: + $(HOSTCC) ${HOSTCFLAGS} -o $@ mkcrypt.c -install: ${TOPDIR}/bin/tools/mkcrypt +install: ${TOOLS_DIR}/mkcrypt include $(TOPDIR)/mk/tools.mk -- cgit v1.2.3 From e435ddd4ee81da12e3e3e3d0433a90d539901839 Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Tue, 11 Jan 2011 18:16:55 +0100 Subject: add support for C++ packages, which need G++ compiler --- tools/adk/pkgmaker.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'tools') diff --git a/tools/adk/pkgmaker.c b/tools/adk/pkgmaker.c index eeba00304..e2b6e6e99 100644 --- a/tools/adk/pkgmaker.c +++ b/tools/adk/pkgmaker.c @@ -508,8 +508,12 @@ int main() { if (cfg == NULL) perror("Can not open Config.in file"); + if (pkg_need_cxx != NULL) { + fprintf(cfg, "comment \"%s... %s (disabled, c++ missing)\"\n", token, pkg_descr); + fprintf(cfg, "depends on !ADK_TOOLCHAIN_GCC_CXX\n\n"); + } fprintf(cfg, "config ADK_PACKAGE_%s\n", toupperstr(token)); - fprintf(cfg, "\tprompt \"%s... %s\"\n", pseudo_name, pkg_descr); + fprintf(cfg, "\tprompt \"%s. %s\"\n", pseudo_name, pkg_descr); fprintf(cfg, "\ttristate\n"); if (pkg_multi != NULL) if (strncmp(pkg_multi, "1", 1) == 0) @@ -592,10 +596,11 @@ int main() { } if (pkg_need_cxx != NULL) { - fprintf(cfg, "\tdepends on ADK_TOOLCHAIN_GCC_CXX"); + fprintf(cfg, "\tdepends on ADK_TOOLCHAIN_GCC_CXX\n"); } if (pkg_need_java != NULL) { - fprintf(cfg, "\tdepends on ADK_TOOLCHAIN_GCC_JAVA"); + fprintf(cfg, "\tdepends on ADK_TOOLCHAIN_GCC_JAVA\n"); + pkg_need_java = NULL; } fprintf(cfg, "\tselect ADK_COMPILE_%s\n", toupperstr(pkgdirp->d_name)); @@ -712,6 +717,8 @@ int main() { free(packages); packages = NULL; + pkg_need_cxx = NULL; + pkg_need_java = NULL; /* reset flags, free memory */ free(pkg_name); free(pkg_descr); @@ -724,8 +731,6 @@ int main() { free(pkg_arch_depends); free(pkg_host_depends); free(pkg_cxx); - free(pkg_need_cxx); - free(pkg_need_java); free(pkg_dflt); free(pkg_cfline); free(pkg_multi); -- cgit v1.2.3 From 846440bfa59b9a04a68247720edc6d81dcabfec2 Mon Sep 17 00:00:00 2001 From: Phil Sutter Date: Mon, 10 Jan 2011 22:14:52 +0100 Subject: pkgmaker: improve error message on missing package category This patch bores up fatal_error(), so that it now takes arguments in printf-style, but without changing the basic semantics (i.e., messages prefixed by "Fatal error. " and trailing newline automatically appended). Signed-off-by: Phil Sutter --- tools/adk/pkgmaker.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'tools') diff --git a/tools/adk/pkgmaker.c b/tools/adk/pkgmaker.c index e2b6e6e99..dd4b90f46 100644 --- a/tools/adk/pkgmaker.c +++ b/tools/adk/pkgmaker.c @@ -37,10 +37,11 @@ static int nobinpkgs; -static void fatal_error(const char *message) { - - fprintf(stderr, "Fatal error. %s\n", message); - exit(1); +#define fatal_error(...) { \ + fprintf(stderr, "Fatal error. "); \ + fprintf(stderr, __VA_ARGS__); \ + fprintf(stderr, "\n"); \ + exit(1); \ } static int parse_var_hash(char *buf, const char *varname, StrMap *strmap) { @@ -304,7 +305,8 @@ int main() { fclose(section); } } else - fatal_error("Can not find section description for package."); + fatal_error("Can not find section description for package %s.", + pkgdirp->d_name); fclose(pkg); continue; @@ -501,7 +503,7 @@ int main() { fclose(section); } } else - fatal_error("Can not find section description for package"); + fatal_error("Can not find section description for package %s.", pkgdirp->d_name); unlink(path); cfg = fopen(path, "w"); -- cgit v1.2.3 From 3d45df344602687c8983f5fb609721aa8ca2469f Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Tue, 18 Jan 2011 15:32:55 +0100 Subject: rework PKG_FLAVOURS. Subpackages can have flavours, so always add PKG_NAME to PKG_FLAVOURS variable. ala PKG_FLAVOURS_LIBNCURSES. Bug reported by Phil Sutter. --- tools/adk/pkgmaker.c | 74 ++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 60 insertions(+), 14 deletions(-) (limited to 'tools') diff --git a/tools/adk/pkgmaker.c b/tools/adk/pkgmaker.c index dd4b90f46..18465ce18 100644 --- a/tools/adk/pkgmaker.c +++ b/tools/adk/pkgmaker.c @@ -111,6 +111,53 @@ static int parse_var(char *buf, const char *varname, char *pvalue, char **result return(1); } +static int parse_var_with_pkg(char *buf, const char *varname, char *pvalue, char **result, char **pkgname, int varlen) { + + char *pkg_var, *check; + char *key, *value, *string; + + if ((pkg_var = malloc(MAXLINE)) != NULL) + memset(pkg_var, 0, MAXLINE); + else { + perror("Can not allocate memory"); + exit(EXIT_FAILURE); + } + + check = strstr(buf, ":="); + if (check != NULL) { + string = strstr(buf, varname); + if (string != NULL) { + string[strlen(string)-1] = '\0'; + key = strtok(string, ":="); + *pkgname = strdup(key+varlen); + value = strtok(NULL, "=\t"); + if (value != NULL) { + strncat(pkg_var, value, strlen(value)); + *result = strdup(pkg_var); + } + free(pkg_var); + return(0); + } + } else { + string = strstr(buf, varname); + if (string != NULL) { + string[strlen(string)-1] = '\0'; + key = strtok(string, "+="); + value = strtok(NULL, "=\t"); + if (pvalue != NULL) + strncat(pkg_var, pvalue, strlen(pvalue)); + strncat(pkg_var, " ", 1); + if (value != NULL) + strncat(pkg_var, value, strlen(value)); + *result = strdup(pkg_var); + free(pkg_var); + return(0); + } + } + free(pkg_var); + return(1); +} + /* static void iter_debug(const char *key, const char *value, const void *obj) { fprintf(stderr, "HASHMAP key: %s value: %s\n", key, value); @@ -223,7 +270,7 @@ int main() { char *key, *value, *token, *cftoken, *sp, *hkey, *val, *pkg_fd; char *pkg_name, *pkg_depends, *pkg_section, *pkg_descr, *pkg_url; char *pkg_cxx, *pkg_subpkgs, *pkg_cfline, *pkg_dflt, *pkg_multi; - char *pkg_need_cxx, *pkg_need_java; + char *pkg_need_cxx, *pkg_need_java, *pkgname; char *pkg_host_depends, *pkg_arch_depends, *pkg_flavours, *pkg_choices, *pseudo_name; char *packages, *pkg_name_u, *pkgs; char *saveptr, *p_ptr, *s_ptr; @@ -246,6 +293,7 @@ int main() { pkg_multi = NULL; pkg_need_cxx = NULL; pkg_need_java = NULL; + pkgname = NULL; p_ptr = NULL; s_ptr = NULL; @@ -364,13 +412,13 @@ int main() { continue; if ((parse_var(buf, "PKG_DEPENDS", pkg_depends, &pkg_depends)) == 0) continue; - if ((parse_var(buf, "PKG_FLAVOURS", pkg_flavours, &pkg_flavours)) == 0) + if ((parse_var_with_pkg(buf, "PKG_FLAVOURS_", pkg_flavours, &pkg_flavours, &pkgname, 13)) == 0) continue; if ((parse_var_hash(buf, "PKGFD_", pkgmap)) == 0) continue; if ((parse_var_hash(buf, "PKGFS_", pkgmap)) == 0) continue; - if ((parse_var(buf, "PKG_CHOICES", pkg_choices, &pkg_choices)) == 0) + if ((parse_var_with_pkg(buf, "PKG_CHOICES_", pkg_choices, &pkg_choices, &pkgname, 12)) == 0) continue; if ((parse_var_hash(buf, "PKGCD_", pkgmap)) == 0) continue; @@ -402,10 +450,10 @@ int main() { fprintf(stderr, "Package dependencies are %s\n", pkg_depends); if (pkg_subpkgs != NULL) fprintf(stderr, "Package subpackages are %s\n", pkg_subpkgs); - if (pkg_flavours != NULL) - fprintf(stderr, "Package flavours are %s\n", pkg_flavours); - if (pkg_choices != NULL) - fprintf(stderr, "Package choices are %s\n", pkg_choices); + if (pkg_flavours != NULL && pkgname != NULL) + fprintf(stderr, "Package flavours for %s are %s\n", pkgname, pkg_flavours); + if (pkg_choices != NULL && pkgname != NULL) + fprintf(stderr, "Package choices for %s are %s\n", pkgname, pkg_choices); if (pkg_url != NULL) fprintf(stderr, "Package homepage is %s\n", pkg_url); if (pkg_cfline != NULL) @@ -641,9 +689,8 @@ int main() { if (pkg_flavours != NULL) { token = strtok(pkg_flavours, " "); while (token != NULL) { - fprintf(cfg, "\nconfig ADK_PACKAGE_%s_%s\n", toupperstr(pkgdirp->d_name), - toupperstr(token)); - fprintf(cfg, "\tbool "); + fprintf(cfg, "\nconfig ADK_PACKAGE_%s_%s\n", pkgname, toupperstr(token)); + fprintf(cfg, "\tboolean "); strncat(hkey, "PKGFD_", 6); strncat(hkey, token, strlen(token)); memset(hvalue, 0 , MAXVALUE); @@ -653,7 +700,7 @@ int main() { fprintf(cfg, "\"%s\"\n", pkg_fd); fprintf(cfg, "\tdefault n\n"); - fprintf(cfg, "\tdepends on ADK_PACKAGE_%s\n", toupperstr(pkgdirp->d_name)); + fprintf(cfg, "\tdepends on ADK_PACKAGE_%s\n", pkgname); strncat(hkey, "PKGFS_", 6); strncat(hkey, token, strlen(token)); @@ -678,11 +725,10 @@ int main() { if (pkg_choices != NULL) { fprintf(cfg, "\nchoice\n"); fprintf(cfg, "prompt \"Package flavour choice\"\n"); - fprintf(cfg, "depends on ADK_COMPILE_%s\n\n", toupperstr(pkgdirp->d_name)); + fprintf(cfg, "depends on ADK_PACKAGE_%s\n\n", pkgname); token = strtok(pkg_choices, " "); while (token != NULL) { - fprintf(cfg, "config ADK_PACKAGE_%s_%s\n", toupperstr(pkgdirp->d_name), - toupperstr(token)); + fprintf(cfg, "config ADK_PACKAGE_%s_%s\n", pkgname, toupperstr(token)); fprintf(cfg, "\tbool "); strncat(hkey, "PKGCD_", 6); -- cgit v1.2.3