From 25f8a4f6d44c398b059b79572a11471b06af272f Mon Sep 17 00:00:00 2001 From: Martin Roth Date: Fri, 5 Aug 2016 15:46:56 -0600 Subject: [PATCH] sconfig: Update command line parameters Instead of having directories and file names hardcoded, pass in the full path and filename of both the input and output files. In the makefile, create variables for these values, and use them in places that previously had the names and paths written out. Change-Id: Icb6f536547ce3193980ec5d60c786a29755c2813 Signed-off-by: Martin Roth Reviewed-on: https://review.coreboot.org/16078 Tested-by: build bot (Jenkins) Reviewed-by: Aaron Durbin Reviewed-by: Patrick Georgi --- Makefile.inc | 19 +++++++++++-------- util/sconfig/main.c | 27 ++++++++------------------- 2 files changed, 19 insertions(+), 27 deletions(-) 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); }