- bugfixes to build on debians multi-platform build system
This commit is contained in:
parent
2224d75d10
commit
496b847999
|
@ -0,0 +1,145 @@
|
|||
# special macros SpecialMacros.cmake
|
||||
|
||||
include(CheckFunctionExists)
|
||||
include(AddFileDependencies)
|
||||
|
||||
macro(special_add_library lib)
|
||||
if (WIN32)
|
||||
add_library(${lib} STATIC ${ARGN})
|
||||
else (WIN32)
|
||||
add_library(${lib} SHARED ${ARGN})
|
||||
endif (WIN32)
|
||||
endmacro(special_add_library)
|
||||
|
||||
macro(special_check_for_sse _max_sse_level_desired)
|
||||
set(${_max_sse_level_desired})
|
||||
|
||||
message(STATUS "Max SSE desired: [${_max_sse_level_desired}]")
|
||||
|
||||
# check for SSE extensions
|
||||
include(CheckCXXSourceRuns)
|
||||
if( CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX )
|
||||
set(SSE_FLAGS)
|
||||
|
||||
set(CMAKE_REQUIRED_FLAGS "-msse3")
|
||||
check_cxx_source_runs("
|
||||
#include <pmmintrin.h>
|
||||
|
||||
int main()
|
||||
{
|
||||
__m128d a, b;
|
||||
double vals[2] = {0};
|
||||
a = _mm_loadu_pd(vals);
|
||||
b = _mm_hadd_pd(a,a);
|
||||
_mm_storeu_pd(vals, b);
|
||||
return 0;
|
||||
}"
|
||||
HAS_SSE3_EXTENSIONS)
|
||||
|
||||
set(CMAKE_REQUIRED_FLAGS "-msse2")
|
||||
check_cxx_source_runs("
|
||||
#include <emmintrin.h>
|
||||
|
||||
int main()
|
||||
{
|
||||
__m128d a, b;
|
||||
double vals[2] = {0};
|
||||
a = _mm_loadu_pd(vals);
|
||||
b = _mm_add_pd(a,a);
|
||||
_mm_storeu_pd(vals,b);
|
||||
return 0;
|
||||
}"
|
||||
HAS_SSE2_EXTENSIONS)
|
||||
|
||||
set(CMAKE_REQUIRED_FLAGS "-msse")
|
||||
check_cxx_source_runs("
|
||||
#include <xmmintrin.h>
|
||||
int main()
|
||||
{
|
||||
__m128 a, b;
|
||||
float vals[4] = {0};
|
||||
a = _mm_loadu_ps(vals);
|
||||
b = a;
|
||||
b = _mm_add_ps(a,b);
|
||||
_mm_storeu_ps(vals,b);
|
||||
return 0;
|
||||
}"
|
||||
HAS_SSE_EXTENSIONS)
|
||||
|
||||
set(CMAKE_REQUIRED_FLAGS)
|
||||
|
||||
if(HAS_SSE3_EXTENSIONS AND (NOT ${_max_sse_level_desired} OR ${_max_sse_level_desired} MATCHES "3"))
|
||||
set(SSE_FLAGS "-msse3 -mfpmath=sse")
|
||||
message(STATUS "Found SSE3 extensions, using flags: ${SSE_FLAGS}")
|
||||
elseif(HAS_SSE2_EXTENSIONS AND (NOT ${_max_sse_level_desired} OR ${_max_sse_level_desired} MATCHES "2"))
|
||||
set(SSE_FLAGS "-msse2 -mfpmath=sse")
|
||||
message(STATUS "Found SSE2 extensions, using flags: ${SSE_FLAGS}")
|
||||
elseif(HAS_SSE_EXTENSIONS AND (NOT ${_max_sse_level_desired} OR ${_max_sse_level_desired} MATCHES "1"))
|
||||
set(SSE_FLAGS "-msse -mfpmath=sse")
|
||||
message(STATUS "Found SSE extensions, using flags: ${SSE_FLAGS}")
|
||||
endif()
|
||||
elseif(MSVC)
|
||||
check_cxx_source_runs("
|
||||
#include <emmintrin.h>
|
||||
|
||||
int main()
|
||||
{
|
||||
__m128d a, b;
|
||||
double vals[2] = {0};
|
||||
a = _mm_loadu_pd(vals);
|
||||
b = _mm_add_pd(a,a);
|
||||
_mm_storeu_pd(vals,b);
|
||||
return 0;
|
||||
}"
|
||||
HAS_SSE2_EXTENSIONS)
|
||||
if( HAS_SSE2_EXTENSIONS AND (NOT ${_max_sse_level_desired} OR ${_max_sse_level_desired} MATCHES "2"))
|
||||
message(STATUS "Found SSE2 extensions")
|
||||
set(SSE_FLAGS "/arch:SSE2 /fp:fast -D__SSE__ -D__SSE2__" )
|
||||
endif()
|
||||
endif()
|
||||
endmacro(special_check_for_sse)
|
||||
|
||||
macro(special_add_compile_flags target)
|
||||
set(args ${ARGN})
|
||||
separate_arguments(args)
|
||||
get_target_property(_flags ${target} COMPILE_FLAGS)
|
||||
if(NOT _flags)
|
||||
set(_flags ${ARGN})
|
||||
else(NOT _flags)
|
||||
separate_arguments(_flags)
|
||||
list(APPEND _flags "${args}")
|
||||
endif(NOT _flags)
|
||||
|
||||
_special_list_to_string(_flags_str "${_flags}")
|
||||
set_target_properties(${target} PROPERTIES
|
||||
COMPILE_FLAGS "${_flags_str}")
|
||||
endmacro(special_add_compile_flags)
|
||||
|
||||
macro(special_add_link_flags target)
|
||||
set(args ${ARGN})
|
||||
separate_arguments(args)
|
||||
get_target_property(_flags ${target} LINK_FLAGS)
|
||||
if(NOT _flags)
|
||||
set(_flags ${ARGN})
|
||||
else(NOT _flags)
|
||||
separate_arguments(_flags)
|
||||
list(APPEND _flags "${args}")
|
||||
endif(NOT _flags)
|
||||
|
||||
_special_list_to_string(_flags_str "${_flags}")
|
||||
set_target_properties(${target} PROPERTIES
|
||||
LINK_FLAGS "${_flags_str}")
|
||||
endmacro(special_add_link_flags)
|
||||
|
||||
macro(_special_list_to_string _string _list)
|
||||
set(${_string})
|
||||
foreach(_item ${_list})
|
||||
string(LENGTH "${${_string}}" _len)
|
||||
if(${_len} GREATER 0)
|
||||
set(${_string} "${${_string}} ${_item}")
|
||||
else(${_len} GREATER 0)
|
||||
set(${_string} "${_item}")
|
||||
endif(${_len} GREATER 0)
|
||||
endforeach(_item)
|
||||
endmacro(_special_list_to_string)
|
||||
|
|
@ -17,12 +17,6 @@ IF(BUILD_MEGAGLEST_MAP_EDITOR)
|
|||
|
||||
IF(NOT WIN32)
|
||||
# It was noticed that when using MinGW gcc it is essential that 'core' is mentioned before 'base'.
|
||||
|
||||
IF(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
|
||||
SET(wxWidgets_CONFIG_OPTIONS --prefix=/usr/local)
|
||||
MESSAGE(STATUS "Detected FreeBSD.....")
|
||||
ENDIF()
|
||||
|
||||
FIND_PACKAGE(wxWidgets COMPONENTS core base gl REQUIRED)
|
||||
|
||||
# wxWidgets include (this will do all the magic to configure everything)
|
||||
|
|
|
@ -313,7 +313,7 @@ string Ip::getString() const{
|
|||
// class Socket
|
||||
// ===============================================
|
||||
|
||||
#if defined(__FreeBSD__) || defined(BSD) || defined(__APPLE__) || defined(__linux__)
|
||||
#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(BSD) || defined(__APPLE__) || defined(__linux__)
|
||||
# define USE_GETIFADDRS 1
|
||||
# include <ifaddrs.h>
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue