Blob Blame History Raw
From cbb3138054b86c5c11632def023d5a5a1b8b545d Mon Sep 17 00:00:00 2001
From: Lubomir Rintel <lkundrak@v3.sk>
Date: Sat, 14 Nov 2015 17:14:25 +0100
Subject: [PATCH 6/7] Allow overriding the data/ directory on build

---
 src/basecode/angelcodefont.cpp |  2 +-
 src/chip/16segchip.cpp         | 36 ++++++++++++++++++------------------
 src/chip/7segchip.cpp          | 18 +++++++++---------
 src/chip/and3chip.cpp          |  4 ++--
 src/chip/and8chip.cpp          |  4 ++--
 src/chip/andchip.cpp           |  4 ++--
 src/chip/audiochip.cpp         |  2 +-
 src/chip/buttonchip.cpp        |  2 +-
 src/chip/chip2051.cpp          |  2 +-
 src/chip/chip27xx.cpp          |  2 +-
 src/chip/chip309.cpp           | 18 +++++++++---------
 src/chip/chip7400.cpp          |  2 +-
 src/chip/chip7402.cpp          |  2 +-
 src/chip/chip7404.cpp          |  2 +-
 src/chip/chip7408.cpp          |  2 +-
 src/chip/chip7410.cpp          |  2 +-
 src/chip/chip74138.cpp         |  2 +-
 src/chip/chip74139.cpp         |  2 +-
 src/chip/chip74151.cpp         |  2 +-
 src/chip/chip74154.cpp         |  2 +-
 src/chip/chip74163.cpp         |  2 +-
 src/chip/chip74164.cpp         |  2 +-
 src/chip/chip74165.cpp         |  2 +-
 src/chip/chip74181.cpp         |  2 +-
 src/chip/chip74191.cpp         |  2 +-
 src/chip/chip74192.cpp         |  2 +-
 src/chip/chip74193.cpp         |  2 +-
 src/chip/chip74195.cpp         |  2 +-
 src/chip/chip7420.cpp          |  2 +-
 src/chip/chip74240.cpp         |  2 +-
 src/chip/chip74241.cpp         |  2 +-
 src/chip/chip74244.cpp         |  2 +-
 src/chip/chip74245.cpp         |  2 +-
 src/chip/chip74283.cpp         |  2 +-
 src/chip/chip7432.cpp          |  2 +-
 src/chip/chip7447.cpp          |  2 +-
 src/chip/chip74574.cpp         |  2 +-
 src/chip/chip7473.cpp          |  2 +-
 src/chip/chip7474.cpp          |  2 +-
 src/chip/chip7485.cpp          |  2 +-
 src/chip/chip7486.cpp          |  2 +-
 src/chip/chip7489.cpp          |  2 +-
 src/chip/chip7490.cpp          |  2 +-
 src/chip/clockchip.cpp         |  4 ++--
 src/chip/dchip.cpp             |  2 +-
 src/chip/dflipflop.cpp         |  2 +-
 src/chip/dxchip.cpp            |  2 +-
 src/chip/jkchip.cpp            |  2 +-
 src/chip/jkflipflop.cpp        |  2 +-
 src/chip/ledchip.cpp           |  4 ++--
 src/chip/ledgrid.cpp           |  4 ++--
 src/chip/logicprobe.cpp        |  2 +-
 src/chip/muxchip.cpp           |  2 +-
 src/chip/nand3chip.cpp         |  4 ++--
 src/chip/nand8chip.cpp         |  4 ++--
 src/chip/nandchip.cpp          |  4 ++--
 src/chip/nor3chip.cpp          |  4 ++--
 src/chip/nor8chip.cpp          |  4 ++--
 src/chip/norchip.cpp           |  4 ++--
 src/chip/notchip.cpp           |  4 ++--
 src/chip/or3chip.cpp           |  4 ++--
 src/chip/or8chip.cpp           |  4 ++--
 src/chip/orchip.cpp            |  4 ++--
 src/chip/sedchip.cpp           |  4 ++--
 src/chip/serchip.cpp           |  2 +-
 src/chip/srchip.cpp            |  2 +-
 src/chip/srflipflop.cpp        |  2 +-
 src/chip/srnegchip.cpp         |  2 +-
 src/chip/staticlevelchip.cpp   |  4 ++--
 src/chip/stepper.cpp           |  2 +-
 src/chip/switchchip.cpp        |  2 +-
 src/chip/tchip.cpp             |  2 +-
 src/chip/tflipflop.cpp         |  2 +-
 src/chip/xorchip.cpp           |  4 ++--
 src/core/main.cpp              | 12 ++++++------
 src/include/atanua.h           |  6 +++++-
 76 files changed, 137 insertions(+), 133 deletions(-)

diff --git a/src/basecode/angelcodefont.cpp b/src/basecode/angelcodefont.cpp
index a675f25..176c69f 100644
--- a/src/basecode/angelcodefont.cpp
+++ b/src/basecode/angelcodefont.cpp
@@ -94,7 +94,7 @@ void ACFontPagesBlock::load(File * f)
         f->readchars(name[i], l);
         char temp[256];
         // should actually take the directory from the .fnt filename string..
-        sprintf(temp,"data/%s",name[i]); 
+        sprintf(temp,DATADIR "/%s",name[i]); 
         glhandle[i] = load_texture(temp, 1);
     }
 }
diff --git a/src/chip/16segchip.cpp b/src/chip/16segchip.cpp
index 817dabe..bdc47e3 100644
--- a/src/chip/16segchip.cpp
+++ b/src/chip/16segchip.cpp
@@ -75,24 +75,24 @@ SixteenSegChip::SixteenSegChip(int aColor, int aInverse)
 	mInputPin[15].set(2.95,ypos,this,"Pin 17: M"); ypos -= step;
 	mInputPin[16].set(2.95,ypos,this,"Pin 18: DP"); ypos -= step;
 
-    mTexture[0] = load_texture("data/16seg_base.png");
-    mTexture[1] = load_texture("data/16seg_a1.png");
-    mTexture[2] = load_texture("data/16seg_a2.png");
-    mTexture[3] = load_texture("data/16seg_j.png");
-    mTexture[4] = load_texture("data/16seg_h.png");
-    mTexture[5] = load_texture("data/16seg_f.png");
-    mTexture[6] = load_texture("data/16seg_e.png");
-    mTexture[7] = load_texture("data/16seg_n.png");
-    mTexture[8] = load_texture("data/16seg_d1.png");
-    mTexture[9] = load_texture("data/16seg_d2.png");
-    mTexture[10] = load_texture("data/16seg_k.png");
-    mTexture[11] = load_texture("data/16seg_b.png");
-    mTexture[12] = load_texture("data/16seg_g1.png");
-    mTexture[13] = load_texture("data/16seg_g2.png");
-    mTexture[14] = load_texture("data/16seg_c.png");
-    mTexture[15] = load_texture("data/16seg_l.png");
-    mTexture[16] = load_texture("data/16seg_m.png");
-    mTexture[17] = load_texture("data/16seg_dp.png");
+    mTexture[0] = load_texture(DATADIR "/16seg_base.png");
+    mTexture[1] = load_texture(DATADIR "/16seg_a1.png");
+    mTexture[2] = load_texture(DATADIR "/16seg_a2.png");
+    mTexture[3] = load_texture(DATADIR "/16seg_j.png");
+    mTexture[4] = load_texture(DATADIR "/16seg_h.png");
+    mTexture[5] = load_texture(DATADIR "/16seg_f.png");
+    mTexture[6] = load_texture(DATADIR "/16seg_e.png");
+    mTexture[7] = load_texture(DATADIR "/16seg_n.png");
+    mTexture[8] = load_texture(DATADIR "/16seg_d1.png");
+    mTexture[9] = load_texture(DATADIR "/16seg_d2.png");
+    mTexture[10] = load_texture(DATADIR "/16seg_k.png");
+    mTexture[11] = load_texture(DATADIR "/16seg_b.png");
+    mTexture[12] = load_texture(DATADIR "/16seg_g1.png");
+    mTexture[13] = load_texture(DATADIR "/16seg_g2.png");
+    mTexture[14] = load_texture(DATADIR "/16seg_c.png");
+    mTexture[15] = load_texture(DATADIR "/16seg_l.png");
+    mTexture[16] = load_texture(DATADIR "/16seg_m.png");
+    mTexture[17] = load_texture(DATADIR "/16seg_dp.png");
 }
 
 SixteenSegChip::~SixteenSegChip()
diff --git a/src/chip/7segchip.cpp b/src/chip/7segchip.cpp
index b35fcdd..0168dfe 100644
--- a/src/chip/7segchip.cpp
+++ b/src/chip/7segchip.cpp
@@ -62,15 +62,15 @@ SevenSegChip::SevenSegChip(int aColor, int aInverse)
     mPin.push_back(&mInputPin[7]);
     mInputPin[7].set(2.0, 4.5, this,mInverse?"Pin 5:D.P#":"Pin 5:D.P");
 
-    mTexture[0] = load_texture("data/7seg_base.png");
-    mTexture[1] = load_texture("data/7seg_a.png");
-    mTexture[2] = load_texture("data/7seg_b.png");
-    mTexture[3] = load_texture("data/7seg_c.png");
-    mTexture[4] = load_texture("data/7seg_d.png");
-    mTexture[5] = load_texture("data/7seg_e.png");
-    mTexture[6] = load_texture("data/7seg_f.png");
-    mTexture[7] = load_texture("data/7seg_g.png");
-    mTexture[8] = load_texture("data/7seg_h.png");
+    mTexture[0] = load_texture(DATADIR "/7seg_base.png");
+    mTexture[1] = load_texture(DATADIR "/7seg_a.png");
+    mTexture[2] = load_texture(DATADIR "/7seg_b.png");
+    mTexture[3] = load_texture(DATADIR "/7seg_c.png");
+    mTexture[4] = load_texture(DATADIR "/7seg_d.png");
+    mTexture[5] = load_texture(DATADIR "/7seg_e.png");
+    mTexture[6] = load_texture(DATADIR "/7seg_f.png");
+    mTexture[7] = load_texture(DATADIR "/7seg_g.png");
+    mTexture[8] = load_texture(DATADIR "/7seg_h.png");
 
 	int i;
 	for (i = 0; i < 8; i++)
diff --git a/src/chip/and3chip.cpp b/src/chip/and3chip.cpp
index bd9935d..53497d3 100644
--- a/src/chip/and3chip.cpp
+++ b/src/chip/and3chip.cpp
@@ -35,9 +35,9 @@ AND3Chip::AND3Chip(int aUS)
     mPin.push_back(&mOutputPin);
     mOutputPin.set(3.5, 0.75, this, "Output");
     if (aUS)
-        mTexture = load_texture("data/and3_us.png");
+        mTexture = load_texture(DATADIR "/and3_us.png");
     else
-        mTexture = load_texture("data/and3_fi.png");
+        mTexture = load_texture(DATADIR "/and3_fi.png");
 
 	mInputPinA.mReadOnly = 1;
 	mInputPinB.mReadOnly = 1;
diff --git a/src/chip/and8chip.cpp b/src/chip/and8chip.cpp
index 6c61c9e..f62b626 100644
--- a/src/chip/and8chip.cpp
+++ b/src/chip/and8chip.cpp
@@ -49,9 +49,9 @@ AND8Chip::AND8Chip(int aUS)
     mInputPin[7].set(0, ypos, this, "Input H");
     mOutputPin.set(3.5, 1.75, this, "Output");
     if (aUS)
-        mTexture = load_texture("data/and8_us.png");
+        mTexture = load_texture(DATADIR "/and8_us.png");
     else
-        mTexture = load_texture("data/and8_fi.png");
+        mTexture = load_texture(DATADIR "/and8_fi.png");
 
 	int i;
 	for (i = 0; i < 8; i++)
diff --git a/src/chip/andchip.cpp b/src/chip/andchip.cpp
index 20640c9..8883ee4 100644
--- a/src/chip/andchip.cpp
+++ b/src/chip/andchip.cpp
@@ -33,9 +33,9 @@ ANDChip::ANDChip(int aUS)
     mPin.push_back(&mOutputPin);
     mOutputPin.set(3.5, 0.75, this, "Output");
     if (aUS)
-        mTexture = load_texture("data/and_us.png");
+        mTexture = load_texture(DATADIR "/and_us.png");
     else
-        mTexture = load_texture("data/and_fi.png");
+        mTexture = load_texture(DATADIR "/and_fi.png");
 
 	mInputPinA.mReadOnly = 1;
 	mInputPinB.mReadOnly = 1;
diff --git a/src/chip/audiochip.cpp b/src/chip/audiochip.cpp
index b0819d1..ce90274 100644
--- a/src/chip/audiochip.cpp
+++ b/src/chip/audiochip.cpp
@@ -52,7 +52,7 @@ AudioChip::AudioChip()
     mPin.push_back(&mPinA[0]);
     mPinA[0].set(0, ypos, this, "A0"); ypos += 0.5;    
 
-    mTexture = load_texture("data/audio.png");    
+    mTexture = load_texture(DATADIR "/audio.png");    
 
 	int i;
 	for (i = 0; i < 8; i++)
diff --git a/src/chip/buttonchip.cpp b/src/chip/buttonchip.cpp
index da1593d..48657f8 100644
--- a/src/chip/buttonchip.cpp
+++ b/src/chip/buttonchip.cpp
@@ -29,7 +29,7 @@ ButtonChip::ButtonChip(int aCharacter)
     set(0,0,2,2,NULL);
     mPin.push_back(&mOutputPin);
     mOutputPin.set(0.75, 1.5, this, "Output");
-    mTexture = load_texture("data/button.png");
+    mTexture = load_texture(DATADIR "/button.png");
     mPressed = 0;
 }
 
diff --git a/src/chip/chip2051.cpp b/src/chip/chip2051.cpp
index a24571d..9610daa 100644
--- a/src/chip/chip2051.cpp
+++ b/src/chip/chip2051.cpp
@@ -124,7 +124,7 @@ Chip2051::Chip2051()
     mClock = 0;
     mResetCounter = 0;
 
-    mTexture = load_texture("data/chip_20pin.png");    
+    mTexture = load_texture(DATADIR "/chip_20pin.png");    
 }
 
 void Chip2051::render(int aChipId)
diff --git a/src/chip/chip27xx.cpp b/src/chip/chip27xx.cpp
index cdd3f3e..586fa89 100644
--- a/src/chip/chip27xx.cpp
+++ b/src/chip/chip27xx.cpp
@@ -114,7 +114,7 @@ Chip27xx::Chip27xx(int aType)
     mPin.push_back(&mOutputPin[2]);
     mOutputPin[2].set(xpos, 3.1, this, "Pin 11:DQ2"); xpos += 0.5475;
 
-    mTexture = load_texture("data/chip_24pin.png");
+    mTexture = load_texture(DATADIR "/chip_24pin.png");
 }
 
 Chip27xx::~Chip27xx()
diff --git a/src/chip/chip309.cpp b/src/chip/chip309.cpp
index 68068f8..06a858d 100644
--- a/src/chip/chip309.cpp
+++ b/src/chip/chip309.cpp
@@ -73,15 +73,15 @@ Chip309::Chip309()
     mPin.push_back(&mInputPin[0]);
     mInputPin[0].set(2.5, yp, this, "Pin 15:A"); yp += 0.5;
 
-    mTexture[0] = load_texture("data/309.png");
-    mTexture[1] = load_texture("data/309_b.png");
-    mTexture[2] = load_texture("data/309_c.png");
-    mTexture[3] = load_texture("data/309_d.png");
-    mTexture[4] = load_texture("data/309_e.png");
-    mTexture[5] = load_texture("data/309_f.png");
-    mTexture[6] = load_texture("data/309_a.png");
-    mTexture[7] = load_texture("data/309_g.png");
-    mTexture[8] = load_texture("data/309_h.png");
+    mTexture[0] = load_texture(DATADIR "/309.png");
+    mTexture[1] = load_texture(DATADIR "/309_b.png");
+    mTexture[2] = load_texture(DATADIR "/309_c.png");
+    mTexture[3] = load_texture(DATADIR "/309_d.png");
+    mTexture[4] = load_texture(DATADIR "/309_e.png");
+    mTexture[5] = load_texture(DATADIR "/309_f.png");
+    mTexture[6] = load_texture(DATADIR "/309_a.png");
+    mTexture[7] = load_texture(DATADIR "/309_g.png");
+    mTexture[8] = load_texture(DATADIR "/309_h.png");
 
     mData = 0;
     mVisibleData = 0;
diff --git a/src/chip/chip7400.cpp b/src/chip/chip7400.cpp
index 7a08177..28105e9 100644
--- a/src/chip/chip7400.cpp
+++ b/src/chip/chip7400.cpp
@@ -56,7 +56,7 @@ Chip7400::Chip7400()
     mPin.push_back(&mOutputPin[3]);
     mOutputPin[3].set(xpos, 1.5, this, "Pin 6:Y2"); xpos += 0.54;
 
-    mTexture = load_texture("data/chip_14pin.png");
+    mTexture = load_texture(DATADIR "/chip_14pin.png");
 }
 
 void Chip7400::render(int aChipId)
diff --git a/src/chip/chip7402.cpp b/src/chip/chip7402.cpp
index e42be4e..1f54434 100644
--- a/src/chip/chip7402.cpp
+++ b/src/chip/chip7402.cpp
@@ -56,7 +56,7 @@ Chip7402::Chip7402()
     mPin.push_back(&mInputPinA[3]);
     mInputPinA[3].set(xpos, 1.5, this, "Pin 6:B2"); xpos += 0.54;
 
-    mTexture = load_texture("data/chip_14pin.png");
+    mTexture = load_texture(DATADIR "/chip_14pin.png");
 }
 
 void Chip7402::render(int aChipId)
diff --git a/src/chip/chip7404.cpp b/src/chip/chip7404.cpp
index 47e3396..804cceb 100644
--- a/src/chip/chip7404.cpp
+++ b/src/chip/chip7404.cpp
@@ -59,7 +59,7 @@ Chip7404::Chip7404()
     mPin.push_back(&mOutputPin[5]);
     mOutputPin[5].set(xpos, 1.5, this, "Pin 6:Y3"); xpos += 0.54;
 
-    mTexture = load_texture("data/chip_14pin.png");
+    mTexture = load_texture(DATADIR "/chip_14pin.png");
 }
 
 void Chip7404::render(int aChipId)
diff --git a/src/chip/chip7408.cpp b/src/chip/chip7408.cpp
index c90aeb2..58860aa 100644
--- a/src/chip/chip7408.cpp
+++ b/src/chip/chip7408.cpp
@@ -56,7 +56,7 @@ Chip7408::Chip7408()
     mPin.push_back(&mOutputPin[3]);
     mOutputPin[3].set(xpos, 1.5, this, "Pin 6:Y2"); xpos += 0.54;
 
-    mTexture = load_texture("data/chip_14pin.png");
+    mTexture = load_texture(DATADIR "/chip_14pin.png");
 }
 
 void Chip7408::render(int aChipId)
diff --git a/src/chip/chip7410.cpp b/src/chip/chip7410.cpp
index e038595..3b81ebc 100644
--- a/src/chip/chip7410.cpp
+++ b/src/chip/chip7410.cpp
@@ -57,7 +57,7 @@ Chip7410::Chip7410()
     mPin.push_back(&mOutputPin[2]);
     mOutputPin[2].set(xpos , 1.5, this, "Pin 6:Y2"); xpos += 0.54;
 
-    mTexture = load_texture("data/chip_14pin.png");
+    mTexture = load_texture(DATADIR "/chip_14pin.png");
 }
 
 void Chip7410::render(int aChipId)
diff --git a/src/chip/chip74138.cpp b/src/chip/chip74138.cpp
index aa94eae..e2ed102 100644
--- a/src/chip/chip74138.cpp
+++ b/src/chip/chip74138.cpp
@@ -60,7 +60,7 @@ Chip74138::Chip74138()
     mPin.push_back(&mOutputPin[7]);
     mOutputPin[7].set(xpos , 1.75, this, "Pin 7:DATA OUTPUT Y7"); xpos += 0.54;
 
-    mTexture = load_texture("data/chip_16pin.png");
+    mTexture = load_texture(DATADIR "/chip_16pin.png");
 }
 
 void Chip74138::render(int aChipId)
diff --git a/src/chip/chip74139.cpp b/src/chip/chip74139.cpp
index 7e76e89..ef35462 100644
--- a/src/chip/chip74139.cpp
+++ b/src/chip/chip74139.cpp
@@ -58,7 +58,7 @@ Chip74139::Chip74139()
     mPin.push_back(&mOutputPin[1][3]);
     mOutputPin[1][3].set(xpos, 1.75, this, "Pin 7:DATA OUTPUT 1Y3"); xpos += 0.54;
 
-    mTexture = load_texture("data/chip_16pin.png");
+    mTexture = load_texture(DATADIR "/chip_16pin.png");
 }
 
 void Chip74139::render(int aChipId)
diff --git a/src/chip/chip74151.cpp b/src/chip/chip74151.cpp
index 4fd020f..b7ea7d2 100644
--- a/src/chip/chip74151.cpp
+++ b/src/chip/chip74151.cpp
@@ -61,7 +61,7 @@ Chip74151::Chip74151()
     mPin.push_back(&mStrobePin);
     mStrobePin.set(xpos, 1.75, this, "Pin 7:STROBE"); xpos += 0.54;
 
-    mTexture = load_texture("data/chip_16pin.png");
+    mTexture = load_texture(DATADIR "/chip_16pin.png");
 }
 
 void Chip74151::render(int aChipId)
diff --git a/src/chip/chip74154.cpp b/src/chip/chip74154.cpp
index dae0d7f..44568c7 100644
--- a/src/chip/chip74154.cpp
+++ b/src/chip/chip74154.cpp
@@ -75,7 +75,7 @@ Chip74154::Chip74154()
     mPin.push_back(&mOutputPin[10]);
     mOutputPin[10].set(xpos, 3.1, this, "Pin 11:OUTPUT 10"); xpos += 0.5475;
 
-    mTexture = load_texture("data/chip_24pin.png");
+    mTexture = load_texture(DATADIR "/chip_24pin.png");
 }
 
 void Chip74154::render(int aChipId)
diff --git a/src/chip/chip74163.cpp b/src/chip/chip74163.cpp
index 560afea..2b8936c 100644
--- a/src/chip/chip74163.cpp
+++ b/src/chip/chip74163.cpp
@@ -46,7 +46,7 @@ Chip74163::Chip74163()
     DEF_PIN(mInputPin[3], 1.75, "Pin 6:DATA INPUT D");
     DEF_PIN(mEnablePPin, 1.75, "Pin 7:ENABLE P");
 
-    mTexture = load_texture("data/chip_16pin.png");
+    mTexture = load_texture(DATADIR "/chip_16pin.png");
 
     mOldClock = 0;
     mValue = 0;
diff --git a/src/chip/chip74164.cpp b/src/chip/chip74164.cpp
index 12c8140..417ec67 100644
--- a/src/chip/chip74164.cpp
+++ b/src/chip/chip74164.cpp
@@ -57,7 +57,7 @@ Chip74164::Chip74164()
     mPin.push_back(&mOutputPin[3]);                  
     mOutputPin[3].set(xpos , 1.5, this, "Pin 6:OUTPUT QD"); xpos += 0.54;
 
-    mTexture = load_texture("data/chip_14pin.png");
+    mTexture = load_texture(DATADIR "/chip_14pin.png");
 
     mOldClock = 0;
 }
diff --git a/src/chip/chip74165.cpp b/src/chip/chip74165.cpp
index a54a84a..e5c2ce5 100644
--- a/src/chip/chip74165.cpp
+++ b/src/chip/chip74165.cpp
@@ -58,7 +58,7 @@ Chip74165::Chip74165()
     mPin.push_back(&mNegOutput);
     mNegOutput.set(xpos, 1.75, this, "Pin 7:OUTPUT (Q7)#"); xpos += 0.54;
 
-    mTexture = load_texture("data/chip_16pin.png");
+    mTexture = load_texture(DATADIR "/chip_16pin.png");
     mLastClock = 0;
     mValue = 0;
 }
diff --git a/src/chip/chip74181.cpp b/src/chip/chip74181.cpp
index 9a7db7b..7dc0dc3 100644
--- a/src/chip/chip74181.cpp
+++ b/src/chip/chip74181.cpp
@@ -75,7 +75,7 @@ Chip74181::Chip74181()
     mPin.push_back(&mOutputPin[2]);
     mOutputPin[2].set(xpos, 3.1, this, "Pin 11:F2"); xpos += 0.5475;
 
-    mTexture = load_texture("data/chip_24pin.png");
+    mTexture = load_texture(DATADIR "/chip_24pin.png");
 }
 
 void Chip74181::render(int aChipId)
diff --git a/src/chip/chip74191.cpp b/src/chip/chip74191.cpp
index 11b594d..33129a6 100644
--- a/src/chip/chip74191.cpp
+++ b/src/chip/chip74191.cpp
@@ -60,7 +60,7 @@ Chip74191::Chip74191()
     mOutputPin[3].set(xpos, 1.75, this, "Pin 7:QD output"); xpos += 0.54;
 
     mClock = 0;
-    mTexture = load_texture("data/chip_16pin.png");
+    mTexture = load_texture(DATADIR "/chip_16pin.png");
 }
 
 void Chip74191::render(int aChipId)
diff --git a/src/chip/chip74192.cpp b/src/chip/chip74192.cpp
index b1d58c5..d5f245d 100644
--- a/src/chip/chip74192.cpp
+++ b/src/chip/chip74192.cpp
@@ -58,7 +58,7 @@ Chip74192::Chip74192()
     mPin.push_back(&mOutputPin[3]);
     mOutputPin[3].set(xpos, 1.75, this, "Pin 7:QD"); xpos += 0.54;
 
-    mTexture = load_texture("data/chip_16pin.png");
+    mTexture = load_texture(DATADIR "/chip_16pin.png");
 
     mValue = 0;
     mCountDownLastState = 0;
diff --git a/src/chip/chip74193.cpp b/src/chip/chip74193.cpp
index ddc32b1..22ecfef 100644
--- a/src/chip/chip74193.cpp
+++ b/src/chip/chip74193.cpp
@@ -58,7 +58,7 @@ Chip74193::Chip74193()
     mPin.push_back(&mOutputPin[3]);
     mOutputPin[3].set(xpos, 1.75, this, "Pin 7:QD"); xpos += 0.54;
 
-    mTexture = load_texture("data/chip_16pin.png");
+    mTexture = load_texture(DATADIR "/chip_16pin.png");
 
     mValue = 0;
     mCountDownLastState = 0;
diff --git a/src/chip/chip74195.cpp b/src/chip/chip74195.cpp
index 9982877..8b580e5 100644
--- a/src/chip/chip74195.cpp
+++ b/src/chip/chip74195.cpp
@@ -61,7 +61,7 @@ Chip74195::Chip74195()
     mPin.push_back(&mInputPin[3]);
     mInputPin[3].set(xpos, 1.75, this, "Pin 7:P3"); xpos += 0.54;
 
-    mTexture = load_texture("data/chip_16pin.png");
+    mTexture = load_texture(DATADIR "/chip_16pin.png");
     
     mClock = 0;
 }
diff --git a/src/chip/chip7420.cpp b/src/chip/chip7420.cpp
index 010c109..cfe0cef 100644
--- a/src/chip/chip7420.cpp
+++ b/src/chip/chip7420.cpp
@@ -54,7 +54,7 @@ Chip7420::Chip7420()
     mPin.push_back(&mOutputPin[1]);
     mOutputPin[1].set(xpos, 1.5, this, "Pin 6:Y1"); xpos += 0.54;
 
-    mTexture = load_texture("data/chip_14pin.png");
+    mTexture = load_texture(DATADIR "/chip_14pin.png");
 }
 
 void Chip7420::render(int aChipId)
diff --git a/src/chip/chip74240.cpp b/src/chip/chip74240.cpp
index 95ab186..edb1a2c 100644
--- a/src/chip/chip74240.cpp
+++ b/src/chip/chip74240.cpp
@@ -67,7 +67,7 @@ Chip74240::Chip74240()
     mPin.push_back(&mOutputPin[7]);
     mOutputPin[7].set(xpos, 2.1, this, "Pin 9:2Y1"); xpos += 0.54;
     
-    mTexture = load_texture("data/chip_20pin.png");    
+    mTexture = load_texture(DATADIR "/chip_20pin.png");    
 }
 
 void Chip74240::render(int aChipId)
diff --git a/src/chip/chip74241.cpp b/src/chip/chip74241.cpp
index ea32737..d4c6e45 100644
--- a/src/chip/chip74241.cpp
+++ b/src/chip/chip74241.cpp
@@ -67,7 +67,7 @@ Chip74241::Chip74241()
     mPin.push_back(&mOutputPin[7]);
     mOutputPin[7].set(xpos, 2.1, this, "Pin 9:2Y1"); xpos += 0.54;
     
-    mTexture = load_texture("data/chip_20pin.png");    
+    mTexture = load_texture(DATADIR "/chip_20pin.png");    
 }
 
 void Chip74241::render(int aChipId)
diff --git a/src/chip/chip74244.cpp b/src/chip/chip74244.cpp
index 1a961b1..328173b 100644
--- a/src/chip/chip74244.cpp
+++ b/src/chip/chip74244.cpp
@@ -67,7 +67,7 @@ Chip74244::Chip74244()
     mPin.push_back(&mOutputPin[7]);
     mOutputPin[7].set(xpos, 2.1, this, "Pin 9:2Y1"); xpos += 0.54;
     
-    mTexture = load_texture("data/chip_20pin.png");    
+    mTexture = load_texture(DATADIR "/chip_20pin.png");    
 }
 
 void Chip74244::render(int aChipId)
diff --git a/src/chip/chip74245.cpp b/src/chip/chip74245.cpp
index 7796859..a00e249 100644
--- a/src/chip/chip74245.cpp
+++ b/src/chip/chip74245.cpp
@@ -67,7 +67,7 @@ Chip74245::Chip74245()
     mPin.push_back(&mBusAPin[7]);
     mBusAPin[7].set(xpos, 2.1, this, "Pin 9:A8"); xpos += 0.54;
     
-    mTexture = load_texture("data/chip_20pin.png");    
+    mTexture = load_texture(DATADIR "/chip_20pin.png");    
 }
 
 void Chip74245::render(int aChipId)
diff --git a/src/chip/chip74283.cpp b/src/chip/chip74283.cpp
index 2f0c2a4..a04d6c2 100644
--- a/src/chip/chip74283.cpp
+++ b/src/chip/chip74283.cpp
@@ -58,7 +58,7 @@ Chip74283::Chip74283()
     mPin.push_back(&mInputPinC);
     mInputPinC.set(xpos, 1.75, this, "Pin 7:C0"); xpos += 0.54;
 
-    mTexture = load_texture("data/chip_16pin.png");
+    mTexture = load_texture(DATADIR "/chip_16pin.png");
 }
 
 void Chip74283::render(int aChipId)
diff --git a/src/chip/chip7432.cpp b/src/chip/chip7432.cpp
index 17318d2..fb698b2 100644
--- a/src/chip/chip7432.cpp
+++ b/src/chip/chip7432.cpp
@@ -56,7 +56,7 @@ Chip7432::Chip7432()
     mPin.push_back(&mOutputPin[3]);
     mOutputPin[3].set(xpos, 1.5, this, "Pin 6:Y2"); xpos += 0.54;
 
-    mTexture = load_texture("data/chip_14pin.png");
+    mTexture = load_texture(DATADIR "/chip_14pin.png");
 }
 
 void Chip7432::render(int aChipId)
diff --git a/src/chip/chip7447.cpp b/src/chip/chip7447.cpp
index 96f812b..ad7a539 100644
--- a/src/chip/chip7447.cpp
+++ b/src/chip/chip7447.cpp
@@ -58,7 +58,7 @@ Chip7447::Chip7447()
     mPin.push_back(&mInputPin[0]);
     mInputPin[0].set(xpos, 1.75, this, "Pin 7:A0"); xpos += 0.54;
 
-    mTexture = load_texture("data/chip_16pin.png");
+    mTexture = load_texture(DATADIR "/chip_16pin.png");
 }
 
 void Chip7447::render(int aChipId)
diff --git a/src/chip/chip74574.cpp b/src/chip/chip74574.cpp
index e29f94f..6ecd305 100644
--- a/src/chip/chip74574.cpp
+++ b/src/chip/chip74574.cpp
@@ -67,7 +67,7 @@ Chip74574::Chip74574()
     mPin.push_back(&mInputPin[7]);
     mInputPin[7].set(xpos, 2.1, this, "Pin 8:8D"); xpos += 0.54;
     
-    mTexture = load_texture("data/chip_20pin.png");
+    mTexture = load_texture(DATADIR "/chip_20pin.png");
     
     mState = 0;
     mClock = 0;
diff --git a/src/chip/chip7473.cpp b/src/chip/chip7473.cpp
index a842018..1981597 100644
--- a/src/chip/chip7473.cpp
+++ b/src/chip/chip7473.cpp
@@ -64,7 +64,7 @@ Chip7473::Chip7473()
     mClock[0] = 1;
     mClock[1] = 1;
 
-    mTexture = load_texture("data/chip_14pin.png");
+    mTexture = load_texture(DATADIR "/chip_14pin.png");
 }
 
 void Chip7473::render(int aChipId)
diff --git a/src/chip/chip7474.cpp b/src/chip/chip7474.cpp
index 05fa486..1c5500f 100644
--- a/src/chip/chip7474.cpp
+++ b/src/chip/chip7474.cpp
@@ -58,7 +58,7 @@ Chip7474::Chip7474()
     mClock[0] = 0;
     mClock[1] = 0;
 
-    mTexture = load_texture("data/chip_14pin.png");
+    mTexture = load_texture(DATADIR "/chip_14pin.png");
 }
 
 void Chip7474::render(int aChipId)
diff --git a/src/chip/chip7485.cpp b/src/chip/chip7485.cpp
index 35ca1b3..759d3f4 100644
--- a/src/chip/chip7485.cpp
+++ b/src/chip/chip7485.cpp
@@ -60,7 +60,7 @@ Chip7485::Chip7485()
     mOutputPin[2].set(xpos , 1.75, this, "Pin 1:A<B output"); xpos += 0.54;
 
 
-    mTexture = load_texture("data/chip_16pin.png");
+    mTexture = load_texture(DATADIR "/chip_16pin.png");
 }
 
 void Chip7485::render(int aChipId)
diff --git a/src/chip/chip7486.cpp b/src/chip/chip7486.cpp
index 857f0e6..df2ce01 100644
--- a/src/chip/chip7486.cpp
+++ b/src/chip/chip7486.cpp
@@ -56,7 +56,7 @@ Chip7486::Chip7486()
     mPin.push_back(&mOutputPin[3]);
     mOutputPin[3].set(xpos, 1.5, this, "Pin 6:Y2"); xpos += 0.54;
 
-    mTexture = load_texture("data/chip_14pin.png");
+    mTexture = load_texture(DATADIR "/chip_14pin.png");
 }
 
 void Chip7486::render(int aChipId)
diff --git a/src/chip/chip7489.cpp b/src/chip/chip7489.cpp
index 98b95e5..82835b6 100644
--- a/src/chip/chip7489.cpp
+++ b/src/chip/chip7489.cpp
@@ -59,7 +59,7 @@ Chip7489::Chip7489()
     mPin.push_back(&mSensePin[1]);
     mSensePin[1].set(xpos , 1.75, this, "S2"); xpos += 0.54;
 
-    mTexture = load_texture("data/chip_16pin.png");
+    mTexture = load_texture(DATADIR "/chip_16pin.png");
     
     int i;
     for (i = 0; i < 16; i++)
diff --git a/src/chip/chip7490.cpp b/src/chip/chip7490.cpp
index 9194563..f522c2d 100644
--- a/src/chip/chip7490.cpp
+++ b/src/chip/chip7490.cpp
@@ -62,7 +62,7 @@ Chip7490::Chip7490()
     mPin.push_back(&mResetPin[3]);
     mResetPin[3].set(xpos, 1.5, this, "Pin 7:R9(2)"); xpos += 0.54;
 
-    mTexture = load_texture("data/chip_14pin.png");
+    mTexture = load_texture(DATADIR "/chip_14pin.png");
     mClockA = 0;
     mClockB = 0;
 }
diff --git a/src/chip/clockchip.cpp b/src/chip/clockchip.cpp
index 53fdffd..f1f455f 100644
--- a/src/chip/clockchip.cpp
+++ b/src/chip/clockchip.cpp
@@ -34,7 +34,7 @@ ClockChip::ClockChip(float aFreqHz)
     set(0, 0, 2, 2.25,NULL);
     mPin.push_back(&mOutputPin);
     mOutputPin.set(0.75, 1.75, this, "Output");
-    mTexture = load_texture("data/clock.png");
+    mTexture = load_texture(DATADIR "/clock.png");
 	if (aFreqHz*2/1000 > gConfig.mPhysicsKHz)
 		mNagOnce = 1;
 	else
@@ -95,7 +95,7 @@ ClockChip::ClockChip(float aFreqHz)
     set(0, 0, 2, 2.25,NULL);
     mPin.push_back(&mOutputPin);
     mOutputPin.set(0.75, 1.75, this, "Output");
-    mTexture = load_texture("data/clock.png");
+    mTexture = load_texture(DATADIR "/clock.png");
     mTimePos = 0;
 }
 
diff --git a/src/chip/dchip.cpp b/src/chip/dchip.cpp
index 5703137..04a233d 100644
--- a/src/chip/dchip.cpp
+++ b/src/chip/dchip.cpp
@@ -34,7 +34,7 @@ DChip::DChip()
     mOutputPinA.set(3.5, 0.25, this, "Output");
     mPin.push_back(&mOutputPinB);
     mOutputPinB.set(3.5, 1.25, this, "Inverted output");
-    mTexture = load_texture("data/d.png");
+    mTexture = load_texture(DATADIR "/d.png");
     mOldState = 0;
 
 	mInputPinA.mReadOnly = 1;
diff --git a/src/chip/dflipflop.cpp b/src/chip/dflipflop.cpp
index b39011b..0d4588d 100644
--- a/src/chip/dflipflop.cpp
+++ b/src/chip/dflipflop.cpp
@@ -40,7 +40,7 @@ DFlipFlop::DFlipFlop()
     mOutputPinA.set(4.5, 1.25, this, "Output");
     mPin.push_back(&mOutputPinB);
     mOutputPinB.set(4.5, 3.25, this, "Inverted output");
-    mTexture = load_texture("data/d_flipflop.png");
+    mTexture = load_texture(DATADIR "/d_flipflop.png");
     mState = 0;
     mClock = 0;
 
diff --git a/src/chip/dxchip.cpp b/src/chip/dxchip.cpp
index eae5e5b..8645c78 100644
--- a/src/chip/dxchip.cpp
+++ b/src/chip/dxchip.cpp
@@ -57,7 +57,7 @@ DxChip::DxChip()
     mPin.push_back(&mOutputPin[7]);
     mOutputPin[7].set(4.5, 7.25, this, "Output 7");
 
-    mTexture = load_texture("data/dx.png");
+    mTexture = load_texture(DATADIR "/dx.png");
 
 	mInputPin[0].mReadOnly = 1;
 	mInputPin[1].mReadOnly = 1;
diff --git a/src/chip/jkchip.cpp b/src/chip/jkchip.cpp
index 0d74707..ae5c6b9 100644
--- a/src/chip/jkchip.cpp
+++ b/src/chip/jkchip.cpp
@@ -34,7 +34,7 @@ JKChip::JKChip()
     mOutputPinA.set(3.5, 0.25, this, "Output");
     mPin.push_back(&mOutputPinB);
     mOutputPinB.set(3.5, 1.25, this, "Inverted output");
-    mTexture = load_texture("data/jk.png");
+    mTexture = load_texture(DATADIR "/jk.png");
     mOldState = 0;
 
 	mInputPinA.mReadOnly = 1;
diff --git a/src/chip/jkflipflop.cpp b/src/chip/jkflipflop.cpp
index aefe8ad..9c59147 100644
--- a/src/chip/jkflipflop.cpp
+++ b/src/chip/jkflipflop.cpp
@@ -42,7 +42,7 @@ JKFlipFlop::JKFlipFlop()
     mOutputPinA.set(4.5, 1.25, this, "Output");
     mPin.push_back(&mOutputPinB);
     mOutputPinB.set(4.5, 3.25, this, "Inverted output");
-    mTexture = load_texture("data/jk_flipflop.png");
+    mTexture = load_texture(DATADIR "/jk_flipflop.png");
     mState = 0;
     mClock = 0;
 
diff --git a/src/chip/ledchip.cpp b/src/chip/ledchip.cpp
index 6e0b6d5..6de6e4a 100644
--- a/src/chip/ledchip.cpp
+++ b/src/chip/ledchip.cpp
@@ -31,8 +31,8 @@ LEDChip::LEDChip(int aColor, int aInverse)
 	set(0, 0, 1, 2.5, NULL);
 	mPin.push_back(&mInputPin);
 	mInputPin.set((mW-0.5)/2, mH-0.5, this, mInverse?"Input#":"Input");
-	mBaseTexture = load_texture("data/led.png");
-	mFlareTexture = load_texture("data/flare.png");
+	mBaseTexture = load_texture(DATADIR "/led.png");
+	mFlareTexture = load_texture(DATADIR "/flare.png");
 	mInverse = aInverse;
 
 	mInputPin.mReadOnly = 1;
diff --git a/src/chip/ledgrid.cpp b/src/chip/ledgrid.cpp
index 015ce02..ddf83e6 100644
--- a/src/chip/ledgrid.cpp
+++ b/src/chip/ledgrid.cpp
@@ -55,8 +55,8 @@ LedGrid::LedGrid(int aSize, int aColor, int aInverse)
 		mInputPin[i+mSize].set(mSize, (mSize - i - 1) * step + ypos,this,mPinDescription[i+mSize]);
 	}
 
-	mBaseTexture = load_texture("data/ledgrid_base.png");
-	mLitTexture = load_texture("data/ledgrid_lit.png");
+	mBaseTexture = load_texture(DATADIR "/ledgrid_base.png");
+	mLitTexture = load_texture(DATADIR "/ledgrid_lit.png");
 
 	for (i = 0; i < mSize * 2; i++)
 		mInputPin[i].mReadOnly = 1;
diff --git a/src/chip/logicprobe.cpp b/src/chip/logicprobe.cpp
index 14980fe..236b799 100644
--- a/src/chip/logicprobe.cpp
+++ b/src/chip/logicprobe.cpp
@@ -53,7 +53,7 @@ LogicProbe::LogicProbe()
     mPin.push_back(&mInputPin[0]);
     mInputPin[0].set(0, ypos, this, "Bit 0"); ypos += 0.56;
 
-    mTexture = load_texture("data/lcd.png");
+    mTexture = load_texture(DATADIR "/lcd.png");
     mPlayhead = 0;
     mState = 1;
 	mLastTick = 0;
diff --git a/src/chip/muxchip.cpp b/src/chip/muxchip.cpp
index 2249450..df9b22f 100644
--- a/src/chip/muxchip.cpp
+++ b/src/chip/muxchip.cpp
@@ -45,7 +45,7 @@ MuxChip::MuxChip()
     mOutputPinA.set(4.5, 1.25, this, "Output");
     mPin.push_back(&mOutputPinB);
     mOutputPinB.set(4.5, 3.25, this, "Inverted output");
-    mTexture = load_texture("data/mux.png");
+    mTexture = load_texture(DATADIR "/mux.png");
 
 	mInputPin[0].mReadOnly = 1;
 	mInputPin[1].mReadOnly = 1;
diff --git a/src/chip/nand3chip.cpp b/src/chip/nand3chip.cpp
index e7c5e68..b315388 100644
--- a/src/chip/nand3chip.cpp
+++ b/src/chip/nand3chip.cpp
@@ -35,9 +35,9 @@ NAND3Chip::NAND3Chip(int aUS)
     mPin.push_back(&mOutputPin);
     mOutputPin.set(3.5, 0.75, this, "Output");
     if (aUS)
-        mTexture = load_texture("data/nand3_us.png");
+        mTexture = load_texture(DATADIR "/nand3_us.png");
     else
-        mTexture = load_texture("data/nand3_fi.png");
+        mTexture = load_texture(DATADIR "/nand3_fi.png");
 
 	mInputPinA.mReadOnly = 1;
 	mInputPinB.mReadOnly = 1;
diff --git a/src/chip/nand8chip.cpp b/src/chip/nand8chip.cpp
index a970750..09d9816 100644
--- a/src/chip/nand8chip.cpp
+++ b/src/chip/nand8chip.cpp
@@ -49,9 +49,9 @@ NAND8Chip::NAND8Chip(int aUS)
     mInputPin[7].set(0, ypos, this, "Input H");
     mOutputPin.set(3.5, 1.75, this, "Output");
     if (aUS)
-        mTexture = load_texture("data/nand8_us.png");
+        mTexture = load_texture(DATADIR "/nand8_us.png");
     else
-        mTexture = load_texture("data/nand8_fi.png");
+        mTexture = load_texture(DATADIR "/nand8_fi.png");
 
 	int i;
 	for (i = 0; i < 8; i++)
diff --git a/src/chip/nandchip.cpp b/src/chip/nandchip.cpp
index 3f46a9a..476593a 100644
--- a/src/chip/nandchip.cpp
+++ b/src/chip/nandchip.cpp
@@ -33,9 +33,9 @@ NANDChip::NANDChip(int aUS)
     mPin.push_back(&mOutputPin);
     mOutputPin.set(3.5, 0.75, this, "Output");
     if (aUS)
-        mTexture = load_texture("data/nand_us.png");
+        mTexture = load_texture(DATADIR "/nand_us.png");
     else
-        mTexture = load_texture("data/nand_fi.png");
+        mTexture = load_texture(DATADIR "/nand_fi.png");
 
 	mInputPinA.mReadOnly = 1;
 	mInputPinB.mReadOnly = 1;
diff --git a/src/chip/nor3chip.cpp b/src/chip/nor3chip.cpp
index 4544d75..68013ae 100644
--- a/src/chip/nor3chip.cpp
+++ b/src/chip/nor3chip.cpp
@@ -35,9 +35,9 @@ NOR3Chip::NOR3Chip(int aUS)
     mPin.push_back(&mOutputPin);
     mOutputPin.set(3.5, 0.75, this, "Output");
     if (aUS)
-        mTexture = load_texture("data/nor3_us.png");
+        mTexture = load_texture(DATADIR "/nor3_us.png");
     else
-        mTexture = load_texture("data/nor3_fi.png");
+        mTexture = load_texture(DATADIR "/nor3_fi.png");
 
 	mInputPinA.mReadOnly = 1;
 	mInputPinB.mReadOnly = 1;
diff --git a/src/chip/nor8chip.cpp b/src/chip/nor8chip.cpp
index 9b453f9..fa4e5d4 100644
--- a/src/chip/nor8chip.cpp
+++ b/src/chip/nor8chip.cpp
@@ -49,9 +49,9 @@ NOR8Chip::NOR8Chip(int aUS)
     mInputPin[7].set(0, ypos, this, "Input H");
     mOutputPin.set(3.5, 1.75, this, "Output");
     if (aUS)
-        mTexture = load_texture("data/nor8_us.png");
+        mTexture = load_texture(DATADIR "/nor8_us.png");
     else
-        mTexture = load_texture("data/nor8_fi.png");
+        mTexture = load_texture(DATADIR "/nor8_fi.png");
 
 	int i;
 	for (i = 0; i < 8; i++)
diff --git a/src/chip/norchip.cpp b/src/chip/norchip.cpp
index b35964b..65cc164 100644
--- a/src/chip/norchip.cpp
+++ b/src/chip/norchip.cpp
@@ -33,9 +33,9 @@ NORChip::NORChip(int aUS)
     mPin.push_back(&mOutputPin);
     mOutputPin.set(3.5, 0.75, this, "Output");
     if (aUS)
-        mTexture = load_texture("data/nor_us.png");
+        mTexture = load_texture(DATADIR "/nor_us.png");
     else
-        mTexture = load_texture("data/nor_fi.png");
+        mTexture = load_texture(DATADIR "/nor_fi.png");
 
 	mInputPinA.mReadOnly = 1;
 	mInputPinB.mReadOnly = 1;
diff --git a/src/chip/notchip.cpp b/src/chip/notchip.cpp
index 3302c8f..c4cb950 100644
--- a/src/chip/notchip.cpp
+++ b/src/chip/notchip.cpp
@@ -31,9 +31,9 @@ NOTChip::NOTChip(int aUS)
     mPin.push_back(&mOutputPin);
     mOutputPin.set(3.5, 0.75, this, "Output");
     if (aUS)
-        mTexture = load_texture("data/not_us.png");
+        mTexture = load_texture(DATADIR "/not_us.png");
     else
-        mTexture = load_texture("data/not_fi.png");
+        mTexture = load_texture(DATADIR "/not_fi.png");
 
 	mInputPin.mReadOnly = 1;
 }
diff --git a/src/chip/or3chip.cpp b/src/chip/or3chip.cpp
index 636e817..3b3cb02 100644
--- a/src/chip/or3chip.cpp
+++ b/src/chip/or3chip.cpp
@@ -35,9 +35,9 @@ OR3Chip::OR3Chip(int aUS)
     mPin.push_back(&mOutputPin);
     mOutputPin.set(3.5, 0.75, this, "Output");
     if (aUS)
-        mTexture = load_texture("data/or3_us.png");
+        mTexture = load_texture(DATADIR "/or3_us.png");
     else
-        mTexture = load_texture("data/or3_fi.png");
+        mTexture = load_texture(DATADIR "/or3_fi.png");
 
 	mInputPinA.mReadOnly = 1;
 	mInputPinB.mReadOnly = 1;
diff --git a/src/chip/or8chip.cpp b/src/chip/or8chip.cpp
index 0f95d13..da26e3e 100644
--- a/src/chip/or8chip.cpp
+++ b/src/chip/or8chip.cpp
@@ -49,9 +49,9 @@ OR8Chip::OR8Chip(int aUS)
     mInputPin[7].set(0, ypos, this, "Input H");
     mOutputPin.set(3.5, 1.75, this, "Output");
     if (aUS)
-        mTexture = load_texture("data/or8_us.png");
+        mTexture = load_texture(DATADIR "/or8_us.png");
     else
-        mTexture = load_texture("data/or8_fi.png");
+        mTexture = load_texture(DATADIR "/or8_fi.png");
 
 	int i;
 	for (i = 0; i < 8; i++)
diff --git a/src/chip/orchip.cpp b/src/chip/orchip.cpp
index 15ae73f..fc32456 100644
--- a/src/chip/orchip.cpp
+++ b/src/chip/orchip.cpp
@@ -33,9 +33,9 @@ ORChip::ORChip(int aUS)
     mPin.push_back(&mOutputPin);
     mOutputPin.set(3.5, 0.75, this, "Output");
     if (aUS)
-        mTexture = load_texture("data/or_us.png");
+        mTexture = load_texture(DATADIR "/or_us.png");
     else
-        mTexture = load_texture("data/or_fi.png");
+        mTexture = load_texture(DATADIR "/or_fi.png");
 
 	mInputPinA.mReadOnly = 1;
 	mInputPinB.mReadOnly = 1;
diff --git a/src/chip/sedchip.cpp b/src/chip/sedchip.cpp
index 9f229e9..1298a9e 100644
--- a/src/chip/sedchip.cpp
+++ b/src/chip/sedchip.cpp
@@ -30,8 +30,8 @@ SEDChip::SEDChip()
     set(0, 0, 1, 2.5, "Smoke Emitting Diode");
     mPin.push_back(&mInputPin);
     mInputPin.set((mW-0.5)/2, mH-0.5, this, "Input");
-    mBaseTexture = load_texture("data/sed.png");
-    mFlareTexture = load_texture("data/sedr.png");
+    mBaseTexture = load_texture(DATADIR "/sed.png");
+    mFlareTexture = load_texture(DATADIR "/sedr.png");
     for (i = 0; i < 32; i++)
         mParticle[i].live = 0;
 
diff --git a/src/chip/serchip.cpp b/src/chip/serchip.cpp
index 40b9032..cb2d421 100644
--- a/src/chip/serchip.cpp
+++ b/src/chip/serchip.cpp
@@ -36,7 +36,7 @@ SERChip::SERChip()
     mOutputPinA.set(3.5, 0.25, this, "Output");
     mPin.push_back(&mOutputPinB);
     mOutputPinB.set(3.5, 1.25, this, "Inverted output");
-    mTexture = load_texture("data/ser.png");
+    mTexture = load_texture(DATADIR "/ser.png");
 
 	mInputPinA.mReadOnly = 1;
 	mInputPinB.mReadOnly = 1;
diff --git a/src/chip/srchip.cpp b/src/chip/srchip.cpp
index 5cc3e0d..13caa19 100644
--- a/src/chip/srchip.cpp
+++ b/src/chip/srchip.cpp
@@ -34,7 +34,7 @@ SRChip::SRChip()
     mOutputPinA.set(3.5, 0.25, this, "Output");
     mPin.push_back(&mOutputPinB);
     mOutputPinB.set(3.5, 1.25, this, "Inverted output");
-    mTexture = load_texture("data/sr.png");
+    mTexture = load_texture(DATADIR "/sr.png");
     mOldState = 0;
 
 	mInputPinA.mReadOnly = 1;
diff --git a/src/chip/srflipflop.cpp b/src/chip/srflipflop.cpp
index 1507295..db0e426 100644
--- a/src/chip/srflipflop.cpp
+++ b/src/chip/srflipflop.cpp
@@ -37,7 +37,7 @@ SRFlipFlop::SRFlipFlop()
     mOutputPinA.set(4.5, 1.25, this, "Output");
     mPin.push_back(&mOutputPinB);
     mOutputPinB.set(4.5, 3.25, this, "Inverted output");
-    mTexture = load_texture("data/sr_flipflop.png");
+    mTexture = load_texture(DATADIR "/sr_flipflop.png");
     mState = 0;
     mClock = 0;
 
diff --git a/src/chip/srnegchip.cpp b/src/chip/srnegchip.cpp
index d6264f7..a025cef 100644
--- a/src/chip/srnegchip.cpp
+++ b/src/chip/srnegchip.cpp
@@ -34,7 +34,7 @@ SRNegChip::SRNegChip()
     mOutputPinA.set(3.5, 0.25, this, "Output");
     mPin.push_back(&mOutputPinB);
     mOutputPinB.set(3.5, 1.25, this, "Inverted output");
-    mTexture = load_texture("data/sr_neg.png");
+    mTexture = load_texture(DATADIR "/sr_neg.png");
     mOldState = 0;
 
 	mInputPinA.mReadOnly = 1;
diff --git a/src/chip/staticlevelchip.cpp b/src/chip/staticlevelchip.cpp
index 212a2b3..22f93cb 100644
--- a/src/chip/staticlevelchip.cpp
+++ b/src/chip/staticlevelchip.cpp
@@ -31,12 +31,12 @@ StaticLevelChip::StaticLevelChip(int aLevel)
     if (aLevel)
     {
         mOutputPin.set(0.75, 1.5, this, "Output");
-        mTexture = load_texture("data/vcc.png");
+        mTexture = load_texture(DATADIR "/vcc.png");
     }
     else
     {
         mOutputPin.set(0.75, 0, this, "Output");
-        mTexture = load_texture("data/gnd.png");
+        mTexture = load_texture(DATADIR "/gnd.png");
     }
 }
 
diff --git a/src/chip/stepper.cpp b/src/chip/stepper.cpp
index ca26e3b..1f12d9d 100644
--- a/src/chip/stepper.cpp
+++ b/src/chip/stepper.cpp
@@ -57,7 +57,7 @@ StepperMotor::StepperMotor(int aMode)
 
     mCurrentBits = 3;
     mCurrentAngle = 0;
-    mTexture = load_texture("data/stepper.png");    
+    mTexture = load_texture(DATADIR "/stepper.png");    
 }
 
 void drawarrow(float x, float y, float angle, int color)
diff --git a/src/chip/switchchip.cpp b/src/chip/switchchip.cpp
index d2a024d..838f0c9 100644
--- a/src/chip/switchchip.cpp
+++ b/src/chip/switchchip.cpp
@@ -29,7 +29,7 @@ SwitchChip::SwitchChip(int aCharacter)
     set(0,0,2,2.5,NULL);
     mPin.push_back(&mOutputPin);
     mOutputPin.set(0.75, 1.9, this, "Output");
-    mTexture = load_texture("data/switch.png");
+    mTexture = load_texture(DATADIR "/switch.png");
     mPressed = 0;
 	mSwitchedOn = 0;
 }
diff --git a/src/chip/tchip.cpp b/src/chip/tchip.cpp
index 2525e89..509e92f 100644
--- a/src/chip/tchip.cpp
+++ b/src/chip/tchip.cpp
@@ -34,7 +34,7 @@ TChip::TChip()
     mOutputPinA.set(3.5, 0.25, this, "Output");
     mPin.push_back(&mOutputPinB);
     mOutputPinB.set(3.5, 1.25, this, "Inverted output");
-    mTexture = load_texture("data/t.png");
+    mTexture = load_texture(DATADIR "/t.png");
     mOldState = 0;
 
 	mInputPinA.mReadOnly = 1;
diff --git a/src/chip/tflipflop.cpp b/src/chip/tflipflop.cpp
index 4ec3293..958d5e6 100644
--- a/src/chip/tflipflop.cpp
+++ b/src/chip/tflipflop.cpp
@@ -40,7 +40,7 @@ TFlipFlop::TFlipFlop()
     mOutputPinA.set(4.5, 1.25, this, "Output");
     mPin.push_back(&mOutputPinB);
     mOutputPinB.set(4.5, 3.25, this, "Inverted output");
-    mTexture = load_texture("data/t_flipflop.png");
+    mTexture = load_texture(DATADIR "/t_flipflop.png");
     mState = 0;
     mClock = 0;
 
diff --git a/src/chip/xorchip.cpp b/src/chip/xorchip.cpp
index e072a3a..80269f0 100644
--- a/src/chip/xorchip.cpp
+++ b/src/chip/xorchip.cpp
@@ -33,9 +33,9 @@ XORChip::XORChip(int aUS)
     mPin.push_back(&mOutputPin);
     mOutputPin.set(3.5, 0.75, this, "Output");
     if (aUS)
-        mTexture = load_texture("data/xor_us.png");
+        mTexture = load_texture(DATADIR "/xor_us.png");
     else
-        mTexture = load_texture("data/xor_fi.png");
+        mTexture = load_texture(DATADIR "/xor_fi.png");
 
 	mInputPinA.mReadOnly = 1;
 	mInputPinB.mReadOnly = 1;
diff --git a/src/core/main.cpp b/src/core/main.cpp
index a92d2bc..f6833fe 100644
--- a/src/core/main.cpp
+++ b/src/core/main.cpp
@@ -1760,12 +1760,12 @@ int main(int argc, char** args)
     // For imgui - Enable keyboard UNICODE processing for the text field.
     SDL_EnableUNICODE(1);
 
-    fn.load("data/vera31.fnt");
-    fn14.load("data/vera14.fnt");
+    fn.load(DATADIR "/vera31.fnt");
+    fn14.load(DATADIR "/vera14.fnt");
 
 #ifndef __APPLE__ // Use the higher-resolution OSX icon instead
 	int x, y, n;
-	unsigned char *data = stbi_load("data/icon.png", &x, &y, &n, 4);
+	unsigned char *data = stbi_load(DATADIR "/icon.png", &x, &y, &n, 4);
     if (data)
 	{	
 		SDL_Surface *icon = SDL_CreateRGBSurfaceFrom(data,x,y,32,x*4,0x000000ff,0x0000ff00, 0x00ff0000, 0xff000000);
@@ -1779,9 +1779,9 @@ int main(int argc, char** args)
 
     if (gConfig.mCustomCursors)
     {
-        cursor_drag = load_cursor("data/cursor_drag.png", 10, 0);
-        cursor_scissors = load_cursor("data/cursor_scissors.png", 6, 6);
-        cursor_normal = load_cursor("data/cursor_ptr.png", 0, 0);
+        cursor_drag = load_cursor(DATADIR "/cursor_drag.png", 10, 0);
+        cursor_scissors = load_cursor(DATADIR "/cursor_scissors.png", 6, 6);
+        cursor_normal = load_cursor(DATADIR "/cursor_ptr.png", 0, 0);
         SDL_SetCursor(cursor_normal);
     }
 
diff --git a/src/include/atanua.h b/src/include/atanua.h
index a80e879..a0a05ac 100644
--- a/src/include/atanua.h
+++ b/src/include/atanua.h
@@ -23,6 +23,10 @@ distribution.
 #include <vector>
 #include "toolkit.h"
 
+#ifndef DATADIR
+#define DATADIR "data"
+#endif
+
 using namespace std;
 
 
@@ -214,4 +218,4 @@ extern int gSelectKeyMask;
 extern int gCloneKeyMask;
 extern int gBlackBackground;
 
-char *mystrdup(const char *data);
\ No newline at end of file
+char *mystrdup(const char *data);
-- 
2.5.0