87 lines
2.5 KiB
CMake
87 lines
2.5 KiB
CMake
set(libs "${libs_to_build}")
|
|
|
|
# Process the visualizer module first if enabled
|
|
if(visualizer IN_LIST libs)
|
|
if(${ENABLE_VISUALIZER})
|
|
message(STATUS "Processing src/visualizer")
|
|
add_subdirectory(visualizer)
|
|
endif()
|
|
list(REMOVE_ITEM libs visualizer)
|
|
endif()
|
|
|
|
# Process subdirectories
|
|
foreach(libname ${libs})
|
|
if(EXISTS ${PROJECT_SOURCE_DIR}/src/${libname}/CMakeLists.txt)
|
|
message(STATUS "Processing src/${libname}")
|
|
add_subdirectory(${libname})
|
|
else()
|
|
message(
|
|
${HIGHLIGHTED_STATUS}
|
|
"Skipping src/${libname} : it does not contain a CMakeLists.txt file"
|
|
)
|
|
endif()
|
|
endforeach()
|
|
|
|
# Prevents link errors due to symbol collisions if the same library is linked
|
|
# multiple times
|
|
list(REMOVE_DUPLICATES ns3-external-libs)
|
|
|
|
# Build the lib-ns3-static (ns3.x-static-buildtype.a/.lib) with all sublibraries
|
|
if(${NS3_STATIC})
|
|
add_library(
|
|
${lib-ns3-static} STATIC ${PROJECT_SOURCE_DIR}/build-support/empty.cc
|
|
"${lib-ns3-static-objs}"
|
|
)
|
|
|
|
# Replace shared library suffix and check if static version exists before
|
|
# linking
|
|
set(ns3-external-static-libs)
|
|
foreach(sharedlib ${ns3-external-libs})
|
|
if(NOT (${sharedlib} MATCHES ".so"))
|
|
list(APPEND ns3-external-static-libs ${sharedlib})
|
|
continue()
|
|
endif()
|
|
|
|
string(REPLACE ".so" ".a" output ${sharedlib})
|
|
if(EXISTS ${output})
|
|
list(APPEND ns3-external-static-libs ${output})
|
|
else()
|
|
message(
|
|
FATAL_ERROR "Static library version of ${sharedlib} was not found"
|
|
)
|
|
endif()
|
|
endforeach()
|
|
|
|
# Required by some static libraries, such as sqlite, for some odd reason
|
|
if(LINUX)
|
|
list(APPEND ns3-external-static-libs -ldl)
|
|
endif()
|
|
|
|
target_link_libraries(
|
|
${lib-ns3-static} ${STATIC_LINK_FLAGS} ${LIB_AS_NEEDED_PRE_STATIC}
|
|
${ns3-external-static-libs} ${LIB_AS_NEEDED_POST_STATIC}
|
|
)
|
|
if(${NS3_CLANG_TIMETRACE})
|
|
add_dependencies(timeTraceReport ${lib-ns3-static})
|
|
endif()
|
|
endif()
|
|
|
|
# Build the lib-ns3-static (ns3.x-monolib-buildtype.dll/.dylib/.so) with all
|
|
# sublibraries
|
|
if(${NS3_MONOLIB})
|
|
add_library(
|
|
${lib-ns3-monolib} SHARED ${PROJECT_SOURCE_DIR}/build-support/empty.cc
|
|
"${lib-ns3-static-objs}"
|
|
)
|
|
set_target_properties(
|
|
${lib-ns3-monolib} PROPERTIES INTERPROCEDURAL_OPTIMIZATION TRUE
|
|
)
|
|
target_link_libraries(
|
|
${lib-ns3-monolib} ${LIB_AS_NEEDED_PRE} ${ns3-external-libs}
|
|
${LIB_AS_NEEDED_POST}
|
|
)
|
|
if(${NS3_CLANG_TIMETRACE})
|
|
add_dependencies(timeTraceReport ${lib-ns3-monolib})
|
|
endif()
|
|
endif()
|