From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: annulen@yandex.ru Received: from forward2o.cmail.yandex.net (forward2o.cmail.yandex.net [37.9.109.243]) by krantz.zx2c4.com (ZX2C4 Mail Server) with ESMTP id 9690d167 for ; Wed, 23 Nov 2016 07:41:43 +0000 (UTC) From: Konstantin Tokarev To: Jason A. Donenfeld , "qt-creator@qt-project.org" In-Reply-To: References: Subject: Re: [Qt-creator] Qt Creator for Linux Kernel Development MIME-Version: 1.0 Message-Id: <1566601479887120@web23m.yandex.ru> Date: Wed, 23 Nov 2016 10:45:20 +0300 Content-Type: text/plain Cc: WireGuard mailing list List-Id: Development discussion of WireGuard List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , 23.11.2016, 08:51, "Jason A. Donenfeld" : > Hello Eike & Qt Creator mailing list, > > I'm insane and decided to try using an IDE for Linux kernel > development. Much to my delight, it actually works well. (Everybody on > the mailing list to which this message is cross-posted just vomited a > little bit in their mouth and swallowed, but fear not: I'm a competent > VIM user too. It's just that sometimes clickity clicking around Qt > Creator is buttery nice. Here's a screenshot [2].) > > I'm working on a small kernel module [1], and for it I made a very > minimal .pro file to import its files into Qt Creator. I even hooked > the build/run commands up to my qemu testing rig. Seems to work pretty > well. Here's the .pro I use: > > CONFIG -= qt > INCLUDEPATH = /usr/src/linux/arch/x86/include > /usr/src/linux/arch/x86/include/generated/uapi /usr/src/linux/ > arch/x86/include/generated /usr/src/linux/include > /usr/src/linux/arch/x86/include/uapi /usr/src/linux/arch/x > 86/include/generated/uapi /usr/src/linux/include/uapi > /usr/src/linux/include/generated/uapi > DEFINES = __KERNEL__ DEBUG MODULE > SOURCES = $$system(find -L . -type f -iname $$system_quote(*.c) -and > -not -path $$system_quote(./tests/*)) $ > $system(find -L . -type f -iname $$system_quote(*.S) -and -not -path > $$system_quote(./tests/*)) > HEADERS = $$system(find -L . -type f -iname $$system_quote(*.h) -and > -not -path $$system_quote(./tests/*)) > > As you can see, it's a real hack. > > I also do development on the main Linux kernel tree, and similarly for > that, I have a .pro file that works well: > > CONFIG -= qt > INCLUDEPATH = $$system(find -L include/ -type d) > SOURCES = $$system(find -L . -type f -iname \'*.c\') > HEADERS = $$system(find -L . -type f -iname \'*.h\') > INCLUDEPATH = include/ arch/x86/include > > Download the linux sources, put that in the tree, and load it up in Qt > Creator. It works. Amazing! > > But don't get too excited. Unfortunately, there are two issues that > make things unbearable: > > (A) Qt Creator doesn't seem to parse the C correctly. Things like > designated initializers and a few other C features here and there just > don't get parsed correctly, and the IDE stops being useful. I suspect > this is because things are actually being parsed in C++ mode. Bummer. > Developers: any interest in improving C support in Qt Creator? > > (B) There is no way to tell Qt Creator that a particular header file > is included in every file -- that is, that gcc's "-include" is in use. > There is a way of messing with the "C++ Code Model" on a file-by-file > basis, for the duration of the time that the file is open, but no way > to automatically have it included in every file of the project. This > is a major hindrance. It means that every ifdef for every kconfig > option is a grayed out unclickable region, rendering most things > useless. BTW, I'm facing similar issue with QtWebKit: config.h is included into all source files, but never in headers, so all #if's in headers are disabled and code model does not function properly. > Developers: any interest in fixing this? I spoke to a few of > you in IRC several months ago about this, and there was interest, but > it seems to have evaporated. > > So, anyway, if you think it would be cool to be able to say, "Qt > Creator is used for Linux Kernel Development!", then maybe we can work > together to actually get things working properly. It's already 85% > there, and the remaining chunk seems well within reach. > > Not only that, but if Qt Creator becomes generally usable for ordinary > C projects, it would most likely become a regular tool during my > professional activities, namely, auditing large code bases for > vulnerabilities and improving the security of systems. > > Let me know if you are interested in assisting with this. > > Thanks, > Jason > > [1] https://www.wireguard.io/ > [2] https://data.zx2c4.com/qt-creator-wireguard-development.png > _______________________________________________ > Qt-creator mailing list > Qt-creator@qt-project.org > http://lists.qt-project.org/mailman/listinfo/qt-creator -- Regards, Konstantin