2 # Include user definition
5 # TO suppress recursive includes
12 NETLIB_LAPACK_DIR = $(TOPDIR)/lapack-netlib
15 # - Only set if not specified on the command line or inherited from the environment.
16 # - CC is an implicit variable so neither '?=' or 'ifndef' can be used.
17 # http://stackoverflow.com/questions/4029274/mingw-and-make-variables
18 # - Default value is 'cc' which is not always a valid command (e.g. MinGW).
19 ifeq ($(origin CC),default)
21 # Change the default compile to clang on Mac OSX.
22 # http://stackoverflow.com/questions/714100/os-detecting-makefile
23 UNAME_S := $(shell uname -s)
24 ifeq ($(UNAME_S),Darwin)
29 # Default Fortran compiler (FC) is selected by f_check.
32 include $(TOPDIR)/Makefile.rule
34 include $(TOPDIR)/$(MAKEFILE_RULE)
38 # Beginning of system configuration
46 GETARCH_FLAGS := -DFORCE_$(TARGET)
49 # Force fallbacks for 32bit
52 ifeq ($(TARGET), HASWELL)
53 GETARCH_FLAGS := -DFORCE_NEHALEM
55 ifeq ($(TARGET), SANDYBRIDGE)
56 GETARCH_FLAGS := -DFORCE_NEHALEM
58 ifeq ($(TARGET), BULLDOZER)
59 GETARCH_FLAGS := -DFORCE_BARCELONA
61 ifeq ($(TARGET), PILEDRIVER)
62 GETARCH_FLAGS := -DFORCE_BARCELONA
67 #TARGET_CORE will override TARGET which is used in DYNAMIC_ARCH=1.
70 GETARCH_FLAGS := -DFORCE_$(TARGET_CORE)
73 # Force fallbacks for 32bit
76 ifeq ($(TARGET_CORE), HASWELL)
77 GETARCH_FLAGS := -DFORCE_NEHALEM
79 ifeq ($(TARGET_CORE), SANDYBRIDGE)
80 GETARCH_FLAGS := -DFORCE_NEHALEM
82 ifeq ($(TARGET_CORE), BULLDOZER)
83 GETARCH_FLAGS := -DFORCE_BARCELONA
85 ifeq ($(TARGET_CORE), PILEDRIVER)
86 GETARCH_FLAGS := -DFORCE_BARCELONA
94 ifneq ($(INTERFACE64), 0)
95 GETARCH_FLAGS += -DUSE64BITINT
99 ifndef GEMM_MULTITHREAD_THRESHOLD
100 GEMM_MULTITHREAD_THRESHOLD=4
102 GETARCH_FLAGS += -DGEMM_MULTITHREAD_THRESHOLD=$(GEMM_MULTITHREAD_THRESHOLD)
105 GETARCH_FLAGS += -DNO_AVX
107 GETARCH_FLAGS += -DNO_AVX
115 ifeq ($(QUIET_MAKE), 1)
119 ifndef NO_PARALLEL_MAKE
122 GETARCH_FLAGS += -DNO_PARALLEL_MAKE=$(NO_PARALLEL_MAKE)
124 ifeq ($(HOSTCC), loongcc)
125 GETARCH_FLAGS += -static
128 #if don't use Fortran, it will only compile CBLAS.
129 ifeq ($(ONLY_CBLAS), 1)
135 # This operation is expensive, so execution should be once.
136 ifndef GOTOBLAS_MAKEFILE
137 export GOTOBLAS_MAKEFILE = 1
139 # Generating Makefile.conf and config.h
140 DUMMY := $(shell $(MAKE) -C $(TOPDIR) -f Makefile.prebuild CC="$(CC)" FC="$(FC)" HOSTCC="$(HOSTCC)" CFLAGS="$(GETARCH_FLAGS)" BINARY=$(BINARY) USE_OPENMP=$(USE_OPENMP) TARGET_CORE=$(TARGET_CORE) ONLY_CBLAS=$(ONLY_CBLAS) all)
143 include $(TOPDIR)/Makefile.conf
145 include $(TOPDIR)/Makefile_kernel.conf
151 NUM_THREADS = $(NUM_CORES)
154 ifeq ($(NUM_THREADS), 1)
155 override USE_THREAD = 0
159 ifeq ($(USE_THREAD), 0)
165 ifeq ($(NUM_THREAD), 1)
178 AR = $(CROSS_SUFFIX)ar
179 AS = $(CROSS_SUFFIX)as
180 LD = $(CROSS_SUFFIX)ld
181 RANLIB = $(CROSS_SUFFIX)ranlib
182 NM = $(CROSS_SUFFIX)nm
183 DLLWRAP = $(CROSS_SUFFIX)dllwrap
186 # OS dependent settings
189 ifeq ($(OSNAME), Darwin)
190 export MACOSX_DEPLOYMENT_TARGET=10.2
194 ifeq ($(OSNAME), FreeBSD)
198 ifeq ($(OSNAME), NetBSD)
202 ifeq ($(OSNAME), Linux)
207 ifeq ($(OSNAME), AIX)
211 ifeq ($(OSNAME), WINNT)
215 EXTRALIB += -defaultlib:advapi32
221 ifeq ($(C_COMPILER), CLANG)
222 CCOMMON_OPT += -DMS_ABI
225 ifeq ($(C_COMPILER), GCC)
226 #Test for supporting MS_ABI
227 GCCVERSIONGTEQ4 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \>= 4)
228 GCCVERSIONGT4 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \> 4)
229 GCCMINORVERSIONGTEQ7 := $(shell expr `$(CC) -dumpversion | cut -f2 -d.` \>= 7)
230 ifeq ($(GCCVERSIONGT4), 1)
231 # GCC Majar version > 4
232 # It is compatible with MSVC ABI.
233 CCOMMON_OPT += -DMS_ABI
236 ifeq ($(GCCVERSIONGTEQ4), 1)
237 ifeq ($(GCCMINORVERSIONGTEQ7), 1)
239 # It is compatible with MSVC ABI.
240 CCOMMON_OPT += -DMS_ABI
245 # Ensure the correct stack alignment on Win32
246 # http://permalink.gmane.org/gmane.comp.lib.openblas.general/97
248 CCOMMON_OPT += -mincoming-stack-boundary=2
249 FCOMMON_OPT += -mincoming-stack-boundary=2
254 ifeq ($(OSNAME), Interix)
258 INTERIX_TOOL_DIR = /opt/gcc.3.3/i586-pc-interix3/bin
261 ifeq ($(OSNAME), CYGWIN_NT)
266 ifneq ($(OSNAME), WINNT)
267 ifneq ($(OSNAME), CYGWIN_NT)
268 ifneq ($(OSNAME), Interix)
270 EXTRALIB += -lpthread
277 ifeq ($(OSNAME), $(filter $(OSNAME),WINNT CYGWIN_NT Interix))
282 CCOMMON_OPT += -DQUAD_PRECISION
287 ifneq ($(ARCH), x86_64)
293 CCOMMON_OPT += -DUTEST_CHECK
298 CCOMMON_OPT += -DSANITY_CHECK -DREFNAME=$(*F)f$(BU)
302 # Architecture dependent settings
309 ifndef NO_EXPRECISION
310 ifeq ($(F_COMPILER), GFORTRAN)
311 # ifeq logical or. GCC or LSB
312 ifeq ($(C_COMPILER), $(filter $(C_COMPILER),GCC LSB))
314 CCOMMON_OPT += -DEXPRECISION -m128bit-long-double
315 FCOMMON_OPT += -m128bit-long-double
317 ifeq ($(C_COMPILER), CLANG)
319 CCOMMON_OPT += -DEXPRECISION
320 FCOMMON_OPT += -m128bit-long-double
326 ifeq ($(ARCH), x86_64)
327 ifndef NO_EXPRECISION
328 ifeq ($(F_COMPILER), GFORTRAN)
329 # ifeq logical or. GCC or LSB
330 ifeq ($(C_COMPILER), $(filter $(C_COMPILER),GCC LSB))
332 CCOMMON_OPT += -DEXPRECISION -m128bit-long-double
333 FCOMMON_OPT += -m128bit-long-double
335 ifeq ($(C_COMPILER), CLANG)
337 CCOMMON_OPT += -DEXPRECISION
338 FCOMMON_OPT += -m128bit-long-double
344 ifeq ($(C_COMPILER), INTEL)
345 CCOMMON_OPT += -wd981
348 ifeq ($(USE_OPENMP), 1)
349 # ifeq logical or. GCC or LSB
350 ifeq ($(C_COMPILER), $(filter $(C_COMPILER),GCC LSB))
351 CCOMMON_OPT += -fopenmp
354 ifeq ($(C_COMPILER), CLANG)
355 $(error OpenBLAS: Clang didn't support OpenMP yet.)
356 CCOMMON_OPT += -fopenmp
359 ifeq ($(C_COMPILER), INTEL)
360 CCOMMON_OPT += -openmp
363 ifeq ($(C_COMPILER), PGI)
367 ifeq ($(C_COMPILER), OPEN64)
369 CEXTRALIB += -lstdc++
372 ifeq ($(C_COMPILER), PATHSCALE)
378 ifeq ($(DYNAMIC_ARCH), 1)
380 DYNAMIC_CORE = KATMAI COPPERMINE NORTHWOOD PRESCOTT BANIAS \
381 CORE2 PENRYN DUNNINGTON NEHALEM ATHLON OPTERON OPTERON_SSE3 BARCELONA BOBCAT ATOM NANO
384 ifeq ($(ARCH), x86_64)
385 DYNAMIC_CORE = PRESCOTT CORE2 PENRYN DUNNINGTON NEHALEM OPTERON OPTERON_SSE3 BARCELONA BOBCAT ATOM NANO
387 DYNAMIC_CORE += SANDYBRIDGE BULLDOZER PILEDRIVER HASWELL
400 ifeq ($(F_COMPILER), GFORTRAN)
401 ifeq ($(C_COMPILER), GCC)
403 # CCOMMON_OPT += -DEXPRECISION
408 ifeq ($(ARCH), mips64)
412 ifeq ($(ARCH), alpha)
422 ifeq ($(ARCH), arm64)
431 # C Compiler dependent settings
435 # ifeq logical or. GCC or CLANG or LSB
436 # http://stackoverflow.com/questions/7656425/makefile-ifeq-logical-or
437 ifeq ($(C_COMPILER), $(filter $(C_COMPILER),GCC CLANG LSB))
439 COMMON_PROF += -fno-inline
440 NO_UNINITIALIZED_WARN = -Wno-uninitialized
442 ifeq ($(QUIET_MAKE), 1)
443 CCOMMON_OPT += $(NO_UNINITIALIZED_WARN) -Wno-unused
448 ifeq ($(ARCH), mips64)
450 CCOMMON_OPT += -mabi=64
452 CCOMMON_OPT += -mabi=n32
457 ifeq ($(CORE), LOONGSON3A)
458 CCOMMON_OPT += -march=mips64
459 FCOMMON_OPT += -march=mips64
462 ifeq ($(CORE), LOONGSON3B)
463 CCOMMON_OPT += -march=mips64
464 FCOMMON_OPT += -march=mips64
467 ifeq ($(OSNAME), AIX)
473 ifndef BINARY_DEFINED
483 ifeq ($(C_COMPILER), PGI)
485 CCOMMON_OPT += -tp p7-64
487 CCOMMON_OPT += -tp p7
491 ifeq ($(C_COMPILER), PATHSCALE)
500 # Fortran Compiler dependent settings
503 ifeq ($(F_COMPILER), G77)
504 CCOMMON_OPT += -DF_INTERFACE_G77
506 ifndef NO_BINARY_MODE
515 ifeq ($(F_COMPILER), G95)
516 CCOMMON_OPT += -DF_INTERFACE_G95
518 ifndef NO_BINARY_MODE
527 ifeq ($(F_COMPILER), GFORTRAN)
528 CCOMMON_OPT += -DF_INTERFACE_GFORT
530 #Don't include -lgfortran, when NO_LAPACK=1 or lsbcc
531 ifneq ($(NO_LAPACK), 1)
532 EXTRALIB += -lgfortran
535 ifeq ($(ARCH), mips64)
537 FCOMMON_OPT += -mabi=64
539 FCOMMON_OPT += -mabi=n32
546 ifneq ($(INTERFACE64), 0)
547 FCOMMON_OPT += -fdefault-integer-8
555 FCOMMON_OPT += -fopenmp
559 ifeq ($(F_COMPILER), INTEL)
560 CCOMMON_OPT += -DF_INTERFACE_INTEL
562 ifneq ($(INTERFACE64), 0)
567 FCOMMON_OPT += -openmp
571 ifeq ($(F_COMPILER), FUJITSU)
572 CCOMMON_OPT += -DF_INTERFACE_FUJITSU
574 FCOMMON_OPT += -openmp
578 ifeq ($(F_COMPILER), IBM)
579 CCOMMON_OPT += -DF_INTERFACE_IBM
580 # FCOMMON_OPT += -qarch=440
584 ifneq ($(INTERFACE64), 0)
585 FCOMMON_OPT += -qintsize=8
592 FCOMMON_OPT += -openmp
596 ifeq ($(F_COMPILER), PGI)
597 CCOMMON_OPT += -DF_INTERFACE_PGI
598 COMMON_PROF += -DPGICOMPILER
601 ifneq ($(INTERFACE64), 0)
605 FCOMMON_OPT += -tp p7-64
607 FCOMMON_OPT += -tp p7
614 ifeq ($(F_COMPILER), PATHSCALE)
615 CCOMMON_OPT += -DF_INTERFACE_PATHSCALE
618 ifneq ($(INTERFACE64), 0)
624 ifneq ($(ARCH), mips64)
632 FCOMMON_OPT += -mabi=64
634 FCOMMON_OPT += -mabi=n32
643 ifeq ($(F_COMPILER), OPEN64)
644 CCOMMON_OPT += -DF_INTERFACE_OPEN64
647 ifneq ($(INTERFACE64), 0)
653 ifeq ($(ARCH), mips64)
659 ifeq ($(CORE), LOONGSON3A)
660 FCOMMON_OPT += -loongson3 -static
663 ifeq ($(CORE), LOONGSON3B)
664 FCOMMON_OPT += -loongson3 -static
676 FEXTRALIB += -lstdc++
681 ifeq ($(C_COMPILER), OPEN64)
683 ifeq ($(ARCH), mips64)
689 ifeq ($(CORE), LOONGSON3A)
690 CCOMMON_OPT += -loongson3 -static
693 ifeq ($(CORE), LOONGSON3B)
694 CCOMMON_OPT += -loongson3 -static
707 ifeq ($(C_COMPILER), SUN)
716 ifeq ($(F_COMPILER), SUN)
717 CCOMMON_OPT += -DF_INTERFACE_SUN
724 FCOMMON_OPT += -xopenmp=parallel
728 ifeq ($(F_COMPILER), COMPAQ)
729 CCOMMON_OPT += -DF_INTERFACE_COMPAQ
731 FCOMMON_OPT += -openmp
737 ifneq ($(INTERFACE64), 0)
744 ifeq ($(NEED_PIC), 1)
745 ifeq ($(C_COMPILER), IBM)
746 CCOMMON_OPT += -qpic=large
750 ifeq ($(F_COMPILER), SUN)
757 ifeq ($(DYNAMIC_ARCH), 1)
758 CCOMMON_OPT += -DDYNAMIC_ARCH
761 ifeq ($(NO_LAPACK), 1)
762 CCOMMON_OPT += -DNO_LAPACK
763 #Disable LAPACK C interface
767 ifeq ($(NO_LAPACKE), 1)
768 CCOMMON_OPT += -DNO_LAPACKE
772 CCOMMON_OPT += -DNO_AVX
775 CCOMMON_OPT += -DNO_AVX
781 CCOMMON_OPT += -DSMP_SERVER
783 ifeq ($(ARCH), mips64)
784 ifneq ($(CORE), LOONGSON3B)
785 USE_SIMPLE_THREADED_LEVEL3 = 1
789 ifeq ($(USE_OPENMP), 1)
790 # USE_SIMPLE_THREADED_LEVEL3 = 1
792 CCOMMON_OPT += -DUSE_OPENMP
797 ifeq ($(NO_WARMUP), 1)
798 CCOMMON_OPT += -DNO_WARMUP
801 ifeq ($(CONSISTENT_FPCSR), 1)
802 CCOMMON_OPT += -DCONSISTENT_FPCSR
805 # Only for development
806 # CCOMMON_OPT += -DPARAMTEST
807 # CCOMMON_OPT += -DPREFETCHTEST
808 # CCOMMON_OPT += -DNO_SWITCHING
812 CCOMMON_OPT += -DUSE_PAPI
813 EXTRALIB += -lpapi -lperfctr
816 ifdef DYNAMIC_THREADS
817 CCOMMON_OPT += -DDYNAMIC_THREADS
820 CCOMMON_OPT += -DMAX_CPU_NUMBER=$(NUM_THREADS)
822 ifdef USE_SIMPLE_THREADED_LEVEL3
823 CCOMMON_OPT += -DUSE_SIMPLE_THREADED_LEVEL3
827 LIBPREFIX = libopenblas
829 LIBPREFIX = libopenblas_$(LIBNAMESUFFIX)
832 KERNELDIR = $(TOPDIR)/kernel/$(ARCH)
834 include $(TOPDIR)/Makefile.$(ARCH)
836 CCOMMON_OPT += -DASMNAME=$(FU)$(*F) -DASMFNAME=$(FU)$(*F)$(BU) -DNAME=$(*F)$(BU) -DCNAME=$(*F) -DCHAR_NAME=\"$(*F)$(BU)\" -DCHAR_CNAME=\"$(*F)\"
838 ifeq ($(CORE), PPC440)
839 CCOMMON_OPT += -DALLOC_QALLOC
842 ifeq ($(CORE), PPC440FP2)
843 STATIC_ALLOCATION = 1
846 ifneq ($(OSNAME), Linux)
850 ifneq ($(ARCH), x86_64)
852 ifneq ($(CORE), LOONGSON3B)
859 CCOMMON_OPT += -DNO_AFFINITY
862 ifdef FUNCTION_PROFILE
863 CCOMMON_OPT += -DFUNCTION_PROFILE
866 ifdef HUGETLB_ALLOCATION
867 CCOMMON_OPT += -DALLOC_HUGETLB
870 ifdef HUGETLBFILE_ALLOCATION
871 CCOMMON_OPT += -DALLOC_HUGETLBFILE -DHUGETLB_FILE_NAME=$(HUGETLBFILE_ALLOCATION)
874 ifdef STATIC_ALLOCATION
875 CCOMMON_OPT += -DALLOC_STATIC
878 ifdef DEVICEDRIVER_ALLOCATION
879 CCOMMON_OPT += -DALLOC_DEVICEDRIVER -DDEVICEDRIVER_NAME=\"/dev/mapper\"
882 ifdef MIXED_MEMORY_ALLOCATION
883 CCOMMON_OPT += -DMIXED_MEMORY_ALLOCATION
886 ifeq ($(OSNAME), SunOS)
902 REVISION = -r$(VERSION)
903 MAJOR_VERSION = $(word 1,$(subst ., ,$(VERSION)))
914 override CFLAGS += $(COMMON_OPT) $(CCOMMON_OPT) -I$(TOPDIR)
915 override PFLAGS += $(COMMON_OPT) $(CCOMMON_OPT) -I$(TOPDIR) -DPROFILE $(COMMON_PROF)
917 override FFLAGS += $(COMMON_OPT) $(FCOMMON_OPT)
918 override FPFLAGS += $(COMMON_OPT) $(FCOMMON_OPT) $(COMMON_PROF)
921 #For LAPACK Fortran codes.
922 #Disable -fopenmp for LAPACK Fortran codes on Windows.
924 LAPACK_FFLAGS := $(filter-out -fopenmp -mp -openmp -xopenmp=parallel,$(FFLAGS))
925 LAPACK_FPFLAGS := $(filter-out -fopenmp -mp -openmp -xopenmp=parallel,$(FPFLAGS))
927 LAPACK_FFLAGS := $(FFLAGS)
928 LAPACK_FPFLAGS := $(FPFLAGS)
931 LAPACK_CFLAGS = $(CFLAGS)
932 LAPACK_CFLAGS += -DHAVE_LAPACK_CONFIG_H
934 ifneq ($(INTERFACE64), 0)
935 LAPACK_CFLAGS += -DLAPACK_ILP64
940 LAPACK_CFLAGS += -DOPENBLAS_OS_WINDOWS
942 ifeq ($(C_COMPILER), LSB)
943 LAPACK_CFLAGS += -DLAPACK_COMPLEX_STRUCTURE
958 ifneq ($(DYNAMIC_ARCH), 1)
960 LIBNAME = $(LIBPREFIX)_$(LIBCORE)$(REVISION).$(LIBSUFFIX)
961 LIBNAME_P = $(LIBPREFIX)_$(LIBCORE)$(REVISION)_p.$(LIBSUFFIX)
963 LIBNAME = $(LIBPREFIX)_$(LIBCORE)p$(REVISION).$(LIBSUFFIX)
964 LIBNAME_P = $(LIBPREFIX)_$(LIBCORE)p$(REVISION)_p.$(LIBSUFFIX)
968 LIBNAME = $(LIBPREFIX)$(REVISION).$(LIBSUFFIX)
969 LIBNAME_P = $(LIBPREFIX)$(REVISION)_p.$(LIBSUFFIX)
971 LIBNAME = $(LIBPREFIX)p$(REVISION).$(LIBSUFFIX)
972 LIBNAME_P = $(LIBPREFIX)p$(REVISION)_p.$(LIBSUFFIX)
977 LIBDLLNAME = $(LIBPREFIX).dll
978 LIBSONAME = $(LIBNAME:.$(LIBSUFFIX)=.so)
979 LIBDYNNAME = $(LIBNAME:.$(LIBSUFFIX)=.dylib)
980 LIBDEFNAME = $(LIBNAME:.$(LIBSUFFIX)=.def)
981 LIBEXPNAME = $(LIBNAME:.$(LIBSUFFIX)=.exp)
982 LIBZIPNAME = $(LIBNAME:.$(LIBSUFFIX)=.zip)
984 LIBS = $(TOPDIR)/$(LIBNAME)
985 LIBS_P = $(TOPDIR)/$(LIBNAME_P)
988 LIB_COMPONENTS = BLAS
989 ifneq ($(NO_CBLAS), 1)
990 LIB_COMPONENTS += CBLAS
993 ifneq ($(NO_LAPACK), 1)
994 LIB_COMPONENTS += LAPACK
995 ifneq ($(NO_LAPACKE), 1)
996 LIB_COMPONENTS += LAPACKE
1000 ifeq ($(ONLY_CBLAS), 1)
1001 LIB_COMPONENTS = CBLAS
1014 export NEED2UNDERSCORES
1019 export MAKEFILE_RULE
1048 export FUNCTION_PROFILE
1051 export SGEMM_UNROLL_M
1052 export SGEMM_UNROLL_N
1053 export DGEMM_UNROLL_M
1054 export DGEMM_UNROLL_N
1055 export QGEMM_UNROLL_M
1056 export QGEMM_UNROLL_N
1057 export CGEMM_UNROLL_M
1058 export CGEMM_UNROLL_N
1059 export ZGEMM_UNROLL_M
1060 export ZGEMM_UNROLL_N
1061 export XGEMM_UNROLL_M
1062 export XGEMM_UNROLL_N
1063 export CGEMM3M_UNROLL_M
1064 export CGEMM3M_UNROLL_N
1065 export ZGEMM3M_UNROLL_M
1066 export ZGEMM3M_UNROLL_N
1067 export XGEMM3M_UNROLL_M
1068 export XGEMM3M_UNROLL_N
1078 .SUFFIXES: .$(PSUFFIX) .$(SUFFIX) .f
1081 $(FC) $(FFLAGS) -c $< -o $(@F)
1084 $(FC) $(FPFLAGS) -pg -c $< -o $(@F)
1088 PATHSCALEPATH = /opt/pathscale/lib/3.1
1089 PGIPATH = /opt/pgi/linux86-64/7.1-5/lib
1091 PATHSCALEPATH = /opt/pathscale/lib/3.1/32
1092 PGIPATH = /opt/pgi/linux86/7.1-5/lib
1095 ACMLPATH = /opt/acml/4.3.0
1096 ifneq ($(OSNAME), Darwin)
1097 MKLPATH = /opt/intel/mkl/10.2.2.025/lib
1099 MKLPATH = /Library/Frameworks/Intel_MKL.framework/Versions/10.0.1.014/lib
1101 ATLASPATH = /opt/atlas/3.9.17/opteron
1102 FLAMEPATH = $(HOME)/flame/lib
1103 ifneq ($(OSNAME), SunOS)
1104 SUNPATH = /opt/sunstudio12.1
1106 SUNPATH = /opt/SUNWspro