aboutsummaryrefslogtreecommitdiffstats
path: root/GNUmakefile
blob: e51221bed5611fd72c8da5986b71bd381aa9f65a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
# configuration
-include Make.config
include mk/Variables.mk

# QT/KDE dirs
ifeq ($(QTDIR),)
QTDIR  := /usr
foobar := $(shell echo "WARNING: QTDIR isn't set, assuming /usr" >&2)
endif
ifeq ($(KDEDIR),)
KDEDIR := /usr
foobar := $(shell echo "WARNING: KDEDIR isn't set, assuming /usr" >&2)
endif
prefix := $(KDEDIR)
export QTDIR KDEDIR

# kde install directories
appsdir	:= $(DESTDIR)$(shell sh kdedirs apps)/Multimedia
datadir	:= $(DESTDIR)$(shell sh kdedirs data)/krecord
htmldir	:= $(DESTDIR)$(shell sh kdedirs html)/en/krecord

# default target
all: build


##########################################################################
# fixup flags depending on the environment variables (QTDIR, KDEDIR)

# X11R6
X11DIR  := /usr/X11R6
CFLAGS	+= -I$(X11DIR)/include
LDFLAGS	+= -L$(X11DIR)/$(LIB)

# Qt
ifeq ($(QTDIR),/usr)
CFLAGS	+= -I/usr/include/qt
else
CFLAGS	+= -I$(QTDIR)/include
LDFLAGS	+= -L$(QTDIR)/$(LIB)
endif

# KDE
ifeq ($(KDEDIR),/usr)
CFLAGS	+= -I/usr/include/kde
else
CFLAGS	+= -I$(KDEDIR)/include
LDFLAGS	+= -L$(KDEDIR)/$(LIB)
endif

# version
CFLAGS  += -DKRECORD_VERSION='"$(VERSION)"'
CFLAGS  += -fno-strict-aliasing		# fft code needs this


##########################################################################
# poor man's autoconf

include mk/Autoconf.mk

define make-config
LIB                  := $(LIB)
HAVE_SOUNDCARD_H     := $(call ac_header,soundcard.h)
HAVE_SYS_SOUNDCARD_H := $(call ac_header,sys/soundcard.h)
HAVE_SUN_AUDIOIO_H   := $(call ac_header,sun/audioio.h)
HAVE_LIBQT_MT        := $(call ac_lib,qt_wm_state,qt-mt)
endef

# config conditionals
includes   := SOUNDCARD_H SYS_SOUNDCARD_H SUN_AUDIOIO_H
inc_cflags := $(call ac_inc_cflags,$(includes))
CFLAGS	   += $(inc_cflags)

ifeq ($(HAVE_LIBQT_MT),yes)
QTLIB=-lqt-mt
else
QTLIB=-lqt
endif


##########################################################################
# my targets

# krecord
TARGET   := krecord
OBJS     := krecord.o sound.o fft.o level.o buffer.o soundfft.o \
            oss.o sunaudio.o
SRCS     := krecord.cpp sound.cpp fft.cpp level.cpp buffer.cpp soundfft.c \
            oss.cpp sunaudio.cpp
MOCS     := krecord.moc sound.moc fft.moc level.moc buffer.moc \
            oss.moc sunaudio.moc

CXXFLAGS := $(CFLAGS)
LDLIBS	 += -lkio -lkdecore $(QTLIB) -lXext -lXmu -lX11

# locales
PO       := $(wildcard po/*.po)
MO       := $(subst .po,.mo,$(PO))
MERGE    := $(subst .po,.pox,$(PO))
LANGS    := $(patsubst po/%.po,install-lang-%,$(PO))

build: $(TARGET) $(MO)

$(TARGET): $(OBJS)

install: install-bin $(LANGS)

install-bin: $(TARGET)
	$(INSTALL_DIR) $(bindir)
	$(INSTALL_BINARY) $(TARGET) $(bindir)
	$(INSTALL_DIR) $(appsdir)
	$(INSTALL_DATA) krecord.desktop $(appsdir)
	$(INSTALL_DIR) $(datadir)/toolbar
	$(INSTALL_DATA) img/*.png $(datadir)/toolbar
	$(INSTALL_DIR) $(htmldir)
	$(INSTALL_DATA) index.html $(htmldir)

install-lang-%: po/%.mo
	$(INSTALL_DIR) $(locdir)/$*/LC_MESSAGES
	$(INSTALL_DATA) $< $(locdir)/$*/LC_MESSAGES/krecord.mo

clean:
	rm -f *.o $(depfiles)
	rm -f *.bak *~ *% core* "#*"
	rm -f po/*~ po/*.mo

realclean distclean:: clean
	rm -f $(TARGET) $(MOCS) Make.config

po/krecord.pot: $(SRCS)
	touch messages.po
	xgettext -sj --keyword=i18n $(SRCS)
	mv messages.po $@

locale: po/krecord.pot $(MERGE)


##########################################################################
# some rules

%.pox : %.po po/krecord.pot
	msgmerge $< po/krecord.pot > $@

buffer.o: buffer.moc
fft.o: fft.moc
krecord.o: krecord.moc
level.o: level.moc
oss.o: oss.moc
sound.o: sound.moc
sunaudio.o: sunaudio.moc

include mk/Compile.mk
include mk/Maintainer.mk
-include $(depfiles)