Integrate OS compatibility in this brench
This commit is contained in:
+111
-78
@@ -1,78 +1,111 @@
|
||||
cmake_minimum_required(VERSION 2.8.4)
|
||||
|
||||
project(MentOsProject)
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Add the debugging option.
|
||||
set(DEBUGGING_TYPE "DEBUG_STDIO" CACHE STRING
|
||||
"Chose the type of debugging: DEBUG_STDIO DEBUG_LOG")
|
||||
set_property(
|
||||
CACHE DEBUGGING_TYPE PROPERTY STRINGS
|
||||
DEBUG_STDIO
|
||||
DEBUG_LOG)
|
||||
if ("${DEBUGGING_TYPE}" STREQUAL "DEBUG_STDIO" OR
|
||||
"${DEBUGGING_TYPE}" STREQUAL "DEBUG_LOG")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D${DEBUGGING_TYPE}")
|
||||
message(STATUS "Setting debugging type to ${DEBUGGING_TYPE}.")
|
||||
else ()
|
||||
message(FATAL_ERROR "Debugging type ${DEBUGGING_TYPE} is not valid.")
|
||||
endif ()
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Add the sub-directories.
|
||||
add_subdirectory(mentos)
|
||||
add_subdirectory(initscp)
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Generate the initrd filesystem.
|
||||
add_custom_target(
|
||||
initfs
|
||||
COMMAND echo "---------------------------------------------"
|
||||
COMMAND echo "Initializing 'initfs'..."
|
||||
COMMAND echo "---------------------------------------------"
|
||||
COMMAND initfscp -s ${CMAKE_SOURCE_DIR}/files -t ${CMAKE_BINARY_DIR}/initfs -m /dev
|
||||
COMMAND echo "---------------------------------------------"
|
||||
COMMAND echo "Done!"
|
||||
COMMAND echo "---------------------------------------------"
|
||||
DEPENDS initfscp
|
||||
)
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Set memory size.
|
||||
SET(MEMORY_SIZE 1096M)
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Builds the code and runs qemu with the built Os.
|
||||
SET(EMULATOR qemu-system-i386)
|
||||
if (${DEBUGGING_TYPE} STREQUAL DEBUG_LOG)
|
||||
SET(EMULATOR_FLAGS ${EMULATOR_FLAGS} -serial file:serial.log)
|
||||
elseif (${DEBUGGING_TYPE} STREQUAL DEBUG_STDIO)
|
||||
SET(EMULATOR_FLAGS ${EMULATOR_FLAGS} -serial stdio)
|
||||
endif ()
|
||||
SET(EMULATOR_FLAGS ${EMULATOR_FLAGS} -vga std)
|
||||
SET(EMULATOR_FLAGS ${EMULATOR_FLAGS} -k it)
|
||||
SET(EMULATOR_FLAGS ${EMULATOR_FLAGS} -m ${MEMORY_SIZE})
|
||||
SET(EMULATOR_KERNEL -kernel mentos/kernel.bin)
|
||||
SET(EMULATOR_FS -initrd initfs)
|
||||
|
||||
add_custom_target(
|
||||
qemu
|
||||
COMMAND ${EMULATOR} ${EMULATOR_FLAGS} ${EMULATOR_KERNEL} ${EMULATOR_FS}
|
||||
DEPENDS MentOs
|
||||
DEPENDS initfs
|
||||
)
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Builds the code and runs qemu with the built Os.
|
||||
SET(EMULATOR_FLAGS_GDB ${EMULATOR_FLAGS} -s -S)
|
||||
SET(GDB_PROG cgdb)
|
||||
SET(GDB_ARGS -x ${CMAKE_SOURCE_DIR}/.gdb.debug)
|
||||
|
||||
add_custom_target(
|
||||
qemu-gdb
|
||||
COMMAND xterm -geometry 160x30-0-0 -e ${EMULATOR} ${EMULATOR_FLAGS_GDB} ${EMULATOR_KERNEL} ${EMULATOR_FS} &
|
||||
COMMAND xterm -geometry 160x30-0+0 -e ${GDB_PROG} ${GDB_ARGS} &
|
||||
DEPENDS MentOs
|
||||
DEPENDS initfs
|
||||
)
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Initialize the project.
|
||||
project(MentOs)
|
||||
cmake_minimum_required(VERSION 2.8.4)
|
||||
|
||||
message(STATUS "Crosscompiling: ${CMAKE_CROSSCOMPILING}")
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Add operating system specific option.
|
||||
message(STATUS "System name: ${CMAKE_HOST_SYSTEM_NAME}")
|
||||
message(STATUS "Kernel version: ${CMAKE_SYSTEM_VERSION}")
|
||||
if ((${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Darwin") OR APPLE)
|
||||
# Apple MacOSx
|
||||
elseif ((${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Windows") OR WIN32)
|
||||
# Windows
|
||||
set(EMULATOR_FLAGS ${EMULATOR_FLAGS} -sdl)
|
||||
else()
|
||||
# Generic Unix System
|
||||
find_program(LSB_RELEASE_EXEC lsb_release)
|
||||
execute_process(COMMAND "${LSB_RELEASE_EXEC}" --short --release
|
||||
OUTPUT_VARIABLE LSB_RELEASE_VERSION_SHORT
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
message(STATUS "LSB version: ${LSB_RELEASE_VERSION_SHORT}")
|
||||
if (${LSB_RELEASE_VERSION_SHORT} MATCHES "^18")
|
||||
# Ubuntu 18
|
||||
set(EMULATOR_FLAGS ${EMULATOR_FLAGS} -sdl)
|
||||
elseif (${LSB_RELEASE_VERSION_SHORT} MATCHES "^19")
|
||||
# Ubuntu 19
|
||||
set(EMULATOR_FLAGS ${EMULATOR_FLAGS} -display gtk)
|
||||
elseif (${LSB_RELEASE_VERSION_SHORT} MATCHES "^20")
|
||||
# Ubuntu 20
|
||||
set(EMULATOR_FLAGS ${EMULATOR_FLAGS} -display gtk)
|
||||
else()
|
||||
set(EMULATOR_FLAGS ${EMULATOR_FLAGS} -sdl)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Add the debugging option.
|
||||
set(DEBUGGING_TYPE "DEBUG_STDIO" CACHE STRING
|
||||
"Chose the type of debugging: DEBUG_STDIO DEBUG_LOG")
|
||||
set_property(
|
||||
CACHE DEBUGGING_TYPE PROPERTY STRINGS
|
||||
DEBUG_STDIO
|
||||
DEBUG_LOG)
|
||||
if ("${DEBUGGING_TYPE}" STREQUAL "DEBUG_STDIO" OR
|
||||
"${DEBUGGING_TYPE}" STREQUAL "DEBUG_LOG")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D${DEBUGGING_TYPE}")
|
||||
message(STATUS "Setting debugging type to ${DEBUGGING_TYPE}.")
|
||||
else ()
|
||||
message(FATAL_ERROR "Debugging type ${DEBUGGING_TYPE} is not valid.")
|
||||
endif ()
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Add the sub-directories.
|
||||
add_subdirectory(mentos)
|
||||
add_subdirectory(initscp)
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Generate the initrd filesystem.
|
||||
add_custom_target(
|
||||
initfs
|
||||
COMMAND echo "---------------------------------------------"
|
||||
COMMAND echo "Initializing 'initfs'..."
|
||||
COMMAND echo "---------------------------------------------"
|
||||
COMMAND ./initscp/initfscp -s ${CMAKE_SOURCE_DIR}/files -t ${CMAKE_BINARY_DIR}/initfs -m /dev
|
||||
COMMAND echo "---------------------------------------------"
|
||||
COMMAND echo "Done!"
|
||||
COMMAND echo "---------------------------------------------"
|
||||
DEPENDS initfscp
|
||||
)
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Set memory size.
|
||||
SET(MEMORY_SIZE 1096M)
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Builds the code and runs qemu with the built Os.
|
||||
SET(EMULATOR qemu-system-i386)
|
||||
if (${DEBUGGING_TYPE} STREQUAL DEBUG_LOG)
|
||||
SET(EMULATOR_FLAGS ${EMULATOR_FLAGS} -serial file:serial.log)
|
||||
elseif (${DEBUGGING_TYPE} STREQUAL DEBUG_STDIO)
|
||||
SET(EMULATOR_FLAGS ${EMULATOR_FLAGS} -serial stdio)
|
||||
endif ()
|
||||
SET(EMULATOR_FLAGS ${EMULATOR_FLAGS} -vga std)
|
||||
SET(EMULATOR_FLAGS ${EMULATOR_FLAGS} -k it)
|
||||
SET(EMULATOR_FLAGS ${EMULATOR_FLAGS} -m ${MEMORY_SIZE})
|
||||
SET(EMULATOR_KERNEL -kernel mentos/kernel.bin)
|
||||
SET(EMULATOR_FS -initrd initfs)
|
||||
|
||||
add_custom_target(
|
||||
qemu
|
||||
COMMAND ${EMULATOR} ${EMULATOR_FLAGS} ${EMULATOR_KERNEL} ${EMULATOR_FS}
|
||||
DEPENDS MentOs
|
||||
DEPENDS initfs
|
||||
)
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Builds the code and runs qemu with the built Os.
|
||||
SET(EMULATOR_FLAGS_GDB ${EMULATOR_FLAGS} -s -S)
|
||||
SET(GDB_PROG cgdb)
|
||||
SET(GDB_ARGS -x ${CMAKE_SOURCE_DIR}/.gdb.debug)
|
||||
|
||||
add_custom_target(
|
||||
qemu-gdb
|
||||
COMMAND xterm -geometry 160x30-0-0 -e ${EMULATOR} ${EMULATOR_FLAGS_GDB} ${EMULATOR_KERNEL} ${EMULATOR_FS} &
|
||||
COMMAND xterm -geometry 160x30-0+0 -e ${GDB_PROG} ${GDB_ARGS} &
|
||||
DEPENDS MentOs
|
||||
DEPENDS initfs
|
||||
)
|
||||
|
||||
|
||||
@@ -36,6 +36,9 @@ Main Developers:
|
||||
|
||||
Prerequisites
|
||||
-----------------
|
||||
|
||||
MentOS is compatible with the main Unix distribution operating systems. It has been tested with *Ubuntu* and *MacOS*, but specifically tested on *Ubuntu 18.04*.
|
||||
|
||||
For compiling the main system:
|
||||
|
||||
* nasm
|
||||
@@ -47,17 +50,43 @@ For compiling the main system:
|
||||
|
||||
To run and try:
|
||||
|
||||
* qemu-system-x86
|
||||
* qemu-system-i386
|
||||
|
||||
For debugging:
|
||||
|
||||
* ccmake
|
||||
* gdb or cgdb
|
||||
* cgdb
|
||||
* xterm
|
||||
|
||||
For MacOS, you have additional dependencies:
|
||||
|
||||
* i386-elf-binutils
|
||||
* i386-elf-gcc
|
||||
|
||||
Prerequisites installation commands
|
||||
-----------------
|
||||
|
||||
For Ubuntu:
|
||||
|
||||
```
|
||||
sudo apt-get update && sudo apt-get upgrade -y
|
||||
sudo apt-get install -y build-essential git cmake qemu-system-i386
|
||||
sudo apt-get install -y cgdb xterm #<- for debug only
|
||||
```
|
||||
|
||||
For MacOS:
|
||||
|
||||
You need to install additionally the i386-elf cross-compiler. The simplest installation method is through Homebrew package manager. Install [Homebrew](https://brew.sh/index_it) if you don't already have and exec the following commands:
|
||||
|
||||
```
|
||||
brew update && brew upgrade
|
||||
brew install i386-elf-binutils i386-elf-gcc git cmake qemu nasm
|
||||
brew install cgdb xterm #<- for debug only
|
||||
```
|
||||
|
||||
Compiling MentOS
|
||||
-----------------
|
||||
Compile and boot MentOS with qemu:
|
||||
Compile and boot MentOS with qemu in Unix systems:
|
||||
|
||||
```
|
||||
cd <clone_directory>
|
||||
@@ -70,6 +99,12 @@ make qemu
|
||||
|
||||
If you want to access to the shell, use one of the usernames listed in files/passwd.
|
||||
|
||||
**For MacOS**, the steps are the same but instead of `cmake ..`, you have to put an additional argument in order to use the i386-elf cross-compiler:
|
||||
|
||||
```
|
||||
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchain.cmake ..
|
||||
```
|
||||
|
||||
Change the scheduling algorithm
|
||||
-----------------
|
||||
|
||||
@@ -80,6 +115,23 @@ MentOS provides three different scheduling algorithms:
|
||||
* Completely Fair Scheduling
|
||||
|
||||
If you want to change the scheduling algorithm:
|
||||
|
||||
```
|
||||
cd build
|
||||
|
||||
# Round Robin scheduling algorithm
|
||||
cmake -DSCHEDULER_TYPE=SCHEDULER_RR ..
|
||||
# Priority scheduling algorithm
|
||||
cmake -DSCHEDULER_TYPE=SCHEDULER_PRIORITY ..
|
||||
# Completely Fair Scheduling algorithm
|
||||
cmake -DSCHEDULER_TYPE=SCHEDULER_CFS ..
|
||||
|
||||
make
|
||||
make qemu
|
||||
```
|
||||
|
||||
Otherwise you can use `ccmake`:
|
||||
|
||||
```
|
||||
cd build
|
||||
cmake ..
|
||||
@@ -114,6 +166,16 @@ MentOS provides a Buddy System to manage the allocation and deallocation of
|
||||
page frames in the physical memory.
|
||||
|
||||
If you want to enable the MentOS's Buddy System:
|
||||
|
||||
```
|
||||
cd build
|
||||
cmake -DENABLE_BUDDY_SYSTEM=ON ..
|
||||
make
|
||||
make qemu
|
||||
```
|
||||
|
||||
Otherwise you can use `ccmake`:
|
||||
|
||||
```
|
||||
cd build
|
||||
cmake ..
|
||||
|
||||
@@ -6,6 +6,12 @@ project(initfscp C ASM)
|
||||
# Set the project name.
|
||||
set(PROJECT_NAME initfscp)
|
||||
|
||||
if (CMAKE_CROSSCOMPILING)
|
||||
set(CMAKE_C_COMPILER gcc)
|
||||
set(CMAKE_CXX_COMPILER g++)
|
||||
set(CMAKE_EXE_LINKER_FLAGS "")
|
||||
endif (CMAKE_CROSSCOMPILING)
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Set the compiler options (original).
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g3")
|
||||
|
||||
+189
-180
@@ -1,10 +1,17 @@
|
||||
# ------------------------------------------------------------------------------
|
||||
# Initialize the project.
|
||||
project(MentOs C ASM)
|
||||
set(PROJECT_NAME MentOs)
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Set the project name.
|
||||
set(PROJECT_NAME MentOs)
|
||||
# Add operating system specific option.
|
||||
if((${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Darwin") OR APPLE) # Apple MacOSx
|
||||
set(CMAKE_ASM_COMPILER nasm)
|
||||
elseif ((${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Windows") OR WIN32) # Windows
|
||||
set(CMAKE_ASM_COMPILER ${CMAKE_SOURCE_DIR}/third_party/nasm/bin/nasm)
|
||||
else () # Generic Unix System
|
||||
set(CMAKE_ASM_COMPILER ${CMAKE_SOURCE_DIR}/third_party/nasm/bin/nasm)
|
||||
endif ()
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Find doxygen
|
||||
@@ -24,11 +31,11 @@ if (BUILD_DOCUMENTATION)
|
||||
configure_file(${doxyfile_in} ${doxyfile} @ONLY)
|
||||
|
||||
add_custom_target(
|
||||
doc
|
||||
COMMAND ${DOXYGEN_EXECUTABLE} ${doxyfile}
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||
COMMENT "Generating API documentation with Doxygen"
|
||||
VERBATIM
|
||||
doc
|
||||
COMMAND ${DOXYGEN_EXECUTABLE} ${doxyfile}
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||
COMMENT "Generating API documentation with Doxygen"
|
||||
VERBATIM
|
||||
)
|
||||
install(DIRECTORY ${CMAKE_BINARY_DIR}/html DESTINATION share/doc)
|
||||
endif (BUILD_DOCUMENTATION)
|
||||
@@ -36,17 +43,17 @@ endif (BUILD_DOCUMENTATION)
|
||||
# ------------------------------------------------------------------------------
|
||||
# Add the scheduling option.
|
||||
set(SCHEDULER_TYPE
|
||||
"SCHEDULER_RR"
|
||||
CACHE STRING
|
||||
"Chose the type of scheduler: SCHEDULER_RR SCHEDULER_PRIORITY SCHEDULER_CFS")
|
||||
"SCHEDULER_RR"
|
||||
CACHE STRING
|
||||
"Chose the type of scheduler: SCHEDULER_RR SCHEDULER_PRIORITY SCHEDULER_CFS")
|
||||
set_property(
|
||||
CACHE SCHEDULER_TYPE PROPERTY STRINGS
|
||||
SCHEDULER_RR
|
||||
SCHEDULER_PRIORITY
|
||||
SCHEDULER_CFS)
|
||||
CACHE SCHEDULER_TYPE PROPERTY STRINGS
|
||||
SCHEDULER_RR
|
||||
SCHEDULER_PRIORITY
|
||||
SCHEDULER_CFS)
|
||||
if ("${SCHEDULER_TYPE}" STREQUAL "SCHEDULER_RR" OR
|
||||
"${SCHEDULER_TYPE}" STREQUAL "SCHEDULER_PRIORITY" OR
|
||||
"${SCHEDULER_TYPE}" STREQUAL "SCHEDULER_CFS")
|
||||
"${SCHEDULER_TYPE}" STREQUAL "SCHEDULER_PRIORITY" OR
|
||||
"${SCHEDULER_TYPE}" STREQUAL "SCHEDULER_CFS")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D${SCHEDULER_TYPE}")
|
||||
message(STATUS "Setting scheduler type to ${SCHEDULER_TYPE}.")
|
||||
else ()
|
||||
@@ -138,6 +145,10 @@ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ggdb")
|
||||
#set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wuninitialized")
|
||||
#set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fmessage-length=0")
|
||||
|
||||
if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 10)
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fcommon")
|
||||
endif()
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
if (CMAKE_BUILD_TYPE MATCHES "Release")
|
||||
@@ -147,185 +158,183 @@ endif (CMAKE_BUILD_TYPE MATCHES "Release")
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Set the assembly flags.
|
||||
enable_language(ASM)
|
||||
set(CMAKE_ASM_COMPILER ${CMAKE_SOURCE_DIR}/third_party/nasm/bin/nasm)
|
||||
SET(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -g")
|
||||
SET(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -O0")
|
||||
SET(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -f elf")
|
||||
SET(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -F dwarf")
|
||||
set(CMAKE_ASM_COMPILE_OBJECT "<CMAKE_ASM_COMPILER> <FLAGS> -o <OBJECT> <SOURCE>")
|
||||
set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -g")
|
||||
set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -O0")
|
||||
set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -f elf")
|
||||
set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -F dwarf")
|
||||
set(CMAKE_ASM_COMPILE_OBJECT "<CMAKE_ASM_COMPILER> <FLAGS> <SOURCE> -o <OBJECT>")
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Add the includes.
|
||||
include_directories(
|
||||
inc
|
||||
inc/descriptor_tables
|
||||
inc/devices
|
||||
inc/drivers
|
||||
inc/drivers/keyboard
|
||||
inc/fs
|
||||
inc/hardware
|
||||
inc/io
|
||||
inc/kernel
|
||||
inc/libc
|
||||
inc/lng
|
||||
inc/mem
|
||||
inc/misc
|
||||
inc/sys
|
||||
inc/experimental
|
||||
inc/experimental/math
|
||||
inc/system
|
||||
inc/process
|
||||
inc/elf
|
||||
inc/ui
|
||||
inc/ui/shell
|
||||
inc/ui/command
|
||||
inc/ui/init
|
||||
inc
|
||||
inc/descriptor_tables
|
||||
inc/devices
|
||||
inc/drivers
|
||||
inc/drivers/keyboard
|
||||
inc/fs
|
||||
inc/hardware
|
||||
inc/io
|
||||
inc/kernel
|
||||
inc/libc
|
||||
inc/lng
|
||||
inc/mem
|
||||
inc/misc
|
||||
inc/sys
|
||||
inc/experimental
|
||||
inc/experimental/math
|
||||
inc/system
|
||||
inc/process
|
||||
inc/elf
|
||||
inc/ui
|
||||
inc/ui/shell
|
||||
inc/ui/command
|
||||
inc/ui/init
|
||||
)
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Add the source files.
|
||||
set(SOURCE_FILES
|
||||
boot.asm
|
||||
boot.asm
|
||||
|
||||
src/kernel.c
|
||||
src/multiboot.c
|
||||
src/kernel.c
|
||||
src/multiboot.c
|
||||
|
||||
src/devices/pci.c
|
||||
src/devices/fpu.c
|
||||
src/devices/pci.c
|
||||
src/devices/fpu.c
|
||||
|
||||
src/drivers/ata.c
|
||||
src/drivers/fdc.c
|
||||
src/drivers/mouse.c
|
||||
src/drivers/keyboard/keyboard.c
|
||||
src/drivers/keyboard/keymap.c
|
||||
src/drivers/ata.c
|
||||
src/drivers/fdc.c
|
||||
src/drivers/mouse.c
|
||||
src/drivers/keyboard/keyboard.c
|
||||
src/drivers/keyboard/keymap.c
|
||||
|
||||
src/experimental/smart_sem_kernel.c
|
||||
src/experimental/smart_sem_user.c
|
||||
src/experimental/resource.c
|
||||
src/experimental/math/arr_math.c
|
||||
src/experimental/smart_sem_kernel.c
|
||||
src/experimental/smart_sem_user.c
|
||||
src/experimental/resource.c
|
||||
src/experimental/math/arr_math.c
|
||||
|
||||
src/fs/fcntl.c
|
||||
src/fs/initrd.c
|
||||
src/fs/vfs.c
|
||||
src/fs/read_write.c
|
||||
src/fs/open.c
|
||||
src/fs/stat.c
|
||||
src/fs/readdir.c
|
||||
src/fs/fcntl.c
|
||||
src/fs/initrd.c
|
||||
src/fs/vfs.c
|
||||
src/fs/read_write.c
|
||||
src/fs/open.c
|
||||
src/fs/stat.c
|
||||
src/fs/readdir.c
|
||||
|
||||
src/sys/module.c
|
||||
src/sys/unistd.c
|
||||
src/hardware/timer.c
|
||||
src/hardware/cpuid.c
|
||||
src/hardware/pic8259.c
|
||||
src/io/port_io.c
|
||||
src/io/mm_io.c
|
||||
src/io/video.c
|
||||
src/sys/module.c
|
||||
src/sys/unistd.c
|
||||
src/hardware/timer.c
|
||||
src/hardware/cpuid.c
|
||||
src/hardware/pic8259.c
|
||||
src/io/port_io.c
|
||||
src/io/mm_io.c
|
||||
src/io/video.c
|
||||
|
||||
src/kernel/sys.c
|
||||
src/kernel/sys.c
|
||||
|
||||
src/libc/assert.c
|
||||
src/libc/ctype.c
|
||||
src/libc/stdio.c
|
||||
src/libc/string.c
|
||||
src/libc/vsprintf.c
|
||||
src/libc/queue.c
|
||||
src/libc/stdlib.c
|
||||
src/libc/spinlock.c
|
||||
src/libc/list.c
|
||||
src/libc/ordered_array.c
|
||||
src/libc/mutex.c
|
||||
src/libc/libgen.c
|
||||
src/libc/strerror.c
|
||||
src/libc/tree.c
|
||||
src/libc/bitset.c
|
||||
src/libc/fcvt.c
|
||||
src/libc/rbtree.c
|
||||
src/libc/math.c
|
||||
src/libc/hashmap.c
|
||||
src/libc/assert.c
|
||||
src/libc/ctype.c
|
||||
src/libc/stdio.c
|
||||
src/libc/string.c
|
||||
src/libc/vsprintf.c
|
||||
src/libc/queue.c
|
||||
src/libc/stdlib.c
|
||||
src/libc/spinlock.c
|
||||
src/libc/list.c
|
||||
src/libc/ordered_array.c
|
||||
src/libc/mutex.c
|
||||
src/libc/libgen.c
|
||||
src/libc/strerror.c
|
||||
src/libc/tree.c
|
||||
src/libc/bitset.c
|
||||
src/libc/fcvt.c
|
||||
src/libc/rbtree.c
|
||||
src/libc/math.c
|
||||
src/libc/hashmap.c
|
||||
|
||||
src/libc/unistd/getppid.c
|
||||
src/libc/unistd/getpid.c
|
||||
src/libc/unistd/exit.c
|
||||
src/libc/unistd/vfork.c
|
||||
src/libc/unistd/read.c
|
||||
src/libc/unistd/write.c
|
||||
src/libc/unistd/execve.c
|
||||
src/libc/unistd/nice.c
|
||||
src/libc/unistd/open.c
|
||||
src/libc/unistd/reboot.c
|
||||
src/libc/unistd/waitpid.c
|
||||
src/libc/unistd/chdir.c
|
||||
src/libc/unistd/getcwd.c
|
||||
src/libc/unistd/close.c
|
||||
src/libc/unistd/stat.c
|
||||
src/libc/unistd/mkdir.c
|
||||
src/libc/unistd/getppid.c
|
||||
src/libc/unistd/getpid.c
|
||||
src/libc/unistd/exit.c
|
||||
src/libc/unistd/vfork.c
|
||||
src/libc/unistd/read.c
|
||||
src/libc/unistd/write.c
|
||||
src/libc/unistd/execve.c
|
||||
src/libc/unistd/nice.c
|
||||
src/libc/unistd/open.c
|
||||
src/libc/unistd/reboot.c
|
||||
src/libc/unistd/waitpid.c
|
||||
src/libc/unistd/chdir.c
|
||||
src/libc/unistd/getcwd.c
|
||||
src/libc/unistd/close.c
|
||||
src/libc/unistd/stat.c
|
||||
src/libc/unistd/mkdir.c
|
||||
|
||||
src/mem/kheap.c
|
||||
src/mem/paging.c
|
||||
src/mem/zone_allocator.c
|
||||
src/mem/kheap.c
|
||||
src/mem/paging.c
|
||||
src/mem/zone_allocator.c
|
||||
|
||||
src/misc/bitops.c
|
||||
src/misc/clock.c
|
||||
src/misc/debug.c
|
||||
src/sys/dirent.c
|
||||
src/sys/utsname.c
|
||||
src/elf/elf.c
|
||||
src/misc/bitops.c
|
||||
src/misc/clock.c
|
||||
src/misc/debug.c
|
||||
src/sys/dirent.c
|
||||
src/sys/utsname.c
|
||||
src/elf/elf.c
|
||||
|
||||
src/descriptor_tables/gdt.c
|
||||
src/descriptor_tables/gdt.asm
|
||||
src/descriptor_tables/interrupt.c
|
||||
src/descriptor_tables/exception.c
|
||||
src/descriptor_tables/interrupt.asm
|
||||
src/descriptor_tables/exception.asm
|
||||
src/descriptor_tables/idt.c
|
||||
src/descriptor_tables/idt.asm
|
||||
src/descriptor_tables/tss.c
|
||||
src/descriptor_tables/tss.asm
|
||||
src/descriptor_tables/gdt.c
|
||||
src/descriptor_tables/gdt.asm
|
||||
src/descriptor_tables/interrupt.c
|
||||
src/descriptor_tables/exception.c
|
||||
src/descriptor_tables/interrupt.asm
|
||||
src/descriptor_tables/exception.asm
|
||||
src/descriptor_tables/idt.c
|
||||
src/descriptor_tables/idt.asm
|
||||
src/descriptor_tables/tss.c
|
||||
src/descriptor_tables/tss.asm
|
||||
|
||||
src/process/scheduler.c
|
||||
src/process/scheduler_algorithm.c
|
||||
src/process/process.c
|
||||
src/process/user.asm
|
||||
src/process/scheduler.c
|
||||
src/process/scheduler_algorithm.c
|
||||
src/process/process.c
|
||||
src/process/user.asm
|
||||
|
||||
src/system/errno.c
|
||||
src/system/panic.c
|
||||
src/system/syscall.c
|
||||
src/system/printk.c
|
||||
src/system/errno.c
|
||||
src/system/panic.c
|
||||
src/system/syscall.c
|
||||
src/system/printk.c
|
||||
|
||||
src/ui/command/cmd_cd.c
|
||||
src/ui/command/cmd_clear.c
|
||||
src/ui/command/cmd_cpuid.c
|
||||
src/ui/command/cmd_credits.c
|
||||
src/ui/command/cmd_date.c
|
||||
src/ui/command/cmd_drv_load.c
|
||||
src/ui/command/cmd_echo.c
|
||||
src/ui/command/cmd_logo.c
|
||||
src/ui/command/cmd_ls.c
|
||||
src/ui/command/cmd_mkdir.c
|
||||
src/ui/command/cmd_more.c
|
||||
src/ui/command/cmd_newfile.c
|
||||
src/ui/command/cmd_poweroff.c
|
||||
src/ui/command/cmd_ps.c
|
||||
src/ui/command/cmd_pwd.c
|
||||
src/ui/command/cmd_rm.c
|
||||
src/ui/command/cmd_rmdir.c
|
||||
src/ui/command/cmd_showpid.c
|
||||
src/ui/command/cmd_sleep.c
|
||||
#src/ui/command/cmd_tester.c
|
||||
src/ui/command/cmd_touch.c
|
||||
src/ui/command/cmd_uname.c
|
||||
src/ui/command/cmd_whoami.c
|
||||
src/ui/command/cmd_ipcs.c
|
||||
src/ui/command/cmd_ipcrm.c
|
||||
src/ui/command/cmd_nice.c
|
||||
src/ui/command/cmd_deadlock.c
|
||||
src/ui/command/cmd_cd.c
|
||||
src/ui/command/cmd_clear.c
|
||||
src/ui/command/cmd_cpuid.c
|
||||
src/ui/command/cmd_credits.c
|
||||
src/ui/command/cmd_date.c
|
||||
src/ui/command/cmd_drv_load.c
|
||||
src/ui/command/cmd_echo.c
|
||||
src/ui/command/cmd_logo.c
|
||||
src/ui/command/cmd_ls.c
|
||||
src/ui/command/cmd_mkdir.c
|
||||
src/ui/command/cmd_more.c
|
||||
src/ui/command/cmd_newfile.c
|
||||
src/ui/command/cmd_poweroff.c
|
||||
src/ui/command/cmd_ps.c
|
||||
src/ui/command/cmd_pwd.c
|
||||
src/ui/command/cmd_rm.c
|
||||
src/ui/command/cmd_rmdir.c
|
||||
src/ui/command/cmd_showpid.c
|
||||
src/ui/command/cmd_sleep.c
|
||||
#src/ui/command/cmd_tester.c
|
||||
src/ui/command/cmd_touch.c
|
||||
src/ui/command/cmd_uname.c
|
||||
src/ui/command/cmd_whoami.c
|
||||
src/ui/command/cmd_ipcs.c
|
||||
src/ui/command/cmd_ipcrm.c
|
||||
src/ui/command/cmd_nice.c
|
||||
src/ui/command/cmd_deadlock.c
|
||||
|
||||
src/ui/init/init.c
|
||||
src/ui/init/init.c
|
||||
|
||||
src/ui/shell/shell.c
|
||||
src/ui/shell/shell_login.c
|
||||
)
|
||||
src/ui/shell/shell.c
|
||||
src/ui/shell/shell_login.c
|
||||
)
|
||||
|
||||
if (ENABLE_BUDDY_SYSTEM MATCHES "ON")
|
||||
set(SOURCE_FILES
|
||||
@@ -347,15 +356,15 @@ add_library(${PROJECT_NAME} ${SOURCE_FILES})
|
||||
# ------------------------------------------------------------------------------
|
||||
# Build the kernel.
|
||||
add_custom_command(
|
||||
TARGET MentOs
|
||||
POST_BUILD
|
||||
COMMAND $(LD)
|
||||
-melf_i386
|
||||
-static
|
||||
--oformat elf32-i386
|
||||
-Ttext 0x100000
|
||||
--output=${CMAKE_CURRENT_BINARY_DIR}/kernel.bin
|
||||
--script=${CMAKE_CURRENT_SOURCE_DIR}/kernel.lds
|
||||
${CMAKE_CURRENT_BINARY_DIR}/lib${PROJECT_NAME}.a
|
||||
-Map ${CMAKE_CURRENT_BINARY_DIR}/kernel.map
|
||||
TARGET MentOs
|
||||
POST_BUILD
|
||||
COMMAND ${CMAKE_LINKER}
|
||||
-melf_i386
|
||||
-static
|
||||
--oformat elf32-i386
|
||||
-Ttext 0x100000
|
||||
--output=${CMAKE_CURRENT_BINARY_DIR}/kernel.bin
|
||||
--script=${CMAKE_CURRENT_SOURCE_DIR}/kernel.lds
|
||||
${CMAKE_CURRENT_BINARY_DIR}/lib${PROJECT_NAME}.a
|
||||
-Map ${CMAKE_CURRENT_BINARY_DIR}/kernel.map
|
||||
)
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
set(CMAKE_SYSTEM_NAME Generic)
|
||||
|
||||
if(CMAKE_VERSION VERSION_LESS "3.6.0")
|
||||
INCLUDE(CMakeForceCompiler)
|
||||
CMAKE_FORCE_C_COMPILER(i386-elf-gcc Clang)
|
||||
CMAKE_FORCE_CXX_COMPILER(i386-elf-g++ Clang)
|
||||
else()
|
||||
set(CMAKE_C_COMPILER i386-elf-gcc)
|
||||
set(CMAKE_CXX_COMPILER i386-elf-g++)
|
||||
set(CMAKE_AR i386-elf-ar)
|
||||
endif()
|
||||
|
||||
set(CMAKE_LINKER i386-elf-ld)
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -nostdlib")
|
||||
Reference in New Issue
Block a user