# Makefile fuer den Test-Build fuer eine Windows- oder Linux-Plattform


# Erster Test Makefile

# Fuer .o-File-Sourcen: Dateien in PROJECT gehen vor gleichnamige Dateien in COMMON
VPATH = \
..\
$(PROJECT)\
$(PROJECT)/src_adc\
$(PROJECT)/src_rotctrl\
$(PROJECT)/src_menu\
$(PROJECT)/src_ui\
$(COMMON)\
$(COMMON)/src_avrcom\
$(COMMON)/src_base\
$(COMMON)/src_eeprom\
$(COMMON)/src_encoder\
$(COMMON)/src_i2c\
$(COMMON)/src_glcd\
$(COMMON)/src_menu\
$(COMMON)/src_misc\
$(COMMON)/src_motor\
$(COMMON)/src_pwm\
$(COMMON)/src_uart\
$(COMMON)/src_ui\
$(COMMON)/src_mockup_sdl\
$(COMMON)/src_unity\



INCLUDE := ../common/src_unity


CPATH = \
    ../common/src_unity\


# Unterscheidung Windows/Linux
ifdef SystemRoot
  # Build auf Windows-System fuer Windows
  
  CC=gcc
  RM=del

  CFLAGS = -g -pg -Wall -Wextra -Wpedantic -std=c99\
  -Wsign-conversion -DGLCD_FRAMEBUFFER -DPLATFORM_PC 
  
  # Flags, um SDL2 korrekt zuzulinken. Die Reihenfolge ist wichtig.
  LFLAGS = -lmingw32 -lSDL2main -llibSDL2  
  
  # Unter Windows darf das "ECHO"-Kommando keine Anfuehrungszeichen haben.
  ECHOQUOTE = 
  
  
  OUT_EXE = unittest.exe
  
else
  # Build auf Linux-System fuer Linux
  
  CC=clang
  RM=rm -f

  CFLAGS = -ggdb -Wall -Wextra -pedantic -Wno-invalid-source-encoding \
  -std=c99\
  -DGLCD_FRAMEBUFFER -DPLATFORM_PC `sdl2-config --cflags --libs`

  #Fuer Clang
  #CFLAGS = -ggdb -Wall -Wextra -pedantic \
  #-DGLCD_FRAMEBUFFER `sdl2-config --cflags --libs` \
  #-Wno-invalid-source-encoding 
  
  # entfernte Flags:
  #-Qunused-arguments


  LFLAGS = `sdl2-config --libs`

  # Unter Linux braucht das "ECHO"-Kommando Trennzeichen, ansonsten wuerde es
  # Kommentarzeichen als solche interpretieren.
  ECHOQUOTE = '
  
  OUT_EXE = unittest
  
endif

COMMON=../common
PROJECT=../project


# Dateien, bei denen es auf den Pfad ankommt, weil die Sourcen
# mehrmals existieren
CFILES = \



OFILES = main.o\
main_unity.o\
encoder_test.o\
encoder_panasonic.o\
key_sdl.o\
key_test.o\
stdio_mock.o\
i2c_generic_mock.o\
i2c_simple_mock.o\
i2c_test.o\
delay.o\
delay_test.o\
adc_multiplex_sdl.o\
adc_test.o\
eeprom_24Cx.o\
eeprom_test.o\
nvram.o\
glcd_ks0108.o\
glcd_ks0108_sdl.o\
glcd_test.o\
glcd_textfun.o\
glcd_gfxfun.o\
font3x6.o\
font4x8.o\
font5x7.o\
font5x8.o\
font8x8.o\
menu.o\
assert.o\
clock.o\
clock_test.o\
crc.o\
crc_test.o\
intmath.o\
memdump.o\
memdump_mock.o\
mock_sdl.o\
mock_glcd.o\
mock_input.o\
mock_timer.o\
ui_menu_eeprom.o\
ui_infoscreen.o\
rot_settings.o\
dcmotor.o\
ftm_calc.o\
ftm_ctrl.o\
ftm_eeprom.o\
ftm_menu.o\
ftm_screens.o\
pulsecounter.o\
uart_sdl.o\
rot_variables.o\
bitmaps.o\
menu_tests.o\
locale.o\
locale_prj.o\
popups.o\
popups_prj.o\
main_unity.o\
Test_intmath.o\



# build0: $(CFILES) $(OFILES)
#	$(CC) $< $(OFILES) -o $(CFLAGS) -DUNITTEST_ENABLED=0 $(LFLAGS) -o $(OUT_EXE) $(CFILES) 

build: $(CFILES) $(OFILES)
	$(CC) -I"../common/src_unity" $c $< -o $@
   
	
clean:
	$(RM) *.o *.d
	$(RM) svn_version.h
	$(RM) $(OUT_EXE)
	
rebuild: clean build	


run:
	./${OUT_EXE}


FORCE:
