aboutsummaryrefslogtreecommitdiff
path: root/simd
diff options
context:
space:
mode:
authordcommander <dcommander@632fc199-4ca6-4c93-a231-07263d6284db>2010-10-15 03:43:24 +0000
committerdcommander <dcommander@632fc199-4ca6-4c93-a231-07263d6284db>2010-10-15 03:43:24 +0000
commita6da4e3e339c6b821c6cc1417cd1c49aed2f4690 (patch)
tree8bd3250929418d2716c270fd00c7606af57b4f0f /simd
parentc15b9df2c468e5810495e1a70932937109c3a9aa (diff)
First pass at a CMake build system
git-svn-id: svn://svn.code.sf.net/p/libjpeg-turbo/code/trunk@257 632fc199-4ca6-4c93-a231-07263d6284db
Diffstat (limited to 'simd')
-rwxr-xr-xsimd/CMakeLists.txt49
1 files changed, 49 insertions, 0 deletions
diff --git a/simd/CMakeLists.txt b/simd/CMakeLists.txt
new file mode 100755
index 0000000..5b47d8f
--- /dev/null
+++ b/simd/CMakeLists.txt
@@ -0,0 +1,49 @@
+if(SIMD_X86_64)
+ set(NAFLAGS -fwin64 -DWIN64 -D__x86_64__ -I${CMAKE_SOURCE_DIR}/win/
+ -I${CMAKE_CURRENT_SOURCE_DIR}/)
+else()
+ set(NAFLAGS -fwin32 -DWIN32 -I${CMAKE_SOURCE_DIR}/win/
+ -I${CMAKE_CURRENT_SOURCE_DIR}/)
+endif()
+
+if(MSVC)
+ set(NAFLAGS ${NAFLAGS} -DMSVC)
+endif()
+
+# 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 jfsseflt-64 jccolss2-64 jdcolss2-64 jcsamss2-64
+ jdsamss2-64 jdmerss2-64 jcqnts2i-64 jfss2fst-64 jfss2int-64 jiss2red-64
+ jiss2int-64 jiss2fst-64 jcqnts2f-64 jiss2flt-64)
+ message(STATUS "Building x86_64 SIMD extensions")
+else()
+ set(SIMD_BASENAMES jsimdcpu jccolmmx jdcolmmx jcsammmx jdsammmx jdmermmx
+ jcqntmmx jfmmxfst jfmmxint jimmxred jimmxint jimmxfst jcqnt3dn jf3dnflt
+ ji3dnflt jcqntsse jfsseflt jisseflt jccolss2 jdcolss2 jcsamss2 jdsamss2
+ jdmerss2 jcqnts2i jfss2fst jfss2int jiss2red jiss2int jiss2fst jcqnts2f
+ jiss2flt)
+ message(STATUS "Building i386 SIMD extensions")
+endif()
+
+if(MSVC_IDE)
+ set(OBJDIR "${CMAKE_CURRENT_BINARY_DIR}/$(OutDir)")
+else()
+ set(OBJDIR ${CMAKE_CURRENT_BINARY_DIR})
+endif()
+
+foreach(file ${SIMD_BASENAMES})
+ set(SIMD_SRC ${CMAKE_CURRENT_SOURCE_DIR}/${file}.asm)
+ set(SIMD_OBJ ${OBJDIR}/${file}.obj)
+ add_custom_command(OUTPUT ${SIMD_OBJ} DEPENDS ${SIMD_SRC} *.inc
+ 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})