Improve cmake option selection. Fix usage of CMAKE_C_FLAGS instead of CMAKE_CXX_FLAGS.
This commit is contained in:
+43
-24
@@ -2,9 +2,12 @@
|
||||
# Set the minimum required version of cmake.
|
||||
cmake_minimum_required(VERSION 3.1...3.22)
|
||||
# Initialize the project.
|
||||
project(mentos)
|
||||
project(mentos C ASM)
|
||||
|
||||
# =============================================================================
|
||||
# BUILD TYPE (Debug/Release)
|
||||
# =============================================================================
|
||||
|
||||
# Set the default build type to Debug.
|
||||
if(NOT CMAKE_BUILD_TYPE)
|
||||
message(STATUS "Setting build type to 'Debug' as none was specified.")
|
||||
@@ -12,7 +15,12 @@ if(NOT CMAKE_BUILD_TYPE)
|
||||
endif()
|
||||
|
||||
# =============================================================================
|
||||
# Options
|
||||
# DOCUMENTATION
|
||||
# =============================================================================
|
||||
add_subdirectory(doc/doxygen)
|
||||
|
||||
# =============================================================================
|
||||
# OS-SPECIFIC COMPILERS
|
||||
# =============================================================================
|
||||
|
||||
# Add operating system specific option.
|
||||
@@ -37,12 +45,17 @@ if((${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Darwin") OR APPLE)
|
||||
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)
|
||||
# Generic Unix System.
|
||||
# Find the `lsb_release` program.
|
||||
find_program(LSB_RELEASE_EXEC lsb_release HINTS /usr/bin/ /usr/local/bin/)
|
||||
# Mark the program path as advanced, we do not want it to appear as an option.
|
||||
mark_as_advanced(LSB_RELEASE_EXEC)
|
||||
# Get the version.
|
||||
execute_process(
|
||||
COMMAND "${LSB_RELEASE_EXEC}" --short --release
|
||||
OUTPUT_VARIABLE LSB_RELEASE_VERSION_SHORT
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
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)
|
||||
@@ -57,18 +70,8 @@ else()
|
||||
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")
|
||||
message(STATUS "Setting debugging type to ${DEBUGGING_TYPE}.")
|
||||
else()
|
||||
message(FATAL_ERROR "Debugging type ${DEBUGGING_TYPE} is not valid.")
|
||||
endif()
|
||||
|
||||
|
||||
# =============================================================================
|
||||
# Compilation directories
|
||||
# COMPILATION
|
||||
# =============================================================================
|
||||
|
||||
# Add the sub-directories.
|
||||
@@ -76,10 +79,9 @@ add_subdirectory(programs)
|
||||
add_subdirectory(programs/tests)
|
||||
add_subdirectory(mentos)
|
||||
add_subdirectory(libc)
|
||||
add_subdirectory(doc/doxygen)
|
||||
|
||||
# =============================================================================
|
||||
# Filesystem construction
|
||||
# FILESYSTEM
|
||||
# =============================================================================
|
||||
|
||||
# MentOS is compatible with EXT2 fileystems. This target generates an EXT2
|
||||
@@ -99,17 +101,34 @@ add_custom_target(filesystem
|
||||
)
|
||||
|
||||
# =============================================================================
|
||||
# Emulator Generic Options
|
||||
# EMULATION SERIAL OUTPUT OPTION
|
||||
# =============================================================================
|
||||
# Set the list of valid emulator output options.
|
||||
set(EMULATOR_OUTPUT_TYPES OUTPUT_STDIO OUTPUT_LOG)
|
||||
# Add the emulator output option.
|
||||
set(EMULATOR_OUTPUT_TYPE "OUTPUT_STDIO" CACHE STRING "Chose the type of emulator output: ${EMULATOR_OUTPUT_TYPES}")
|
||||
# List of emulator output options.
|
||||
set_property(CACHE EMULATOR_OUTPUT_TYPE PROPERTY STRINGS ${EMULATOR_OUTPUT_TYPES})
|
||||
# Check which emulator output option is currently active.
|
||||
list(FIND EMULATOR_OUTPUT_TYPES ${EMULATOR_OUTPUT_TYPE} INDEX)
|
||||
if(index EQUAL -1)
|
||||
message(FATAL_ERROR "Emulator output type ${EMULATOR_OUTPUT_TYPE} is not valid.")
|
||||
else()
|
||||
message(STATUS "Setting emulator output type to ${EMULATOR_OUTPUT_TYPE}.")
|
||||
endif()
|
||||
|
||||
# =============================================================================
|
||||
# EMULATOR CONFIGURATION
|
||||
# =============================================================================
|
||||
|
||||
# Set the emulator.
|
||||
set(EMULATOR qemu-system-i386)
|
||||
# Set the debug type.
|
||||
if(${DEBUGGING_TYPE} STREQUAL DEBUG_LOG)
|
||||
if(${EMULATOR_OUTPUT_TYPE} STREQUAL OUTPUT_LOG)
|
||||
set(EMULATOR_FLAGS ${EMULATOR_FLAGS} -serial file:${CMAKE_BINARY_DIR}/serial.log)
|
||||
elseif(${DEBUGGING_TYPE} STREQUAL DEBUG_STDIO)
|
||||
elseif(${EMULATOR_OUTPUT_TYPE} STREQUAL OUTPUT_STDIO)
|
||||
set(EMULATOR_FLAGS ${EMULATOR_FLAGS} -serial stdio)
|
||||
endif(${DEBUGGING_TYPE} STREQUAL DEBUG_LOG)
|
||||
endif(${EMULATOR_OUTPUT_TYPE} STREQUAL OUTPUT_LOG)
|
||||
# Set the type of video.
|
||||
set(EMULATOR_FLAGS ${EMULATOR_FLAGS} -vga std)
|
||||
# Set the amount of memory.
|
||||
|
||||
+11
-11
@@ -19,19 +19,19 @@ if (DOXYGEN_FOUND)
|
||||
file(MAKE_DIRECTORY ${DOXYGEN_OUTPUT_DIR})
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT ${DOXYGEN_INDEX_FILE}
|
||||
COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYFILE_OUT}
|
||||
OUTPUT ${DOXYGEN_INDEX_FILE}
|
||||
COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYFILE_OUT}
|
||||
|
||||
MAIN_DEPENDENCY ${DOXYFILE_OUT} ${DOXYFILE_IN}
|
||||
COMMENT "Generating docs"
|
||||
MAIN_DEPENDENCY ${DOXYFILE_OUT} ${DOXYFILE_IN}
|
||||
COMMENT "Generating docs"
|
||||
)
|
||||
add_custom_target(
|
||||
doxygen_doc
|
||||
DEPENDS
|
||||
${DOXYGEN_INDEX_FILE}
|
||||
${DOXYFILE_IN}
|
||||
${DOXYFILE_CSS}
|
||||
${DOXYFILE_HEADER}
|
||||
${DOXYFILE_FOOTER}
|
||||
doxygen_doc
|
||||
DEPENDS
|
||||
${DOXYGEN_INDEX_FILE}
|
||||
${DOXYFILE_IN}
|
||||
${DOXYFILE_CSS}
|
||||
${DOXYFILE_HEADER}
|
||||
${DOXYFILE_FOOTER}
|
||||
)
|
||||
endif (DOXYGEN_FOUND)
|
||||
|
||||
+518
-255
File diff suppressed because it is too large
Load Diff
@@ -10,12 +10,8 @@ $gutter-color: #4b5263;
|
||||
|
||||
/* font families */
|
||||
|
||||
$page-font-family: Roboto,
|
||||
Lucida,
|
||||
sans-serif;
|
||||
$code-font-family: Consolas,
|
||||
monospace,
|
||||
fixed;
|
||||
$page-font-family: Roboto, Lucida, sans-serif;
|
||||
$code-font-family: Consolas, monospace, fixed;
|
||||
|
||||
/* font sizes */
|
||||
|
||||
@@ -1887,15 +1883,19 @@ tr.heading h2 {
|
||||
#top {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#side-nav {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#nav-path {
|
||||
display: none;
|
||||
}
|
||||
|
||||
body {
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
@@ -1904,12 +1904,15 @@ tr.heading h2 {
|
||||
h6 {
|
||||
page-break-after: avoid;
|
||||
}
|
||||
|
||||
.summary {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.memitem {
|
||||
page-break-inside: avoid;
|
||||
}
|
||||
|
||||
#doc-content {
|
||||
margin-left: 0 !important;
|
||||
height: auto !important;
|
||||
|
||||
+40
-38
@@ -1,38 +1,40 @@
|
||||
<!-- HTML footer for doxygen 1.8.16-->
|
||||
<!-- start footer part -->
|
||||
<!--BEGIN GENERATE_TREEVIEW-->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
$navpath
|
||||
<li class="footer">$generatedby
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="$relpath^doxygen.png" alt="doxygen"/>
|
||||
</a> $doxygenversion
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<!--END GENERATE_TREEVIEW-->
|
||||
<!--BEGIN !GENERATE_TREEVIEW-->
|
||||
<div class="footer">
|
||||
<hr class="footer"/>
|
||||
<ul class="footer-info">
|
||||
<li class="footer-info-lastmode">
|
||||
This page was last modified on $datetime.
|
||||
</li>
|
||||
<li class="footer-info-copyright">
|
||||
MentOs © 2014–2022 the MentOs-Team, and numerous contributors.<br>
|
||||
It is available for use and modification under the 
|
||||
<a href="$relpath^md_LICENSE.html">MIT License</a>.<br>
|
||||
</li>
|
||||
</ul>
|
||||
<hr class="footer"/>
|
||||
<address class="footer">
|
||||
$generatedby 
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="$relpath^doxygen.png" alt="doxygen"/>
|
||||
</a> $doxygenversion
|
||||
</address>
|
||||
</div>
|
||||
<!--END !GENERATE_TREEVIEW-->
|
||||
</body>
|
||||
</html>
|
||||
<!-- HTML footer for doxygen 1.8.16-->
|
||||
<!-- start footer part -->
|
||||
<!--BEGIN GENERATE_TREEVIEW-->
|
||||
<div id="nav-path" class="navpath">
|
||||
<!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
$navpath
|
||||
<li class="footer">$generatedby
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="$relpath^doxygen.png" alt="doxygen" />
|
||||
</a> $doxygenversion
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<!--END GENERATE_TREEVIEW-->
|
||||
<!--BEGIN !GENERATE_TREEVIEW-->
|
||||
<div class="footer">
|
||||
<hr class="footer" />
|
||||
<ul class="footer-info">
|
||||
<li class="footer-info-lastmode">
|
||||
This page was last modified on $datetime.
|
||||
</li>
|
||||
<li class="footer-info-copyright">
|
||||
MentOs © 2014–2022 the MentOs-Team, and numerous contributors.<br>
|
||||
It is available for use and modification under the 
|
||||
<a href="$relpath^md_LICENSE.html">MIT License</a>.<br>
|
||||
</li>
|
||||
</ul>
|
||||
<hr class="footer" />
|
||||
<address class="footer">
|
||||
$generatedby 
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="$relpath^doxygen.png" alt="doxygen" />
|
||||
</a> $doxygenversion
|
||||
</address>
|
||||
</div>
|
||||
<!--END !GENERATE_TREEVIEW-->
|
||||
</body>
|
||||
|
||||
</html>
|
||||
+54
-51
@@ -1,63 +1,66 @@
|
||||
<!-- HTML header for doxygen 1.8.17-->
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen $doxygenversion"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<!--BEGIN PROJECT_NAME--><title>$projectname: $title</title>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9" />
|
||||
<meta name="generator" content="Doxygen $doxygenversion" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<!--BEGIN PROJECT_NAME-->
|
||||
<title>$projectname: $title</title>
|
||||
<!--END PROJECT_NAME-->
|
||||
<!--BEGIN !PROJECT_NAME--><title>$title</title><!--END !PROJECT_NAME-->
|
||||
<link href="$relpath^tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<!--BEGIN !PROJECT_NAME-->
|
||||
<title>$title</title>
|
||||
<!--END !PROJECT_NAME-->
|
||||
<link href="$relpath^tabs.css" rel="stylesheet" type="text/css" />
|
||||
<script type="text/javascript" src="$relpath^jquery.js"></script>
|
||||
<script type="text/javascript" src="$relpath^dynsections.js"></script>
|
||||
$treeview
|
||||
$search
|
||||
$mathjax
|
||||
<link href="$relpath^$stylesheet" rel="stylesheet" type="text/css"/>
|
||||
<link href="$relpath^$stylesheet" rel="stylesheet" type="text/css" />
|
||||
$extrastylesheet
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
|
||||
<!--BEGIN TITLEAREA-->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<!--BEGIN PROJECT_LOGO-->
|
||||
<td id="projectlogo"><img alt="Logo"
|
||||
src="$relpath^$projectlogo"/></td>
|
||||
<!--END PROJECT_LOGO-->
|
||||
<!--BEGIN PROJECT_NAME-->
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">$projectname
|
||||
<!--BEGIN PROJECT_NUMBER--> <span
|
||||
id="projectnumber">$projectnumber</span>
|
||||
<!--END PROJECT_NUMBER-->
|
||||
</div>
|
||||
<!--BEGIN PROJECT_BRIEF-->
|
||||
<div id="projectbrief">$projectbrief</div>
|
||||
<!--END PROJECT_BRIEF-->
|
||||
</td>
|
||||
<!--END PROJECT_NAME-->
|
||||
<!--BEGIN !PROJECT_NAME-->
|
||||
<!--BEGIN PROJECT_BRIEF-->
|
||||
<td style="padding-left: 0.5em;">
|
||||
<div id="projectbrief">$projectbrief</div>
|
||||
</td>
|
||||
<!--END PROJECT_BRIEF-->
|
||||
<!--END !PROJECT_NAME-->
|
||||
<!--BEGIN DISABLE_INDEX-->
|
||||
<!--BEGIN SEARCHENGINE-->
|
||||
<td>$searchbox</td>
|
||||
<!--END SEARCHENGINE-->
|
||||
<!--END DISABLE_INDEX-->
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!--END TITLEAREA-->
|
||||
<!-- end header part -->
|
||||
<body>
|
||||
<div id="top">
|
||||
<!-- do not remove this div, it is closed by doxygen! -->
|
||||
|
||||
<!--BEGIN TITLEAREA-->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<!--BEGIN PROJECT_LOGO-->
|
||||
<td id="projectlogo"><img alt="Logo" src="$relpath^$projectlogo" /></td>
|
||||
<!--END PROJECT_LOGO-->
|
||||
<!--BEGIN PROJECT_NAME-->
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">$projectname
|
||||
<!--BEGIN PROJECT_NUMBER--> <span id="projectnumber">$projectnumber</span>
|
||||
<!--END PROJECT_NUMBER-->
|
||||
</div>
|
||||
<!--BEGIN PROJECT_BRIEF-->
|
||||
<div id="projectbrief">$projectbrief</div>
|
||||
<!--END PROJECT_BRIEF-->
|
||||
</td>
|
||||
<!--END PROJECT_NAME-->
|
||||
<!--BEGIN !PROJECT_NAME-->
|
||||
<!--BEGIN PROJECT_BRIEF-->
|
||||
<td style="padding-left: 0.5em;">
|
||||
<div id="projectbrief">$projectbrief</div>
|
||||
</td>
|
||||
<!--END PROJECT_BRIEF-->
|
||||
<!--END !PROJECT_NAME-->
|
||||
<!--BEGIN DISABLE_INDEX-->
|
||||
<!--BEGIN SEARCHENGINE-->
|
||||
<td>$searchbox</td>
|
||||
<!--END SEARCHENGINE-->
|
||||
<!--END DISABLE_INDEX-->
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!--END TITLEAREA-->
|
||||
<!-- end header part -->
|
||||
+26
-10
@@ -7,14 +7,15 @@ cmake_minimum_required(VERSION 3.1...3.22)
|
||||
project(libc C ASM)
|
||||
|
||||
# =============================================================================
|
||||
# ASSEMBLY
|
||||
# =============================================================================
|
||||
|
||||
# Enable the assembly language.
|
||||
enable_language(ASM)
|
||||
# Find the NASM compiler.
|
||||
find_program(
|
||||
ASM_COMPILER
|
||||
NAMES nasm
|
||||
HINTS /usr/bin/ /usr/local/bin/
|
||||
)
|
||||
find_program(ASM_COMPILER NAMES nasm HINTS /usr/bin/ /usr/local/bin/)
|
||||
# Mark the variable ASM_COMPILER as advanced.
|
||||
mark_as_advanced(ASM_COMPILER)
|
||||
# Check that we have found the compiler.
|
||||
if(NOT ASM_COMPILER)
|
||||
message(FATAL_ERROR "ASM compiler not found!")
|
||||
@@ -34,25 +35,40 @@ elseif(CMAKE_BUILD_TYPE STREQUAL "Release")
|
||||
endif(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
|
||||
# =============================================================================
|
||||
# C WARNINGs
|
||||
# =============================================================================
|
||||
|
||||
# Warning flags.
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall")
|
||||
#set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wpedantic")
|
||||
#set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pedantic-errors")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pedantic-errors")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wshadow")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99")
|
||||
|
||||
# Disable some specific warnings.
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-function")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-variable")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unknown-pragmas")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-but-set-variable")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99")
|
||||
# Set the C compiler options.
|
||||
|
||||
# Set the compiler options.
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -static")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -nostdlib")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -nostdinc")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-builtin")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-stack-protector")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-pic")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fomit-frame-pointer")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32")
|
||||
if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 10)
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fcommon")
|
||||
endif()
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=i686")
|
||||
|
||||
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ggdb")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g3")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ggdb")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0")
|
||||
elseif(CMAKE_BUILD_TYPE STREQUAL "Release")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3")
|
||||
|
||||
+128
-105
@@ -12,118 +12,22 @@ set(BUDDY_SYSTEM_NAME kernel_memory)
|
||||
set(BUDDY_SYSTEM_FILE ${PROJECT_SOURCE_DIR}/src/mem/libbuddysystem.a)
|
||||
|
||||
# =============================================================================
|
||||
# Set the default build type to Debug.
|
||||
if(NOT CMAKE_BUILD_TYPE)
|
||||
message(STATUS "Setting build type to 'Debug' as none was specified.")
|
||||
set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "Choose the type of build." FORCE)
|
||||
endif()
|
||||
|
||||
# OPTIONS
|
||||
# =============================================================================
|
||||
# Define that this code is kernel code.
|
||||
add_definitions(-D__KERNEL__)
|
||||
|
||||
# =============================================================================
|
||||
# Add the memory option.
|
||||
option(USE_BUDDY_SYSTEM "Build using the buddysystem written by the user." OFF)
|
||||
|
||||
# =============================================================================
|
||||
# Add the scheduling option.
|
||||
set(SCHEDULER_TYPE
|
||||
"SCHEDULER_RR"
|
||||
CACHE STRING "Chose the type of scheduler: SCHEDULER_RR SCHEDULER_PRIORITY SCHEDULER_CFS SCHEDULER_EDF SCHEDULER_RM SCHEDULER_AEDF")
|
||||
# List of schedulers.
|
||||
set_property(CACHE SCHEDULER_TYPE PROPERTY STRINGS SCHEDULER_RR SCHEDULER_PRIORITY SCHEDULER_CFS SCHEDULER_EDF SCHEDULER_RM)
|
||||
# Check which scheduler is currently active and export the related macro.
|
||||
if("${SCHEDULER_TYPE}" STREQUAL "SCHEDULER_RR"
|
||||
OR "${SCHEDULER_TYPE}" STREQUAL "SCHEDULER_PRIORITY"
|
||||
OR "${SCHEDULER_TYPE}" STREQUAL "SCHEDULER_CFS"
|
||||
OR "${SCHEDULER_TYPE}" STREQUAL "SCHEDULER_EDF"
|
||||
OR "${SCHEDULER_TYPE}" STREQUAL "SCHEDULER_RM"
|
||||
OR "${SCHEDULER_TYPE}" STREQUAL "SCHEDULER_AEDF")
|
||||
# Add the define stating which scheduler is currently active.
|
||||
add_definitions(-D${SCHEDULER_TYPE})
|
||||
# Notify the type of scheduler.
|
||||
message(STATUS "Setting scheduler type to ${SCHEDULER_TYPE}.")
|
||||
else()
|
||||
message(FATAL_ERROR "Scheduler type ${SCHEDULER_TYPE} is not valid.")
|
||||
endif()
|
||||
|
||||
# ASSEMBLY
|
||||
# =============================================================================
|
||||
# Add the video option.
|
||||
set(VIDEO_TYPE
|
||||
"VGA_TEXT_MODE"
|
||||
CACHE STRING "Chose the type of video: VGA_TEXT_MODE VGA_MODE_320_200_256 VGA_MODE_640_480_16 VGA_MODE_720_480_16")
|
||||
# List of video tpes.
|
||||
set_property(CACHE VIDEO_TYPE PROPERTY STRINGS VGA_TEXT_MODE VGA_MODE_320_200_256 VGA_MODE_640_480_16 VGA_MODE_720_480_16)
|
||||
# Check which VIDEO is currently active and export the related macro.
|
||||
if("${VIDEO_TYPE}" STREQUAL "VGA_TEXT_MODE"
|
||||
OR "${VIDEO_TYPE}" STREQUAL "VGA_MODE_320_200_256"
|
||||
OR "${VIDEO_TYPE}" STREQUAL "VGA_MODE_640_480_16"
|
||||
OR "${VIDEO_TYPE}" STREQUAL "VGA_MODE_720_480_16")
|
||||
add_definitions(-D${VIDEO_TYPE})
|
||||
message(STATUS "Setting video type to ${VIDEO_TYPE}.")
|
||||
else()
|
||||
message(FATAL_ERROR "Video type ${VIDEO_TYPE} is not valid.")
|
||||
endif()
|
||||
|
||||
# =============================================================================
|
||||
# Add the video option.
|
||||
set(KEYMAP_TYPE "KEYMAP_US" CACHE STRING "Chose the type of video: KEYMAP_US KEYMAP_IT")
|
||||
# List of video tpes.
|
||||
set_property(CACHE KEYMAP_TYPE PROPERTY STRINGS KEYMAP_US KEYMAP_IT)
|
||||
# Check which VIDEO is currently active and export the related macro.
|
||||
if("${KEYMAP_TYPE}" STREQUAL "KEYMAP_US" OR "${KEYMAP_TYPE}" STREQUAL "KEYMAP_IT")
|
||||
add_definitions(-DUSE_${KEYMAP_TYPE})
|
||||
message(STATUS "Setting keyboard mapping to ${KEYMAP_TYPE}.")
|
||||
else()
|
||||
message(FATAL_ERROR "keyboard mapping ${KEYMAP_TYPE} is not valid.")
|
||||
endif()
|
||||
|
||||
# =============================================================================
|
||||
# Warning flags.
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wpedantic")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pedantic-errors")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wshadow")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-function")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-variable")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unknown-pragmas")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-but-set-variable")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99")
|
||||
|
||||
# Set the compiler options.
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -nostdlib")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -nostdinc")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fomit-frame-pointer")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-builtin")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-pic")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-stack-protector")
|
||||
if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 10)
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fcommon")
|
||||
endif()
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=i686")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32")
|
||||
|
||||
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g3")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ggdb")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O0")
|
||||
add_definitions(-DDEBUG)
|
||||
elseif(CMAKE_BUILD_TYPE STREQUAL "Release")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3")
|
||||
add_definitions(-DRELEASE)
|
||||
endif(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
|
||||
# =============================================================================
|
||||
# Enable specific compilers for ASM.
|
||||
# Enable the assembly language.
|
||||
enable_language(ASM)
|
||||
# Find the NASM compiler.
|
||||
find_program(
|
||||
ASM_COMPILER
|
||||
NAMES nasm
|
||||
HINTS /usr/bin/ /usr/local/bin/
|
||||
)
|
||||
find_program(ASM_COMPILER NAMES nasm HINTS /usr/bin/ /usr/local/bin/)
|
||||
# Mark the variable ASM_COMPILER as advanced.
|
||||
mark_as_advanced(ASM_COMPILER)
|
||||
# Check that we have found the compiler.
|
||||
if(NOT ASM_COMPILER)
|
||||
message(FATAL_ERROR "ASM compiler not found!")
|
||||
@@ -143,10 +47,49 @@ elseif(CMAKE_BUILD_TYPE STREQUAL "Release")
|
||||
endif(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
|
||||
# =============================================================================
|
||||
# Add the includes.
|
||||
include_directories(inc ../libc/inc)
|
||||
# C WARNINGs
|
||||
# =============================================================================
|
||||
|
||||
# Warning flags.
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wpedantic")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pedantic-errors")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wshadow")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99")
|
||||
|
||||
# Disable some specific warnings.
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-function")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-variable")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unknown-pragmas")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-but-set-variable")
|
||||
|
||||
# Set the compiler options.
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -static")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -nostdlib")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -nostdinc")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-builtin")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-stack-protector")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-pic")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fomit-frame-pointer")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32")
|
||||
if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 10)
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fcommon")
|
||||
endif()
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=i686")
|
||||
|
||||
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g3")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ggdb")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0")
|
||||
elseif(CMAKE_BUILD_TYPE STREQUAL "Release")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3")
|
||||
endif(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
|
||||
# =============================================================================
|
||||
# SOURCES
|
||||
# =============================================================================
|
||||
|
||||
# Define the list of files.
|
||||
set(KERNEL_SOURCES
|
||||
src/kernel.c
|
||||
@@ -242,10 +185,90 @@ else(USE_BUDDY_SYSTEM)
|
||||
# Link the exercise libraries.
|
||||
target_link_libraries(${KERNEL_NAME} ${BUDDY_SYSTEM_FILE})
|
||||
endif(USE_BUDDY_SYSTEM)
|
||||
# Add the includes.
|
||||
target_include_directories(
|
||||
${KERNEL_NAME} PUBLIC
|
||||
${CMAKE_SOURCE_DIR}/mentos/inc
|
||||
${CMAKE_SOURCE_DIR}/libc/inc
|
||||
)
|
||||
# Define that this code is kernel code.
|
||||
target_compile_definitions(
|
||||
${KERNEL_NAME} PUBLIC
|
||||
__KERNEL__
|
||||
)
|
||||
|
||||
# =============================================================================
|
||||
# Set the list of valid scheduling options.
|
||||
set(SCHEDULER_TYPES SCHEDULER_RR SCHEDULER_PRIORITY SCHEDULER_CFS SCHEDULER_EDF SCHEDULER_RM)
|
||||
# Add the scheduling option.
|
||||
set(SCHEDULER_TYPE "SCHEDULER_RR" CACHE STRING "Chose the type of scheduler: ${SCHEDULER_TYPES}")
|
||||
# List of schedulers.
|
||||
set_property(CACHE SCHEDULER_TYPE PROPERTY STRINGS ${SCHEDULER_TYPES})
|
||||
# Check which scheduler is currently active and export the related macro.
|
||||
list(FIND SCHEDULER_TYPES ${SCHEDULER_TYPE} INDEX)
|
||||
if(index EQUAL -1)
|
||||
message(FATAL_ERROR "Scheduler type ${SCHEDULER_TYPE} is not valid.")
|
||||
else()
|
||||
# Add the define stating which scheduler is currently active.
|
||||
target_compile_definitions(${KERNEL_NAME} PUBLIC ${SCHEDULER_TYPE})
|
||||
# Notify the type of scheduler.
|
||||
message(STATUS "Setting scheduler type to ${SCHEDULER_TYPE}.")
|
||||
endif()
|
||||
|
||||
# =============================================================================
|
||||
# Set the list of valid video driver options.
|
||||
set(VIDEO_TYPES VGA_TEXT_MODE VGA_MODE_320_200_256 VGA_MODE_640_480_16 VGA_MODE_720_480_16)
|
||||
# Add the video driver option.
|
||||
set(VIDEO_TYPE "VGA_TEXT_MODE" CACHE STRING "Chose the type of video driver: ${VIDEO_TYPES}")
|
||||
# List of video tpes.
|
||||
set_property(CACHE VIDEO_TYPE PROPERTY STRINGS ${VIDEO_TYPES})
|
||||
# Check which video driver is currently active and export the related macro.
|
||||
list(FIND VIDEO_TYPES ${VIDEO_TYPE} INDEX)
|
||||
if(index EQUAL -1)
|
||||
message(FATAL_ERROR "Video type ${VIDEO_TYPE} is not valid.")
|
||||
else()
|
||||
# Add the define stating which video driver is currently active.
|
||||
target_compile_definitions(${KERNEL_NAME} PUBLIC ${VIDEO_TYPE})
|
||||
# Notify the type of video driver.
|
||||
message(STATUS "Setting vide type to ${VIDEO_TYPE}.")
|
||||
endif()
|
||||
|
||||
# =============================================================================
|
||||
# Set the list of valid keyboard mappings.
|
||||
set(KEYMAP_TYPES KEYMAP_US KEYMAP_IT)
|
||||
# Add the keyboard mapping.
|
||||
set(KEYMAP_TYPE "KEYMAP_US" CACHE STRING "Chose the type of keyboard mapping: ${KEYMAP_TYPES}")
|
||||
# List of keyboard mappings.
|
||||
set_property(CACHE KEYMAP_TYPE PROPERTY STRINGS ${KEYMAP_TYPES})
|
||||
# Check which keyboard mapping is currently active and export the related macro.
|
||||
list(FIND KEYMAP_TYPES ${KEYMAP_TYPE} INDEX)
|
||||
if(index EQUAL -1)
|
||||
message(FATAL_ERROR "keyboard mapping ${KEYMAP_TYPE} is not valid.")
|
||||
else()
|
||||
# Add the define stating which keyboard mapping is currently active.
|
||||
target_compile_definitions(${KERNEL_NAME} PUBLIC USE_${KEYMAP_TYPE})
|
||||
# Notify the type of keyboard mapping.
|
||||
message(STATUS "Setting keyboard mapping to ${KEYMAP_TYPE}.")
|
||||
endif()
|
||||
|
||||
# =============================================================================
|
||||
# Add bootloader library.
|
||||
add_library(${BOOTLOADER_NAME} src/boot.c src/boot.S)
|
||||
add_library(
|
||||
${BOOTLOADER_NAME}
|
||||
src/boot.c
|
||||
src/boot.S
|
||||
)
|
||||
# Add the includes.
|
||||
target_include_directories(
|
||||
${BOOTLOADER_NAME} PUBLIC
|
||||
${CMAKE_SOURCE_DIR}/mentos/inc
|
||||
${CMAKE_SOURCE_DIR}/libc/inc
|
||||
)
|
||||
# Define that this code is kernel code.
|
||||
target_compile_definitions(
|
||||
${BOOTLOADER_NAME} PUBLIC
|
||||
__KERNEL__
|
||||
)
|
||||
|
||||
# =============================================================================
|
||||
# Build the kernel.
|
||||
|
||||
+24
-6
@@ -7,38 +7,55 @@ cmake_minimum_required(VERSION 3.1...3.22)
|
||||
project(programs C)
|
||||
|
||||
# =============================================================================
|
||||
# Set the directory where the compiled binaries will be placed.
|
||||
set(MENTOS_BIN_DIR ${CMAKE_SOURCE_DIR}/files/bin)
|
||||
|
||||
# C WARNINGs
|
||||
# =============================================================================
|
||||
|
||||
# We need to specify the name of the entry function.
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -u_start")
|
||||
|
||||
# Warning flags.
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wpedantic")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pedantic-errors")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wshadow")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99")
|
||||
|
||||
# Disable some specific warnings.
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-function")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-variable")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unknown-pragmas")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-but-set-variable")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99")
|
||||
|
||||
# Set the compiler options.
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -u_start")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -static")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -nostdlib")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -nostdinc")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-builtin")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-stack-protector")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-pic")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fomit-frame-pointer")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32")
|
||||
if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 10)
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fcommon")
|
||||
endif()
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=i686")
|
||||
|
||||
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ggdb")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g3")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ggdb")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0")
|
||||
elseif(CMAKE_BUILD_TYPE STREQUAL "Release")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3")
|
||||
endif(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
|
||||
# =============================================================================
|
||||
# BUILD
|
||||
# =============================================================================
|
||||
|
||||
# Set the directory where the compiled binaries will be placed.
|
||||
set(MENTOS_BIN_DIR ${CMAKE_SOURCE_DIR}/files/bin)
|
||||
|
||||
# Add the executables (manually).
|
||||
set(PROGRAMS
|
||||
init.c
|
||||
@@ -70,6 +87,7 @@ set(PROGRAMS
|
||||
edit.c
|
||||
uptime.c
|
||||
)
|
||||
|
||||
foreach(PROGRAM ${PROGRAMS})
|
||||
# Prepare the program name.
|
||||
string(REPLACE ".c" "" PROGRAM_NAME ${PROGRAM})
|
||||
|
||||
@@ -7,38 +7,55 @@ cmake_minimum_required(VERSION 3.1...3.22)
|
||||
project(tests C)
|
||||
|
||||
# =============================================================================
|
||||
# Set the directory where the compiled binaries will be placed.
|
||||
set(MENTOS_TESTS_DIR ${CMAKE_SOURCE_DIR}/files/bin/tests)
|
||||
|
||||
# C WARNINGs
|
||||
# =============================================================================
|
||||
|
||||
# We need to specify the name of the entry function.
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -u_start")
|
||||
|
||||
# Warning flags.
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wpedantic")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pedantic-errors")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wshadow")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99")
|
||||
|
||||
# Disable some specific warnings.
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-function")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-variable")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unknown-pragmas")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-but-set-variable")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99")
|
||||
|
||||
# Set the compiler options.
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -u_start")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -static")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -nostdlib")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -nostdinc")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-builtin")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-stack-protector")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-pic")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fomit-frame-pointer")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32")
|
||||
if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 10)
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fcommon")
|
||||
endif()
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=i686")
|
||||
|
||||
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ggdb")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g3")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ggdb")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0")
|
||||
elseif(CMAKE_BUILD_TYPE STREQUAL "Release")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3")
|
||||
endif(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
|
||||
# =============================================================================
|
||||
# BUILD
|
||||
# =============================================================================
|
||||
|
||||
# Set the directory where the compiled binaries will be placed.
|
||||
set(MENTOS_TESTS_DIR ${CMAKE_SOURCE_DIR}/files/bin/tests)
|
||||
|
||||
# Add the executables (manually).
|
||||
set(TESTS
|
||||
t_mem.c
|
||||
|
||||
Reference in New Issue
Block a user