Need help with a make file, please

I am trying to compile a hex file on a PC for a Wixel device that will be connected to an Arduino (Tx, Rx).

I have never compiled a C program and the make command is giving me an error:

Compiling apps/dexdrip/dexdrip.rel

(null):2: syntax error: token -> ':' ; column 2
sdcpp.exe: fatal error: when writing output to : Invalid argument
make: *** [apps/dexdrip/dexdrip.rel] Error 1
You may now close this window.

I am absolutely clueless. Any assistance would be appreciated.
I posted an issue on Github, but the last update to the repository was 7 years ago, and there are open issues from 2014, so expecting a response from the repository owner is next to hopeless. I am hoping that someone with more C experience might be able to help.

Here is the makefile

# This is Makefile defines how to compile all of the libraries and applications
# in the SDK.
# See README.txt for instructions on how to get started using this SDK.
# type `make` or `make apps` to make all of the apps in the apps folder
# type `make APPNAME` to make a specific app
# type `make libs` to make all the libraries

.DEFAULT_GOAL := apps

#### Programs used by this Makefile ############################################
CC := sdcc#         C compiler: creates object files (.rel) from C files (.c)
AS := sdas8051#     Assembler:  creates object files (.rel) from assembly files (.s)
AR := sdcclib#      Librarian:  creates .lib
LD := sdld#         Linker:     creates .hex files from .rel/.lib files)
PACKIHX := packihx# makes .hex files smaller
MV := move#         moves files
CP := cp#           copies files
CAT := cat#         outputs files
ECHO := echo#       outputs some text to the standard output
GREP := grep#       outputs lines from a file that match a given pattern
SED := sed#         edits files
WIXELCMD := wixelcmd# loads programs on the Wixel (command-line utility)
WIXELCONFIG := wixelconfig # Wixel Configuration Utility (GUI)

#### Include directories #######################################################
INCDIRS += libraries/include
I_FLAGS = $(patsubst %,-I%,$(INCDIRS))

#### Compilation options #######################################################

# Generate dependency information
C_FLAGS += -Wp,-MD,$(@:%.rel=%.d),-MT,$@,-MP

# Disable warning 110: conditional flow changed by optimizer
WARNING := --disable-warning 110
C_FLAGS += $(WARNINGS)

# Add the include directories
C_FLAGS += $(I_FLAGS)

# Disable pagination in .lst file
C_FLAGS += -Wa,-p
AS_FLAGS += -p

# Put the output in the right place.
PPC_FLAGS += -Wp,-o,$@

MODEL = --model-medium
C_FLAGS += $(MODEL)
LD_FLAGS += $(MODEL)

# Generate debugging information (.cdb files).
C_FLAGS += --debug
LD_FLAGS += --debug

#### Code area options #########################################################
# --code-loc  corresponds to the "-b HOME =" linker argument
# --code-size corresponds to the "-w" argument to the linker

# CODE_AREA_FULL: Uses all 32k on the chip.
CODE_AREA_FULL = --code-loc 0x0000 --code-size 0x8000

# CODE_AREA_APP: Creates an application that can be loaded with the bootloader,
# using only kilobytes 1-29 inclusive.
CODE_AREA_APP = --code-loc 0x0400 --code-size 0x7400

# The default code area is CODE_AREA_APP.
CODE_AREA := $(CODE_AREA_APP)
LD_FLAGS += $(CODE_AREA)

#### Linking options ###########################################################

# The size of internal ram.  ("-a" argument to the linker)
LD_FLAGS += --iram-size 0x0100

# XRAM location.  ("-b XSEG =" and "-b PSEG =" arguments to linker)
LD_FLAGS += --xram-loc 0xF000

# XRAM size. ("-v" argument to linker)
LD_FLAGS += --xram-size 0xF00

# Put the output in the right place.
LD_FLAGS += -o $(@:%.hex=%.ihx)

#### MODULES ###################################################################
TARGETS :=
RELs :=
LIBs :=
HEXs :=

include libraries/libs.mk
include apps.mk

#### FILES TYPES ###############################################################
# .c   : This is a file that contains source code in the C language.
# .h   : Header file in the C language (part of the source code).
# .s   : Assembly language source code.
#
# .rel : This is an Object file, the result of compiling a .s or .c file.
# .lib : This is a library (a collection of several object files).
# .hex : This is a complete program that can be loaded onto a Wixel.
#
# The lists of all .rel/lib/hex files compiled by this Makefile are in the
# following variables: $(RELs) $(LIBs) $(HEXs)

# These files are generated when compiling a .c file.
Ds := $(RELs:%.rel=%.d)      # .d : dependency information
CDBs := $(RELs:%.rel=%.cdb)  # .cdb : debugging information
ADBs := $(RELs:%.rel=%.adb)  # .adb : debugging information
ASMs := $(RELs:%.rel=%.asm)  # .asm : assembly generated by compiler

# These files are generated when compiling a .s or .c file.
SYMs := $(RELs:%.rel=%.sym)  # .sym : symbol table
LSTs := $(RELs:%.rel=%.lst)  # .lst : listing without absolute addresses
RSTs := $(RELs:%.rel=%.rst)  # .rst : listing with absolute addresses

# These files are generated when linking:
MEMs := $(HEXs:%.hex=%.mem)  # .mem : summary of memory usage
MAPs := $(HEXs:%.hex=%.map)  # .map : list of all addresses and memory sections
LKs  := $(HEXs:%.hex=%.lk)   # .lk  : args used by the linker
LNKs := $(HEXs:%.hex=%.lnk)  # .lnk : args used by the linker (prior to SDCC 3.1.0)
CDBs := $(HEXs:%.hex=%.cdb)  # .cdb : debugging information
OMFs := $(HEXs:%.hex=%) $(HEXs:%.hex=%.omf) # .omf : had no extension prior to SDCC 3.1.0

# These files can be generated from a .hex and .cdb file.
WXLs := $(HEXs:%.hex=%.wxl)  # .wxl : Wixel application
WXLs += $(HEXs:%.hex=%.wxl.tmp)

#### TARGETS ###################################################################
TARGETS += $(RELs) $(HEXs) $(LIBs)

all: $(TARGETS) apps

.PHONY: clean
clean:
	-@rm -fv $(TARGETS)
	-@rm -fv $(CLEAN)
	-@rm -fv $(Ds)
	-@rm -fv $(SYMs)
	-@rm -fv $(CDBs)
	-@rm -fv $(MEMs)
	-@rm -fv $(RSTs)
	-@rm -fv $(MAPs)
	-@rm -fv $(LSTs)
	-@rm -fv $(LKs)
	-@rm -fv $(LNKs)
	-@rm -fv $(BINs)
	-@rm -fv $(ASMs)
	-@rm -fv $(OMFs)
	-@rm -fv $(ADBs)
	-@rm -fv $(CDBs)
	-@rm -fv $(WXLs)

#### COMPLETE COMMANDS #########################################################

ifdef VERBOSE
COMPILE_COMMAND  = $(CC) -c $< $(C_FLAGS) -o $@
ASSEMBLE_COMMAND = $(AS) -glos $(AS_FLAGS) $<
ARCHIVE_COMMAND  = $(AR) $@ $^
LINK_COMMAND     = $(CC) $(LD_FLAGS) libraries/xpage/xpage.rel $^
else
V=@
COMPILE_COMMAND  = @echo Compiling  $@ && $(CC) -c $< $(C_FLAGS) -o $@
ASSEMBLE_COMMAND = @echo Assembling $@ && $(AS) -glos $(AS_FLAGS) $<
ARCHIVE_COMMAND  = @echo Creating   $@ && $(AR) $@ $^
LINK_COMMAND     = @echo Linking    $@ && $(CC) $(LD_FLAGS) libraries/xpage/xpage.rel $^
endif

#### IMPLICIT RULES ############################################################

%.rel: %.c
	$(COMPILE_COMMAND)

%.rel: %.s
	$(ASSEMBLE_COMMAND)

%.lib:
	$(V)rm -f $@
	$(ARCHIVE_COMMAND)

#%.hex: %.rel
#   $(LINK_COMMAND)
#	@mv -f $(@:%.hex=%.ihx) $@

%.wxl: %.hex
	@echo Packaging  $@
	$(V)$(ECHO) Pololu Wixel Application - www.pololu.com> $@.tmp
	$(V)$(ECHO) 1.0>> $@.tmp
	$(V)$(ECHO) ====== license>> $@.tmp
	$(V)$(CAT) LICENSE.txt >> $@.tmp
	$(V)$(ECHO) ====== cdb>> $@.tmp
	$(V)$(GREP) param $(<:%.hex=%.cdb) >> $@.tmp || echo "(This app has no params.)"
	$(V)$(ECHO) ====== hex>> $@.tmp
	$(V)$(PACKIHX) $< >> $@.tmp
	$(V)$(SED) -f libraries/dos_newlines.sed $@.tmp > $@
	$(V)$(RM) $@.tmp

# Include all the dependency files generated during compilation so that Make
# knows which .rel files to recompile when a .h file changes.
-include $(Ds)

Did you try to type make clean before typing make all?

Could also be some outdated sdcpp stuff…

Thanks. make clean didn't change the results.
Outdated- most likely. The newest files on the git are 5 years old, and not knowing what I'm doing, I just followed the steps in the readme.md file.

Here is where sdcc got installed:

  ##### ON WINDOWS
  * Install the wixel development bundle for windows from [here](http://www.pololu.com/file/0J526/wixel-dev-bundle-120127.exe) (you need this in addition to the drivers you downloaded in step 2!!)
  * Open a command prompt (should be under start menu -> programs -> accessories -> Command Prompt)
  * Cd into the folder you downloaded this repo to (ex. `cd C:\Users\<computer name>\Desktop\wixel-xDrip`)
  * now run `make_all.bat` by typing `make_all.bat` into the command prompt

I bought the Wixel device from Pololu, so I should probably ask them...

What’s in the make_all.bat file?

Not much. Just make.


@echo off
make
echo You may now close this window.
pause > nul

I Wonder If this is not due to a missing working path definition or something like that since it seeems file names are missing in the error message…

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.