--- /dev/null
- export(TARGETS widl nci gendib cabman cdmake mkhive spec2def geninc FILE ${CMAKE_BINARY_DIR}/ImportExecutables.cmake NAMESPACE native- )
+
+cmake_minimum_required(VERSION 2.6)
+project(REACTOS)
+
+#versioning
+include(include/reactos/version.cmake)
+
+# Don't escape preprocessor definition values added via add_definitions
+cmake_policy(SET CMP0005 OLD)
+
+set(CMAKE_INCLUDE_CURRENT_DIR ON)
+set(CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE ON)
+set(CMAKE_SHARED_LIBRARY_PREFIX "")
+set(CMAKE_SKIP_PREPROCESSED_SOURCE_RULES TRUE)
+set(CMAKE_SKIP_ASSEMBLY_SOURCE_RULES TRUE)
+set(CMAKE_COLOR_MAKEFILE OFF)
+set_property(GLOBAL PROPERTY RULE_MESSAGES OFF)
+
+if(NOT ARCH)
+ set(ARCH i386)
+endif()
+string(TOLOWER ${ARCH} ARCH)
+
+# Compile options
+if(ARCH MATCHES i386)
+ include(config.cmake)
+elseif(ARCH MATCHES amd64)
+ include(config-amd64.cmake)
+elseif(ARCH MATCHES arm)
+ include(config-arm.cmake)
+endif()
+
+add_definitions(-D__REACTOS__)
+
+if(NOT CMAKE_CROSSCOMPILING)
+
+ add_definitions(-DTARGET_${ARCH})
+
+ if(MSVC)
+ add_definitions(-Dinline=__inline)
+ else()
+ add_definitions(-fshort-wchar)
+ endif()
+
+ include_directories(
+ ${REACTOS_SOURCE_DIR}/tools/unicode
+ include
+ include/host
+ include/reactos
+ include/reactos/wine
+ ${REACTOS_BINARY_DIR}/include)
+
+ add_subdirectory(tools)
+ add_subdirectory(lib)
+
+ if(NOT MSVC)
- export(TARGETS nci gendib cabman cdmake mkhive spec2def geninc FILE ${CMAKE_BINARY_DIR}/ImportExecutables.cmake NAMESPACE native- )
++ export(TARGETS widl gendib cabman cdmake mkhive spec2def geninc FILE ${CMAKE_BINARY_DIR}/ImportExecutables.cmake NAMESPACE native- )
+ else()
- # nci generated intermediate files
-
- list(APPEND nci_output
- ${REACTOS_BINARY_DIR}/ntoskrnl/include/internal/napi.h
- ${REACTOS_BINARY_DIR}/subsystems/win32/win32k/include/napi.h
- ${REACTOS_BINARY_DIR}/lib/ntdllsys/ntdll.S
- ${REACTOS_BINARY_DIR}/ntoskrnl/ex/zw.S
- ${REACTOS_BINARY_DIR}/lib/win32ksys/win32k.S
- ${REACTOS_BINARY_DIR}/dll/ntdll/def/ntsys.pspec)
-
- list(APPEND nci_folders
- ${CMAKE_CURRENT_BINARY_DIR}/dll/ntdll/def
- ${CMAKE_CURRENT_BINARY_DIR}/lib/ntdllsys/ntdll
- ${CMAKE_CURRENT_BINARY_DIR}/lib/win32ksys
- ${CMAKE_CURRENT_BINARY_DIR}/ntoskrnl/include/internal
- ${CMAKE_CURRENT_BINARY_DIR}/ntoskrnl/ex
- ${CMAKE_CURRENT_BINARY_DIR}/subsystems/win32/win32k/include)
-
- file(MAKE_DIRECTORY ${nci_folders})
-
- add_custom_command(
- OUTPUT ${nci_output}
- COMMAND native-nci -arch ${ARCH} ${REACTOS_SOURCE_DIR}/ntoskrnl/sysfuncs.lst ${REACTOS_SOURCE_DIR}/subsystems/win32/win32k/w32ksvc.db ${nci_output}
- DEPENDS native-nci ${nci_folders})
-
- set_source_files_properties(${nci_output} PROPERTIES GENERATED TRUE)
-
- add_custom_target(ntdll_S ALL DEPENDS ${REACTOS_BINARY_DIR}/lib/ntdllsys/ntdll.S)
- add_custom_target(win32k_S ALL DEPENDS ${REACTOS_BINARY_DIR}/lib/win32ksys/win32k.S)
- add_custom_target(ntsys_pspec ALL DEPENDS ${REACTOS_BINARY_DIR}/dll/ntdll/def/ntsys.pspec)
- add_custom_target(kernel_napi ALL DEPENDS ${REACTOS_BINARY_DIR}/ntoskrnl/include/internal/napi.h)
- add_custom_target(subsystem_napi ALL DEPENDS ${REACTOS_BINARY_DIR}/subsystems/win32/win32k/include/napi.h)
- add_custom_target(kernel_zw ALL DEPENDS ${REACTOS_BINARY_DIR}/ntoskrnl/ex/zw.S)
-
++ export(TARGETS gendib cabman cdmake mkhive spec2def geninc FILE ${CMAKE_BINARY_DIR}/ImportExecutables.cmake NAMESPACE native- )
+ endif()
+
+else()
+
+ # Do some cleanup
+ file(REMOVE
+ ${REACTOS_BINARY_DIR}/dependencies.graphml
+ ${REACTOS_BINARY_DIR}/boot/ros_livecd.txt
+ ${REACTOS_BINARY_DIR}/boot/ros_livecd_target.txt
+ ${REACTOS_BINARY_DIR}/boot/ros_minicd.txt
+ ${REACTOS_BINARY_DIR}/boot/ros_minicd_target.txt
+ ${REACTOS_BINARY_DIR}/boot/ros_cab.txt
+ ${REACTOS_BINARY_DIR}/boot/ros_cab_target.txt)
+
+ if(NOT DEFINED REACTOS_BUILD_TOOLS_DIR)
+ set(REACTOS_BUILD_TOOLS_DIR ${REACTOS_SOURCE_DIR}/build)
+ endif()
+
+ set(IMPORT_EXECUTABLES "${REACTOS_BUILD_TOOLS_DIR}/ImportExecutables.cmake" CACHE FILEPATH "Host executables")
+ include(${IMPORT_EXECUTABLES})
+
+ # Compiler specific definitions and macros
+ if(MSVC)
+ include(msc.cmake)
+ else()
+ include(gcc.cmake)
+ endif()
+
+ # Generic macros
+ include(CMakeMacros.cmake)
+
+ # IDL macros for widl/midl
+ include(cmake/idl-support.cmake)
+
+ #Some useful variables
+ set(LIVECD_DIR "${REACTOS_BINARY_DIR}/boot/livecd")
+ set(BOOTCD_DIR "${REACTOS_BINARY_DIR}/boot/bootcd")
+
+ # Activate support for assembly source files
+ enable_language(ASM)
+
+ # Activate language support for resource files
+ enable_language(RC)
+
+ if(DBG)
+ add_definitions(-DDBG=1 -D_SEH_ENABLE_TRACE)
+ endif()
+
+ if(KDBG)
+ add_definitions(-DKDBG=1)
+ endif()
+
+ if(_WINKD_)
+ add_definitions(-D_WINKD_=1)
+ endif()
+
+ # Version Options
+ add_definitions(-DWINVER=0x502
+ -D_WIN32_IE=0x600
+ -D_WIN32_WINNT=0x502
+ -D_WIN32_WINDOWS=0x502
+ -D_SETUPAPI_VER=0x502)
+
+ # Arch Options
+ if(ARCH MATCHES i386)
+ add_definitions(-D_M_IX86 -D_X86_ -D__i386__)
+ elseif(ARCH MATCHES amd64)
+ add_definitions(-D_M_AMD64 -D_AMD64_ -D__x86_64__ -D_WIN64)
+ elseif(ARCH MATCHES arm)
+ # _M_ARM is already defined by toolchain
+ add_definitions(-D_ARM_ -D__arm__)
+ endif()
+
+ # Other
+ if(ARCH MATCHES i386)
+ add_definitions(-DUSE_COMPILER_EXCEPTIONS -D_USE_32BIT_TIME_T)
+ elseif(ARCH MATCHES amd64)
+ add_definitions(-DUSE_COMPILER_EXCEPTIONS -DNO_UNDERSCORE_PREFIX)
+ elseif(ARCH MATCHES arm)
+ add_definitions(-DUSE_COMPILER_EXCEPTIONS)
+ endif()
+
+ include_directories(
+ include
+ include/psdk
+ include/dxsdk
+ ${REACTOS_BINARY_DIR}/include
+ ${REACTOS_BINARY_DIR}/include/dxsdk
+ ${REACTOS_BINARY_DIR}/include/psdk
+ ${REACTOS_BINARY_DIR}/include/reactos
+ include/crt
+ include/ddk
+ include/ndk
+ include/reactos
+ include/reactos/libs)
+
+ if(ARCH MATCHES arm)
+ include_directories(${REACTOS_SOURCE_DIR}/include/reactos/arm)
+ endif()
+
+ if(MSVC)
+ include_directories(include/crt/msc)
+ else()
+ include_directories(include/crt/mingw32)
+ endif()
+
+ add_dependency_header()
+
+ add_subdirectory(include/psdk)
+ add_subdirectory(include/dxsdk)
+ add_subdirectory(include/reactos/idl)
+ add_subdirectory(include/reactos/wine)
+ add_subdirectory(include/reactos/mc)
+ add_subdirectory(include/asm)
+
+ include(baseaddress.cmake)
+
+ add_subdirectory(base)
+ add_subdirectory(boot)
+ add_subdirectory(dll)
+ add_subdirectory(drivers)
+ add_subdirectory(hal)
+ add_subdirectory(lib)
+ add_subdirectory(media)
+ add_subdirectory(modules)
+ add_subdirectory(ntoskrnl)
+ add_subdirectory(subsystems)
+
+ file(MAKE_DIRECTORY ${REACTOS_BINARY_DIR}/include/reactos)
+
+ add_custom_target(buildno_header ALL DEPENDS ${REACTOS_BINARY_DIR}/include/reactos/buildno.h)
+
+ file(MAKE_DIRECTORY ${REACTOS_BINARY_DIR}/subsystems/win32/win32k/dib)
+
+ list(APPEND OUTPUT_FILES
+ ${REACTOS_BINARY_DIR}/subsystems/win32/win32k/dib/dib8gen.c
+ ${REACTOS_BINARY_DIR}/subsystems/win32/win32k/dib/dib16gen.c
+ ${REACTOS_BINARY_DIR}/subsystems/win32/win32k/dib/dib32gen.c)
+
+ add_custom_command(
+ OUTPUT ${OUTPUT_FILES}
+ COMMAND native-gendib ${REACTOS_BINARY_DIR}/subsystems/win32/win32k/dib
+ DEPENDS native-gendib)
+
+ add_custom_target(gendib_generated ALL DEPENDS ${OUTPUT_FILES})
+
+ file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/importlibs)
+
+ #bootcd and livecd
+ include(ros_cd.cmake)
+
+ add_dependency_footer()
+
+endif()
--- /dev/null
- ${REACTOS_BINARY_DIR}/ntoskrnl/ex/zw.S
+
+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/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
+ 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/fastinterlck.c
+ ex/fmutex.c
+ ex/handle.c
+ ex/harderr.c
+ ex/hdlsterm.c
+ ex/init.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
+ 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/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/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)
+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.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 ${CMAKE_CURRENT_BINARY_DIR}/ntoskrnl_ntoskrnl.h.gch ${SOURCE})
+
+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
+ cportlib
+ csq
+ ${PSEH_LIB}
+ cmlib
+ rtl
+ rossym
+ libcntpr
+ 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 asm)
+
+add_minicd_target(ntoskrnl reactos ntoskrnl.exe)
+add_livecd_target(ntoskrnl reactos/system32)
+add_importlib_target(ntoskrnl.spec)
++
++add_library(ntdllsys ntdll.S)
--- /dev/null
+
+spec2def(win32k.sys win32k.spec)
+
+include_directories(
+ .
+ include
+ ${REACTOS_SOURCE_DIR}/ntoskrnl/include
+ ${REACTOS_SOURCE_DIR}/lib/3rdparty/freetype/include
+ ${REACTOS_SOURCE_DIR}/include/reactos/subsys
+ ${REACTOS_SOURCE_DIR}/include/reactos/drivers)
+
+add_definitions(
+ -DLANGPACK
+ -D_WIN32K_)
+
+list(APPEND SOURCE
+ dib/alphablend.c
+ dib/dib1bpp.c
+ dib/dib4bpp.c
+ dib/dib8bpp.c
+ dib/dib16bpp.c
+ dib/dib24bpp.c
+ dib/dib32bpp.c
+ dib/dib.c
+ dib/floodfill.c
+ dib/stretchblt.c
+ eng/alphablend.c
+ eng/bitblt.c
+ eng/engbrush.c
+ eng/engevent.c
+ eng/clip.c
+ eng/copybits.c
+ eng/debug.c
+ eng/device.c
+ eng/driverobj.c
+ eng/error.c
+ eng/float.c
+ eng/gradient.c
+ eng/lineto.c
+ eng/ldevobj.c
+ eng/mapping.c
+ eng/mem.c
+ eng/engmisc.c
+ eng/mouse.c
+ eng/paint.c
+ eng/pdevobj.c
+ eng/perfcnt.c
+ eng/rlecomp.c
+ eng/semaphor.c
+ eng/sort.c
+ eng/string.c
+ eng/stretchblt.c
+ eng/surface.c
+ eng/transblt.c
+ eng/engwindow.c
+ eng/xlate.c
+ main/dllmain.c
+ misc/driver.c
+ misc/file.c
+ misc/math.c
+ misc/rtlstr.c
+ misc/copy.c
+ misc/registry.c
+ misc/usrheap.c
+ ntddraw/ddraw.c
+ ntddraw/dd.c
+ ntddraw/ddsurf.c
+ ntddraw/d3d.c
+ ntddraw/dvp.c
+ ntddraw/mocomp.c
+ ntddraw/eng.c
+ ntddraw/dxeng.c
+ ntuser/accelerator.c
+ ntuser/callback.c
+ ntuser/callproc.c
+ ntuser/caret.c
+ ntuser/class.c
+ ntuser/clipboard.c
+ ntuser/csr.c
+ ntuser/cursoricon.c
+ ntuser/defwnd.c
+ ntuser/desktop.c
+ ntuser/display.c
+ ntuser/event.c
+ ntuser/focus.c
+ ntuser/guicheck.c
+ ntuser/hook.c
+ ntuser/hotkey.c
+ ntuser/input.c
+ ntuser/keyboard.c
+ ntuser/kbdlayout.c
+ ntuser/menu.c
+ ntuser/message.c
+ ntuser/metric.c
+ ntuser/misc.c
+ ntuser/monitor.c
+ ntuser/msgqueue.c
+ ntuser/ntstubs.c
+ ntuser/ntuser.c
+ ntuser/painting.c
+ ntuser/prop.c
+ ntuser/scrollbar.c
+ ntuser/session.c
+ ntuser/simplecall.c
+ ntuser/sysparams.c
+ ntuser/timer.c
+ ntuser/useratom.c
+ ntuser/vis.c
+ ntuser/windc.c
+ ntuser/window.c
+ ntuser/winpos.c
+ ntuser/winsta.c
+ ntuser/object.c
+ objects/arc.c
+ objects/bezier.c
+ objects/bitblt.c
+ objects/bitmaps.c
+ objects/brush.c
+ objects/cliprgn.c
+ objects/coord.c
+ objects/dcattr.c
+ objects/dclife.c
+ objects/dcobjs.c
+ objects/dcstate.c
+ objects/dcutil.c
+ objects/device.c
+ objects/dibobj.c
+ objects/drawing.c
+ objects/fillshap.c
+ objects/font.c
+ objects/freetype.c
+ objects/gdibatch.c
+ objects/gdiobj.c
+ objects/icm.c
+ objects/line.c
+ objects/metafile.c
+ objects/palette.c
+ objects/path.c
+ objects/pen.c
+ objects/polyfill.c
+ objects/print.c
+ objects/rect.c
+ objects/region.c
+ objects/stockobj.c
+ objects/text.c
+ objects/wingl.c
+ objects/xformobj.c
+ stubs/stubs.c
+ stubs/umpdstubs.c
+ win32k.rc)
+
+list(APPEND GENDIB_GENERATED
+ ${CMAKE_CURRENT_BINARY_DIR}/dib/dib8gen.c
+ ${CMAKE_CURRENT_BINARY_DIR}/dib/dib16gen.c
+ ${CMAKE_CURRENT_BINARY_DIR}/dib/dib32gen.c)
+
+set_source_files_properties(${GENDIB_GENERATED} PROPERTIES GENERATED TRUE)
+
+list(APPEND SOURCE ${GENDIB_GENERATED})
+
+if(ARCH MATCHES i386)
+list(APPEND SOURCE
+ dib/i386/dib24bpp_hline.s
+ dib/i386/dib32bpp_hline.s
+ dib/i386/dib32bpp_colorfill.s
+ eng/i386/floatobj.S
+ misc/i386/cos_asm.s
+ misc/i386/sin_asm.s
+ misc/i386/atan2_asm.s
+ misc/i386/floor_asm.s
+ misc/i386/ceil_asm.s)
+else()
+list(APPEND SOURCE
+ dib/dib24bppc.c
+ dib/dib32bppc.c)
+endif()
+
+add_library(win32k SHARED
+ ${CMAKE_CURRENT_BINARY_DIR}/win32k_pch.h.gch
+ ${CMAKE_CURRENT_BINARY_DIR}/win32k.def
+ ${SOURCE})
+
+set_module_type(win32k kernelmodedriver)
+
+target_link_libraries(win32k
+ ${PSEH_LIB}
+ dxguid
+ libcntpr)
+
+add_importlibs(win32k ntoskrnl hal ftfd)
+add_pch(win32k ${CMAKE_CURRENT_SOURCE_DIR}/pch.h ${SOURCE})
+add_dependencies(win32k gendib_generated subsystem_napi)
+add_cab_target(win32k 1)
+add_importlib_target(win32k.spec)
++
++add_library(win32ksys sys-stubs.S)