Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 19 additions & 3 deletions src_base/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,25 @@ file (GLOB LIB_NEON_INC "./neon/xeve_*.h" )
include(GenerateExportHeader)
include_directories("${CMAKE_BINARY_DIR}")

set(ARM "FALSE")
message("SYSTEM_PROCESSOR=${CMAKE_SYSTEM_PROCESSOR}")
if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "^(arm|aarch)")
set(ARM "TRUE")
elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "^(x86|ia64|i386|i686)")
set(X86 "TRUE")
endif()

if("${ARM}" STREQUAL "TRUE")
add_library( ${LIB_NAME_BASE} STATIC ${LIB_API_SRC} ${XEVE_INC} ${LIB_BASE_SRC} ${LIB_BASE_INC} ${LIB_NEON_INC} ${LIB_NEON_SRC})
add_library( ${LIB_NAME_BASE}_dynamic SHARED ${LIB_API_SRC} ${XEVE_INC} ${LIB_BASE_SRC} ${LIB_BASE_INC} ${LIB_NEON_INC} ${LIB_NEON_SRC})
else()
elseif(X86)
add_library( ${LIB_NAME_BASE} STATIC ${LIB_API_SRC} ${XEVE_INC} ${LIB_BASE_SRC} ${LIB_BASE_INC} ${LIB_SSE_SRC} ${LIB_SSE_INC}
${LIB_AVX_SRC} ${LIB_AVX_INC} )
add_library( ${LIB_NAME_BASE}_dynamic SHARED ${LIB_API_SRC} ${XEVE_INC} ${LIB_BASE_SRC} ${LIB_BASE_INC} ${LIB_SSE_SRC} ${LIB_SSE_INC}
${LIB_AVX_SRC} ${LIB_AVX_INC} )
else()
add_library( ${LIB_NAME_BASE} STATIC ${LIB_API_SRC} ${XEVE_INC} ${LIB_BASE_SRC} ${LIB_BASE_INC} )
add_library( ${LIB_NAME_BASE}_dynamic SHARED ${LIB_API_SRC} ${XEVE_INC} ${LIB_BASE_SRC} ${LIB_BASE_INC} )
endif()

set_target_properties(${LIB_NAME_BASE}_dynamic PROPERTIES VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR} SOVERSION ${LIB_SOVERSION})
Expand Down Expand Up @@ -59,8 +69,10 @@ source_group("base\\neon\\source" FILES ${LIB_NEON_SRC})

if("${ARM}" STREQUAL "TRUE")
include_directories( ${LIB_NAME_BASE} PUBLIC . .. ../inc ./neon)
else()
elseif(X86)
include_directories( ${LIB_NAME_BASE} PUBLIC . .. ../inc ./sse ./avx)
else()
include_directories( ${LIB_NAME_BASE} PUBLIC . .. ../inc)
endif()

set( SSE ${BASE_INC_FILES} ${LIB_SSE_SRC})
Expand All @@ -83,7 +95,11 @@ if( MSVC )
ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/import/lib)

elseif( UNIX OR MINGW )
if("${ARM}" STREQUAL "FALSE")
if(ARM)
add_definitions(-DARM=1)
set_property( SOURCE ${NEON} APPEND PROPERTY COMPILE_FLAGS "-flax-vector-conversions -Wno-cpp")
elseif(X86)
add_definitions(-DX86=1)
set_property( SOURCE ${SSE} APPEND PROPERTY COMPILE_FLAGS "-msse4.1" )
set_property( SOURCE ${AVX} APPEND PROPERTY COMPILE_FLAGS " -mavx2" )
endif()
Expand Down
4 changes: 2 additions & 2 deletions src_base/xeve_def.h
Original file line number Diff line number Diff line change
Expand Up @@ -1515,10 +1515,10 @@ enum TQC_RUN {
#include "xeve_ipred.h"
#include "xeve_picman.h"
#include "xeve_mc.h"
#ifndef ARM
#if defined(X86)
#include "xeve_mc_sse.h"
#include "xeve_mc_avx.h"
#else
#elif defined(ARM)
#include "xeve_mc_neon.h"
#endif
#include "xeve_type.h"
Expand Down
4 changes: 2 additions & 2 deletions src_base/xeve_port.h
Original file line number Diff line number Diff line change
Expand Up @@ -140,10 +140,10 @@ void xeve_trace_line(char * pre);
#define xeve_assert_gv(x,r,v,g) \
{if(!(x)){assert(x); (r)=(v); goto g;}}

#ifndef ARM
#if defined(X86)
#define X86_SSE 1
#define ARM_NEON 0
#else
#elif defined (ARM)
#define X86_SSE 0
#define ARM_NEON 1
#endif
Expand Down
8 changes: 4 additions & 4 deletions src_base/xeve_type.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,10 @@
#include "xeve_def.h"
#include "xeve_bsw.h"
#include "xeve_sad.h"
#ifndef ARM
#if defined(X86)
#include "xeve_sad_sse.h"
#include "xeve_sad_avx.h"
#else
#elif defined(ARM)
#include "xeve_sad_neon.h"
#endif

Expand Down Expand Up @@ -1018,11 +1018,11 @@ typedef struct _ALF_SLICE_PARAM ALF_SLICE_PARAM;
#include "xeve_tbl.h"
#include "xeve_itdq.h"

#ifndef ARM
#if defined(X86)
#include "xeve_itdq_sse.h"
#include "xeve_itdq_avx.h"
#include "xeve_tq_avx.h"
#else
#elif defined(ARM)
#include "xeve_itdq_neon.h"
#include "xeve_tq_neon.h"
#endif
Expand Down
32 changes: 26 additions & 6 deletions src_main/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -19,18 +19,31 @@ file (GLOB LIB_MAIN_SSE_SRC "./sse/xevem_*.c")
file (GLOB LIB_MAIN_SSE_INC "./sse/xevem_*.h" )
file (GLOB LIB_MAIN_AVX_SRC "./avx/xevem_*.c")
file (GLOB LIB_MAIN_AVX_INC "./avx/xevem_*.h" )
file (GLOB LIB_MAIN_NEON_SRC "./neon/xevem_*.c")
file (GLOB LIB_MAIN_NEON_INC "./neon/xevem_*.h" )

include(GenerateExportHeader)
include_directories("${CMAKE_BINARY_DIR}")

set(ARM "FALSE")
message("SYSTEM_PROCESSOR=${CMAKE_SYSTEM_PROCESSOR}")
if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "^(arm|aarch)")
set(ARM "TRUE")
elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "^(x86|ia64|i386|i686)")
set(X86 "TRUE")
endif()

if("${ARM}" STREQUAL "TRUE")
add_library( ${LIB_NAME} STATIC ${LIB_API_MAIN_SRC} ${ETM_INC} ${LIB_BASE_SRC} ${LIB_BASE_INC} ${LIB_MAIN_SRC} ${LIB_MAIN_INC} ${LIB_NEON_INC} ${LIB_NEON_SRC} )
add_library( ${LIB_NAME}_dynamic SHARED ${LIB_API_MAIN_SRC} ${ETM_INC} ${LIB_BASE_SRC} ${LIB_BASE_INC} ${LIB_MAIN_SRC} ${LIB_MAIN_INC} ${LIB_NEON_INC} ${LIB_NEON_SRC})
else()
add_library( ${LIB_NAME} STATIC ${LIB_API_MAIN_SRC} ${ETM_INC} ${LIB_BASE_SRC} ${LIB_BASE_INC} ${LIB_MAIN_SRC} ${LIB_MAIN_INC} ${LIB_NEON_SRC} ${LIB_NEON_INC} )
add_library( ${LIB_NAME}_dynamic SHARED ${LIB_API_MAIN_SRC} ${ETM_INC} ${LIB_BASE_SRC} ${LIB_BASE_INC} ${LIB_MAIN_SRC} ${LIB_MAIN_INC} ${LIB_NEON_SRC} ${LIB_NEON_INC})
elseif(X86)
add_library( ${LIB_NAME} STATIC ${LIB_API_MAIN_SRC} ${ETM_INC} ${LIB_BASE_SRC} ${LIB_BASE_INC} ${LIB_MAIN_SRC} ${LIB_MAIN_INC}
${LIB_SSE_SRC} ${LIB_SSE_INC} ${LIB_MAIN_SSE_SRC} ${LIB_MAIN_SSE_INC} ${LIB_AVX_SRC} ${LIB_AVX_INC} ${LIB_MAIN_AVX_SRC} ${LIB_MAIN_AVX_INC} )
add_library( ${LIB_NAME}_dynamic SHARED ${LIB_API_MAIN_SRC} ${ETM_INC} ${LIB_BASE_SRC} ${LIB_BASE_INC} ${LIB_MAIN_SRC} ${LIB_MAIN_INC}
${LIB_SSE_SRC} ${LIB_SSE_INC} ${LIB_MAIN_SSE_SRC} ${LIB_MAIN_SSE_INC} ${LIB_AVX_SRC} ${LIB_AVX_SRC} ${LIB_AVX_INC} ${LIB_MAIN_AVX_SRC} ${LIB_MAIN_AVX_INC})
${LIB_SSE_SRC} ${LIB_SSE_INC} ${LIB_MAIN_SSE_SRC} ${LIB_MAIN_SSE_INC} ${LIB_AVX_SRC} ${LIB_AVX_INC} ${LIB_MAIN_AVX_SRC} ${LIB_MAIN_AVX_INC})
else()
add_library( ${LIB_NAME} STATIC ${LIB_API_MAIN_SRC} ${ETM_INC} ${LIB_BASE_SRC} ${LIB_BASE_INC} ${LIB_MAIN_SRC} ${LIB_MAIN_INC} )
add_library( ${LIB_NAME}_dynamic SHARED ${LIB_API_MAIN_SRC} ${ETM_INC} ${LIB_BASE_SRC} ${LIB_BASE_INC} ${LIB_MAIN_SRC} ${LIB_MAIN_INC} )
endif()

set_target_properties(${LIB_NAME}_dynamic PROPERTIES VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR} SOVERSION ${LIB_SOVERSION})
Expand Down Expand Up @@ -71,12 +84,15 @@ source_group("base\\neon\\source" FILES ${LIB_NEON_SRC})

if("${ARM}" STREQUAL "TRUE")
include_directories( ${LIB_NAME} PUBLIC . .. ../inc ../src_base ../src_base/neon)
else()
elseif(X86)
include_directories( ${LIB_NAME} PUBLIC . .. ../inc ./sse ./avx ../src_base ../src_base/sse ../src_base/avx)
else()
include_directories( ${LIB_NAME} PUBLIC . .. ../inc ../src_base)
endif()

set( SSE ${BASE_INC_FILES} ${LIB_SSE_SRC} ${LIB_MAIN_SSE_SRC})
set( AVX ${LIB_AVX_SRC} ${LIB_MAIN_AVX_SRC})
set( NEON ${LIB_NEON_SRC})

set_target_properties(${LIB_NAME}_dynamic PROPERTIES OUTPUT_NAME ${LIB_NAME})

Expand All @@ -94,7 +110,11 @@ if( MSVC )
ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/import/lib)

elseif( UNIX OR MINGW )
if("${ARM}" STREQUAL "FALSE")
if(ARM)
add_definitions(-DARM=1)
set_property( SOURCE ${NEON} APPEND PROPERTY COMPILE_FLAGS "-flax-vector-conversions -Wno-cpp")
elseif(X86)
add_definitions(-DX86=1)
set_property( SOURCE ${SSE} APPEND PROPERTY COMPILE_FLAGS "-msse4.1" )
set_property( SOURCE ${AVX} APPEND PROPERTY COMPILE_FLAGS " -mavx2" )
endif()
Expand Down
Loading