Re: [Qbs] bare-metal: Need help with adding of SDCC compiler
On Thu, Feb 21, 2019 at 9:52 PM Denis Shienkov wrote: > Hi guys. > > I have planns to add support for SDCC [1] compiler to QBS/QtC for > bare-metal devices. > > But problem is that this compiler supports multiple different arcitectures: > > c:\SDCC\bin>sdcc -v > SDCC : > mcs51/z80/z180/r2k/r3ka/gbz80/tlcs90/ds390/pic16/pic14/TININative/ds400/hc08/s08/stm8 > 3.8.0 #10562 (MINGW32) > published under GNU General Public License (GPL) > > The target architecture is specified trough the flag -m... So, in > different cases we wil get a different predefined macroses, e.g: > ... snip ... > So, it is problematic to define a compiler ABI and etc... > > Has anybody any suggestions how to solve this? Is any similar cases in > QtC/QBS? > Why should Qbs care about the predefined macros? Qtc needs them for the code model, but it passes -m flags (at least now with https://codereview.qt-project.org/254118). So in the kit you can set the default ABI (if any, or unknown otherwise), and the code model will pick up the correct ABI according to the compiler flags. - Orgad ___ Qbs mailing list Qbs@qt-project.org https://lists.qt-project.org/listinfo/qbs
Re: [Qbs] bare-metal: Need help with adding of SDCC compiler
> I have planns to add support for SDCC [1] compiler to QBS/QtC for > bare-metal devices. > > But problem is that this compiler supports multiple different arcitectures: Unlike your IAR implementation, I wouldn't probe the compiler and guess qbs.architecture. Instead I would expect the user to set qbs.architecture in the profile or in the product explicitly. I could be wrong, but I think that was the approach for all toolchains before probes were invented. > c:\SDCC\bin>sdcc -v > SDCC : > mcs51/z80/z180/r2k/r3ka/gbz80/tlcs90/ds390/pic16/pic14/TININative/ds400/hc08/s08/stm8 > > 3.8.0 #10562 (MINGW32) > published under GNU General Public License (GPL) > > The target architecture is specified trough the flag -m... So, in > different cases we wil get a different predefined macroses, e.g: > > === MCS51 === > > c:\SDCC\bin>sdcc -dM -E -mmcs51 e:\git\ng\git\123\qbs-git\main.c > #define __SDCC_mcs51 1 > #define __STDC_VERSION__ 201112L > #define __STDC_HOSTED__ 0 > #define __STDC_UTF_16__ 1 > #define __SDCC_VERSION_MINOR 8 > #define __SDCC_MODEL_SMALL 1 > #define __STDC_ISO_10646__ 201409L > #define __SDCC_VERSION_PATCH 0 > #define SDCC 380 > #define __SDCC_FLOAT_REENT 1 > #define __SDCC_VERSION_MAJOR 3 > #define __STDC_NO_VLA__ 1 > #define __SDCC 3_8_0 > #define __STDC_UTF_32__ 1 > #define __STDC_NO_THREADS__ 1 > #define __SDCC_CHAR_UNSIGNED 1 > #define __STDC_NO_ATOMICS__ 1 > #define __STDC__ 1 > #define __SDCC_REVISION 10562 > #define __STDC_NO_COMPLEX__ 1 > > === Z80 === > > c:\SDCC\bin>sdcc -dM -E -mz80 e:\git\ng\git\123\qbs-git\main.c > #define __STDC_VERSION__ 201112L > #define __SDCC_INT_LONG_REENT 1 > #define __STDC_HOSTED__ 0 > #define __STDC_UTF_16__ 1 > #define __SDCC_VERSION_MINOR 8 > #define __SDCC_z80 1 > #define __STDC_ISO_10646__ 201409L > #define __SDCC_VERSION_PATCH 0 > #define __SDCC_FLOAT_REENT 1 > #define __SDCC_VERSION_MAJOR 3 > #define __STDC_NO_VLA__ 1 > #define __SDCC 3_8_0 > #define __STDC_UTF_32__ 1 > #define __STDC_NO_THREADS__ 1 > #define __SDCC_CHAR_UNSIGNED 1 > #define __STDC_NO_ATOMICS__ 1 > #define __SDCC_STACK_AUTO 1 > #define __STDC__ 1 > #define __SDCC_REVISION 10562 > #define __STDC_NO_COMPLEX__ 1 > > and etc. > > So, it is problematic to define a compiler ABI and etc... > > Has anybody any suggestions how to solve this? Is any similar cases in > QtC/QBS? > > Because I have not ideas... > > BR, Denis > > > [1] http://sdcc.sourceforge.net/ > > ___ Qbs mailing list Qbs@qt-project.org https://lists.qt-project.org/listinfo/qbs
[Qbs] bare-metal: Need help with adding of SDCC compiler
Hi guys. I have planns to add support for SDCC [1] compiler to QBS/QtC for bare-metal devices. But problem is that this compiler supports multiple different arcitectures: c:\SDCC\bin>sdcc -v SDCC : mcs51/z80/z180/r2k/r3ka/gbz80/tlcs90/ds390/pic16/pic14/TININative/ds400/hc08/s08/stm8 3.8.0 #10562 (MINGW32) published under GNU General Public License (GPL) The target architecture is specified trough the flag -m... So, in different cases we wil get a different predefined macroses, e.g: === MCS51 === c:\SDCC\bin>sdcc -dM -E -mmcs51 e:\git\ng\git\123\qbs-git\main.c #define __SDCC_mcs51 1 #define __STDC_VERSION__ 201112L #define __STDC_HOSTED__ 0 #define __STDC_UTF_16__ 1 #define __SDCC_VERSION_MINOR 8 #define __SDCC_MODEL_SMALL 1 #define __STDC_ISO_10646__ 201409L #define __SDCC_VERSION_PATCH 0 #define SDCC 380 #define __SDCC_FLOAT_REENT 1 #define __SDCC_VERSION_MAJOR 3 #define __STDC_NO_VLA__ 1 #define __SDCC 3_8_0 #define __STDC_UTF_32__ 1 #define __STDC_NO_THREADS__ 1 #define __SDCC_CHAR_UNSIGNED 1 #define __STDC_NO_ATOMICS__ 1 #define __STDC__ 1 #define __SDCC_REVISION 10562 #define __STDC_NO_COMPLEX__ 1 === Z80 === c:\SDCC\bin>sdcc -dM -E -mz80 e:\git\ng\git\123\qbs-git\main.c #define __STDC_VERSION__ 201112L #define __SDCC_INT_LONG_REENT 1 #define __STDC_HOSTED__ 0 #define __STDC_UTF_16__ 1 #define __SDCC_VERSION_MINOR 8 #define __SDCC_z80 1 #define __STDC_ISO_10646__ 201409L #define __SDCC_VERSION_PATCH 0 #define __SDCC_FLOAT_REENT 1 #define __SDCC_VERSION_MAJOR 3 #define __STDC_NO_VLA__ 1 #define __SDCC 3_8_0 #define __STDC_UTF_32__ 1 #define __STDC_NO_THREADS__ 1 #define __SDCC_CHAR_UNSIGNED 1 #define __STDC_NO_ATOMICS__ 1 #define __SDCC_STACK_AUTO 1 #define __STDC__ 1 #define __SDCC_REVISION 10562 #define __STDC_NO_COMPLEX__ 1 and etc. So, it is problematic to define a compiler ABI and etc... Has anybody any suggestions how to solve this? Is any similar cases in QtC/QBS? Because I have not ideas... BR, Denis [1] http://sdcc.sourceforge.net/ ___ Qbs mailing list Qbs@qt-project.org https://lists.qt-project.org/listinfo/qbs