[CMAKE]
[reactos.git] / ntoskrnl / CMakeLists.txt
index 063c03e..8fd16a1 100644 (file)
@@ -1,20 +1,22 @@
 
-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()
 
 list(APPEND SOURCE
     cc/cacheman.c
@@ -103,6 +105,7 @@ list(APPEND SOURCE
     fstub/fstubex.c
     fstub/halstub.c
     inbv/inbv.c
+    inbv/inbvport.c
     io/iomgr/adapter.c
     io/iomgr/arcname.c
     io/iomgr/bootlog.c
@@ -186,26 +189,23 @@ list(APPEND SOURCE
     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
@@ -217,6 +217,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
@@ -246,7 +247,10 @@ list(APPEND SOURCE
     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)
+    
+set_source_files_properties(ntoskrnl_${ARCH}.def PROPERTIES EXTERNAL_OBJECT TRUE)
 
 if(ARCH MATCHES i386)
 list(APPEND SOURCE
@@ -331,50 +335,48 @@ list(APPEND SOURCE
     mm/powerpc/page.c)
 endif(ARCH MATCHES i386)
 
-if(_WINKD_ MATCHES 0)
+if(NOT _WINKD_)
 
 if(ARCH MATCHES i386)
 list(APPEND SOURCE
     kd/i386/kdmemsup.c
     kd/wrappers/gdbstub.c)
 
-if(KDBG MATCHES 1)
+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 MATCHES 1)
+    kdbg/i386/kdb_help.S)
+endif(KDBG)
 
 elseif(ARCH MATCHES amd64)
 list(APPEND SOURCE
     kd/amd64/kd.c
     kd/amd64/kdmemsup.c)
 
-if(KDBG MATCHES 1)
+if(KDBG)
 list(APPEND SOURCE
     kdbg/amd64/i386-dis.c
     kdbg/amd64/kdb_help.S
     kdbg/amd64/kdb.c)
-endif(KDBG MATCHES 1)
+endif(KDBG)
 
 elseif(ARCH MATCHES powerpc)
 list(APPEND SOURCE kd/wrappers/gdbstub_powerpc.c)
 
 endif(ARCH MATCHES i386)
 
-if(KDBG MATCHES 1)
+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 MATCHES 1)
+endif(KDBG)
 
-if(DBG_OR_KDBG MATCHES true)
+if(DBG OR KDBG)
 list(APPEND SOURCE kdbg/kdb_symbols.c)
-endif(DBG_OR_KDBG MATCHES true)
+endif(DBG OR KDBG)
 
 list(APPEND SOURCE
     kd/wrappers/bochs.c
@@ -383,7 +385,7 @@ list(APPEND SOURCE
     kd/kdio.c
     kd/kdmain.c)
 
-else() # _WINKD_ MATCHES 1
+else() # _WINKD_
 
 list(APPEND SOURCE
     kd64/kdapi.c
@@ -402,26 +404,35 @@ elseif(ARCH MATCHES arm)
 list(APPEND SOURCE kd64/arm/kdarm.c)
 endif(ARCH MATCHES i386)
 
-endif(_WINKD_ MATCHES 0)
+endif(NOT _WINKD_)
 
-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")
+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_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)