ADD: new track message, Entity class and Position class
This commit is contained in:
51
libs/eigen/bench/btl/cmake/FindACML.cmake
Normal file
51
libs/eigen/bench/btl/cmake/FindACML.cmake
Normal file
@@ -0,0 +1,51 @@
|
||||
|
||||
if (ACML_LIBRARIES)
|
||||
set(ACML_FIND_QUIETLY TRUE)
|
||||
endif ()
|
||||
|
||||
find_library(ACML_LIBRARIES
|
||||
NAMES
|
||||
acml_mp acml_mv
|
||||
PATHS
|
||||
$ENV{ACMLDIR}/lib
|
||||
$ENV{ACML_DIR}/lib
|
||||
${LIB_INSTALL_DIR}
|
||||
)
|
||||
|
||||
find_file(ACML_LIBRARIES
|
||||
NAMES
|
||||
libacml_mp.so
|
||||
PATHS
|
||||
/usr/lib
|
||||
/usr/lib64
|
||||
$ENV{ACMLDIR}/lib
|
||||
${LIB_INSTALL_DIR}
|
||||
)
|
||||
|
||||
if(NOT ACML_LIBRARIES)
|
||||
message(STATUS "Multi-threaded library not found, looking for single-threaded")
|
||||
find_library(ACML_LIBRARIES
|
||||
NAMES
|
||||
acml acml_mv
|
||||
PATHS
|
||||
$ENV{ACMLDIR}/lib
|
||||
$ENV{ACML_DIR}/lib
|
||||
${LIB_INSTALL_DIR}
|
||||
)
|
||||
find_file(ACML_LIBRARIES
|
||||
libacml.so libacml_mv.so
|
||||
PATHS
|
||||
/usr/lib
|
||||
/usr/lib64
|
||||
$ENV{ACMLDIR}/lib
|
||||
${LIB_INSTALL_DIR}
|
||||
)
|
||||
endif()
|
||||
|
||||
|
||||
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(ACML DEFAULT_MSG ACML_LIBRARIES)
|
||||
|
||||
mark_as_advanced(ACML_LIBRARIES)
|
||||
31
libs/eigen/bench/btl/cmake/FindATLAS.cmake
Normal file
31
libs/eigen/bench/btl/cmake/FindATLAS.cmake
Normal file
@@ -0,0 +1,31 @@
|
||||
|
||||
if (ATLAS_LIBRARIES)
|
||||
set(ATLAS_FIND_QUIETLY TRUE)
|
||||
endif ()
|
||||
|
||||
find_file(ATLAS_LIB libatlas.so.3 PATHS /usr/lib /usr/lib/atlas /usr/lib64 /usr/lib64/atlas $ENV{ATLASDIR} ${LIB_INSTALL_DIR})
|
||||
find_library(ATLAS_LIB satlas PATHS $ENV{ATLASDIR} ${LIB_INSTALL_DIR})
|
||||
|
||||
find_file(ATLAS_LAPACK NAMES liblapack_atlas.so.3 liblapack.so.3 PATHS /usr/lib /usr/lib/atlas /usr/lib64 /usr/lib64/atlas $ENV{ATLASDIR} ${LIB_INSTALL_DIR})
|
||||
find_library(ATLAS_LAPACK NAMES lapack_atlas lapack PATHS $ENV{ATLASDIR} ${LIB_INSTALL_DIR})
|
||||
|
||||
find_file(ATLAS_F77BLAS libf77blas.so.3 PATHS /usr/lib /usr/lib/atlas /usr/lib64 /usr/lib64/atlas $ENV{ATLASDIR} ${LIB_INSTALL_DIR})
|
||||
find_library(ATLAS_F77BLAS f77blas PATHS $ENV{ATLASDIR} ${LIB_INSTALL_DIR})
|
||||
|
||||
if(ATLAS_LIB AND ATLAS_CBLAS AND ATLAS_LAPACK AND ATLAS_F77BLAS)
|
||||
|
||||
set(ATLAS_LIBRARIES ${ATLAS_LAPACK} ${ATLAS_LIB})
|
||||
|
||||
# search the default lapack lib link to it
|
||||
find_file(ATLAS_REFERENCE_LAPACK liblapack.so.3 PATHS /usr/lib /usr/lib64)
|
||||
find_library(ATLAS_REFERENCE_LAPACK NAMES lapack)
|
||||
# if(ATLAS_REFERENCE_LAPACK)
|
||||
# set(ATLAS_LIBRARIES ${ATLAS_LIBRARIES} ${ATLAS_REFERENCE_LAPACK})
|
||||
# endif()
|
||||
|
||||
endif()
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(ATLAS DEFAULT_MSG ATLAS_LIBRARIES)
|
||||
|
||||
mark_as_advanced(ATLAS_LIBRARIES)
|
||||
31
libs/eigen/bench/btl/cmake/FindBLAZE.cmake
Normal file
31
libs/eigen/bench/btl/cmake/FindBLAZE.cmake
Normal file
@@ -0,0 +1,31 @@
|
||||
# - Try to find eigen2 headers
|
||||
# Once done this will define
|
||||
#
|
||||
# BLAZE_FOUND - system has blaze lib
|
||||
# BLAZE_INCLUDE_DIR - the blaze include directory
|
||||
#
|
||||
# Copyright (C) 2008 Gael Guennebaud <gael.guennebaud@inria.fr>
|
||||
# Adapted from FindEigen.cmake:
|
||||
# Copyright (c) 2006, 2007 Montel Laurent, <montel@kde.org>
|
||||
# Redistribution and use is allowed according to the terms of the BSD license.
|
||||
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
|
||||
|
||||
if (BLAZE_INCLUDE_DIR)
|
||||
|
||||
# in cache already
|
||||
set(BLAZE_FOUND TRUE)
|
||||
|
||||
else ()
|
||||
|
||||
find_path(BLAZE_INCLUDE_DIR NAMES blaze/Blaze.h
|
||||
PATHS
|
||||
${INCLUDE_INSTALL_DIR}
|
||||
)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(BLAZE DEFAULT_MSG BLAZE_INCLUDE_DIR)
|
||||
|
||||
mark_as_advanced(BLAZE_INCLUDE_DIR)
|
||||
|
||||
endif()
|
||||
|
||||
40
libs/eigen/bench/btl/cmake/FindBlitz.cmake
Normal file
40
libs/eigen/bench/btl/cmake/FindBlitz.cmake
Normal file
@@ -0,0 +1,40 @@
|
||||
# - Try to find blitz lib
|
||||
# Once done this will define
|
||||
#
|
||||
# BLITZ_FOUND - system has blitz lib
|
||||
# BLITZ_INCLUDES - the blitz include directory
|
||||
# BLITZ_LIBRARIES - The libraries needed to use blitz
|
||||
|
||||
# Copyright (c) 2006, Montel Laurent, <montel@kde.org>
|
||||
# Copyright (c) 2007, Allen Winter, <winter@kde.org>
|
||||
# Copyright (C) 2008 Gael Guennebaud <gael.guennebaud@inria.fr>
|
||||
# Redistribution and use is allowed according to the terms of the BSD license.
|
||||
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
|
||||
|
||||
# include(FindLibraryWithDebug)
|
||||
|
||||
if (BLITZ_INCLUDES AND BLITZ_LIBRARIES)
|
||||
set(Blitz_FIND_QUIETLY TRUE)
|
||||
endif ()
|
||||
|
||||
find_path(BLITZ_INCLUDES
|
||||
NAMES
|
||||
blitz/array.h
|
||||
PATH_SUFFIXES blitz*
|
||||
PATHS
|
||||
$ENV{BLITZDIR}/include
|
||||
${INCLUDE_INSTALL_DIR}
|
||||
)
|
||||
|
||||
find_library(BLITZ_LIBRARIES
|
||||
blitz
|
||||
PATHS
|
||||
$ENV{BLITZDIR}/lib
|
||||
${LIB_INSTALL_DIR}
|
||||
)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(Blitz DEFAULT_MSG
|
||||
BLITZ_INCLUDES BLITZ_LIBRARIES)
|
||||
|
||||
mark_as_advanced(BLITZ_INCLUDES BLITZ_LIBRARIES)
|
||||
35
libs/eigen/bench/btl/cmake/FindCBLAS.cmake
Normal file
35
libs/eigen/bench/btl/cmake/FindCBLAS.cmake
Normal file
@@ -0,0 +1,35 @@
|
||||
# include(FindLibraryWithDebug)
|
||||
|
||||
if (CBLAS_INCLUDES AND CBLAS_LIBRARIES)
|
||||
set(CBLAS_FIND_QUIETLY TRUE)
|
||||
endif ()
|
||||
|
||||
find_path(CBLAS_INCLUDES
|
||||
NAMES
|
||||
cblas.h
|
||||
PATHS
|
||||
$ENV{CBLASDIR}/include
|
||||
${INCLUDE_INSTALL_DIR}
|
||||
)
|
||||
|
||||
find_library(CBLAS_LIBRARIES
|
||||
cblas
|
||||
PATHS
|
||||
$ENV{CBLASDIR}/lib
|
||||
${LIB_INSTALL_DIR}
|
||||
)
|
||||
|
||||
find_file(CBLAS_LIBRARIES
|
||||
libcblas.so.3
|
||||
PATHS
|
||||
/usr/lib
|
||||
/usr/lib64
|
||||
$ENV{CBLASDIR}/lib
|
||||
${LIB_INSTALL_DIR}
|
||||
)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(CBLAS DEFAULT_MSG
|
||||
CBLAS_INCLUDES CBLAS_LIBRARIES)
|
||||
|
||||
mark_as_advanced(CBLAS_INCLUDES CBLAS_LIBRARIES)
|
||||
17
libs/eigen/bench/btl/cmake/FindGMM.cmake
Normal file
17
libs/eigen/bench/btl/cmake/FindGMM.cmake
Normal file
@@ -0,0 +1,17 @@
|
||||
if (GMM_INCLUDE_DIR)
|
||||
# in cache already
|
||||
set(GMM_FOUND TRUE)
|
||||
else ()
|
||||
|
||||
find_path(GMM_INCLUDE_DIR NAMES gmm/gmm.h
|
||||
PATHS
|
||||
${INCLUDE_INSTALL_DIR}
|
||||
${GMM_INCLUDE_PATH}
|
||||
)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(GMM DEFAULT_MSG GMM_INCLUDE_DIR )
|
||||
|
||||
mark_as_advanced(GMM_INCLUDE_DIR)
|
||||
|
||||
endif()
|
||||
65
libs/eigen/bench/btl/cmake/FindMKL.cmake
Normal file
65
libs/eigen/bench/btl/cmake/FindMKL.cmake
Normal file
@@ -0,0 +1,65 @@
|
||||
|
||||
if (MKL_LIBRARIES)
|
||||
set(MKL_FIND_QUIETLY TRUE)
|
||||
endif ()
|
||||
|
||||
if(CMAKE_MINOR_VERSION GREATER 4)
|
||||
|
||||
if(${CMAKE_HOST_SYSTEM_PROCESSOR} STREQUAL "x86_64")
|
||||
|
||||
find_library(MKL_LIBRARIES
|
||||
mkl_core
|
||||
PATHS
|
||||
$ENV{MKLLIB}
|
||||
/opt/intel/mkl/*/lib/em64t
|
||||
/opt/intel/Compiler/*/*/mkl/lib/em64t
|
||||
${LIB_INSTALL_DIR}
|
||||
)
|
||||
|
||||
find_library(MKL_GUIDE
|
||||
guide
|
||||
PATHS
|
||||
$ENV{MKLLIB}
|
||||
/opt/intel/mkl/*/lib/em64t
|
||||
/opt/intel/Compiler/*/*/mkl/lib/em64t
|
||||
/opt/intel/Compiler/*/*/lib/intel64
|
||||
${LIB_INSTALL_DIR}
|
||||
)
|
||||
|
||||
if(MKL_LIBRARIES AND MKL_GUIDE)
|
||||
set(MKL_LIBRARIES ${MKL_LIBRARIES} mkl_intel_lp64 mkl_sequential ${MKL_GUIDE} pthread)
|
||||
endif()
|
||||
|
||||
else()
|
||||
|
||||
find_library(MKL_LIBRARIES
|
||||
mkl_core
|
||||
PATHS
|
||||
$ENV{MKLLIB}
|
||||
/opt/intel/mkl/*/lib/32
|
||||
/opt/intel/Compiler/*/*/mkl/lib/32
|
||||
${LIB_INSTALL_DIR}
|
||||
)
|
||||
|
||||
find_library(MKL_GUIDE
|
||||
guide
|
||||
PATHS
|
||||
$ENV{MKLLIB}
|
||||
/opt/intel/mkl/*/lib/32
|
||||
/opt/intel/Compiler/*/*/mkl/lib/32
|
||||
/opt/intel/Compiler/*/*/lib/intel32
|
||||
${LIB_INSTALL_DIR}
|
||||
)
|
||||
|
||||
if(MKL_LIBRARIES AND MKL_GUIDE)
|
||||
set(MKL_LIBRARIES ${MKL_LIBRARIES} mkl_intel mkl_sequential ${MKL_GUIDE} pthread)
|
||||
endif()
|
||||
|
||||
endif()
|
||||
|
||||
endif()
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(MKL DEFAULT_MSG MKL_LIBRARIES)
|
||||
|
||||
mark_as_advanced(MKL_LIBRARIES)
|
||||
31
libs/eigen/bench/btl/cmake/FindMTL4.cmake
Normal file
31
libs/eigen/bench/btl/cmake/FindMTL4.cmake
Normal file
@@ -0,0 +1,31 @@
|
||||
# - Try to find eigen2 headers
|
||||
# Once done this will define
|
||||
#
|
||||
# MTL4_FOUND - system has eigen2 lib
|
||||
# MTL4_INCLUDE_DIR - the eigen2 include directory
|
||||
#
|
||||
# Copyright (C) 2008 Gael Guennebaud <gael.guennebaud@inria.fr>
|
||||
# Adapted from FindEigen.cmake:
|
||||
# Copyright (c) 2006, 2007 Montel Laurent, <montel@kde.org>
|
||||
# Redistribution and use is allowed according to the terms of the BSD license.
|
||||
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
|
||||
|
||||
if (MTL4_INCLUDE_DIR)
|
||||
|
||||
# in cache already
|
||||
set(MTL4_FOUND TRUE)
|
||||
|
||||
else ()
|
||||
|
||||
find_path(MTL4_INCLUDE_DIR NAMES boost/numeric/mtl/mtl.hpp
|
||||
PATHS
|
||||
${INCLUDE_INSTALL_DIR}
|
||||
)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(MTL4 DEFAULT_MSG MTL4_INCLUDE_DIR)
|
||||
|
||||
mark_as_advanced(MTL4_INCLUDE_DIR)
|
||||
|
||||
endif()
|
||||
|
||||
17
libs/eigen/bench/btl/cmake/FindOPENBLAS.cmake
Normal file
17
libs/eigen/bench/btl/cmake/FindOPENBLAS.cmake
Normal file
@@ -0,0 +1,17 @@
|
||||
|
||||
if (OPENBLAS_LIBRARIES)
|
||||
set(OPENBLAS_FIND_QUIETLY TRUE)
|
||||
endif ()
|
||||
|
||||
find_file(OPENBLAS_LIBRARIES NAMES libopenblas.so libopenblas.so.0 PATHS /usr/lib /usr/lib64 $ENV{OPENBLASDIR} ${LIB_INSTALL_DIR})
|
||||
find_library(OPENBLAS_LIBRARIES openblas PATHS $ENV{OPENBLASDIR} ${LIB_INSTALL_DIR})
|
||||
|
||||
if(OPENBLAS_LIBRARIES AND CMAKE_COMPILER_IS_GNUCXX)
|
||||
set(OPENBLAS_LIBRARIES ${OPENBLAS_LIBRARIES} "-lpthread -lgfortran")
|
||||
endif()
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(OPENBLAS DEFAULT_MSG
|
||||
OPENBLAS_LIBRARIES)
|
||||
|
||||
mark_as_advanced(OPENBLAS_LIBRARIES)
|
||||
@@ -0,0 +1,60 @@
|
||||
# FIND_PACKAGE_HANDLE_STANDARD_ARGS(NAME (DEFAULT_MSG|"Custom failure message") VAR1 ... )
|
||||
#
|
||||
# This macro is intended to be used in FindXXX.cmake modules files.
|
||||
# It handles the REQUIRED and QUIET argument to find_package() and
|
||||
# it also sets the <UPPERCASED_NAME>_FOUND variable.
|
||||
# The package is found if all variables listed are TRUE.
|
||||
# Example:
|
||||
#
|
||||
# FIND_PACKAGE_HANDLE_STANDARD_ARGS(LibXml2 DEFAULT_MSG LIBXML2_LIBRARIES LIBXML2_INCLUDE_DIR)
|
||||
#
|
||||
# LibXml2 is considered to be found, if both LIBXML2_LIBRARIES and
|
||||
# LIBXML2_INCLUDE_DIR are valid. Then also LIBXML2_FOUND is set to TRUE.
|
||||
# If it is not found and REQUIRED was used, it fails with FATAL_ERROR,
|
||||
# independent whether QUIET was used or not.
|
||||
#
|
||||
# If it is found, the location is reported using the VAR1 argument, so
|
||||
# here a message "Found LibXml2: /usr/lib/libxml2.so" will be printed out.
|
||||
# If the second argument is DEFAULT_MSG, the message in the failure case will
|
||||
# be "Could NOT find LibXml2", if you don't like this message you can specify
|
||||
# your own custom failure message there.
|
||||
|
||||
macro(FIND_PACKAGE_HANDLE_STANDARD_ARGS _NAME _FAIL_MSG _VAR1 )
|
||||
|
||||
if("${_FAIL_MSG}" STREQUAL "DEFAULT_MSG")
|
||||
if (${_NAME}_FIND_REQUIRED)
|
||||
set(_FAIL_MESSAGE "Could not find REQUIRED package ${_NAME}")
|
||||
else (${_NAME}_FIND_REQUIRED)
|
||||
set(_FAIL_MESSAGE "Could not find OPTIONAL package ${_NAME}")
|
||||
endif (${_NAME}_FIND_REQUIRED)
|
||||
else("${_FAIL_MSG}" STREQUAL "DEFAULT_MSG")
|
||||
set(_FAIL_MESSAGE "${_FAIL_MSG}")
|
||||
endif("${_FAIL_MSG}" STREQUAL "DEFAULT_MSG")
|
||||
|
||||
string(TOUPPER ${_NAME} _NAME_UPPER)
|
||||
|
||||
set(${_NAME_UPPER}_FOUND TRUE)
|
||||
if(NOT ${_VAR1})
|
||||
set(${_NAME_UPPER}_FOUND FALSE)
|
||||
endif(NOT ${_VAR1})
|
||||
|
||||
foreach(_CURRENT_VAR ${ARGN})
|
||||
if(NOT ${_CURRENT_VAR})
|
||||
set(${_NAME_UPPER}_FOUND FALSE)
|
||||
endif(NOT ${_CURRENT_VAR})
|
||||
endforeach(_CURRENT_VAR)
|
||||
|
||||
if (${_NAME_UPPER}_FOUND)
|
||||
if (NOT ${_NAME}_FIND_QUIETLY)
|
||||
message(STATUS "Found ${_NAME}: ${${_VAR1}}")
|
||||
endif (NOT ${_NAME}_FIND_QUIETLY)
|
||||
else (${_NAME_UPPER}_FOUND)
|
||||
if (${_NAME}_FIND_REQUIRED)
|
||||
message(FATAL_ERROR "${_FAIL_MESSAGE}")
|
||||
else (${_NAME}_FIND_REQUIRED)
|
||||
if (NOT ${_NAME}_FIND_QUIETLY)
|
||||
message(STATUS "${_FAIL_MESSAGE}")
|
||||
endif (NOT ${_NAME}_FIND_QUIETLY)
|
||||
endif (${_NAME}_FIND_REQUIRED)
|
||||
endif (${_NAME_UPPER}_FOUND)
|
||||
endmacro(FIND_PACKAGE_HANDLE_STANDARD_ARGS)
|
||||
32
libs/eigen/bench/btl/cmake/FindTvmet.cmake
Normal file
32
libs/eigen/bench/btl/cmake/FindTvmet.cmake
Normal file
@@ -0,0 +1,32 @@
|
||||
# - Try to find tvmet headers
|
||||
# Once done this will define
|
||||
#
|
||||
# TVMET_FOUND - system has tvmet lib
|
||||
# TVMET_INCLUDE_DIR - the tvmet include directory
|
||||
#
|
||||
# Copyright (C) 2008 Gael Guennebaud <gael.guennebaud@inria.fr>
|
||||
# Adapted from FindEigen.cmake:
|
||||
# Copyright (c) 2006, 2007 Montel Laurent, <montel@kde.org>
|
||||
# Redistribution and use is allowed according to the terms of the BSD license.
|
||||
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
|
||||
|
||||
if (TVMET_INCLUDE_DIR)
|
||||
|
||||
# in cache already
|
||||
set(TVMET_FOUND TRUE)
|
||||
|
||||
else ()
|
||||
|
||||
find_path(TVMET_INCLUDE_DIR NAMES tvmet/tvmet.h
|
||||
PATHS
|
||||
${TVMETDIR}/
|
||||
${INCLUDE_INSTALL_DIR}
|
||||
)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(Tvmet DEFAULT_MSG TVMET_INCLUDE_DIR)
|
||||
|
||||
mark_as_advanced(TVMET_INCLUDE_DIR)
|
||||
|
||||
endif()
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
# - MACRO_OPTIONAL_ADD_SUBDIRECTORY() combines add_subdirectory() with an option()
|
||||
# MACRO_OPTIONAL_ADD_SUBDIRECTORY( <dir> )
|
||||
# If you use MACRO_OPTIONAL_ADD_SUBDIRECTORY() instead of add_subdirectory(),
|
||||
# this will have two effects
|
||||
# 1 - CMake will not complain if the directory doesn't exist
|
||||
# This makes sense if you want to distribute just one of the subdirs
|
||||
# in a source package, e.g. just one of the subdirs in kdeextragear.
|
||||
# 2 - If the directory exists, it will offer an option to skip the
|
||||
# subdirectory.
|
||||
# This is useful if you want to compile only a subset of all
|
||||
# directories.
|
||||
|
||||
# Copyright (c) 2007, Alexander Neundorf, <neundorf@kde.org>
|
||||
#
|
||||
# Redistribution and use is allowed according to the terms of the BSD license.
|
||||
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
|
||||
|
||||
|
||||
macro (MACRO_OPTIONAL_ADD_SUBDIRECTORY _dir )
|
||||
get_filename_component(_fullPath ${_dir} ABSOLUTE)
|
||||
if(EXISTS ${_fullPath})
|
||||
if(${ARGC} EQUAL 2)
|
||||
option(BUILD_${_dir} "Build directory ${_dir}" ${ARGV1})
|
||||
else(${ARGC} EQUAL 2)
|
||||
option(BUILD_${_dir} "Build directory ${_dir}" TRUE)
|
||||
endif(${ARGC} EQUAL 2)
|
||||
if(BUILD_${_dir})
|
||||
add_subdirectory(${_dir})
|
||||
endif(BUILD_${_dir})
|
||||
endif(EXISTS ${_fullPath})
|
||||
endmacro (MACRO_OPTIONAL_ADD_SUBDIRECTORY)
|
||||
Reference in New Issue
Block a user