1# qrq Makefile -- Fabian Kurz, DJ1YFK -- http://fkurz.net/ham/qrq.html
2
3VERSION?=0.3.3
4DESTDIR?=/usr
5
6# set to YES if you want to use Core Audio
7# note that you must use Core Audio for OSX
8USE_CA=NO
9
10# set to YES if you want to use PulseAudio instead of OSS
11USE_PA=NO
12
13# set to YES if you compile with MINGW32
14USE_WIN32=NO
15
16# set to YES if building on OSX
17OSX_PLATFORM=NO
18
19# set to YES if you want make install to build an OSX bundle instead of
20# installing to DESTDIR
21# also directs qrq to look in bundle location for shared resources
22OSX_BUNDLE=YES
23
24ifneq ($(OSX_PLATFORM), YES)
25		OSX_BUNDLE=NO
26endif
27
28ifeq ($(USE_WIN32), YES)
29	CC=i686-w64-mingw32-gcc-posix
30#else
31#	CC=gcc
32endif
33
34# build information may be added by CI scripts and will be
35# displayed in the help text (qrq -h)
36
37BUILD_INFO=" Date: $(shell date --iso=seconds)\n git branch/commit: $(shell if [ x${CI_COMMIT_REF_NAME} != x ]; then echo ${CI_COMMIT_REF_NAME} ; elif [ -e .git ] || [ -e ../.git ]; then git symbolic-ref --short HEAD ; else echo not built from git repository ; fi) / $(shell if [ x${CI_COMMIT_SHA} != x ]; then echo ${CI_COMMIT_SHA}; elif [ -e .git ] || [ -e ../.git ] ; then git rev-parse --verify HEAD ; else echo - ; fi )\n by $(USER)@$(shell hostname -f)\n OS: $(shell uname -s -r -p)\n Compiler: $(shell $(CC) --version | head -1)"
38
39CFLAGS:=$(CFLAGS) -D DESTDIR=\"$(DESTDIR)\" -D BUILD_INFO=\"$(BUILD_INFO)\" -D VERSION=\"$(VERSION)\" -I.
40
41ifeq ($(USE_CA), YES)
42		OBJECTS=qrq.o coreaudio.o
43		CFLAGS:=$(CFLAGS) -D CA -std=c99 -pthread
44		ifeq ($(OSX_PLATFORM), YES)
45			LDFLAGS:=$(LDFLAGS) -framework AudioUnit -framework CoreServices  -isysroot /Developer/SDKs/MacOSX10.6.sdk -mmacosx-version-min=10.5
46			CFLAGS:=$(CFLAGS) -isysroot /Developer/SDKs/MacOSX10.6.sdk -mmacosx-version-min=10.5
47			ifeq ($(OSX_BUNDLE), YES)
48				CFLAGS:=$(CFLAGS) -D OSX_BUNDLE
49			endif
50		else  # build for iphone/ipad
51			LDFLAGS:=$(LDFLAGS) -L iOSExtras/lib -framework AudioToolbox -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk
52			CFLAGS:=$(CFLAGS) -I iOSExtras/include -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk
53			CC:=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2 -arch armv6
54			IPHONE_HOST=root@localhost
55			SCP=scp -P2222
56			SSH=ssh -p2222
57		endif
58else ifeq ($(USE_PA), YES)
59		CFLAGS:=$(CFLAGS) -D PA -pthread
60		LDFLAGS:=$(LDFLAGS) -lpthread -lpulse-simple -lpulse -lncurses
61		OBJECTS=qrq.o pulseaudio.o
62else ifeq ($(USE_WIN32), YES)
63		CFLAGS:=$(CFLAGS) -D WIN32 -Iinclude -Iinclude/ncursesw
64		LDFLAGS:=$(LDFLAGS) -lwinmm -lpthread
65		OBJECTS=qrq.o qrq.res lib/libncursesw.a
66else
67		OBJECTS=qrq.o oss.o
68		LDFLAGS:=$(LDFLAGS) -lpthread -lncurses
69		CFLAGS:=$(CFLAGS) -D OSS
70endif
71
72all: qrq
73
74qrq: $(OBJECTS)
75	$(CC) -Wall -o $@ $^ -lm $(LDFLAGS)
76
77.c.o:
78	$(CC) -Wall $(CFLAGS) -c $<
79
80#.cpp.o:
81#	g++ $(CFLAGS) -c $<
82
83ifeq ($(OSX_BUNDLE), YES)
84
85install: qrq
86	install -d -v							qrq.app/Contents
87	install -d -v							qrq.app/Contents/MacOS
88	install -d -v							qrq.app/Contents/Resources
89	install -d -v							qrq.app/Contents/Resources/share/qrq/
90	install -d -v							qrq.app/Contents/Resources/share/man/man1/
91	install    -m 0755 qrq					qrq.app/Contents/MacOS/
92	install    -m 0755 qrqscore				qrq.app/Contents/MacOS/
93	install    -m 0644 qrq.1				qrq.app/Contents/Resources/share/man/man1/
94	install    -m 0644 callbase.qcb				qrq.app/Contents/Resources/share/qrq/
95	install    -m 0644 english.qcb				qrq.app/Contents/Resources/share/qrq/
96	install    -m 0644 qrqrc				qrq.app/Contents/Resources/share/qrq/
97	install    -m 0644 toplist				qrq.app/Contents/Resources/share/qrq/
98	install    -m 0644 OSXExtras/qrq.icns	qrq.app/Contents/Resources/
99	install    -m 0755 OSXExtras/qrqsh		qrq.app/Contents/MacOS/
100	sed 's/VERSION/$(VERSION)/' OSXExtras/Info.plist > qrq.app/Contents/Info.plist
101
102uninstall:
103	rm -rf qrq.app
104
105else
106
107install: qrq
108	mkdir -p                            $(DESTDIR)$(PREFIX)/share/qrq/
109	$(BSD_INSTALL_PROGRAM) qrq          $(DESTDIR)$(PREFIX)/bin/
110	$(BSD_INSTALL_SCRIPT)  qrqscore     $(DESTDIR)$(PREFIX)/bin/
111	$(BSD_INSTALL_MAN)     qrq.1        $(DESTDIR)$(PREFIX)/man/man1/
112	$(BSD_INSTALL_DATA)    callbase.qcb $(DESTDIR)$(PREFIX)/share/qrq/
113	$(BSD_INSTALL_DATA)    english.qcb  $(DESTDIR)$(PREFIX)/share/qrq/
114	$(BSD_INSTALL_DATA)    qrqrc        $(DESTDIR)$(PREFIX)/share/qrq/
115	$(BSD_INSTALL_DATA)    toplist      $(DESTDIR)$(PREFIX)/share/qrq/
116
117
118uninstall:
119	rm -f $(DESTDIR)/bin/qrq
120	rm -f $(DESTDIR)/bin/qrqscore
121	rm -f $(DESTDIR)/share/man/man1/qrq.1
122	rm -f $(DESTDIR)/share/qrq/callbase.qcb
123	rm -f $(DESTDIR)/share/qrq/english.qcb
124	rm -f $(DESTDIR)/share/qrq/qrqrc
125	rm -f $(DESTDIR)/share/qrq/toplist
126	rmdir $(DESTDIR)/share/qrq/
127
128endif
129
130package: qrq
131	export CODESIGN_ALLOCATE=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate; ldid -s qrq
132	rm -rf qrq-pkg
133	install -d -v                      qrq-pkg/$(DESTDIR)/share/qrq/
134	install -d -v                      qrq-pkg/$(DESTDIR)/share/man/man1/
135	install -d -v                      qrq-pkg/$(DESTDIR)/bin/
136	install -d -v                      qrq-pkg/DEBIAN/
137	install -s -m 0755 qrq             qrq-pkg/$(DESTDIR)/bin/
138	install    -m 0755 qrqscore        qrq-pkg/$(DESTDIR)/bin/
139	install    -m 0644 qrq.1           qrq-pkg/$(DESTDIR)/share/man/man1/
140	install    -m 0644 callbase.qcb    qrq-pkg/$(DESTDIR)/share/qrq/
141	install    -m 0644 english.qcb     qrq-pkg/$(DESTDIR)/share/qrq/
142	install    -m 0644 qrqrc           qrq-pkg/$(DESTDIR)/share/qrq/
143	install    -m 0644 toplist         qrq-pkg/$(DESTDIR)/share/qrq/
144	install    -m 0644 control         qrq-pkg/DEBIAN/
145	export COPYFILE_DISABLE=1; export COPY_EXTENDED_ATTRIBUTES_DISABLE=1; dpkg-deb -b qrq-pkg cydiastore_com.kb1ooo.qrq_v$(shell grep ^Version: control | cut -d ' ' -f 2).deb
146	$(SCP) cydiastore_com.kb1ooo.qrq_v$(shell grep ^Version: control | cut -d ' ' -f 2).deb $(IPHONE_HOST):/tmp
147	$(SSH) $(IPHONE_HOST) "dpkg -i /tmp/cydiastore_com.kb1ooo.qrq_v$(shell grep ^Version: control | cut -d ' ' -f 2).deb"
148
149clean:
150	rm -f qrq.exe qrq toplist-old *~ *.o README
151	rm -rf Summary
152	rm -rf qrq.app
153
154dist:
155	sed 's/Version [0-9].[0-9].[0-9]/Version $(VERSION)/g' ../README > README
156	mkdir -p ../releases
157	rm -f ../releases/qrq-$(VERSION).tar.gz
158	rm -rf ../releases/qrq-$(VERSION)
159	mkdir qrq-$(VERSION)
160	cp qrq.png qrqscore qrq.c qrqrc callbase.qcb toplist \
161		../AUTHORS ../ChangeLog README ../COPYING qrq.1 Makefile qrqinstaller.nsi \
162		english.qcb qrq.ico qrq.rc \
163		qrq-$(VERSION)
164	cp coreaudio.c coreaudio.h oss.c oss.h \
165		qrq-$(VERSION)
166	cp pulseaudio.h pulseaudio.c qrq-$(VERSION)
167	cp -r OSXExtras qrq-$(VERSION)
168	rm -rf qrq-$(VERSION)/OSXExtras/.svn/
169	tar -zcf qrq-$(VERSION).tar.gz qrq-$(VERSION)
170	mv qrq-$(VERSION) ../releases/
171	mv qrq-$(VERSION).tar.gz ../releases/
172	md5sum ../releases/*.gz > ../releases/md5sums.txt
173
174