diff --git a/.gitignore b/.gitignore index c755f56..85903ed 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,2 @@ # ignore binary files -*.bin -*.o -*.iso - -# ignore build files -isodir +build/* diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..5f1efbb --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,58 @@ +# Copyright (C) 2018 Ortega Froysa, Nicolás +# Author: Ortega Froysa, Nicolás +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +cmake_minimum_required(VERSION 2.8) +project(colonel) +enable_language(ASM_NASM) + +set(TARGET_NAME "colonel.bin") + +if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE "release") +endif() + +string(TOLOWER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE) +message(STATUS "Build type: ${CMAKE_BUILD_TYPE}") + +# flags +set(CMAKE_C_FLAGS "-std=c99 -ffreestanding -fno-builtin -nostdlibinc -Wall -Wextra") +set(CMAKE_C_FLAGS_DEBUG "-g -O0") +set(CMAKE_C_FLAGS_RELEASE "-O3") + +include_directories( + "src/") + +# source files +set(SRCS + src/kernel/kernel.c) + +# architecture specific code +if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "i.86") + set(SRCS + src/kernel/arch/x86/boot.s + ${SRCS} + src/kernel/arch/x86/tty.c) + set(CMAKE_EXE_LINKER_FLAGS "-T src/kernel/arch/x86/linker.ld") +endif() + +if(NOT CMAKE_BUILD_TYPE STREQUAL "debug" AND + NOT CMAKE_BUILD_TYPE STREQUAL "relwithdebinfo") + add_definitions("-DNDEBUG") +else() + add_definitions("-DDEBUG") +endif() + +add_executable(${TARGET_NAME} ${SRCS})