15f023fb389d01cf426a0b07d0e91aa5282f3972
[charm.git] / examples / charm++ / state_space_searchengine / 3SAT / minisat / mtl / .svn / text-base / template.mk.svn-base
1 ##
2 ##  Template makefile for Standard, Profile, Debug, Release, and Release-static versions
3 ##
4 ##    eg: "make rs" for a statically linked release version.
5 ##        "make d"  for a debug version (no optimizations).
6 ##        "make"    for the standard version (optimized, but with debug information and assertions active)
7
8 CSRCS     ?= $(wildcard *.C)
9 CHDRS     ?= $(wildcard *.h)
10 COBJS     ?= $(addsuffix .o, $(basename $(CSRCS)))
11
12 PCOBJS     = $(addsuffix p,  $(COBJS))
13 DCOBJS     = $(addsuffix d,  $(COBJS))
14 RCOBJS     = $(addsuffix r,  $(COBJS))
15
16 EXEC      ?= $(notdir $(shell pwd))
17 LIB       ?= $(EXEC)
18
19 CXX       ?= g++
20 CFLAGS    ?= -Wall
21 LFLAGS    ?= -Wall
22
23 COPTIMIZE ?= -O3
24
25 .PHONY : s p d r rs lib libd clean 
26
27 s:      $(EXEC)
28 p:      $(EXEC)_profile
29 d:      $(EXEC)_debug
30 r:      $(EXEC)_release
31 rs:     $(EXEC)_static
32 lib:    lib$(LIB).a
33 libd:   lib$(LIB)d.a
34
35 ## Compile options
36 %.o:                    CFLAGS +=$(COPTIMIZE) -ggdb -D DEBUG
37 %.op:                   CFLAGS +=$(COPTIMIZE) -pg -ggdb -D NDEBUG
38 %.od:                   CFLAGS +=-O0 -ggdb -D DEBUG # -D INVARIANTS
39 %.or:                   CFLAGS +=$(COPTIMIZE) -D NDEBUG
40
41 ## Link options
42 $(EXEC):                LFLAGS := -ggdb $(LFLAGS)
43 $(EXEC)_profile:        LFLAGS := -ggdb -pg $(LFLAGS)
44 $(EXEC)_debug:          LFLAGS := -ggdb $(LFLAGS)
45 $(EXEC)_release:        LFLAGS := $(LFLAGS)
46 $(EXEC)_static:         LFLAGS := --static $(LFLAGS)
47
48 ## Dependencies
49 $(EXEC):                $(COBJS)
50 $(EXEC)_profile:        $(PCOBJS)
51 $(EXEC)_debug:          $(DCOBJS)
52 $(EXEC)_release:        $(RCOBJS)
53 $(EXEC)_static:         $(RCOBJS)
54
55 lib$(LIB).a:    $(filter-out Main.or, $(RCOBJS))
56 lib$(LIB)d.a:   $(filter-out Main.od, $(DCOBJS))
57
58
59 ## Build rule
60 %.o %.op %.od %.or:     %.C
61         @echo Compiling: "$@ ( $< )"
62         @$(CXX) $(CFLAGS) -c -o $@ $<
63
64 ## Linking rules (standard/profile/debug/release)
65 $(EXEC) $(EXEC)_profile $(EXEC)_debug $(EXEC)_release $(EXEC)_static:
66         @echo Linking: "$@ ( $^ )"
67         @$(CXX) $^ $(LFLAGS) -o $@
68
69 ## Library rule
70 lib$(LIB).a lib$(LIB)d.a:
71         @echo Library: "$@ ( $^ )"
72         @rm -f $@
73         @ar cq $@ $^
74
75 ## Clean rule
76 clean:
77         @rm -f $(EXEC) $(EXEC)_profile $(EXEC)_debug $(EXEC)_release $(EXEC)_static \
78           $(COBJS) $(PCOBJS) $(DCOBJS) $(RCOBJS) *.core depend.mak lib$(LIB).a lib$(LIB)d.a
79
80 ## Make dependencies
81 depend.mk: $(CSRCS) $(CHDRS)
82         @echo Making dependencies ...
83         @$(CXX) $(CFLAGS) -MM $(CSRCS) > depend.mk
84         @cp depend.mk /tmp/depend.mk.tmp
85         @sed "s/o:/op:/" /tmp/depend.mk.tmp >> depend.mk
86         @sed "s/o:/od:/" /tmp/depend.mk.tmp >> depend.mk
87         @sed "s/o:/or:/" /tmp/depend.mk.tmp >> depend.mk
88         @rm /tmp/depend.mk.tmp
89
90 -include depend.mk