summaryrefslogtreecommitdiff
path: root/Yacs++/src/Makefile
blob: f3cf239218000fa6124954ec2aa8b655ca575836 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#---------------------------------------------------------------------------
#
#  Makefile for building the Yacs++ library and load module
#  Author : A. Hebert (2018-5-10)
#
#---------------------------------------------------------------------------
#
ARCH = $(shell uname -m)
ifneq (,$(filter $(ARCH),aarch64 arm64 riscv64))
  nbit =
else
  ifneq (,$(filter $(ARCH),i386 i686))
    nbit = -m32
  else
    nbit = -m64
  endif
endif

DIRNAME = $(shell uname -sm | sed 's/[ ]/_/')
OS = $(shell uname -s | cut -d"_" -f1)
opt = -O -g
ifeq ($(openmp),1)
  COMP = -fopenmp
else
  COMP =
endif

ifeq ($(intel),1)
  ccompiler = icpc
else
  ifeq ($(nvidia),1)
    ccompiler = nvc++
  else
    ifeq ($(llvm),1)
      ccompiler = clang++
    else
      ccompiler = gcc
    endif
  endif
endif

ifeq ($(OS),Darwin)
  C = $(ccompiler) -std=c++11
  FLAGS = -DLinux -DUnix
  CFLAGS = -Wall $(nbit) -fPIC
else
ifeq ($(OS),Linux)
  ifeq ($(nvidia),1)
    C = $(ccompiler) -std=c++14
  else
    C = $(ccompiler) -std=c++17
  endif
  FLAGS = -DLinux -DUnix
  CFLAGS = -Wall $(nbit) -fPIC
else
ifeq ($(OS),CYGWIN)
  C = g++ -std=c++11
  FLAGS = -DLinux -DUnix
  CFLAGS = -Wall $(nbit) -fPIC
else
ifeq ($(OS),SunOS)
  MAKE = gmake
  C = cc
  FLAGS = -DSunOS -DUnix
  CFLAGS = $(nbit)
else
ifeq ($(OS),AIX)
  opt = -O4
  MAKE = gmake
  DIRNAME = AIX
  C = xlc
  FLAGS = -DAIX -DUnix
  CFLAGS = -qstrict
else
  $(error $(OS) is not a valid OS)
endif
endif
endif
endif
endif
lib = ../lib/$(DIRNAME)
INCLUDE = -I../../Ganlib/src/ -I../../Skin++/src/

ifeq ($(hdf5),1)
  CFLAGS += -L${HDF5_DIR}/lib -lhdf5
endif

SRCC = $(shell ls *.cxx)
OBJC = $(SRCC:.cxx=.o)
all : sub-make libYacs++.a
ifeq ($(openmp),1)
	@echo 'Yacs++: openmp is defined'
endif
ifeq ($(intel),1)
	@echo 'Yacs++: intel is defined'
endif
ifeq ($(nvidia),1)
	@echo 'Yacs++: nvidia is defined'
endif
ifeq ($(llvm),1)
	@echo 'Yacs++: llvm is defined'
endif
ifeq ($(hdf5),1)
	@echo 'Yacs++: hdf5 is defined'
endif
sub-make:
	$(MAKE) openmp=$(openmp) intel=$(intel) nvidia=$(nvidia) llvm=$(llvm) hdf5=$(hdf5) -C ../../Skin++/src
%.o : %.cxx
	$(C) $(CFLAGS) $(FLAGS) $(opt) $(COMP) $(INCLUDE) -I$(BOOST_ROOT) -I$(SALOME_KERNEL)/include/salome/ -c $< -o $@
$(lib)/:
	mkdir -p $(lib)/
libYacs++.a: $(OBJC) $(lib)/
	ar r $@ $(OBJC)
	cp $@ $(lib)/$@
clean:
	$(MAKE) -C ../../Skin++/src clean
	/bin/rm -f *.o *.a sub-make temp.