| Index: simd/CMakeLists.txt
|
| diff --git a/simd/CMakeLists.txt b/simd/CMakeLists.txt
|
| new file mode 100755
|
| index 0000000000000000000000000000000000000000..37938ecc714fb6defa6408f17303cea59b684604
|
| --- /dev/null
|
| +++ b/simd/CMakeLists.txt
|
| @@ -0,0 +1,80 @@
|
| +if(NOT DEFINED NASM)
|
| + set(NASM nasm CACHE FILEPATH "Path to NASM/YASM executable")
|
| +endif()
|
| +
|
| +if(SIMD_X86_64)
|
| + set(NAFLAGS -fwin64 -DWIN64 -D__x86_64__)
|
| +else()
|
| + if(BORLAND)
|
| + set(NAFLAGS -fobj -DOBJ32)
|
| + else()
|
| + set(NAFLAGS -fwin32 -DWIN32)
|
| + endif()
|
| +endif()
|
| +set(NAFLAGS ${NAFLAGS} -I${CMAKE_SOURCE_DIR}/win/ -I${CMAKE_CURRENT_SOURCE_DIR}/)
|
| +
|
| +# This only works if building from the command line. There is currently no way
|
| +# to set a variable's value based on the build type when using the MSVC IDE.
|
| +if(CMAKE_BUILD_TYPE STREQUAL "Debug"
|
| + OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
|
| + set(NAFLAGS ${NAFLAGS} -g)
|
| +endif()
|
| +
|
| +if(SIMD_X86_64)
|
| + set(SIMD_BASENAMES jfdctflt-sse-64 jccolor-sse2-64 jcgray-sse2-64
|
| + jchuff-sse2-64 jcsample-sse2-64 jdcolor-sse2-64 jdmerge-sse2-64
|
| + jdsample-sse2-64 jfdctfst-sse2-64 jfdctint-sse2-64 jidctflt-sse2-64
|
| + jidctfst-sse2-64 jidctint-sse2-64 jidctred-sse2-64 jquantf-sse2-64
|
| + jquanti-sse2-64)
|
| + message(STATUS "Building x86_64 SIMD extensions")
|
| +else()
|
| + set(SIMD_BASENAMES jsimdcpu jfdctflt-3dn jidctflt-3dn jquant-3dn jccolor-mmx
|
| + jcgray-mmx jcsample-mmx jdcolor-mmx jdmerge-mmx jdsample-mmx jfdctfst-mmx
|
| + jfdctint-mmx jidctfst-mmx jidctint-mmx jidctred-mmx jquant-mmx jfdctflt-sse
|
| + jidctflt-sse jquant-sse jccolor-sse2 jcgray-sse2 jchuff-sse2 jcsample-sse2
|
| + jdcolor-sse2 jdmerge-sse2 jdsample-sse2 jfdctfst-sse2 jfdctint-sse2
|
| + jidctflt-sse2 jidctfst-sse2 jidctint-sse2 jidctred-sse2 jquantf-sse2
|
| + jquanti-sse2)
|
| + message(STATUS "Building i386 SIMD extensions")
|
| +endif()
|
| +
|
| +if(MSVC_IDE)
|
| + set(OBJDIR "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}")
|
| +else()
|
| + set(OBJDIR ${CMAKE_CURRENT_BINARY_DIR})
|
| +endif()
|
| +
|
| +file(GLOB INC_FILES *.inc)
|
| +
|
| +foreach(file ${SIMD_BASENAMES})
|
| + set(DEPFILE "")
|
| + set(SIMD_SRC ${CMAKE_CURRENT_SOURCE_DIR}/${file}.asm)
|
| + if(${file} MATCHES jccolor)
|
| + set(DEPFILE ${file})
|
| + string(REGEX REPLACE "jccolor" "jccolext" DEPFILE ${DEPFILE})
|
| + set(DEPFILE ${CMAKE_CURRENT_SOURCE_DIR}/${DEPFILE}.asm)
|
| + endif()
|
| + if(${file} MATCHES jcgray)
|
| + set(DEPFILE ${file})
|
| + string(REGEX REPLACE "jcgray" "jcgryext" DEPFILE ${DEPFILE})
|
| + set(DEPFILE ${CMAKE_CURRENT_SOURCE_DIR}/${DEPFILE}.asm)
|
| + endif()
|
| + if(${file} MATCHES jdcolor)
|
| + set(DEPFILE ${file})
|
| + string(REGEX REPLACE "jdcolor" "jdcolext" DEPFILE ${DEPFILE})
|
| + set(DEPFILE ${CMAKE_CURRENT_SOURCE_DIR}/${DEPFILE}.asm)
|
| + endif()
|
| + if(${file} MATCHES jdmerge)
|
| + set(DEPFILE ${file})
|
| + string(REGEX REPLACE "jdmerge" "jdmrgext" DEPFILE ${DEPFILE})
|
| + set(DEPFILE ${CMAKE_CURRENT_SOURCE_DIR}/${DEPFILE}.asm)
|
| + endif()
|
| + set(SIMD_OBJ ${OBJDIR}/${file}.obj)
|
| + add_custom_command(OUTPUT ${SIMD_OBJ}
|
| + DEPENDS ${SIMD_SRC} ${DEPFILE} ${INC_FILES}
|
| + COMMAND ${NASM} ${NAFLAGS} ${SIMD_SRC} -o${SIMD_OBJ})
|
| + set(SIMD_OBJS ${SIMD_OBJS} ${SIMD_OBJ})
|
| +endforeach()
|
| +
|
| +set(SIMD_OBJS ${SIMD_OBJS} PARENT_SCOPE)
|
| +add_custom_target(simd DEPENDS ${SIMD_OBJS})
|
|
|