VERSION=1.9
SUBVERSION=7


ARCHITECTURE = $(shell uname -m)


#the defaults, but can be controlled independently in targets by using internal/external versions of '..._SOURCES', or not using any (in case of MIDI/TUI):

ENABLE_TUI=1

ENABLE_MIDI=1


#1SID/2SID/etc targets use this, but 1SIDintSDL/1SIDintLibs/m1SIDintSDL forces building with the internal SDL, no matter what USE_INTERNAL_SDL is:
USE_INTERNAL_SDL=0
#these are dependent on SDL in default 1SID/2SID/etc targets, but 1SIDintSDL/1SIDintLibs/m1SIDintSDL targets can use them even if USE_INTERNAL_SDL is 0:
 ENABLE_INTERNAL_SDL_ASM=0
  ENABLE_INTERNAL_SDL_HERMES=1

#ncurses gets built in statically anyway, but using the internal stripped one eliminates build-time dependency of libncurses5-dev (and might yield smaller static runnable)
#(on the other hand, internal ncurses might not like external terminfo/termcap (rxvt exiting, or giving segfaults at startup), so prefer using external ncurses in the release)
USE_INTERNAL_NCURSES=0
#Unfortunately deb-packages don't support wildcards in package-name (major version needs to be explicit) but libncurses5 might not be supported on new systems,
#and libncurses6 is not yet on old systems. So selecting libncurses6 for 64bit x86 platform, and libncurses5 for i686/armel and other probably old 32bit platforms:
ifeq ($(ARCHITECTURE),x86_64)
EXTERNAL_NCURSES_PACKAGE_VERSION=6
else
EXTERNAL_NCURSES_PACKAGE_VERSION=5
endif

OSCILLOSCOPE_SHOWS_ALL_CHANNELS=1


MAKE=make
CC=gcc
#CC=tcc
CXX=g++
LD=ld
DEBUGGER=gdb -ex run --args
ASM=nasm
#ASM=as
COMPRESS=resources/tools/compress64k


CCFLAGS = -DOSCILLOSCOPE_SHOWS_ALL_CHANNELS=$(OSCILLOSCOPE_SHOWS_ALL_CHANNELS)

CCFLAGS += -std=gnu99  -lc  -ldl
CCFLAGS += -O3   # -s # -g
#CCFLAGS += -O0   # -s # -g
#CCFLAGS += -g
CCFLAGS += -finline-functions -finline-small-functions -finline-functions-called-once -fearly-inlining -findirect-inlining
CCFLAGS += -Wall -Wextra -Wno-unused -Wno-unused-parameter  -Wno-implicit-fallthrough  # -g  # -s
CCFLAGS += -Wno-misleading-indentation -Wno-switch  -Wno-pointer-sign  -Wno-char-subscripts
CCFLAGS += -Wno-missing-field-initializers -Wno-sign-compare  #suppress internal SDL warnings
 CCFLAGS +=  -Wno-deprecated-declarations  # to suppress warnings about some deprecated SDL libX11 functions in internal SDL1.2
CCFLAGS += -Wno-unknown-pragmas -Wno-cast-function-type -Wno-maybe-uninitialized -Wno-comment  #suppress built-in portmidi warnings

ASMFLAGS = -f elf32  # elf64  # elfx32  # elf  # elf32 # elf64


DEPENDS=libsdl1.2debian, libasound2,  libncurses$(EXTERNAL_NCURSES_PACKAGE_VERSION)
NATIVEDIR=native/application
SDL_DIR=host/SDL
 HERMES_DIR=$(SDL_DIR)/src/hermes
NCURSES_DIR=host/ncurses
NCURSES_IMPL_DIR=$(NCURSES_DIR)/ncurses
PORTMIDI_DIR=host/portmidi


CONDITIONAL_DEPENDENCIES=


CRSID_SOURCES = -DCRSID_PLATFORM_PC  libcRSID/libcRSID.c


SDL_COMMON = -DENABLED_SDL=1

SDL_INTERNAL_SOURCES = $(SDL_COMMON)  -DUSE_INTERNAL_SDL=1  $(SDL_DIR)/src/*.c  $(SDL_DIR)/src/stdlib/*.c
SDL_INTERNAL_SOURCES += $(SDL_DIR)/src/video/*.c  $(SDL_DIR)/src/audio/*.c  $(SDL_DIR)/src/events/*.c  $(SDL_DIR)/src/timer/*.c  $(SDL_DIR)/src/thread/*.c
SDL_INTERNAL_SOURCES += $(SDL_DIR)/src/cpuinfo/*.c  $(SDL_DIR)/src/file/*.c  $(SDL_DIR)/src/loadso/dlopen/*.c
SDL_INTERNAL_SOURCES_UNIX = $(SDL_DIR)/src/video/x11/*.c  $(SDL_DIR)/src/audio/alsa/*.c  $(SDL_DIR)/src/timer/unix/*.c  $(SDL_DIR)/src/thread/pthread/*.c  # $(SDL_DIR)/src/video/fbcon/*.c
SDL_INTERNAL_SOURCES += -I$(SDL_DIR)/include  -lm  -lpthread  -lX11  -lXext  -lasound  -D_GNU_SOURCE=1

#SDL_INTERNAL_ASM_SOURCES = $(SDL_DIR)/src/hermes/*.asm  #nasm can't accept more than one .asm file seemingly
SDL_INTERNAL_ASM_FLAGS__HERMES = -I $(HERMES_DIR)/  # -DHIDDEN_VISIBILITY
SDL_INTERNAL_ASM_OBJECTS__HERMES = $(SDL_DIR)/src/hermes/*.o
SDL_INTERNAL_ASM_CCFLAGS__HERMES = -DENABLED_ASM_ACCELERATION__HERMES=1

SDL_INTERNAL_ASM_FLAGS =
SDL_INTERNAL_ASM_OBJECTS=
SDL_INTERNAL_ASM_CCFLAGS=
ifeq ($(ENABLE_INTERNAL_SDL_ASM),1)
 SDL_INTERNAL_ASM_CCFLAGS += -DENABLED_ASM_ACCELERATIONS=1
 ifeq ($(ENABLE_INTERNAL_SDL_HERMES),1)
  SDL_INTERNAL_ASM_FLAGS += $(SDL_INTERNAL_ASM_FLAGS__HERMES)
  SDL_INTERNAL_ASM_OBJECTS += $(SDL_INTERNAL_ASM_OBJECTS__HERMES)
  SDL_INTERNAL_ASM_CCFLAGS += $(SDL_INTERNAL_ASM_CCFLAGS__HERMES)
 endif
endif

SDL_EXTERNAL_SOURCES = $(SDL_COMMON)  `sdl-config --cflags --libs`  -lSDL  -lm  # -lpulse0

SDL_INTERNAL_OBJECTS=
ifeq ($(USE_INTERNAL_SDL),1)
 ifeq ($(ENABLE_INTERNAL_SDL_ASM),1)
  ifeq ($(ENABLE_INTERNAL_SDL_HERMES),1)
   CONDITIONAL_DEPENDENCIES+=hermes
  endif
  ASMFLAGS += $(SDL_INTERNAL_ASM_FLAGS)
  SDL_INTERNAL_OBJECTS += $(SDL_INTERNAL_ASM_OBJECTS)
  CCFLAGS += $(SDL_INTERNAL_ASM_CCFLAGS)
 endif
 SDL_SOURCES = $(SDL_INTERNAL_SOURCES)   # CCFLAGS+= -D_GNU_SOURCE=1 -D_REENTRANT  # -L/usr/lib/x86_64-linux-gnu
 CONDITIONAL_SDL_INTERNAL_SOURCES_UNIX = $(SDL_INTERNAL_SOURCES_UNIX)
 SDL_OBJECTS = $(SDL_INTERNAL_OBJECTS)
else
 SDL_SOURCES = $(SDL_EXTERNAL_SOURCES)
 CONDITIONAL_SDL_INTERNAL_SOURCES_UNIX=
 SDL_OBJECTS =
endif


#alsa is used with TUI-only versions to have sound (in place of SDL-audio)
ALSA_SOURCES = -DENABLED_ALSA=1
ALSA_SOURCES += -lasound


ENABLE_NCURSES=$(ENABLE_TUI)
ifeq ($(ENABLE_NCURSES),1)

NCURSES_COMMON = -DENABLED_NCURSES=1

NCURSES_INTERNAL_SOURCES = $(NCURSES_COMMON)  -DUSE_INTERNAL_NCURSES=1  -DUSE_TERM_DRIVER=1
NCURSES_INTERNAL_SOURCES += $(NCURSES_IMPL_DIR)/*.c  $(NCURSES_IMPL_DIR)/base/*.c  $(NCURSES_IMPL_DIR)/tinfo/*.c  $(NCURSES_IMPL_DIR)/tty/*.c $(NCURSES_IMPL_DIR)/trace/*.c
NCURSES_INTERNAL_SOURCES += -I$(NCURSES_DIR)/include  -I$(NCURSES_IMPL_DIR)

NCURSES_EXTERNAL_SOURCES= $(NCURSES_COMMON) -lncurses

ifeq ($(USE_INTERNAL_NCURSES),1)
 NCURSES_SOURCES = $(NCURSES_INTERNAL_SOURCES)
else
 NCURSES_SOURCES = $(NCURSES_EXTERNAL_SOURCES)
endif

endif


ifeq ($(ENABLE_MIDI),1)
 PORTMIDI_LINK=-lasound -lpthread
 PORTMIDI_SOURCES = -DMIDI=$(ENABLE_MIDI) -DPMALSA $(PORTMIDI_DIR)/ptlinux.c $(PORTMIDI_DIR)/portmidi.c $(PORTMIDI_DIR)/porttime.c
 PORTMIDI_SOURCES += $(PORTMIDI_DIR)/pmlinux.c  $(PORTMIDI_DIR)/pmutil.c $(PORTMIDI_DIR)/pmlinuxalsa.c $(PORTMIDI_DIR)/finddefault.c  $(PORTMIDI_LINK)
 PORTMIDI_SOURCESW = -DMIDI=$(ENABLE_MIDI) $(PORTMIDI_DIR)/ptwinmm.c $(PORTMIDI_DIR)/portmidi.h $(PORTMIDI_DIR)/portmidi.c $(PORTMIDI_DIR)/porttime.h $(PORTMIDI_DIR)/porttime.c $(PORTMIDI_DIR)/pmwin.c $(PORTMIDI_DIR)/pmutil.h $(PORTMIDI_DIR)/pmutil.c $(PORTMIDI_DIR)/pmwinmm.h $(PORTMIDI_DIR)/pmwinmm.c $(PORTMIDI_DIR)/finddefault.h $(PORTMIDI_DIR)/finddefault.c
 PORTMIDI_LINKW=-lwinmm
endif



.PHONY: all clean package install uninstall purge


all: SIDwizard SIDwizard_TUI  SIDmaker SIDmaker_TUI
# all: 1SID 1SID_TUI  m1SID m1SID_TUI
all: usermanual  sidwizard
# all: manual  sel
#all: SIDwizard_intSDL  SIDmaker_intSDL  # SIDwizard_intLibs
# all: 1SIDintSDL m1SIDintSDL
all: cleanarrays  # 1SIDw m1SIDw  2SIDw m2SIDw  3SIDw m3SIDw 4SIDw m4SIDw manualw


natives:
	make -C native/sources clean
	make -C native/sources EMULATOR=1 TUI_ONLY=1 OSCILLOSCOPE_SHOWS_ALL_CHANNELS=$(OSCILLOSCOPE_SHOWS_ALL_CHANNELS)  #should come before non-TUI_ONLY because e.g. usermanual.asm gets generated twice with the same name
	make -C native/sources clean
	make -C native/sources EMULATOR=1 OSCILLOSCOPE_SHOWS_ALL_CHANNELS=$(OSCILLOSCOPE_SHOWS_ALL_CHANNELS)
	make -C native/sources clean
	make -C native/sources EMULATOR=0
	cp  $(NATIVEDIR)/SID-Wizard-$(VERSION)$(SUBVERSION)-disk1.d64  $(NATIVEDIR)/SW-$(VERSION)-UserManual.prg  .
	cp  $(NATIVEDIR)/SID-Wizard-$(VERSION).prg  .
	cp  $(NATIVEDIR)/SID-Maker-$(VERSION).prg $(NATIVEDIR)/SID-Maker-SFX.prg $(NATIVEDIR)/SID-Maker-SWP.prg  .
	cp  $(NATIVEDIR)/SID-Maker-ROM.prg $(NATIVEDIR)/SID-Maker-ROM-SWP.prg $(NATIVEDIR)/SID-Maker-echo.prg  .
	 cp $(NATIVEDIR)/SID-Maker-SWP-2SID.prg $(NATIVEDIR)/SID-Maker-SWP-3SID.prg $(NATIVEDIR)/SID-Maker-SWP-4SID.prg  .
	cp  $(NATIVEDIR)/SID-Wizard-2SID.prg  $(NATIVEDIR)/SID-Maker-2SID.prg  .
	cp  $(NATIVEDIR)/SID-Wizard-3SID.prg  $(NATIVEDIR)/SID-Maker-3SID.prg  $(NATIVEDIR)/SID-Wizard-4SID.prg  $(NATIVEDIR)/SID-Maker-4SID.prg .
	 cp $(NATIVEDIR)/SID-Maker-ROM-2SID.prg $(NATIVEDIR)/SID-Maker-ROM-3SID.prg $(NATIVEDIR)/SID-Maker-ROM-4SID.prg  .
#	-cp  $(NATIVEDIR)/SWMconvert $(NATIVEDIR)/sng2swm  .

cleannatives:
	make -C native/sources clean

cleancmp:
	rm -f resources/SID-*.cmp  #premade compressed SplashLogo and SW-header-logo XPM files are permanent, shouldn't be cleaned


host/KERNAL.bin:
	make kernal
kernal:
	64tass  host/KERNAL.asm  -o host/KERNAL.bin  -b -DMIDI=$(ENABLE_MIDI) # -L KERNAL.lst

arrays: host/KERNAL.bin  # kernal
	make exearrays
	make dataarrays

exearrays:
	$(CC)  resources/tools/bin2array.c  -o resources/tools/bin2array
	$(CC)  resources/tools/charsetgen.c  -o resources/tools/charsetgen
	resources/tools/charsetgen resources/chargen.pbm resources/chargen 1 40  # dd  if=resources/chargen.prg  of=resources/chargen  bs=2  skip=1
	 resources/tools/bin2array resources/chargen
	resources/tools/charsetgen resources/CharGen-16x16.pbm resources/CharGen-16x16.bin 2 40
	resources/tools/charsetgen resources/CharGen-24x24.pbm resources/CharGen-24x24.bin 3 40
	resources/tools/charsetgen resources/CharGen-32x32.pbm resources/CharGen-32x32.bin 4 40
	resources/tools/bin2array resources/CharGen-16x16.bin
	resources/tools/bin2array resources/CharGen-24x24.bin
	resources/tools/bin2array resources/CharGen-32x32.bin
	resources/tools/charsetgen resources/SW-charset-16x16.pbm resources/SW-charset-16x16.bin 2 20
	resources/tools/charsetgen resources/SW-charset-24x24.pbm resources/SW-charset-24x24.bin 3 20
	resources/tools/charsetgen resources/SW-charset-32x32.pbm resources/SW-charset-32x32.bin 4 20
	resources/tools/bin2array resources/SW-charset-16x16.bin
	resources/tools/bin2array resources/SW-charset-24x24.bin
	resources/tools/bin2array resources/SW-charset-32x32.bin
	resources/tools/bin2array resources/SWheader2x.bmp.cmp resources/SWheader2x.bmp.cmp.h
	resources/tools/bin2array resources/SWheader3x.bmp.cmp resources/SWheader3x.bmp.cmp.h
	resources/tools/bin2array resources/SWheader4x.bmp.cmp resources/SWheader4x.bmp.cmp.h
	resources/tools/bin2array host/KERNAL.bin resources/KERNAL.h
	for inputfile in resources/SID-*.cmp ; do resources/tools/bin2array $${inputfile} ; done ;
#	for inputfile in resources/SID-*nopack.prg ; do resources/tools/bin2array $${inputfile} ; done ;
	for inputfile in resources/SID-*-for-TUI.cmp ; do resources/tools/bin2array $${inputfile}; done ;  # $${inputfile%-*}.h -origname; done ;
#	for inputfile in resources/SID-*nopack-for-TUI.prg ; do resources/tools/bin2array $${inputfile}; done ;  # $${inputfile%-*}.h -origname; done ;
	resources/tools/bin2array resources/SIDwizard-SplashLogo.bmp.cmp resources/SIDwizard-SplashLogo.bmp.cmp.h
#	icotool  -c  -o resources/SW-icon-16x16.ico  resources/SW-icon-16x16.png  #resources/SID-Wizard-icon.ico resources/SID-Wizard-icon.png
#	i686-w64-mingw32-windres -O coff -i resources/SID-Wizard-icon.rc -o resources/SID-Wizard-icon.res

manual_arrays: dataarrays

dataarrays:
#	$(CC)  resources/tools/bin2array.c  -o resources/tools/bin2array
	resources/tools/bin2array resources/SID-Wizard-$(VERSION)$(SUBVERSION)-UserManual.txt resources/SID-Wizard-UserManual.h


cleanarrays:
	rm -f  resources/SID-*.h  resources/SIDwizard-SplashLogo.bmp.cmp.h  resources/KERNAL.h  resources/chargen.h
	rm -f  resources/CharGen*.bin resources/CharGen*.h  # resources/CharGen*.cmp
	rm -f  resources/SW-charset*.bin resources/SW-charset*.h  # resources/SW-charset*.cmp
	rm -f  resources/SWheader*.h


SIDwizard: #1SID
	make 1SID

#1SID: CC=tcc
1SID: CCFLAGS+=-s
1SID: SDL_SOURCES += $(CONDITIONAL_SDL_INTERNAL_SOURCES_UNIX)
1SID: arrays  $(CONDITIONAL_DEPENDENCIES)
	$(CC)  -o SIDwizard  SIDwizard.c  $(CRSID_SOURCES) $(SDL_SOURCES) $(SDL_OBJECTS) $(NCURSES_SOURCES) $(PORTMIDI_SOURCES)  -D_LINUX=1  -DSIDAMOUNT=1  -DVERSION=\"$(VERSION)\"  -DSUBVERSION=\"$(SUBVERSION)\"  $(CCFLAGS)  # $(PORTMIDI_LINK)
#	./SIDwizard


SIDwizard_TUI: #1SID_TUI
	make 1SID_TUI

#1SID_TUI: CC=tcc
1SID_TUI: CCFLAGS += -s
1SID_TUI: CCFLAGS += -DTUI_ONLY=1
1SID_TUI: CCFLAGS += -DEXE_POSTFIX="\"_TUI\""
1SID_TUI: arrays  #SID-Wizard with only textual user-interface (ncurses,ALSA) and no MIDI (aiming for small executable, would be difficult to use MIDI without GUI anyway)
ifeq ($(ENABLE_TUI),1)
	$(CC)  -o SIDwizard_TUI  SIDwizard.c  $(CRSID_SOURCES) $(NCURSES_SOURCES) $(ALSA_SOURCES)  -D_LINUX=1  -DSIDAMOUNT=1  -DVERSION=\"$(VERSION)\"  -DSUBVERSION=\"$(SUBVERSION)\"  $(CCFLAGS)
#	./SIDwizard_TUI
endif


SIDwizard_intSDL: #1SIDintSDL
	make 1SIDintSDL

1SIDintSDL: CCFLAGS+=-s
1SIDintSDL: SDL_INTERNAL_SOURCES += $(SDL_INTERNAL_SOURCES_UNIX)
1SIDintSDL: SDL_INTERNAL_OBJECTS = $(SDL_INTERNAL_ASM_OBJECTS)
1SIDintSDL: CCFLAGS += $(SDL_INTERNAL_ASM_CCFLAGS)
1SIDintSDL: arrays  # $(CONDITIONAL_DEPENDENCIES)
ifeq ($(ENABLE_INTERNAL_SDL_ASM),1)
	$(MAKE) hermes
endif
	$(CC)  -o SIDwizard_intSDL  SIDwizard.c  $(CRSID_SOURCES) $(SDL_INTERNAL_SOURCES) $(SDL_INTERNAL_OBJECTS) $(NCURSES_SOURCES) $(PORTMIDI_SOURCES)  -D_LINUX=1  -DSIDAMOUNT=1  -DVERSION=\"$(VERSION)\"  -DSUBVERSION=\"$(SUBVERSION)\"  $(CCFLAGS)  # $(PORTMIDI_LINK)
#	./SIDwizard_intSDL


SIDwizard_intLibs: #1SIDintLibs
	make 1SIDintLibs

1SIDintLibs: CCFLAGS+=-s
1SIDintLibs: SDL_INTERNAL_SOURCES += $(SDL_INTERNAL_SOURCES_UNIX)
1SIDintLibs: SDL_INTERNAL_OBJECTS = $(SDL_INTERNAL_ASM_OBJECTS)
1SIDintLibs: CCFLAGS += $(SDL_INTERNAL_ASM_CCFLAGS)
1SIDintLibs: arrays  # $(CONDITIONAL_DEPENDENCIES)  #force all libs (SDL and ncurses) to be internal (portmidi is internal by default if MIDI is enabled)
ifeq ($(ENABLE_INTERNAL_SDL_ASM),1)
	$(MAKE) hermes
endif
	$(CC)  -o SIDwizard_intLibs  SIDwizard.c  $(CRSID_SOURCES) $(SDL_INTERNAL_SOURCES) $(SDL_INTERNAL_OBJECTS) $(NCURSES_INTERNAL_SOURCES) $(PORTMIDI_SOURCES)  -D_LINUX=1  -DSIDAMOUNT=1  -DVERSION=\"$(VERSION)\"  -DSUBVERSION=\"$(SUBVERSION)\"  $(CCFLAGS)  # $(PORTMIDI_LINK)
#	./SIDwizard_intLibs


#2SID: CCFLAGS+=-s
#2SID: SDL_SOURCES += $(CONDITIONAL_SDL_INTERNAL_SOURCES_UNIX)
#2SID: arrays  $(CONDITIONAL_DEPENDENCIES)
#	$(CC)  -o SIDwizard-2SID  SIDwizard.c  $(SDL_SOURCES) $(SDL_OBJECTS) $(NCURSES_SOURCES) $(PORTMIDI_SOURCES)  -D_LINUX=1  -DSIDAMOUNT=2  -DVERSION=\"$(VERSION)\"  -DSUBVERSION=\"$(SUBVERSION)\"  $(CCFLAGS)  # $(PORTMIDI_LINK)
##	./SIDwizard-2SID

#3SID: CCFLAGS+=-s
#3SID: SDL_SOURCES += $(CONDITIONAL_SDL_INTERNAL_SOURCES_UNIX)
#3SID: arrays  $(CONDITIONAL_DEPENDENCIES)
#	$(CC)  -o SIDwizard-3SID  SIDwizard.c  $(SDL_SOURCES) $(SDL_OBJECTS) $(NCURSES_SOURCES) $(PORTMIDI_SOURCES)  -D_LINUX=1  -DSIDAMOUNT=3  -DVERSION=\"$(VERSION)\"  -DSUBVERSION=\"$(SUBVERSION)\"  $(CCFLAGS)  # $(PORTMIDI_LINK)
##	./SIDwizard-3SID

#4SID: CCFLAGS+=-s
#4SID: SDL_SOURCES += $(CONDITIONAL_SDL_INTERNAL_SOURCES_UNIX)
#4SID: arrays  $(CONDITIONAL_DEPENDENCIES)
#	$(CC)  -o SIDwizard-4SID  SIDwizard.c  $(SDL_SOURCES) $(SDL_OBJECTS) $(NCURSES_SOURCES) $(PORTMIDI_SOURCES)  -D_LINUX=1  -DSIDAMOUNT=4  -DVERSION=\"$(VERSION)\"  -DSUBVERSION=\"$(SUBVERSION)\"  $(CCFLAGS)  # $(PORTMIDI_LINK)
##	./SIDwizard-3SID


hermes: ASMFLAGS += $(SDL_INTERNAL_ASM_FLAGS__HERMES)
hermes: #MMX/X86 assembly routines for faster blitting  #tcc compiler 0.9 couldn't link Hermes
#ifeq ($(ENABLE_INTERNAL_SDL_ASM),1)
	for inputfile in $(HERMES_DIR)/*.asm ; do  $(ASM)  $(ASMFLAGS)  -o $${inputfile%.*}.o  $${inputfile}  ; done ;
#endif


SIDwizard_test:
	make test

test: CC=tcc
#test: CCFLAGS+=-g
#test: DEBUG=$(DEBUGGER)
#test: SDL_SOURCES = $(SDL_INTERNAL_SOURCES)
# test: SDL_SOURCES += $(SDL_INTERNAL_SOURCES_UNIX)
#test: SDL_OBJECTS = $(SDL_INTERNAL_ASM_OBJECTS)
# test: CCFLAGS += $(SDL_INTERNAL_ASM_CCFLAGS)
#test: CCFLAGS += -DEXE_POSTFIX="\"_test\""
test: # arrays  # $(CONDITIONAL_DEPENDENCIES) # hermes  # 1SID     #tcc compiler 0.9 couldn't link Hermes
#	$(CC)  resources/tools/bin2array.c  -o resources/tools/bin2array
#	make -C native/sources test EMULATOR=1 OSCILLOSCOPE_SHOWS_ALL_CHANNELS=$(OSCILLOSCOPE_SHOWS_ALL_CHANNELS)
##	resources/tools/bin2array resources/SID-Wizard-nopack.prg
#	make -C native/sources test EMULATOR=1 TUI_ONLY=1 OSCILLOSCOPE_SHOWS_ALL_CHANNELS=$(OSCILLOSCOPE_SHOWS_ALL_CHANNELS)
##	resources/tools/bin2array  resources/SID-Wizard-nopack-for-TUI.prg  # resources/SID-Wizard-nopack.h  -origname
	make exearrays
#ifeq ($(ENABLE_INTERNAL_SDL_ASM),1)
#	$(MAKE) hermes
#endif
	$(CC)  -o SIDwizard_test  SIDwizard.c  $(CRSID_SOURCES) $(SDL_SOURCES) $(SDL_OBJECTS) $(NCURSES_EXTERNAL_SOURCES) $(PORTMIDI_SOURCES)  -D_LINUX=1  -DSIDAMOUNT=1  -DVERSION=\"$(VERSION)\"  -DSUBVERSION=\"$(SUBVERSION)\"  $(CCFLAGS)  # $(PORTMIDI_LINK)  # -lpulse
	$(DEBUG) ./SIDwizard_test -GUI -normal  # resources/examples/flashitback.swm  # -sidlight # -sidhq #
#	./SIDwizard_test -cli  # -sidlight # -sidhq # resources/examples/flashitback.swm


SIDwizard_testCLI:
	make testcli

testtui: testcli
testTUI: testcli
testCLI: testcli
testcli: CC=tcc
#testcli: CCFLAGS+=-g
#testcli: DEBUG=$(DEBUGGER)
#testcli: UNCOMPRESSED_NATIVES=0
testcli: CCFLAGS+=-DTUI_ONLY=1  # -DUNCOMPRESSED_NATIVES=$(UNCOMPRESSED_NATIVES)
#testcli: ENABLE_TUI=1
#testcli: ENABLE_MIDI=0
#testcli: CCFLAGS+=-DENABLE_MIDI=0
#testcli: SDL_INTERNAL_SOURCES += $(SDL_INTERNAL_SOURCES_UNIX)
#testcli: CCFLAGS += -DEXE_POSTFIX="\"_testcli\""
testcli: # 1SID
ifeq ($(ENABLE_TUI),1)
#	$(CC)  resources/tools/bin2array.c  -o resources/tools/bin2array
	make exearrays  # UNCOMPRESSED_NATIVES=$(UNCOMPRESSED_NATIVES)
#	make -C native/sources test EMULATOR=1 TUI_ONLY=1 OSCILLOSCOPE_SHOWS_ALL_CHANNELS=$(OSCILLOSCOPE_SHOWS_ALL_CHANNELS)  UNCOMPRESSED_NATIVES=$(UNCOMPRESSED_NATIVES)
#ifeq ($(UNCOMPRESSED_NATIVES),1)
#	resources/tools/bin2array  resources/SID-Wizard-for-TUI.prg  # resources/SID-Wizard-nopack.h  -origname
#else
#	resources/tools/bin2array  resources/SID-Wizard-for-TUI.cmp  # resources/SID-Wizard-nopack.h  -origname
#	make exearrays UNCOMPRESSED_NATIVES=$(UNCOMPRESSED_NATIVES)
#endif
	$(CC)  -o SIDwizard_testCLI  SIDwizard.c  $(CRSID_SOURCES) $(NCURSES_EXTERNAL_SOURCES) $(ALSA_SOURCES) -D_LINUX=1  -DSIDAMOUNT=1  -DVERSION=\"$(VERSION)\"  -DSUBVERSION=\"$(SUBVERSION)\"  $(CCFLAGS)  # $(PORTMIDI_SOURCES)  # $(SDL_SOURCES) # $(PORTMIDI_LINK)  # -lpulse
ifeq ($(TERM),linux)
	$(DEBUG) ./SIDwizard_testCLI  # resources/examples/flashitback.swm  # -tui   # -sidlight # -sidhq
else
#	xterm  -geometry 80x25 -e "$(DEBUG)./SIDwizard_testCLI"  # -tui  # -sidlight # -sidhq # resources/examples/flashitback.swm
	lxterminal  --geometry=80x25  -e "$(DEBUG)./SIDwizard_testCLI"  # -tui  # -sidlight # -sidhq # resources/examples/flashitback.swm
#	gnome-terminal  --geometry=80x25  -e "$(DEBUG)./SIDwizard_testCLI"  # -tui  # -sidlight # -sidhq # resources/examples/flashitback.swm
#	sakura  --columns 80  --rows 25  -e "./SIDwizard_testCLI"  # -tui  # -sidlight # -sidhq # resources/examples/flashitback.swm
#	stterm  -g 80x25  -e "./SIDwizard_testCLI"  # -tui  # -sidlight # -sidhq # resources/examples/flashitback.swm
#	lilyterm  -g 80x25  -e "./SIDwizard_testCLI"  # -tui  # -sidlight # -sidhq # resources/examples/flashitback.swm
#	rxvt  -geometry 80x25  -e "./SIDwizard_testCLI"  # -tui  # -sidlight # -sidhq # resources/examples/flashitback.swm
#	fbterm  --  "$(DEBUG)./SIDwizard_testCLI"  # -tui  # -sidlight # -sidhq # resources/examples/flashitback.swm
endif
endif


test2: CC=tcc
#test2: SDL_INTERNAL_SOURCES += $(SDL_INTERNAL_SOURCES_UNIX)
test2: 2SID
	./SIDwizard-2SID -mono resources/examples/egblues.sws -stereo

test3: CC=tcc
#test3: SDL_INTERNAL_SOURCES += $(SDL_INTERNAL_SOURCES_UNIX)
test3: 3SID
	./SIDwizard-3SID -stereo

test4: CC=tcc
#test4: SDL_INTERNAL_SOURCES += $(SDL_INTERNAL_SOURCES_UNIX)
test4: 4SID
	./SIDwizard-4SID -stereo


SIDmaker: #m1SID
	make m1SID

m1SID: CCFLAGS+=-s
m1SID: SDL_SOURCES += $(CONDITIONAL_SDL_INTERNAL_SOURCES_UNIX)
m1SID: arrays  $(CONDITIONAL_DEPENDENCIES)
	$(CC)  -o SIDmaker  SIDwizard.c  $(CRSID_SOURCES) $(SDL_SOURCES) $(SDL_OBJECTS) $(NCURSES_SOURCES)  -D_LINUX=1  -DSIDAMOUNT=1  -DSIDMAKER=1  -DVERSION=\"$(VERSION)\"  -DSUBVERSION=\"$(SUBVERSION)\"  $(CCFLAGS)
#	./SIDmaker


SIDmaker_intSDL: #m1SIDintSDL
	make m1SIDintSDL

m1SIDintSDL: CCFLAGS+=-s
m1SIDintSDL: SDL_INTERNAL_SOURCES += $(SDL_INTERNAL_SOURCES_UNIX)
m1SIDintSDL: SDL_INTERNAL_OBJECTS = $(SDL_INTERNAL_ASM_OBJECTS)
m1SIDintSDL: CCFLAGS += $(SDL_INTERNAL_ASM_CCFLAGS)
m1SIDintSDL: arrays  # $(CONDITIONAL_DEPENDENCIES)
ifeq ($(ENABLE_INTERNAL_SDL_ASM),1)
	$(MAKE) hermes
endif
	$(CC)  -o SIDmaker_intSDL  SIDwizard.c  $(CRSID_SOURCES) $(SDL_INTERNAL_SOURCES) $(SDL_INTERNAL_OBJECTS) $(NCURSES_SOURCES)  -D_LINUX=1  -DSIDAMOUNT=1  -DSIDMAKER=1  -DVERSION=\"$(VERSION)\"  -DSUBVERSION=\"$(SUBVERSION)\"  $(CCFLAGS)
#	./SIDmaker_intSDL


SIDmaker_TUI: #m1SID_TUI
	make m1SID_TUI

m1SID_TUI: CCFLAGS += -s
m1SID_TUI: CCFLAGS += -DTUI_ONLY=1
m1SID_TUI: CCFLAGS += -DEXE_POSTFIX="\"_TUI\""
m1SID_TUI: arrays  #SID-Maker with only textual user-interface (ncurses) and no MIDI (aiming for small executable, would be difficult to use MIDI without GUI anyway)
ifeq ($(ENABLE_TUI),1)
	$(CC)  -o SIDmaker_TUI  SIDwizard.c  $(CRSID_SOURCES) $(NCURSES_SOURCES)  -D_LINUX=1  -DSIDAMOUNT=1  -DSIDMAKER=1  -DVERSION=\"$(VERSION)\"  -DSUBVERSION=\"$(SUBVERSION)\"  $(CCFLAGS)
#	./SIDmaker_TUI
endif

#m1SIDsfx: CCFLAGS+=-s
#m1SIDsfx: SDL_SOURCES += $(CONDITIONAL_SDL_INTERNAL_SOURCES_UNIX)
#m1SIDsfx: arrays  $(CONDITIONAL_DEPENDENCIES)
#	$(CC)  -o SIDmaker-SFX  SIDwizard.c  $(CRSID_SOURCES) $(SDL_SOURCES) $(SDL_OBJECTS) $(NCURSES_SOURCES)  -D_LINUX=1  -DSIDAMOUNT=1  -DSIDMAKER=1  -DSFX_SUPPORT=1  -DVERSION=\"$(VERSION)\"  -DSUBVERSION=\"$(SUBVERSION)\"  $(CCFLAGS)
##	./SIDmaker

#m1SIDswp: CCFLAGS+=-s
#m1SIDswp: SDL_SOURCES += $(CONDITIONAL_SDL_INTERNAL_SOURCES_UNIX)
#m1SIDswp: arrays  $(CONDITIONAL_DEPENDENCIES)
#	$(CC)  -o SIDmaker-SWP  SIDwizard.c  $(CRSID_SOURCES) $(SDL_SOURCES) $(SDL_OBJECTS) $(NCURSES_SOURCES)  -D_LINUX=1  -DSIDAMOUNT=1  -DSIDMAKER=1  -DSWP_SUPPORT=1  -DVERSION=\"$(VERSION)\"  -DSUBVERSION=\"$(SUBVERSION)\"  $(CCFLAGS)
##	./SIDmaker

#m2SID: CCFLAGS+=-s
#m2SID: SDL_SOURCES += $(CONDITIONAL_SDL_INTERNAL_SOURCES_UNIX)
#m2SID: arrays  $(CONDITIONAL_DEPENDENCIES)
#	$(CC)  -o SIDmaker-2SID  SIDwizard.c  $(CRSID_SOURCES) $(SDL_SOURCES) $(SDL_OBJECTS) $(NCURSES_SOURCES)  -D_LINUX=1  -DSIDAMOUNT=2  -DSIDMAKER=1  -DVERSION=\"$(VERSION)\" -DSUBVERSION=\"$(SUBVERSION)\"  $(CCFLAGS)
##	./SIDmaker-2SID

#m3SID: CCFLAGS+=-s
#m3SID: SDL_SOURCES += $(CONDITIONAL_SDL_INTERNAL_SOURCES_UNIX)
#m3SID: arrays  $(CONDITIONAL_DEPENDENCIES)
#	$(CC)  -o SIDmaker-3SID  SIDwizard.c  $(CRSID_SOURCES) $(SDL_SOURCES) $(SDL_OBJECTS) $(NCURSES_SOURCES)  -D_LINUX=1  -DSIDAMOUNT=3  -DSIDMAKER=1  -DVERSION=\"$(VERSION)\"  -DSUBVERSION=\"$(SUBVERSION)\"  $(CCFLAGS)
##	./SIDmaker-3SID

#m4SID: CCFLAGS+=-s
#m4SID: SDL_SOURCES += $(CONDITIONAL_SDL_INTERNAL_SOURCES_UNIX)
#m4SID: arrays  $(CONDITIONAL_DEPENDENCIES)
#	$(CC)  -o SIDmaker-4SID  SIDwizard.c  $(CRSID_SOURCES) $(SDL_SOURCES) $(SDL_OBJECTS) $(NCURSES_SOURCES)  -D_LINUX=1  -DSIDAMOUNT=4  -DSIDMAKER=1  -DVERSION=\"$(VERSION)\"  -DSUBVERSION=\"$(SUBVERSION)\"  $(CCFLAGS)
##	./SIDmaker-3SID


SIDmaker_test: #mtest
	make mtest

mtest: CC=tcc
#mtest: CCFLAGS+=-g
#mtest: DEBUG=$(DEBUGGER)
#mtest: SDL_SOURCES += $(SDL_INTERNAL_SOURCES_UNIX)
#mtest: CCFLAGS += -DEXE_POSTFIX="\"_test\""
mtest: #arrays  #m1SID
#	$(CC)  resources/tools/bin2array.c  -o resources/tools/bin2array
#	make -C native/sources mtest EMULATOR=1 OSCILLOSCOPE_SHOWS_ALL_CHANNELS=$(OSCILLOSCOPE_SHOWS_ALL_CHANNELS)
##	resources/tools/bin2array  resources/SID-Maker-nopack.prg
#	make -C native/sources mtest EMULATOR=1 TUI_ONLY=1 OSCILLOSCOPE_SHOWS_ALL_CHANNELS=$(OSCILLOSCOPE_SHOWS_ALL_CHANNELS)
##	resources/tools/bin2array  resources/SID-Maker-nopack-for-TUI.prg  # resources/SID-Maker-nopack.h  -origname
	make exearrays
	$(CC)  -o SIDmaker_test  SIDwizard.c  $(CRSID_SOURCES) $(SDL_SOURCES) $(NCURSES_EXTERNAL_SOURCES)  -D_LINUX=1  -DSIDAMOUNT=1  -DSIDMAKER=1  -DVERSION=\"$(VERSION)\"  -DSUBVERSION=\"$(SUBVERSION)\"  $(CCFLAGS)
	$(DEBUG) ./SIDmaker_test  # resources/examples/flashitback.swm


SIDmaker_testCLI: #mtestcli
	make mtestcli

mtestcli: CC=tcc
mtestcli: CCFLAGS+=-DTUI_ONLY=1
#mtestcli: SDL_INTERNAL_SOURCES += $(SDL_INTERNAL_SOURCES_UNIX)
#mtestcli: CCFLAGS += -DEXE_POSTFIX="\"_testcli\""
mtestcli: #arrays  #m1SID
#	$(CC)  resources/tools/bin2array.c  -o resources/tools/bin2array
#	make -C native/sources mtest EMULATOR=1 TUI_ONLY=1 OSCILLOSCOPE_SHOWS_ALL_CHANNELS=$(OSCILLOSCOPE_SHOWS_ALL_CHANNELS)
##	resources/tools/bin2array  resources/SID-Maker-nopack-for-TUI.prg  # resources/SID-Maker-nopack.h  -origname
	make exearrays
	$(CC)  -o SIDmaker_testCLI  SIDwizard.c  $(CRSID_SOURCES) $(NCURSES_EXTERNAL_SOURCES)  -D_LINUX=1  -DSIDAMOUNT=1  -DSIDMAKER=1  -DVERSION=\"$(VERSION)\"  -DSUBVERSION=\"$(SUBVERSION)\"  $(CCFLAGS)
ifeq ($(TERM),linux)
	./SIDmaker_testCLI resources/examples/flashitback.swm
else
	xterm  -geom 80x25  -e "./SIDmaker_testCLI resources/examples/flashitback.swm"
#	lxterminal  --geometry=80x25  -e "./SIDmaker_testCLI resources/examples/flashitback.swm"
endif

usermanual: #manual
	make manual

manual: CCFLAGS+=-s
manual: SDL_SOURCES += $(CONDITIONAL_SDL_INTERNAL_SOURCES_UNIX)
manual: manual_arrays  $(CONDITIONAL_DEPENDENCIES)
#Linux-version of the user-manual:
	$(CC)  usermanual.c  $(SDL_SOURCES)  -o usermanual -DVERSION=\"$(VERSION)\"  -DSUBVERSION=\"$(SUBVERSION)\"  $(CCFLAGS)
	rm -f resources/SID-Wizard-UserManual.h usermanual.o

testm:
	./usermanual


ptest:
	$(CC)  portmiditest.c $(PORTMIDI_SOURCES)  -o portmiditest  -D_LINUX=1  $(CCFLAGS)
#	$(CC)  miditest.c  -o miditest  -D_LINUX=1  -lc  -lm  -lportmidi -s # -lSDL  `sdl-config --cflags --libs` -s # -g
	./portmiditest

rtest:
	$(CXX)  rtmiditest.c rtmidi/RtMidi.cpp  -o rtmiditest  -D__LINUX_ALSA__ -lasound -lpthread  -O3 -s  # -lSDL `sdl-config --libs` -Wno-write-strings #-g
#	$(CC)  miditest.c  -o miditest  -D_LINUX=1  -lc  -lm  -lportmidi -s # -lSDL  `sdl-config --cflags --libs` -s # -g
	./rtmiditest


package:
#Linux .deb package
	mkdir -p package/opt/SID-Wizard package/opt/SID-Wizard/examples \
                 package/usr/local/bin package/usr/share/icons package/usr/share/pixmaps \
                 package/usr/share/applications package/usr/share/mime/packages package/DEBIAN
	cp -a SIDwizard SIDwizard_TUI sidwiz SIDmaker SIDmaker_TUI \
              SIDmaker-SFX SIDmaker-SWP SIDmaker-ROM SIDmaker-ROM-SWP SIDmaker-echo SIDmaker_TUI-echo SIDmaker_TUI-ROM SIDmaker_TUI-SWP SIDmaker_TUI-SFX \
               SIDmaker-SWP-2SID SIDmaker-SWP-3SID SIDmaker-SWP-4SID sidmak \
               SIDmaker-ROM-2SID SIDmaker-ROM-3SID SIDmaker-ROM-4SID \
              SIDwizard_GUI SIDwizard_GUI-normal SIDwizard_GUI-2SID SIDwizard_GUI-3SID SIDwizard_GUI-4SID \
              SIDwizard-normal SIDwizard-medium SIDwizard-light SIDwizard-extra SIDwizard-bare SIDwizard-demo \
              SIDwizard-2SID sidwiz2 SIDmaker-2SID sidmak2  SIDwizard-3SID sidwiz3 SIDmaker-3SID sidmak3 SIDwizard-4SID sidwiz4 SIDmaker-4SID sidmak4 \
              SIDwizard_TUI-2SID SIDwizard_TUI-3SID SIDwizard_TUI-4SID SIDmaker_TUI-2SID SIDmaker_TUI-3SID SIDmaker_TUI-4SID \
              native/application/SWMconvert  native/application/sng2swm \
              usermanual SW-$(VERSION)-UserManual.prg  sidwizard  \
              resources/SID-Wizard-$(VERSION)$(SUBVERSION)-UserManual.txt resources/SID-Wizard-$(VERSION)-KeyLayout.png \
              SID-Wizard-$(VERSION).prg SID-Maker-$(VERSION).prg SID-Maker-SFX.prg SID-Maker-echo.prg \
               SID-Maker-SWP.prg SID-Maker-SWP-2SID.prg SID-Maker-SWP-3SID.prg SID-Maker-SWP-4SID.prg \
               SID-Maker-ROM.prg SID-Maker-ROM-SWP.prg SID-Maker-ROM-2SID.prg SID-Maker-ROM-3SID.prg SID-Maker-ROM-4SID.prg \
              SID-Wizard-2SID.prg SID-Maker-2SID.prg  SID-Wizard-3SID.prg SID-Maker-3SID.prg SID-Wizard-4SID.prg SID-Maker-4SID.prg \
              SID-Wizard-$(VERSION)$(SUBVERSION)-disk1.d64  package/opt/SID-Wizard/
	ln -s /opt/SID-Wizard/sidwizard package/usr/local/bin
	ln -s /opt/SID-Wizard/SIDwizard package/usr/local/bin
	ln -s /opt/SID-Wizard/SIDwizard_TUI package/usr/local/bin
	ln -s /opt/SID-Wizard/SIDmaker package/usr/local/bin
	ln -s /opt/SID-Wizard/SIDmaker-echo package/usr/local/bin
	ln -s /opt/SID-Wizard/SIDmaker_TUI-echo package/usr/local/bin
	ln -s /opt/SID-Wizard/SIDmaker_TUI-ROM package/usr/local/bin
	ln -s /opt/SID-Wizard/SIDmaker_TUI-SWP package/usr/local/bin
	ln -s /opt/SID-Wizard/SIDmaker_TUI-SFX package/usr/local/bin
	ln -s /opt/SID-Wizard/SIDmaker_GUI package/usr/local/bin
	ln -s /opt/SID-Wizard/SIDmaker-ROM package/usr/local/bin
	ln -s /opt/SID-Wizard/SIDmaker-SWP package/usr/local/bin
	ln -s /opt/SID-Wizard/SIDmaker-ROM-SWP package/usr/local/bin
	ln -s /opt/SID-Wizard/SIDmaker-SFX package/usr/local/bin
	ln -s /opt/SID-Wizard/SIDmaker-ROM-SFX package/usr/local/bin
	ln -s /opt/SID-Wizard/sidwiz package/usr/local/bin
	ln -s /opt/SID-Wizard/sidmak package/usr/local/bin
	ln -s /opt/SID-Wizard/SIDwizard_GUI package/usr/local/bin
	ln -s /opt/SID-Wizard/SIDwizard_GUI-normal package/usr/local/bin
	ln -s /opt/SID-Wizard/SIDwizard_GUI-2SID package/usr/local/bin
	ln -s /opt/SID-Wizard/SIDwizard_GUI-3SID package/usr/local/bin
	ln -s /opt/SID-Wizard/SIDwizard_GUI-4SID package/usr/local/bin
	ln -s /opt/SID-Wizard/SIDwizard-normal package/usr/local/bin
	ln -s /opt/SID-Wizard/SIDwizard-medium package/usr/local/bin
	ln -s /opt/SID-Wizard/SIDwizard-light package/usr/local/bin
	ln -s /opt/SID-Wizard/SIDwizard-extra package/usr/local/bin
	ln -s /opt/SID-Wizard/SIDwizard-bare package/usr/local/bin
	ln -s /opt/SID-Wizard/SIDwizard-demo package/usr/local/bin
	ln -s /opt/SID-Wizard/SIDwizard-2SID package/usr/local/bin
	ln -s /opt/SID-Wizard/SIDwizard_TUI-2SID package/usr/local/bin
	ln -s /opt/SID-Wizard/SIDmaker-2SID package/usr/local/bin
	ln -s /opt/SID-Wizard/SIDmaker_TUI-2SID package/usr/local/bin
	ln -s /opt/SID-Wizard/SIDmaker_GUI-2SID package/usr/local/bin
	ln -s /opt/SID-Wizard/SIDmaker-ROM-2SID package/usr/local/bin
	ln -s /opt/SID-Wizard/SIDmaker-SWP-2SID package/usr/local/bin
	ln -s /opt/SID-Wizard/SIDmaker-ROM-SWP-2SID package/usr/local/bin
	ln -s /opt/SID-Wizard/sidwiz2 package/usr/local/bin
	ln -s /opt/SID-Wizard/sidmak2 package/usr/local/bin
	ln -s /opt/SID-Wizard/SIDwizard-3SID package/usr/local/bin
	ln -s /opt/SID-Wizard/SIDwizard_TUI-3SID package/usr/local/bin
	ln -s /opt/SID-Wizard/SIDmaker-3SID package/usr/local/bin
	ln -s /opt/SID-Wizard/SIDmaker_TUI-3SID package/usr/local/bin
	ln -s /opt/SID-Wizard/SIDmaker_GUI-3SID package/usr/local/bin
	ln -s /opt/SID-Wizard/SIDmaker-ROM-3SID package/usr/local/bin
	ln -s /opt/SID-Wizard/SIDmaker-SWP-3SID package/usr/local/bin
	ln -s /opt/SID-Wizard/SIDmaker-ROM-SWP-3SID package/usr/local/bin
	ln -s /opt/SID-Wizard/sidwiz3 package/usr/local/bin
	ln -s /opt/SID-Wizard/sidmak3 package/usr/local/bin
	ln -s /opt/SID-Wizard/SIDwizard-4SID package/usr/local/bin
	ln -s /opt/SID-Wizard/SIDwizard_TUI-4SID package/usr/local/bin
	ln -s /opt/SID-Wizard/SIDmaker-4SID package/usr/local/bin
	ln -s /opt/SID-Wizard/SIDmaker_TUI-4SID package/usr/local/bin
	ln -s /opt/SID-Wizard/SIDmaker_GUI-4SID package/usr/local/bin
	ln -s /opt/SID-Wizard/SIDmaker-ROM-4SID package/usr/local/bin
	ln -s /opt/SID-Wizard/SIDmaker-SWP-4SID package/usr/local/bin
	ln -s /opt/SID-Wizard/SIDmaker-ROM-SWP-4SID package/usr/local/bin
	ln -s /opt/SID-Wizard/sidwiz4 package/usr/local/bin
	ln -s /opt/SID-Wizard/sidmak4 package/usr/local/bin
	ln -s /opt/SID-Wizard/SWMconvert package/usr/local/bin
	 ln -s /opt/SID-Wizard/SWMconvert package/usr/local/bin/swm2sng
	ln -s /opt/SID-Wizard/sng2swm package/usr/local/bin
	cp -a resources/SID-Wizard-icon.png  package/usr/share/icons/
	cp -a resources/SID-Wizard-icon.png  package/usr/share/pixmaps/
	cp -a -R resources/examples package/opt/SID-Wizard/
	cp -a resources/examples/flashitback.swm package/opt/SID-Wizard/
	cp -a resources/SID-Wizard-selector.desktop resources/SID-Wizard.desktop  \
              resources/SID-Wizard-GUI.desktop resources/SID-Wizard-GUI-normal.desktop \
              resources/SID-Wizard-normal.desktop resources/SID-Wizard-config.desktop \
              resources/SID-Wizard-UserManual.desktop resources/SID-Maker.desktop \
              resources/SID-Maker-ROM.desktop resources/SID-Maker-SWP.desktop resources/SID-Maker-SFX.desktop resources/SID-Maker-echo.desktop \
              resources/SID-Wizard-C64.desktop  package/usr/share/applications/
	cp -a resources/SID-Wizard-2SID.desktop  package/usr/share/applications/
	cp -a resources/SID-Wizard-3SID.desktop  package/usr/share/applications/
	cp -a resources/SID-Wizard-4SID.desktop  package/usr/share/applications/
	cp -a resources/x-SIDwizard-extension-swm.xml  package/usr/share/mime/packages/
	cp -a resources/x-SIDwizard-extension-sws.xml  package/usr/share/mime/packages/
	cp -a resources/x-SIDwizard-extension-swt.xml  package/usr/share/mime/packages/
	cp -a resources/x-SIDwizard-extension-swq.xml  package/usr/share/mime/packages/
	chmod 777 package/opt/SID-Wizard package/opt/SID-Wizard/examples
	echo "Package: sidwizard\nVersion: $(VERSION)$(SUBVERSION) \nSection: custom\nPriority: optional\nArchitecture: \
          all\nEssential: no\nInstalled-Size: $$(du -s --apparent-size package | cut -f 1)\nDepends: \
          $(DEPENDS)\nMaintainer: Hermit\nDescription: SID-Wizard (C64 SID-music editor)" \
          > package/DEBIAN/control
	dpkg-deb --build package && mv package.deb sidwizard-$(VERSION)$(SUBVERSION)-$(ARCHITECTURE).deb    # -$$(uname -m).deb
	rm -r -f package



sidwizard: sel
#	make sel

selector: sel
#	make sel

sel:
	$(CC)  selector/selector.c  selector/hgui.c  -s  -o sidwizard  -lX11  -DHGUI_SELECTWIDGETS  -DHGUI_PICTURES  -DHGUI_BUTTONS  -DHGUI_TEXTLINES
#	./sidwizard


install: # package
#	cp SIDwizard SIDmaker SIDwizard-2SID SIDmaker-2SID SIDwizard-3SID SIDmaker-3SID /opt/SID-Wizard/
	sudo dpkg -r sidwizard && sudo dpkg -i sidwizard-$(VERSION)$(SUBVERSION)-$$(uname -m).deb

uninstall:
#	rm -r -f /opt/SID-Wizard/ /usr/local/bin/SIDwizard* /usr/local/bin/SIDmaker*
	sudo dpkg -r sidwizard

clean: cleanarrays
	rm -f -r  SIDwizard.o  package  # *.deb  # SID*.zip
	rm -f  SIDwizard SIDwizard_intSDL SIDwizard_TUI SIDwizard_intLibs
#	rm -f  SIDwizard-2SID SIDwizard-3SID SIDwizard-4SID
	rm -f  SIDwizard_test SIDwizard_testCLI
	rm -f  SIDmaker SIDmaker_intSDL SIDmaker_TUI
#	rm -f  SIDmaker-2SID SIDmaker-3SID SIDmaker-4SID
#	rm -f  SIDmaker-SFX SIDmaker-SWP SIDmaker-echo SIDmaker_TUI-echo
	rm -f  SIDmaker_test SIDmaker_testCLI
	rm -f  usermanual sidwizard
	rm -f  SIDwizard.exe SIDwizard-2SID.exe SIDwizard-3SID.exe SIDwizard-4SID.exe  usermanual.exe
	rm -f  SIDmaker.exe SIDmaker-SFX.exe  SIDmaker-SWP.exe SIDmaker-2SID.exe SIDmaker-3SID.exe SIDmaker-4SID.exe
	make  -C libcRSID  clean

purge: clean uninstall # cleannatives


help:
	@echo
	@echo Main build-targets: all natives arrays test testcli manual package install uninstall clean purge
	@echo



#Here comes the obsoleted target-list for an OS whose name I won't say out loud anymore:


1SIDw: arrays
	i686-w64-mingw32-gcc  SIDwizard.c resources/SID-Wizard-icon.res $(NCURSES_SOURCES) $(PORTMIDI_SOURCESW)  -o SIDwizard.exe  \
     -D_WINDOWS=1  -DSIDAMOUNT=1  -DVERSION=\"$(VERSION)\"  -DSUBVERSION=\"$(SUBVERSION)\"  -I/usr/local/sdlmingw/include -Iportmidi \
     -O3 -s  -L/usr/local/sdlmingw/lib  -lmingw32 -mwindows $(PORTMIDI_LINKW) -lSDLmain -lSDL  # -Wl,-subsystem,console
#	wine SIDwizard.exe

2SIDw: arrays
	i686-w64-mingw32-gcc  SIDwizard.c resources/SID-Wizard-icon.res $(NCURSES_SOURCES) $(PORTMIDI_SOURCESW)  -o SIDwizard-2SID.exe  \
     -D_WINDOWS=1  -DSIDAMOUNT=2  -DVERSION=\"$(VERSION)\"  -DSUBVERSION=\"$(SUBVERSION)\"  -I/usr/local/sdlmingw/include -Iportmidi \
     -O3 -s  -L/usr/local/sdlmingw/lib  -lmingw32 -mwindows $(PORTMIDI_LINKW) -lSDLmain -lSDL  # -Wl,-subsystem,console
#	wine SIDwizard-2SID.exe

3SIDw: arrays
	i686-w64-mingw32-gcc  SIDwizard.c resources/SID-Wizard-icon.res $(NCURSES_SOURCES) $(PORTMIDI_SOURCESW)  -o SIDwizard-3SID.exe  \
     -D_WINDOWS=1  -DSIDAMOUNT=3  -DVERSION=\"$(VERSION)\"  -DSUBVERSION=\"$(SUBVERSION)\"  -I/usr/local/sdlmingw/include -Iportmidi \
     -O3 -s  -L/usr/local/sdlmingw/lib  -lmingw32 -mwindows $(PORTMIDI_LINKW) -lSDLmain -lSDL  # -Wl,-subsystem,console
#	wine SIDwizard-3SID.exe

4SIDw: arrays
	i686-w64-mingw32-gcc  SIDwizard.c resources/SID-Wizard-icon.res $(NCURSES_SOURCES) $(PORTMIDI_SOURCESW)  -o SIDwizard-4SID.exe  \
     -D_WINDOWS=1  -DSIDAMOUNT=4  -DVERSION=\"$(VERSION)\"  -DSUBVERSION=\"$(SUBVERSION)\"  -I/usr/local/sdlmingw/include -Iportmidi \
     -O3 -s  -L/usr/local/sdlmingw/lib  -lmingw32 -mwindows $(PORTMIDI_LINKW) -lSDLmain -lSDL  # -Wl,-subsystem,console
#	wine SIDwizard-3SID.exe

testw: 1SIDw
	wine SIDwizard.exe


m1SIDw: arrays
	i686-w64-mingw32-gcc  -c SIDwizard.c $(NCURSES_SOURCES)  -o SIDwizard.o  -D_WINDOWS=1  -DSIDAMOUNT=1  -DSIDMAKER=1  -DVERSION=\"$(VERSION)\"  -DSUBVERSION=\"$(SUBVERSION)\"  -I/usr/local/sdlmingw/include
	i686-w64-mingw32-gcc  SIDwizard.o  resources/SID-Wizard-icon.res  -o SIDmaker.exe  -O3 -s  \
                          -L/usr/local/sdlmingw/lib -lmingw32 -mwindows -lSDLmain -lSDL
	rm SIDwizard.o
#	wine SIDmaker.exe

m1SIDwsfx: arrays
	i686-w64-mingw32-gcc  -c SIDwizard.c $(NCURSES_SOURCES)  -o SIDwizard.o  -D_WINDOWS=1  -DSIDAMOUNT=1  -DSIDMAKER=1  -DSFX_SUPPORT=1  -DVERSION=\"$(VERSION)\"  -DSUBVERSION=\"$(SUBVERSION)\"  -I/usr/local/sdlmingw/include
	i686-w64-mingw32-gcc  SIDwizard.o  resources/SID-Wizard-icon.res  -o SIDmaker-SFX.exe  -O3 -s  \
                          -L/usr/local/sdlmingw/lib -lmingw32 -mwindows -lSDLmain -lSDL
	rm SIDwizard.o
#	wine SIDmaker-SFX.exe

m1SIDwswp: arrays
	i686-w64-mingw32-gcc  -c SIDwizard.c $(NCURSES_SOURCES)  -o SIDwizard.o  -D_WINDOWS=1  -DSIDAMOUNT=1  -DSIDMAKER=1  -DSWP_SUPPORT=1  -DVERSION=\"$(VERSION)\"  -DSUBVERSION=\"$(SUBVERSION)\"  -I/usr/local/sdlmingw/include
	i686-w64-mingw32-gcc  SIDwizard.o  resources/SID-Wizard-icon.res  -o SIDmaker-SWP.exe  -O3 -s  \
                          -L/usr/local/sdlmingw/lib -lmingw32 -mwindows -lSDLmain -lSDL
	rm SIDwizard.o
#	wine SIDmaker-SWP.exe

m2SIDw: arrays
	i686-w64-mingw32-gcc  -c SIDwizard.c $(NCURSES_SOURCES)  -o SIDwizard.o  -D_WINDOWS=1  -DSIDAMOUNT=2  -DSIDMAKER=1  -DVERSION=\"$(VERSION)\"  -DSUBVERSION=\"$(SUBVERSION)\"  -I/usr/local/sdlmingw/include
	i686-w64-mingw32-gcc  SIDwizard.o  resources/SID-Wizard-icon.res  -o SIDmaker-2SID.exe  -O3 -s  \
                          -L/usr/local/sdlmingw/lib -lmingw32 -mwindows -lSDLmain -lSDL
	rm SIDwizard.o
#	wine SIDmaker-2SID.exe

m3SIDw: arrays
	i686-w64-mingw32-gcc  -c SIDwizard.c $(NCURSES_SOURCES)  -o SIDwizard.o  -D_WINDOWS=1  -DSIDAMOUNT=3  -DSIDMAKER=1  -DVERSION=\"$(VERSION)\"  -DSUBVERSION=\"$(SUBVERSION)\"  -I/usr/local/sdlmingw/include
	i686-w64-mingw32-gcc  SIDwizard.o  resources/SID-Wizard-icon.res  -o SIDmaker-3SID.exe  -O3 -s  \
                          -L/usr/local/sdlmingw/lib -lmingw32 -mwindows -lSDLmain -lSDL
	rm SIDwizard.o
#	wine SIDmaker-3SID.exe

m4SIDw: arrays
	i686-w64-mingw32-gcc  -c SIDwizard.c $(NCURSES_SOURCES)  -o SIDwizard.o  -D_WINDOWS=1  -DSIDAMOUNT=4  -DSIDMAKER=1  -DVERSION=\"$(VERSION)\"  -DSUBVERSION=\"$(SUBVERSION)\"  -I/usr/local/sdlmingw/include
	i686-w64-mingw32-gcc  SIDwizard.o  resources/SID-Wizard-icon.res  -o SIDmaker-4SID.exe  -O3 -s  \
                          -L/usr/local/sdlmingw/lib -lmingw32 -mwindows -lSDLmain -lSDL
	rm SIDwizard.o
#	wine SIDmaker-3SID.exe

mtestw: m1SIDw
	wine SIDmaker.exe


manualw: arrays
#Windows-version of the user-manual:
	i686-w64-mingw32-gcc  -c usermanual.c  -o usermanual.o  -DVERSION=\"$(VERSION)\"  -DSUBVERSION=\"$(SUBVERSION)\"  -I/usr/local/sdlmingw/include
	i686-w64-mingw32-gcc  usermanual.o resources/SID-Wizard-icon.res  -o usermanual.exe  -O3 -s  \
                          -L/usr/local/sdlmingw/lib -lmingw32 -mwindows -lSDLmain -lSDL
	rm -f resources/SID-Wizard-UserManual.h usermanual.o

testmw:
	wine usermanual.exe


#Windows zip package
packagew:
	mkdir -p SID-Wizard-$(VERSION)$(SUBVERSION)-win SID-Wizard-$(VERSION)$(SUBVERSION)-win/examples
	cp SIDwizard*.exe SIDmaker*.exe sidwiz.bat sidmak.bat  sidwiz2.bat sidmak2.bat  sidwiz3.bat sidmak3.bat sidwiz4.bat sidmak4.bat  native/application/SWMconvert.exe native/application/sng2swm.exe SDL.dll \
       usermanual.exe resources/SID-Wizard-$(VERSION)$(SUBVERSION)-UserManual.txt SW-$(VERSION)-UserManual.prg  resources/SID-Wizard-$(VERSION)-KeyLayout.png  SID-Wizard-$(VERSION)$(SUBVERSION)-disk1.d64 \
       SID-Wizard-$(VERSION).prg SID-Maker-$(VERSION).prg SID-Maker-SFX.prg SID-Maker-SWP.prg  SID-Wizard-2SID.prg SID-Maker-2SID.prg  SID-Wizard-3SID.prg SID-Maker-3SID.prg SID-Wizard-4SID.prg SID-Maker-4SID.prg  SID-Wizard-$(VERSION)$(SUBVERSION)-win/
	cp -R resources/examples SID-Wizard-$(VERSION)$(SUBVERSION)-win/
	cp resources/examples/flashitback.swm SID-Wizard-$(VERSION)$(SUBVERSION)-win/
	zip -r SID-Wizard-$(VERSION)$(SUBVERSION)-win.zip SID-Wizard-$(VERSION)$(SUBVERSION)-win
	rm -r -f SID-Wizard-$(VERSION)$(SUBVERSION)-win


FORCE:
