Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
- # Disable stupid "compiler tests"
- SET(CMAKE_C_COMPILER_WORKS 1)
- SET(CMAKE_CXX_COMPILER_WORKS 1)
- # Architecture options
- SET(SYMPHONIUM_ISA "i386" CACHE STRING "Instruction Set Architecture")
- SET(SYMPHONIUM_PLATFORM "pc" CACHE STRING "Platform")
- SET(SYMPHONIUM_OPT_LEVEL "2" CACHE STRING "Optimization Level (0,1,2,3,fast,s ...)")
- INCLUDE("src/kernel/arch/${SYMPHONIUM_ISA}/flags.cmake")
- INCLUDE("src/kernel/arch/${SYMPHONIUM_ISA}/${SYMPHONIUM_PLATFORM}/flags.cmake")
- INCLUDE("src/kernel/kernel.cmake")
- INCLUDE("src/libk/libk.cmake")
- PROJECT(Symphonium C CXX)
- # Target specific ASM language (e.g. ASM_NASM for i386)
- IF(SYMPHONIUM_ASM_LANG)
- ENABLE_LANGUAGE(${SYMPHONIUM_ASM_LANG})
- ENDIF()
- SET(CMAKE_USE_RELATIVE_PATHS ON)
- # Set compiler flags
- # TODO: evaluate if this should be arch-specific.
- SET(COMPILE_FLAGS "${COMPILE_FLAGS} -ffreestanding -O${SYMPHONIUM_OPT_LEVEL} -Wall -Wextra")
- SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${COMPILE_FLAGS}")
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COMPILE_FLAGS}")
- MESSAGE(STATUS ${SYMPHONIUM_LD_SCRIPT})
- SET(LINK_FLAGS "-T ${SYMPHONIUM_LD_SCRIPT} -ffreestanding -O${SYMPHONIUM_OPT_LEVEL} -nostdlib -lgcc")
- SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${LINK_FLAGS}")
- INCLUDE_DIRECTORIES(src/kernel)
- INCLUDE_DIRECTORIES(src/libk)
- ADD_EXECUTABLE(symphonium ${KERNEL_SRC} ${LIBK_SRC} ${ISA_SRC} ${PLATFORM_SRC})
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement