Techwiki:File Layout

From ReactOS Wiki
Jump to: navigation, search

Current situation

The modules are sorted by file type on the highest level. That is dlls to dlls, static libs to static libs, drivers to drivers. ntdll is next to shell extensions and ksfilters are next to display drivers. On the other hand, modules that are very close to each other in a terms of their purpose/functionality are far seperated in the tree. Like user32/gdi32 in dll/win32 (together with a huge number of wine dlls) while win32k is in subsystems/win32. Trying to build individual parts of the tree is almost impossible due to wide spread dependencies. apps depend on dlls and some dlls depend on explorer. Cleaning ntdll will always result in a massive relink orgy, although the exports have not changed. Working on branches always means branching the whole of the tree. To build the amd64 port, I added a USERMODE switch to get rid of everything that is not needed yet, this way I don't have to spend an hour building a lot of stuff that will never be used.

Suggestion

Create basic sets of modules. Each set independent of the others. Core dependencies will be resolved by an sdk. This way you can easily add or remove or replace individual parts of the OS without breaking build. The only requirement for all other sets would be sdk, containing public headers, import libraries and some core libraries, like mingw and crt. The other sets can be build with only sdk as a dependency. Complete subparts of the OS could easily be switched between different branches, like arwinss vs normal win32, by changing one rbuild entry. Both could be developed inside the main tree at the same time, no need for a branch actually.

The sets

  • sdk

This set contains all global dependencies, import libraries, static libraries like crt, nt, delayimp,...

  • ntcore

Can be thought of like minwin. Contains the minimal bootable system. Including freeldr, ntoskrnl, hal, drivers, smss, lsass, winlogon, ntdll. A tiny nt console could be added just to have something to really interact with. Or refactoring several apis into kernelbase.dll could allow running cmd.

  • win32core

This is the core of the win32 subsytsem, containing win32k, user32, gdi32, kernel32, advapi32, csrss, video drivers.

  • gui

Maybe a bad name, anyway this would contain all additional stuff to boot into a full featured win32 gui system. It would contain wine dlls, the shell, apps, etc.

  • network
  • audio
  • reactx

Preliminary layout proposal

This is a PRELIMINARY proposal. If you think that it a module doesn't fit in any category move it to uncategorized till we decide where it should be placed. Use the discussion page to say your oppinion

+---audio
|   +---drivers
|   |   +---backpln
|   |   +---CMIDriver
|   |   +---mpu401
|   |   +---sb16
|   |   +---drm
|   |   |   +---drmk
|   |   +---filters
|   |   |   +---kmixer
|   |   |   +---splitter
|   |   |   +---swmidi
|   |   +---legacy
|   |   |   +---stream
|   |   |   +---wdmaud
|   |   +---mpu401_nt4
|   |   +---sb16_nt4.old
|   |   +---sndblst.old
|   |   +---sndblst_sys
|   |   +---sysaudio
|   |   +---portcls
|   |   +---wdmaud_sys
|   +---ksfilter
|   |   +---ks
|   |   +---swenum
|   +---libs
|   |   +---libsamplerate
|   |   +---legacy
|   |   +---mmebuddy
|   |   +---mment4
|   |   +---mmixer
|   |   +---shared
|   |   +---soundblaster
|   |   +---uartmidi
|   +---services
|   |   +---audiosrv
|   +---sounds
|   +---dlls
|   |   +---mmdrv
|   |   +---sndblst
|   |   +---wdmaud_drv
|   |   +---winmm
+---accessories
|   +---applications
|   |   +---cacls
|   |   +---calc
|   |   +---charmap
|   |   +---cmdutils
|   |   |   +---dbgprint
|   |   |   +---doskey
|   |   |   +---find
|   |   |   +---hostname
|   |   |   +---lodctr
|   |   |   +---more
|   |   |   +---reg
|   |   |   +---xcopy
|   |   +---control
|   |   +---downloader
|   |   +---dxdiag
|   |   +---fontview
|   |   +---hh
|   |   +---iexplore
|   |   +---kbswitch
|   |   +---logoff
|   |   +---magnify
|   |   +---mmc
|   |   +---mplay32
|   |   +---msconfig
|   |   +---mscutils
|   |   +---mstsc
|   |   +---notepad
|   |   +---paint
|   |   +---rapps
|   |   +---regedit
|   |   +---regedt32
|   |   +---sc
|   |   +---shutdown
|   |   +---sndrec32
|   |   +---sndvol32
|   |   +---taskmgr
|   |   +---winhlp32
|   |   +---winver
|   |   +---wordpad
|   |   +---write
|   +---games
|   |   +---solitaire
|   |   +---spider
|   |   +---winemine
|   |   +---cardlib
|   +---screensavers
|   |   +---3dtext
|   |   +---logon
|   +---dlls
|   |   +---bzip2
|   |   +---dxtn
|   |   +---libjpeg
|   |   +---libxslt
|   |   +---mesa32
|   |       +---...
|   +---doc
|   +---graphics
|       +---wallpapers
|       +---themes
+---shell
|   +---cpl
|   |   +---access
|   |   +---appwiz
|   |   +---console
|   |   +---desk
|   |   +---hdwwiz
|   |   +---input
|   |   +---intl
|   |   +---joy
|   |   +---liccpa
|   |   +---main
|   |   +---mmsys
|   |   +---ncpa
|   |   +---odbccp32
|   |   +---powercfg
|   |   +---sysdm
|   |   +---telephon
|   |   +---timedate
|   |   +---usrmgr
|   +---dlls
|   |   +---acledit
|   |   +---aclui
|   |   +---authz
|   |   +---avicap32
|   |   +---cards
|   |   +---cfgmgr32
|   |   +---devmgr
|   |   +---getuname
|   |   +---glu32
|   |   +---hid
|   |   +---lpk
|   |   +---modemui
|   |   +---netcfgx
|   |   +---netid
|   |   +---netshell
|   |   +---newdev
|   |   +---ntmarta
|   |   +---opengl32
|   |   +---packet
|   |   +---psapi
|   |   +---rasadhlp
|   |   +---rasdlg
|   |   +---rasman
|   |   +---sfc_os
|   |   +---serialui
|   |   +---shell32
|   |   +---shimgvw
|   |   +---srclient
|   |   +---syssetup
|   |   +---t2embed
|   |   +---tapiui
|   |   +---winfax
|   |   +---winscard
|   |   +---winspool
|   |   +---winsta
|   |   +---wshirda
|   +---applications
|   |   +---expand
|   |   +---format
|   |   +---cmd
|   |   +---explorer
|   |   +---explorer-new
|   |   +---msiexec
|   |   +---regsvr32
|   |   +---rundll32
|   |   +---runonce
|   +---shellext
|   |   +---deskadp
|   |   +---deskmon
|   |   +---devcpux
|   |   +---fontext
|   |   +---slayer
|   +---setup
|   |   +---reactos
|   |   +---setup
|   |   +---vmwinst
|   |   +---welcome
|   +---winedlls
|       +---activeds
|       +---actxprxy
|       +---advpack
|       +---atl
|       +---avifil32
|       +---bcrypt
|       +---beepmidi
|       +---browseui
|       +---cabinet
|       +---clusapi
|       +---comcat
|       +---comctl32
|       +---comdlg32
|       +---compstui
|       +---credui
|       +---crypt32
|       +---cryptdlg
|       +---cryptdll
|       +---cryptnet
|       +---cryptui
|       +---dbghelp
|       +---dciman32
|       +---dwmapi
|       +---fusion
|       +---gdiplus
|       +---hhctrl.ocx
|       +---hlink
|       +---hnetcfg
|       +---httpapi
|       +---iccvid
|       +---icmp
|       +---imaadp32.acm
|       +---imagehlp
|       +---imm32
|       +---inetcomm
|       +---inetmib1
|       +---initpki
|       +---inseng
|       +---iphlpapi
|       +---itircl
|       +---itss
|       +---jscript
|       +---loadperf
|       +---localspl
|       +---localui
|       +---lz32
|       +---mapi32
|       +---mciavi32
|       +---mcicda
|       +---mciqtz32
|       +---mciseq
|       +---mciwave
|       +---mlang
|       +---mpr
|       +---mprapi
|       +---msacm32
|       +---msadp32.acm
|       +---mscat32
|       +---mscms
|       +---mscoree
|       +---msctf
|       +---msftedit
|       +---msg711.acm
|       +---msgsm32.acm
|       +---mshtml
|       +---mshtml.tlb
|       +---msi
|       +---msimg32
|       +---msimtf
|       +---msisip
|       +---msisys.ocx
|       +---msnet32
|       +---msrle32
|       +---mssign32
|       +---mssip32
|       +---mstask
|       +---msvfw32
|       +---msvidc32
|       +---msxml3
|       +---nddeapi
|       +---netapi32
|       +---ntdsapi
|       +---ntprint
|       +---objsel
|       +---odbc32
|       +---odbccp32
|       +---ole32
|       +---oleacc
|       +---oleaut32
|       +---olecli32
|       +---oledlg
|       +---olepro32
|       +---olesvr32
|       +---olethk32
|       +---pdh
|       +---pidgen
|       +---powrprof
|       +---printui
|       +---pstorec
|       +---qmgr
|       +---qmgrprxy
|       +---query
|       +---rasapi32
|       +---resutils
|       +---riched20
|       +---riched32
|       +---rpcrt4
|       +---rsabase
|       +---rsaenh
|       +---sccbase
|       +---schannel
|       +---sensapi
|       +---setupapi
|       +---sfc
|       +---shdoclc
|       +---shdocvw
|       +---shfolder
|       +---shlwapi
|       +---slbcsp
|       +---snmpapi
|       +---softpub
|       +---spoolss
|       +---stdole2.tlb
|       +---stdole32.tlb
|       +---sti
|       +---sxs
|       +---tapi32
|       +---traffic
|       +---twain_32
|       +---updspapi
|       +---url
|       +---urlmon
|       +---usp10
|       +---uxtheme
|       +---version
|       +---windowscodecs
|       +---winemp3.acm
|       +---winhttp
|       +---wininet
|       +---wintrust
|       +---wldap32
|       +---wmi
|       +---wtsapi32
|       +---wuapi
|       +---xinput1_1
|       +---xinput1_2
|       +---xinput1_3
|       +---xinput9_1_0
|       +---xmllite
+---network
|   +---apps
|   |   +---arp
|   |   +---dwnl
|   |   +---finger
|   |   +---ftp
|   |   +---ipconfig
|   |   +---iprtprio
|   |   +---net
|   |   +---netstat
|   |   +---nslookup
|   |   +---ping
|   |   +---route
|   |   +---telnet
|   |   +---tracert
|   |   +---whois
|   +---dlls
|   |   +---dnsapi
|   |   +---msafd
|   |   +---mswsock
|   |   +---ntlanman
|   |   +---wlanapi
|   |   +---ws2help
|   |   +---ws2_32
|   |   +---ws2_32_new
|   |   +---wsock32
|   |   +---wshtcpip
|   +---drivers
|   |   +---acd
|   |   +---afd
|   |   +---dd
|   |   |   +---ne2000
|   |   |   +---pcnet
|   |   +---lan
|   |   +---ndis
|   |   +---tcpip
|   |   +---tdi
|   +---libs
|   |   +---adns
|   |   +---chew
|   |   +---dnslib
|   |   +---ip
|   |   +---oskittcp
|   +---services
|       +---dhcp
|       +---tcpsvcs
|       +---telnetd
|       +---tftpd
|       +---wlansvc
|       +---dhcpcsvc
+---ntcore
|   +---apps
|   |   +---autochk
|   |   +---bootok
|   |   +---ntcmd
|   +---bootdata
|   |   +---bootcd
|   |   +---bootcdregtest
|   |   +---livecd
|   |   +---livecdregtest
|   +---dlls
|   |   +---kernelbase
|   |   +---ntdll
|   |   +---smdll
|   +---drivers
|   |   +---base
|   |   |   +---beep
|   |   |   +---bootvid
|   |   |   +---kdcom
|   |   |   +---kddll
|   |   |   +---nmidebug
|   |   |   +---null
|   |   +---bus
|   |   |   +---acpi
|   |   |   +---isapnp
|   |   |   +---pci
|   |   +---etc
|   |   +---filesystems
|   |   |   +---cdfs
|   |   |   +---ext2
|   |   |   +---fastfat
|   |   |   +---fastfat_new
|   |   |   +---fslib
|   |   |   +---fs_rec
|   |   |   +---fullfat
|   |   |   +---msfs
|   |   |   +---mup
|   |   |   +---npfs
|   |   |   +---ntfs
|   |   +---inf
|   |   +---input
|   |   |   +---i8042prt
|   |   |   +---kbdclass
|   |   |   +---mouclass
|   |   |   +---sermouse
|   |   +---parallel
|   |   |   +---parallel
|   |   |   +---parclass
|   |   |   +---parport
|   |   +---serial
|   |   |   +---serenum
|   |   |   +---serial
|   |   +---setup
|   |   |   +---blue
|   |   +---storage
|   |   |   +---class
|   |   |   |   +---cdrom
|   |   |   |   +---class2
|   |   |   |   +---disk
|   |   |   |   +---include
|   |   |   |   +---ramdisk
|   |   |   +---classpnp
|   |   |   +---fdc
|   |   |   |   +---fdc
|   |   |   |   +---flpydisk
|   |   |   +---floppy
|   |   |   +---ide
|   |   |   |   +---atapi
|   |   |   |   +---pciide
|   |   |   |   +---pciidex
|   |   |   |   +---uniata
|   |   |   +---port
|   |   |   |   +---buslogic
|   |   |   |   +---diskdump
|   |   |   +---scsiport
|   |   +---usb
|   |   |   +---nt4compat
|   |   |   +---usbd
|   |   |   +---usbehci
|   |   |   +---usbhub
|   |   |   +---usbstor
|   +---freeldr
|   |   +---bootsect
|   |   +---fdebug
|   |   +---freeldr
|   +---hal
|   |   +---halarm
|   |   +---halppc
|   |   +---halx86
|   +---libs
|   |   +---csq
|   |   +---debugsup
|   |   +---lsalib
|   |   +---recyclebin
|   |   +---rtl
|   |   +---smlib
|   +---ntoskrnl
|   +---smss
|   +---usetup
|   +---vgafonts
+---directx
|   +---reactx
|   |   +---amstream
|   |   +---d3d8
|   |   +---d3d8thk
|   |   +---d3d9
|   |   +---ddraw
|   |   +---devenum
|   |   +---dinput
|   |   +---dinput8
|   |   +---dmusic
|   |   +---dplay
|   |   +---dplayx
|   |   +---dsound
|   |   +---dsound_new
|   |   +---dxdiagn
|   |   +---ksproxy
|   |   +---ksuser
|   |   +---msdmo
|   |   +---qedit
|   |   +---quartz
|   +---winex
|   |   +---d3d8
|   |   +---d3d9
|   |   +---d3dx9_24
|   |   +---d3dx9_25
|   |   +---d3dx9_26
|   |   +---d3dx9_27
|   |   +---d3dx9_28
|   |   +---d3dx9_29
|   |   +---d3dx9_30
|   |   +---d3dx9_31
|   |   +---d3dx9_32
|   |   +---d3dx9_33
|   |   +---d3dx9_34
|   |   +---d3dx9_35
|   |   +---d3dx9_36
|   |   +---d3dx9_37
|   |   +---d3dx9_38
|   |   +---d3dx9_39
|   |   +---d3dx9_40
|   |   +---d3dx9_41
|   |   +---ddraw
|   |   +---wined3d
|   +---drivers
|       +---dxapi
|       +---dxg
|       +---dxgthk
+---sdk
|   +---include
|   |   +---crt
|   |   +---ddk
|   |   +---dxsdk
|   |   +---GL
|   |   +---host
|   |   +---ndk
|   |   +---psdk
|   |   +---reactos
|   +---libs
|   |   +---atl
|   |   +---cmlib
|   |   +---crt
|   |   +---delayimp
|   |   +---dxguid
|   |   +---expat
|   |   +---wcsfuncs
|   |   +---import
|   |   +---inflib
|   |   +---libxml2
|   |   +---mingw
|   |   +---nt
|   |   +---pseh
|   |   +---rossym
|   |   +---scrnsave
|   |   +---strmiids
|   |   +---strsafe
|   |   +---uuid
|   |   +---wdmguid
|   |   +---zlib
|   +---tools
|       +---buildno
|       +---cabman
|       +---cdmake
|       +---create_nls
|       +---gendib
|       +---geninc
|       +---hpp
|       +---kbdtool
|       +---mkhive
|       +---ms2ps
|       +---nci
|       +---ofw_interface
|       +---pipetools
|       +---rbuild
|       +---rbuild_helper
|       +---regtests2xml
|       +---rgenstat
|       +---rsym
|       +---unicode
|       +---utf16le
|       +---widl
|       +---winebuild
|       +---wmc
|       +---wpp
|       +---wrc
+---win32core
|   +---win32k
|   +---csrss
|   |   +---win32csr
|   +---csr
|   |   +---csrsrv
|   |   +---basesrv
|   |   +---winsrv
|   +---drivers
|   |   +---displays
|   |   |   +---framebuf
|   |   |   +---framebufacc
|   |   |   +---vga
|   |   +---font
|   |   |   +---bmfd
|   |   |   +---ftfd
|   |   |   +---freetype
|   |   +---miniport
|   |   |   +---vbe
|   |   |   +---vga
|   |   |   +---xboxvmp
|   |   +---videoprt
|   +---dlls
|   |   +---gdi32
|   |   +---user32
|   +---fonts
|   +---keyboard
|   |   +---kbda1
|   |   +---kbda2
|   |   +---...
+---uncategorized
|   +---ntvdm
|   +---base
|   |   +---userinit
|   |   +---lsass
|   |   +---winlogon
|   |       +---msgina
|   +---dlls
|   |   +---advapi32
|   |   +---kernel32
|   |   +---crtdll
|   |   +---lsasrv
|   |   +---msvcrt
|   |   +---msvcrt20
|   |   +---msvcrt40
|   |   +---samlib
|   |   +---samsrv
|   |   +---secur32
|   |   +---security
|   |   +---fmifs
|   |   +---vdmdbg
|   |   +---userenv
|   |   +---uext2
|   |   +---ufat
|   |   +---ufatx
|   |   +---untfs
|   +---nls
|   |   +---icu4ros
|   |   +---idndl
|   |   +---idndl_redist
|   |   +---lib
|   |   |   +---idna
|   |   |   +---normalize
|   |   |   +---scripts
|   |   +---nlsdata
|   |   +---normaliz
|   |   +---normaliz_redist
|   +---libs
|   |   +---epsapi
|   +---services
|       +---eventlog
|       +---rpcss
|       +---services.exe
|       +---svchost
|       +---umpnpmgr
|       +---spoolsv