Skip to content
Open
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,15 @@
astra-sim-alibabacloud/build/simai_analytical/build/
astra-sim-alibabacloud/build/astra_ns3/build/
astra-sim-alibabacloud/extern/
astra-sim-alibabacloud/inputs/config/
!astra-sim-alibabacloud/inputs/config/SimAI.conf
bin/
results/
test/log/
*.log
.cur*
.DS_Store

**/build
**/cmake-cache
!astra-sim-alibabacloud/build
104 changes: 104 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
# CMake requirement
cmake_minimum_required(VERSION 3.15)

# C++ requirement
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED True)
add_definitions("-Wall -g")

if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "Default build type" FORCE)
endif()

Comment thread
gabrielecastellano marked this conversation as resolved.
Outdated
# Compiler requirement
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.3)
message(FATAL_ERROR "g++ (GNU) version should be greater than 5.3, but found ${CMAKE_CXX_COMPILER_VERSION}")
endif()
endif()

project(SimAI)

set(NS3_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ns-3-alibabacloud/simulation")
set(ASTRA_SIM_DIR "${CMAKE_CURRENT_SOURCE_DIR}/astra-sim-alibabacloud/astra-sim")
set(BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}")
set(RESULT_DIR "${CMAKE_CURRENT_SOURCE_DIR}}/result")

# Create required directories
file(MAKE_DIRECTORY ${BUILD_DIR})
file(MAKE_DIRECTORY ${RESULT_DIR})
Comment thread
gabrielecastellano marked this conversation as resolved.
Outdated

# Option to clean build and result directories
option(CLEAN_BUILD "Clean build directory" OFF)
option(CLEAN_RESULT "Clean result directory" OFF)
option(BUILD_SIM "Build NS3 simulation" ON)
option(BUILD_ANALYTICAL "Build analytical" OFF)
option(BUILD_PHY "Build physical" OFF)

if(CLEAN_BUILD)
message(STATUS "Cleaning build directory: ${BUILD_DIR}")
file(REMOVE_RECURSE ${BUILD_DIR})
file(REMOVE_RECURSE "${NS3_DIR}/simulation/build")
file(REMOVE_RECURSE "${NS3_DIR}/simulation/cmake-cache")
Comment thread
gabrielecastellano marked this conversation as resolved.
Outdated
file(MAKE_DIRECTORY ${BUILD_DIR})
endif()

Comment thread
gabrielecastellano marked this conversation as resolved.
Outdated
if(CLEAN_RESULT)
message(STATUS "Cleaning result directory: ${RESULT_DIR}")
file(REMOVE_RECURSE ${RESULT_DIR})
file(MAKE_DIRECTORY ${RESULT_DIR})
endif()

if(BUILD_SIM)
# AstraSim
add_subdirectory(astra-sim-alibabacloud/build/astra_ns3)

file(GLOB_RECURSE astra_sim_files CONFIGURE_DEPENDS "${ASTRA_SIM_DIR}/*")
list(FILTER astra_sim_files EXCLUDE REGEX "/network_frontend/")
foreach(file ${astra_sim_files})
string(REPLACE "${ASTRA_SIM_DIR}/" "astra-sim/" relative_path ${file})
get_filename_component(output_dir ${NS3_SRC_DIR}/src/applications/${relative_path} DIRECTORY)
file(MAKE_DIRECTORY ${output_dir})
configure_file(${file} ${NS3_SRC_DIR}/src/applications/${relative_path} COPYONLY)
endforeach()
Comment thread
gabrielecastellano marked this conversation as resolved.
Outdated

file(GLOB scratch_files
CONFIGURE_DEPENDS
${ASTRA_SIM_DIR}/network_frontend/ns3/*)
foreach(file ${scratch_files})
get_filename_component(filename ${file} NAME)
configure_file(${file} ${NS3_SRC_DIR}/scratch/${filename} COPYONLY)
endforeach()

# NS3
string(TOLOWER ${CMAKE_BUILD_TYPE} build_type)
if (build_type STREQUAL "release")
set(NS3_ASSERT OFF CACHE BOOL "Override NS3_ASSERT" FORCE)
set(NS3_LOG OFF CACHE BOOL "Override NS3_LOG" FORCE)
endif ()
if (NOT DEFINED NS3_WARNINGS_AS_ERRORS)
set(NS3_WARNINGS_AS_ERRORS OFF CACHE BOOL "Override NS3_WARNINGS_AS_ERRORS" FORCE)
endif ()
if (NOT DEFINED NS3_MTP)
set(NS3_MTP ON CACHE BOOL "Override NS3_MTP" FORCE)
endif ()
add_subdirectory(${NS3_SRC_DIR} ${NS3_SRC_DIR}/cmake-cache)

# Link binaries
add_custom_target(create_ns3_symlink
COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_CURRENT_SOURCE_DIR}/bin"
COMMAND ${CMAKE_COMMAND} -E create_symlink
"$<TARGET_FILE:scratch_AstraSimNetwork>"
"${CMAKE_CURRENT_SOURCE_DIR}/bin/SimAI_simulator"
DEPENDS scratch_AstraSimNetwork
COMMENT "Creating simulator symlink..."
)
endif()

if(BUILD_ANALYTICAL)
add_subdirectory(astra-sim-alibabacloud/build/simai_analytical)
endif()

if(BUILD_PHY)
add_subdirectory(astra-sim-alibabacloud/build/simai_phy)
endif()
4 changes: 3 additions & 1 deletion astra-sim-alibabacloud/build/astra_ns3/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@ cmake_minimum_required(VERSION 3.15)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED True)
add_definitions("-Wall -g")
SET(CMAKE_BUILD_TYPE "Debug")
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "Default build type" FORCE)
endif()

# Compiler requirement
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
Expand Down
Loading