add first version of cmake
This commit is contained in:
65
hello-world/CMakeLists.txt
Normal file
65
hello-world/CMakeLists.txt
Normal file
@ -0,0 +1,65 @@
|
||||
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}
|
||||
#$<TARGET_OBJECTS:env_entry>
|
||||
#$<TARGET_OBJECTS:env_start>
|
||||
)
|
||||
|
||||
# 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
|
||||
)
|
Reference in New Issue
Block a user