diff -up pkg-config-0.28/pkg.c.env pkg-config-0.28/pkg.c --- pkg-config-0.28/pkg.c.env 2015-06-09 19:02:56.189243446 +0200 +++ pkg-config-0.28/pkg.c 2015-06-09 19:19:52.338657528 +0200 @@ -1012,6 +1012,24 @@ define_global_variable (const char *varn } char * +var_to_env_var (const char *key, const char *var) +{ + char *new = g_strconcat ("PKG_CONFIG_", key, "_", var, NULL); + char *p; + for (p = new; *p != 0; p++) + { + char c = g_ascii_toupper (*p); + + if (!g_ascii_isalnum (c)) + c = '_'; + + *p = c; + } + + return new; +} + +char * package_get_var (Package *pkg, const char *var) { @@ -1019,7 +1037,17 @@ package_get_var (Package *pkg, if (globals) varval = g_strdup (g_hash_table_lookup (globals, var)); - + + if (pkg->key) + { + char *env_var = var_to_env_var (pkg->key, var); + const char *env_var_content = g_getenv (env_var); + g_free (env_var); + if (env_var_content) + return g_strdup (env_var_content); + } + + if (varval == NULL && pkg->vars) varval = g_strdup (g_hash_table_lookup (pkg->vars, var));