1 2PROJECT(NTOS) 3 4include(ntos.cmake) 5 6set(NTOSKRNL_SOURCE ${SOURCE}) 7set(NTOSKRNL_ASM_SOURCE ${ASM_SOURCE}) 8 9set(NTKRNLMP_SOURCE ${SOURCE}) 10set(NTKRNLMP_ASM_SOURCE ${ASM_SOURCE}) 11 12spec2def(ntoskrnl.exe ntoskrnl.spec ADD_IMPORTLIB) 13add_asm_files(ntoskrnl_asm ${NTOSKRNL_ASM_SOURCE}) 14 15add_executable(ntoskrnl 16 ${ntoskrnl_asm} 17 ${NTOSKRNL_SOURCE} 18 guid.c 19 ntoskrnl.rc 20 ${CMAKE_CURRENT_BINARY_DIR}/ntoskrnl.def) 21set_property(TARGET ntoskrnl PROPERTY ENABLE_EXPORTS TRUE) 22set_target_properties(ntoskrnl PROPERTIES DEFINE_SYMBOL "") 23 24if(ARCH STREQUAL "i386") 25 set_entrypoint(ntoskrnl KiSystemStartup 4) 26else() 27 set_entrypoint(ntoskrnl KiSystemStartup) 28endif() 29set_subsystem(ntoskrnl native) 30 31if(MSVC) 32 set_image_base(ntoskrnl 0x00400000) 33 add_target_link_flags(ntoskrnl "/SECTION:.rsrc,!DP") #Accessed from bugcheck code 34 add_target_link_flags(ntoskrnl "/SECTION:INIT,D") 35else() 36 if(GDB) 37 set_image_base(ntoskrnl 0x00800000) 38 else() 39 set_image_base(ntoskrnl 0x80800000) 40 endif() 41 #Disabled due to LD bug: ROSBE-154 42 #add_linker_script(ntoskrnl ${REACTOS_SOURCE_DIR}/sdk/cmake/init-section.lds) 43endif() 44 45target_link_libraries(ntoskrnl cportlib csq ${PSEH_LIB} cmlib ntlsalib rtl ${ROSSYM_LIB} libcntpr wdmguid ioevent) 46 47if(STACK_PROTECTOR) 48 target_link_libraries(ntoskrnl gcc_ssp) 49elseif(RUNTIME_CHECKS) 50 target_link_libraries(ntoskrnl runtmchk) 51endif() 52 53add_importlibs(ntoskrnl hal kdcom bootvid) 54add_pch(ntoskrnl ${REACTOS_SOURCE_DIR}/ntoskrnl/include/ntoskrnl.h NTOSKRNL_SOURCE) 55add_dependencies(ntoskrnl psdk bugcodes asm) 56add_cd_file(TARGET ntoskrnl DESTINATION reactos/system32 NO_CAB FOR all) 57 58if(BUILD_MP) 59 add_subdirectory(ntkrnlmp) 60endif() 61 62add_asm_files(ntdllsys_asm ntdll.S) 63add_library(ntdllsys ${ntdllsys_asm}) 64set_target_properties(ntdllsys PROPERTIES LINKER_LANGUAGE "C") 65add_dependencies(ntdllsys asm)