[CMAKE/NTOSKRNL]
[reactos.git] / ntoskrnl / CMakeLists.txt
index e33fb8f..43046bb 100644 (file)
@@ -1,25 +1,52 @@
 
-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)
 
-add_definitions(-D__NTOSKRNL__)
-add_definitions(-D_NTOSKRNL_)
-add_definitions(-D_NTSYSTEM_)
-add_definitions(-D_IN_KERNEL_)
-add_definitions(-DNTDDI_VERSION=0x05020400)
+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)
 
-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)
+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
-    cc/cacheman.c
-    cc/copy.c
-    cc/fs.c
-    cc/mdl.c
-    cc/pin.c
-    cc/view.c
+    cache/section/io.c
     config/cmalloc.c
     config/cmapi.c
     config/cmboot.c
@@ -80,6 +107,7 @@ list(APPEND SOURCE
     ex/work.c
     ex/xipdisp.c
     ex/zone.c
+    ex/zw.S
     fsrtl/dbcsname.c
     fsrtl/fastio.c
     fsrtl/faulttol.c
@@ -99,6 +127,7 @@ list(APPEND SOURCE
     fstub/disksup.c
     fstub/fstubex.c
     fstub/halstub.c
+       fstub/translate.c
     inbv/inbv.c
     inbv/inbvport.c
     io/iomgr/adapter.c
@@ -212,6 +241,7 @@ list(APPEND SOURCE
     ob/obsecure.c
     ob/obwait.c
     po/events.c
+    po/guid.c
     po/poshtdwn.c
     po/povolume.c
     po/power.c
@@ -241,186 +271,185 @@ list(APPEND SOURCE
     vf/driver.c
     wmi/wmi.c
     ntoskrnl.rc
-    ${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(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)
-list(APPEND SOURCE
-    kdbg/i386/i386-dis.c
-    kdbg/i386/kdb_help.S
-    kdbg/i386/longjmp.S
-    kdbg/i386/setjmp.S)
-endif(KDBG)
+    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)
-
-if(KDBG)
-list(APPEND SOURCE
-    kdbg/amd64/i386-dis.c
-    kdbg/amd64/kdb_help.S
-    kdbg/amd64/kdb.c)
-endif(KDBG)
-
-elseif(ARCH MATCHES powerpc)
-list(APPEND SOURCE kd/wrappers/gdbstub_powerpc.c)
-
-endif(ARCH MATCHES i386)
-
-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(KDBG)
-
-if(DBG OR KDBG)
-list(APPEND SOURCE kdbg/kdb_symbols.c)
-endif(DBG OR KDBG)
-
-list(APPEND SOURCE
-    kd/wrappers/bochs.c
-    kd/wrappers/kdbg.c
-    kd/kdinit.c
-    kd/kdio.c
-    kd/kdmain.c)
+    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)
+    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)
+    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(NOT _WINKD_)
+endif()
 
-add_executable(ntoskrnl ${SOURCE} ${CMAKE_CURRENT_BINARY_DIR}/ntoskrnl_ntoskrnl.h.gch)
+add_executable(ntoskrnl ${CMAKE_CURRENT_BINARY_DIR}/ntoskrnl_ntoskrnl.h.gch ${SOURCE})
 
-set_target_properties(ntoskrnl PROPERTIES LINK_FLAGS "-Wl,-entry,_KiSystemStartup@4 -Wl,--image-base,0x80800000 -Wl,--subsystem,native")
+set_entrypoint(ntoskrnl KiSystemStartup@4)
+set_subsystem(ntoskrnl native)
+
+if(MSVC)
+    set_image_base(ntoskrnl 0x00400000)
+else()
+    set_image_base(ntoskrnl 0x80800000)
+endif()
 
 target_link_libraries(ntoskrnl
-    ${CMAKE_CURRENT_SOURCE_DIR}/ntoskrnl_${ARCH}.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 asm)
+
+add_cd_file(TARGET ntoskrnl DESTINATION reactos/system32 NO_CAB)
+add_importlib_target(ntoskrnl.spec)
 
-add_minicd_target(ntoskrnl reactos ntoskrnl.exe)
-add_livecd_target(ntoskrnl reactos/system32)
\ No newline at end of file
+add_library(ntdllsys ntdll.S)
+set_target_properties(ntdllsys PROPERTIES LINKER_LANGUAGE C)