
add_definitions(
    -D_NTOSKRNL_
    -DNO_RTL_INLINES
    -D_NTSYSTEM_
    -D_NTDLLBUILD_)

list(APPEND SOURCE
    access.c
    acl.c
    actctx.c
    assert.c
    atom.c
    avltable.c
    bitmap.c
    bootdata.c
    compress.c
    condvar.c
    crc32.c
    critical.c
    dbgbuffer.c
    debug.c
    dos8dot3.c
    encode.c
    env.c
    error.c
    exception.c
    generictable.c
    handle.c
    heap.c
    heapdbg.c
	heappage.c
    image.c
    interlck.c
    message.c
    largeint.c
    luid.c
    network.c
    nls.c
    path.c
    ppb.c
    process.c
    propvar.c
    qsort.c
    random.c
    rangelist.c
    registry.c
    res.c
    resource.c
    sd.c
    security.c
    slist.c
    sid.c
    srw.c
    splaytree.c
    thread.c
    time.c
    timezone.c
    timerqueue.c
    unicode.c
    unicodeprefix.c
    vectoreh.c
    version.c
    wait.c
    workitem.c)

if(ARCH MATCHES i386)
    list(APPEND SOURCE
        i386/debug_asm.S
        i386/except_asm.s
        i386/except.c
        i386/interlck.S
        i386/rtlmem.s
        i386/res_asm.s
        i386/thread.c)
elseif(ARCH MATCHES amd64)
    list(APPEND SOURCE
        amd64/debug_asm.S
        amd64/except_asm.S
        amd64/slist.S
        amd64/unwind.c
        amd64/stubs.c
        mem.c
        memgen.c)
elseif(ARCH MATCHES arm)
    list(APPEND SOURCE
        arm/debug_asm.S
        mem.c
        memgen.c)
elseif(ARCH MATCHES powerpc)
    list(APPEND SOURCE
        powerpc/debug.c
        powerpc/except.c
        powerpc/interlocked.c
        powerpc/rtlmem.s
        powerpc/rtlswap.s
        powerpc/thread.c)
endif()

add_library(rtl ${CMAKE_CURRENT_BINARY_DIR}/rtl_rtl.h.gch ${SOURCE})
add_pch(rtl ${CMAKE_CURRENT_SOURCE_DIR}/rtl.h ${SOURCE})
add_dependencies(rtl psdk asm)
