1 # -*- mode: makefile -*-
3 # Makefile containing platform dependencies for ROOT based projects.
5 # Copyright (c) 2000 Rene Brun and Fons Rademakers
7 # Author: Fons Rademakers, 29/2/2000
9 ROOTCONFIG := root-config
11 ARCH := $(shell $(ROOTCONFIG) --arch)
12 PLATFORM := $(shell $(ROOTCONFIG) --platform)
19 OutPutOpt = -o # keep whitespace after "-o"
21 ROOTCFLAGS := $(shell $(ROOTCONFIG) --cflags)
22 ROOTLDFLAGS := $(shell $(ROOTCONFIG) --ldflags)
23 ROOTLIBS := $(shell $(ROOTCONFIG) --libs)
24 ROOTGLIBS := $(shell $(ROOTCONFIG) --glibs)
25 HASTHREAD := $(shell $(ROOTCONFIG) --has-thread)
28 # Linux with egcs, gcc 2.9x, gcc 3.x (>= RedHat 5.2)
30 CXXFLAGS = -O -Wall -fPIC
31 #CXXFLAGS = -Wall -fPIC -g
37 ifeq ($(ARCH),hpuxacc)
46 ifeq ($(ARCH),hpuxia64acc)
47 # HP-UX 11i 1.5 (IA-64) with aCC
49 CXXFLAGS = +DD64 -O +Z
55 ifeq ($(ARCH),hpuxgcc)
61 SOFLAGS = -fPIC -shared
64 ifeq ($(ARCH),hurddeb)
67 CXXFLAGS = -O2 -Wall -fPIC
101 EXPLLINKLIBS = $(ROOTLIBS) $(ROOTGLIBS)
104 ifeq ($(ARCH),solaris)
106 CXX = /opt/SUNWspro/bin/CC
108 LD = /opt/SUNWspro/bin/CC
113 ifeq ($(ARCH),solarisCC5)
122 ifeq ($(ARCH),solarisgcc)
131 ifeq ($(ARCH),solariskcc)
133 CXX = KCC --one_instantiation_per_object
140 ifeq ($(ARCH),solarisx86)
141 # Solaris CC on Intel
151 CXX = CC -n32 -I/usr/include/CC.sgi
153 LD = CC -n32 -LANG:std -I/usr/include/CC.sgi
158 ifeq ($(ARCH),sgicc64)
160 CXX = CC -64 -I/usr/include/CC.sgi
162 LD = CC -64 -LANG:std -I/usr/include/CC.sgi
167 ifeq ($(ARCH),sgigcc)
170 CXXFLAGS = -O -Wall -fPIC
172 LDFLAGS = -O -Wl,-u,__builtin_new -Wl,-u,__builtin_delete -Wl,-u,__nw__FUiPv
176 ifeq ($(ARCH),sgin32gcc)
177 # SGI 6.x with gcc for n32 ABI
179 CXXFLAGS = -O -Wall -fPIC
181 LDFLAGS = -O -L/usr/lib32 -Wl,-woff,134 -lgen
185 ifeq ($(ARCH),sgikcc)
187 CXX = KCC -n32 --one_instantiation_per_object
194 ifeq ($(ARCH),alphagcc)
197 CXXFLAGS = -O2 -Wall -fPIC
200 SOFLAGS = -Wl,-expect_unresolved,* -shared
203 ifeq ($(ARCH),alphakcc)
204 # Alpha/OSF with kai compiler (not yet valid)
205 CXX = KCC --one_instantiation_per_object
209 SOFLAGS = -Wl,-expect_unresolved,* -shared
212 ifeq ($(ARCH),alphacxx6)
213 # Alpha/OSF with cxx6
218 SOFLAGS = -shared -nocxxstd -Wl,-expect_unresolved,*,-msym
221 ifeq ($(ARCH),linuxrh51)
222 # Linux with gcc 2.7.2.x
224 CXXFLAGS = -O2 -Wall -fPIC
230 ifeq ($(ARCH),linuxrh42)
231 # Linux with gcc 2.7.2.x (RedHat 4.2)
233 CXXFLAGS = -O2 -Wall -fPIC
239 ifeq ($(ARCH),linuxdeb)
240 # Linux with gcc 2.7.2.x
242 CXXFLAGS = -O1 -Wall -fPIC
248 ifeq ($(ARCH),linuxdeb2ppc)
249 # Debian/Linux on the PowerPC
251 CXXFLAGS = -O2 -Wall -fPIC
257 ifeq ($(ARCH),linuxsuse6)
258 # Linux with gcc 2.7.2.x
260 CXXFLAGS = -O2 -Wall -fPIC
266 ifeq ($(ARCH),linuxkcc)
267 # Linux with the KAI compiler
268 CXX = KCC --one_instantiation_per_object
269 CXXFLAGS = -O -fPIC +K0
271 LDFLAGS = -O $(shell $(ROOTCONFIG) --cflags)
275 ifeq ($(ARCH),linuxicc)
276 # Linux with Intel icc compiler
277 ICC_MAJOR := $(shell icc -v 2>&1 | awk '{ if (NR==1) print $$2 }' | \
279 ICC_MINOR := $(shell icc -v 2>&1 | awk '{ if (NR==1) print $$2 }' | \
282 CXXFLAGS = -O -fPIC -wd1476
286 ifeq ($(ICC_MAJOR),8)
287 ifneq ($(ICC_MINOR),0)
293 ifeq ($(ARCH),linuxppcgcc)
294 # MkLinux with gcc and glibc
296 CXXFLAGS = -O2 -Wall -fPIC
302 ifeq ($(ARCH),linuxia64gcc)
303 # Itanium Linux with gcc 2.9x
305 CXXFLAGS = -O2 -Wall -fPIC
311 ifeq ($(ARCH),linuxia64sgi)
312 # Itanium Linux with sgiCC
314 CXXFLAGS = -O -Wall -fPIC
320 ifeq ($(ARCH),linuxia64ecc)
321 # Itanium Linux with Intel icc (was ecc)
322 ICC_MAJOR := $(shell icc -v 2>&1 | awk '{ if (NR==1) print $$2 }' | \
324 ICC_MINOR := $(shell icc -v 2>&1 | awk '{ if (NR==1) print $$2 }' | \
327 CXXFLAGS = -O -fPIC -wd1476
331 ifeq ($(ICC_MAJOR),8)
332 ifneq ($(ICC_MINOR),0)
338 ifeq ($(ARCH),linuxx8664gcc)
339 # AMD Opteron and Intel EM64T (64 bit mode) Linux with gcc 3.x
341 CXXFLAGS = -O2 -Wall -fPIC
347 ifeq ($(ARCH),linuxppc64gcc)
348 # PPC64 Linux with gcc 3.x
350 CXXFLAGS = -O -Wall -fPIC
356 ifeq ($(ARCH),linuxx8664icc)
357 # AMD Opteron and Intel EM64T (64 bit mode) Linux with Intel icc compiler
359 CXXFLAGS = -O -fPIC -wd1476 -wd1572
365 ifeq ($(ARCH),linuxalphagcc)
366 # Alpha Linux with gcc
368 CXXFLAGS = -O2 -Wall -fPIC
374 ifeq ($(ARCH),linuxarm)
375 # ARM Linux with egcs
377 CXXFLAGS = -O -Wall -fPIC
383 ifeq ($(ARCH),mklinux)
386 CXXFLAGS = -O2 -Wall -fPIC
392 ifeq ($(ARCH),freebsd)
395 CXXFLAGS = -O -pipe -W -Wall -fPIC
398 SOFLAGS = -shared -Wl,-x
401 ifeq ($(ARCH),freebsd4)
403 CXXFLAGS += -W -Wall -fPIC
405 SOFLAGS = -shared -Wl,-x
408 ifeq ($(ARCH),freebsd5)
410 CXXFLAGS += -W -Wall -fPIC
414 ifeq ($(ARCH),openbsd)
417 CXXFLAGS = -O -pipe -W -Wall -fPIC
420 SOFLAGS = -shared -Wl,-x
423 ifeq ($(ARCH),macosx)
424 # MacOS X with cc (GNU cc 2.95.2 and gcc 3.3)
425 MACOSX_MINOR := $(shell sw_vers | sed -n 's/ProductVersion://p' | cut -d . -f 2)
427 CXXFLAGS = -O2 -pipe -Wall -W -Woverloaded-virtual
428 LDFLAGS = -O2 -bind_at_load
429 # The SOFLAGS will be used to create the .dylib,
430 # the .so will be created separately
432 ifeq ($(MACOSX_MINOR),4)
433 UNDEFOPT = dynamic_lookup
434 LD = MACOSX_DEPLOYMENT_TARGET=10.4 c++
436 ifeq ($(MACOSX_MINOR),3)
437 UNDEFOPT = dynamic_lookup
438 LD = MACOSX_DEPLOYMENT_TARGET=10.3 c++
444 SOFLAGS = -dynamiclib -single_module -undefined $(UNDEFOPT)
447 ifeq ($(ARCH),macosxicc)
448 # MacOS X with Intel icc compiler
449 MACOSX_MINOR := $(shell sw_vers | sed -n 's/ProductVersion://p' | cut -d . -f 2)
451 CXXFLAGS = -O -fPIC -wd1476
453 # The SOFLAGS will be used to create the .dylib,
454 # the .so will be created separately
456 ifeq ($(MACOSX_MINOR),4)
457 LD = MACOSX_DEPLOYMENT_TARGET=10.4 icpc
459 SOFLAGS = -dynamiclib -single_module -Xlinker -undefined dynamic_lookup
462 ifeq ($(ARCH),macosx64)
463 # MacOS X >= 10.4 with gcc 64 bit mode (GNU gcc 4.*)
464 # Only specific option (-m64) comes from root-config
465 MACOSX_MINOR := $(shell sw_vers | sed -n 's/ProductVersion://p' | cut -d . -f 2)
467 CXXFLAGS = -O2 -pipe -Wall -W -Woverloaded-virtual
468 LDFLAGS = -O2 -bind_at_load
469 # The SOFLAGS will be used to create the .dylib,
470 # the .so will be created separately
472 LD = MACOSX_DEPLOYMENT_TARGET=10.4 c++
473 SOFLAGS = -dynamiclib -single_module -undefined dynamic_lookup
476 ifeq ($(ARCH),macosxxlc)
477 # MacOS X with IBM xlC compiler
478 MACOSX_MINOR := $(shell sw_vers | sed -n 's/ProductVersion://p' | cut -d . -f 2)
481 LDFLAGS = -O -Wl,-bind_at_load
482 # The SOFLAGS will be used to create the .dylib,
483 # the .so will be created separately
485 ifeq ($(MACOSX_MINOR),4)
486 UNDEFOPT = dynamic_lookup
487 LD = MACOSX_DEPLOYMENT_TARGET=10.4 xlC
489 ifeq ($(MACOSX_MINOR),3)
490 UNDEFOPT = dynamic_lookup
491 LD = MACOSX_DEPLOYMENT_TARGET=10.3 xlC
497 SOFLAGS = -qmkshrobj -single_module -undefined $(UNDEFOPT)
501 # Windows with the VC++ compiler
502 VC_MAJOR := $(shell unset VS_UNICODE_OUTPUT; cl.exe 2>&1 | awk '{ if (NR==1) print $$8 }' | \
512 CXXFLAGS = $(CXXOPT) -nologo -I$(shell $(ROOTCONFIG) --incdir) -FIw32pragma.h
516 LDFLAGS = $(LDOPT) -pdb:none -nologo
519 EXPLLINKLIBS = $(ROOTLIBS) $(ROOTGLIBS)
522 ifeq ($(ARCH),win32old)
523 # Windows with the VC++ compiler
532 CXXFLAGS = $(CXXOPT) -G5 -GR -GX -MD -DWIN32 -D_WINDOWS -nologo \
533 -DVISUAL_CPLUSPLUS -D_X86_=1 -D_DLL
537 LDFLAGS = $(LDOPT) -pdb:none -nologo
540 EXPLLINKLIBS = $(ROOTLIBS) $(ROOTGLIBS)
543 ifeq ($(ARCH),win32gcc)
548 CXXFLAGS = -O -pipe -Wall -Woverloaded-virtual -I/usr/X11R6/include
550 LDFLAGS = -O -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc \
552 SOFLAGS = -shared -D_DLL -Wl,--export-all-symbols
553 EXPLLINKLIBS = $(ROOTLIBS) $(ROOTGLIBS)
557 $(error $(ARCH) invalid architecture)
560 #CXXFLAGS += $(ROOTCFLAGS) -I/home/odjuvsla/Workspace/alice/AliRootDev/RAW -I/home/odjuvsla/Workspace/alice/AliRootDev/include
561 CXXFLAGS += $(ROOTCFLAGS) -I$(ALICE_ROOT)/RAW -I$(ALICE_ROOT)/include -I$(ALICE_ROOT)/PHOS -I$(ALIHLT_BASEDIR)/PHOS -I$(ALIHLT_BASEDIR)/BASE
562 LDFLAGS += $(ROOTLDFLAGS)
563 LIBS = $(ROOTLIBS) $(SYSLIBS)
564 GLIBS = $(ROOTGLIBS) $(SYSLIBS)
565 ROOTLIBS = -L$(ROOTSYS)/lib -lXMLIO -lMinuit -lGeom -lVMC -lEG
566 ALILIBS = -L$(ALICE_ROOT)/lib/tgt_linux
567 HLTLIBS = -L$(ALIHLT_LIBDIR)
568 #ALILIBS = -L/home/odjuvsla/Workspace/alice/AliRootDev/lib/tgt_linux -lESD -lCDB
570 GLIBS = $(ROOTGLIBS) $(SYSLIBS)