Alexandre Julliard : wrc: Add --sysroot option.

Alexandre Julliard julliard at winehq.org
Mon Nov 4 16:40:23 CST 2019


Module: wine
Branch: master
Commit: 9240ffbb293a0ca998368f082dbda15767e8fa5f
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=9240ffbb293a0ca998368f082dbda15767e8fa5f

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Sat Nov  2 13:33:36 2019 +0100

wrc: Add --sysroot option.

Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 tools/wrc/Makefile.in |  2 +-
 tools/wrc/wrc.c       | 17 +++++++++++++++--
 tools/wrc/wrc.man.in  |  3 +++
 3 files changed, 19 insertions(+), 3 deletions(-)

diff --git a/tools/wrc/Makefile.in b/tools/wrc/Makefile.in
index 500d5c1278..d502e4b7da 100644
--- a/tools/wrc/Makefile.in
+++ b/tools/wrc/Makefile.in
@@ -15,7 +15,7 @@ C_SRCS = \
 LEX_SRCS   = parser.l
 BISON_SRCS = parser.y
 
-wrc_EXTRADEFS = -DINCLUDEDIR="\"${includedir}/wine\""
+wrc_EXTRADEFS = -DINCLUDEDIR="\"${includedir}\""
 
 EXTRALIBS = $(GETTEXTPO_LIBS) -lwpp
 
diff --git a/tools/wrc/wrc.c b/tools/wrc/wrc.c
index ea8bfe07a7..014b177291 100644
--- a/tools/wrc/wrc.c
+++ b/tools/wrc/wrc.c
@@ -74,6 +74,7 @@ static const char usage[] =
 	"   --po-dir=DIR               Directory containing po files for translations\n"
 	"   --preprocessor             Specifies the preprocessor to use, including arguments\n"
 	"   -r                         Ignored for compatibility with rc\n"
+	"   --sysroot=DIR              Prefix include paths with DIR\n"
 	"   -U, --undefine id          Undefine preprocessor identifier id\n"
 	"   --use-temp-file            Ignored for compatibility with windres\n"
 	"   -v, --verbose              Enable verbose mode\n"
@@ -172,6 +173,7 @@ enum long_options_values
     LONG_OPT_NOTMPFILE,
     LONG_OPT_PO_DIR,
     LONG_OPT_PREPROCESSOR,
+    LONG_OPT_SYSROOT,
     LONG_OPT_VERSION,
     LONG_OPT_DEBUG,
     LONG_OPT_ENDIANNESS,
@@ -197,6 +199,7 @@ static const struct option long_options[] = {
 	{ "pedantic", 0, NULL, LONG_OPT_PEDANTIC },
 	{ "po-dir", 1, NULL, LONG_OPT_PO_DIR },
 	{ "preprocessor", 1, NULL, LONG_OPT_PREPROCESSOR },
+	{ "sysroot", 1, NULL, LONG_OPT_SYSROOT },
 	{ "target", 1, NULL, 'F' },
 	{ "undefine", 1, NULL, 'U' },
 	{ "use-temp-file", 0, NULL, LONG_OPT_TMPFILE },
@@ -335,6 +338,7 @@ int main(int argc,char *argv[])
 	int cmdlen;
         int po_mode = 0;
         char *po_dir = NULL;
+        const char *sysroot = "";
         char **files = xmalloc( argc * sizeof(*files) );
 
 	signal(SIGSEGV, segvhandler);
@@ -384,6 +388,9 @@ int main(int argc,char *argv[])
 			if (strcmp(optarg, "cat") == 0) no_preprocess = 1;
 			else fprintf(stderr, "-P option not yet supported, ignored.\n");
 			break;
+		case LONG_OPT_SYSROOT:
+			sysroot = xstrdup( optarg );
+			break;
 		case LONG_OPT_VERSION:
 			printf(version_string);
 			exit(0);
@@ -499,8 +506,14 @@ int main(int argc,char *argv[])
 	/* If we do need to search standard includes, add them to the path */
 	if (stdinc)
 	{
-		wpp_add_include_path(INCLUDEDIR"/msvcrt");
-		wpp_add_include_path(INCLUDEDIR"/windows");
+            static const char *incl_dirs[] = { INCLUDEDIR, "/usr/include", "/usr/local/include" };
+
+            for (i = 0; i < ARRAY_SIZE(incl_dirs); i++)
+            {
+                if (i && !strcmp( incl_dirs[i], incl_dirs[0] )) continue;
+                wpp_add_include_path( strmake( "%s%s/wine/msvcrt", sysroot, incl_dirs[i] ));
+                wpp_add_include_path( strmake( "%s%s/wine/windows", sysroot, incl_dirs[i] ));
+            }
 	}
 
 	/* Kill io buffering when some kind of debuglevel is enabled */
diff --git a/tools/wrc/wrc.man.in b/tools/wrc/wrc.man.in
index c671ad7382..80fcd04c5b 100644
--- a/tools/wrc/wrc.man.in
+++ b/tools/wrc/wrc.man.in
@@ -121,6 +121,9 @@ This option may be used to specify the preprocessor to use, including any
 leading arguments. If not specified, \fBwrc\fR uses its builtin processor.
 To disable preprocessing, use \fB--preprocessor=cat\fR.
 .TP
+.I \fB\-\-sysroot=\fIdir\fR
+Prefix the standard include paths with \fIdir\fR.
+.TP
 .I \fB\-U\fR, \fB\-\-undefine\fR=\fIid\fR
 Undefine preprocessor identifier \fIid\fR.  Please note that only macros 
 defined up to this point are undefined by this command. However, these 




More information about the wine-cvs mailing list