Doesn't build with clang
ctrlcctrlv opened this issue · 1 comments
ctrlcctrlv commented
I understand this project is probably abandoned but here's a patch if you want to build it in Clang on OS X
Pretty fun
diff --git a/Evolve.pro b/Evolve.pro
index 9ed32f1..b81b409 100644
--- a/Evolve.pro
+++ b/Evolve.pro
@@ -37,5 +37,5 @@ FORMS += widget.ui \
CONFIG += c++11
QMAKE_CXXFLAGS_RELEASE += -O3 -flto -march=native -mmmx # Crashes on some computers
-QMAKE_CXXFLAGS_DEBUG += -Og -g -march=native -mmmx # Crashes on some computers
+QMAKE_CXXFLAGS_DEBUG += -march=native -mmmx # Crashes on some computers
#QMAKE_CXXFLAGS_DEBUG += -Og
diff --git a/settings.cpp b/settings.cpp
index 6eb53ea..20e2bce 100644
--- a/settings.cpp
+++ b/settings.cpp
@@ -1,7 +1,7 @@
#include "settings.h"
bool AUTOFOCUS_ENABLED = false;
-int AUTOFOCUS_SUBDIVS = 4, AUTOFOCUS_DELAY=1000;
+int AUTOFOCUS_DELAY=1000;
int N_POLY_POINTS = 6;
int N_COLOR_VAR = 5;
@@ -9,7 +9,6 @@ int N_POS_VAR = 15;
int SHAPE_OPT_FREQ = 0;
int GUI_REFRESH_RATE = 4;
int AUTOFOCUS_RES = 2;
-int N_CORES = 4;
int FOCUS_LEFT=0, FOCUS_RIGHT=100, FOCUS_TOP=0, FOCUS_BOTTOM=100;
diff --git a/settings.h b/settings.h
index 1f48a06..0c40518 100644
--- a/settings.h
+++ b/settings.h
@@ -2,7 +2,8 @@
#define SETTINGS_H
extern bool AUTOFOCUS_ENABLED;
-extern int AUTOFOCUS_SUBDIVS, AUTOFOCUS_DELAY;
+const int AUTOFOCUS_SUBDIVS = 4;
+extern int AUTOFOCUS_DELAY;
extern int N_POLY_POINTS;
extern int N_COLOR_VAR;
@@ -14,7 +15,7 @@ extern int GUI_REFRESH_RATE;
extern int AUTOFOCUS_RES;
extern int FOCUS_LEFT, FOCUS_RIGHT, FOCUS_TOP, FOCUS_BOTTOM;
-extern int N_CORES;
+const int N_CORES = 4;
extern int POLYS_MIN, POLYS_MAX;
diff --git a/settingswidget.cpp b/settingswidget.cpp
index 83fdafd..aa9d437 100644
--- a/settingswidget.cpp
+++ b/settingswidget.cpp
@@ -64,11 +64,11 @@ void SettingsWidget::okClicked()
FOCUS_BOTTOM = ui->focusBottom->value();
SHAPE_OPT_FREQ = ui->shapeOptFreqSpin->value();
GUI_REFRESH_RATE = ui->guiRefreshSpin->value();
- N_CORES = ui->coreSpin->value();
+ /*N_CORES = ui->coreSpin->value();*/
POLYS_MIN = ui->minPolySpin->value();
POLYS_MAX = ui->maxPolySpin->value();
AUTOFOCUS_ENABLED = ui->autofocusEnable->isChecked();
- AUTOFOCUS_SUBDIVS = ui->autofocusSubdivs->value();
+ /*AUTOFOCUS_SUBDIVS = ui->autofocusSubdivs->value();*/
AUTOFOCUS_DELAY = ui->autofocusDelay->value();
Widget::setAutofocus(AUTOFOCUS_ENABLED);
close();
diff --git a/widget.cpp b/widget.cpp
index 1106e4c..c1c6ab3 100644
--- a/widget.cpp
+++ b/widget.cpp
@@ -3,6 +3,7 @@
#include "settings.h"
#include "settingswidget.h"
#include "analysis.h"
+#include <xmmintrin.h>
#include <QDataStream>
#include <QString>
#include <QPixmap>
@@ -164,8 +165,8 @@ quint64 Widget::computeFitness(const QImage& target)
// Sum of the differences of each pixel's color
for (unsigned j=0; j+8<BPL; j+=8)
{
- __m64 mmOrig = _m_from_int64(*(quint64*)(origData+curLine+j));
- __m64 mmTarget = _m_from_int64(*(quint64*)(targetData+curLine+j));
+ __m64 mmOrig = _m_from_int(*(quint64*)(origData+curLine+j));
+ __m64 mmTarget = _m_from_int(*(quint64*)(targetData+curLine+j));
tmp = _m_psadbw(mmOrig, mmTarget);
mmFitness = _mm_add_si64(mmFitness, tmp);
}
tux3 commented
Thanks for the patch! I'll try to merge it so that it still builds with GCC/Clang on other platforms.
This project is not quite abandonned, but I'm not actively working on it at the moment, mostly due to lack of time.