#!/bin/sh

set -eu

rm -rf "$AUTOPKGTEST_TMP/hello"
mkdir "$AUTOPKGTEST_TMP/hello"

ln -s /usr/src/pico-sdk/external/pico_sdk_import.cmake "$AUTOPKGTEST_TMP/hello/pico_sdk_import.cmake"

cat << END > "$AUTOPKGTEST_TMP/hello/CMakeLists.txt"
cmake_minimum_required(VERSION 3.13)
include(pico_sdk_import.cmake)
project(hello_world)
pico_sdk_init()

add_executable(hello_world hello.c)
target_link_libraries(hello_world pico_stdlib)
pico_add_extra_outputs(hello_world)
END

cat << END > "$AUTOPKGTEST_TMP/hello/hello.c"
#include <stdio.h>
#include "pico/stdlib.h"

int main() {
    setup_default_uart();
    printf("Hello, world!\n");
    return 0;
}
END

mkdir -p "$AUTOPKGTEST_TMP/hello/build"
env --chdir="$AUTOPKGTEST_TMP/hello/build" cmake -DPICO_SDK_PATH=/usr/src/pico-sdk ..
env --chdir="$AUTOPKGTEST_TMP/hello/build" make
test -e "$AUTOPKGTEST_TMP/hello/build/hello_world.elf"
test -e "$AUTOPKGTEST_TMP/hello/build/hello_world.uf2"

rm -rf "$AUTOPKGTEST_TMP/hello"
mkdir "$AUTOPKGTEST_TMP/hello"

cat << END > "$AUTOPKGTEST_TMP/hello/CMakeLists.txt"
cmake_minimum_required(VERSION 3.13)
include(/usr/src/pico-sdk/pico_sdk_init.cmake)
project(hello_world)
pico_sdk_init()

add_executable(hello_world hello.c)
target_link_libraries(hello_world pico_stdlib)
pico_add_extra_outputs(hello_world)
END

cat << END > "$AUTOPKGTEST_TMP/hello/hello.c"
#include <stdio.h>
#include "pico/stdlib.h"

int main() {
    setup_default_uart();
    printf("Hello, world!\n");
    return 0;
}
END

mkdir -p "$AUTOPKGTEST_TMP/hello/build"
env --chdir="$AUTOPKGTEST_TMP/hello/build" cmake ..
env --chdir="$AUTOPKGTEST_TMP/hello/build" make
test -e "$AUTOPKGTEST_TMP/hello/build/hello_world.elf"
test -e "$AUTOPKGTEST_TMP/hello/build/hello_world.uf2"
