HELP+="dot_config - Generate dot_config file. This file is based on default Linux\n"
HELP+=" configuration.\n"
-dot_config: scripts/allconfig/allconfig
- cd $(CONF_LINUX_SOURCES) && \
- SRCARCH=$(CONF_KERNEL_ARCH) \
- ARCH=$(CONF_KERNEL_ARCH) \
- KERNELVERSION=$(CONF_KERNEL_ARCH) \
- $(CONF_ABSROOT)/scripts/allconfig/allconfig \
- Kconfig .config $(CONF_ABSROOT)/$(CONF_DOT_CONFIG)
+$(CONF_DOT_CONFIG): .conf.mk scripts/allconfig/allconfig $(CONF_LINUX_BUILD_FOLDER)/.config
+ scripts/allconfig/allconfig --env .conf.mk $(CONF_LINUX_SOURCES)/Kconfig $(CONF_LINUX_BUILD_FOLDER)/.config $@
HELP+="initialize - Executes only initialization.\n"
.PHONY: initialize init
#include <build_files.h>
#include <macros.h>
#include "inv.h"
+#include <kconfig/lcp_utils.h>
int verbose_level;
bool full_config, inv_config;
full_config = true;
} else if (!strcmp(argv[i], "--inv")) {
inv_config = true;
- } else if (kconfig_file == NULL) {
+ } else if (!strcmp(argv[i], "--env")) {
+ if (++i < argc)
+ set_missing_env(argv[i]);
+ else {
+ print_help();
+ exit(1);
+ }
+ } else if (kconfig_file == NULL) {
kconfig_file = argv[i];
} else if (input_config_file == NULL) {
input_config_file = argv[i];
bindtextdomain(PACKAGE, LOCALEDIR);
textdomain(PACKAGE);
- conf_parse(kconfig_file);
+ conf_parse_path(kconfig_file);
conf_read(input_config_file);
if (inv_config) {
printf(" configuration options");
printf
(" --inv Generate configuration of missing configratuon options.\n");
+ printf(" --env <file> Read needed environment variables from .conf.mk.\n");
}
.PHONY: clean
ifndef KCONFIG_PREFIX
- $(error "Please specify variable KCONFIG_SRC in your makefile before importing kconfig files.mk")
+ $(error "Please specify variable KCONFIG_PREFIX in your Makefile before including kconfig's files.mk")
endif
-KCONFIG_SRC = $(KCONFIG_PREFIX)/zconf.tab.c
-KCONFIG_OBJ = $(KCONFIG_PREFIX)/zconf.tab.o
+KCONFIG_SRC = $(addprefix $(KCONFIG_PREFIX)/,zconf.tab.c lcp_utils.c)
+KCONFIG_OBJ = $(KCONFIG_SRC:%.c=%.o)
KCONFIG_CFLAGS = -O3
--- /dev/null
+#define _GNU_SOURCE
+#include "lcp_utils.h"
+#include <libgen.h>
+#include <unistd.h>
+#include <string.h>
+#include <stdlib.h>
+#include "lkc.h"
+
+void conf_parse_path(const char *name)
+{
+ char *d = strdup(name);
+ char *f = strdup(name);
+ char *olddir = get_current_dir_name();
+
+ chdir(dirname(d));
+ conf_parse(basename(f));
+
+ free(olddir);
+ free(d);
+ free(f);
+}
+
+void set_missing_env(const char *conf_mk)
+{
+ FILE *f = fopen(conf_mk, "r");
+ char line[1000];
+
+ if (!f) {
+ perror(conf_mk);
+ exit(1);
+ }
+
+
+ while (fgets(line, sizeof(line), f)) {
+ char *p = line;
+ char *var = strsep(&p, " :=");
+
+ if (strcmp(var, "CONF_KERNEL_ARCH") == 0) {
+ p += strspn(p, " :=");
+ var = strsep(&p, "\n");
+ setenv("ARCH", var, /*overwrite*/0);
+ setenv("SRCARCH", var, /*overwrite*/0);
+ }
+ }
+ setenv("KERNELVERSION", "N/A", /*overwrite*/0);
+}
--- /dev/null
+#ifndef LCP_UTILS_H
+#define LCP_UTILS_H
+
+void conf_parse_path(const char *name);
+void set_missing_env(const char *conf_mk);
+
+#endif