added --optional-libs wx-config argument (patch 1747239)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@47287 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
92bf6cc15a
commit
bd63020652
75
configure.in
75
configure.in
@ -1490,7 +1490,7 @@ AC_PROG_RANLIB
|
||||
|
||||
dnl ar command
|
||||
dnl defines AR with the appropriate command
|
||||
dnl
|
||||
dnl
|
||||
dnl For Sun CC AC_BAKEFILE below sets AR to the compiler itself.
|
||||
if test "x$SUNCXX" != xyes; then
|
||||
AC_CHECK_TOOL(AR, ar)
|
||||
@ -5051,7 +5051,7 @@ fi
|
||||
dnl check for uname (POSIX) and gethostname (BSD)
|
||||
WX_CHECK_FUNCS(uname,,,[#include <sys/utsname.h>])
|
||||
if test "$wx_cv_func_uname" != yes; then
|
||||
WX_CHECK_FUNCS(gethostname)
|
||||
WX_CHECK_FUNCS(gethostname)
|
||||
fi
|
||||
|
||||
WX_CHECK_FUNCS(strtok_r, [], [], [#define _REENTRANT])
|
||||
@ -6433,7 +6433,7 @@ if test "$wxUSE_SOCKETS" = "yes" ; then
|
||||
wx_cv_type_getsockopt5,
|
||||
[
|
||||
dnl Note that the rules for compatibility of pointers
|
||||
dnl are somewhat different between C and C++, so code
|
||||
dnl are somewhat different between C and C++, so code
|
||||
dnl that fails in C++ may not even give a warning about
|
||||
dnl converting between incompatible pointer types in C.
|
||||
dnl So this test needs to be done in C++ mode.
|
||||
@ -7568,38 +7568,59 @@ dnl ---------------------------------------------------------------------------
|
||||
dnl define variables with all built libraries for wx-config
|
||||
dnl ---------------------------------------------------------------------------
|
||||
|
||||
CORE_BASE_LIBS="net base"
|
||||
CORE_GUI_LIBS="adv core"
|
||||
STD_BASE_LIBS="base"
|
||||
STD_GUI_LIBS=""
|
||||
BUILT_WX_LIBS="base"
|
||||
ALL_WX_LIBS="xrc stc gl media dbgrid qa html adv core odbc xml net base"
|
||||
|
||||
if test "$wxUSE_XML" = "yes" ; then
|
||||
CORE_BASE_LIBS="xml $CORE_BASE_LIBS"
|
||||
if test "$wxUSE_SOCKETS" = "yes" ; then
|
||||
STD_BASE_LIBS="net $STD_BASE_LIBS"
|
||||
BUILT_WX_LIBS="net $BUILT_WX_LIBS"
|
||||
fi
|
||||
if test "$wxUSE_ODBC" != "no" ; then
|
||||
CORE_BASE_LIBS="odbc $CORE_BASE_LIBS"
|
||||
CORE_GUI_LIBS="dbgrid $CORE_GUI_LIBS"
|
||||
BUILT_WX_LIBS="odbc $BUILT_WX_LIBS"
|
||||
fi
|
||||
if test "$wxUSE_HTML" = "yes" ; then
|
||||
CORE_GUI_LIBS="html $CORE_GUI_LIBS"
|
||||
fi
|
||||
if test "$wxUSE_DEBUGREPORT" = "yes" ; then
|
||||
CORE_GUI_LIBS="qa $CORE_GUI_LIBS"
|
||||
fi
|
||||
if test "$wxUSE_XRC" = "yes" ; then
|
||||
CORE_GUI_LIBS="xrc $CORE_GUI_LIBS"
|
||||
fi
|
||||
if test "$wxUSE_AUI" = "yes" ; then
|
||||
CORE_GUI_LIBS="aui $CORE_GUI_LIBS"
|
||||
fi
|
||||
if test "$wxUSE_STC" = "yes" ; then
|
||||
CORE_GUI_LIBS="stc $CORE_GUI_LIBS"
|
||||
if test "$wxUSE_XML" = "yes" ; then
|
||||
STD_BASE_LIBS="xml $STD_BASE_LIBS"
|
||||
BUILT_WX_LIBS="xml $BUILT_WX_LIBS"
|
||||
fi
|
||||
|
||||
if test "$wxUSE_GUI" != "yes"; then
|
||||
CORE_GUI_LIBS=""
|
||||
if test "$wxUSE_GUI" = "yes"; then
|
||||
STD_GUI_LIBS="adv core"
|
||||
|
||||
if test "$wxUSE_DEBUGREPORT" = "yes" ; then
|
||||
STD_GUI_LIBS="qa $STD_GUI_LIBS"
|
||||
BUILT_WX_LIBS="qa $BUILT_WX_LIBS"
|
||||
fi
|
||||
if test "$wxUSE_ODBC" != "no" ; then
|
||||
BUILT_WX_LIBS="dbgrid $BUILT_WX_LIBS"
|
||||
fi
|
||||
if test "$wxUSE_HTML" = "yes" ; then
|
||||
STD_GUI_LIBS="html $STD_GUI_LIBS"
|
||||
BUILT_WX_LIBS="html $BUILT_WX_LIBS"
|
||||
fi
|
||||
if test "$wxUSE_MEDIACTRL" = "yes" ; then
|
||||
BUILT_WX_LIBS="media $BUILT_WX_LIBS"
|
||||
fi
|
||||
if test "$wxUSE_OPENGL" = "yes" ; then
|
||||
BUILT_WX_LIBS="gl $BUILT_WX_LIBS"
|
||||
fi
|
||||
if test "$wxUSE_AUI" = "yes" ; then
|
||||
BUILT_WX_LIBS="aui $BUILT_WX_LIBS"
|
||||
fi
|
||||
if test "$wxUSE_STC" = "yes" ; then
|
||||
BUILT_WX_LIBS="stc $BUILT_WX_LIBS"
|
||||
fi
|
||||
if test "$wxUSE_XRC" = "yes" ; then
|
||||
STD_GUI_LIBS="xrc $STD_GUI_LIBS"
|
||||
BUILT_WX_LIBS="xrc $BUILT_WX_LIBS"
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_SUBST(CORE_BASE_LIBS)
|
||||
AC_SUBST(CORE_GUI_LIBS)
|
||||
AC_SUBST(ALL_WX_LIBS)
|
||||
AC_SUBST(BUILT_WX_LIBS)
|
||||
AC_SUBST(STD_BASE_LIBS)
|
||||
AC_SUBST(STD_GUI_LIBS)
|
||||
|
||||
dnl ---------------------------------------------------------------------------
|
||||
dnl Output the makefiles and such from the results found above
|
||||
|
@ -114,6 +114,10 @@ All:
|
||||
wxLogInterposerTemp was added
|
||||
- Added support for broadcasting to UDP sockets (Andrew Vincent)
|
||||
|
||||
All (Unix):
|
||||
|
||||
- Added wx-config --optional-libs command line option (John Labenski)
|
||||
|
||||
All (GUI):
|
||||
|
||||
- Added wxH[V]ScrolledWindow (Brad Anderson, Bryan Petty)
|
||||
|
@ -119,7 +119,7 @@ that are required by the sample.
|
||||
The Windows resource specification should use the central .rc file:
|
||||
|
||||
<win32-res>../sample.rc</win32-res>
|
||||
|
||||
|
||||
Run bakefile_gen in $(wx)/build/bakefiles to regenerate the bakefiles.
|
||||
|
||||
Finally commit $(wx)/build/bakefiles/make_dist.mk and all the other modified files.
|
||||
@ -149,7 +149,7 @@ a) Add files to files.bkl:
|
||||
Finally, define FOO_SRC and FOO_HDR to contain both
|
||||
FOO_PLATFORM_{SRC,HDR} and FOO_{SRC,HDR} (see NET_SRC definition for an
|
||||
example).
|
||||
* Add FOO_HDR to ALL_GUI_HEADERS or ALL_BASE_HEADERS.
|
||||
* Add FOO_HDR to ALL_GUI_HEADERS or ALL_BASE_HEADERS.
|
||||
* If wxFoo is wxBase library (doesn't use GUI), add FOO_SRC to
|
||||
ALL_BASE_SOURCES.
|
||||
|
||||
@ -181,8 +181,8 @@ e) Regenerate all makefiles (don't forget to run autoconf)
|
||||
|
||||
f) Update configure.in and wx-config.in to contain information about
|
||||
the library and needed linker flags:
|
||||
* Add "foo" to either CORE_BASE_LIBS or CORE_GUI_LIBS in configure.in so
|
||||
that wxFoo is not treated as contrib library in monolithic build.
|
||||
* Add "foo" to either STD_BASE_LIBS or STD_GUI_LIBS in configure.in if
|
||||
wxFoo is not to be treated as contrib library in monolithic build.
|
||||
* If wxFoo links against additional libraries, add necessary linker
|
||||
flags and libraries to ldflags_foo and ldlibs_foo variables in
|
||||
wx-config.in (both are optional).
|
||||
|
160
wx-config.in
160
wx-config.in
@ -45,10 +45,11 @@ usage()
|
||||
|
||||
wx-config [--prefix[=DIR]] [--exec-prefix[=DIR]] [--release] [--version-full]
|
||||
[--list] [--selected-config] [--host=HOST] [--toolkit=TOOLKIT]
|
||||
[--universal[=yes|no]] [--unicode[=yes|no]] [--debug[=yes|no]]
|
||||
[--static[=yes|no]] [--version[=VERSION]] [--basename] [--cc]
|
||||
[--cppflags] [--cflags] [--cxxflags] [--rescomp] [--libs] [--cxx]
|
||||
[--ld] [--linkdeps] [--utility=UTIL] [LIB ...]
|
||||
[--universal[=yes|no]] [--unicode[=yes|no]] [--debug[=yes|no]]
|
||||
[--static[=yes|no]] [--version[=VERSION]] [--basename] [--cc]
|
||||
[--cppflags] [--cflags] [--cxxflags] [--rescomp] [--cxx]
|
||||
[--linkdeps] [--ld] [--utility=UTIL]
|
||||
[--libs [LIBS...]] [--optional-libs [LIBS...]]
|
||||
|
||||
wx-config returns information about the wxWidgets libraries available on
|
||||
your system. It may be used to retrieve the information required to build
|
||||
@ -63,10 +64,15 @@ usage()
|
||||
of UTIL to use with the selected build. The --linkdeps option returns only
|
||||
static libraries for your makefile link rule dependencies.
|
||||
|
||||
Optional LIB arguments (comma or space separated) may be used to specify
|
||||
the wxWidgets libraries that you wish to use. The magic "std" label may
|
||||
be used to import all libraries that would be used by default if none were
|
||||
specified explicitly, e.g. wx-config --libs core,base.
|
||||
The LIBS arguments (comma or space separated) may be used to specify the
|
||||
wxWidgets libraries that you wish to use. The "std" label may be used to
|
||||
import all libraries that would be used by default if none were specified
|
||||
explicitly, e.g. wx-config --libs core,base. The "all" label may be used
|
||||
to import all libraries that have been compiled which are shown in the
|
||||
list below. The --optional-libs parameter should be followed by a list
|
||||
of libs that should be linked to, but only if they are available.
|
||||
|
||||
Available libraries in this build are : @BUILT_WX_LIBS@
|
||||
|
||||
EOF
|
||||
|
||||
@ -117,6 +123,7 @@ wxconfig_output_options="prefix exec_prefix
|
||||
rescomp
|
||||
rezflags
|
||||
libs
|
||||
optional_libs
|
||||
linkdeps
|
||||
cc cxx ld
|
||||
gl_libs"
|
||||
@ -268,8 +275,17 @@ for arg do
|
||||
;;
|
||||
|
||||
*)
|
||||
# FIXME Surely we can validate the parameters too ...
|
||||
input_parameters="${input_parameters:+$input_parameters }$arg"
|
||||
# We validate the parameters later ...
|
||||
if [ "$_name" = "libs" ]
|
||||
then
|
||||
libs_parameters="${libs_parameters:+$libs_parameters }$arg"
|
||||
elif [ "$_name" = "optional_libs" ]
|
||||
then
|
||||
optional_libs_parameters="${optional_libs_parameters:+$optional_libs_parameters }$arg"
|
||||
else
|
||||
# These are unattached args and signify an error
|
||||
input_parameters="${input_parameters:+$input_parameters }$arg"
|
||||
fi
|
||||
continue
|
||||
;;
|
||||
esac
|
||||
@ -286,12 +302,19 @@ check_yesno_option unicode chartype unicode ansi
|
||||
check_yesno_option debug debugtype debug release
|
||||
check_yesno_option static linkage '-static'
|
||||
|
||||
# Display error for unknown input parameters
|
||||
if [ $input_parameters ]; then
|
||||
echo "Extra unknown input parameters : $input_parameters"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Dump everything we just read in debug mode.
|
||||
if [ -n "$WXDEBUG" ]; then
|
||||
|
||||
decho
|
||||
decho " input parameters = $input_parameters"
|
||||
decho " input parameters = $input_parameters"
|
||||
decho " libs parameters = $libs_parameters"
|
||||
decho " optional-libs parameters = $optional_libs_parameters"
|
||||
decho " input options = $input_options"
|
||||
for i in $input_options; do
|
||||
decho " $i = `eval echo \"\\\$input_option_$i\"`"
|
||||
@ -510,7 +533,7 @@ do_find_best_delegate()
|
||||
for d in `find_eligible_delegates "$_mask"`; do
|
||||
decho " ${_fbd_indent} $d"
|
||||
done
|
||||
fi
|
||||
fi
|
||||
|
||||
count_delegates "$_mask"
|
||||
_still_eligible=$?
|
||||
@ -664,16 +687,16 @@ if [ -n "$output_option_list" ]; then
|
||||
echo " Specification matches legacy config: $_last_chance"
|
||||
|
||||
else
|
||||
|
||||
|
||||
cat <<-EOF
|
||||
No config found to match: $config_spec
|
||||
in $wxconfdir
|
||||
No config found to match: $config_spec
|
||||
in $wxconfdir
|
||||
|
||||
Please install the desired library build, or specify a different
|
||||
prefix where it may be found. If the library is not installed
|
||||
you may call its wx-config directly by specifying its full path.
|
||||
Please install the desired library build, or specify a different
|
||||
prefix where it may be found. If the library is not installed
|
||||
you may call its wx-config directly by specifying its full path.
|
||||
|
||||
EOF
|
||||
EOF
|
||||
|
||||
fi
|
||||
|
||||
@ -763,7 +786,7 @@ if not user_mask_fits "$this_config" ; then
|
||||
--rezflags|--inplace)
|
||||
_legacy_args="$_legacy_args $arg"
|
||||
;;
|
||||
|
||||
|
||||
--static|--static=y*|--static=Y*)
|
||||
_legacy_args="$_legacy_args --static"
|
||||
;;
|
||||
@ -783,15 +806,15 @@ if not user_mask_fits "$this_config" ; then
|
||||
|
||||
cat 1>&2 <<-EOF
|
||||
|
||||
Warning: No config found to match: $config_spec
|
||||
in $wxconfdir
|
||||
If you require this configuration, please install the desired
|
||||
library build. If this is part of an automated configuration
|
||||
test and no other errors occur, you may safely ignore it.
|
||||
You may use wx-config --list to see all configs available in
|
||||
the default prefix.
|
||||
Warning: No config found to match: $config_spec
|
||||
in $wxconfdir
|
||||
If you require this configuration, please install the desired
|
||||
library build. If this is part of an automated configuration
|
||||
test and no other errors occur, you may safely ignore it.
|
||||
You may use wx-config --list to see all configs available in
|
||||
the default prefix.
|
||||
|
||||
EOF
|
||||
EOF
|
||||
|
||||
# PIPEDREAM: from here we are actually just a teensy step
|
||||
# from simply building the missing config for the user
|
||||
@ -808,7 +831,7 @@ if not user_mask_fits "$this_config" ; then
|
||||
best_delegate=`find_best_delegate`
|
||||
|
||||
if [ -n "$best_delegate" ]; then
|
||||
|
||||
|
||||
if [ -n "$WXDEBUG" ]; then
|
||||
decho " found a suitable delegate: $best_delegate"
|
||||
decho "--> $wxconfdir/$best_delegate $*"
|
||||
@ -878,7 +901,7 @@ if [ -n "$output_option_rezflags" ]; then
|
||||
echo "@true"
|
||||
decho "Warning: --rezflags, along with Mac OS classic resource building" \
|
||||
"is deprecated. You should remove this from your Makefile and" \
|
||||
"build .app bundles instead."
|
||||
"build .app bundles instead."
|
||||
fi
|
||||
|
||||
|
||||
@ -988,7 +1011,7 @@ lib_flags_for()
|
||||
match_field "$f" $_all_ldflags || _all_ldflags="$_all_ldflags $f"
|
||||
done
|
||||
|
||||
if match_field "$lib" @CORE_BASE_LIBS@ ; then
|
||||
if match_field "$lib" @STD_BASE_LIBS@ ; then
|
||||
_libname="@WX_LIBRARY_BASENAME_NOGUI@"
|
||||
else
|
||||
_libname="@WX_LIBRARY_BASENAME_GUI@"
|
||||
@ -1047,7 +1070,7 @@ link_deps_for()
|
||||
is_cross && _target="-${target}"
|
||||
|
||||
for lib do
|
||||
if match_field "$lib" @CORE_BASE_LIBS@ ; then
|
||||
if match_field "$lib" @STD_BASE_LIBS@ ; then
|
||||
_libname="@WX_LIBRARY_BASENAME_NOGUI@"
|
||||
else
|
||||
_libname="@WX_LIBRARY_BASENAME_GUI@"
|
||||
@ -1064,53 +1087,70 @@ link_deps_for()
|
||||
# Sanity check the list of libs the user provided us, if any.
|
||||
# --------------------------------------------------------------
|
||||
|
||||
wx_libs=`echo "$input_parameters" | tr ',' ' '`
|
||||
wx_libs=`echo "$libs_parameters" | tr ',' ' '`
|
||||
wx_optional_libs=`echo "$optional_libs_parameters" | tr ',' ' '`
|
||||
|
||||
# Add the --optional-libs, if they've been compiled and aren't already added
|
||||
for i in $wx_optional_libs; do
|
||||
if match_field $i @BUILT_WX_LIBS@; then
|
||||
if not match_field $i $wx_libs; then
|
||||
wx_libs="${wx_libs:+$wx_libs }$i"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
[ -z "$WXDEBUG" ] || decho " user supplied libs: '$wx_libs'"
|
||||
|
||||
if is_monolithic; then
|
||||
|
||||
# Core libs are already built into the blob.
|
||||
for i in std @CORE_GUI_LIBS@ @CORE_BASE_LIBS@; do
|
||||
wx_libs=`remove_field $i $wx_libs`
|
||||
done
|
||||
# Only add additional info if --libs was specified and not just --optional-libs
|
||||
if [ -n "$output_option_libs" ]; then
|
||||
# Core libs are already built into the blob.
|
||||
for i in std @STD_GUI_LIBS@ @STD_BASE_LIBS@; do
|
||||
wx_libs=`remove_field $i $wx_libs`
|
||||
done
|
||||
|
||||
wx_libs="@WXCONFIG_LDFLAGS_GUI@ `lib_flags_for $wx_libs`"
|
||||
wx_libs="@WXCONFIG_LDFLAGS_GUI@ `lib_flags_for $wx_libs`"
|
||||
|
||||
# We still need the core lib deps for a static build though
|
||||
if is_static; then
|
||||
link_deps="${libdir}/libwx_@TOOLCHAIN_NAME@.a"
|
||||
wx_libs="$wx_libs $link_deps $ldlibs_core $ldlibs_base"
|
||||
else
|
||||
wx_libs="$wx_libs -lwx_@TOOLCHAIN_NAME@"
|
||||
# We still need the core lib deps for a static build though
|
||||
if is_static; then
|
||||
link_deps="${libdir}/libwx_@TOOLCHAIN_NAME@.a"
|
||||
wx_libs="$wx_libs $link_deps $ldlibs_core $ldlibs_base"
|
||||
else
|
||||
wx_libs="$wx_libs -lwx_@TOOLCHAIN_NAME@"
|
||||
fi
|
||||
|
||||
using_gui=yes
|
||||
fi
|
||||
|
||||
using_gui=yes
|
||||
|
||||
else # MONOLITHIC = 0
|
||||
|
||||
# Import everything by default, expand std if specified, or add base if omitted.
|
||||
if [ -z "$wx_libs" ]; then
|
||||
wx_libs="@CORE_GUI_LIBS@ @CORE_BASE_LIBS@"
|
||||
# Import core libs by default, expand std if specified, or add base if omitted.
|
||||
if [ -n "$output_option_libs" ] && [ -z "$libs_parameters" ]; then
|
||||
wx_libs="@STD_GUI_LIBS@ @STD_BASE_LIBS@"
|
||||
elif match_field all $wx_libs; then
|
||||
wx_libs="@BUILT_WX_LIBS@"
|
||||
elif match_field std $wx_libs; then
|
||||
# Bubble any libs that were already specified to the end
|
||||
# of the list and ensure static linking order is retained.
|
||||
wx_libs=`remove_field std $wx_libs`
|
||||
for i in @CORE_GUI_LIBS@ @CORE_BASE_LIBS@; do
|
||||
for i in @STD_GUI_LIBS@ @STD_BASE_LIBS@; do
|
||||
wx_libs="`remove_field $i $wx_libs` $i"
|
||||
done
|
||||
elif not match_field base $wx_libs ; then
|
||||
wx_libs="$wx_libs base"
|
||||
# Only add base if --libs was specified and not just --optional-libs
|
||||
if [ -n "$output_option_libs" ]; then
|
||||
wx_libs="$wx_libs base"
|
||||
fi
|
||||
fi
|
||||
|
||||
using_gui=no
|
||||
for i in $wx_libs ; do
|
||||
if match_field "$i" @CORE_GUI_LIBS@ ; then
|
||||
if match_field "$i" @STD_GUI_LIBS@ ; then
|
||||
_guildflags="@WXCONFIG_LDFLAGS_GUI@"
|
||||
using_gui=yes
|
||||
break
|
||||
fi
|
||||
match_field "$i" @CORE_BASE_LIBS@ || using_gui=yes
|
||||
match_field "$i" @STD_BASE_LIBS@ || using_gui=yes
|
||||
done
|
||||
|
||||
if is_static; then
|
||||
@ -1149,6 +1189,7 @@ _cppflags=`echo "-I${libdir}/wx/include/@TOOLCHAIN_FULLNAME@" $_include_cppflags
|
||||
[ -z "$output_option_linkdeps" ] || echo $link_deps
|
||||
|
||||
if [ -n "$output_option_libs" ]; then
|
||||
# if --libs [--optional-libs] then output the full linker information
|
||||
|
||||
is_cross &&
|
||||
[ "x$libdir" = "x/usr/${target}/lib" ] ||
|
||||
@ -1158,6 +1199,11 @@ if [ -n "$output_option_libs" ]; then
|
||||
is_installed || [ -n "$flag_option_no_rpath" ] || _rpath="@WXCONFIG_RPATH@"
|
||||
|
||||
echo $_ldflags "@LDFLAGS@" $_rpath $wx_libs "@DMALLOC_LIBS@"
|
||||
|
||||
elif [ -n "$output_option_optional_libs" ]; then
|
||||
# if only --optional-libs then output just the libs
|
||||
|
||||
echo $wx_libs
|
||||
fi
|
||||
|
||||
|
||||
@ -1199,8 +1245,8 @@ if [ -n "$output_option_rescomp" ]; then
|
||||
case "@RESCOMP@" in
|
||||
*windres|wrc)
|
||||
# Note that with late model windres, we could just insert
|
||||
# _include_cppflags here, but use the old notation for now
|
||||
# as it is more universally accepted.
|
||||
# _include_cppflags here, but use the old notation for now
|
||||
# as it is more universally accepted.
|
||||
if is_installed; then
|
||||
echo "@RESCOMP@ --include-dir" \
|
||||
"${includedir}/wx-@WX_RELEASE@@WX_FLAVOUR@" \
|
||||
@ -1208,7 +1254,7 @@ if [ -n "$output_option_rescomp" ]; then
|
||||
else
|
||||
echo "@RESCOMP@ --include-dir ${includedir}" \
|
||||
"--include-dir ${prefix}/contrib/include" \
|
||||
"@WXCONFIG_RESFLAGS@"
|
||||
"@WXCONFIG_RESFLAGS@"
|
||||
fi
|
||||
;;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user