load error. avrdude reads fuses but won't write.

So I'm having an issue with my program in trying to upload it to my arduino uno. The output when I run make load is:

avrdude  -v -D -patmega328p -carduino -P/dev/cu.usbmodem1421  -b115200 -UFLASH:w:hw8.hex:i

avrdude: Version 6.3, compiled on Sep 18 2017 at 20:31:51
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "/usr/local/Cellar/avrdude/6.3/etc/avrdude.conf"
         User configuration file is "/Users/Snoop/.avrduderc"
         User configuration file does not exist or is not a regular file, skipping

         Using Port                    : /dev/cu.usbmodem1421
         Using Programmer              : arduino
         Overriding Baud Rate          : 115200
         AVR Part                      : ATmega328P
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PC2
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65    20     4    0 no       1024    4      0  3600  3600 0xff 0xff
           flash         65     6   128    0 yes     32768  128    256  4500  4500 0xff 0xff
           lfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           lock           0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00

         Programmer Type : Arduino
         Description     : Arduino
         Hardware Version: 3
         Firmware Version: 4.4
         Vtarget         : 0.3 V
         Varef           : 0.3 V
         Oscillator      : 28.800 kHz
         SCK period      : 3.3 us

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: safemode: hfuse reads as 0
avrdude: safemode: efuse reads as 0
"FLASH" memory type not defined for part "ATmega328P"

avrdude: safemode: hfuse reads as 0
avrdude: safemode: efuse reads as 0
avrdude: safemode: Fuses OK (E:00, H:00, L:00)

avrdude done.  Thank you.

make: *** [load] Error 1

I'm not really sure what the issue is and I've tried a lot of different approaches to correct the issue. Anybody have any suggestions?

It looks like you are not using the Arduino IDE. Is that correct?

Do you have a copy of the Arduino IDE installed?

No I'm not using the IDE, but I do have it installed.

If you do an upload (of any program) using the IDE does it work?

Yeah, I made sure to test the IDE and even wrote the same program using the IDE. I just went a step further to try and write the same program in assembly, but ran into this problem.

I'll take that as a "yes" to my previous question.

Here's my suggestion:
(In the Arduino IDE) File > Preferences > Show verbose output during: > upload (check) > OK
File > New
Sketch > Upload

After the upload finishes, scroll up the black console window at the bottom of the Arduino IDE window until you find the avrdude command generated by the Arduino IDE. Copy that command and then change the .hex file name to you hw8.hex, then verify this command works.

There are a couple things that might be different between your non-working avrdude command and the Arduino IDE generated working command. The first is that the Arduino IDE's command specifies the avrdude.conf file from the Arduino IDE's avrdude tool, which might be different from the /usr/local/Cellar/avrdude/6.3/etc/avrdude.conf used by your non-working command. Also, the IDE-generated command is surely using Arduino's version of AVRDUDE, whereas your command may be using a separate version installed on your system. Arduino has a special build of AVRDUDE with some modifications.

That worked, but now I'm curious as to how I correct this problem. Do I need to uninstall avrdude and then reinstall it or is there something more in depth that I need to correct?
Thanks for the help.

What is the problem you want to correct?

I want to be able to run any program I write without having to paste the arduino IDE output and altering it to suit my needs. I want to be able to just have my makefile do the work for me.

Well you have the working command now, which can be used to upload any file. You only needed to use the Arduino IDE that one time to get it.

“FLASH” memory type not defined for part “ATmega328P”

The memory type is flash not FLASH.

Thanks for that sure enough I had "FLASH" in my makefile instead of "flash".