1# compilers: gnu, pgi
2# modes: debug, profile, optimize
3
4COMPILER=gnu
5MODE=optimize
6
7#gnu c options
8#
9ifeq ($(COMPILER),gnu)
10  CC=gcc
11  CXX=g++
12  DEPCC=gcc
13  LD=gcc
14  ifeq ($(MODE),optimize)
15    OFLAG=-march=pentiumpro -mcpu=pentiumpro -O6 -ffast-math -malign-double -finline-limit-1000000 -funroll-loops -fstrength-reduce -finline-functions
16    DFLAG=
17  endif
18
19  ifeq ($(MODE),debug)
20    OFLAG=
21    DFLAG=-g
22  endif
23
24  ifeq (($MODE),profile)
25    OFLAG=
26    DFLAG=-g -pg
27  endif
28
29  DEPCFLAGS=
30  CFLAGS=$(OFLAG) $(DFLAG) $(DEPCFLAGS)
31  LDFLAGS=
32  LIBS=$(DFLAG)
33endif
34
35
36
37# pgi cc options
38#
39ifeq (($COMPILER),pgi)
40  CC=pgcc -B
41  CXX=pgCC --pch --no_exceptions
42  DEPCC=gcc
43  LD=pgCC
44
45  ifeq ($(MODE),optimize)
46    OFLAG=-w -tp p6 -fast -O2 -Munroll -Mnoframe -Minline=levels:10 -Mvect=assoc,cachesize:524288,sse -Msafeptr -Msingle
47    DFLAG=
48  endif
49
50  ifeq ($(MODE),debug)
51    OFLAG=-w
52    DFLAG=
53  endif
54
55  ifeq ($(MODE),profile)
56    OFLAG=-w
57    DFLAG=-g -Mprof=lines
58  endif
59
60  DEPCFLAGS=
61  CFLAGS=$(OFLAG) $(DFLAG) $(DEPCFLAGS)
62  LDFLAGS=$(DFLAG)
63  LIBS=
64endif
65
66CXXFLAGS=$(CFLAGS)
67
68
69all:
70	make -f .make
71
72clean:
73	rm -f *.o
74	rm -f *.pch
75	rm -f $(EXTRAO)
76	rm -f $(EXE)
77
78realclean: clean
79	rm -f .targets .make
80
81depend:
82	find . -name '*.c*' | sed 's/\.cpp$$/\.o/g' | sed 's/\.c$$/\.o/g' > .targets
83	echo CC=$(CC) > .make
84	echo CXX=$(CXX) >> .make
85	echo LD=$(LD) >> .make
86	echo CFLAGS=$(CFLAGS) >> .make
87	echo CXXFLAGS=$(CXXFLAGS) >> .make
88	echo LIBS=$(LIBS) >> .make
89	echo $(EXE): `cat .targets` $(EXTRAO) >> .make
90	echo -e \\t$(LD) $(SHARED) $(LDFLAGS) -o $(EXE) `cat .targets` $(EXTRAO) $(LIBS)  >> .make
91	echo -e \\t$(POST) >> .make
92	$(DEPCC) $(DEPCFLAGS) -M `find . -name '*.c*'` >> .make
93