spec2def(ntoskrnl.exe ntoskrnl.spec) include_directories( ${REACTOS_SOURCE_DIR} ${REACTOS_SOURCE_DIR}/lib/cmlib include ${CMAKE_CURRENT_BINARY_DIR}/include ${CMAKE_CURRENT_BINARY_DIR}/include/internal ${REACTOS_SOURCE_DIR}/include/reactos/drivers) add_definitions( -D__NTOSKRNL__ -D_NTOSKRNL_ -D_NTSYSTEM_ -D_IN_KERNEL_ -DNTDDI_VERSION=0x05020400) set_rc_compiler() set(NEWCC FALSE) if(NEWCC) add_definitions(-DNEWCC) list(APPEND SOURCE cache/cachesub.c cache/copysup.c cache/fssup.c cache/lazyrite.c cache/logsup.c cache/mdlsup.c cache/pinsup.c cache/section/data.c cache/section/fault.c cache/section/reqtools.c cache/section/sptab.c cache/section/swapout.c) else() list(APPEND SOURCE cc/cacheman.c cc/copy.c cc/fs.c cc/mdl.c cc/pin.c cc/view.c) endif() list(APPEND SOURCE cache/section/io.c config/cmalloc.c config/cmapi.c config/cmboot.c config/cmcheck.c config/cmconfig.c config/cmcontrl.c config/cmdata.c config/cmdelay.c config/cmhook.c config/cmhvlist.c config/cmindex.c config/cminit.c config/cmkcbncb.c config/cmkeydel.c config/cmlazy.c config/cmmapvw.c config/cmname.c config/cmnotify.c config/cmparse.c config/cmquota.c config/cmse.c config/cmsecach.c config/cmsysini.c config/cmvalche.c config/cmvalue.c config/cmwraprs.c config/ntapi.c dbgk/dbgkobj.c dbgk/dbgkutil.c ex/atom.c ex/callback.c ex/dbgctrl.c ex/efi.c ex/event.c ex/evtpair.c ex/exintrin.c ex/fmutex.c ex/handle.c ex/harderr.c ex/hdlsterm.c ex/init.c ex/interlocked.c ex/keyedevt.c ex/locale.c ex/lookas.c ex/mutant.c ex/profile.c ex/pushlock.c ex/resource.c ex/rundown.c ex/sem.c ex/shutdown.c ex/sysinfo.c ex/time.c ex/timer.c ex/uuid.c ex/win32k.c ex/work.c ex/xipdisp.c ex/zone.c ex/zw.S fsrtl/dbcsname.c fsrtl/fastio.c fsrtl/faulttol.c fsrtl/filelock.c fsrtl/filter.c fsrtl/filtrctx.c fsrtl/fsfilter.c fsrtl/fsrtlpc.c fsrtl/largemcb.c fsrtl/name.c fsrtl/notify.c fsrtl/oplock.c fsrtl/pnp.c fsrtl/stackovf.c fsrtl/tunnel.c fsrtl/unc.c fstub/disksup.c fstub/fstubex.c fstub/halstub.c fstub/translate.c inbv/inbv.c inbv/inbvport.c io/iomgr/adapter.c io/iomgr/arcname.c io/iomgr/bootlog.c io/iomgr/controller.c io/iomgr/device.c io/iomgr/deviface.c io/iomgr/driver.c io/iomgr/error.c io/iomgr/file.c io/iomgr/iocomp.c io/iomgr/ioevent.c io/iomgr/iofunc.c io/iomgr/iomdl.c io/iomgr/iomgr.c io/iomgr/iorsrce.c io/iomgr/iotimer.c io/iomgr/iowork.c io/iomgr/irp.c io/iomgr/irq.c io/iomgr/ramdisk.c io/iomgr/rawfs.c io/iomgr/remlock.c io/iomgr/symlink.c io/iomgr/util.c io/iomgr/volume.c io/pnpmgr/plugplay.c io/pnpmgr/pnpdma.c io/pnpmgr/pnpinit.c io/pnpmgr/pnpmgr.c io/pnpmgr/pnpnotify.c io/pnpmgr/pnpreport.c io/pnpmgr/pnpres.c io/pnpmgr/pnproot.c io/pnpmgr/pnputil.c ke/apc.c ke/balmgr.c ke/bug.c ke/clock.c ke/config.c ke/devqueue.c ke/dpc.c ke/eventobj.c ke/except.c ke/freeze.c ke/gate.c ke/gmutex.c ke/ipi.c ke/krnlinit.c ke/mutex.c ke/procobj.c ke/profobj.c ke/queue.c ke/semphobj.c ke/spinlock.c ke/thrdobj.c ke/thrdschd.c ke/time.c ke/timerobj.c ke/wait.c lpc/close.c lpc/complete.c lpc/connect.c lpc/create.c lpc/listen.c lpc/port.c lpc/reply.c lpc/send.c mm/ARM3/contmem.c mm/ARM3/drvmgmt.c mm/ARM3/dynamic.c mm/ARM3/expool.c mm/ARM3/hypermap.c mm/ARM3/iosup.c mm/ARM3/largepag.c mm/ARM3/mdlsup.c mm/ARM3/mmdbg.c mm/ARM3/mminit.c mm/ARM3/mmsup.c mm/ARM3/ncache.c mm/ARM3/pagfault.c mm/ARM3/pfnlist.c mm/ARM3/pool.c mm/ARM3/procsup.c mm/ARM3/section.c mm/ARM3/special.c mm/ARM3/sysldr.c mm/ARM3/syspte.c mm/ARM3/vadnode.c mm/ARM3/virtual.c mm/ARM3/zeropage.c mm/anonmem.c mm/balance.c mm/freelist.c mm/marea.c mm/mmfault.c mm/mminit.c mm/pagefile.c mm/pageop.c mm/region.c mm/rmap.c mm/section.c ob/obdir.c ob/obhandle.c ob/obinit.c ob/oblife.c ob/oblink.c ob/obname.c ob/obref.c ob/obsdcach.c ob/obsecure.c ob/obwait.c po/events.c po/guid.c po/poshtdwn.c po/povolume.c po/power.c ps/debug.c ps/job.c ps/kill.c ps/process.c ps/psmgr.c ps/psnotify.c ps/query.c ps/quota.c ps/security.c ps/state.c ps/thread.c ps/win32.c rtl/libsupp.c rtl/misc.c se/access.c se/acl.c se/audit.c se/lsa.c se/priv.c se/sd.c se/semgr.c se/sid.c se/token.c vf/driver.c wmi/wmi.c ntoskrnl.rc ${CMAKE_CURRENT_BINARY_DIR}/ntoskrnl.def) if(ARCH MATCHES i386) list(APPEND SOURCE config/i386/cmhardwr.c ex/i386/fastinterlck_asm.S ex/i386/ioport.S ke/i386/abios.c ke/i386/cpu.c ke/i386/context.c ke/i386/ctxswitch.S ke/i386/exp.c ke/i386/irqobj.c ke/i386/kiinit.c ke/i386/ldt.c ke/i386/mtrr.c ke/i386/patpge.c ke/i386/thrdini.c ke/i386/trap.s ke/i386/traphdlr.c ke/i386/usercall_asm.S ke/i386/usercall.c ke/i386/v86vdm.c mm/i386/page.c mm/ARM3/i386/init.c ps/i386/psctx.c ps/i386/psldt.c rtl/i386/stack.S vdm/vdmmain.c vdm/vdmexec.c) elseif(ARCH MATCHES amd64) list(APPEND SOURCE config/i386/cmhardwr.c ke/amd64/boot.S ke/amd64/context.c ke/amd64/cpu.c ke/amd64/ctxswitch.S ke/amd64/except.c ke/amd64/interrupt.c ke/amd64/irql.c ke/amd64/kiinit.c ke/amd64/krnlinit.c ke/amd64/spinlock.c ke/amd64/stubs.c ke/amd64/thrdini.c ke/amd64/trap.S mm/amd64/init.c mm/amd64/page.c ps/amd64/psctx.c) elseif(ARCH MATCHES arm) list(APPEND SOURCE config/arm/cmhardwr.c ke/arm/boot.s ke/arm/cpu.c ke/arm/ctxswtch.s ke/arm/exp.c ke/arm/kiinit.c ke/arm/stubs_asm.s ke/arm/thrdini.c ke/arm/trap.s ke/arm/trapc.c ke/arm/usercall.c mm/arm/page.c mm/ARM3/arm/init.c ps/arm/psctx.c rtl/arm/rtlexcpt.c) elseif(ARCH MATCHES powerpc) list(APPEND SOURCE config/powerpc/cmhardwr.c ke/powerpc/main_asm.S ke/powerpc/cpu.c ke/powerpc/exp.c ke/powerpc/kiinit.c ke/powerpc/ppc_irq.c ke/powerpc/stubs.c ke/powerpc/systimer.c ke/powerpc/thrdini.c ke/powerpc/ctxswitch.c ke/powerpc/ctxhelp.S mm/powerpc/pfault.c mm/powerpc/page.c) endif() if(NOT _WINKD_) if(ARCH MATCHES i386) list(APPEND SOURCE kd/i386/kdmemsup.c kd/wrappers/gdbstub.c) if(KDBG) list(APPEND SOURCE kdbg/i386/i386-dis.c kdbg/i386/kdb_help.S) endif() elseif(ARCH MATCHES amd64) list(APPEND SOURCE kd/amd64/kd.c kd/amd64/kdmemsup.c) if(KDBG) list(APPEND SOURCE kdbg/amd64/i386-dis.c kdbg/amd64/kdb_help.S kdbg/amd64/kdb.c) endif() elseif(ARCH MATCHES powerpc) list(APPEND SOURCE kd/wrappers/gdbstub_powerpc.c) endif() if(KDBG) list(APPEND SOURCE kdbg/kdb.c kdbg/kdb_cli.c kdbg/kdb_expr.c kdbg/kdb_keyboard.c kdbg/kdb_serial.c) endif() if(DBG OR KDBG) #list(APPEND SOURCE kdbg/kdb_symbols.cmake.c) list(APPEND SOURCE kdbg/kdb_symbols.c) endif() list(APPEND SOURCE kd/wrappers/bochs.c kd/wrappers/kdbg.c kd/kdinit.c kd/kdio.c kd/kdmain.c) else() # _WINKD_ list(APPEND SOURCE kd64/kdapi.c kd64/kdbreak.c kd64/kddata.c kd64/kdinit.c kd64/kdlock.c kd64/kdprint.c kd64/kdtrap.c) if(ARCH MATCHES i386) list(APPEND SOURCE kd64/i386/kdx86.c) elseif(ARCH MATCHES amd64) list(APPEND SOURCE kd64/amd64/kdx64.c) elseif(ARCH MATCHES arm) list(APPEND SOURCE kd64/arm/kdarm.c) endif() endif() add_executable(ntoskrnl ${SOURCE}) if (ARCH MATCHES i386) set_entrypoint(ntoskrnl KiSystemStartup 4) else() set_entrypoint(ntoskrnl KiSystemStartup) endif() set_subsystem(ntoskrnl native) if(MSVC) set_image_base(ntoskrnl 0x00400000) else() set_image_base(ntoskrnl 0x80800000) endif() target_link_libraries(ntoskrnl cportlib csq ${PSEH_LIB} cmlib rtl rossym libcntpr wdmguid ioevent) add_importlibs(ntoskrnl hal kdcom bootvid) add_pch(ntoskrnl include/ntoskrnl.h) add_dependencies(ntoskrnl psdk bugcodes asm) add_cd_file(TARGET ntoskrnl DESTINATION reactos/system32 NO_CAB FOR all) add_importlib_target(ntoskrnl.spec) add_library(ntdllsys ntdll.S)