summaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
6 daysFeature verification scriptkernconfAlexey Gavrilov1-0/+90
Current script includes a batch of verification routines. One routine allows now - it is dependency verification. It validates dependencies chain start from initial feature to the last sequence dependencies element. That script has helpful in CI pipeline, when cmake generation succeeded. Then needs more checks around the features. Committers might to incorrect convey the features list. CI must identifies these cases. Signed-off-by: Alexey Gavrilov <alexey.gavrilov@mail.com>
2026-07-23Include cmake feature module in the build routineAlexey Gavrilov11-110/+267
Add predicate `ifFeatureEnables` that checks feature is define or not, and return accordingly boolean value. Consider some cmake objective targets as features. Populate information to these targets, and provides in particular file `CMakeFeatures.txt`. Cpuid, MSR, ACPI and driver VGA in text mode they are. Signed-off-by: Alexey Gavrilov <alexey.gavrilov@mail.com>
2026-07-21Add project-related variables to feature moduleAlexey Gavrilov1-10/+30
Project available architectures, project root directory, project current architecture, project toolchain directory are define in feature module, and they must to initialize with new function. The mention above function `featureProjectDataAssign` writes values to these variables cause them initialize. Signed-off-by: Alexey Gavrilov <alexey.gavrilov@mail.com>
2026-07-21Cmake feature add some commentsAlexey Gavrilov1-8/+18
Signed-off-by: Alexey Gavrilov <alexey.gavrilov@mail.com>
2026-07-17Add a new cmake project variable and doc updateAlexey Gavrilov2-3/+20
A `IS_BIND_FEATURES_TO_BUILD` option has influence the `bindFeatureToBuild` function calling if it is specifies. Add some cmake options in build documentation Signed-off-by: Alexey Gavrilov <alexey.gavrilov@mail.com>
2026-07-17Overwrite over the macro a feature module functionAlexey Gavrilov1-11/+67
The cmake feature module function `bindFeatureToBuild` has overwrite over the cover function macro. Signed-off-by: Alexey Gavrilov <alexey.gavrilov@mail.com>
2026-07-16Processing feature variables policy changeAlexey Gavrilov2-8/+22
Feature is enable if variable FEATURE_<feature name> defines and it caches, and it judges as **enable**. It influences the FEATURE_<feature name>_IS_ENABLE field in `CMakeFeature.out` and runfile generation files - all the **enable** features are mention direct or indirect now. Signed-off-by: Alexey Gavrilov <alexey.gavrilov@mail.com>
2026-07-16Cmake feature module duplicates checkAlexey Gavrilov1-1/+15
Signed-off-by: Alexey Gavrilov <alexey.gavrilov@mail.com>
2026-07-16Cmake feature module generates functions bodyAlexey Gavrilov1-76/+86
Add a new macros `createFeatureModuleFunction` that cover functions definition. If module suspends, generates all blank function. Blank function is only show a warning about module status. Generate according body and arguments of function when module is active. Signed-off-by: Alexey Gavrilov <alexey.gavrilov@mail.com>
2026-07-14Cancel toolchain processing for runfileAlexey Gavrilov1-23/+1
Toolchain and build folder cmake arguments doesn't have in runfile now. Only features are enumerating in. These deleted defines are point by CI service to run needed cmake configuration Signed-off-by: Alexey Gavrilov <alexey.gavrilov@mail.com>
2026-07-03Switch attached cmake file to commitAlexey Gavrilov1-2/+2
Signed-off-by: Alexey Gavrilov <alexey.gavrilov@mail.com>
2026-07-03File write functions changesAlexey Gavrilov4-23/+39
In `outFeaturesToFile` function toolset is appends to a resulting file (cmake toolchain file or arch, compiler if previous is not specify). Toolset mention needs to filter available features for a specific platform. FEATURE_<feature>_IS_ENABLING var also provides when <feature> already enabled. Build type is not in toolset now. That means to parse `CMAKE_BUILD_TYPE` anyway when toolset is processing even if `CMAKE_TOOLSCHAIN_FILE` is specified. Signed-off-by: Alexey Gavrilov <alexey.gavrilov@mail.com>
2026-07-02Reproduction cmake run command fileAlexey Gavrilov1-0/+54
Generates file contains command line cmake run to reproduce previous cmake pass through. CI service use this run file to start pipeline with needs cmake configuration that developer was make. Following code pushing workflow: Commit pushed to a code review system (`CMakeReplication.txt` required) -> CI service intercepts changes -> Pipeline start using passed in commit cmake replication command -> CI submit pipeline finished status Signed-off-by: Alexey Gavrilov <alexey.gavrilov@mail.com>
2026-07-02Write configuring features into output fileAlexey Gavrilov1-20/+53
Implements a new feature module function `outFeaturesToFile` to output all available features into 'CMakeFeatureOut.txt' file. Format of that file is set of FEATURE_<feature>_<property> variables like defines in `CMakeCache.txt`. Will to use as proxy between cmake and configuration tools. Those utilities read features out file to build configuration kernel tree. Signed-off-by: Alexey Gavrilov <alexey.gavrilov@mail.com>
2026-06-25Add feature cmake moduleAlexey Gavrilov2-2/+169
Feature is abstraction around cmake build target used to contains descriptive information in target properties as name, dependencies, tags and etc.. Feature creation divided by three processes: start creation process, fields filling and stop creation process. Start creation process means passed target is handle now, and stop process is finish to handle a current feature. Using this way helps to construct correct features hierarchy and simplify kernel configuration process. This will use in standalone automating kernel configuration tools: 1. Cmake generate a features file with information about them all. 2. Tool read this file and display features tree. 3. User start to configuring his kernel. Signed-off-by: Alexey Gavrilov <alexey.gavrilov@mail.com>
2026-06-09Apply the GPLv3 licenseAlexey Gavrilov60-3/+1704
Copyright disclaimer and copyright note are prepending to a every source file. Add license section in the `README.md` file. Create the LICENSE` file with license information. Signed-off-by: Alexey Gavrilov <alexey.gavrilov@mail.com>
2026-06-09Root project documentation updateAlexey Gavrilov4-63/+293
`README.md` is rework. Describe project concept description and mention links. The old readme file build section move to the separate file `BUILD.md`. It helps to fast read the corresponding file instead of viewing a `README.md` table of content. 'CONTRIBUTING.md' file contents information to makes gain experience and contribute in project easier. 'CHANGELOG.md' provide a detailed, chronological history of change releases. Signed-off-by: Alexey Gavrilov <alexey.gavrilov@mail.com>
2026-06-09Following release directionsAlexey Gavrilov2-0/+63
RELEASE.md contains following release goals and them execution status. TODO.md contains more detailed information about release goals. Signed-off-by: Alexey Gavrilov <alexey.gavrilov@mail.com>
2026-04-02Correct CRTXBUNDLE static targets into separate objectscmakeAlexey Gavrilov2-17/+18
This correct refers to a wrong order of linking CRT objects. When targets are separates into 4: CRTI, CRTBEGIN, CRTEND, CRTN the order became a little bit correct. TODO - Image with grub bootloader creation - Build under window platform (optional) Signed-off-by: Alexey Gavrilov <alexey.gavrilov@mail.com>
2026-03-30Move to CHECK_START messagesAlexey Gavrilov2-10/+20
More convenient requirements checks way by CHECK_START message argument. Signed-off-by: Alexey Gavrilov <alexey.gavrilov@mail.com>
2026-03-30Cmake status information outputAlexey Gavrilov5-13/+51
Reinforce of compiler, C runtime, architecture checks at cmake configuration. Compiler check means continue building at the cmake configure stage only for supported compilers. Use unsupported compiler involves immediate build process stopping. C runtime check means finding of runtime objects. Especially for *crtbegin.o* and *crtend.o* files. Architecture means *ObjectiveProject_ARCHITECTURE* variable is set. That variable configure at toolchain file by default and cannot override if toolchain file is passed. TODO - Image creation - Build under window platform (optional) Signed-off-by: Alexey Gavrilov <alexey.gavrilov@mail.com>
2026-03-28Set architecture bitness in nasm filesAlexey Gavrilov3-0/+3
Signed-off-by: Alexey Gavrilov <alexey.gavrilov@mail.com>
2026-03-28Cmake build type at the generation stageAlexey Gavrilov8-13/+36
Fix in *nasm* files - set architecture bitness. Move compiler flags from *toolchain* file to *requirements target* considering cmake files. This solution allows available of multi-configurations generators to pass compiler options without affecting on single-configuration generators. TODO - Debug information - Image creation - Build under window platform (optional) Signed-off-by: Alexey Gavrilov <alexey.gavrilov@mail.com>
2026-03-28Cmake build generator support: toolchain fileAlexey Gavrilov5-21/+20
Two toolchain files for clang and gcc compilers under x86 platform. Debug flags also passed at the configure time. Signed-off-by: Alexey Gavrilov <alexey.gavrilov@mail.com>
2026-03-27Cmake build generator support: build stageAlexey Gavrilov39-84/+415
Multi-target architecture implementation: each root source code directory presents the one *INTERFACE* target to it's subdirectory subtargets that link only as *STATIC* library. For instance, *arch* directory presents *Architecture* target then *Architecture* target has *CPUID*, *IO*, *PORT* and etc. dependencies Exact order of linking targets is: boot.o CRTIBUNDLE <TARGETS> CRTNBUNDLE. Sequence destruction cause to UB. Please to pay attention to this. TODO - Debug information - Build type - Toolchain file - Image creation - Build by WinGW compiler on Windows platform (optional) Signed-off-by: Alexey Gavrilov <alexey.gavrilov@mail.com>
2025-12-20Global variables initialization implementationlinker_scriptAlexey Gavrilov4-6/+27
User implementation of C runtime library objects (`crti.s` and `crtn.s`) for initialization (termination functionality are ignored). Changing files order passed to the linker. Rough order is: boot.s crti.o crtbegin.o other-link-objects.o crtend.o crtn.o Signed-off-by: Alexey Gavrilov <alexey.gavrilov@mail.com>
2025-12-20Linker script refactorAlexey Gavrilov1-10/+18
In general this update touching sections for initialization and destruction of global variables. DISCARD sections added (.fini and .comment) and particular sections (.ctors, .dtors, .init, .fini) moved into more common sections (.rodata and .text) accordingly. This decision allows to save a some RAM. Signed-off-by: Alexey Gavrilov <alexey.gavrilov@mail.com>
2025-12-20Linker script reworkAlexey Gavrilov4-59/+77
`memory.ld` is a architecture-dependent ld config provides some general symbols which every `memory.ld` config must assign and memory regions associated with each output section. 'linker.ld' config file presents segments configuration. Multiboot section filling move in the 'linker.ld' file. Recommendation for further patches: controlled logic implementation for multiboot version and header/entries in build configuration tool (CMake or make). For instance, multiboot version and video mode selection through variable passing in build system: `cmake ... -DMULTIBOOT_VERSION=2 -DMULTIBOOT_VIDEO_MODE=TEXT_VIDEO_MODE` or 'export MULTIBOOT_VERSION=2; export MULTIBOOT_VIDEO_MODE=TEXT_VIDEO_MODE'. Then build system do proper filling of `.multiboot` section depends on passing variables. Signed-off-by: Alexey Gavrilov <alexey.gavrilov@mail.com>
2025-12-11Defines refactoring in msr modulecpuid_refactorAlexey Gavrilov2-16/+26
New cpuid model uses instead of old in some msr definitions. Signed-off-by: Alexey Gavrilov <alexey.gavrilov@mail.com>
2025-12-11Put in cpuid some definitions and declarationsAlexey Gavrilov2-311/+110
Declarations: `acquireInformation` for two extended cpuid commands. Overloading `operator&` for enum classes in `VersionInfo` structure to get proper bit value. All declarations from ==Cpuid.h== file are define in the corresponding cpp file. Signed-off-by: Alexey Gavrilov <alexey.gavrilov@mail.com>
2025-12-01Refactoring cpuid model interactionAlexey Gavrilov6-365/+286
Patch for support CPU identification feature. Model smash on two pieces: platform-independent and dependent accordingly. The first obtains architecture details from CPU by special registers or execute instruction and filling proper structure. The second piece needs for more universality to use in independent code. Currently, platform-independent part supports only x86 cpuid(0h,01h) leafs. Signed-off-by: Alexey Gavrilov <alexey.gavrilov@mail.com>
2025-05-10Kheap section + metadataAlexey Gavrilov4-7/+36
2024-05-27delete arch fileAlexey Gavrilov3-9/+2
2024-05-24Merge pull request #9 from rebovas/interrupts_picHEADmainAlexey Gavrilov15-169/+948
Pic + Tuple + refactor PrimaryInitialization class
2024-05-24Pic + Tuple + refactor PrimaryInitialization classAlexey Gavrilov15-169/+948
2024-04-10Merge pull request #8 from rebovas/msrAlexey Gavrilov10-14/+490
Msr + interrupts implement + crude implementation of IDT filling
2024-04-10VGADisplay some updatesAlexey Gavrilov2-3/+0
2024-04-10MSR + IDT + test ISRsAlexey Gavrilov10-13/+492
2024-03-31Merge pull request #7 from rebovas/makefile_updateAlexey Gavrilov2-6/+11
Makefile updates
2024-03-31Makefile updatesAlexey Gavrilov2-6/+11
2024-03-31Merge pull request #6 from rebovas/idtAlexey Gavrilov10-44/+266
IDT + uintptr update
2024-03-31IDT + uintptr updateAlexey Gavrilov10-44/+266
2024-03-27Merge pull request #5 from rebovas/acpi_madtAlexey Gavrilov11-35/+350
Acpi madt + some updates
2024-03-27Some updates: rename memAddr, define architectureAlexey Gavrilov9-26/+49
2024-03-26Implement MADT tableAlexey Gavrilov5-12/+304
2024-03-25Merge pull request #4 from rebovas/acpi_classesAlexey Gavrilov7-2/+329
Implementation ACPI tables through classes
2024-03-25Acpi classes + string operationsAlexey Gavrilov6-115/+271
2024-03-19Remove unnecessary fileAlexey Gavrilov1-0/+0
2024-03-19Implementation acpi tables through structsAlexey Gavrilov4-1/+172
2024-03-08Update README.mdAlexey Gavrilov1-5/+6