Merge branch 'master' of github.com:daid/SkeinPyPy
commit
32d8fb4377
|
@ -579,6 +579,14 @@ class SkeinforgeRepository:
|
|||
self.executeTitle = 'Skeinforge a file...'
|
||||
|
||||
def getPyPyExe(self):
|
||||
if platform.system() == "Windows":
|
||||
checkSSE2exe = os.path.dirname(os.path.abspath(__file__)) + "/checkSSE2.exe"
|
||||
if os.path.exists(checkSSE2exe):
|
||||
if subprocess.call(checkSSE2exe) != 0:
|
||||
print "*****************************************************"
|
||||
print "* Your CPU is lacking SSE2 support, cannot use PyPy *"
|
||||
print "*****************************************************"
|
||||
return False
|
||||
if platform.system() == "Windows":
|
||||
pypyExe = os.path.normpath(os.path.join(os.path.dirname(os.path.abspath(__file__)), "../../pypy/pypy.exe"));
|
||||
else:
|
||||
|
|
|
@ -6,6 +6,14 @@ from skeinforge_application.skeinforge_utilities import skeinforge_craft
|
|||
|
||||
def getPyPyExe():
|
||||
"Return the path to the pypy executable if we can find it. Else return False"
|
||||
if platform.system() == "Windows":
|
||||
checkSSE2exe = os.path.dirname(os.path.abspath(__file__)) + "/checkSSE2.exe"
|
||||
if os.path.exists(checkSSE2exe):
|
||||
if subprocess.call(checkSSE2exe) != 0:
|
||||
print "*****************************************************"
|
||||
print "* Your CPU is lacking SSE2 support, cannot use PyPy *"
|
||||
print "*****************************************************"
|
||||
return False
|
||||
if platform.system() == "Windows":
|
||||
pypyExe = os.path.normpath(os.path.join(os.path.dirname(os.path.abspath(__file__)), "../../pypy/pypy.exe"));
|
||||
else:
|
||||
|
|
26
build.sh
26
build.sh
|
@ -1,5 +1,8 @@
|
|||
#!/bin/bash
|
||||
|
||||
# This script is to build the SkeinPyPy package for Windows/Linux and OSx
|
||||
# This script should run under Linux and OSx, as well as Windows with Cygwin.
|
||||
|
||||
#############################
|
||||
# CONFIGURATION
|
||||
#############################
|
||||
|
@ -96,6 +99,16 @@ if [ $BUILD_TARGET = "win32" ]; then
|
|||
mv PURELIB/serial ${TARGET_DIR}/python/Lib
|
||||
rm -rf \$_OUTDIR
|
||||
rm -rf PURELIB
|
||||
|
||||
#Clean up portable python a bit, to keep the package size down.
|
||||
rm -rf ${TARGET_DIR}/python/PyScripter.*
|
||||
rm -rf ${TARGET_DIR}/python/Doc
|
||||
rm -rf ${TARGET_DIR}/python/locale
|
||||
#rm -rf ${TARGET_DIR}/python/tcl
|
||||
rm -rf ${TARGET_DIR}/python/Lib/test
|
||||
rm -rf ${TARGET_DIR}/python/Lib/distutils
|
||||
rm -rf ${TARGET_DIR}/python/Lib/site-packages/wx-2.8-msw-unicode/wx/tools
|
||||
rm -rf ${TARGET_DIR}/python/Lib/site-packages/wx-2.8-msw-unicode/wx/locale
|
||||
fi
|
||||
|
||||
#Extract pypy
|
||||
|
@ -106,10 +119,22 @@ else
|
|||
cd ${TARGET_DIR}; $TAR -xjf ../pypy-${PYPY_VERSION}-${BUILD_TARGET}.tar.bz2; cd ..
|
||||
mv ${TARGET_DIR}/pypy-${PYPY_VERSION} ${TARGET_DIR}/pypy
|
||||
fi
|
||||
#Cleanup pypy
|
||||
rm -rf ${TARGET_DIR}/pypy/lib-python/2.7/test
|
||||
|
||||
#add Skeinforge
|
||||
cp -a SkeinPyPy ${TARGET_DIR}/SkeinPyPy
|
||||
|
||||
#Add the SSE2 check if we can build it, else we skip it.
|
||||
# If we don't have it SkeinPyPy will still function. But crash on machines that don't have SSE2
|
||||
if [ $BUILD_TARGET = "win32" ]; then
|
||||
WINCC=`whereis i386-mingw32-gcc`
|
||||
if [ "$WINCC" != "" ]; then
|
||||
make -C checkSSE2 CC=${WINCC} TARGET=checkSSE2.exe
|
||||
cp checkSSE2/checkSSE2.exe ${TARGET_DIR}/SkeinPyPy
|
||||
fi
|
||||
fi
|
||||
|
||||
#add printrun
|
||||
mv Printrun ${TARGET_DIR}/Printrun
|
||||
|
||||
|
@ -122,6 +147,7 @@ cp README ${TARGET_DIR}/README.txt
|
|||
#package the result
|
||||
if (( ${ARCHIVE_FOR_DISTRIBUTION} )); then
|
||||
if [ $BUILD_TARGET = "win32" ]; then
|
||||
rm ${TARGET_DIR}.zip
|
||||
cd ${TARGET_DIR}
|
||||
7z a ../${TARGET_DIR}.zip *
|
||||
cd ..
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
CC ?= gcc
|
||||
TARGET ?= checkSSE2
|
||||
|
||||
$(TARGET): main.c
|
||||
$(CC) -o $(TARGET) main.c -Os
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
|
||||
//Read CPU flags, and return 0 if we support SSE2, else return 1
|
||||
//See: http://en.wikipedia.org/wiki/CPUID#EAX.3D1:_Processor_Info_and_Feature_Bits
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
int features;
|
||||
|
||||
//Read the CPU features.
|
||||
asm("mov $1, %%eax\n"
|
||||
"cpuid\n"
|
||||
"mov %%edx, %0"
|
||||
: "=r"(features) : : "%eax", "%edx", "%ecx");
|
||||
|
||||
//Check bit 26, this indicates SSE2 support
|
||||
if (features & (1 << 26))
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
Loading…
Reference in New Issue