Browse Source
- I decided to add Flatbuffers in its entirety to Galavant. I feel confident that it will work for all of my data serialization needs. Here's to hoping this doesn't bite me in the ass later. - Wrote an awful experiment involving flatbuffers to get a feel for how to use the library - Updated the readme with links and information about Jam - Jamfiles now reference eachother and all use Jamrules for compilation variables. Building from the root galavant/ now deposits libs and bins to root galavant/lib and galavant/bin, which is much more organized. So far, only experiments are built to bin (as Galavant is supposed to be a lib only)combatComponentRefactor

20 changed files with 555 additions and 29 deletions
@ -0,0 +1,2 @@ |
|||
SubDir . ; |
|||
SubInclude . src ; |
@ -0,0 +1,6 @@ |
|||
CC = gcc ; |
|||
C++ = g++ ; |
|||
LINK = g++ ; |
|||
C++FLAGS = -std=c++11 -fPIC ; # fPIC = position independent code. This is so the lib can be linked in other libs/executables |
|||
OBJECTC++FLAGS = -std=c++11 ; |
|||
HDRS = thirdParty/flatbuffers/include ; |
@ -1,9 +1,12 @@ |
|||
CC = gcc ; |
|||
C++ = g++ ; |
|||
LINK = g++ ; |
|||
C++FLAGS = -std=c++11 -fPIC ; # fPIC = position independent code. This is so the lib can be linked in other libs/executables |
|||
OBJECTC++FLAGS = -std=c++11 ; |
|||
SubDir . src ; |
|||
|
|||
Library libGalavant : GalavantMain.cpp ; |
|||
|
|||
LinkLibraries libGalavant : libGalaThirdPartyWrapper ; |
|||
|
|||
MakeLocate libGalavant.a : lib ; |
|||
|
|||
Library libGalavant : GalavantMain.cpp ; |
|||
SubInclude . src thirdPartyWrapper ; |
|||
|
|||
# Experiments (feel free to remove this if desired) |
|||
SubInclude . src experiments ; |
@ -0,0 +1,5 @@ |
|||
SubDir . src experiments ; |
|||
|
|||
SubInclude . src experiments flatbuffers ; |
|||
SubInclude . src experiments noise ; |
|||
SubInclude . src experiments threading ; |
@ -0,0 +1,5 @@ |
|||
SubDir . src experiments flatbuffers ; |
|||
|
|||
Main testFlatbuffers : testFlatbuffers.cpp ; |
|||
|
|||
MakeLocate testFlatbuffers : bin ; |
@ -0,0 +1,8 @@ |
|||
namespace Galavant.Test; |
|||
|
|||
table HelloReply |
|||
{ |
|||
message:string; |
|||
} |
|||
|
|||
root_type HelloReply; |
@ -0,0 +1,85 @@ |
|||
// automatically generated by the FlatBuffers compiler, do not modify
|
|||
|
|||
#ifndef FLATBUFFERS_GENERATED_ANOTHERBOGUSSCHEMA_GALAVANT_TEST_H_ |
|||
#define FLATBUFFERS_GENERATED_ANOTHERBOGUSSCHEMA_GALAVANT_TEST_H_ |
|||
|
|||
#include "flatbuffers/flatbuffers.h" |
|||
|
|||
namespace Galavant |
|||
{ |
|||
namespace Test |
|||
{ |
|||
struct HelloReply; |
|||
|
|||
struct HelloReply FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table |
|||
{ |
|||
enum |
|||
{ |
|||
VT_MESSAGE = 4 |
|||
}; |
|||
const flatbuffers::String *message() const |
|||
{ |
|||
return GetPointer<const flatbuffers::String *>(VT_MESSAGE); |
|||
} |
|||
bool Verify(flatbuffers::Verifier &verifier) const |
|||
{ |
|||
return VerifyTableStart(verifier) && |
|||
VerifyField<flatbuffers::uoffset_t>(verifier, VT_MESSAGE) && |
|||
verifier.Verify(message()) && verifier.EndTable(); |
|||
} |
|||
}; |
|||
|
|||
struct HelloReplyBuilder |
|||
{ |
|||
flatbuffers::FlatBufferBuilder &fbb_; |
|||
flatbuffers::uoffset_t start_; |
|||
void add_message(flatbuffers::Offset<flatbuffers::String> message) |
|||
{ |
|||
fbb_.AddOffset(HelloReply::VT_MESSAGE, message); |
|||
} |
|||
HelloReplyBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) |
|||
{ |
|||
start_ = fbb_.StartTable(); |
|||
} |
|||
HelloReplyBuilder &operator=(const HelloReplyBuilder &); |
|||
flatbuffers::Offset<HelloReply> Finish() |
|||
{ |
|||
auto o = flatbuffers::Offset<HelloReply>(fbb_.EndTable(start_, 1)); |
|||
return o; |
|||
} |
|||
}; |
|||
|
|||
inline flatbuffers::Offset<HelloReply> CreateHelloReply( |
|||
flatbuffers::FlatBufferBuilder &_fbb, flatbuffers::Offset<flatbuffers::String> message = 0) |
|||
{ |
|||
HelloReplyBuilder builder_(_fbb); |
|||
builder_.add_message(message); |
|||
return builder_.Finish(); |
|||
} |
|||
|
|||
inline flatbuffers::Offset<HelloReply> CreateHelloReplyDirect(flatbuffers::FlatBufferBuilder &_fbb, |
|||
const char *message = nullptr) |
|||
{ |
|||
return CreateHelloReply(_fbb, message ? _fbb.CreateString(message) : 0); |
|||
} |
|||
|
|||
inline const Galavant::Test::HelloReply *GetHelloReply(const void *buf) |
|||
{ |
|||
return flatbuffers::GetRoot<Galavant::Test::HelloReply>(buf); |
|||
} |
|||
|
|||
inline bool VerifyHelloReplyBuffer(flatbuffers::Verifier &verifier) |
|||
{ |
|||
return verifier.VerifyBuffer<Galavant::Test::HelloReply>(nullptr); |
|||
} |
|||
|
|||
inline void FinishHelloReplyBuffer(flatbuffers::FlatBufferBuilder &fbb, |
|||
flatbuffers::Offset<Galavant::Test::HelloReply> root) |
|||
{ |
|||
fbb.Finish(root); |
|||
} |
|||
|
|||
} // namespace Test
|
|||
} // namespace Galavant
|
|||
|
|||
#endif // FLATBUFFERS_GENERATED_ANOTHERBOGUSSCHEMA_GALAVANT_TEST_H_
|
@ -0,0 +1,14 @@ |
|||
include "anotherBogusSchema.flb"; |
|||
|
|||
namespace Galavant.Test; |
|||
|
|||
enum FuckYou:byte { FuckYou = 0, FuckYouToo } |
|||
|
|||
table Hello |
|||
{ |
|||
status:FuckYou = FuckYou; |
|||
value:int = 1232; |
|||
message:HelloReply; |
|||
} |
|||
|
|||
root_type Hello; |
@ -0,0 +1,122 @@ |
|||
// automatically generated by the FlatBuffers compiler, do not modify
|
|||
|
|||
#ifndef FLATBUFFERS_GENERATED_BOGUSSCHEMA_GALAVANT_TEST_H_ |
|||
#define FLATBUFFERS_GENERATED_BOGUSSCHEMA_GALAVANT_TEST_H_ |
|||
|
|||
#include "flatbuffers/flatbuffers.h" |
|||
|
|||
#include "anotherBogusSchema_generated.h" |
|||
|
|||
namespace Galavant |
|||
{ |
|||
namespace Test |
|||
{ |
|||
struct Hello; |
|||
|
|||
enum FuckYou |
|||
{ |
|||
FuckYou_FuckYou = 0, |
|||
FuckYou_FuckYouToo = 1, |
|||
FuckYou_MIN = FuckYou_FuckYou, |
|||
FuckYou_MAX = FuckYou_FuckYouToo |
|||
}; |
|||
|
|||
inline const char **EnumNamesFuckYou() |
|||
{ |
|||
static const char *names[] = {"FuckYou", "FuckYouToo", nullptr}; |
|||
return names; |
|||
} |
|||
|
|||
inline const char *EnumNameFuckYou(FuckYou e) |
|||
{ |
|||
return EnumNamesFuckYou()[static_cast<int>(e)]; |
|||
} |
|||
|
|||
struct Hello FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table |
|||
{ |
|||
enum |
|||
{ |
|||
VT_STATUS = 4, |
|||
VT_VALUE = 6, |
|||
VT_MESSAGE = 8 |
|||
}; |
|||
FuckYou status() const |
|||
{ |
|||
return static_cast<FuckYou>(GetField<int8_t>(VT_STATUS, 0)); |
|||
} |
|||
int32_t value() const |
|||
{ |
|||
return GetField<int32_t>(VT_VALUE, 1232); |
|||
} |
|||
const Galavant::Test::HelloReply *message() const |
|||
{ |
|||
return GetPointer<const Galavant::Test::HelloReply *>(VT_MESSAGE); |
|||
} |
|||
bool Verify(flatbuffers::Verifier &verifier) const |
|||
{ |
|||
return VerifyTableStart(verifier) && VerifyField<int8_t>(verifier, VT_STATUS) && |
|||
VerifyField<int32_t>(verifier, VT_VALUE) && |
|||
VerifyField<flatbuffers::uoffset_t>(verifier, VT_MESSAGE) && |
|||
verifier.VerifyTable(message()) && verifier.EndTable(); |
|||
} |
|||
}; |
|||
|
|||
struct HelloBuilder |
|||
{ |
|||
flatbuffers::FlatBufferBuilder &fbb_; |
|||
flatbuffers::uoffset_t start_; |
|||
void add_status(FuckYou status) |
|||
{ |
|||
fbb_.AddElement<int8_t>(Hello::VT_STATUS, static_cast<int8_t>(status), 0); |
|||
} |
|||
void add_value(int32_t value) |
|||
{ |
|||
fbb_.AddElement<int32_t>(Hello::VT_VALUE, value, 1232); |
|||
} |
|||
void add_message(flatbuffers::Offset<Galavant::Test::HelloReply> message) |
|||
{ |
|||
fbb_.AddOffset(Hello::VT_MESSAGE, message); |
|||
} |
|||
HelloBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) |
|||
{ |
|||
start_ = fbb_.StartTable(); |
|||
} |
|||
HelloBuilder &operator=(const HelloBuilder &); |
|||
flatbuffers::Offset<Hello> Finish() |
|||
{ |
|||
auto o = flatbuffers::Offset<Hello>(fbb_.EndTable(start_, 3)); |
|||
return o; |
|||
} |
|||
}; |
|||
|
|||
inline flatbuffers::Offset<Hello> CreateHello( |
|||
flatbuffers::FlatBufferBuilder &_fbb, FuckYou status = FuckYou_FuckYou, int32_t value = 1232, |
|||
flatbuffers::Offset<Galavant::Test::HelloReply> message = 0) |
|||
{ |
|||
HelloBuilder builder_(_fbb); |
|||
builder_.add_message(message); |
|||
builder_.add_value(value); |
|||
builder_.add_status(status); |
|||
return builder_.Finish(); |
|||
} |
|||
|
|||
inline const Galavant::Test::Hello *GetHello(const void *buf) |
|||
{ |
|||
return flatbuffers::GetRoot<Galavant::Test::Hello>(buf); |
|||
} |
|||
|
|||
inline bool VerifyHelloBuffer(flatbuffers::Verifier &verifier) |
|||
{ |
|||
return verifier.VerifyBuffer<Galavant::Test::Hello>(nullptr); |
|||
} |
|||
|
|||
inline void FinishHelloBuffer(flatbuffers::FlatBufferBuilder &fbb, |
|||
flatbuffers::Offset<Galavant::Test::Hello> root) |
|||
{ |
|||
fbb.Finish(root); |
|||
} |
|||
|
|||
} // namespace Test
|
|||
} // namespace Galavant
|
|||
|
|||
#endif // FLATBUFFERS_GENERATED_BOGUSSCHEMA_GALAVANT_TEST_H_
|
@ -0,0 +1,10 @@ |
|||
include "bogusSchema.flb"; |
|||
|
|||
namespace Galavant.Test; |
|||
|
|||
table HelloDict |
|||
{ |
|||
helloArray:[Hello]; |
|||
} |
|||
|
|||
root_type HelloDict; |
@ -0,0 +1,98 @@ |
|||
// automatically generated by the FlatBuffers compiler, do not modify
|
|||
|
|||
#ifndef FLATBUFFERS_GENERATED_LASTBOGUSSCHEMA_GALAVANT_TEST_H_ |
|||
#define FLATBUFFERS_GENERATED_LASTBOGUSSCHEMA_GALAVANT_TEST_H_ |
|||
|
|||
#include "flatbuffers/flatbuffers.h" |
|||
|
|||
#include "anotherBogusSchema_generated.h" |
|||
#include "bogusSchema_generated.h" |
|||
|
|||
namespace Galavant |
|||
{ |
|||
namespace Test |
|||
{ |
|||
struct HelloDict; |
|||
|
|||
struct HelloDict FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table |
|||
{ |
|||
enum |
|||
{ |
|||
VT_HELLOARRAY = 4 |
|||
}; |
|||
const flatbuffers::Vector<flatbuffers::Offset<Galavant::Test::Hello> > *helloArray() const |
|||
{ |
|||
return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<Galavant::Test::Hello> > *>( |
|||
VT_HELLOARRAY); |
|||
} |
|||
bool Verify(flatbuffers::Verifier &verifier) const |
|||
{ |
|||
return VerifyTableStart(verifier) && |
|||
VerifyField<flatbuffers::uoffset_t>(verifier, VT_HELLOARRAY) && |
|||
verifier.Verify(helloArray()) && verifier.VerifyVectorOfTables(helloArray()) && |
|||
verifier.EndTable(); |
|||
} |
|||
}; |
|||
|
|||
struct HelloDictBuilder |
|||
{ |
|||
flatbuffers::FlatBufferBuilder &fbb_; |
|||
flatbuffers::uoffset_t start_; |
|||
void add_helloArray( |
|||
flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<Galavant::Test::Hello> > > |
|||
helloArray) |
|||
{ |
|||
fbb_.AddOffset(HelloDict::VT_HELLOARRAY, helloArray); |
|||
} |
|||
HelloDictBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) |
|||
{ |
|||
start_ = fbb_.StartTable(); |
|||
} |
|||
HelloDictBuilder &operator=(const HelloDictBuilder &); |
|||
flatbuffers::Offset<HelloDict> Finish() |
|||
{ |
|||
auto o = flatbuffers::Offset<HelloDict>(fbb_.EndTable(start_, 1)); |
|||
return o; |
|||
} |
|||
}; |
|||
|
|||
inline flatbuffers::Offset<HelloDict> CreateHelloDict( |
|||
flatbuffers::FlatBufferBuilder &_fbb, |
|||
flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<Galavant::Test::Hello> > > |
|||
helloArray = 0) |
|||
{ |
|||
HelloDictBuilder builder_(_fbb); |
|||
builder_.add_helloArray(helloArray); |
|||
return builder_.Finish(); |
|||
} |
|||
|
|||
inline flatbuffers::Offset<HelloDict> CreateHelloDictDirect( |
|||
flatbuffers::FlatBufferBuilder &_fbb, |
|||
const std::vector<flatbuffers::Offset<Galavant::Test::Hello> > *helloArray = nullptr) |
|||
{ |
|||
return CreateHelloDict( |
|||
_fbb, helloArray ? |
|||
_fbb.CreateVector<flatbuffers::Offset<Galavant::Test::Hello> >(*helloArray) : |
|||
0); |
|||
} |
|||
|
|||
inline const Galavant::Test::HelloDict *GetHelloDict(const void *buf) |
|||
{ |
|||
return flatbuffers::GetRoot<Galavant::Test::HelloDict>(buf); |
|||
} |
|||
|
|||
inline bool VerifyHelloDictBuffer(flatbuffers::Verifier &verifier) |
|||
{ |
|||
return verifier.VerifyBuffer<Galavant::Test::HelloDict>(nullptr); |
|||
} |
|||
|
|||
inline void FinishHelloDictBuffer(flatbuffers::FlatBufferBuilder &fbb, |
|||
flatbuffers::Offset<Galavant::Test::HelloDict> root) |
|||
{ |
|||
fbb.Finish(root); |
|||
} |
|||
|
|||
} // namespace Test
|
|||
} // namespace Galavant
|
|||
|
|||
#endif // FLATBUFFERS_GENERATED_LASTBOGUSSCHEMA_GALAVANT_TEST_H_
|
@ -0,0 +1,162 @@ |
|||
#include <vector> |
|||
#include <iostream> |
|||
#include <fstream> |
|||
|
|||
#include "bogusSchema_generated.h" |
|||
#include "lastBogusSchema_generated.h" |
|||
|
|||
// This is awful code written only to test flatbuffers. It should be burned in hell.
|
|||
|
|||
void printHello(const Galavant::Test::Hello *hello) |
|||
{ |
|||
if (hello) |
|||
{ |
|||
std::string message = hello->message() ? hello->message()->message()->str() : ""; |
|||
std::cout << "From buffer:\n\tstatus: " << Galavant::Test::EnumNameFuckYou(hello->status()) |
|||
<< " value: " << hello->value() << " message: \"" << message << "\"\n"; |
|||
} |
|||
} |
|||
|
|||
void writeBuffer(flatbuffers::FlatBufferBuilder &builder) |
|||
{ |
|||
std::ofstream outputFile; |
|||
|
|||
std::cout << "Writing out SavedHello.bin...\n"; |
|||
|
|||
outputFile.open("SavedHello.bin", std::ios::binary); |
|||
if (outputFile.is_open()) |
|||
{ |
|||
// outputFile.seekg(0, std::ios::beg);
|
|||
outputFile.write((char *)builder.GetBufferPointer(), builder.GetSize()); |
|||
outputFile.close(); |
|||
|
|||
std::cout << "Done writing to SavedHello.bin\n\t(" << builder.GetSize() << " bytes)\n"; |
|||
} |
|||
else |
|||
std::cout << "Failed to write out to SavedHello.bin\n"; |
|||
} |
|||
|
|||
char *readBuffer() |
|||
{ |
|||
std::ifstream inputFile; |
|||
|
|||
std::cout << "Reading in SavedHello.bin...\n"; |
|||
|
|||
// open with std::ios::ate so buffer pointer starts at end. tellg() tells us the size,
|
|||
// then we move the pointer back to the start and read in the entire file
|
|||
// This sucks and I should be ashamed to have written it
|
|||
inputFile.open("SavedHello.bin", std::ios::binary | std::ios::ate); |
|||
if (inputFile.is_open()) |
|||
{ |
|||
std::streampos size = inputFile.tellg(); |
|||
char *memblock = new char[size]; |
|||
inputFile.seekg(0, std::ios::beg); |
|||
inputFile.read(memblock, size); |
|||
inputFile.close(); |
|||
|
|||
std::cout << "Successfully read in SavedHello.bin\n\t(" << size << " bytes)\n"; |
|||
return memblock; |
|||
} |
|||
else |
|||
std::cout << "Failed to read in SavedHello.bin\n"; |
|||
|
|||
return nullptr; |
|||
} |
|||
|
|||
void createPlaceholderHelloArray(std::vector<flatbuffers::Offset<Galavant::Test::Hello> > &array, |
|||
flatbuffers::FlatBufferBuilder &builder, int count) |
|||
{ |
|||
for (int i = 0; i < count; i++) |
|||
{ |
|||
flatbuffers::Offset<flatbuffers::String> messageString = |
|||
builder.CreateString("This is the message!!!1 hello codegomad, mckenna and 123ran"); |
|||
|
|||
flatbuffers::Offset<Galavant::Test::HelloReply> message = |
|||
Galavant::Test::CreateHelloReply(builder, messageString); |
|||
|
|||
flatbuffers::Offset<Galavant::Test::Hello> testHello = Galavant::Test::CreateHello( |
|||
builder, Galavant::Test::FuckYou::FuckYou_FuckYouToo, i, message); |
|||
|
|||
array.push_back(testHello); |
|||
} |
|||
} |
|||
|
|||
void testHellos() |
|||
{ |
|||
flatbuffers::FlatBufferBuilder builder; |
|||
|
|||
flatbuffers::Offset<flatbuffers::String> messageString = |
|||
builder.CreateString("This is the message!!!1 hello codegomad and 123ran"); |
|||
|
|||
flatbuffers::Offset<Galavant::Test::HelloReply> message = |
|||
Galavant::Test::CreateHelloReply(builder, messageString); |
|||
|
|||
flatbuffers::Offset<Galavant::Test::Hello> testHello = Galavant::Test::CreateHello( |
|||
builder, Galavant::Test::FuckYou::FuckYou_FuckYouToo, 58008, message); |
|||
|
|||
builder.Finish(testHello); |
|||
|
|||
const Galavant::Test::Hello *actualHello = Galavant::Test::GetHello(builder.GetBufferPointer()); |
|||
|
|||
printHello(actualHello); |
|||
|
|||
writeBuffer(builder); |
|||
|
|||
char *memblock = readBuffer(); |
|||
if (memblock) |
|||
{ |
|||
const Galavant::Test::Hello *readInHello = Galavant::Test::GetHello(memblock); |
|||
printHello(readInHello); |
|||
delete memblock; |
|||
} |
|||
} |
|||
|
|||
void testHelloDict() |
|||
{ |
|||
flatbuffers::FlatBufferBuilder builder; |
|||
std::vector<flatbuffers::Offset<Galavant::Test::Hello> > helloArray; |
|||
|
|||
createPlaceholderHelloArray(helloArray, builder, 10000); |
|||
|
|||
flatbuffers::Offset<Galavant::Test::HelloDict> helloDict = |
|||
Galavant::Test::CreateHelloDictDirect(builder, &helloArray); |
|||
|
|||
builder.Finish(helloDict); |
|||
|
|||
writeBuffer(builder); |
|||
|
|||
char *memblock = readBuffer(); |
|||
if (memblock) |
|||
{ |
|||
const Galavant::Test::HelloDict *readInHelloDict = Galavant::Test::GetHelloDict(memblock); |
|||
|
|||
if (readInHelloDict) |
|||
{ |
|||
const flatbuffers::Vector<flatbuffers::Offset<Galavant::Test::Hello> > *helloArray = |
|||
readInHelloDict->helloArray(); |
|||
|
|||
if (helloArray) |
|||
{ |
|||
for (int i = 0; i < helloArray->Length(); i++) |
|||
{ |
|||
const Galavant::Test::Hello *readInHello = helloArray->Get(i); |
|||
|
|||
if (readInHello) |
|||
printHello(readInHello); |
|||
} |
|||
} |
|||
} |
|||
|
|||
delete memblock; |
|||
} |
|||
} |
|||
|
|||
int main() |
|||
{ |
|||
std::cout << "Test Flatbuffers\n"; |
|||
|
|||
testHellos(); |
|||
testHelloDict(); |
|||
|
|||
return 1; |
|||
} |
@ -1,7 +1,7 @@ |
|||
CC = gcc ; |
|||
C++ = g++ ; |
|||
LINK = g++ ; |
|||
C++FLAGS = -std=c++11 ; |
|||
OBJECTC++FLAGS = -std=c++11 ; |
|||
SubDir . src experiments noise ; |
|||
|
|||
Main simple2dNoiseTest : simple2dNoiseTest.cpp ; |
|||
LinkLibraries simple2dNoiseTest : ../../thirdPartyWrapper/lib/libGalaThirdPartyWrapper.a ; |
|||
|
|||
LinkLibraries simple2dNoiseTest : libGalaThirdPartyWrapper ; |
|||
|
|||
MakeLocate simple2dNoiseTest : bin ; |
@ -1,6 +1,5 @@ |
|||
CC = gcc ; |
|||
C++ = g++ ; |
|||
LINK = g++ ; |
|||
C++FLAGS = -std=c++11 ; |
|||
OBJECTC++FLAGS = -std=c++11 ; |
|||
Main multithreading : multithreading.cpp ; |
|||
SubDir . src experiments threading ; |
|||
|
|||
Main multithreading : multithreading.cpp ; |
|||
|
|||
MakeLocate multithreading : bin ; |
@ -1,9 +1,5 @@ |
|||
CC = gcc ; |
|||
C++ = g++ ; |
|||
LINK = g++ ; |
|||
C++FLAGS = -std=c++11 -fPIC ; # fPIC = position independent code. This is so the thirdPartyWrapper can be linked in other libs/executables |
|||
OBJECTC++FLAGS = -std=c++11 ; |
|||
SubDir . src thirdPartyWrapper ; |
|||
|
|||
MakeLocate libGalaThirdPartyWrapper.a : lib ; |
|||
Library libGalaThirdPartyWrapper : noise/noise.cpp ; |
|||
|
|||
Library libGalaThirdPartyWrapper : noise/noise.cpp ; |
|||
MakeLocate libGalaThirdPartyWrapper.a : lib/thirdPartyWrapper ; |
Loading…
Reference in new issue