diff options
| -rw-r--r-- | CMakeLists.txt | 25 | ||||
| -rw-r--r-- | arch/x86/boot.nasm | 2 | ||||
| -rw-r--r-- | arch/x86/cpuid/CMakeLists.txt | 4 | ||||
| -rw-r--r-- | arch/x86/gdt/CMakeLists.txt | 4 | ||||
| -rw-r--r-- | arch/x86/gdt/SwitchToGdt.nasm | 4 | ||||
| -rw-r--r-- | cmake/toolchain/x86_generic_clang.cmake | 2 | ||||
| -rw-r--r-- | cmake/toolchain/x86_generic_gcc.cmake | 2 | ||||
| -rw-r--r-- | libgcc/x86/CMakeLists.txt | 6 |
8 files changed, 36 insertions, 13 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index b093d80..c6d9912 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,8 +4,13 @@ # Expected input variables: # ARCH: type of architecture -set(CXX_FLAGS - -Wall +cmake_minimum_required(VERSION 3.25) + +project(ObjectiveProject LANGUAGES CXX ASM_NASM) + +set(ObjectiveProject_CXX_FLAGS + $<$<CONFIG:Debug>:-Wall -Wextra -ggdb -g3 -O0> + $<$<CONFIG:Release>:-Wall -Werror> -ffreestanding -nostdinc -nostdlib @@ -13,9 +18,10 @@ set(CXX_FLAGS -mgeneral-regs-only ) -cmake_minimum_required(VERSION 3.25) - -project(ObjectiveProject LANGUAGES CXX ASM_NASM) +set(ObjectiveProject_ASM_NASM_FLAGS + $<$<CONFIG:Debug>:-g -O0 -Wall> + $<$<CONFIG:RELEASE>:-Wall> +) list(APPEND CMAKE_MODULE_PATH "${ObjectiveProject_SOURCE_DIR}/cmake/module" @@ -36,11 +42,12 @@ endif() # Create target with compiler requirements (include directories, flags and etc) add_library(CXX_COMPILER_REQUIREMENTS INTERFACE) +add_library(ASM_NASM_COMPILER_REQUIREMENTS INTERFACE) # Target with linker requirements add_library(CXX_LINKER_REQUIREMENTS INTERFACE) target_link_options(CXX_LINKER_REQUIREMENTS INTERFACE - ${CXX_FLAGS} + ${ObjectiveProject_CXX_FLAGS} ) target_link_libraries(CXX_LINKER_REQUIREMENTS INTERFACE gcc @@ -49,10 +56,14 @@ target_link_libraries(CXX_LINKER_REQUIREMENTS INTERFACE # Set compiler flags if(CMAKE_CXX_COMPILER_ID MATCHES "Clang|GNU") target_compile_options(CXX_COMPILER_REQUIREMENTS INTERFACE - ${CXX_FLAGS} + ${ObjectiveProject_CXX_FLAGS} ) endif() +target_compile_options(ASM_NASM_COMPILER_REQUIREMENTS INTERFACE + ${ObjectiveProject_ASM_NASM_FLAGS} +) + target_include_directories(CXX_COMPILER_REQUIREMENTS INTERFACE ${ObjectiveProject_SOURCE_DIR}/include diff --git a/arch/x86/boot.nasm b/arch/x86/boot.nasm index 11175af..d250434 100644 --- a/arch/x86/boot.nasm +++ b/arch/x86/boot.nasm @@ -1,3 +1,4 @@ +BITS 32 section .text extern main, _estack, _init global _start:function @@ -13,4 +14,3 @@ _start: cli .hang: hlt jmp .hang -; .end: diff --git a/arch/x86/cpuid/CMakeLists.txt b/arch/x86/cpuid/CMakeLists.txt index e8528e8..f03b2b1 100644 --- a/arch/x86/cpuid/CMakeLists.txt +++ b/arch/x86/cpuid/CMakeLists.txt @@ -22,4 +22,8 @@ target_sources(CPUIDASM PRIVATE ${CMAKE_CURRENT_LIST_DIR}/CpuidCheck.nasm ) +target_link_libraries(CPUIDASM PUBLIC + ASM_NASM_COMPILER_REQUIREMENTS +) + target_sources(ArchitectureAssemblerSources PRIVATE $<TARGET_OBJECTS:CPUIDASM>) diff --git a/arch/x86/gdt/CMakeLists.txt b/arch/x86/gdt/CMakeLists.txt index 57e3c26..ae31792 100644 --- a/arch/x86/gdt/CMakeLists.txt +++ b/arch/x86/gdt/CMakeLists.txt @@ -20,4 +20,8 @@ target_sources(GDTASM PRIVATE ${CMAKE_CURRENT_LIST_DIR}/SwitchToGdt.nasm ) +target_link_libraries(GDTASM PUBLIC + ASM_NASM_COMPILER_REQUIREMENTS +) + target_sources(ArchitectureAssemblerSources PRIVATE $<TARGET_OBJECTS:GDTASM>) diff --git a/arch/x86/gdt/SwitchToGdt.nasm b/arch/x86/gdt/SwitchToGdt.nasm index 52ebbc7..5d3d612 100644 --- a/arch/x86/gdt/SwitchToGdt.nasm +++ b/arch/x86/gdt/SwitchToGdt.nasm @@ -1,4 +1,6 @@ -global SWITCHTOGDT +BITS 32 +section .text +global SWITCHTOGDT:function SWITCHTOGDT: lgdt [esp + 4] jmp 0x08:.reloadCS diff --git a/cmake/toolchain/x86_generic_clang.cmake b/cmake/toolchain/x86_generic_clang.cmake index 108f9c4..696568e 100644 --- a/cmake/toolchain/x86_generic_clang.cmake +++ b/cmake/toolchain/x86_generic_clang.cmake @@ -6,5 +6,3 @@ set(CMAKE_ASM_NASM_OBJECT_FORMAT elf32) set(CMAKE_CXX_COMPILER clang++) set(CMAKE_CXX_COMPILER_TARGET i686) - -set(CMAKE_CXX_FLAGS_DEBUG_INIT "-Wextra -ggdb -g3 -O0") diff --git a/cmake/toolchain/x86_generic_gcc.cmake b/cmake/toolchain/x86_generic_gcc.cmake index 138bc45..8ea769e 100644 --- a/cmake/toolchain/x86_generic_gcc.cmake +++ b/cmake/toolchain/x86_generic_gcc.cmake @@ -6,5 +6,3 @@ set(CMAKE_ASM_NASM_OBJECT_FORMAT elf32) set(CMAKE_CXX_COMPILER i686-elf-g++) set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) - -set(CMAKE_CXX_FLAGS_DEBUG_INIT "-Wextra -ggdb -g3 -O0") diff --git a/libgcc/x86/CMakeLists.txt b/libgcc/x86/CMakeLists.txt index 2a1bec9..8b2eb67 100644 --- a/libgcc/x86/CMakeLists.txt +++ b/libgcc/x86/CMakeLists.txt @@ -4,6 +4,9 @@ target_sources(CRTIBUNDLE PRIVATE ${CMAKE_CURRENT_LIST_DIR}/crti.nasm $<TARGET_OBJECTS:CRTBEGIN> ) +target_link_libraries(CRTIBUNDLE PUBLIC + ASM_NASM_COMPILER_REQUIREMENTS +) target_link_libraries(CRTI INTERFACE CRTIBUNDLE) add_library(CRTN INTERFACE) @@ -12,4 +15,7 @@ target_sources(CRTNBUNDLE PRIVATE ${CMAKE_CURRENT_LIST_DIR}/crtn.nasm $<TARGET_OBJECTS:CRTEND> ) +target_link_libraries(CRTNBUNDLE PUBLIC + ASM_NASM_COMPILER_REQUIREMENTS +) target_link_libraries(CRTN INTERFACE CRTNBUNDLE) |
