Includes: - fix int64x64 parsing order, remove cached entries in macros-and-definitions and in the docs - update launch.json scratch names - add a ctest entry per executable - forward POSIX signal in ns3 (to get segmentation fault) - prioritize Ninja generator instead of Makefiles - add tests for unused utils source files - remove dummy file and add tests to check for unused source files - add missing examples and clean up unnecessary definitions - missing feature entry for LTE used by pybindgen - refactor CMake related filenames - fix python libraries and include directories bindings - fix brite example name - Keep C++ compiler and flags when refreshing - Disable precompiled headers when Ccache is found - Mark find_external_library headers as advanced - consolidate auxiliary files: build-status.py, _cache.py and .lock-waf_sys.platform_build files are merged into .lock-ns3_sys.platform_build - scan .cc sources used in bindings and update docs
153 lines
5.5 KiB
CMake
153 lines
5.5 KiB
CMake
# # COPYRIGHT
|
|
#
|
|
# All contributions by Emanuele Ruffaldi Copyright (c) 2016-2019, E All rights
|
|
# reserved.
|
|
#
|
|
# All other contributions: Copyright (c) 2019, the respective contributors. All
|
|
# rights reserved.
|
|
#
|
|
# Each contributor holds copyright over their respective contributions. The
|
|
# project versioning (Git) records all such contribution source information.
|
|
#
|
|
# LICENSE
|
|
#
|
|
# The BSD 3-Clause License
|
|
#
|
|
# Redistribution and use in source and binary forms, with or without
|
|
# modification, are permitted provided that the following conditions are met:
|
|
#
|
|
# * Redistributions of source code must retain the above copyright notice, this
|
|
# list of conditions and the following disclaimer.
|
|
#
|
|
# * Redistributions in binary form must reproduce the above copyright notice,
|
|
# this list of conditions and the following disclaimer in the documentation
|
|
# and/or other materials provided with the distribution.
|
|
#
|
|
# * Neither the name of tiny-dnn nor the names of its contributors may be used
|
|
# to endorse or promote products derived from this software without specific
|
|
# prior written permission.
|
|
#
|
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
#
|
|
# SOURCE:
|
|
# https://github.com/eruffaldi/cppPosit/blob/master/include/FindInt128.cmake
|
|
#
|
|
|
|
# * this module looks for 128 bit integer support. It sets up the type defs in
|
|
# util/int128_types.hpp. Simply add ${INT128_FLAGS} to the compiler flags.
|
|
|
|
include(CheckTypeSize)
|
|
include(CheckCXXSourceCompiles)
|
|
|
|
macro(CHECK_128_BIT_HASH_FUNCTION VAR_NAME DEF_NAME)
|
|
|
|
# message("Testing for presence of 128 bit unsigned integer hash function for
|
|
# ${VAR_NAME}.")
|
|
|
|
check_cxx_source_compiles(
|
|
"
|
|
#include <functional>
|
|
#include <cstdint>
|
|
int main(int argc, char** argv) {
|
|
std::hash<${VAR_NAME}>()(0);
|
|
return 0;
|
|
}"
|
|
has_hash_${VAR_NAME}
|
|
)
|
|
|
|
if(has_hash_${VAR_NAME})
|
|
# message("std::hash<${VAR_NAME}> defined.")
|
|
set(${DEF_NAME} 1)
|
|
else()
|
|
# message("std::hash<${VAR_NAME}> not defined.")
|
|
endif()
|
|
endmacro()
|
|
|
|
macro(CHECK_INT128 INT128_NAME VARIABLE DEFINE_NAME)
|
|
|
|
if(NOT INT128_FOUND)
|
|
# message("Testing for 128 bit integer support with ${INT128_NAME}.")
|
|
check_type_size("${INT128_NAME}" int128_t_${DEFINE_NAME})
|
|
if(HAVE_int128_t_${DEFINE_NAME})
|
|
if(int128_t_${DEFINE_NAME} EQUAL 16)
|
|
# message("Found: Enabling support for 128 bit integers using
|
|
# ${INT128_NAME}.")
|
|
set(INT128_FOUND 1)
|
|
check_128_bit_hash_function(${INT128_NAME} HAS_INT128_STD_HASH)
|
|
set(${VARIABLE} "${DEFINE_NAME}")
|
|
else()
|
|
# message("${INT128_NAME} has incorrect size, can't use.")
|
|
endif()
|
|
endif()
|
|
endif()
|
|
endmacro()
|
|
|
|
macro(CHECK_UINT128 UINT128_NAME VARIABLE DEFINE_NAME)
|
|
|
|
if(NOT UINT128_FOUND)
|
|
# message("Testing for 128 bit unsigned integer support with
|
|
# ${UINT128_NAME}.")
|
|
check_type_size("${UINT128_NAME}" uint128_t_${DEFINE_NAME})
|
|
if(HAVE_uint128_t_${DEFINE_NAME})
|
|
if(uint128_t_${DEFINE_NAME} EQUAL 16)
|
|
# message("Found: Enabling support for 128 bit integers using
|
|
# ${UINT128_NAME}.")
|
|
set(UINT128_FOUND 1)
|
|
check_128_bit_hash_function(${UINT128_NAME} HAS_UINT128_STD_HASH)
|
|
set(${VARIABLE} "${DEFINE_NAME}")
|
|
else()
|
|
# message("${UINT128_NAME} has incorrect size, can't use.")
|
|
endif()
|
|
endif()
|
|
endif()
|
|
endmacro()
|
|
|
|
macro(FIND_INT128_TYPES)
|
|
|
|
check_int128("long long" INT128_DEF "HAVEint128_as_long_long")
|
|
check_int128("int128_t" INT128_DEF "HAVEint128_t")
|
|
check_int128("__int128_t" INT128_DEF "HAVE__int128_t")
|
|
check_int128("__int128" INT128_DEF "HAVE__int128")
|
|
check_int128("int128" INT128_DEF "HAVEint128")
|
|
|
|
if(INT128_FOUND)
|
|
set(INT128_FLAGS "-D${INT128_DEF}")
|
|
if(HAS_INT128_STD_HASH)
|
|
set(INT128_FLAGS "${INT128_FLAGS} -DHASH_FOR_INT128_DEFINED")
|
|
endif()
|
|
endif()
|
|
|
|
check_uint128("unsigned long long" UINT128_DEF "HAVEuint128_as_u_long_long")
|
|
check_uint128("uint128_t" UINT128_DEF "HAVEuint128_t")
|
|
check_uint128("__uint128_t" UINT128_DEF "HAVE__uint128_t")
|
|
check_uint128("__uint128" UINT128_DEF "HAVE__uint128")
|
|
check_uint128("uint128" UINT128_DEF "HAVEuint128")
|
|
check_uint128("unsigned __int128_t" UINT128_DEF "HAVEunsigned__int128_t")
|
|
check_uint128("unsigned int128_t" UINT128_DEF "HAVEunsignedint128_t")
|
|
check_uint128("unsigned __int128" UINT128_DEF "HAVEunsigned__int128")
|
|
check_uint128("unsigned int128" UINT128_DEF "HAVEunsignedint128")
|
|
|
|
if(UINT128_FOUND)
|
|
set(INT128_FLAGS "${INT128_FLAGS} -D${UINT128_DEF}")
|
|
if(HAS_UINT128_STD_HASH)
|
|
set(INT128_FLAGS "${INT128_FLAGS} -DHASH_FOR_UINT128_DEFINED")
|
|
endif()
|
|
endif()
|
|
|
|
# MSVC doesn't support 128 bit soft operations, which is weird since they
|
|
# support 128 bit numbers... Clang does support, but didn't expose them
|
|
# https://reviews.llvm.org/D41813
|
|
if(${MSVC})
|
|
set(UINT128_FOUND False)
|
|
endif()
|
|
endmacro()
|