summaryrefslogtreecommitdiff
path: root/gr-howto-write-a-block/Makefile.common
blob: 0787b4eec9dc918cc113dde323e772530cabe6eb (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
# -*- Makefile -*-
#
# Copyright 2004,2006,2009,2010 Free Software Foundation, Inc.
# 
# This file is part of GNU Radio
# 
# GNU Radio 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 3, or (at your option)
# any later version.
# 
# GNU Radio 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 GNU Radio; see the file COPYING.  If not, write to
# the Free Software Foundation, Inc., 51 Franklin Street,
# Boston, MA 02110-1301, USA.
# 

# The name of this "out-of-tree" module
modname = howto

# Make rebuilds less verbose with stuff we can safely ignore
# about GNU make only extensions.
AUTOMAKE += -Wno-portability -Wnone

# these flags are used when compiling non-SWIG-wrapper files
# when going in to non-SWIG libraries
AM_CXXFLAGS = @autoconf_default_CXXFLAGS@

# Sets ABI version in SONAME and appends -LIBVER to filename
LTVERSIONFLAGS = -version-info 0:0:0 -release $(LIBVER)

# these flags are used when compiling any CXX file
AM_CPPFLAGS = \
	$(STD_DEFINES_AND_INCLUDES) \
	$(PYTHON_CPPFLAGS) \
	$(CPPUNIT_INCLUDES) \
	$(GNURADIO_CORE_CPPFLAGS)

# these are used by both SWIG and CXX
STD_DEFINES_AND_INCLUDES = \
	$(DEFINES) \
	-I$(abs_top_srcdir)/lib \
	-I$(GNURADIO_CORE_INCLUDEDIR) \
	-I$(GNURADIO_CORE_INCLUDEDIR)/swig

# includes
modincludedir = $(includedir)/$(modname)

# swig includes 
swigincludedir = $(modincludedir)/swig

# Install this stuff in the appropriate subdirectory
# This usually ends up at:
#   ${prefix}/lib/python${python_version}/site-packages/$(modname)

modpythondir = $(pythondir)/$(modname)
modpyexecdir = $(pyexecdir)/$(modname)

# Data directory for grc block wrappers
grc_blocksdir = $(prefix)/share/gnuradio/grc/blocks

# Don't assume that make predefines $(RM), because BSD make does
# not. We define it now in configure.ac using AM_PATH_PROG, but now
# here have to add a -f to be like GNU make.
RM=$(RM_PROG) -f

# Other common defines; use "+=" to add to these
STAMPS =
MOSTLYCLEANFILES = $(BUILT_SOURCES) $(STAMPS) *.pyc *.pyo *~ *.tmp *.loT

## SWIG suffixes for automake to know about
SUFFIXES = .i .scm .py

if GUILE
# Compile a .i to what guile needs. We use -o to set the output file name,
# or even with -outdir guile in SWIG_GUILE_ARGS, swig keeps putting a 
# gnuradio_core_*_wrap.cxx in the source directory.
gnuradio/%.scm : %.i
	@echo "Compile .i to .scm"
	@test -d "guile" || $(mkinstalldirs) "guile"
	@test -d "gnuradio" || $(mkinstalldirs) "gnuradio"
	$(SWIG) $(STD_SWIG_GUILE_ARGS) $($*_swig_args) \
		-MD -MF guile/$*.Std \
		-module $* -o guile/$*.cc $<
	$(SED) -e 's|guile/\(.*\)\.cc:|gnuradio/\1.scm:|' guile/$*.Std > guile/$*.d
	$(SED) -i -e 's/<--dummy-[0-9]\+-->/<top>/g' gnuradio/$*.scm
	$(SED) -i -e 's/^(export /(export-safely /' gnuradio/$*.scm
	$(RM) guile/$*.Std
endif

# Compile a .i file to what python needs
.i.py:
	@echo "Compile .i to .py"
	@test -d "python" || $(mkinstalldirs) "python"
	$(SWIG) $(STD_SWIG_PYTHON_ARGS) $($*_swig_args) \
		-MD -MF python/$*.Std \
		-module $* -o python/$*.cc -oh python/$*.h $<
	$(SED) -e 's|python/\(.*\)\.cc:|\1.py:|' python/$*.Std > python/$*.d
	$(RM) python/$*.Std

# Don't distribute the files defined in the variable 'no_dist_files'
dist-hook:
	@for file in $(no_dist_files); do \
		echo $(RM) $(distdir)/$$file; \
		$(RM) $(distdir)/$$file; \
	done;