#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#+
#+     Internet Radio Automation & Encoding Toolkit
#+
#+     Copyright (C) 2018 - 2025 by Kevin C. O'Kane
#+
#+     Kevin C. O'Kane
#+     kc.okane@gmail.com
#+     https://www.cs.uni.edu/~okane
#+     https://threadsafebooks.com/
#+
#+ This program is free software; you can redistribute it and/or modify
#+ it under the terms of the GNU General Public License as published by
#+ the Free Software Foundation; either version 2 of the License, or
#+ (at your option) any later version.
#+
#+ This program is distributed in the hope that it will be useful,
#+ but WITHOUT ANY WARRANTY; without even the implied warranty of
#+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#+ GNU General Public License for more details.
#+
#+ You should have received a copy of the GNU General Public License
#+ along with this program; if not, write to the Free Software
#+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
#+
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

#	Dec 5, 2025

COM=sgr-code/common
LIN=sgr-code/linux-code

# -w -Wfatal-errors

DEP =	sgr-code/common/common-externs.h \
	sgr-code/common/common-fcn-headers.h \
	sgr-code/common/common-widgets.h \
	sgr-code/common/defines.h \
	sgr-code/common/structures.h \
	css/gtk.css \
	sgr-code/common/common-widgets.h \
	sgr-code/common/common-objects.h \
	sgr-code/common/global-vars.h \
	sgr-code/common/includes.h 


FLAGS = -fno-diagnostics-color -w -Wfatal-errors -Wno-format -O3 \
	-Wno-implicit-function-declaration \
	-Wno-deprecated-declarations -Wno-format-security \
	-pthread \
	`pkg-config --cflags --libs gdkmm-3.0` \
	`pkg-config --cflags --libs glibmm-2.4 giomm-2.4 libvlc` \
	`pkg-config --cflags --libs gtkmm-3.0` \
        `pkg-config --cflags --libs webkit2gtk-4.1` \
	-DPLAYER \
	-I sgr-code/ \
	-I sgr-code/linux-code \
	-I/usr/include/glib-2.0 \
	-I/usr/include/gtkmm-3.0 \
	-lm -lfftw3 -lavformat -lavcodec \
	-lpulse-mainloop-glib -lpulse -lpthread \
	-lX11  \
	-L/usr/lib/x86_64-linux-gnu/vlc/plugins/video_filter  \
	-L/usr/lib/x86_64-linux-gnu/vlc/plugins/video_output  \
	-L/usr/lib/x86_64-linux-gnu/vlc/plugins/video_splitter  \
	-L/usr/lib/x86_64-linux-gnu/vlc/plugins/stream_out  \
	-L/usr/lib/x86_64-linux-gnu/vlc/plugins/control  \
	-L/usr/lib/x86_64-linux-gnu/vlc/plugins/audio_filter  \
	-export-dynamic 

Player-bin :	Player.o resource.o common-compiled-code.o tooltips.o album.o equalizer.o \
		vlc-interface.o clock.o tower.o slides.o graphics.o bar-graphs.o graph-manager.o \
		edit-panel-scroll.o program-buttons.o frequency-analysis.o file-type.o \
		camera0.o selection.o agc-adjust.o edit-cut-paste.o sort.o \
		play-check-box.o tiles-1-12.o tiles-22-25.o update-times.o playclip.o program-name.o \
		up-down-buttons.o del-buttons.o play-buttons.o rearrange-program.o out-volume.o \
		media-playback.o graphic-effects.o drag-drop.o audio-signals.o search.o file-stat.o \
		scan-media.o loadalbums.o loadprogram.o gettime.o getmeta.o main-timer.o \
		on-micThreshold1-value-changed.o pulse-linux.o media-probe.o smb-parse.o memory-alloc.o \
		digital-draw2-draw.o vu-draw2-draw.o draw2-draw.o cli-args.o webkit.o \
		drawS.o vneedles.o dneedles.o level-bars.o hertz-marks.o draw1-draw.o \
		sprinkles.o spots.o on-draw4-draw.o

	gcc -o Player-bin Player.o common-compiled-code.o tooltips.o album.o equalizer.o \
		rearrange-program.o vlc-interface.o program-buttons.o graphics.o slides.o tower.o \
		edit-panel-scroll.o play-check-box.o tiles-1-12.o tiles-22-25.o clock.o \
		selection.o agc-adjust.o edit-cut-paste.o update-times.o sort.o bar-graphs.o \
		scan-media.o up-down-buttons.o del-buttons.o play-buttons.o graph-manager.o \
		file-type.o media-playback.o out-volume.o playclip.o program-name.o \
		frequency-analysis.o resource.o graphic-effects.o search.o audio-signals.o loadprogram.o \
		loadalbums.o getmeta.o gettime.o camera0.o drag-drop.o file-stat.o \
		main-timer.o on-micThreshold1-value-changed.o pulse-linux.o media-probe.o \
		draw2-draw.o draw1-draw.o hertz-marks.o smb-parse.o memory-alloc.o cli-args.o \
		sprinkles.o dneedles.o level-bars.o digital-draw2-draw.o vu-draw2-draw.o \
		spots.o on-draw4-draw.o drawS.o vneedles.o webkit.o $(LFLAGS) $(FLAGS)

		mv Player-bin sgr-player

		strip --strip-unneeded sgr-player 


		@echo
		@echo "--------------------------------------"
		@echo "sudo access required to build installer"
		@echo "--------------------------------------"
		@echo

		sudo mkdir -p sgr-player-amd64/usr
		sudo mkdir -p sgr-player-amd64/usr/bin
		sudo mkdir -p sgr-player-amd64/usr/share
		sudo mkdir -p sgr-player-amd64/usr/share/applications
		sudo mkdir -p sgr-player-amd64/usr/share/sgr-player
		sudo mkdir -p sgr-player-amd64/usr/share/man
		sudo mkdir -p sgr-player-amd64/usr/share/man/man1

		sudo cp icons/sgr-player-icon.png sgr-player-amd64/usr/share/sgr-player
		sudo chmod 744 sgr-player-amd64/usr/share/sgr-player/sgr-player-icon.png

		sudo cp sgr-player.desktop sgr-player-amd64/usr/share/applications
		sudo chmod 644 sgr-player-amd64/usr/share/applications/sgr-player.desktop

		sudo cp sgr-player sgr-player-amd64/usr/bin
		sudo chmod 755 sgr-player-amd64/usr/bin/sgr-player
		
		gzip -kf sgr-player.1
		cp sgr-player.1.gz sgr-player-amd64/usr/share/man/man1
		chmod 644 sgr-player-amd64/usr/share/man/man1/sgr-player.1.gz

		chmod 755 sgr-player-amd64/DEBIAN
		chmod 755 sgr-player-amd64/DEBIAN/control

		for i in `find sgr-player-amd64 -type d` ; do sudo chown root $$i ; \
		echo $$i ; sudo chgrp root $$i ; sudo chmod 755 $$i ; done

		dpkg-deb --root-owner-group --build sgr-player-amd64/

		sudo chown -R $$USER sgr-player-amd64
		sudo chgrp -R $$USER sgr-player-amd64


resource.o : resource.c  Player.glade $(DEP) css/gtk.css
	gcc -c resource.c $(FLAGS) 

Player.o : Player.c $(DEP) resource.c
	gcc -c Player.c $(FLAGS) 

common-compiled-code.o : $(COM)/common-compiled-code.c $(DEP)
	gcc -c $(COM)/common-compiled-code.c $(FLAGS) 

tooltips.o : $(COM)/tooltips.c $(DEP)
	gcc -c $(COM)/tooltips.c $(FLAGS) 

album.o : $(COM)/album.c $(DEP)
	gcc -c $(COM)/album.c $(FLAGS) 

scan-media.o : $(COM)/scan-media.c $(DEP)
	gcc -c $(COM)/scan-media.c $(FLAGS) 

sprinkles.o : $(COM)/sprinkles.c $(DEP)
	gcc -c $(COM)/sprinkles.c $(FLAGS) 

spots.o : $(COM)/spots.c $(DEP)
	gcc -c $(COM)/spots.c $(FLAGS) 

on-draw4-draw.o : $(COM)/on-draw4-draw.c $(DEP)
	gcc -c $(COM)/on-draw4-draw.c $(FLAGS) 

drawS.o : $(COM)/drawS.c $(DEP)
	gcc -c $(COM)/drawS.c $(FLAGS) 

vneedles.o : $(COM)/vneedles.c $(DEP)
	gcc -c $(COM)/vneedles.c $(FLAGS) 

dneedles.o : $(COM)/dneedles.c $(DEP)
	gcc -c $(COM)/dneedles.c $(FLAGS) 

level-bars.o : $(COM)/level-bars.c $(DEP)
	gcc -c $(COM)/level-bars.c $(FLAGS) 

digital-draw2-draw.o : $(COM)/digital-draw2-draw.c $(DEP)
	gcc -c $(COM)/digital-draw2-draw.c $(FLAGS) 

vu-draw2-draw.o : $(COM)/vu-draw2-draw.c $(DEP)
	gcc -c $(COM)/vu-draw2-draw.c $(FLAGS) 

draw2-draw.o : $(COM)/draw2-draw.c $(DEP)
	gcc -c $(COM)/draw2-draw.c $(FLAGS) 

draw1-draw.o : $(COM)/draw1-draw.c $(DEP)
	gcc -c $(COM)/draw1-draw.c $(FLAGS) 

hertz-marks.o : $(COM)/hertz-marks.c $(DEP)
	gcc -c $(COM)/hertz-marks.c $(FLAGS) 

webkit.o : $(COM)/webkit.c $(DEP)
	gcc -c $(COM)/webkit.c $(FLAGS) 

cli-args.o : $(COM)/cli-args.c $(DEP)
	gcc -c $(COM)/cli-args.c $(FLAGS) 

memory-alloc.o : $(COM)/memory-alloc.c $(DEP)
	gcc -c $(COM)/memory-alloc.c $(FLAGS) 

main-timer.o : $(COM)/main-timer.c $(DEP)
	gcc -c $(COM)/main-timer.c $(FLAGS) 

media-probe.o : $(COM)/media-probe.c $(DEP)
	gcc -c $(COM)/media-probe.c $(FLAGS) 

smb-parse.o : $(COM)/smb-parse.c $(DEP)
	gcc -c $(COM)/smb-parse.c $(FLAGS) 

pulse-linux.o : $(COM)/pulse-linux.c $(DEP)
	gcc -c $(COM)/pulse-linux.c $(FLAGS) 

on-micThreshold1-value-changed.o : $(COM)/on-micThreshold1-value-changed.c $(DEP)
	gcc -c $(COM)/on-micThreshold1-value-changed.c $(FLAGS) 

loadprogram.o : $(COM)/loadprogram.c $(DEP)
	gcc -c $(COM)/loadprogram.c $(FLAGS) 

loadalbums.o : $(COM)/loadalbums.c $(DEP)
	gcc -c $(COM)/loadalbums.c $(FLAGS) 

gettime.o : $(COM)/gettime.c $(DEP)
	gcc -c $(COM)/gettime.c $(FLAGS) 

getmeta.o : $(COM)/getmeta.c $(DEP)
	gcc -c $(COM)/getmeta.c $(FLAGS) 

equalizer.o : $(COM)/equalizer.c $(DEP)
	gcc -c $(COM)/equalizer.c $(FLAGS) 

clock.o : $(COM)/clock.c $(DEP)
	gcc -c $(COM)/clock.c $(FLAGS) 

tower.o : $(COM)/tower.c $(DEP)
	gcc -c $(COM)/tower.c $(FLAGS) 

slides.o : $(COM)/slides.c $(DEP)
	gcc -c $(COM)/slides.c $(FLAGS) 

graphics.o : $(COM)/graphics.c $(DEP)
	gcc -c $(COM)/graphics.c $(FLAGS) 

bar-graphs.o : $(COM)/bar-graphs.c $(DEP)
	gcc -c $(COM)/bar-graphs.c $(FLAGS) 

graph-manager.o : $(COM)/graph-manager.c $(DEP)
	gcc -c $(COM)/graph-manager.c $(FLAGS) 

frequency-analysis.o : $(COM)/frequency-analysis.c $(DEP)
	gcc -c $(COM)/frequency-analysis.c $(FLAGS) 

file-type.o : $(COM)/file-type.c $(DEP)
	gcc -c $(COM)/file-type.c $(FLAGS) 

sort.o : $(COM)/sort.c $(DEP)
	gcc -c $(COM)/sort.c $(FLAGS) 

update-times.o : $(COM)/update-times.c $(DEP)
	gcc -c $(COM)/update-times.c $(FLAGS) 

playclip.o : $(COM)/playclip.c $(DEP)
	gcc -c $(COM)/playclip.c $(FLAGS) 

program-name.o : $(COM)/program-name.c $(DEP)
	gcc -c $(COM)/program-name.c $(FLAGS) 

program-buttons.o : $(COM)/program-buttons.c $(DEP)
	gcc -c $(COM)/program-buttons.c $(FLAGS) 

vlc-interface.o : $(COM)/vlc-interface.c $(DEP)
	gcc -c $(COM)/vlc-interface.c $(FLAGS) 

camera0.o : $(COM)/camera0.c $(DEP)
	gcc -c $(COM)/camera0.c $(FLAGS) 

rearrange-program.o : $(COM)/rearrange-program.c $(DEP)
	gcc -c $(COM)/rearrange-program.c $(FLAGS) 

out-volume.o : $(COM)/out-volume.c $(DEP)
	gcc -c $(COM)/out-volume.c $(FLAGS) 

drag-drop.o : $(COM)/drag-drop.c $(DEP)
	gcc -c $(COM)/drag-drop.c $(FLAGS) 

audio-signals.o : $(COM)/audio-signals.c $(DEP)
	gcc -c $(COM)/audio-signals.c $(FLAGS) 

search.o : $(COM)/search.c $(DEP)
	gcc -c $(COM)/search.c $(FLAGS) 

file-stat.o : $(COM)/file-stat.c $(DEP)
	gcc -c $(COM)/file-stat.c $(FLAGS) 

graphic-effects.o : $(COM)/graphic-effects.c $(DEP)
	gcc -c $(COM)/graphic-effects.c $(FLAGS) 

media-playback.o : $(COM)/media-playback.c $(DEP)
	gcc -c $(COM)/media-playback.c $(FLAGS) 

tiles-22-25.o : $(COM)/tiles-22-25.c $(DEP)
	gcc -c $(COM)/tiles-22-25.c $(FLAGS) 

tiles-1-12.o : $(COM)/tiles-1-12.c $(DEP)
	gcc -c $(COM)/tiles-1-12.c $(FLAGS) 

play-buttons.o : $(COM)/play-buttons.c $(DEP)
	gcc -c $(COM)/play-buttons.c $(FLAGS) 

del-buttons.o : $(COM)/del-buttons.c $(DEP)
	gcc -c $(COM)/del-buttons.c $(FLAGS) 

up-down-buttons.o : $(COM)/up-down-buttons.c $(DEP)
	gcc -c $(COM)/up-down-buttons.c $(FLAGS) 

play-check-box.o : $(COM)/play-check-box.c $(DEP)
	gcc -c $(COM)/play-check-box.c $(FLAGS) 

edit-panel-scroll.o : $(COM)/edit-panel-scroll.c $(DEP)
	gcc -c $(COM)/edit-panel-scroll.c $(FLAGS) 

edit-cut-paste.o : $(COM)/edit-cut-paste.c $(DEP)
	gcc -c $(COM)/edit-cut-paste.c $(FLAGS) 

agc-adjust.o : $(COM)/agc-adjust.c $(DEP)
	gcc -c $(COM)/agc-adjust.c $(FLAGS) 

selection.o : $(COM)/selection.c $(DEP)
	gcc -c $(COM)/selection.c $(FLAGS) 

resource.c : resource.xml Player.glade css/gtk.css
	glib-compile-resources --target=resource.c --generate-source resource.xml

clean:

	$(RM) *.o resource.c Player-bin
