component("com") {
    parent      "nu.os.arch.arm"
    version     "1.0.0"
    description "This component implements the common ARM architecture functionality"
    enable      true
    
    architecture "arm"
    
    mandatory 
    
    # Option for MMU variants (0=v4/v5 and 1=v6/v7-A 2=v7-R)
    option("mmu_variant") {
        default         0
        values          [0,1,2]
        description     "Which MMU/MPU variant is utilized by the ARM architecture build (0=ARMv4/v5, 1=ARMv6/v7-A, 2=ARMv7-R)"
        hidden          true
    }

    # Option for the system stack size
    option("system_stack_size"){        
        default 2048
        description "Define the system stack size (default is 2048)"
    }

    # Option for FPU support (0=no FPU, 1=VFPv2, and 2=VFPv3)
    option("fpu_support"){
        default     0
        values      [0,1,2]
        description "Define the FPU support enabled in the ARM architecture.  This basically adds support to save/restore FPU context for tasks / HISRs (0 = off, 1 = VFPv2, 2 = VFPv3).  The default is 0 (no FPU support)."
    }

    # Option for cache line size 
    option("v6v7_cache_line_size") {
        default         64
        values          [0, 8, 16, 32, 64, 128, 256]
        description     "The size of the v6v7 L1 (core) cache line in bytes"
        hidden          true
    }

    includepath "os/include/arch/arm"

    library("nucleus.lib") {
        sources { Dir.glob("*.c") }
    }
}
