diff --git a/Makefile.inc b/Makefile.inc index 46154c6f34..4d7fd694f0 100644 --- a/Makefile.inc +++ b/Makefile.inc @@ -451,15 +451,18 @@ $(obj)/config.h: $(objutil)/kconfig/conf ####################################################################### # needed objects that every mainboard uses # Creation of these is architecture and mainboard independent -$(obj)/mainboard/$(MAINBOARDDIR)/static.c: $(src)/mainboard/$(MAINBOARDDIR)/$(call strip_quotes, $(CONFIG_DEVICETREE)) $(objutil)/sconfig/sconfig - @printf " SCONFIG $(subst $(src)/,,$(<))\n" - mkdir -p $(obj)/mainboard/$(MAINBOARDDIR) - $(objutil)/sconfig/sconfig $(MAINBOARDDIR) $(obj)/mainboard/$(MAINBOARDDIR) $(call strip_quotes, $(CONFIG_DEVICETREE)) +DEVICETREE_FILE := $(src)/mainboard/$(MAINBOARDDIR)/$(call strip_quotes, $(CONFIG_DEVICETREE)) +DEVICETREE_STATIC_C := $(obj)/mainboard/$(MAINBOARDDIR)/static.c -ramstage-y+=$(obj)/mainboard/$(MAINBOARDDIR)/static.c -romstage-y+=$(obj)/mainboard/$(MAINBOARDDIR)/static.c -verstage-y+=$(obj)/mainboard/$(MAINBOARDDIR)/static.c -bootblock-y+=$(obj)/mainboard/$(MAINBOARDDIR)/static.c +$(DEVICETREE_STATIC_C): $(DEVICETREE_FILE) $(objutil)/sconfig/sconfig + @printf " SCONFIG $(subst $(src)/,,$(<))\n" + mkdir -p $(dir $(DEVICETREE_STATIC_C)) + $(objutil)/sconfig/sconfig $(MAINBOARDDIR) $(DEVICETREE_FILE) $(DEVICETREE_STATIC_C) + +ramstage-y+=$(DEVICETREE_STATIC_C) +romstage-y+=$(DEVICETREE_STATIC_C) +verstage-y+=$(DEVICETREE_STATIC_C) +bootblock-y+=$(DEVICETREE_STATIC_C) $(objgenerated)/libverstage.a: $$(libverstage-objs) rm -f $@ diff --git a/util/sconfig/main.c b/util/sconfig/main.c index 316431341a..24ba019074 100644 --- a/util/sconfig/main.c +++ b/util/sconfig/main.c @@ -551,7 +551,7 @@ static void inherit_subsystem_ids(FILE *file, struct device *dev) static void usage(void) { - printf("usage: sconfig vendor/mainboard outputdir devicetree [-{s|b|k} outputfile]\n"); + printf("usage: sconfig vendor/mainboard devicetree_file output_file [-{s|b|k}]\n"); printf("\t-s file\tcreate ramstage static device map\n"); printf("\t-b file\tcreate bootblock init_mainboard()\n"); printf("\t-k file\tcreate Kconfig devicetree section\n"); @@ -560,31 +560,25 @@ static void usage(void) } enum { - VENDOR_MAINBOARD_ARG = 1, - OUTPUTDIR_ARG, + MAINBOARD_ARG = 1, DEVICEFILE_ARG, - OUTPUTTYPE_ARG, - OUTPUTFILE_ARG + OUTPUTFILE_ARG, + OUTPUTTYPE_ARG }; #define MIN_ARGS 4 -#define MAX_ARGS 6 +#define MAX_ARGS 5 int main(int argc, char** argv) { if (argc != MIN_ARGS && argc != MAX_ARGS) usage(); - char *mainboard = argv[VENDOR_MAINBOARD_ARG]; - char *outputdir = argv[OUTPUTDIR_ARG]; - char *devfile = argv[DEVICEFILE_ARG]; - char *devtree = malloc(strlen(mainboard) + strlen(devfile) + 30); - sprintf(devtree, "src/mainboard/%s/%s", mainboard, devfile); - char *outputc; + char *mainboard = argv[MAINBOARD_ARG]; + char *devtree = argv[DEVICEFILE_ARG]; + char *outputc = argv[OUTPUTFILE_ARG]; if (argc == MIN_ARGS) { scan_mode = STATIC_MODE; - outputc=malloc(strlen(outputdir)+20); - sprintf(outputc, "%s/static.c", outputdir); } else if (argc == MAX_ARGS) { if ((argv[OUTPUTTYPE_ARG][0] != '-') || (argv[OUTPUTTYPE_ARG][2] == 0)) { @@ -605,10 +599,6 @@ int main(int argc, char** argv) { usage(); break; } - char *outputfile = argv[OUTPUTFILE_ARG]; - - outputc=malloc(strlen(outputdir)+strlen(outputfile)+2); - sprintf(outputc, "%s/%s", outputdir, outputfile); } headers.next = 0; @@ -623,7 +613,6 @@ int main(int argc, char** argv) { FILE *filec = fopen(devtree, "r"); if (!filec) { - fprintf(stderr, "Could not open file '%s' for reading: ", devtree); perror(NULL); exit(1); }