Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --- src/CMakeLists.txt
- +++ src/CMakeLists.txt
- @@ -279,13 +279,6 @@ endif( FMOD_LIBRARY )
- # Search for NASM
- -if( CMAKE_SYSTEM_PROCESSOR MATCHES powerpc )
- - if( NOT NO_ASM )
- - message( STATUS "Disabling assembly code for PowerPC." )
- - set( NO_ASM ON )
- - endif( NOT NO_ASM )
- -endif( CMAKE_SYSTEM_PROCESSOR MATCHES powerpc )
- -
- if( NOT NO_ASM )
- if( UNIX AND X64 )
- find_program( GAS_PATH as )
- @@ -388,6 +381,41 @@ if( APPLE )
- endif( GLEW_INCLUDE_DIR )
- endif( APPLE )
- +# Decide on SSE setup
- +
- +set( SSE_MATTERS NO )
- +
- +# SSE only matters on 32-bit targets. We check compiler flags to know if we can do it.
- +if( CMAKE_SIZEOF_VOID_P MATCHES "4" AND NOT CMAKE_OSX_ARCHITECTURES MATCHES ppc )
- + CHECK_CXX_COMPILER_FLAG( "-msse2 -mfpmath=sse" CAN_DO_MFPMATH )
- + CHECK_CXX_COMPILER_FLAG( -arch:SSE2 CAN_DO_ARCHSSE2 )
- + if( CAN_DO_MFPMATH )
- + set( SSE1_ENABLE "-msse -mfpmath=sse" )
- + set( SSE2_ENABLE "-msse2 -mfpmath=sse" )
- + set( SSE_MATTERS YES )
- + elseif( CAN_DO_ARCHSSE2 )
- + set( SSE1_ENABLE -arch:SSE )
- + set( SSE2_ENABLE -arch:SSE2 )
- + set( SSE_MATTERS YES )
- + endif( CAN_DO_MFPMATH )
- +endif( CMAKE_SIZEOF_VOID_P MATCHES "4" AND NOT CMAKE_OSX_ARCHITECTURES MATCHES ppc )
- +
- +if( SSE_MATTERS )
- + if( WIN32 )
- + set( BACKPATCH 1 CACHE BOOL "Enable backpatching." )
- + else( WIN32 )
- + CHECK_FUNCTION_EXISTS(mprotect HAVE_MPROTECT)
- + if( HAVE_MPROTECT )
- + set( BACKPATCH 1 CACHE BOOL "Enable backpatching." )
- + else( HAVE_MPROTECT )
- + set( BACKPATCH 0 )
- + endif( HAVE_MPROTECT )
- + endif( WIN32 )
- + set( SSE 1 CACHE BOOL "Build SSE and SSE2 versions of key code." )
- +else( SSE_MATTERS )
- + set( BACKPATCH 0 )
- +endif( SSE_MATTERS )
- +
- # Set up flags for GCC
- if( CMAKE_COMPILER_IS_GNUCXX )
- @@ -583,13 +611,6 @@ add_custom_command( OUTPUT ${CMAKE_CURRE
- include_directories( ${CMAKE_CURRENT_BINARY_DIR} )
- -if( CMAKE_SYSTEM_PROCESSOR MATCHES powerpc )
- - set( X86_SOURCES )
- - set( NOT_X86 ON )
- -else( CMAKE_SYSTEM_PROCESSOR MATCHES powerpc )
- - set( X86_SOURCES nodebuild_classify_sse2.cpp )
- -endif( CMAKE_SYSTEM_PROCESSOR MATCHES powerpc )
- -
- # [BB] Only complile the gl sources, if we want GL support.
- if( NOT NO_GL )
- set( GL_SOURCES
- @@ -638,6 +659,17 @@ else( NOT NO_GL )
- set( GL_SOURCES sdl/glstubs.cpp )
- endif( NOT NO_GL )
- +if( SSE_MATTERS )
- + if( SSE )
- + set( X86_SOURCES nodebuild_classify_sse2.cpp )
- + set_source_files_properties( nodebuild_classify_sse2.cpp PROPERTIES COMPILE_FLAGS "${SSE2_ENABLE}" )
- + else( SSE )
- + add_definitions( -DDISABLE_SSE )
- + endif( SSE )
- +else( SSE_MATTERS )
- + add_definitions( -DDISABLE_SSE )
- + set( X86_SOURCES )
- +endif( SSE_MATTERS )
- add_executable( zdoom WIN32
- autostart.cpp
- @@ -1013,13 +1045,10 @@ if( CMAKE_COMPILER_IS_GNUCXX )
- # GCC misoptimizes this file
- set_source_files_properties( oplsynth/fmopl.cpp PROPERTIES COMPILE_FLAGS "-fno-tree-dominator-opts -fno-tree-fre" )
- - # Compile this one file with SSE2 support.
- - set_source_files_properties( nodebuild_classify_sse2.cpp PROPERTIES COMPILE_FLAGS "-msse2 -mfpmath=sse" )
- -
- # Need to enable intrinsics for this file.
- - if( NOT NOT_X86 )
- + if( SSE_MATTERS )
- set_source_files_properties( x86.cpp PROPERTIES COMPILE_FLAGS "-msse2 -mmmx" )
- - endif( NOT NOT_X86 )
- + endif( SSE_MATTERS )
- endif( CMAKE_COMPILER_IS_GNUCXX )
- if( MSVC )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement