diff options
Diffstat (limited to 'tests/auto/blackbox/testdata-baremetal')
102 files changed, 1201 insertions, 0 deletions
diff --git a/tests/auto/blackbox/testdata-baremetal/BareMetalApplication.qbs b/tests/auto/blackbox/testdata-baremetal/BareMetalApplication.qbs new file mode 100644 index 000000000..7a35e4e13 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/BareMetalApplication.qbs @@ -0,0 +1,29 @@ +import qbs.Host + +BareMetalProduct { + type: "application" + consoleApplication: true + + property bool dummy: { + if (qbs.targetPlatform !== Host.platform() + || qbs.architecture !== Host.architecture()) { + + function supportsCrossRun() { + // We can run 32 bit applications on 64 bit Windows. + if (Host.platform() === "windows" && Host.architecture() === "x86_64" + && qbs.targetPlatform === "windows" && qbs.architecture === "x86") { + return true; + } + } + + if (!supportsCrossRun()) + console.info("targetPlatform differs from hostPlatform") + } + } + + Group { + condition: qbs.toolchain.includes("cosmic") + files: "cosmic.lkf" + fileTags: "linkerscript" + } +} diff --git a/tests/auto/blackbox/testdata-baremetal/BareMetalProduct.qbs b/tests/auto/blackbox/testdata-baremetal/BareMetalProduct.qbs new file mode 100644 index 000000000..446cfe086 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/BareMetalProduct.qbs @@ -0,0 +1,158 @@ +Product { + Depends { name: "cpp" } + cpp.positionIndependentCode: false + Properties { + condition: qbs.toolchain.includes("iar") + && qbs.architecture === "stm8" + cpp.driverLinkerFlags: [ + "--config_def", "_CSTACK_SIZE=0x100", + "--config_def", "_HEAP_SIZE=0x100", + ] + } + Properties { + condition: qbs.toolchain.includes("iar") + && qbs.architecture === "rl78" + cpp.driverLinkerFlags: [ + "--config_def", "_NEAR_HEAP_SIZE=256", + "--config_def", "_FAR_HEAP_SIZE=4096", + "--config_def", "_HUGE_HEAP_SIZE=0", + "--config_def", "_STACK_SIZE=128", + "--config_def", "_NEAR_CONST_LOCATION_SIZE=0x6F00", + "--config_def", "_NEAR_CONST_LOCATION_START=0x3000", + "--define_symbol", "_NEAR_CONST_LOCATION=0", + "--config", cpp.toolchainInstallPath + "/../config/lnkrl78_s3.icf" + ] + } + Properties { + condition: qbs.toolchain.includes("iar") + && qbs.architecture === "rh850" + cpp.driverLinkerFlags: [ + "--config_def", "CSTACK_SIZE=0x1000", + "--config_def", "HEAP_SIZE=0x1000", + "--config", cpp.toolchainInstallPath + "/../config/lnkrh850_g3m.icf" + ] + } + Properties { + condition: qbs.toolchain.includes("iar") + && qbs.architecture === "v850" + cpp.driverLinkerFlags: [ + "-D_CSTACK_SIZE=1000", + "-D_HEAP_SIZE=1000", + "-f", cpp.toolchainInstallPath + "/../config/lnk85.xcl" + ] + } + Properties { + condition: qbs.toolchain.includes("iar") + && qbs.architecture === "78k" + cpp.commonCompilerFlags: [ + "--core", "78k0", + "--code_model", "standard" + ] + cpp.driverLinkerFlags: [ + "-D_CSTACK_SIZE=80", + "-D_HEAP_SIZE=200", + "-D_CODEBANK_START=0", + "-D_CODEBANK_END=0", + "-D_CODEBANK_BANKS=0", + "-f", cpp.toolchainInstallPath + "/../config/lnk.xcl", + cpp.toolchainInstallPath + "/../lib/clib/cl78ks1.r26" + ] + } + Properties { + condition: qbs.toolchain.includes("iar") + && qbs.architecture === "sh" + cpp.driverLinkerFlags: [ + "--config_def", "_CSTACK_SIZE=0x800", + "--config_def", "_HEAP_SIZE=0x800", + "--config_def", "_INT_TABLE=0x10", + "--config", cpp.toolchainInstallPath + "/../config/generic.icf" + ] + } + Properties { + condition: qbs.toolchain.includes("iar") + && qbs.architecture === "hcs8" + cpp.driverLinkerFlags: [ + "-D_CSTACK_SIZE=200", + "-D_HEAP_SIZE=200", + "-f", cpp.toolchainInstallPath + "/../config/lnkunspecifieds08.xcl" + ] + } + Properties { + condition: qbs.toolchain.includes("iar") + && qbs.architecture === "m32c" + cpp.driverLinkerFlags: [ + "-D_CSTACK_SIZE=100", + "-D_NEAR_HEAP_SIZE=400", + "-D_FAR_HEAP_SIZE=400", + "-D_HUGE_HEAP_SIZE=400", + "-D_ISTACK_SIZE=40", + "-f", cpp.toolchainInstallPath + "/../config/lnkm32c.xcl", + cpp.toolchainInstallPath + (qbs.debugInformation ? "/../lib/dlib/dlm32cnf.r48" : "/../lib/clib/clm32cf.r48") + ] + } + Properties { + condition: qbs.toolchain.includes("iar") + && qbs.architecture === "riscv" + cpp.driverLinkerFlags: [ + "--config_def", "CSTACK_SIZE=0x1000", + "--config_def", "HEAP_SIZE=0x1000" + ] + } + Properties { + condition: qbs.toolchain.includes("iar") + && qbs.architecture === "m68k" + cpp.cFlags: [ + "--no_div" + ] + cpp.driverLinkerFlags: [ + "-D__FLASHBEGIN=0", + "-D__FLASHEND=1FFFF", + "-D__RAMBEGIN=800000", + "-D__RAMEND=803FFF", + "-D_CSTACK_SIZE=200", + "-D_HEAP_SIZE=1000", + "-D_VBR_ADDRESS=0", + "-f", cpp.toolchainInstallPath + "/../config/lnkm51ac128.xcl", + cpp.toolchainInstallPath + "/../lib/dlcfcffdn.r68" + ] + } + Properties { + condition: qbs.toolchain.includes("keil") + && qbs.architecture.startsWith("arm") + && cpp.compilerName.startsWith("armcc") + cpp.assemblerFlags: ["--cpu", "cortex-m0"] + cpp.commonCompilerFlags: ["--cpu", "cortex-m0"] + } + Properties { + condition: qbs.toolchain.includes("keil") + && qbs.architecture.startsWith("arm") + && cpp.compilerName.startsWith("armclang") + cpp.assemblerFlags: ["--cpu", "cortex-m0"] + cpp.commonCompilerFlags: ["-mcpu=cortex-m0", "--target=arm-arm-none-eabi"] + } + Properties { + condition: qbs.toolchain.includes("gcc") + && qbs.architecture.startsWith("arm") + cpp.driverFlags: ["-specs=nosys.specs"] + } + Properties { + condition: qbs.toolchain.includes("gcc") + && qbs.architecture === "xtensa" + cpp.driverFlags: ["-nostdlib"] + } + Properties { + condition: qbs.toolchain.includes("gcc") + && qbs.architecture === "msp430" + cpp.driverFlags: ["-mmcu=msp430f5529", "-nostdlib"] + } + Properties { + condition: qbs.toolchain.includes("gcc") + && qbs.architecture === "m32r" + cpp.driverFlags: ["-nostdlib"] + } + Properties { + condition: qbs.toolchain.includes("gcc") + && qbs.architecture === "riscv" + cpp.driverFlags: ["-nostdlib"] + } +} diff --git a/tests/auto/blackbox/testdata-baremetal/BareMetalStaticLibrary.qbs b/tests/auto/blackbox/testdata-baremetal/BareMetalStaticLibrary.qbs new file mode 100644 index 000000000..7259b1446 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/BareMetalStaticLibrary.qbs @@ -0,0 +1,3 @@ +BareMetalProduct { + type: "staticlibrary" +} diff --git a/tests/auto/blackbox/testdata-baremetal/compiler-defines-by-language/app.c b/tests/auto/blackbox/testdata-baremetal/compiler-defines-by-language/app.c new file mode 100644 index 000000000..58fe69254 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/compiler-defines-by-language/app.c @@ -0,0 +1,4 @@ +int main(void) +{ + return 0; +} diff --git a/tests/auto/blackbox/testdata-baremetal/compiler-defines-by-language/compiler-defines-by-language.qbs b/tests/auto/blackbox/testdata-baremetal/compiler-defines-by-language/compiler-defines-by-language.qbs new file mode 100644 index 000000000..73365ada4 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/compiler-defines-by-language/compiler-defines-by-language.qbs @@ -0,0 +1,73 @@ +import "../BareMetalApplication.qbs" as BareMetalApplication + +Project { + property bool supportsCpp: { + if (qbs.toolchain.includes("cosmic")) + return false; + if (qbs.toolchain.includes("sdcc")) + return false; + if (qbs.toolchain.includes("keil")) { + if (qbs.architecture === "mcs51" + || qbs.architecture === "mcs251" + || qbs.architecture === "c166") { + return false; + } + } + return true; + } + + BareMetalApplication { + name: "c_language" + files: ["app.c", "ctest.c"] + cpp.enableCompilerDefinesByLanguage: [] + property var foo: { + if (!cpp.compilerDefinesByLanguage) + throw "ASSERT cpp.compilerDefinesByLanguage: " + + cpp.compilerDefinesByLanguage; + if (!cpp.compilerDefinesByLanguage["c"]) + throw "ASSERT cpp.compilerDefinesByLanguage[\"c\"]: " + + cpp.compilerDefinesByLanguage["c"]; + if (cpp.compilerDefinesByLanguage["cpp"]) + throw "ASSERT !cpp.compilerDefinesByLanguage[\"cpp\"]: " + + cpp.compilerDefinesByLanguage["cpp"]; + } + } + + BareMetalApplication { + condition: supportsCpp + name: "cpp_language" + files: ["app.c", "cpptest.cpp"] + cpp.enableCompilerDefinesByLanguage: ["cpp"] + cpp.enableExceptions: false + property var foo: { + if (!cpp.compilerDefinesByLanguage) + throw "ASSERT cpp.compilerDefinesByLanguage: " + + cpp.compilerDefinesByLanguage; + if (cpp.compilerDefinesByLanguage["c"]) + throw "ASSERT !cpp.compilerDefinesByLanguage[\"c\"]: " + + cpp.compilerDefinesByLanguage["c"]; + if (!cpp.compilerDefinesByLanguage["cpp"]) + throw "ASSERT cpp.compilerDefinesByLanguage[\"cpp\"]: " + + cpp.compilerDefinesByLanguage["cpp"]; + } + } + + BareMetalApplication { + condition: supportsCpp + name: "c_and_cpp_language" + files: ["app.c", "ctest.c", "cpptest.cpp"] + cpp.enableCompilerDefinesByLanguage: ["c", "cpp"] + cpp.enableExceptions: false + property var foo: { + if (!cpp.compilerDefinesByLanguage) + throw "ASSERT cpp.compilerDefinesByLanguage: " + + cpp.compilerDefinesByLanguage; + if (!cpp.compilerDefinesByLanguage["c"]) + throw "ASSERT cpp.compilerDefinesByLanguage[\"c\"]: " + + cpp.compilerDefinesByLanguage["c"]; + if (!cpp.compilerDefinesByLanguage["cpp"]) + throw "ASSERT cpp.compilerDefinesByLanguage[\"cpp\"]: " + + cpp.compilerDefinesByLanguage["cpp"]; + } + } +} diff --git a/tests/auto/blackbox/testdata-baremetal/compiler-defines-by-language/cpptest.cpp b/tests/auto/blackbox/testdata-baremetal/compiler-defines-by-language/cpptest.cpp new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/compiler-defines-by-language/cpptest.cpp diff --git a/tests/auto/blackbox/testdata-baremetal/compiler-defines-by-language/ctest.c b/tests/auto/blackbox/testdata-baremetal/compiler-defines-by-language/ctest.c new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/compiler-defines-by-language/ctest.c diff --git a/tests/auto/blackbox/testdata-baremetal/compiler-include-paths/compiler-include-paths.qbs b/tests/auto/blackbox/testdata-baremetal/compiler-include-paths/compiler-include-paths.qbs new file mode 100644 index 000000000..5c73302ad --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/compiler-include-paths/compiler-include-paths.qbs @@ -0,0 +1,9 @@ +import "../BareMetalApplication.qbs" as BareMetalApplication + +BareMetalApplication { + files: ["main.c"] + property bool dummy: { + console.info("compilerIncludePaths: %%" + cpp.compilerIncludePaths + "%%"); + return true; + } +} diff --git a/tests/auto/blackbox/testdata-baremetal/compiler-include-paths/main.c b/tests/auto/blackbox/testdata-baremetal/compiler-include-paths/main.c new file mode 100644 index 000000000..58fe69254 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/compiler-include-paths/main.c @@ -0,0 +1,4 @@ +int main(void) +{ + return 0; +} diff --git a/tests/auto/blackbox/testdata-baremetal/compiler-listing/compiler-listing.qbs b/tests/auto/blackbox/testdata-baremetal/compiler-listing/compiler-listing.qbs new file mode 100644 index 000000000..6bd51e3bd --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/compiler-listing/compiler-listing.qbs @@ -0,0 +1,14 @@ +import "../BareMetalApplication.qbs" as BareMetalApplication + +BareMetalApplication { + condition: { + if (!qbs.toolchain.includes("gcc")) { + console.info("compiler listing suffix: %%" + cpp.compilerListingSuffix + "%%"); + return true; + } + console.info("unsupported toolset: %%" + + qbs.toolchainType + "%%, %%" + qbs.architecture + "%%"); + return false; + } + files: ["main.c", "fun.c"] +} diff --git a/tests/auto/blackbox/testdata-baremetal/compiler-listing/fun.c b/tests/auto/blackbox/testdata-baremetal/compiler-listing/fun.c new file mode 100644 index 000000000..3b8c8f2f4 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/compiler-listing/fun.c @@ -0,0 +1,4 @@ +int f(void) +{ + return 0; +} diff --git a/tests/auto/blackbox/testdata-baremetal/compiler-listing/main.c b/tests/auto/blackbox/testdata-baremetal/compiler-listing/main.c new file mode 100644 index 000000000..2c3d7726c --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/compiler-listing/main.c @@ -0,0 +1,6 @@ +extern int f(void); + +int main(void) +{ + return f(); +} diff --git a/tests/auto/blackbox/testdata-baremetal/cosmic.lkf b/tests/auto/blackbox/testdata-baremetal/cosmic.lkf new file mode 100644 index 000000000..90c254d1e --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/cosmic.lkf @@ -0,0 +1 @@ +@* diff --git a/tests/auto/blackbox/testdata-baremetal/defines/defines.qbs b/tests/auto/blackbox/testdata-baremetal/defines/defines.qbs new file mode 100644 index 000000000..b257a8a4b --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/defines/defines.qbs @@ -0,0 +1,6 @@ +import "../BareMetalApplication.qbs" as BareMetalApplication + +BareMetalApplication { + cpp.defines: ["FOO", "BAR"] + files: ["main.c"] +} diff --git a/tests/auto/blackbox/testdata-baremetal/defines/main.c b/tests/auto/blackbox/testdata-baremetal/defines/main.c new file mode 100644 index 000000000..d2d4769e4 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/defines/main.c @@ -0,0 +1,11 @@ +#ifndef FOO +#error FOO missing! +#endif +#ifndef BAR +#error BAR missing! +#endif + +int main(void) +{ + return 0; +} diff --git a/tests/auto/blackbox/testdata-baremetal/distribution-include-paths/bar/bar.h b/tests/auto/blackbox/testdata-baremetal/distribution-include-paths/bar/bar.h new file mode 100644 index 000000000..49ffa0b12 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/distribution-include-paths/bar/bar.h @@ -0,0 +1,6 @@ +#ifndef BAR_H +#define BAR_H + +#define BAR_VALUE 1 + +#endif // BAR_H diff --git a/tests/auto/blackbox/testdata-baremetal/distribution-include-paths/distribution-include-paths.qbs b/tests/auto/blackbox/testdata-baremetal/distribution-include-paths/distribution-include-paths.qbs new file mode 100644 index 000000000..0fded6a46 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/distribution-include-paths/distribution-include-paths.qbs @@ -0,0 +1,6 @@ +import "../BareMetalApplication.qbs" as BareMetalApplication + +BareMetalApplication { + files: ["main.c"] + cpp.distributionIncludePaths: ["foo", "bar"] +} diff --git a/tests/auto/blackbox/testdata-baremetal/distribution-include-paths/foo/foo.h b/tests/auto/blackbox/testdata-baremetal/distribution-include-paths/foo/foo.h new file mode 100644 index 000000000..dc510379d --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/distribution-include-paths/foo/foo.h @@ -0,0 +1,6 @@ +#ifndef FOO_H +#define FOO_H + +#define FOO_VALUE 1 + +#endif // FOO_H diff --git a/tests/auto/blackbox/testdata-baremetal/distribution-include-paths/main.c b/tests/auto/blackbox/testdata-baremetal/distribution-include-paths/main.c new file mode 100644 index 000000000..aabc97a0c --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/distribution-include-paths/main.c @@ -0,0 +1,7 @@ +#include <foo.h> +#include <bar.h> + +int main(void) +{ + return FOO_VALUE - BAR_VALUE; +} diff --git a/tests/auto/blackbox/testdata-baremetal/external-static-libraries/external-static-libraries.qbs b/tests/auto/blackbox/testdata-baremetal/external-static-libraries/external-static-libraries.qbs new file mode 100644 index 000000000..7336e3970 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/external-static-libraries/external-static-libraries.qbs @@ -0,0 +1,34 @@ +import "../BareMetalApplication.qbs" as BareMetalApplication +import "../BareMetalStaticLibrary.qbs" as BareMetalStaticLibrary + +Project { + property string outputLibrariesDirectory: buildDirectory + "/libs" + BareMetalStaticLibrary { + name: "lib-a" + destinationDirectory: project.outputLibrariesDirectory + Depends { name: "cpp" } + Properties { + condition: qbs.targetOS.includes("darwin") + bundle.isBundle: false + } + files: ["lib-a.c"] + } + BareMetalStaticLibrary { + name: "lib-b" + destinationDirectory: project.outputLibrariesDirectory + Depends { name: "cpp" } + Depends { name: "lib-a" } + Properties { + condition: qbs.targetOS.includes("darwin") + bundle.isBundle: false + } + files: ["lib-b.c"] + } + BareMetalApplication { + Depends { name: "lib-a"; cpp.link: false } + Depends { name: "lib-b"; cpp.link: false } + files: ["main.c"] + cpp.libraryPaths: [project.outputLibrariesDirectory] + cpp.staticLibraries: ["lib-b", "lib-a"] + } +} diff --git a/tests/auto/blackbox/testdata-baremetal/external-static-libraries/lib-a.c b/tests/auto/blackbox/testdata-baremetal/external-static-libraries/lib-a.c new file mode 100644 index 000000000..13401861f --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/external-static-libraries/lib-a.c @@ -0,0 +1,4 @@ +int a(void) +{ + return 0; +} diff --git a/tests/auto/blackbox/testdata-baremetal/external-static-libraries/lib-b.c b/tests/auto/blackbox/testdata-baremetal/external-static-libraries/lib-b.c new file mode 100644 index 000000000..5d45b8175 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/external-static-libraries/lib-b.c @@ -0,0 +1,6 @@ +extern int a(void); + +int b(void) +{ + return a(); +} diff --git a/tests/auto/blackbox/testdata-baremetal/external-static-libraries/main.c b/tests/auto/blackbox/testdata-baremetal/external-static-libraries/main.c new file mode 100644 index 000000000..84ef5e51e --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/external-static-libraries/main.c @@ -0,0 +1,6 @@ +extern int b(); + +int main(void) +{ + return b(); +} diff --git a/tests/auto/blackbox/testdata-baremetal/linker-map/linker-map.qbs b/tests/auto/blackbox/testdata-baremetal/linker-map/linker-map.qbs new file mode 100644 index 000000000..fe93ac144 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/linker-map/linker-map.qbs @@ -0,0 +1,8 @@ +import "../BareMetalApplication.qbs" as BareMetalApplication + +BareMetalApplication { + property bool dummy: { + console.info("linker map suffix: %%" + cpp.linkerMapSuffix + "%%"); + } + files: ["main.c"] +} diff --git a/tests/auto/blackbox/testdata-baremetal/linker-map/main.c b/tests/auto/blackbox/testdata-baremetal/linker-map/main.c new file mode 100644 index 000000000..58fe69254 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/linker-map/main.c @@ -0,0 +1,4 @@ +int main(void) +{ + return 0; +} diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-application/main.c b/tests/auto/blackbox/testdata-baremetal/one-object-application/main.c new file mode 100644 index 000000000..58fe69254 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/one-object-application/main.c @@ -0,0 +1,4 @@ +int main(void) +{ + return 0; +} diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-application/one-object-application.qbs b/tests/auto/blackbox/testdata-baremetal/one-object-application/one-object-application.qbs new file mode 100644 index 000000000..482425b5f --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/one-object-application/one-object-application.qbs @@ -0,0 +1,5 @@ +import "../BareMetalApplication.qbs" as BareMetalApplication + +BareMetalApplication { + files: ["main.c"] +} diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/78k-iar.s b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/78k-iar.s new file mode 100644 index 000000000..25f0e2bbd --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/78k-iar.s @@ -0,0 +1,6 @@ + PUBLIC main + RSEG CODE:CODE:NOROOT(0) +main: + MOVW AX, #0 + RET + END diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/arm-cosmic.s b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/arm-cosmic.s new file mode 100644 index 000000000..4b45cc989 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/arm-cosmic.s @@ -0,0 +1,5 @@ +_main: + movs r0, #0 + bx lr + xdef _main + end diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/arm-gcc.s b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/arm-gcc.s new file mode 100644 index 000000000..c7b894230 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/arm-gcc.s @@ -0,0 +1,5 @@ + .global main + .type main, %function +main: + mov r0, #0 + bx lr diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/arm-iar.s b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/arm-iar.s new file mode 100644 index 000000000..0a13a5dc2 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/arm-iar.s @@ -0,0 +1,7 @@ + PUBLIC main + SECTION `.text`:CODE:NOROOT(1) + THUMB +main: + MOVS R0, #+0 + BX LR + END diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/arm-keil.s b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/arm-keil.s new file mode 100644 index 000000000..f3fcd50fe --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/arm-keil.s @@ -0,0 +1,7 @@ + THUMB + AREA ||.text||, CODE, READONLY, ALIGN = 1 +main PROC + MOVS r0, #0 + BX lr + ENDP + END diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/avr-gcc.s b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/avr-gcc.s new file mode 100644 index 000000000..4ba005a47 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/avr-gcc.s @@ -0,0 +1,6 @@ + .global main + .type main, %function +main: + ldi r24, 0 + ldi r25, 0 + ret diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/avr-iar.s b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/avr-iar.s new file mode 100644 index 000000000..49e9d476e --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/avr-iar.s @@ -0,0 +1,7 @@ + PUBLIC main + RSEG CODE:CODE:NOROOT(1) +main: + LDI R16, 0 + LDI R17, 0 + RET + END diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/avr32-gcc.s b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/avr32-gcc.s new file mode 100644 index 000000000..879e54150 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/avr32-gcc.s @@ -0,0 +1,8 @@ + .global main + .type main, @function +main: + stm --sp, r7, lr + mov r7, sp + mov r8, 0 + mov r12, r8 + ldm sp++, r7, pc diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/avr32-iar.s b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/avr32-iar.s new file mode 100644 index 000000000..c5e78896f --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/avr32-iar.s @@ -0,0 +1,7 @@ + PUBLIC main + RSEG CODE32:CODE:REORDER:NOROOT(2) + CODE +main: + MOV R12, 0x0 + RET R12 + END diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/c166-keil.s b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/c166-keil.s new file mode 100644 index 000000000..394bc2ae4 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/c166-keil.s @@ -0,0 +1,7 @@ +MAIN_SEG SECTION CODE WORD 'NCODE' +main PROC NEAR + MOV R4, #0 + RET +main ENDP +MAIN_SEG ENDS + END diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/cr16-iar.s b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/cr16-iar.s new file mode 100644 index 000000000..4a14de6a1 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/cr16-iar.s @@ -0,0 +1,6 @@ + PUBLIC main + RSEG CODE:CODE:NOROOT(0) +main: + MOVW $0, R0 + JUMP (RA) + END diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/hcs12-cosmic.s b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/hcs12-cosmic.s new file mode 100644 index 000000000..c33c2b32d --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/hcs12-cosmic.s @@ -0,0 +1,5 @@ +_main: + .dcall "2,0,_main" + rts + xdef _main + end diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/hcs12-iar.s b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/hcs12-iar.s new file mode 100644 index 000000000..4344e757f --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/hcs12-iar.s @@ -0,0 +1,7 @@ + PUBLIC main + RSEG CODE:CODE:REORDER:NOROOT(0) +main: + CLRB + CLRA + RTS + END diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/hcs8-cosmic.s b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/hcs8-cosmic.s new file mode 100644 index 000000000..c33c2b32d --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/hcs8-cosmic.s @@ -0,0 +1,5 @@ +_main: + .dcall "2,0,_main" + rts + xdef _main + end diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/hcs8-iar.s b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/hcs8-iar.s new file mode 100644 index 000000000..883dfdcad --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/hcs8-iar.s @@ -0,0 +1,6 @@ + PUBLIC main + RSEG CODE:CODE:REORDER:NOROOT(0) +main: + LDHX #0x0000 + RTS + END diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/hcs8-sdcc.s b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/hcs8-sdcc.s new file mode 100644 index 000000000..f47fed1be --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/hcs8-sdcc.s @@ -0,0 +1,6 @@ + .globl main + .area DSEG (PAG) + .area HOME (CODE) +main: + clra + tax diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/m16c-iar.s b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/m16c-iar.s new file mode 100644 index 000000000..4153f290e --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/m16c-iar.s @@ -0,0 +1,6 @@ + PUBLIC main + RSEG CODE:CODE:REORDER:NOROOT(0) +main: + MOV.W #0x0, R0 + RTS + END diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/m32c-gcc.s b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/m32c-gcc.s new file mode 100644 index 000000000..173c04c39 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/m32c-gcc.s @@ -0,0 +1,5 @@ + .global _main + .type _main, @function +_main: + mov.w #0, r0 + rts diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/m32c-iar.s b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/m32c-iar.s new file mode 100644 index 000000000..4153f290e --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/m32c-iar.s @@ -0,0 +1,6 @@ + PUBLIC main + RSEG CODE:CODE:REORDER:NOROOT(0) +main: + MOV.W #0x0, R0 + RTS + END diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/m32r-gcc.s b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/m32r-gcc.s new file mode 100644 index 000000000..dfcf42ca1 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/m32r-gcc.s @@ -0,0 +1,9 @@ + .global main + .type main, @function +main: + push fp + mv fp, sp + ldi r4, #0 + mv r0, r4 + pop fp + jmp lr diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/m68k-cosmic.s b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/m68k-cosmic.s new file mode 100644 index 000000000..811b1d79e --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/m68k-cosmic.s @@ -0,0 +1,5 @@ +_main: + .dcall "8,0,_main" + rts + xdef _main + end diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/m68k-gcc.s b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/m68k-gcc.s new file mode 100644 index 000000000..fdde81dae --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/m68k-gcc.s @@ -0,0 +1,7 @@ + .global main + .type main, @function +main: + link.w %fp, #0 + clr.l %d0 + unlk %fp + rts diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/m68k-iar.s b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/m68k-iar.s new file mode 100644 index 000000000..9811be134 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/m68k-iar.s @@ -0,0 +1,6 @@ + PUBLIC main + RSEG FCODE:CODE:NOROOT(1) +main: + CLR.L D0 + RTS + END diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/mcs251-keil.s b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/mcs251-keil.s new file mode 100644 index 000000000..312cc9680 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/mcs251-keil.s @@ -0,0 +1,8 @@ +PUBLIC main +MAIN_SEG SEGMENT CODE + RSEG MAIN_SEG +main PROC + XRL WR6,WR6 + RET + ENDP + END diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/mcs51-iar.s b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/mcs51-iar.s new file mode 100644 index 000000000..09cc64613 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/mcs51-iar.s @@ -0,0 +1,7 @@ + PUBLIC main + RSEG NEAR_CODE:CODE:NOROOT(0) +main: + MOV R2, #0x0 + MOV R3, #0x0 + RET + END diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/mcs51-keil.s b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/mcs51-keil.s new file mode 100644 index 000000000..28174d0e2 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/mcs51-keil.s @@ -0,0 +1,8 @@ +PUBLIC main +MAIN_SEG SEGMENT CODE + RSEG MAIN_SEG +main: + MOV R6, #0x0 + MOV R7, #0x0 + RET + END diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/mcs51-sdcc.s b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/mcs51-sdcc.s new file mode 100644 index 000000000..eaa6467e3 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/mcs51-sdcc.s @@ -0,0 +1,7 @@ + .globl main + .area PSEG (PAG,XDATA) + .area XSEG (XDATA) + .area HOME (CODE) +main: + mov dptr, #0x0000 + ret diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/msp430-gcc.s b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/msp430-gcc.s new file mode 100644 index 000000000..8e8a24980 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/msp430-gcc.s @@ -0,0 +1,5 @@ + .global main + .type main, %function +main: + mov #0, r15 + .LIRD0: diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/msp430-iar.s b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/msp430-iar.s new file mode 100644 index 000000000..fbabe3ba8 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/msp430-iar.s @@ -0,0 +1,6 @@ + PUBLIC main + RSEG `CODE`:CODE:REORDER:NOROOT(1) +main: + MOV.W #0x0, R12 + RET + END diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/one-object-asm-application.qbs b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/one-object-asm-application.qbs new file mode 100644 index 000000000..e8805225c --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/one-object-asm-application.qbs @@ -0,0 +1,122 @@ +import "../BareMetalApplication.qbs" as BareMetalApplication + +BareMetalApplication { + condition: { + if (qbs.toolchainType === "cosmic") { + if (qbs.architecture.startsWith("arm")) + return true; + if (qbs.architecture === "stm8") + return true; + if (qbs.architecture === "hcs8") + return true; + if (qbs.architecture === "hcs12") + return true; + if (qbs.architecture === "m68k") + return true; + } else if (qbs.toolchainType === "keil") { + if (qbs.architecture.startsWith("arm")) + return true; + if (qbs.architecture === "mcs51") + return true; + if (qbs.architecture === "mcs251") + return true; + if (qbs.architecture === "c166") + return true; + } else if (qbs.toolchainType === "iar") { + if (qbs.architecture.startsWith("arm")) + return true; + if (qbs.architecture === "mcs51") + return true; + if (qbs.architecture === "stm8") + return true; + if (qbs.architecture === "avr") + return true; + if (qbs.architecture === "avr32") + return true; + if (qbs.architecture === "msp430") + return true; + if (qbs.architecture === "rl78") + return true; + if (qbs.architecture === "rh850") + return true; + if (qbs.architecture === "v850") + return true; + if (qbs.architecture === "78k") + return true; + if (qbs.architecture === "r32c") + return true; + if (qbs.architecture === "sh") + return true; + if (qbs.architecture === "cr16") + return true; + if (qbs.architecture === "m16c") + return true; + if (qbs.architecture === "hcs8") + return true; + if (qbs.architecture === "hcs12") + return true; + if (qbs.architecture === "rx") + return true; + if (qbs.architecture === "m32c") + return true; + if (qbs.architecture === "riscv") + return true; + if (qbs.architecture === "m68k") + return true; + } else if (qbs.toolchainType === "sdcc") { + if (qbs.architecture === "mcs51") + return true; + if (qbs.architecture === "stm8") + return true; + if (qbs.architecture === "hcs8") + return true; + } else if (qbs.toolchainType === "gcc") { + if (qbs.architecture.startsWith("arm")) + return true; + if (qbs.architecture === "avr") + return true; + if (qbs.architecture === "avr32") + return true; + if (qbs.architecture === "msp430") + return true; + if (qbs.architecture === "xtensa") + return true; + if (qbs.architecture === "rl78") + return true; + if (qbs.architecture === "m32c") + return true; + if (qbs.architecture === "m32r") + return true; + if (qbs.architecture === "m68k") + return true; + if (qbs.architecture === "v850") + return true; + if (qbs.architecture === "riscv") + return true; + if (qbs.architecture === "rx") + return true; + } + console.info("unsupported toolset: %%" + + qbs.toolchainType + "%%, %%" + qbs.architecture + "%%"); + return false; + } + + Properties { + condition: qbs.toolchainType === "gcc" + && qbs.architecture === "msp430" + // We need to use this workaround to enable + // the cpp.driverFlags property. + cpp.linkerPath: cpp.compilerPathByLanguage["c"] + } + + Properties { + condition: qbs.toolchainType === "iar" + && qbs.architecture.startsWith("arm") + cpp.entryPoint: "main" + } + + cpp.linkerPath: original + + files: [(qbs.architecture.startsWith("arm") ? "arm" : qbs.architecture) + + "-" + qbs.toolchainType + ".s"] +} diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/r32c-iar.s b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/r32c-iar.s new file mode 100644 index 000000000..844306811 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/r32c-iar.s @@ -0,0 +1,7 @@ + PUBLIC main + RSEG CODE24:CODE:REORDER:NOROOT(0) +main: + MOV.L:Z #0x0, R2R0 + RTS + RSEG SBREF:DATA:NOROOT(0) + END diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/rh850-iar.s b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/rh850-iar.s new file mode 100644 index 000000000..8901027aa --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/rh850-iar.s @@ -0,0 +1,7 @@ + PUBLIC _main + SECTION `.text`:CODE:NOROOT(2) + CODE +_main: + MOV r0, r10 + JMP [lp] + END diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/riscv-gcc.s b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/riscv-gcc.s new file mode 100644 index 000000000..d09097804 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/riscv-gcc.s @@ -0,0 +1,11 @@ + .globl main + .type main, @function +main: + add sp, sp, -16 + sd s0, 8(sp) + add s0, sp, 16 + li a5, 0 + mv a0, a5 + ld s0, 8(sp) + add sp, sp, 16 + jr ra diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/riscv-iar.s b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/riscv-iar.s new file mode 100644 index 000000000..e19fdfddb --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/riscv-iar.s @@ -0,0 +1,7 @@ + PUBLIC main + SECTION `.text`:CODE:REORDER:NOROOT(2) + CODE +main: + MV A0, ZERO + RET + END diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/rl78-gcc.s b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/rl78-gcc.s new file mode 100644 index 000000000..59510bd01 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/rl78-gcc.s @@ -0,0 +1,11 @@ +r8 = 0xffef0 +.text + .global _main + .type _main, @function +_main: + subw sp, #2 + clrw ax + movw [sp], ax + movw r8, ax + addw sp, #2 + ret diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/rl78-iar.s b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/rl78-iar.s new file mode 100644 index 000000000..1f00996cc --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/rl78-iar.s @@ -0,0 +1,7 @@ + PUBLIC _main + SECTION `.text`:CODE:NOROOT(0) + CODE +_main: + CLRW AX + RET + END diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/rx-gcc.s b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/rx-gcc.s new file mode 100644 index 000000000..501d4cd7e --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/rx-gcc.s @@ -0,0 +1,8 @@ + .global _main + .type _main, @function +_main: + push.l r10 + mov.L r0, r10 + mov.L #0, r5 + mov.L r5, r1 + rtsd #4, r10-r10 diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/rx-iar.s b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/rx-iar.s new file mode 100644 index 000000000..cc1573431 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/rx-iar.s @@ -0,0 +1,5 @@ + PUBLIC _main + SECTION CODE:CODE:ROOT(2) +_main: + BRA _main + END diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/sh-iar.s b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/sh-iar.s new file mode 100644 index 000000000..d86780310 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/sh-iar.s @@ -0,0 +1,7 @@ + PUBLIC _main + SECTION `.code32.text`:CODE:NOROOT(2) +_main: + CODE + MOV #0, R0 + RTS/N + END diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/stm8-cosmic.s b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/stm8-cosmic.s new file mode 100644 index 000000000..818b0d680 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/stm8-cosmic.s @@ -0,0 +1,7 @@ + scross off +_main: + .dcall "2,0,_main" + ret + .scheck _main + xdef _main + end diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/stm8-iar.s b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/stm8-iar.s new file mode 100644 index 000000000..674e20de6 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/stm8-iar.s @@ -0,0 +1,7 @@ + PUBLIC main + SECTION `.near_func.text`:CODE:REORDER:NOROOT(0) + CODE +main: + CLRW X + RET + END diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/stm8-sdcc.s b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/stm8-sdcc.s new file mode 100644 index 000000000..1a552f4a4 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/stm8-sdcc.s @@ -0,0 +1,7 @@ + .globl main + .area DATA + .area SSEG + .area HOME +main: + clrw x + ret diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/v850-gcc.s b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/v850-gcc.s new file mode 100644 index 000000000..3599a1fb1 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/v850-gcc.s @@ -0,0 +1,11 @@ + .global _main + .type _main, @function +_main: + add -4, sp + st.w r29, 0[sp] + mov sp, r29 + mov 0, r10 + mov r29, sp + ld.w 0[sp], r29 + add 4, sp + jmp [r31] diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/v850-iar.s b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/v850-iar.s new file mode 100644 index 000000000..4ccfacd64 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/v850-iar.s @@ -0,0 +1,7 @@ + PUBLIC _main + RSEG `CODE`:CODE:NOROOT(2) + CODE +_main: + MOV zero, r1 + JMP [lp] + END diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/xtensa-gcc.s b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/xtensa-gcc.s new file mode 100644 index 000000000..c21000905 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/xtensa-gcc.s @@ -0,0 +1,11 @@ + .global main + .type main, @function +main: + addi sp, sp, -16 + s32i.n a15, sp, 12 + mov.n a15, sp + movi.n a2, 0 + mov.n sp, a15 + l32i.n a15, sp, 12 + addi sp, sp, 16 + ret.n diff --git a/tests/auto/blackbox/testdata-baremetal/preinclude-headers/main.c b/tests/auto/blackbox/testdata-baremetal/preinclude-headers/main.c new file mode 100644 index 000000000..755192287 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/preinclude-headers/main.c @@ -0,0 +1,4 @@ +int main(void) +{ + return PREINCLUDE_VALUE; +} diff --git a/tests/auto/blackbox/testdata-baremetal/preinclude-headers/preinclude-headers.qbs b/tests/auto/blackbox/testdata-baremetal/preinclude-headers/preinclude-headers.qbs new file mode 100644 index 000000000..0ded6ff15 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/preinclude-headers/preinclude-headers.qbs @@ -0,0 +1,18 @@ +import "../BareMetalApplication.qbs" as BareMetalApplication + +BareMetalApplication { + condition: { + if (qbs.toolchainType === "keil") { + if (qbs.architecture === "mcs51" + || qbs.architecture === "mcs251" + || qbs.architecture === "c166") { + console.info("unsupported toolset: %%" + + qbs.toolchainType + "%%, %%" + qbs.architecture + "%%"); + return false; + } + } + return true; + } + cpp.prefixHeaders: ["preinclude.h"] + files: ["main.c"] +} diff --git a/tests/auto/blackbox/testdata-baremetal/preinclude-headers/preinclude.h b/tests/auto/blackbox/testdata-baremetal/preinclude-headers/preinclude.h new file mode 100644 index 000000000..6b68e4826 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/preinclude-headers/preinclude.h @@ -0,0 +1,6 @@ +#ifndef PREINCLUDE_H +#define PREINCLUDE_H + +#define PREINCLUDE_VALUE 0 + +#endif // PREINCLUDE_H diff --git a/tests/auto/blackbox/testdata-baremetal/shared-libraries/app.c b/tests/auto/blackbox/testdata-baremetal/shared-libraries/app.c new file mode 100644 index 000000000..f2ecb5f55 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/shared-libraries/app.c @@ -0,0 +1,12 @@ +#include "../dllexport.h" + +#include <stdio.h> + +DLL_IMPORT void foo(void); + +int main(void) +{ + printf("Hello from app\n"); + foo(); + return 0; +} diff --git a/tests/auto/blackbox/testdata-baremetal/shared-libraries/shared-libraries.qbs b/tests/auto/blackbox/testdata-baremetal/shared-libraries/shared-libraries.qbs new file mode 100644 index 000000000..fded553f6 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/shared-libraries/shared-libraries.qbs @@ -0,0 +1,32 @@ +import "../BareMetalApplication.qbs" as BareMetalApplication + +Project { + condition: { + if (qbs.targetPlatform === "windows" && qbs.architecture === "x86") { + if (qbs.toolchainType === "watcom") + return true; + if (qbs.toolchainType === "dmc") + return true; + } + + if (qbs.toolchainType === "msvc") + return true; + + console.info("unsupported toolset: %%" + + qbs.toolchainType + "%%, %%" + qbs.architecture + "%%"); + return false; + } + + DynamicLibrary { + Depends { name: "cpp" } + destinationDirectory: "bin" + name: "shared" + files: ["shared.c"] + } + BareMetalApplication { + Depends { name: "shared" } + destinationDirectory: "bin" + name: "app" + files: ["app.c"] + } +} diff --git a/tests/auto/blackbox/testdata-baremetal/shared-libraries/shared.c b/tests/auto/blackbox/testdata-baremetal/shared-libraries/shared.c new file mode 100644 index 000000000..ab0c110fb --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/shared-libraries/shared.c @@ -0,0 +1,19 @@ +#include "../dllexport.h" + +#include <stdio.h> + +#ifdef __DMC__ +#include <windows.h> +#define EXPORT_FUN _export +BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved) +{ + return TRUE; +} +#else +#define EXPORT_FUN +#endif // __DMC__ + +DLL_EXPORT void EXPORT_FUN foo(void) +{ + printf("Hello from lib\n"); +} diff --git a/tests/auto/blackbox/testdata-baremetal/static-library-dependencies/a1.c b/tests/auto/blackbox/testdata-baremetal/static-library-dependencies/a1.c new file mode 100644 index 000000000..b593e95d8 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/static-library-dependencies/a1.c @@ -0,0 +1,4 @@ +int a1(void) +{ + return 0; +} diff --git a/tests/auto/blackbox/testdata-baremetal/static-library-dependencies/a2.c b/tests/auto/blackbox/testdata-baremetal/static-library-dependencies/a2.c new file mode 100644 index 000000000..35ab7feb3 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/static-library-dependencies/a2.c @@ -0,0 +1,4 @@ +int a2(void) +{ + return 0; +} diff --git a/tests/auto/blackbox/testdata-baremetal/static-library-dependencies/app.c b/tests/auto/blackbox/testdata-baremetal/static-library-dependencies/app.c new file mode 100644 index 000000000..9814bfd9c --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/static-library-dependencies/app.c @@ -0,0 +1,6 @@ +extern int e(void); + +int main(void) +{ + return e(); +} diff --git a/tests/auto/blackbox/testdata-baremetal/static-library-dependencies/b.c b/tests/auto/blackbox/testdata-baremetal/static-library-dependencies/b.c new file mode 100644 index 000000000..92df418d1 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/static-library-dependencies/b.c @@ -0,0 +1,6 @@ +extern int a1(void); + +int b(void) +{ + return a1(); +} diff --git a/tests/auto/blackbox/testdata-baremetal/static-library-dependencies/c.c b/tests/auto/blackbox/testdata-baremetal/static-library-dependencies/c.c new file mode 100644 index 000000000..0c0e350f2 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/static-library-dependencies/c.c @@ -0,0 +1,6 @@ +extern int a2(void); + +int c(void) +{ + return a2(); +} diff --git a/tests/auto/blackbox/testdata-baremetal/static-library-dependencies/d.c b/tests/auto/blackbox/testdata-baremetal/static-library-dependencies/d.c new file mode 100644 index 000000000..a3fc084f5 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/static-library-dependencies/d.c @@ -0,0 +1,7 @@ +extern int b(void); +extern int c(void); + +int d(void) +{ + return b() + c(); +} diff --git a/tests/auto/blackbox/testdata-baremetal/static-library-dependencies/e.c b/tests/auto/blackbox/testdata-baremetal/static-library-dependencies/e.c new file mode 100644 index 000000000..9381e845c --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/static-library-dependencies/e.c @@ -0,0 +1,7 @@ +extern int d(void); + +int e(void) +{ + return d(); +} + diff --git a/tests/auto/blackbox/testdata-baremetal/static-library-dependencies/static-library-dependencies.qbs b/tests/auto/blackbox/testdata-baremetal/static-library-dependencies/static-library-dependencies.qbs new file mode 100644 index 000000000..7184f47ea --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/static-library-dependencies/static-library-dependencies.qbs @@ -0,0 +1,40 @@ +import "../BareMetalApplication.qbs" as BareMetalApplication +import "../BareMetalStaticLibrary.qbs" as BareMetalStaticLibrary + +Project { + BareMetalStaticLibrary { + name: "lib-a" + Depends { name: "cpp" } + files: ["a1.c", "a2.c"] + } + BareMetalStaticLibrary { + name: "lib-b" + Depends { name: "cpp" } + Depends { name: "lib-a" } + files: ["b.c"] + } + BareMetalStaticLibrary { + name: "lib-c" + Depends { name: "cpp" } + Depends { name: "lib-a" } + files: ["c.c"] + } + BareMetalStaticLibrary { + name: "lib-d" + Depends { name: "cpp" } + Depends { name: "lib-b" } + Depends { name: "lib-c" } + files: ["d.c"] + } + BareMetalStaticLibrary { + name: "lib-e" + Depends { name: "cpp" } + Depends { name: "lib-d" } + files: ["e.c"] + } + BareMetalApplication { + name: "app" + Depends { name: "lib-e" } + files: ["app.c"] + } +} diff --git a/tests/auto/blackbox/testdata-baremetal/system-include-paths/bar/bar.h b/tests/auto/blackbox/testdata-baremetal/system-include-paths/bar/bar.h new file mode 100644 index 000000000..49ffa0b12 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/system-include-paths/bar/bar.h @@ -0,0 +1,6 @@ +#ifndef BAR_H +#define BAR_H + +#define BAR_VALUE 1 + +#endif // BAR_H diff --git a/tests/auto/blackbox/testdata-baremetal/system-include-paths/foo/foo.h b/tests/auto/blackbox/testdata-baremetal/system-include-paths/foo/foo.h new file mode 100644 index 000000000..dc510379d --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/system-include-paths/foo/foo.h @@ -0,0 +1,6 @@ +#ifndef FOO_H +#define FOO_H + +#define FOO_VALUE 1 + +#endif // FOO_H diff --git a/tests/auto/blackbox/testdata-baremetal/system-include-paths/main.c b/tests/auto/blackbox/testdata-baremetal/system-include-paths/main.c new file mode 100644 index 000000000..aabc97a0c --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/system-include-paths/main.c @@ -0,0 +1,7 @@ +#include <foo.h> +#include <bar.h> + +int main(void) +{ + return FOO_VALUE - BAR_VALUE; +} diff --git a/tests/auto/blackbox/testdata-baremetal/system-include-paths/system-include-paths.qbs b/tests/auto/blackbox/testdata-baremetal/system-include-paths/system-include-paths.qbs new file mode 100644 index 000000000..1f9fd1231 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/system-include-paths/system-include-paths.qbs @@ -0,0 +1,6 @@ +import "../BareMetalApplication.qbs" as BareMetalApplication + +BareMetalApplication { + files: ["main.c"] + cpp.systemIncludePaths: ["foo", "bar"] +} diff --git a/tests/auto/blackbox/testdata-baremetal/target-platform/target-platform.qbs b/tests/auto/blackbox/testdata-baremetal/target-platform/target-platform.qbs new file mode 100644 index 000000000..d29e7e619 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/target-platform/target-platform.qbs @@ -0,0 +1,19 @@ +Product { + Depends { name: "cpp" } + condition: { + if (qbs.toolchainType === "keil" + || qbs.toolchainType === "iar" + || qbs.toolchainType === "sdcc" + || qbs.toolchainType === "cosmic") { + var hasNoPlatform = (qbs.targetPlatform === "none"); + var hasNoOS = (qbs.targetOS.length === 1 && qbs.targetOS[0] === "none"); + console.info("has no platform: " + hasNoPlatform); + console.info("has no os: " + hasNoOS); + } else { + console.info("unsupported toolset: %%" + + qbs.toolchainType + "%%, %%" + qbs.architecture + "%%"); + return false; + } + return true; + } +} diff --git a/tests/auto/blackbox/testdata-baremetal/toolchain-probe/probes/dmc.qbs b/tests/auto/blackbox/testdata-baremetal/toolchain-probe/probes/dmc.qbs new file mode 100644 index 000000000..13f751669 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/toolchain-probe/probes/dmc.qbs @@ -0,0 +1,31 @@ +import qbs.Probes + +Product { + id: product + condition: qbs.toolchainType === "dmc" + + Depends { name: "cpp" } + + Probes.DmcProbe { + id: probe + compilerFilePath: cpp.compilerPath + enableDefinesByLanguage: cpp.enableCompilerDefinesByLanguage + _targetPlatform: qbs.targetPlatform + _targetArchitecture: qbs.architecture + _targetExtender: cpp.extenderName + } + + property bool dummy: { + if (!product.condition) + return; + if (!probe.found + || !probe.compilerDefinesByLanguage + || !probe.includePaths + || (probe.includePaths.length === 0) + || (qbs.architecture !== probe.architecture) + || (qbs.targetPlatform !== probe.targetPlatform)) { + console.info("broken probe: %%" + qbs.toolchainType + "%%, %%" + + qbs.architecture + "%%"); + } + } +} diff --git a/tests/auto/blackbox/testdata-baremetal/toolchain-probe/probes/sdcc.qbs b/tests/auto/blackbox/testdata-baremetal/toolchain-probe/probes/sdcc.qbs new file mode 100644 index 000000000..fa5f519a9 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/toolchain-probe/probes/sdcc.qbs @@ -0,0 +1,29 @@ +import qbs.Probes + +Product { + id: product + condition: qbs.toolchainType === "sdcc" + + Depends { name: "cpp" } + + Probes.SdccProbe { + id: probe + compilerFilePath: cpp.compilerPath + enableDefinesByLanguage: cpp.enableCompilerDefinesByLanguage + preferredArchitecture: qbs.architecture + } + + property bool dummy: { + if (!product.condition) + return; + if (!probe.found + || !probe.endianness + || !probe.compilerDefinesByLanguage + || !probe.includePaths + || (probe.includePaths.length === 0) + || (qbs.architecture !== probe.architecture)) { + console.info("broken probe: %%" + qbs.toolchainType + "%%, %%" + + qbs.architecture + "%%"); + } + } +} diff --git a/tests/auto/blackbox/testdata-baremetal/toolchain-probe/probes/watcom.qbs b/tests/auto/blackbox/testdata-baremetal/toolchain-probe/probes/watcom.qbs new file mode 100644 index 000000000..b7c92dc21 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/toolchain-probe/probes/watcom.qbs @@ -0,0 +1,34 @@ +import qbs.Probes + +Product { + id: product + condition: qbs.toolchainType === "watcom" + + Depends { name: "cpp" } + + Probes.WatcomProbe { + id: probe + compilerFilePath: cpp.compilerPath + enableDefinesByLanguage: cpp.enableCompilerDefinesByLanguage + _pathListSeparator: qbs.pathListSeparator + _toolchainInstallPath: cpp.toolchainInstallPath + _targetPlatform: qbs.targetPlatform + _targetArchitecture: qbs.architecture + } + + property bool dummy: { + if (!product.condition) + return; + if (!probe.found + || !probe.endianness + || !probe.compilerDefinesByLanguage + || !probe.environment + || !probe.includePaths + || (probe.includePaths.length === 0) + || (qbs.architecture !== probe.architecture) + || (qbs.targetPlatform !== probe.targetPlatform)) { + console.info("broken probe: %%" + qbs.toolchainType + "%%, %%" + + qbs.architecture + "%%"); + } + } +} diff --git a/tests/auto/blackbox/testdata-baremetal/toolchain-probe/toolchain-probe.qbs b/tests/auto/blackbox/testdata-baremetal/toolchain-probe/toolchain-probe.qbs new file mode 100644 index 000000000..36725cfde --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/toolchain-probe/toolchain-probe.qbs @@ -0,0 +1,7 @@ +Project { + references: [ + "probes/dmc.qbs", + "probes/sdcc.qbs", + "probes/watcom.qbs", + ] +} diff --git a/tests/auto/blackbox/testdata-baremetal/two-object-application/fun.c b/tests/auto/blackbox/testdata-baremetal/two-object-application/fun.c new file mode 100644 index 000000000..3b8c8f2f4 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/two-object-application/fun.c @@ -0,0 +1,4 @@ +int f(void) +{ + return 0; +} diff --git a/tests/auto/blackbox/testdata-baremetal/two-object-application/main.c b/tests/auto/blackbox/testdata-baremetal/two-object-application/main.c new file mode 100644 index 000000000..2c3d7726c --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/two-object-application/main.c @@ -0,0 +1,6 @@ +extern int f(void); + +int main(void) +{ + return f(); +} diff --git a/tests/auto/blackbox/testdata-baremetal/two-object-application/two-object-application.qbs b/tests/auto/blackbox/testdata-baremetal/two-object-application/two-object-application.qbs new file mode 100644 index 000000000..2947975ca --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/two-object-application/two-object-application.qbs @@ -0,0 +1,5 @@ +import "../BareMetalApplication.qbs" as BareMetalApplication + +BareMetalApplication { + files: ["main.c", "fun.c"] +} diff --git a/tests/auto/blackbox/testdata-baremetal/user-include-paths/bar/bar.h b/tests/auto/blackbox/testdata-baremetal/user-include-paths/bar/bar.h new file mode 100644 index 000000000..49ffa0b12 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/user-include-paths/bar/bar.h @@ -0,0 +1,6 @@ +#ifndef BAR_H +#define BAR_H + +#define BAR_VALUE 1 + +#endif // BAR_H diff --git a/tests/auto/blackbox/testdata-baremetal/user-include-paths/foo/foo.h b/tests/auto/blackbox/testdata-baremetal/user-include-paths/foo/foo.h new file mode 100644 index 000000000..dc510379d --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/user-include-paths/foo/foo.h @@ -0,0 +1,6 @@ +#ifndef FOO_H +#define FOO_H + +#define FOO_VALUE 1 + +#endif // FOO_H diff --git a/tests/auto/blackbox/testdata-baremetal/user-include-paths/main.c b/tests/auto/blackbox/testdata-baremetal/user-include-paths/main.c new file mode 100644 index 000000000..e76e08cbe --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/user-include-paths/main.c @@ -0,0 +1,7 @@ +#include "foo.h" +#include "bar.h" + +int main(void) +{ + return FOO_VALUE - BAR_VALUE; +} diff --git a/tests/auto/blackbox/testdata-baremetal/user-include-paths/user-include-paths.qbs b/tests/auto/blackbox/testdata-baremetal/user-include-paths/user-include-paths.qbs new file mode 100644 index 000000000..23d5dbced --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/user-include-paths/user-include-paths.qbs @@ -0,0 +1,6 @@ +import "../BareMetalApplication.qbs" as BareMetalApplication + +BareMetalApplication { + files: ["main.c"] + cpp.includePaths: ["foo", "bar"] +} |