-set(CMAKE_RC_COMPILE_OBJECT "<CMAKE_RC_COMPILER> -i <SOURCE> <CMAKE_C_LINK_FLAGS> <DEFINES> -I${REACTOS_SOURCE_DIR}/include/psdk -I${REACTOS_BINARY_DIR}/include/psdk -I${REACTOS_SOURCE_DIR}/include/ -I${REACTOS_SOURCE_DIR}/include/reactos -I${REACTOS_BINARY_DIR}/include/reactos -I${REACTOS_SOURCE_DIR}/include/reactos/wine -I${REACTOS_SOURCE_DIR}/include/crt -I${REACTOS_SOURCE_DIR}/include/crt/mingw32 -I${REACTOS_SOURCE_DIR} -I${CMAKE_CURRENT_SOURCE_DIR}/include -O coff -o <OBJECT> ")
+spec2def(ntoskrnl.exe ntoskrnl.spec)
-set(CMAKE_C_LINK_EXECUTABLE "<CMAKE_C_COMPILER> <FLAGS> <CMAKE_C_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
-set(CMAKE_EXE_LINKER_FLAGS "-nodefaultlibs -nostdlib -Wl,-entry,_KiSystemStartup@4 -Wl,--image-base,0x80800000 -Wl,--kill-at -Wl,-T,${REACTOS_SOURCE_DIR}/global.lds -Wl,--subsystem,native")
+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__)
-add_definitions(-D_NTOSKRNL_)
-add_definitions(-D_NTSYSTEM_)
-add_definitions(-D_IN_KERNEL_)
-add_definitions(-DNTDDI_VERSION=0x05020400)
+add_definitions(
+ -D__NTOSKRNL__
+ -D_NTOSKRNL_
+ -D_NTSYSTEM_
+ -D_IN_KERNEL_
+ -DNTDDI_VERSION=0x05020400)
-include_directories(${REACTOS_SOURCE_DIR}/lib/cmlib)
-include_directories(include)
-include_directories(${CMAKE_CURRENT_BINARY_DIR}/include)
-include_directories(${CMAKE_CURRENT_BINARY_DIR}/include/internal)
-include_directories(${REACTOS_SOURCE_DIR}/include/reactos/drivers)
+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/io.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
- cc/cacheman.c
- cc/copy.c
- cc/fs.c
- cc/mdl.c
- cc/pin.c
- cc/view.c
config/cmalloc.c
config/cmapi.c
config/cmboot.c
fstub/fstubex.c
fstub/halstub.c
inbv/inbv.c
+ inbv/inbvport.c
io/iomgr/adapter.c
io/iomgr/arcname.c
io/iomgr/bootlog.c
mm/ARM3/pfnlist.c
mm/ARM3/pool.c
mm/ARM3/procsup.c
+ mm/ARM3/section.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/mpw.c
mm/pagefile.c
mm/pageop.c
- mm/pe.c
- mm/ppool.c
- mm/procsup.c
mm/region.c
mm/rmap.c
mm/section.c
- mm/virtual.c
ob/obdir.c
ob/obhandle.c
ob/obinit.c
ob/obsecure.c
ob/obwait.c
po/events.c
+ po/guid.c
po/poshtdwn.c
po/povolume.c
po/power.c
vf/driver.c
wmi/wmi.c
ntoskrnl.rc
- ${REACTOS_BINARY_DIR}/ntoskrnl/ex/zw.S)
+ ${REACTOS_BINARY_DIR}/ntoskrnl/ex/zw.S
+ ${CMAKE_CURRENT_BINARY_DIR}/ntoskrnl.def)
if(ARCH MATCHES i386)
-list(APPEND SOURCE
- config/i386/cmhardwr.c
- ex/i386/interlck_asm.S
- ex/i386/fastinterlck_asm.S
- ex/i386/ioport.S
- ke/freeldr.c
- 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)
+ list(APPEND SOURCE
+ config/i386/cmhardwr.c
+ ex/i386/interlck_asm.S
+ ex/i386/fastinterlck_asm.S
+ ex/i386/ioport.S
+ ke/freeldr.c
+ 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
- ex/amd64/fastinterlck.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/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)
+ list(APPEND SOURCE
+ config/i386/cmhardwr.c
+ ex/amd64/fastinterlck.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/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)
+ 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(ARCH MATCHES i386)
+ 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(_WINKD_ MATCHES 0)
+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(ARCH MATCHES i386)
-list(APPEND SOURCE
- kd/i386/kdmemsup.c
- kd/wrappers/gdbstub.c)
+ 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(KDBG MATCHES 1)
-list(APPEND SOURCE
- kdbg/i386/i386-dis.c
- kdbg/i386/kdb_help.S
- kdbg/i386/longjmp.S
- kdbg/i386/setjmp.S)
-endif(KDBG MATCHES 1)
+ if(DBG OR KDBG)
+ list(APPEND SOURCE kdbg/kdb_symbols.c)
+ endif()
-elseif(ARCH MATCHES amd64)
-list(APPEND SOURCE
- kd/amd64/kd.c
- kd/amd64/kdmemsup.c)
+ list(APPEND SOURCE
+ kd/wrappers/bochs.c
+ kd/wrappers/kdbg.c
+ kd/kdinit.c
+ kd/kdio.c
+ kd/kdmain.c)
-if(KDBG MATCHES 1)
-list(APPEND SOURCE
- kdbg/amd64/i386-dis.c
- kdbg/amd64/kdb_help.S
- kdbg/amd64/kdb.c)
-endif(KDBG MATCHES 1)
+else() # _WINKD_
-elseif(ARCH MATCHES powerpc)
-list(APPEND SOURCE kd/wrappers/gdbstub_powerpc.c)
+ list(APPEND SOURCE
+ kd64/kdapi.c
+ kd64/kdbreak.c
+ kd64/kddata.c
+ kd64/kdinit.c
+ kd64/kdlock.c
+ kd64/kdprint.c
+ kd64/kdtrap.c)
-endif(ARCH MATCHES i386)
+ 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()
-if(KDBG MATCHES 1)
-list(APPEND SOURCE
- kdbg/kdb.c
- kdbg/kdb_cli.c
- kdbg/kdb_expr.c
- kdbg/kdb_keyboard.c
- kdbg/kdb_serial.c)
-endif(KDBG MATCHES 1)
-
-if(DBG_OR_KDBG MATCHES true)
-list(APPEND SOURCE kdbg/kdb_symbols.c)
-endif(DBG_OR_KDBG MATCHES true)
-
-list(APPEND SOURCE
- kd/wrappers/bochs.c
- kd/wrappers/kdbg.c
- kd/kdinit.c
- kd/kdio.c
- kd/kdmain.c)
-
-else() # _WINKD_ MATCHES 1
-
-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(ARCH MATCHES i386)
+endif()
-endif(_WINKD_ MATCHES 0)
+add_executable(ntoskrnl ${CMAKE_CURRENT_BINARY_DIR}/ntoskrnl_ntoskrnl.h.gch ${SOURCE})
-add_executable(ntoskrnl ${SOURCE} ${CMAKE_CURRENT_BINARY_DIR}/ntoskrnl_ntoskrnl.h.gch)
+set_entrypoint(ntoskrnl KiSystemStartup@4)
+set_subsystem(ntoskrnl native)
-set_target_properties(ntoskrnl PROPERTIES LINK_FLAGS "-Wl,-entry,_KiSystemStartup@4")
+if(MSVC)
+ set_image_base(ntoskrnl 0x00400000)
+else()
+ set_image_base(ntoskrnl 0x80800000)
+endif()
target_link_libraries(ntoskrnl
- ${CMAKE_CURRENT_SOURCE_DIR}/ntoskrnl_i386.def
+ cportlib
csq
- -lhal
- pseh
+ ${PSEH_LIB}
cmlib
rtl
rossym
libcntpr
- -lkdcom
- -lbootvid
wdmguid
ioevent)
+
+add_importlibs(ntoskrnl hal kdcom bootvid)
add_pch(ntoskrnl ${CMAKE_CURRENT_SOURCE_DIR}/include/ntoskrnl.h ${SOURCE})
set_source_files_properties(${REACTOS_BINARY_DIR}/ntoskrnl/ex/zw.S PROPERTIES GENERATED TRUE)
-add_dependencies(ntoskrnl psdk bugcodes kernel_zw kernel_napi)
+add_dependencies(ntoskrnl psdk bugcodes kernel_zw kernel_napi asm)
+
+add_minicd_target(ntoskrnl reactos ntoskrnl.exe)
+add_livecd_target(ntoskrnl reactos/system32)
+add_importlib_target(ntoskrnl.spec ntoskrnl.exe)