cmake_minimum_required(VERSION 3.12) project(hello-world C) # Set default board to iss if not specified if(NOT DEFINED BOARD) set(BOARD "iss" CACHE STRING "Target board") endif() #set(BSP_BASE "${CMAKE_CURRENT_SOURCE_DIR}/../bare-metal-bsp") # Source files set(SOURCES hello.c ) message(STATUS "Building for board: ${BOARD}") message(STATUS "liu:${PROJECT_NAME} ") message(STATUS "Using board-specific files from: ${BSP_BASE}/env/${BOARD}") # Create executable with all objects add_executable(${PROJECT_NAME} ${SOURCES} ${BSP_OBJECTS} ) # Link with board library target_link_libraries(${PROJECT_NAME} PRIVATE ${LIBWRAP_OBJECTS} ${ENV_OBJECTS} #$ #$ ) # Include directories target_include_directories(${PROJECT_NAME} PRIVATE ${BSP_BASE}/include ${BSP_BASE}/drivers ${BSP_BASE}/env ${BSP_BASE}/env/${BOARD} ${BSP_BASE}/libwrap ) # Add compile definitions target_compile_definitions(${PROJECT_NAME} PRIVATE BOARD_${BOARD} ) # link global_compile_options to this target target_link_libraries(${PROJECT_NAME} PRIVATE global_compile_options) # Set linker options target_link_options(${PROJECT_NAME} PRIVATE -T${BSP_BASE}/env/${BOARD}/link.ld -nostartfiles -Wl,--gc-sections ) # Install target install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION bin )