* updated ksmtp (21.12.1 -> 21.12.2), untested
[t2-trunk.git] / source / Rules
blob432a78ab22a5a86459ddbf804f9e77aedf51e7ed
2 # --- GSMP-COPYRIGHT-NOTE-BEGIN ---
3
4 # This copyright note is auto-generated by ./scripts/Create-CopyPatch.
5 # Please add additional copyright information _after_ the line containing
6 # the GSMP-COPYRIGHT-NOTE-END tag. Otherwise it might get removed by
7 # the ./scripts/Create-CopyPatch script. Do not edit this copyright text!
8
9 # GSMP: Rules
10 # General Sound Manipulation Program is Copyright (C) 2000 - 2003
11 #   Valentin Ziegler and RenĂ© Rebe
12
13 # This program is free software; you can redistribute it and/or modify
14 # it under the terms of the GNU General Public License as published by
15 # the Free Software Foundation; version 2. A copy of the GNU General
16 # Public License can be found at LICENSE.
17
18 # This program is distributed in the hope that it will be useful, but
19 # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANT-
20 # ABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
21 # Public License for more details.
22
23 # --- GSMP-COPYRIGHT-NOTE-END ---
25 # The Rules containing all the tricky rules - some details
26 # are inspired from the Linux 2.6 kbuild Makefiles ...
28 # Set the TOPDIR
29 ifeq ($(origin TOPDIR), undefined)
30         TOPDIR = .
31 endif
33 # Set CCD (current compile dir) to an initial .
34 ifeq ($(origin CCD), undefined)
35         CCD = .
36 endif
38 # Do not print "Entering directory ..."
39 MAKEFLAGS += --no-print-directory
41 # Beautify output
42 Q = @
44 HOSTCC          = gcc
45 HOSTCXX         = g++
46 HOSTCFLAGS              += -pipe
47 override HOSTCFLAGS     += -Wall -Wshadow
48 HOSTCXXFLAGS            += -pipe
49 override HOSTCXXFLAGS   += -Wall -Wshadow
51 # set CROSS_COMPILE to the arch you want to compile for ...
53 CC              = $(CROSS_COMPILE)gcc
54 CXX             = $(CROSS_COMPILE)g++
55 CFLAGS                  += -pipe
56 override CFLAGS         += -Wall -ggdb
57 CXXFLAGS                += -pipe
58 override CXXFLAGS       += -Wall -ggdb
60 # some default rules
62 # enable pch if supported
63 ifeq ($(PCH),1)
64   all: $(PCHS)
65 endif
67 # enable pch STL if supported
68 ifeq ($(PCSTL),1)
69   override CXXFLAGS += -include bits/stdc++.h -Winvalid-pch
70 endif
72 .PHONY: subdirs $(SUBDIRS)
73 subdirs: $(SUBDIRS)
75 # do not remove intermediate object files
76 .PRECIOUS: %.o
77 # do not remove generated files
78 .PRECIOUS: $(GENERATED)
80 # a tiny help for manual use
81 define LINK
82         @echo '  LINK      $@'
83         $(Q)$(CXX) $(CXXFLAGS) $(INCLUDES) $(LIBS) $(LDFLAGS) -o $@ $^
84 endef
86 # prevent warning for dirs with subdirs only
87 ifneq ($(DEPS),)
88     -include $(DEPS)
89 endif
91 $(SUBDIRS):
92         @echo '  ENTERING  $(CCD)/$@ ...'
93         $(Q)$(MAKE) -C $@ CCD="$(CCD)/$@" $(MAKECMDGOALS)
94         @echo '  LEAVING   $(CCD)/$@ ...'
96 # Pre Compiled Headers
97 %.hh.gch: %.hh
98         @echo '  PCH       $@'
99         $(Q)$(CXX) $(CXXFLAGS) $(INCLUDES) $^ || true
101 %: %.o
102         @echo '  LINK EXEC $@'
103         $(Q)$(CXX) $(CXXFLAGS) $(INCLUDES) -o $@ $^ $(LIBS)
105 # the ugly sed code is needed for creation of empty targets - so removed
106 # dependencies are ignored - and the target rebuilds as expected
107 %.o: %.cc
108         @echo '  DEP       $(@:.o=.d)'
109         $(Q)$(CXX) -MM $(CXXFLAGS) $(INCLUDES) $< | sed '/^#.*/d' > $(@:.o=.d)
110         $(Q)sed -e 's/^[^:]*: *//' -e 's/ \\$$//' \
111                 -e 's/^ *//g' -e 's/ /:\n/g' -e 's/$$/:/' $(@:.o=.d) >> $(@:.o=.d)
112         @echo '  CXX       $@'
113         $(Q)$(CXX) $(CXXFLAGS) $(INCLUDES) -c -o $@ $<
115 # the -Xlinker -rpath mangling is needed to find those libraries during
116 # linking for other objects
117 %.so: $(BUILD_OBJS)
118         @echo '  LINK SO   $@'
119         $(Q)$(CXX) -shared $(CXXFLAGS) $(LDFLAGS) $(LIBS) \
120 $(patsubst -L%, -Xlinker -rpath %, $(filter -L%, $(LIBS))) -o $@ $^
122 .PHONY: clean-deps
123 clean-deps: subdirs
124         @rm -vf $(DEPS)
126 PHONY: clean-pch
127 clean-pch: subdirs
128         @rm -vf $(PCHS)
130 .PHONY: clean
131 clean: subdirs
132         @rm -vf $(BUILD_OBJS) $(BUILD_LIBS) $(BUILD_PROGS) $(GENERATED) $(DEPS)
133         @rm -vf conftest.* config.{tmp,log}
135 .PHONY: distclean
136 distclean: subdirs clean clean-pch
137         @rm -vf *~ *.d $(PCHS)
138         @rm -vf config.{h,make}