Files
unison/buildsupport/custom_modules/waf_workaround_c4cache.cmake
Gabriel Ferreira 9342082c53 bindings, build: fix bindings and visualizer build
Includes:
- scan python scripts
- run python scripts from ns3
- replace visualizer file copy with configure_file to prevent cmake refreshes
- replace ns__init__.py file copy with configure_file to prevent cmake refreshes
- fix bindings scanning with cmake
- pass include directories to modulegen for castxml consumption
- add missing parameters of Recv in python-unit-tests.py
- change apiscan targets from apiscan-module to libmodule-apiscan
- change bindings targets from module-bingings to libmodule-bindings
- scanning and bindings build tests
- scan scratch python scripts
- replace FindPython3 with FindPython to be compatible with CMake 3.10
- do not export private visual-simulator-impl.h
- do not export udp-socket-impl.h
- use .so suffix for bindings on Mac instead of .dylib
2022-01-26 01:53:28 -03:00

92 lines
3.7 KiB
CMake

# Copyright (c) 2017-2021 Universidade de Brasília
#
# This program is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License version 2 as published by the Free
# Software Foundation;
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License along with
# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
# Place, Suite 330, Boston, MA 02111-1307 USA
#
# Author: Gabriel Ferreira <gabrielcarvfer@gmail.com>
function(cache_cmake_flag cmake_flag cache_entry output_string)
if(${${cmake_flag}})
set(${output_string} "${${output_string}}${cache_entry} = True\n"
PARENT_SCOPE
)
else()
set(${output_string} "${${output_string}}${cache_entry} = False\n"
PARENT_SCOPE
)
endif()
endfunction(cache_cmake_flag)
function(generate_c4che_cachepy)
# Build _cache.py file consumed by test.py
set(cache_contents "")
string(APPEND cache_contents "NS3_ENABLED_MODULES = [")
foreach(module_library ${ns3-libs}) # fetch core module libraries
string(APPEND cache_contents "'")
string(REPLACE "lib" "" module_name ${module_library}) # lib${libname} into
# libname
string(APPEND cache_contents "ns3-${module_name}', ")
endforeach()
string(APPEND cache_contents "]\n")
string(APPEND cache_contents "NS3_ENABLED_CONTRIBUTED_MODULES = [")
foreach(module_library ${ns3-contrib-libs}) # fetch core module libraries
string(APPEND cache_contents "'")
string(REPLACE "lib" "" module_name ${module_library}) # lib${libname} into
# libname
string(APPEND cache_contents "ns3-${module_name}', ")
endforeach()
string(APPEND cache_contents "]\n")
string(REPLACE ":" "', '" PATH_LIST $ENV{PATH})
string(
APPEND
cache_contents
"NS3_MODULE_PATH = ['${PATH_LIST}', '${CMAKE_OUTPUT_DIRECTORY}', '${CMAKE_LIBRARY_OUTPUT_DIRECTORY}']\n"
)
cache_cmake_flag(ENABLE_REALTIME "ENABLE_REAL_TIME" cache_contents)
cache_cmake_flag(NS3_PTHREAD "ENABLE_THREADING" cache_contents)
cache_cmake_flag(ENABLE_EXAMPLES "ENABLE_EXAMPLES" cache_contents)
cache_cmake_flag(ENABLE_TESTS "ENABLE_TESTS" cache_contents)
cache_cmake_flag(NS3_OPENFLOW "ENABLE_OPENFLOW" cache_contents)
cache_cmake_flag(NS3_CLICK "NSCLICK" cache_contents)
cache_cmake_flag(NS3_BRITE "ENABLE_BRITE" cache_contents)
cache_cmake_flag(NS3_ENABLE_SUDO "ENABLE_SUDO" cache_contents)
cache_cmake_flag(NS3_PYTHON_BINDINGS "ENABLE_PYTHON_BINDINGS" cache_contents)
cache_cmake_flag(
NS3_SCAN_PYTHON_BINDINGS "ENABLE_SCAN_PYTHON_BINDINGS" cache_contents
)
string(APPEND cache_contents "EXAMPLE_DIRECTORIES = [")
foreach(example_folder ${ns3-example-folders})
string(APPEND cache_contents "'${example_folder}', ")
endforeach()
string(APPEND cache_contents "]\n")
string(APPEND cache_contents "APPNAME = 'ns'\n")
string(APPEND cache_contents "BUILD_PROFILE = '${build_profile}'\n")
string(APPEND cache_contents "VERSION = '${NS3_VER}' \n")
string(APPEND cache_contents "PYTHON = ['${Python_EXECUTABLE}']\n")
mark_as_advanced(VALGRIND)
find_program(VALGRIND valgrind)
if("${VALGRIND}" STREQUAL "VALGRIND-NOTFOUND")
string(APPEND cache_contents "VALGRIND_FOUND = False \n")
else()
string(APPEND cache_contents "VALGRIND_FOUND = True \n")
endif()
file(WRITE ${CMAKE_OUTPUT_DIRECTORY}/c4che/_cache.py "${cache_contents}")
endfunction(generate_c4che_cachepy)