aboutsummaryrefslogtreecommitdiff
path: root/scripts/kconfig/mconf.c
diff options
context:
space:
mode:
authorJohannes Schindelin <johannes.schindelin@gmx.de>2017-02-01 22:07:58 +0100
committerRon Yorston <rmy@pobox.com>2017-07-14 15:14:30 +0100
commitc56f1e06c4c470a023b02c7019112eb852f08d44 (patch)
tree96139e253d0ce2e2fb95bdd42af7b31f737fe393 /scripts/kconfig/mconf.c
parentb41c851312876dbf146fb674265b86c72ed611ab (diff)
downloadbusybox-w32-c56f1e06c4c470a023b02c7019112eb852f08d44.tar.gz
busybox-w32-c56f1e06c4c470a023b02c7019112eb852f08d44.tar.bz2
busybox-w32-c56f1e06c4c470a023b02c7019112eb852f08d44.zip
kbuild: support at least non-interactive mode on Windows
without POSIX, kbuild has some trouble compiling its support executables. Luckily, the parts that really lean on POSIX functionality are pretty much all only needed when configuring the build interactively. When compiling BusyBox for Win32, we do not actually need interactive configuration at all: we simply choose the default. Therefore, a lot of the stuff that is typically built for the Kconfig system is totally unnecessary (such as: compiling documentation via fork()&exec(), changing the window size, etc). Liberally put all of the problematic code behind #ifndef __MINGW32__ guards, just to get `make mingw64_defconfig` going in Git for Windows' SDK (which is a special-purpose version of MSYS2). Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Diffstat (limited to 'scripts/kconfig/mconf.c')
-rw-r--r--scripts/kconfig/mconf.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/scripts/kconfig/mconf.c b/scripts/kconfig/mconf.c
index e2e6ca8c7..d3ad12d90 100644
--- a/scripts/kconfig/mconf.c
+++ b/scripts/kconfig/mconf.c
@@ -12,8 +12,10 @@
12/* On Darwin, this may be needed to get SIGWINCH: */ 12/* On Darwin, this may be needed to get SIGWINCH: */
13#define _DARWIN_C_SOURCE 1 13#define _DARWIN_C_SOURCE 1
14 14
15#ifndef __MINGW32__
15#include <sys/ioctl.h> 16#include <sys/ioctl.h>
16#include <sys/wait.h> 17#include <sys/wait.h>
18#endif
17#include <ctype.h> 19#include <ctype.h>
18#include <errno.h> 20#include <errno.h>
19#include <fcntl.h> 21#include <fcntl.h>
@@ -23,7 +25,9 @@
23#include <stdlib.h> 25#include <stdlib.h>
24#include <string.h> 26#include <string.h>
25#include <strings.h> /* for strcasecmp */ 27#include <strings.h> /* for strcasecmp */
28#ifndef __MINGW32__
26#include <termios.h> 29#include <termios.h>
30#endif
27#include <unistd.h> 31#include <unistd.h>
28#include <locale.h> 32#include <locale.h>
29 33
@@ -266,11 +270,15 @@ static char input_buf[4096];
266static const char filename[] = ".config"; 270static const char filename[] = ".config";
267static char *args[1024], **argptr = args; 271static char *args[1024], **argptr = args;
268static int indent; 272static int indent;
273#ifndef __MINGW32__
269static struct termios ios_org; 274static struct termios ios_org;
275#endif
270static int rows = 0, cols = 0; 276static int rows = 0, cols = 0;
271static struct menu *current_menu; 277static struct menu *current_menu;
272static int child_count; 278static int child_count;
279#ifndef __MINGW32__
273static int do_resize; 280static int do_resize;
281#endif
274static int single_menu_mode; 282static int single_menu_mode;
275 283
276static void conf(struct menu *menu); 284static void conf(struct menu *menu);
@@ -290,6 +298,9 @@ static int cprint(const char *fmt, ...);
290 298
291static void init_wsize(void) 299static void init_wsize(void)
292{ 300{
301#ifdef __MINGW32__
302 fprintf(stderr, "Skipping attempt to change window size\n");
303#else
293 struct winsize ws; 304 struct winsize ws;
294 char *env; 305 char *env;
295 306
@@ -321,6 +332,7 @@ static void init_wsize(void)
321 332
322 rows -= 4; 333 rows -= 4;
323 cols -= 5; 334 cols -= 5;
335#endif
324} 336}
325 337
326static void cprint_init(void) 338static void cprint_init(void)
@@ -457,6 +469,10 @@ static void winch_handler(int sig)
457 469
458static int exec_conf(void) 470static int exec_conf(void)
459{ 471{
472#ifdef __MINGW32__
473 fprintf(stderr, "exec_conf not implemented\n");
474 exit(1);
475#else
460 int pipefd[2], stat, size; 476 int pipefd[2], stat, size;
461 sigset_t sset, osset; 477 sigset_t sset, osset;
462 478
@@ -530,6 +546,7 @@ static int exec_conf(void)
530 sigprocmask(SIG_SETMASK, &osset, NULL); 546 sigprocmask(SIG_SETMASK, &osset, NULL);
531 547
532 return WEXITSTATUS(stat); 548 return WEXITSTATUS(stat);
549#endif
533} 550}
534 551
535static void search_conf(void) 552static void search_conf(void)
@@ -1044,7 +1061,9 @@ static void conf_save(void)
1044 1061
1045static void conf_cleanup(void) 1062static void conf_cleanup(void)
1046{ 1063{
1064#ifndef __MINGW32__
1047 tcsetattr(1, TCSAFLUSH, &ios_org); 1065 tcsetattr(1, TCSAFLUSH, &ios_org);
1066#endif
1048 unlink(".help.tmp"); 1067 unlink(".help.tmp");
1049 unlink("lxdialog.scrltmp"); 1068 unlink("lxdialog.scrltmp");
1050} 1069}
@@ -1073,7 +1092,9 @@ int main(int ac, char **av)
1073 single_menu_mode = 1; 1092 single_menu_mode = 1;
1074 } 1093 }
1075 1094
1095#ifndef __MINGW32__
1076 tcgetattr(1, &ios_org); 1096 tcgetattr(1, &ios_org);
1097#endif
1077 atexit(conf_cleanup); 1098 atexit(conf_cleanup);
1078 init_wsize(); 1099 init_wsize();
1079 conf(&rootmenu); 1100 conf(&rootmenu);