///| CMakeLists.txt for the native build.
fn cmake_lists_txt(c : ProjectConfig) -> String {
  let pkg = c.package_id
  (
    #|cmake_minimum_required(VERSION 3.22.1)
    $|project("\{pkg}" C)
    #|
    #|set(MOONBIT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../moonbit)
    #|set(NATIVE_APP_GLUE_DIR ${ANDROID_NDK}/sources/android/native_app_glue)
    #|
    #|# Refresh .mooncakes at configure time so add_subdirectory finds CMakeLists.txt & stubs.
    #|find_program(MOON_EXECUTABLE moon REQUIRED)
    #|execute_process(
    #|    COMMAND ${MOON_EXECUTABLE} check --target native
    #|    WORKING_DIRECTORY ${MOONBIT_DIR}
    #|    RESULT_VARIABLE MOON_RESULT
    #|)
    #|if(NOT MOON_RESULT EQUAL 0)
    #|    message(FATAL_ERROR "moon check failed (exit ${MOON_RESULT})")
    #|endif()
    #|
    #|# Pull in raylib + raylib_moonbit targets; sets RAYLIB_MOONBIT_MOON_HOME
    #|set(RAYLIB_MOONBIT_DIR ${MOONBIT_DIR}/.mooncakes/tonyfettes/raylib)
    #|add_subdirectory(${RAYLIB_MOONBIT_DIR} raylib_build)
    #|
    #|set(MOONBIT_GENERATED_C
    $|    ${MOONBIT_DIR}/_build/native/debug/build/\{pkg}.c)
    #|add_custom_target(moonbit_codegen ALL
    #|    COMMAND ${MOON_EXECUTABLE} build --target native
    #|    WORKING_DIRECTORY ${MOONBIT_DIR}
    #|    BYPRODUCTS ${MOONBIT_GENERATED_C}
    #|    COMMENT "Compiling MoonBit to C"
    #|)
    #|
    #|# Compile runtime.c in isolation: only MOON_HOME/include, no raylib paths.
    #|# internal/raylib/external/dirent.h would shadow system dirent.h otherwise.
    #|add_library(moonbit_runtime OBJECT
    #|    ${RAYLIB_MOONBIT_MOON_HOME}/lib/runtime.c)
    #|target_include_directories(moonbit_runtime PRIVATE
    #|    ${RAYLIB_MOONBIT_MOON_HOME}/include)
    #|target_compile_options(moonbit_runtime PRIVATE
    #|    -fwrapv -fno-strict-aliasing -Wno-unused-value)
    #|
    $|add_library(\{pkg} SHARED
    #|    ${MOONBIT_GENERATED_C}
    #|    $
    #|    ${NATIVE_APP_GLUE_DIR}/android_native_app_glue.c
    #|)
    $|target_include_directories(\{pkg} PRIVATE
    #|    ${NATIVE_APP_GLUE_DIR})
    $|target_compile_definitions(\{pkg} PRIVATE PLATFORM_ANDROID)
    #|set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -u ANativeActivity_onCreate")
    #|# raylib_moonbit brings in: stubs + raylib core + Android system libs +
    #|# MOON_HOME/include + RAYLIB_SRC_DIR — all transitively via PUBLIC properties.
    $|add_dependencies(\{pkg} moonbit_codegen)
    $|target_link_libraries(\{pkg} raylib_moonbit)
  )
}