1. Attachments are working again! Check out this thread for more details and to report any other bugs.

Compiling for Mac...

Discussion in 'PriiDash (TM)' started by Tantousha, Sep 6, 2012.

  1. Tantousha

    Tantousha Junior Member

    Joined:
    Aug 2, 2012
    9
    0
    0
    Vehicle:
    2001 Prius
    Model:
    I
    Hey hey!

    I am a Mac user and am hoping to learn how to get this program compiled and running on my Mac. I know mac supports X11 and I have it installed and up and running on my machine, I just have no idea how to compile from source... Anyone interested in helping me out? For Linux/Unix nerds It's the bash terminal I'm using....

    Thanks!

    Alex.
     
  2. 2009Prius

    2009Prius A Wimpy DIYer

    Joined:
    Mar 25, 2009
    2,705
    510
    63
    Location:
    USA
    Vehicle:
    2009 Prius
  3. Tantousha

    Tantousha Junior Member

    Joined:
    Aug 2, 2012
    9
    0
    0
    Vehicle:
    2001 Prius
    Model:
    I
    Thanks for the steps in the right direction but this is still way to big for me... You mentioned X11, I can run X11 natively within Mac OS X but where is that compiled? another file I download?

    Thank you for your patience and help!!
     
  4. 2009Prius

    2009Prius A Wimpy DIYer

    Joined:
    Mar 25, 2009
    2,705
    510
    63
    Location:
    USA
    Vehicle:
    2009 Prius
    Not sure I understand the question. Since the Mac runs X11, you don't need to do anything extra. Just compile the PriiDash source code using a C++ compiler for the Mac. Then run it from an X11 terminal to see if it works.
     
  5. bengarland

    bengarland Junior Member

    Joined:
    May 21, 2008
    21
    7
    0
    Location:
    Sonoma County, CA
    Vehicle:
    2008 Prius
    Model:
    N/A
    Yeah, does anyone know how to make this work on the Mac? Here's what I did:

    - Installed XCode, XCode command line tools, and X11
    - Installed the brew package manager
    - Used brew to install FLTK and Boost
    - Downloaded muParserX and dropped all .h files into the PriiDash source folder (it appeared to look for them here and quit generating "not found" messages for muParserX once I did that)

    I am now on the command line in the PriiDash source folder and trying to build UI.cpp -- I'm just guessing that this is the file to start with. I'm not a UNIX expert, but most of the time I have compiled command line tools it has been with make and install. But that isn't here.

    I am then doing this at the command prompt:

    clang++ -v UI.cpp

    (I also tried g++ but from what I read clang++ is preferred)

    This is the output below. The main error seems to be "Undefined symbols for architecture x86_64:"

    Can anyone help?


    Apple LLVM version 4.2 (clang-425.0.28) (based on LLVM 3.2svn)
    Target: x86_64-apple-darwin12.4.0
    Thread model: posix
    "/usr/bin/clang" -cc1 -triple x86_64-apple-macosx10.8.0 -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -main-file-name UI.cpp -pic-level 2 -mdisable-fp-elim -masm-verbose -munwind-tables -target-cpu core2 -target-linker-version 136 -v -resource-dir /usr/bin/../lib/clang/4.2 -fmodule-cache-path /var/folders/r4/x1c3hk_159q50rxcl0dc54rc0000gn/T/clang-module-cache -fdeprecated-macro -fdebug-compilation-dir /Users/benjammin/Downloads/priidash2/source -ferror-limit 19 -fmessage-length 115 -stack-protector 1 -mstackrealign -fblocks -fobjc-runtime=macosx-10.8.0 -fobjc-dispatch-method=mixed -fobjc-default-synthesize-properties -fcxx-exceptions -fexceptions -fdiagnostics-show-option -fcolor-diagnostics -o /var/folders/r4/x1c3hk_159q50rxcl0dc54rc0000gn/T/UI-V8KySA.o -x c++ UI.cpp
    clang -cc1 version 4.2 based upon LLVM 3.2svn default target x86_64-apple-darwin12.4.0
    ignoring nonexistent directory "/usr/include/c++/4.2.1/i686-apple-darwin10/x86_64"
    ignoring nonexistent directory "/usr/include/c++/4.0.0"
    ignoring nonexistent directory "/usr/include/c++/4.0.0/i686-apple-darwin8/"
    ignoring nonexistent directory "/usr/include/c++/4.0.0/backward"
    #include "..." search starts here:
    #include <...> search starts here:
    /usr/include/c++/4.2.1
    /usr/include/c++/4.2.1/backward
    /usr/local/include
    /usr/bin/../lib/clang/4.2/include
    /usr/include
    /System/Library/Frameworks (framework directory)
    /Library/Frameworks (framework directory)
    End of search list.
    UI.cpp:306:24: warning: format string is not a string literal (potentially insecure) [-Wformat-security]
    printf(msg); logtime(mytime0, fplog, msg);
    ^~~
    UI.cpp:334:24: warning: enumeration values 'Simulation' and 'queryonly' not handled in switch [-Wswitch]
    switch(UIruntype){
    ^
    UI.cpp:341:24: warning: enumeration values 'Simulation' and 'ATMAlogonly' not handled in switch [-Wswitch]
    switch(UIruntype){
    ^
    UI.cpp:424:33: warning: enumeration values 'Simulation' and 'ATMAlogonly' not handled in switch [-Wswitch]
    switch (UIruntype){
    ^
    4 warnings generated.
    "/usr/bin/ld" -demangle -dynamic -arch x86_64 -macosx_version_min 10.8.0 -o a.out /var/folders/r4/x1c3hk_159q50rxcl0dc54rc0000gn/T/UI-V8KySA.o -lstdc++ -lSystem /usr/bin/../lib/clang/4.2/lib/darwin/libclang_rt.osx.a
    Undefined symbols for architecture x86_64:
    "_OBDUSB_portname", referenced from:
    runUI() in UI-V8KySA.o
    "_OBDUSB_portname2", referenced from:
    runUI() in UI-V8KySA.o
    "_OBDheaderON", referenced from:
    runUI() in UI-V8KySA.o
    "_QuitProgram", referenced from:
    runUI() in UI-V8KySA.o
    "seticonfixed(Fl_Window*)", referenced from:
    runUI() in UI-V8KySA.o
    "init_filenames()", referenced from:
    setUIstate(UI_state_Type) in UI-V8KySA.o
    "getdatetimeclockstr(char*)", referenced from:
    runUI() in UI-V8KySA.o
    "wait(double)", referenced from:
    runUI() in UI-V8KySA.o
    simulategauges(Gauges*, Car_Data*) in UI-V8KySA.o
    "gettime()", referenced from:
    runUI() in UI-V8KySA.o
    simulategauges(Gauges*, Car_Data*) in UI-V8KySA.o
    "logtime(double, __sFILE*, char const*)", referenced from:
    runUI() in UI-V8KySA.o
    loop_queryOBD(OBD_Class*, double, int&) in UI-V8KySA.o
    "Fl::lock()", referenced from:
    runUI() in UI-V8KySA.o
    Fl_Gauge::value(double) in UI-V8KySA.o
    Fl_Gauge::value2(double) in UI-V8KySA.o
    Fl_Gauge::value1(double) in UI-V8KySA.o
    Fl_Gauge::value3(double) in UI-V8KySA.o
    "Fl::awake(void*)", referenced from:
    runUI() in UI-V8KySA.o
    "Fl::flush()", referenced from:
    runUI() in UI-V8KySA.o
    Fl_Gauge::value(double) in UI-V8KySA.o
    Fl_Gauge::value2(double) in UI-V8KySA.o
    Fl_Gauge::value1(double) in UI-V8KySA.o
    Fl_Gauge::value3(double) in UI-V8KySA.o
    "Fl::unlock()", referenced from:
    runUI() in UI-V8KySA.o
    Fl_Gauge::value(double) in UI-V8KySA.o
    Fl_Gauge::value2(double) in UI-V8KySA.o
    Fl_Gauge::value1(double) in UI-V8KySA.o
    Fl_Gauge::value3(double) in UI-V8KySA.o
    "mup:parserXBase:D:DefineVar(std::string const&, mup::Variable const&)", referenced from:
    Car_Data::Car_Data() in UI-V8KySA.o
    "mup:parserXBase::~ParserXBase()", referenced from:
    mup:parserX::~ParserX() in UI-V8KySA.o
    "mup::Value::Value(int)", referenced from:
    Car_Data::Car_Data() in UI-V8KySA.o
    "mup::Value::Value(int, double)", referenced from:
    Car_Data::Car_Data() in UI-V8KySA.o
    "mup::Value::~Value()", referenced from:
    Car_Data::~Car_Data() in UI-V8KySA.o
    Car_Data::Car_Data() in UI-V8KySA.o
    "mup:parserX:parserX(mup::EPackages)", referenced from:
    Car_Data::Car_Data() in UI-V8KySA.o
    "mup::Variable::Variable(mup::IValue*)", referenced from:
    Car_Data::Car_Data() in UI-V8KySA.o
    "mup::Variable::~Variable()", referenced from:
    Car_Data::Car_Data() in UI-V8KySA.o
    "boost::detail::thread_data_base::~thread_data_base()", referenced from:
    boost::detail::thread_data<boost::_bi::bind_t<void, void (*)(OBD_Class*, double, int&), boost::_bi::list3<boost::_bi::value<OBD_Class*>, boost::_bi::value<double>, boost::reference_wrapper<int> > > >::~thread_data() in UI-V8KySA.o
    "boost::system::system_category()", referenced from:
    ___cxx_global_var_init3 in UI-V8KySA.o
    boost::thread_exception::thread_exception(int, char const*) in UI-V8KySA.o
    "boost::system::generic_category()", referenced from:
    ___cxx_global_var_init1 in UI-V8KySA.o
    ___cxx_global_var_init2 in UI-V8KySA.o
    "boost::thread::join_noexcept()", referenced from:
    boost::thread::join() in UI-V8KySA.o
    "boost::thread::native_handle()", referenced from:
    boost::thread::get_id() const in UI-V8KySA.o
    "boost::thread::start_thread_noexcept()", referenced from:
    boost::thread::start_thread() in UI-V8KySA.o
    "boost::thread::detach()", referenced from:
    boost::thread::~thread() in UI-V8KySA.o
    "boost::thread::thread()", referenced from:
    runUI() in UI-V8KySA.o
    "Gauges::show()", referenced from:
    runUI() in UI-V8KySA.o
    "Gauges::Gauges()", referenced from:
    runUI() in UI-V8KySA.o
    "Car_Data::read_formula()", referenced from:
    Car_Data::Car_Data() in UI-V8KySA.o
    "Car_Data::init_odo_avgmpg()", referenced from:
    runUI() in UI-V8KySA.o
    "Car_Data::update_odo_avgmpg(Gauges*)", referenced from:
    runUI() in UI-V8KySA.o
    "Car_Data::csv_end(__sFILE*, Gauges*)", referenced from:
    runUI() in UI-V8KySA.o
    "Car_Data::csv_data(__sFILE*)", referenced from:
    runUI() in UI-V8KySA.o
    "Car_Data::csv_title(__sFILE*)", referenced from:
    runUI() in UI-V8KySA.o
    "Fl_Gauge::check_zone()", referenced from:
    Fl_Gauge::value(double) in UI-V8KySA.o
    "Fl_Input_::value(char const*)", referenced from:
    runUI() in UI-V8KySA.o
    "Fl_Widget::copy_label(char const*)", referenced from:
    setUIstate(UI_state_Type) in UI-V8KySA.o
    runUI() in UI-V8KySA.o
    "Fl_Widget::deactivate()", referenced from:
    setUIstate(UI_state_Type) in UI-V8KySA.o
    runUI() in UI-V8KySA.o
    "Fl_Widget::label(char const*)", referenced from:
    runUI() in UI-V8KySA.o
    "Fl_Widget::redraw()", referenced from:
    runUI() in UI-V8KySA.o
    Fl_Gauge::value(double) in UI-V8KySA.o
    Fl_Gauge::value2(double) in UI-V8KySA.o
    Fl_Gauge::value1(double) in UI-V8KySA.o
    Fl_Gauge::value3(double) in UI-V8KySA.o
    "Fl_Widget::activate()", referenced from:
    runUI() in UI-V8KySA.o
    "OBD_Class:Openlogfile(char const*)", referenced from:
    runUI() in UI-V8KySA.o
    "OBD_Class::readATMAdata(char*, int, int*, Car_Data*, double)", referenced from:
    runUI() in UI-V8KySA.o
    "OBD_Class::read_cmd_file()", referenced from:
    OBD_Class::OBD_Class() in UI-V8KySA.o
    "OBD_Class::readandlogdata()", referenced from:
    runUI() in UI-V8KySA.o
    "OBD_Class::sendsettingscmd(char const*)", referenced from:
    runUI() in UI-V8KySA.o
    "OBD_Class::init()", referenced from:
    runUI() in UI-V8KySA.o
    "OBD_Class::query()", referenced from:
    runUI() in UI-V8KySA.o
    "OBD_Class::query2()", referenced from:
    loop_queryOBD(OBD_Class*, double, int&) in UI-V8KySA.o
    "OBD_Class::query3(Car_Data*, Gauges*)", referenced from:
    runUI() in UI-V8KySA.o
    "OBD_Class::sendcmd(char const*)", referenced from:
    runUI() in UI-V8KySA.o
    "OBD_Class:Openport(char const*, unsigned long)", referenced from:
    runUI() in UI-V8KySA.o
    "typeinfo for boost::detail::thread_data_base", referenced from:
    typeinfo for boost::detail::thread_data<boost::_bi::bind_t<void, void (*)(OBD_Class*, double, int&), boost::_bi::list3<boost::_bi::value<OBD_Class*>, boost::_bi::value<double>, boost::reference_wrapper<int> > > > in UI-V8KySA.o
    "vtable for boost::detail::thread_data_base", referenced from:
    boost::detail::thread_data_base::thread_data_base() in UI-V8KySA.o
    NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
    "_csv_filename", referenced from:
    runUI() in UI-V8KySA.o
    "_g_baudRate", referenced from:
    runUI() in UI-V8KySA.o
    "_g_baudRate2", referenced from:
    runUI() in UI-V8KySA.o
    "_go_button", referenced from:
    setUIstate(UI_state_Type) in UI-V8KySA.o
    runUI() in UI-V8KySA.o
    "_ini", referenced from:
    runUI() in UI-V8KySA.o
    "_log_filename", referenced from:
    runUI() in UI-V8KySA.o
    "_main", referenced from:
    implicit entry/start for main executable
    "_run_type_choice", referenced from:
    setUIstate(UI_state_Type) in UI-V8KySA.o
    runUI() in UI-V8KySA.o
    "_settings_group", referenced from:
    setUIstate(UI_state_Type) in UI-V8KySA.o
    runUI() in UI-V8KySA.o
    ld: symbol(s) not found for architecture x86_64
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
     
  6. 2009Prius

    2009Prius A Wimpy DIYer

    Joined:
    Mar 25, 2009
    2,705
    510
    63
    Location:
    USA
    Vehicle:
    2009 Prius
    Hello, I am not familiar with the command line tool but it looks like it's trying to build an application out of UI.cpp, which won't work. That's why the linker can't find many symbols.

    To build the PriiDash application:
    1. Replace the couple of files in the original muParserX download with the ones in the muParserX sub-folder of the PriiDash download.
    2. Build the muParserX library.
    3. Compile each cpp or cxx file in the source folder of the PriiDash download into object files.
    4. Link all the object files with the muParserX, FLTK, Boost, and X11 libraries to make the application.
    Does this make sense?
     
  7. bengarland

    bengarland Junior Member

    Joined:
    May 21, 2008
    21
    7
    0
    Location:
    Sonoma County, CA
    Vehicle:
    2008 Prius
    Model:
    N/A

    Sort of. I did step #1, I think I did step #2 successfully, I almost completed #3 with a few errors, and I think I have a general idea of what to do on #4 if I can complete step #3.

    For step #2, in the muParserX directory (muparserx _v2_1_6) there is a parser folder and an empty obj folder. After I ran make in the parser folder, new .o files showed up in the obj folder. I believe these will be used for step #4. I then copied everything from the parser folder to the PriiDash source folder so I could build the PriiDash files.

    For step #3, for each .cpp in the PriiDash source folder, I ran, for example:

    make CANmsg.cpp CANmsg.o

    Most of these seemed to compile fine. I did have errors on a few:

    make UI.cpp UI.o
    make: Nothing to be done for `UI.cpp'.
    c++ -c -o UI.o UI.cpp
    UI.cpp:306:24: warning: format string is not a string literal (potentially insecure) [-Wformat-security]
    printf(msg); logtime(mytime0, fplog, msg);
    ^~~
    UI.cpp:334:24: warning: enumeration values 'Simulation' and 'queryonly' not handled in switch [-Wswitch]
    switch(UIruntype){
    ^
    UI.cpp:341:24: warning: enumeration values 'Simulation' and 'ATMAlogonly' not handled in switch [-Wswitch]
    switch(UIruntype){
    ^
    UI.cpp:424:33: warning: enumeration values 'Simulation' and 'ATMAlogonly' not handled in switch [-Wswitch]
    switch (UIruntype){
    ^
    UI.cpp:534:31: warning: equality comparison with extraneous parentheses [-Wparentheses-equality]
    if ((UIruntype==ATMAlogonly)){obd1.sendcmd("\r");}
    ~~~~~~~~~^~~~~~~~~~~~~
    UI.cpp:534:31: note: remove extraneous parentheses around the comparison to silence this warning
    if ((UIruntype==ATMAlogonly)){obd1.sendcmd("\r");}
    ~ ^ ~
    UI.cpp:534:31: note: use '=' to turn this equality comparison into an assignment
    if ((UIruntype==ATMAlogonly)){obd1.sendcmd("\r");}
    ^~
    =

    5 warnings generated.

    ------------------------------------------------------------

    make ini.cpp ini.o
    make: Nothing to be done for `ini.cpp'.
    c++ -c -o ini.o ini.cpp
    ini.cpp:60:22: error: use of undeclared identifier 'B2000000'
    speed_t g_baudRate = B2000000; //B2000000, B1000000, B500000, B115200 etc.
    ^
    ini.cpp:61:23: error: use of undeclared identifier 'B2000000'
    speed_t g_baudRate2 = B2000000; //B2000000, B1000000, B500000, B115200 etc.
    ^
    ini.cpp:228:30: error: use of undeclared identifier 'B2000000'
    case 0: g_baudRate = B2000000; break;
    ^
    ini.cpp:229:30: error: use of undeclared identifier 'B1000000'
    case 1: g_baudRate = B1000000; break;
    ^
    ini.cpp:230:30: error: use of undeclared identifier 'B500000'
    case 2: g_baudRate = B500000; break;
    ^
    ini.cpp:232:31: error: use of undeclared identifier 'B2000000'
    default: g_baudRate = B2000000; break;
    ^
    ini.cpp:235:31: error: use of undeclared identifier 'B2000000'
    case 0: g_baudRate2 = B2000000; break;
    ^
    ini.cpp:236:31: error: use of undeclared identifier 'B1000000'
    case 1: g_baudRate2 = B1000000; break;
    ^
    ini.cpp:237:31: error: use of undeclared identifier 'B500000'
    case 2: g_baudRate2 = B500000; break;
    ^
    ini.cpp:239:32: error: use of undeclared identifier 'B2000000'
    default: g_baudRate2 = B2000000; break;
    ^
    10 errors generated.
    make: *** [ini.o] Error 1

    ------------------------------------------------------------

    make mpPackageUnit.cpp mpPackageUnit.o
    make: Nothing to be done for `mpPackageUnit.cpp'.
    c++ -c -o mpPackageUnit.o mpPackageUnit.cpp
    mpPackageUnit.cpp:78:63: warning: illegal character encoding in string literal [-Winvalid-source-encoding]
    MUP_POSTFIX_IMLP(OprtMicro, "{mu}", (float_type)1e-6, "{<B5>} - unit multiplicator 1e-6")
    ^~~~
    mpPackageUnit.cpp:69:15: note: expanded from macro 'MUP_POSTFIX_IMLP'
    return _T(DESC); \
    ^
    ./mpDefines.h:54:17: note: expanded from macro '_T'
    #define _T(x) x
    ^
    1 warning generated.

    ------------------------------------------------------------

    make mpParser.cpp mpParser.o
    make: Nothing to be done for `mpParser.cpp'.
    c++ -c -o mpParser.o mpParser.cpp
    mpParser.cpp:67:95: warning: illegal character encoding in string literal [-Winvalid-source-encoding]
    DefineOprtChars(_T("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+-*^/?<>=#!$%&|~'_<B5>{}"));
    ^~~~
    ./mpDefines.h:54:17: note: expanded from macro '_T'
    #define _T(x) x
    ^
    1 warning generated.

    ------------------------------------------------------------

    For the .cxx files, I did, as example:

    g++ -c Dash.cxx -o Dash.o

    Which seemed to work fine.

    Any idea how to get UI.cpp, ini.cpp, mpPackageUnit.cpp, and mpParser.cpp to compile without warnings or errors?

    For step #4, I am guessing I have to use the ld command, but I'm still not sure how that's going to go. I have to sort out these errors from step #3 first. Help?

    Ben
     
    Newpriusdanni likes this.
  8. 2009Prius

    2009Prius A Wimpy DIYer

    Joined:
    Mar 25, 2009
    2,705
    510
    63
    Location:
    USA
    Vehicle:
    2009 Prius
    Hello, Good to know you are making progress.

    After making muParserX there should be a library file libmuparserx.a under the bin directory. So you don't need to link the individual .o files in step 4. - just the .a file is enough.

    Usually you can ignore the compiler warnings. Any error needs to be fixed of course. Do you know how Mac OS deals with serial ports? The error looks like it is not recognizing standard Linux serial port stuff. That's kind of odd since I thought nowadays the Mac OS is built on top of Linux.

    That makes me wonder if you are mixing tool sets. In your posted build log some say c++ and others say g++. Please make sure you compile and link everything with the same tool set, preferably g++, since I know it works for Ubuntu, Cygwin, and MinGW.

    I am using NetBeans IDE that's why I can't provide a simple make file - the IDE has its own file structure to make the project. But it just occurred to me that I can post the build log to show what actually happens at the command line. Note that everything is built with g++. Hope this helps:

    Code:
     
    "/usr/bin/make" -f nbproject/Makefile-Release.mk QMAKE= SUBPROJECTS= .build-conf
    make[1]: Entering directory `/cygdrive/d/PriiDash/PriiDash3'
    "/usr/bin/make"  -f nbproject/Makefile-Release.mk dist/Release/Cygwin_4.x-Windows/PriiDash3.exe
    make[2]: Entering directory `/cygdrive/d/PriiDash/PriiDash3'
    mkdir -p build/Release/Cygwin_4.x-Windows
    rm -f build/Release/Cygwin_4.x-Windows/CANmsg.o.d
    g++	-c -O2 -Wall -IOSdep/CygWin -I../Code/muparserx_v2_1_2/parser -MMD -MP -MF build/Release/Cygwin_4.x-Windows/CANmsg.o.d -o build/Release/Cygwin_4.x-Windows/CANmsg.o CANmsg.cpp
    mkdir -p build/Release/Cygwin_4.x-Windows
    rm -f build/Release/Cygwin_4.x-Windows/CANmsg2.o.d
    g++	-c -O2 -Wall -IOSdep/CygWin -I../Code/muparserx_v2_1_2/parser -MMD -MP -MF build/Release/Cygwin_4.x-Windows/CANmsg2.o.d -o build/Release/Cygwin_4.x-Windows/CANmsg2.o CANmsg2.cpp
    mkdir -p build/Release/Cygwin_4.x-Windows
    rm -f build/Release/Cygwin_4.x-Windows/Dash.o.d
    g++	-c -O2 -Wall -IOSdep/CygWin -I../Code/muparserx_v2_1_2/parser -MMD -MP -MF build/Release/Cygwin_4.x-Windows/Dash.o.d -o build/Release/Cygwin_4.x-Windows/Dash.o Dash.cxx
    Dash.cxx: In function ‘Fl_Double_Window* make_main_window()’:
    Dash.cxx:548:20: warning: unused variable ‘o’
    mkdir -p build/Release/Cygwin_4.x-Windows
    rm -f build/Release/Cygwin_4.x-Windows/Fl_Gauge.o.d
    g++	-c -O2 -Wall -IOSdep/CygWin -I../Code/muparserx_v2_1_2/parser -MMD -MP -MF build/Release/Cygwin_4.x-Windows/Fl_Gauge.o.d -o build/Release/Cygwin_4.x-Windows/Fl_Gauge.o Fl_Gauge.cxx
    mkdir -p build/Release/Cygwin_4.x-Windows
    rm -f build/Release/Cygwin_4.x-Windows/LogToCSV.o.d
    g++	-c -O2 -Wall -IOSdep/CygWin -I../Code/muparserx_v2_1_2/parser -MMD -MP -MF build/Release/Cygwin_4.x-Windows/LogToCSV.o.d -o build/Release/Cygwin_4.x-Windows/LogToCSV.o LogToCSV.cpp
    mkdir -p build/Release/Cygwin_4.x-Windows
    rm -f build/Release/Cygwin_4.x-Windows/OBD2.o.d
    g++	-c -O2 -Wall -IOSdep/CygWin -I../Code/muparserx_v2_1_2/parser -MMD -MP -MF build/Release/Cygwin_4.x-Windows/OBD2.o.d -o build/Release/Cygwin_4.x-Windows/OBD2.o OBD2.cpp
    mkdir -p build/Release/Cygwin_4.x-Windows
    rm -f build/Release/Cygwin_4.x-Windows/UI.o.d
    g++	-c -O2 -Wall -IOSdep/CygWin -I../Code/muparserx_v2_1_2/parser -MMD -MP -MF build/Release/Cygwin_4.x-Windows/UI.o.d -o build/Release/Cygwin_4.x-Windows/UI.o UI.cpp
    UI.cpp: In function ‘void runUI()’:
    UI.cpp:368:23: warning: enumeration value ‘Simulation’ not handled in switch
    UI.cpp:368:23: warning: enumeration value ‘queryonly’ not handled in switch
    UI.cpp:368:23: warning: enumeration value ‘readDTC’ not handled in switch
    UI.cpp:375:23: warning: enumeration value ‘Simulation’ not handled in switch
    UI.cpp:375:23: warning: enumeration value ‘ATMAlogonly’ not handled in switch
    UI.cpp:375:23: warning: enumeration value ‘readDTC’ not handled in switch
    UI.cpp:481:32: warning: enumeration value ‘Simulation’ not handled in switch
    UI.cpp:481:32: warning: enumeration value ‘ATMAlogonly’ not handled in switch
    UI.cpp:481:32: warning: enumeration value ‘readDTC’ not handled in switch
    UI.cpp:247:22: warning: ‘csvtick2’ may be used uninitialized in this function
    mkdir -p build/Release/Cygwin_4.x-Windows
    rm -f build/Release/Cygwin_4.x-Windows/Util.o.d
    g++	-c -O2 -Wall -IOSdep/CygWin -I../Code/muparserx_v2_1_2/parser -MMD -MP -MF build/Release/Cygwin_4.x-Windows/Util.o.d -o build/Release/Cygwin_4.x-Windows/Util.o Util.cpp
    mkdir -p build/Release/Cygwin_4.x-Windows
    rm -f build/Release/Cygwin_4.x-Windows/formula.o.d
    g++	-c -O2 -Wall -IOSdep/CygWin -I../Code/muparserx_v2_1_2/parser -MMD -MP -MF build/Release/Cygwin_4.x-Windows/formula.o.d -o build/Release/Cygwin_4.x-Windows/formula.o formula.cpp
    mkdir -p build/Release/Cygwin_4.x-Windows
    rm -f build/Release/Cygwin_4.x-Windows/icon.o.d
    g++	-c -O2 -Wall -IOSdep/CygWin -I../Code/muparserx_v2_1_2/parser -MMD -MP -MF build/Release/Cygwin_4.x-Windows/icon.o.d -o build/Release/Cygwin_4.x-Windows/icon.o icon.cpp
    mkdir -p build/Release/Cygwin_4.x-Windows
    rm -f build/Release/Cygwin_4.x-Windows/ini.o.d
    g++	-c -O2 -Wall -IOSdep/CygWin -I../Code/muparserx_v2_1_2/parser -MMD -MP -MF build/Release/Cygwin_4.x-Windows/ini.o.d -o build/Release/Cygwin_4.x-Windows/ini.o ini.cpp
    mkdir -p build/Release/Cygwin_4.x-Windows
    rm -f build/Release/Cygwin_4.x-Windows/main.o.d
    g++	-c -O2 -Wall -IOSdep/CygWin -I../Code/muparserx_v2_1_2/parser -MMD -MP -MF build/Release/Cygwin_4.x-Windows/main.o.d -o build/Release/Cygwin_4.x-Windows/main.o main.cpp
    mkdir -p dist/Release/Cygwin_4.x-Windows
    g++	 -o dist/Release/Cygwin_4.x-Windows/PriiDash3 build/Release/Cygwin_4.x-Windows/CANmsg.o  build/Release/Cygwin_4.x-Windows/CANmsg2.o  build/Release/Cygwin_4.x-Windows/Dash.o  build/Release/Cygwin_4.x-Windows/Fl_Gauge.o  build/Release/Cygwin_4.x-Windows/LogToCSV.o  build/Release/Cygwin_4.x-Windows/OBD2.o  build/Release/Cygwin_4.x-Windows/UI.o  build/Release/Cygwin_4.x-Windows/Util.o  build/Release/Cygwin_4.x-Windows/formula.o  build/Release/Cygwin_4.x-Windows/icon.o  build/Release/Cygwin_4.x-Windows/ini.o  build/Release/Cygwin_4.x-Windows/main.o -lboost_thread-mt -lfltk -lX11.dll -lXft.dll -lfontconfig.dll ../Code/muparserx_v2_1_2/bin/libmuparserx.a -static
    make[2]: Leaving directory `/cygdrive/d/PriiDash/PriiDash3'
    make[1]: Leaving directory `/cygdrive/d/PriiDash/PriiDash3'
     
     
    BUILD SUCCESSFUL (total time: 37s)