+# -*- mode: makefile -*-
# Makefile for AliRoot for MacOS X with gcc
-PLATFORM = macosx
+XARGS = xargs
-# The compilers
-CXX = g++
-F77 = g77
-CC = gcc
+# OS version
+MACOSX_MAJOR := $(strip $(shell sw_vers | sed -n 's/ProductVersion://p' | cut -d . -f 1))
+MACOSX_MINOR := $(strip $(shell sw_vers | sed -n 's/ProductVersion://p' | cut -d . -f 2))
+
+# fink directories
+FINK_ROOT := $(shell which fink | sed -e 's?/bin/fink??')
+ifeq (,$(FINK_ROOT))
+# No fink, build will probably fail, but we try a guess
+FINK_ROOT=/usr/local
+endif
# Global optimisation
OPT = -O -g
+NOOPT = -O0 -g
-CXXOPTS = $(OPT) -Wall -W -pipe -fsigned-char -fno-common -fweak-coalesced -fmessage-length=0
-COPT = $(OPT) -Wall -W -fno-common -fweak-coalesced
+CXXOPT = $(OPT)
+CXXNOOPT = $(NOOPT)
+COPT = $(OPT)
FOPT = $(OPT) -fno-second-underscore
-CXXFLAGS = $(CXXOPTS) -I/sw/include
-CFLAGS = -Wall -pipe -I/sw/include
-
-# rootcint flags
-CINTFLAGS =
+ifeq (,$(findstring g95,$(F77)))
+FOPT += -fbounds-check
+endif
# CERNLIB defines
-
-CLIBDEFS = -DCERNLIB_LINUX -DCERNLIB_BLDLIB -DCERNLIB_CZ
+CLIBDEFS = -DCERNLIB_LINUX -DCERNLIB_BLDLIB -DCERNLIB_CZ -DCERNLIB_PPC
CLIBCXXOPTS =
CLIBCOPT =
-CLIBFOPT =
+CLIBFOPT = $(CLIBDEFS)
+
+CXXSTF = -pipe -Wall -W -pipe -fbounds-check -fsigned-char -fno-common -fmessage-length=0 -Woverloaded-virtual -Weffc++ -Wconversion -Wshadow -fno-default-inline -fno-inline -I/usr/X11R6/include -I$(FINK_ROOT)/include
+
+# Compiler flags
+CXXFLAGS = $(CXXOPT) $(CXXSTF)
+
+CXXFLAGSNO = $(CXXNOOPT) $(CXXSTF)
+
+CFLAGS = $(COPT) -Wall -W -fno-common -pipe -I$(FINK_ROOT)/include
+
+FFLAGS = $(CLIBFOPT) $(FOPT)
+ifneq (,$(findstring g95,$(F77)))
+FFLAGS += -ftrace=full
+FFLAGS +=-DFORTRAN_G95
+else
+FFLAGS +=-DFORTRAN_GFORTRAN
+endif
+
+# rmkdepend flags for building dependencies of FORTRAN files
+DEPENDFFLAGS = $(FFLAGS)
-# Common Fortran compilation flags
-FFLAGS = $(CLIBFOPT) $(CLIBDEFS) $(FOPT)
-
-LD = export MACOSX_DEPLOYMENT_TARGET=10.3 ; \
+# rootcint flags
+CINTFLAGS =
+
+LD = export MACOSX_DEPLOYMENT_TARGET=$(MACOSX_MAJOR).$(MACOSX_MINOR) ; \
unset LD_PREBIND ; \
- g++
-LDFLAGS = $(OPT)
+ $(shell root-config --ld)
+LDFLAGS = $(OPT) $(DICTLOAD)
SHLD := $(LD)
-SOFLAGS := -bundle -flat_namespace -undefined dynamic_lookup
-#SHLIB := -lg2c
-SHLIB :=
+SOFLAGS := -dynamiclib -undefined dynamic_lookup -single_module
+SHLIB :=
SOEXT := so
-DYLD := $(LD)
-DYFLAGS = -dynamiclib -flat_namespace -undefined dynamic_lookup -single_module
-DYLIB :=
-DYEXT := dylib
-
ALLD = ar
ALFLAGS = cr
ALLIB =
AEXT = a
-
-# rmkdepend flags for building dependencies of FORTRAN files
-DEPENDFFLAGS = $(FFLAGS)
-
DEPENDCXXFLAGS = $(CXXFLAGS) -I/usr/include/sys
-GLIBS = -L/usr/X11R6/lib -lX11
-
-#System libraries
-SYSLIBS = -ldl
-
-EXEFLAGS+= -Xlinker -bind_at_load -Xlinker -m #-lg2c
-
+SYSLIBS := -L/usr/X11R6/lib -lX11
+EXEFLAGS := -bind_at_load
+#System libraries
+ifneq (,$(findstring g95,$(F77)))
+SYSLIBS += -L$(shell $(F77) --print-search-dirs | sed -n -e 's/install: //p') -lf95
+DYLIB += -L$(shell $(F77) --print-search-dirs | sed -n -e 's/install: //p') -lf95
+else
+SYSLIBS += -ldl $(shell $(F77) -print-file-name=libgfortran.dylib)
+SYSLIBS += $(shell $(F77) -print-file-name=libgfortranbegin.a)
+endif