From d88df636a61ef8807339fd2ebc9f967c5831b3d8 Mon Sep 17 00:00:00 2001 From: NicJA Date: Wed, 24 Aug 2016 14:53:48 +0000 Subject: [PATCH] let genmodule store a modules generated linklib files (e.g. stubs) in a different location. git-svn-id: https://svn.aros.org/svn/aros/trunk/AROS@52878 fb15a70f-31f2-0310-bbcc-cdcc74a49acc --- tools/genmodule/config.c | 16 +++++++++++++--- tools/genmodule/config.h | 4 ++-- tools/genmodule/writeautoinit.c | 2 +- tools/genmodule/writegetlibbase.c | 2 +- tools/genmodule/writestubs.c | 6 +++--- 5 files changed, 20 insertions(+), 10 deletions(-) diff --git a/tools/genmodule/config.c b/tools/genmodule/config.c index 6d4297d414..8cd946a34b 100644 --- a/tools/genmodule/config.c +++ b/tools/genmodule/config.c @@ -1,5 +1,5 @@ /* - Copyright © 1995-2014, The AROS Development Team. All rights reserved. + Copyright © 1995-2016, The AROS Development Team. All rights reserved. $Id$ Code to parse the command line options and the module config file for @@ -55,7 +55,7 @@ freeBanner(char *banner) const static char usage[] = "\n" - "Usage: genmodule [-c conffile] [-s suffix] [-d gendir] [-v versionextra]\n" + "Usage: genmodule [-c conffile] [-s suffix] [-d gendir] [-l library-stub gendir] [-v versionextra]\n" " {writefiles|writemakefile|writeincludes|writelibdefs|writefunclist|writefd|writeskel|writethunk} modname modtype\n" ; @@ -105,7 +105,7 @@ struct config *initconfig(int argc, char **argv) memset(cfg, 0, sizeof(struct config)); - while ((c = getopt(argc, argv, ":c:s:d:v:")) != -1) + while ((c = getopt(argc, argv, ":c:s:d:l:v:")) != -1) { if (c == ':') { @@ -130,6 +130,12 @@ struct config *initconfig(int argc, char **argv) cfg->gendir = optarg; break; + case 'l': + /* Remove / at end if present */ + if ((optarg)[strlen(*argvit)-1]=='/') (optarg)[strlen(optarg)-1]='\0'; + cfg->libgendir = optarg; + break; + case 'v': cfg->versionextra = optarg; break; @@ -184,6 +190,7 @@ struct config *initconfig(int argc, char **argv) exit(20); } + cfg->modulename = argv[optind+1]; cfg->modulenameupper = strdup(cfg->modulename); for (s=cfg->modulenameupper; *s!='\0'; *s = toupper(*s), s++) { @@ -277,6 +284,9 @@ struct config *initconfig(int argc, char **argv) if (cfg->gendir == NULL) cfg->gendir = "."; + + if (cfg->libgendir == NULL) + cfg->libgendir = cfg->gendir; } readconfig(cfg); diff --git a/tools/genmodule/config.h b/tools/genmodule/config.h index 75a5442d71..1f87dad92b 100644 --- a/tools/genmodule/config.h +++ b/tools/genmodule/config.h @@ -1,5 +1,5 @@ /* - Copyright © 1995-2014, The AROS Development Team. All rights reserved. + Copyright © 1995-2016, The AROS Development Team. All rights reserved. Desc: Define the C structure for storing the command line options and the module config data @@ -120,7 +120,7 @@ struct handlerinfo { struct config { /* members that store filename and paths derived from argv */ - char *conffile, *gendir, *genincdir; + char *conffile, *gendir, *libgendir, *genincdir; /* The name and type of the module */ char *modulename, *modulenameupper; diff --git a/tools/genmodule/writeautoinit.c b/tools/genmodule/writeautoinit.c index 84642dc9fb..55f535c172 100644 --- a/tools/genmodule/writeautoinit.c +++ b/tools/genmodule/writeautoinit.c @@ -13,7 +13,7 @@ void writeautoinit(struct config *cfg, int is_rel) char line[256], *banner; struct stringlist *linelistit; - snprintf(line, 255, "%s/%s_%sautoinit.c", cfg->gendir, cfg->modulename, is_rel ? "rel" : ""); + snprintf(line, 255, "%s/%s_%sautoinit.c", cfg->libgendir, cfg->modulename, is_rel ? "rel" : ""); out = fopen(line, "w"); if (out==NULL) diff --git a/tools/genmodule/writegetlibbase.c b/tools/genmodule/writegetlibbase.c index a4ae2a6221..695c1162dd 100644 --- a/tools/genmodule/writegetlibbase.c +++ b/tools/genmodule/writegetlibbase.c @@ -13,7 +13,7 @@ void writegetlibbase(struct config *cfg, int is_rel) char line[256], *banner; snprintf(line, 255, "%s/%s_%sgetlibbase.c", - cfg->gendir, cfg->modulename, is_rel ? "rel" : "" + cfg->libgendir, cfg->modulename, is_rel ? "rel" : "" ); out = fopen(line, "w"); diff --git a/tools/genmodule/writestubs.c b/tools/genmodule/writestubs.c index 5a8f8ebb3f..58eacc62c9 100644 --- a/tools/genmodule/writestubs.c +++ b/tools/genmodule/writestubs.c @@ -1,5 +1,5 @@ /* - Copyright © 1995-2014, The AROS Development Team. All rights reserved. + Copyright © 1995-2016, The AROS Development Team. All rights reserved. $Id$ Function to write module stubs. Part of genmodule. @@ -38,7 +38,7 @@ void writestubs(struct config *cfg, int is_rel) if (funclistit->lvo >= cfg->firstlvo && funclistit->libcall == STACK) { - snprintf(line, 255, "%s/%s_%s_%sstub.c", cfg->gendir, cfg->modulename, funclistit->name, is_rel ? "rel" : ""); + snprintf(line, 255, "%s/%s_%s_%sstub.c", cfg->libgendir, cfg->modulename, funclistit->name, is_rel ? "rel" : ""); out = fopen(line, "w"); if (out == NULL) @@ -55,7 +55,7 @@ void writestubs(struct config *cfg, int is_rel) } /* Build REGCALL - all stusb in one object file */ - snprintf(line, 255, "%s/%s_regcall_%sstubs.c", cfg->gendir, cfg->modulename, is_rel ? "rel" : ""); + snprintf(line, 255, "%s/%s_regcall_%sstubs.c", cfg->libgendir, cfg->modulename, is_rel ? "rel" : ""); out = fopen(line, "w"); if (out == NULL) -- 2.11.4.GIT