Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New preprocessor #2636

Closed
wants to merge 14 commits into from
Closed

New preprocessor #2636

wants to merge 14 commits into from

Conversation

ffissore
Copy link
Contributor

This PR introduces a new preprocessor, based on two binary tools: coan and (a modified version of) ctags

coan is use to resolve #define #ifdef et al, producing a clean sketch.
If your sketch has

#define DEBUG 0
#if DEBUG
#include "debug.h"
myDebugFunction("hello debug");
#endif

the resulting sketch will be

#define DEBUG 0




ctags is used to collect function definitions and to generate their prototypes. If a prototype is already defined, it will not be generated.
If your sketch has

void firstFunction() {
  // code here
}
void secondFunction();
void secondFunction() {
  //code here
}

the resulting sketch will be

void firstFunction();
void firstFunction() {
  // code here
}
void secondFunction();
void secondFunction() {
  //code here
}

coan and ctags are defined in a parent platform.txt (currently located in IDE_FOLDER/hardware)

A new mechanism for loading platform.txt allows to group key value pairs common to multiple platforms or packages into separate files. Those pairs will be merged into children platform.txt. The key value pair nearest to boards.txt wins and overwrites pairs with the same key.
An example is IDE_FOLDER/hardware/arduino/sam/platform.txt, where coan command line is customized with sam specific parameters.
This keep users that have defined a 3rd party platform based on the avr one from having to update it adding the new tools definitions, and lowers the burden of those that started from the sam one.

This PR fixes lots of issues: see Component: Preprocessor The Arduino sketch preprocessor converts .ino files into C++ code before compilation

@ffissore
Copy link
Contributor Author

Forgot to say: this PR is based on #2568 so it also carries the last avr toolchain available

@ffissore
Copy link
Contributor Author

No joy on windows :(

@ffissore
Copy link
Contributor Author

Run on linux, mac and windows with no problems

@TeamSouth
Copy link

With this fix, I still have errors with the DUE HardwareSerial write(), print(), println(), and flush() methods. The code below produces an intermittent truncation error, which has been included below the code sample. Multiple delays have been inserted in order to try and circumvent this particular problem.

  bool Magnetometer::getWaypoints()
  {
    bool done = false;

    while ( Serial1.read() != -1 );//clear incoming buffer
    delay(100);

    Serial1.write("\nDo You Wish To Enter Any Waypoints For Navigation? (Y or N): ");
    Serial1.flush();
    delay(1);

    do
    {
      while ( Serial1.read() != -1 );//clear incoming buffer
      delay(100);

      while (!Serial1.available());//wait until user inputs data

      i = 0;
      memset(input, 0, sizeof(input));
      while (Serial1.available() > 0)
      {
        input[i] = Serial1.read();//read in user input
        i++;
      }
      input[i] = '\0';

      for (i = 0; i < sizeof(input); i++)
        input[i] = toupper(input[i]);
      Serial1.write(input);
      Serial1.flush();
      delay(1);
      Serial1.write("\n");
      Serial.flush();
      delay(1);

      if (input[0] == 'Y' || input[0] == 'N')
        check = valid;
      else
        check = invalid;

      switch (check)
      {
        case valid:
          WpTest = true;
          break;
        case invalid:
          Serial1.write("Invalid Entry! Please Enter Y or N...\n");
          Serial1.flush();
          delay(10);
          WpTest = false;
          break;
      }

    } while (!WpTest);

    if (input[0] == 'N')
    {
      done = true;
      return done;
    }

    else if (input[0] == 'Y')
    {
      do
      {
        while ( Serial1.read() != -1 );//clear incoming buffer
        delay(100);

        Serial1.write("\nPlease Enter The Number Of Waypoints You Desire(NOT TO EXCEED 20): ");
        Serial1.flush();
        //delay(250);

        while (!Serial1.available());//wait until user inputs data
        delay(100);

        i = 0;
        memset(input, 0, sizeof(input));
        while (Serial1.available() > 0)
        {
          input[i] = Serial1.read();//read in user input
          i++;
        }
        input[i] = '\0';

        maxWP = String(input).toInt();
        Serial1.write(input);
        Serial1.flush();
        Serial1.write("\n");
        Serial1.flush();
        //delay(1);

        if (maxWP == 0)
        {
          Serial1.write("No Desired Waypoints. Continuing To Main Program, Please Wait...\n\n");
          Serial1.flush();
          done = true;
          delay(2000);
        }

        else
        {
          //initializes waypoints array
          for (j = 0; j < 2; j++)
            for (i = 0; i < 20; i++)
              waypoints[j][i] = 0;

          Serial1.write("The Format For Entering Waypoints is: LAT:DDDMM.SSSS,LONG:DDDMM.SSSS\n");
          Serial1.flush();
          //delay(250);
          Serial1.write("For Example, Enter: DDDMM.SSSS,DDDMM.SSSSS\n");
          Serial1.flush();
          //delay(250);

          //this block reads in the number of desired waypoints
          for (i = 0; i < maxWP; i++)
          {
            memset(buf, 0, sizeof(buf));
            memset(buf2, 0, sizeof(buf2));
            while ( Serial1.read() != -1 );//clear incoming buffer

            Serial1.write("\nPlease Enter Waypoint ");
            Serial1.flush();
            delay(100);
            conversion = String((i + 1));
            conversion.toCharArray(buf, sizeof(buf));
            Serial1.write(buf);
            Serial1.flush();
            delay(10);
            conversion = ": ";
            conversion.toCharArray(buf, sizeof(buf));
            Serial1.write(buf);
            Serial1.flush();
            delay(10);

            while (!Serial1.available());//wait until user inputs data
            delay(100);

            j = 0;
            memset(buf, 0, sizeof(buf));
            while (Serial1.available() > 0)
            {
              buf[j] = Serial1.read();//read in user input
              j++;
            }
            buf[j] = '\0';

            Serial1.write(buf);
            Serial1.flush();
            delay(10);

            getWpField(buf2, 0); //gets LAT
            waypoints[0][i] = atof(buf2);//converts string input to an integer
            getWpField(buf2, 1); //gets LONG
            waypoints[1][i] = atof(buf2);//converts string input to an integer

          }//end of for

          Serial1.write("\nVarifying Waypoints...\n");
          Serial1.flush();
          delay(100);

          //loop for printing out waypoints
          for (i = 0; i < maxWP; i++)
          {
            Serial1.write("Waypoint ");
            Serial1.flush();
            //delay(350);
            conversion = String(i + 1);
            conversion.toCharArray(buf, sizeof(buf));
            Serial1.write(buf);
            Serial1.flush();
            //delay(100);
            Serial1.write(": ");
            Serial1.flush();
            //delay(100);
            Serial1.print(waypoints[0][i], 4);
            Serial1.flush();
            //delay(100);
            Serial1.write(",");
            Serial1.flush();
            //delay(100);
            Serial1.println(waypoints[1][i], 4);
            Serial1.flush();
            //delay(100);

          }//end of outter for

          WpTest = false;

          do
          {
            while ( Serial1.read() != -1 );//clear incoming buffer
            delay(100);

            Serial1.write("\nAre The Waypoints Correct? (Y or N): ");
            Serial1.flush();
            //delay(500);


            while (!Serial1.available());//wait until user inputs data

            i = 0;
            memset(input, 0, sizeof(input));
            while (Serial1.available() > 0)
            {
              input[i] = Serial1.read();//read in user input
              i++;
            }
            input[i] = '\0';

            for (i = 0; i < sizeof(input); i++)
              input[i] = toupper(input[i]);
            Serial1.write(input);
            Serial1.flush();
            delay(1);
            Serial1.write("\n");
            Serial.flush();
            delay(1);

            if (input[0] == 'Y' || input[0] == 'N')
              check = valid;
            else
              check = invalid;

            switch (check)
            {
              case valid:
                WpTest = true;
                break;
              case invalid:
                Serial1.write("Invalid Entry! Please Enter Y or N...\n");
                Serial1.flush();
                delay(100);
                WpTest = false;
                break;
            }

          } while (!WpTest);

          if (input[0] == 'Y')
          {
            Serial1.write("Waypoints Verified. Continuing To Main Program, Please Wait...\n\n");
            Serial1.flush();
            done = true;
            delay(2000);
          }
          else if (input[0] == 'N')
            done = false;

        }//end of else
      } while (!done); //end of do while
    }//end of else if

    return done;

  }//end of getWaypoints

The error:

1 Please Enter Way+4: 4,4
2 Please Enter Waypoint 5: 5,5
3 Varifying Waypoints...
4 Waypoint 1: 1.0000,1.0000
5 Waypoint 2: 2.0000,2.0000
6 Waypoint 3: 3.0000,3.0000
7 Waypoint 4: 4.0000,4.0000
8 Waypoint 5: 5.0000,5.0000
9 Are The Waypoints Correct? (Y or N): N
10
11 Please Enter The Number Of Way+u Desire(NOT TO EXCEED 20): 0

As you can see, lines 4 and 11 contain erroneous data. Line 4 should look like line 2, and Line 11 should read, "Please Enter The Number Of Waypoints You Desire(NOT TO EXCEED 20): 0".

Thoughts?

@ffissore
Copy link
Contributor Author

@TeamSouth I think your issue has nothing to do with the preprocessor. Please try both 1.6.0 and nightly versions of the IDE and open a separate issue with the whole sketch and libraries

@ffissore
Copy link
Contributor Author

Love reported at #2630 (comment)

@igrr
Copy link

igrr commented Feb 17, 2015

I've tested the macosx-java-latest version, tried to compile the Blink sample. Getting the following error from the linker:

/var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/core.a(main.cpp.o): In function `main':
/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino/main.cpp:54: warning: undefined reference to `setup'
/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino/main.cpp:58: warning: undefined reference to `loop'

It seems that the Blink.cpp is empty:
/var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/Blink.cpp is:

#include <Arduino.h>
#line 1

#line 1

The coan source output goes into a different file (/var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/sketch2171365710837267890.cpp) which has correct preprocessed contents but is not mentioned later in the compiler log.

I suppose this sketch2171365710837267890.cpp was meant to go into the var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/ directory, not the var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/?

Full compile log:

Build options changed, rebuilding all

/private/tmp/Arduino.app/Contents/Java/hardware/tools/coan source -m -E -P -kb -Dprintf=iprintf -DF_CPU=84000000L -DARDUINO=10600 -DARDUINO_SAM_DUE -DARDUINO_ARCH_SAM -D__SAM3X8E__ -DUSB_VID=0x2341 -DUSB_PID=0x003e -DUSBCON -DUSB_MANUFACTURER="Unknown" -DUSB_PRODUCT="Arduino Due" /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/sketch2171365710837267890.cpp
/private/tmp/Arduino.app/Contents/Java/hardware/tools/ctags -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzn /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/sketch4793317483199330236.cpp
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-g++ -c -g -Os -w -ffunction-sections -fdata-sections -nostdlib -fno-threadsafe-statics --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -Dprintf=iprintf -MMD -mcpu=cortex-m3 -DF_CPU=84000000L -DARDUINO=10600 -DARDUINO_SAM_DUE -DARDUINO_ARCH_SAM -D__SAM3X8E__ -mthumb -DUSB_VID=0x2341 -DUSB_PID=0x003e -DUSBCON -DUSB_MANUFACTURER="Unknown" -DUSB_PRODUCT="Arduino Due" -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/libsam -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/CMSIS/Include/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/Device/ATMEL/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/variants/arduino_due_x /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/Blink.cpp -o /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/Blink.cpp.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-g++ -c -g -Os -w -ffunction-sections -fdata-sections -nostdlib -fno-threadsafe-statics --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -Dprintf=iprintf -MMD -mcpu=cortex-m3 -DF_CPU=84000000L -DARDUINO=10600 -DARDUINO_SAM_DUE -DARDUINO_ARCH_SAM -D__SAM3X8E__ -mthumb -DUSB_VID=0x2341 -DUSB_PID=0x003e -DUSBCON -DUSB_MANUFACTURER="Unknown" -DUSB_PRODUCT="Arduino Due" -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/libsam -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/CMSIS/Include/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/Device/ATMEL/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/variants/arduino_due_x /private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/variants/arduino_due_x/variant.cpp -o /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/variant.cpp.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-gcc -c -g -Os -w -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500 -Dprintf=iprintf -MMD -mcpu=cortex-m3 -DF_CPU=84000000L -DARDUINO=10600 -DARDUINO_SAM_DUE -DARDUINO_ARCH_SAM -D__SAM3X8E__ -mthumb -DUSB_VID=0x2341 -DUSB_PID=0x003e -DUSBCON -DUSB_MANUFACTURER="Unknown" -DUSB_PRODUCT="Arduino Due" -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/libsam -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/CMSIS/Include/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/Device/ATMEL/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/variants/arduino_due_x /private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino/avr/dtostrf.c -o /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/dtostrf.c.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-gcc -c -g -Os -w -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500 -Dprintf=iprintf -MMD -mcpu=cortex-m3 -DF_CPU=84000000L -DARDUINO=10600 -DARDUINO_SAM_DUE -DARDUINO_ARCH_SAM -D__SAM3X8E__ -mthumb -DUSB_VID=0x2341 -DUSB_PID=0x003e -DUSBCON -DUSB_MANUFACTURER="Unknown" -DUSB_PRODUCT="Arduino Due" -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/libsam -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/CMSIS/Include/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/Device/ATMEL/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/variants/arduino_due_x /private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino/cortex_handlers.c -o /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/cortex_handlers.c.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-gcc -c -g -Os -w -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500 -Dprintf=iprintf -MMD -mcpu=cortex-m3 -DF_CPU=84000000L -DARDUINO=10600 -DARDUINO_SAM_DUE -DARDUINO_ARCH_SAM -D__SAM3X8E__ -mthumb -DUSB_VID=0x2341 -DUSB_PID=0x003e -DUSBCON -DUSB_MANUFACTURER="Unknown" -DUSB_PRODUCT="Arduino Due" -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/libsam -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/CMSIS/Include/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/Device/ATMEL/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/variants/arduino_due_x /private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino/hooks.c -o /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/hooks.c.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-gcc -c -g -Os -w -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500 -Dprintf=iprintf -MMD -mcpu=cortex-m3 -DF_CPU=84000000L -DARDUINO=10600 -DARDUINO_SAM_DUE -DARDUINO_ARCH_SAM -D__SAM3X8E__ -mthumb -DUSB_VID=0x2341 -DUSB_PID=0x003e -DUSBCON -DUSB_MANUFACTURER="Unknown" -DUSB_PRODUCT="Arduino Due" -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/libsam -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/CMSIS/Include/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/Device/ATMEL/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/variants/arduino_due_x /private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino/iar_calls_sam3.c -o /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/iar_calls_sam3.c.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-gcc -c -g -Os -w -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500 -Dprintf=iprintf -MMD -mcpu=cortex-m3 -DF_CPU=84000000L -DARDUINO=10600 -DARDUINO_SAM_DUE -DARDUINO_ARCH_SAM -D__SAM3X8E__ -mthumb -DUSB_VID=0x2341 -DUSB_PID=0x003e -DUSBCON -DUSB_MANUFACTURER="Unknown" -DUSB_PRODUCT="Arduino Due" -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/libsam -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/CMSIS/Include/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/Device/ATMEL/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/variants/arduino_due_x /private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino/itoa.c -o /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/itoa.c.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-gcc -c -g -Os -w -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500 -Dprintf=iprintf -MMD -mcpu=cortex-m3 -DF_CPU=84000000L -DARDUINO=10600 -DARDUINO_SAM_DUE -DARDUINO_ARCH_SAM -D__SAM3X8E__ -mthumb -DUSB_VID=0x2341 -DUSB_PID=0x003e -DUSBCON -DUSB_MANUFACTURER="Unknown" -DUSB_PRODUCT="Arduino Due" -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/libsam -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/CMSIS/Include/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/Device/ATMEL/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/variants/arduino_due_x /private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino/syscalls_sam3.c -o /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/syscalls_sam3.c.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-gcc -c -g -Os -w -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500 -Dprintf=iprintf -MMD -mcpu=cortex-m3 -DF_CPU=84000000L -DARDUINO=10600 -DARDUINO_SAM_DUE -DARDUINO_ARCH_SAM -D__SAM3X8E__ -mthumb -DUSB_VID=0x2341 -DUSB_PID=0x003e -DUSBCON -DUSB_MANUFACTURER="Unknown" -DUSB_PRODUCT="Arduino Due" -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/libsam -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/CMSIS/Include/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/Device/ATMEL/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/variants/arduino_due_x /private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino/WInterrupts.c -o /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/WInterrupts.c.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-gcc -c -g -Os -w -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500 -Dprintf=iprintf -MMD -mcpu=cortex-m3 -DF_CPU=84000000L -DARDUINO=10600 -DARDUINO_SAM_DUE -DARDUINO_ARCH_SAM -D__SAM3X8E__ -mthumb -DUSB_VID=0x2341 -DUSB_PID=0x003e -DUSBCON -DUSB_MANUFACTURER="Unknown" -DUSB_PRODUCT="Arduino Due" -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/libsam -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/CMSIS/Include/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/Device/ATMEL/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/variants/arduino_due_x /private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino/wiring.c -o /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/wiring.c.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-gcc -c -g -Os -w -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500 -Dprintf=iprintf -MMD -mcpu=cortex-m3 -DF_CPU=84000000L -DARDUINO=10600 -DARDUINO_SAM_DUE -DARDUINO_ARCH_SAM -D__SAM3X8E__ -mthumb -DUSB_VID=0x2341 -DUSB_PID=0x003e -DUSBCON -DUSB_MANUFACTURER="Unknown" -DUSB_PRODUCT="Arduino Due" -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/libsam -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/CMSIS/Include/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/Device/ATMEL/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/variants/arduino_due_x /private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino/wiring_analog.c -o /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/wiring_analog.c.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-gcc -c -g -Os -w -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500 -Dprintf=iprintf -MMD -mcpu=cortex-m3 -DF_CPU=84000000L -DARDUINO=10600 -DARDUINO_SAM_DUE -DARDUINO_ARCH_SAM -D__SAM3X8E__ -mthumb -DUSB_VID=0x2341 -DUSB_PID=0x003e -DUSBCON -DUSB_MANUFACTURER="Unknown" -DUSB_PRODUCT="Arduino Due" -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/libsam -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/CMSIS/Include/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/Device/ATMEL/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/variants/arduino_due_x /private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino/wiring_digital.c -o /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/wiring_digital.c.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-gcc -c -g -Os -w -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500 -Dprintf=iprintf -MMD -mcpu=cortex-m3 -DF_CPU=84000000L -DARDUINO=10600 -DARDUINO_SAM_DUE -DARDUINO_ARCH_SAM -D__SAM3X8E__ -mthumb -DUSB_VID=0x2341 -DUSB_PID=0x003e -DUSBCON -DUSB_MANUFACTURER="Unknown" -DUSB_PRODUCT="Arduino Due" -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/libsam -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/CMSIS/Include/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/Device/ATMEL/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/variants/arduino_due_x /private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino/wiring_shift.c -o /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/wiring_shift.c.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-g++ -c -g -Os -w -ffunction-sections -fdata-sections -nostdlib -fno-threadsafe-statics --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -Dprintf=iprintf -MMD -mcpu=cortex-m3 -DF_CPU=84000000L -DARDUINO=10600 -DARDUINO_SAM_DUE -DARDUINO_ARCH_SAM -D__SAM3X8E__ -mthumb -DUSB_VID=0x2341 -DUSB_PID=0x003e -DUSBCON -DUSB_MANUFACTURER="Unknown" -DUSB_PRODUCT="Arduino Due" -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/libsam -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/CMSIS/Include/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/Device/ATMEL/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/variants/arduino_due_x /private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino/abi.cpp -o /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/abi.cpp.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-g++ -c -g -Os -w -ffunction-sections -fdata-sections -nostdlib -fno-threadsafe-statics --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -Dprintf=iprintf -MMD -mcpu=cortex-m3 -DF_CPU=84000000L -DARDUINO=10600 -DARDUINO_SAM_DUE -DARDUINO_ARCH_SAM -D__SAM3X8E__ -mthumb -DUSB_VID=0x2341 -DUSB_PID=0x003e -DUSBCON -DUSB_MANUFACTURER="Unknown" -DUSB_PRODUCT="Arduino Due" -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/libsam -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/CMSIS/Include/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/Device/ATMEL/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/variants/arduino_due_x /private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino/IPAddress.cpp -o /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/IPAddress.cpp.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-g++ -c -g -Os -w -ffunction-sections -fdata-sections -nostdlib -fno-threadsafe-statics --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -Dprintf=iprintf -MMD -mcpu=cortex-m3 -DF_CPU=84000000L -DARDUINO=10600 -DARDUINO_SAM_DUE -DARDUINO_ARCH_SAM -D__SAM3X8E__ -mthumb -DUSB_VID=0x2341 -DUSB_PID=0x003e -DUSBCON -DUSB_MANUFACTURER="Unknown" -DUSB_PRODUCT="Arduino Due" -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/libsam -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/CMSIS/Include/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/Device/ATMEL/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/variants/arduino_due_x /private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino/main.cpp -o /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/main.cpp.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-g++ -c -g -Os -w -ffunction-sections -fdata-sections -nostdlib -fno-threadsafe-statics --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -Dprintf=iprintf -MMD -mcpu=cortex-m3 -DF_CPU=84000000L -DARDUINO=10600 -DARDUINO_SAM_DUE -DARDUINO_ARCH_SAM -D__SAM3X8E__ -mthumb -DUSB_VID=0x2341 -DUSB_PID=0x003e -DUSBCON -DUSB_MANUFACTURER="Unknown" -DUSB_PRODUCT="Arduino Due" -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/libsam -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/CMSIS/Include/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/Device/ATMEL/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/variants/arduino_due_x /private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino/new.cpp -o /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/new.cpp.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-g++ -c -g -Os -w -ffunction-sections -fdata-sections -nostdlib -fno-threadsafe-statics --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -Dprintf=iprintf -MMD -mcpu=cortex-m3 -DF_CPU=84000000L -DARDUINO=10600 -DARDUINO_SAM_DUE -DARDUINO_ARCH_SAM -D__SAM3X8E__ -mthumb -DUSB_VID=0x2341 -DUSB_PID=0x003e -DUSBCON -DUSB_MANUFACTURER="Unknown" -DUSB_PRODUCT="Arduino Due" -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/libsam -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/CMSIS/Include/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/Device/ATMEL/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/variants/arduino_due_x /private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino/Print.cpp -o /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/Print.cpp.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-g++ -c -g -Os -w -ffunction-sections -fdata-sections -nostdlib -fno-threadsafe-statics --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -Dprintf=iprintf -MMD -mcpu=cortex-m3 -DF_CPU=84000000L -DARDUINO=10600 -DARDUINO_SAM_DUE -DARDUINO_ARCH_SAM -D__SAM3X8E__ -mthumb -DUSB_VID=0x2341 -DUSB_PID=0x003e -DUSBCON -DUSB_MANUFACTURER="Unknown" -DUSB_PRODUCT="Arduino Due" -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/libsam -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/CMSIS/Include/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/Device/ATMEL/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/variants/arduino_due_x /private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino/Reset.cpp -o /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/Reset.cpp.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-g++ -c -g -Os -w -ffunction-sections -fdata-sections -nostdlib -fno-threadsafe-statics --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -Dprintf=iprintf -MMD -mcpu=cortex-m3 -DF_CPU=84000000L -DARDUINO=10600 -DARDUINO_SAM_DUE -DARDUINO_ARCH_SAM -D__SAM3X8E__ -mthumb -DUSB_VID=0x2341 -DUSB_PID=0x003e -DUSBCON -DUSB_MANUFACTURER="Unknown" -DUSB_PRODUCT="Arduino Due" -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/libsam -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/CMSIS/Include/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/Device/ATMEL/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/variants/arduino_due_x /private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino/RingBuffer.cpp -o /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/RingBuffer.cpp.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-g++ -c -g -Os -w -ffunction-sections -fdata-sections -nostdlib -fno-threadsafe-statics --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -Dprintf=iprintf -MMD -mcpu=cortex-m3 -DF_CPU=84000000L -DARDUINO=10600 -DARDUINO_SAM_DUE -DARDUINO_ARCH_SAM -D__SAM3X8E__ -mthumb -DUSB_VID=0x2341 -DUSB_PID=0x003e -DUSBCON -DUSB_MANUFACTURER="Unknown" -DUSB_PRODUCT="Arduino Due" -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/libsam -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/CMSIS/Include/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/Device/ATMEL/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/variants/arduino_due_x /private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino/Stream.cpp -o /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/Stream.cpp.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-g++ -c -g -Os -w -ffunction-sections -fdata-sections -nostdlib -fno-threadsafe-statics --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -Dprintf=iprintf -MMD -mcpu=cortex-m3 -DF_CPU=84000000L -DARDUINO=10600 -DARDUINO_SAM_DUE -DARDUINO_ARCH_SAM -D__SAM3X8E__ -mthumb -DUSB_VID=0x2341 -DUSB_PID=0x003e -DUSBCON -DUSB_MANUFACTURER="Unknown" -DUSB_PRODUCT="Arduino Due" -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/libsam -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/CMSIS/Include/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/Device/ATMEL/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/variants/arduino_due_x /private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino/UARTClass.cpp -o /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/UARTClass.cpp.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-g++ -c -g -Os -w -ffunction-sections -fdata-sections -nostdlib -fno-threadsafe-statics --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -Dprintf=iprintf -MMD -mcpu=cortex-m3 -DF_CPU=84000000L -DARDUINO=10600 -DARDUINO_SAM_DUE -DARDUINO_ARCH_SAM -D__SAM3X8E__ -mthumb -DUSB_VID=0x2341 -DUSB_PID=0x003e -DUSBCON -DUSB_MANUFACTURER="Unknown" -DUSB_PRODUCT="Arduino Due" -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/libsam -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/CMSIS/Include/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/Device/ATMEL/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/variants/arduino_due_x /private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino/USARTClass.cpp -o /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/USARTClass.cpp.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-g++ -c -g -Os -w -ffunction-sections -fdata-sections -nostdlib -fno-threadsafe-statics --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -Dprintf=iprintf -MMD -mcpu=cortex-m3 -DF_CPU=84000000L -DARDUINO=10600 -DARDUINO_SAM_DUE -DARDUINO_ARCH_SAM -D__SAM3X8E__ -mthumb -DUSB_VID=0x2341 -DUSB_PID=0x003e -DUSBCON -DUSB_MANUFACTURER="Unknown" -DUSB_PRODUCT="Arduino Due" -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/libsam -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/CMSIS/Include/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/Device/ATMEL/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/variants/arduino_due_x /private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino/USB/CDC.cpp -o /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/CDC.cpp.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-g++ -c -g -Os -w -ffunction-sections -fdata-sections -nostdlib -fno-threadsafe-statics --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -Dprintf=iprintf -MMD -mcpu=cortex-m3 -DF_CPU=84000000L -DARDUINO=10600 -DARDUINO_SAM_DUE -DARDUINO_ARCH_SAM -D__SAM3X8E__ -mthumb -DUSB_VID=0x2341 -DUSB_PID=0x003e -DUSBCON -DUSB_MANUFACTURER="Unknown" -DUSB_PRODUCT="Arduino Due" -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/libsam -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/CMSIS/Include/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/Device/ATMEL/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/variants/arduino_due_x /private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino/USB/HID.cpp -o /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/HID.cpp.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-g++ -c -g -Os -w -ffunction-sections -fdata-sections -nostdlib -fno-threadsafe-statics --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -Dprintf=iprintf -MMD -mcpu=cortex-m3 -DF_CPU=84000000L -DARDUINO=10600 -DARDUINO_SAM_DUE -DARDUINO_ARCH_SAM -D__SAM3X8E__ -mthumb -DUSB_VID=0x2341 -DUSB_PID=0x003e -DUSBCON -DUSB_MANUFACTURER="Unknown" -DUSB_PRODUCT="Arduino Due" -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/libsam -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/CMSIS/Include/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/Device/ATMEL/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/variants/arduino_due_x /private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino/USB/USBCore.cpp -o /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/USBCore.cpp.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-g++ -c -g -Os -w -ffunction-sections -fdata-sections -nostdlib -fno-threadsafe-statics --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -Dprintf=iprintf -MMD -mcpu=cortex-m3 -DF_CPU=84000000L -DARDUINO=10600 -DARDUINO_SAM_DUE -DARDUINO_ARCH_SAM -D__SAM3X8E__ -mthumb -DUSB_VID=0x2341 -DUSB_PID=0x003e -DUSBCON -DUSB_MANUFACTURER="Unknown" -DUSB_PRODUCT="Arduino Due" -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/libsam -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/CMSIS/Include/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/Device/ATMEL/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/variants/arduino_due_x /private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino/wiring_pulse.cpp -o /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/wiring_pulse.cpp.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-g++ -c -g -Os -w -ffunction-sections -fdata-sections -nostdlib -fno-threadsafe-statics --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -Dprintf=iprintf -MMD -mcpu=cortex-m3 -DF_CPU=84000000L -DARDUINO=10600 -DARDUINO_SAM_DUE -DARDUINO_ARCH_SAM -D__SAM3X8E__ -mthumb -DUSB_VID=0x2341 -DUSB_PID=0x003e -DUSBCON -DUSB_MANUFACTURER="Unknown" -DUSB_PRODUCT="Arduino Due" -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/libsam -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/CMSIS/Include/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/Device/ATMEL/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/variants/arduino_due_x /private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino/WMath.cpp -o /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/WMath.cpp.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-g++ -c -g -Os -w -ffunction-sections -fdata-sections -nostdlib -fno-threadsafe-statics --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -Dprintf=iprintf -MMD -mcpu=cortex-m3 -DF_CPU=84000000L -DARDUINO=10600 -DARDUINO_SAM_DUE -DARDUINO_ARCH_SAM -D__SAM3X8E__ -mthumb -DUSB_VID=0x2341 -DUSB_PID=0x003e -DUSBCON -DUSB_MANUFACTURER="Unknown" -DUSB_PRODUCT="Arduino Due" -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/libsam -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/CMSIS/Include/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/Device/ATMEL/ -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino -I/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/variants/arduino_due_x /private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino/WString.cpp -o /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/WString.cpp.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-ar rcs /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/core.a /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/dtostrf.c.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-ar rcs /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/core.a /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/cortex_handlers.c.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-ar rcs /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/core.a /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/hooks.c.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-ar rcs /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/core.a /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/iar_calls_sam3.c.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-ar rcs /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/core.a /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/itoa.c.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-ar rcs /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/core.a /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/syscalls_sam3.c.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-ar rcs /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/core.a /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/WInterrupts.c.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-ar rcs /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/core.a /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/wiring.c.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-ar rcs /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/core.a /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/wiring_analog.c.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-ar rcs /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/core.a /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/wiring_digital.c.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-ar rcs /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/core.a /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/wiring_shift.c.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-ar rcs /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/core.a /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/abi.cpp.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-ar rcs /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/core.a /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/IPAddress.cpp.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-ar rcs /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/core.a /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/main.cpp.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-ar rcs /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/core.a /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/new.cpp.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-ar rcs /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/core.a /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/Print.cpp.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-ar rcs /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/core.a /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/Reset.cpp.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-ar rcs /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/core.a /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/RingBuffer.cpp.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-ar rcs /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/core.a /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/Stream.cpp.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-ar rcs /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/core.a /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/UARTClass.cpp.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-ar rcs /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/core.a /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/USARTClass.cpp.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-ar rcs /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/core.a /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/CDC.cpp.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-ar rcs /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/core.a /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/HID.cpp.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-ar rcs /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/core.a /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/USBCore.cpp.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-ar rcs /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/core.a /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/wiring_pulse.cpp.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-ar rcs /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/core.a /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/WMath.cpp.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-ar rcs /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/core.a /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/WString.cpp.o 
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-gcc -Os -Wl,--gc-sections -mcpu=cortex-m3 -T/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/variants/arduino_due_x/linker_scripts/gcc/flash.ld -Wl,-Map,/var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/Blink.cpp.map -o /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/Blink.cpp.elf -L/var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp -mthumb -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--entry=Reset_Handler -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--warn-section-align -Wl,--warn-unresolved-symbols -Wl,--start-group /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/syscalls_sam3.c.o /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/Blink.cpp.o /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/variant.cpp.o /private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/variants/arduino_due_x/libsam_sam3x8e_gcc_rel.a /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/core.a -Wl,--end-group -lm -gcc 
/var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/core.a(main.cpp.o): In function `main':
/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino/main.cpp:54: warning: undefined reference to `setup'
/private/tmp/Arduino.app/Contents/Java/hardware/arduino/sam/cores/arduino/main.cpp:58: warning: undefined reference to `loop'
/private/tmp/Arduino.app/Contents/Java/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-objcopy -O binary /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/Blink.cpp.elf /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/build7060999284065635393.tmp/Blink.cpp.bin 

Sketch uses 10,500 bytes (2%) of program storage space. Maximum is 524,288 bytes.

@igrr
Copy link

igrr commented Feb 17, 2015

Okay, digged a bit further and it seems that coan source doesn't run successfully (hence empty output):

$ /private/tmp/Arduino.app/Contents/Java/hardware/tools/coan source -m -E -P -kb -Dprintf=iprintf -DF_CPU=84000000L -DARDUINO=10600 -DARDUINO_SAM_DUE -DARDUINO_ARCH_SAM -D__SAM3X8E__ -DUSB_VID=0x2341 -DUSB_PID=0x003e -DUSBCON -DUSB_MANUFACTURER="Unknown" -DUSB_PRODUCT="Arduino Due" /var/folders/15/ybtbgzpj7636vv4wp92l2c700000gn/T/sketch2171365710837267890.cpp
dyld: lazy symbol binding failed: Symbol not found: __ZNSt8__detail15_List_node_base7_M_hookEPS0_
  Referenced from: /private/tmp/Arduino.app/Contents/Java/hardware/tools/coan
  Expected in: /usr/lib/libstdc++.6.dylib

dyld: Symbol not found: __ZNSt8__detail15_List_node_base7_M_hookEPS0_
  Referenced from: /private/tmp/Arduino.app/Contents/Java/hardware/tools/coan
  Expected in: /usr/lib/libstdc++.6.dylib

Trace/BPT trap: 5

I'm on OS X 10.10.

Probably would be nice to handle the non-zero return code from coan and stop compilation at this point.

edit: attaching otool output:

$ otool -L /private/tmp/Arduino.app/Contents/Java/hardware/tools/coan
/private/tmp/Arduino.app/Contents/Java/hardware/tools/coan:
    /opt/local/lib/libgcc/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.20.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)
    /opt/local/lib/libgcc/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)

edit 2: probably related: http://stackoverflow.com/a/23533868

@ffissore
Copy link
Contributor Author

Unfortunately coan exists with non-zero exit codes even if it just prints a warning, so exit code is not reliable
Can you confirm you're running the latest build linked at #2636 (comment) ? One of the last fixes was about static compiling coan so that it didn't require additional libraries

@igrr
Copy link

igrr commented Feb 17, 2015

Oops, I was using an older build from #2630 (comment).
It works fine now with the new one.

@ffissore
Copy link
Contributor Author

Ah excellent. More love!

@ffissore ffissore added the Component: Preprocessor The Arduino sketch preprocessor converts .ino files into C++ code before compilation label Feb 19, 2015
@ffissore
Copy link
Contributor Author

Love from #1971 (comment)

Federico Fissore added 12 commits March 3, 2015 16:06
…ere the first function is defined and place the prototypes right before.

Coan will replace excluded code with empty lines instead of removing them: this makes it easier to map preprocessed code with the original one
…ts loaded first and children platform.txt can override its key value pairs
…mple when you have defined a custom hardware packge (in your own sketchbook/hardware folder) and you have not defined a platform.txt because your build.core is arduino:something
(defined in IDE/hardware/platform.txt) is used as a base for custom
hardware (defined in SKETCHBOOK/hardware/platform.txt)
@ffissore ffissore mentioned this pull request Mar 4, 2015
@ffissore
Copy link
Contributor Author

ffissore commented Mar 4, 2015

Replaced by #2729 because of issues with my fork :(

@ffissore ffissore closed this Mar 4, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Component: Preprocessor The Arduino sketch preprocessor converts .ino files into C++ code before compilation
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants