Files
unison/src/CMakeLists.txt
Gabriel Ferreira c633a1420c build: Add new build_exec macro to declare executable targets
Also adds IGNORE_PCH option to build_example macro.
2022-09-17 11:13:38 +00:00

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()