source: Sophya/trunk/SophyaLib/Mgr/Makefile.h@ 478

Last change on this file since 478 was 478, checked in by ansari, 26 years ago

creation module FitsIOServer 19-OCT-99, GLM

File size: 9.6 KB
Line 
1# -*- makefile -*-
2# ######################### PEIDA++ #############################
3# ##### LAL (Orsay) / IN2P3-CNRS DAPNIA/SPP (Saclay) / CEA #####
4# ###############################################################
5# General setup GNU Makefile for EROS. To be included in all makefiles.
6# Define makefile variables according to CPU
7# MACHEROSD = `uname | sed 's/-//'` i.e. { AIX HPUX OSF1 Linux ... }
8# and compilers {g++, cxx, KCC, xlC, aCC, ...}
9#
10# Makefile variables set are:
11# - Path to Exec, Include, Libs, Obj directories (from DPCDEVREP env. var.)
12# i.e. variables LIB, OBJ, EXE, INC
13#---------------------------------------------------------------------------
14
15# define MACHEROS from uname
16MACHEROS := $(shell echo `uname`)
17# define the -D option
18MACHEROSD := $(shell echo `uname | sed 's/-//'`)
19# Le sous-repertoire des objets specifique machine-compilo
20# OSF1 : Alpha avec gcc
21# OSF1-cxx : Alpha avec cxx
22
23#### C++
24ifdef EROSCXX
25 CXX := $(EROSCXX)
26endif
27
28ifeq ($(CXX),gcc)
29 override CXX := g++
30endif
31
32ifeq ($(EROSCXX),egcs++)
33 # en fait de compilo de egcs++ s'appelle g++ !
34 # comme il faut bien differentier ln -s /usr/bin/g++ /usr/bin/egcs++
35 override CXX := egcs++
36endif
37
38ifeq ($(CC),xlC)
39 override CXX := xlC
40endif
41
42#### C
43ifeq ($(CXX), xlC)
44 override CC := xlC
45endif
46
47ifeq ($(CXX), g++)
48 CC := gcc
49endif
50
51ifeq ($(EROSCXX), egcs++)
52 CC := egcs
53endif
54
55#### Fortran (tout ce qui est lie au Fortran est defini ici #############
56FC = f77
57ifeq ($(SITE),CCIN2P3)
58 ifeq ($(MACHEROS),AIX)
59 override FC := xlf
60 endif
61endif
62ifeq (${MACHEROS},Linux)
63# override FC := f77
64 override FC := g77
65endif
66
67ifeq (${MACHEROS},OSF1)
68 LIBFORT = -lfor -lFutil -lots -lUfor
69endif
70ifeq (${MACHEROS},Linux)
71 LIBFORT = -lf2c
72endif
73#########################################################################
74
75
76MACHDIR := $(MACHEROS)-$(CXX)
77
78
79#-
80#- Define Makefile paths
81#- (NE PAS TOUCHER CES LIGNES: generation automatique de MakefileUser.h)
82#-
83PP := ${DPCDEVREP}/${MACHDIR}/
84LIB := ${PP}/Libs/
85SLB := ${PP}/ShLibs/
86OBJ := ${PP}/Objs/
87EXE := ${PP}/Exec/
88INC := ${DPCDEVREP}/Include/
89CCI := ${INC}/CInc/
90GLB := ${GNU}/${MACHEROS}/lib/
91#--
92
93#- Flag for optimisation/ debug
94# Pour forcer sans debug, DBGFLAG = -g0
95ifndef OPTFLAG
96 OPTFLAG := -O
97endif
98
99ifndef DBGFLAG
100 DBGFLAG := -g
101endif
102
103# DBGFLAG a -g0 veut dire pas de debug. Tout le monde a ca par defaut...
104ifeq ($(DBGFLAG), -g0)
105 override DBGFLAG :=
106endif
107
108# xlC ne connait pas -O0, par defaut il n'optimise pas.
109ifeq ($(OPTFLAG), -O0)
110 ifeq ($(CC), xlC)
111 override OPTFLAG :=
112 endif
113endif
114
115AR := ar
116ARFLAGS := -rcs
117
118# le gnu ar ne fonctionne pas bien sur OSF...
119ifeq (${MACHEROS},OSF1)
120AR := /usr/bin/ar
121endif
122# et sur AIX il nous sort des tas de warnings inutiles
123ifeq ($(MACHEROS),AIX)
124AR := /usr/bin/ar
125endif
126
127# Avec certains compilateurs C++ (KCC, aCC) , il faut fabriquer les librairies et
128# les shared libs avec la meme commande
129override ARCXX :=
130ifeq ($(CXX),KCC)
131ARCXX := KCC
132endif
133ifeq ($(CXX),aCC)
134ARCXX := aCC
135endif
136
137# Les chemins speciaux pour includes systemes et bibliotheques
138ifeq (${MACHEROS},HP-UX)
139 XLDLIBS := -L.
140 XCFLAGS := -I.
141endif
142
143
144# Pour compiler PI, sous Linux, les includes et libs se trouve souvent ds /usr/X11/include /usr/X11/lib/
145ifeq (${MACHEROS},Linux)
146 XLDLIBS := -L/usr/X11/lib
147 XCFLAGS := -I/usr/X11/include
148 LDLIBS := -ldl
149endif
150
151# Pour RFIO
152ifeq ($(SITE),CCIN2P3)
153 XCFLAGS := $(XCFLAGS) -D RFIO -I/usr/local/include/shift
154 XLDLIBS := $(XLDLIBS) -L/usr/local/lib -lshift
155endif
156
157# Les bibliotheques gnu C pour le fort du CCPN
158ifeq ($(SITE),CCIN2P3)
159 ifeq ($(CC), gcc)
160 ifeq ($(MACHEROS),HP-UX)
161 FGLIB := -L/usr/local/lib/gcc-lib/hppa1.1-hp-hpux9.05/2.7.2.1 -lgcc
162 endif
163 ifeq ($(MACHEROS),AIX)
164 FGLIB := -L/usr/local/lib/gcc-lib/rs6000-ibm-aix3.2.5/2.7.2.1 -lgcc
165 endif
166 endif
167endif
168
169# Chemin pour la librairie cfitsio
170FITSIOREP :=
171FITSIOLIB :=
172ifeq ($(SITE),LAL)
173 override FITSIOREP :=/exp/planck/FitsIO/cfitsio/
174 override FITSIOLIB := -L$(FITSIOREP) -lcfitsio
175endif
176
177# S'il y a des flags particulier pour un module de compilation
178#ifndef MODULECPPFLAGS
179 override MODULECPPFLAGS :=
180#endif
181
182CPPFLAGS := -I${INC} -I$(FITSIOREP) -D${MACHEROSD} -I$(INC)/tnt $(MODULECPPFLAGS)
183
184# Les options selon les divers compilateurs
185# GNU
186ifeq ($(CC), gcc)
187 CFLAGS := -Wall -Wpointer-arith \
188 -Wmissing-prototypes -Wsynth -I$(INC) $(XCFLAGS) \
189 $(OPTFLAG) $(DBGFLAG) $(MYCFLAGS)
190 LDLIBS := $(LDLIBS) $(XLDLIBS)
191endif
192ifeq ($(CC), egcs)
193 CFLAGS := -Wall -Wpointer-arith \
194 -Wmissing-prototypes -Wsynth -I$(INC) $(XCFLAGS) \
195 $(OPTFLAG) $(DBGFLAG) $(MYCFLAGS)
196 LDLIBS := $(LDLIBS) $(XLDLIBS)
197endif
198
199ifeq ($(CXX), g++)
200 CXXFLAGS := -Wall -Wpointer-arith \
201 -Wmissing-prototypes -Wsynth -I$(INC) $(XCFLAGS) \
202 $(OPTFLAG) $(DBGFLAG) $(MYCFLAGS)
203 LDLIBS := $(LDLIBS) $(XLDLIBS)
204# Il faut trouver un moyen d'automatiser ca $CHECK$ Reza 23/12/98
205 ifdef GCCV28
206 CXXFLAGS := $(CXXFLAGS) -fguiding-decls -fname-mangling-version-1 -DCOMPILER_EXCEPTIONS
207 endif
208 ifdef NOSHLIB
209 LDFLAGS := -static
210 endif
211endif
212ifeq ($(CXX), egcs++)
213 CXXFLAGS := -Wall -Wpointer-arith \
214 -Wmissing-prototypes -Wsynth -I$(INC) $(XCFLAGS) \
215 $(OPTFLAG) $(DBGFLAG) $(MYCFLAGS)
216 LDLIBS := $(LDLIBS) $(XLDLIBS)
217 ifdef NOSHLIB
218 LDFLAGS := -static
219 endif
220endif
221
222# Compilateur C natif HP-UX
223ifeq (${MACHEROS},HP-UX)
224ifeq ($(CC),cc)
225 CFLAGS := +Z -Aa -Ae $(XCFLAGS) $(OPTFLAG) $(DBGFLAG) $(MYCFLAGS)
226 FFLAGS := -Aa -I${INC} -D${MACHEROSD}
227 CPPFLAGS := -I${INC} -I$(INC)/tnt -D${MACHEROSD} \
228 -D_HPUX_SOURCE $(MODULECPPFLAGS)
229 LDLIBS := $(XLDLIBS)
230 override NOSHLIB := Y
231
232endif
233ifeq ($(CXX),aCC)
234 CXXFLAGS := $(XCFLAGS) $(OPTFLAG) $(DBGFLAG) $(MYCFLAGS) +Z -D__aCC__
235# -DCOMPILER_EXCEPTIONS -D__ANSI_TEMPLATES__ definis ds defs.h
236endif
237endif
238
239# AIX, xlC comme compilateur C et C++
240ifeq ($(CXX), xlC)
241 CFLAGS := $(OPTFLAG) $(DBGFLAG) $(MYCFLAGS) $(XCFLAGS)
242 CPPFLAGS := -I$(INC)/Syst -I${INC} -I$(INC)/tnt -D${MACHEROSD} $(MODULECPPFLAGS)
243 CXXFLAGS := $(CFLAGS) -D__xlC -DCOMPILER_EXCEPTIONS
244# -DCOMPILER_EXCEPTIONS defini ds defs.h
245 LDLIBS := $(XLDLIBS)
246
247# Pour faire des bibliotheques partagees, il faut faire un truc du
248# style
249#ld -o shrsub.o subs1.o subs2.o -bE:shrsub.exp -bM:SRE -lc
250
251# Pour le moment on ne se fatigue pas, tant pis
252 override NOSHLIB := Y
253
254# Et puis 1540-293: (W) est un FAUX warning, on supprime les warnings
255 CXXFLAGS := -qflag=e $(CXXFLAGS)
256endif
257
258#gcc sur Solaris
259ifeq ($(MACHEROS),SunOS)
260 override NOSHLIB := Y
261endif
262
263ifeq ($(CXX), cxx)
264 ifeq ($(DBGFLAG), -g)
265 ifdef OPTFLAG
266 override DBGFLAG := -g1
267 endif
268# ifdef XOPT
269# override DBGFLAG := -g1
270# endif
271 endif
272
273# chemin pour repository CXX
274 REP := $(OBJ)/cxxrep/
275 REPPI := $(OBJ)/cxxrep_PI/
276 REPCXX := -ptr $(OBJ)/cxxrep/
277 ifdef MODULECXXREPNAME
278 REPCXX := -ptr $(OBJ)/cxxrep_$(MODULECXXREPNAME)/ -ptr $(OBJ)/cxxrep/
279 REPM := $(OBJ)/cxxrep_$(MODULECXXREPNAME)/
280 endif
281
282 LDLIBS := $(XLDLIBS) -lrt
283
284 CXXFLAGS := $(OPTFLAG) $(DBGFLAG) $(MYCFLAGS) -DCOMPILER_EXCEPTIONS \
285 $(REPCXX) -no_implicit_include
286 CFLAGS := $(OPTFLAG) $(DBGFLAG) $(MYCFLAGS)
287# CXXFLAGS := $(OPTFLAG) $(DBGFLAG) $(MYCFLAGS) -DCOMPILER_EXCEPTIONS \
288# -nopt -define_templates
289 ifeq ($(XOPT), 1)
290 override DBGFLAG :=
291 CXXFLAGS := $(DBGFLAG) $(MYCFLAGS) -DCOMPILER_EXCEPTIONS \
292 $(REPCXX) -fp_reorder \
293 -O5 -inline speed -tune host
294 endif
295 ifeq ($(XOPT), 2)
296 override DBGFLAG :=
297 CXXFLAGS := $(DBGFLAG) $(MYCFLAGS) -DCOMPILER_EXCEPTIONS \
298 $(REPCXX) -fp_reorder \
299 -O5 -inline speed -tune host \
300 -assume trusted_short_alignment
301 endif
302 ifeq ($(XOPT), 3)
303 override DBGFLAG :=
304 CXXFLAGS := $(DBGFLAG) $(MYCFLAGS) -DCOMPILER_EXCEPTIONS \
305 $(REPCXX) -fp_reorder \
306 -O5 -inline speed -tune host \
307 -assume trusted_short_alignment \
308 -non_shared -om
309 override NOSHLIB := Y
310 endif
311
312# le fichier X11/Xlib.h contient des declarations de fonctions sans type
313# Cela genere un grand nombre de warning avec cxx V6
314# La variable MODULEDECCXXFLAGS permet de specifier des options de compilation
315# pour un module donne
316 ifdef MODULEDECCXXFLAGS
317 CXXFLAGS := $(CXXFLAGS) $(MODULEDECCXXFLAGS)
318 endif
319endif
320ifeq ($(CC),cc)
321 ifeq ($(MACHEROS),OSF1)
322 ifeq ($(XOPT), 1)
323 CFLAGS := $(DBGFLAG) $(MYCFLAGS) -fp_reorder \
324 -O4 -inline speed -tune host
325 endif
326 ifeq ($(XOPT), 2)
327 CFLAGS := $(DBGFLAG) $(MYCFLAGS) -fp_reorder \
328 -O4 -inline speed -tune host \
329 -assume trusted_short_alignment -fast
330 endif
331 ifeq ($(XOPT), 3)
332 CFLAGS := $(DBGFLAG) $(MYCFLAGS) -fp_reorder \
333 -O4 -inline speed -tune host \
334 -assume trusted_short_alignment -fast \
335 -non_shared -om
336 endif
337 endif
338endif
339
340
341# Compilateur KAI
342ifeq ($(CXX), KCC)
343 CXXFLAGS := --exceptions --rtti --auto_instantiation --one_instantiation_per_object -D__KCC__
344# Flag --one_instantiation_per_object mis - Reza 02/03/99
345# -DCOMPILER_EXCEPTIONS -D__ANSI_TEMPLATES__ definis ds defs.h
346endif
347
348# Autres compilateurs natifs.
349
350# CFLAGS := -I$(INC) $(XCFLAGS) $(OPTFLAG) $(DBGFLAG) $(MYCFLAGS)
351# CXXFLAGS := $(CFLAGS)
352# LDLIBS := $(XLDLIBS)
353
354#- redefine implicit rule. Les .o sont dans $(OBJ).
355$(OBJ)%.o:%.c
356 $(COMPILE.c) -o $@ $<
357
358$(OBJ)%.o:%.cc
359 $(COMPILE.cc) -o $@ $<
360
361$(OBJ)%.o:%.f
362 $(COMPILE.f) -o $@ $<
363
364#OSF1
365#LDFC est f77
366#LDFCFLAGS est rien
367
368#parfois
369#LDFC est cc
370#LDFCFLAGS est -ltruc
371
372#------------------------------------------------- End of Makefile.h -------
Note: See TracBrowser for help on using the repository browser.