1TOPDIR	= ..
2
3include ../Makefile.system
4
5ifndef EXPRECISION
6EXPRECISION	= 0
7endif
8
9ifndef NO_CBLAS
10NO_CBLAS	= 0
11endif
12
13ifeq ($(OSNAME), WINNT)
14ifeq ($(F_COMPILER), GFORTRAN)
15EXTRALIB += -lgfortran
16endif
17endif
18
19ifeq ($(OSNAME), CYGWIN_NT)
20ifeq ($(F_COMPILER), GFORTRAN)
21EXTRALIB += -lgfortran
22endif
23endif
24
25all::
26
27libs::
28
29prof::
30
31hpl:: libgoto_hpl.$(LIBSUFFIX)
32
33hpl_p:: libgoto_hpl_p.$(LIBSUFFIX)
34
35libgoto_hpl.$(LIBSUFFIX) : ../$(LIBNAME)
36	rm -f $(@F)
37	$(LD) -r $(LDFLAGS) -o goto.$(SUFFIX) --whole-archive $< --no-whole-archive
38	$(AR) cq $(@F) goto.$(SUFFIX)
39	$(RANLIB) libgoto_hpl.$(LIBSUFFIX)
40
41libgoto_hpl_p.$(LIBSUFFIX) :  ../$(LIBNAME_P)
42	rm -f $(@F)
43	$(LD) -r  $(LDFLAGS) -o goto.$(PSUFFIX)  --whole-archive $< --no-whole-archive
44	$(AR) cq $(@F) goto.$(PSUFFIX)
45	$(RANLIB) libgoto_hpl_p.$(LIBSUFFIX)
46
47libgoto_hpl.dll : libgoto_hpl.$(LIBSUFFIX) dllinit.$(SUFFIX) libgoto_hpl.def
48	$(DLLWRAP) -o $(@F) --def libgoto_hpl.def --entry _dllinit -s dllinit.$(SUFFIX) --dllname libgoto_hpl.dll libgoto_hpl.$(LIBSUFFIX)
49	lib /machine:X64 /def:libgoto_hpl.def
50
51dyn : $(LIBDYNNAME)
52
53zip : dll
54	zip $(LIBZIPNAME) $(LIBDLLNAME) $(LIBNAME)
55
56dll  : libgoto2.dll
57
58dll2 : libgoto2_shared.dll
59
60libgoto2.dll : ../$(LIBNAME) libgoto2.def dllinit.$(SUFFIX)
61	$(RANLIB) ../$(LIBNAME)
62ifeq ($(BINARY32), 1)
63	$(DLLWRAP) -o $(@F) --def libgoto2.def \
64	--entry _dllinit@12 -s dllinit.$(SUFFIX) --dllname $(@F) ../$(LIBNAME) $(FEXTRALIB)
65	-lib /machine:i386 /def:libgoto2.def
66else
67	$(DLLWRAP) -o $(@F) --def libgoto2.def \
68	--entry _dllinit    -s dllinit.$(SUFFIX) --dllname $(@F) ../$(LIBNAME) $(FEXTRALIB)
69	-lib /machine:X64 /def:libgoto2.def
70endif
71
72libgoto2_shared.dll : ../$(LIBNAME) libgoto2_shared.def
73	$(CC) $(CFLAGS) libgoto2_shared.def -shared -o $(@F) \
74	-Wl,--whole-archive ../$(LIBNAME) -Wl,--no-whole-archive \
75	-Wl,--out-implib,libgoto2_shared.lib $(FEXTRALIB)
76
77libgoto2.def : gensymbol
78	perl ./gensymbol win2k    $(ARCH_) dummy $(EXPRECISION) $(NO_CBLAS) > $(@F)
79
80libgoto2_shared.def : gensymbol
81	perl ./gensymbol win2k    $(ARCH_) dummy $(EXPRECISION) $(NO_CBLAS) > $(@F)
82
83libgoto_hpl.def : gensymbol
84	perl ./gensymbol win2khpl $(ARCH_) dummy $(EXPRECISION) $(NO_CBLAS) > $(@F)
85
86$(LIBDYNNAME) : ../$(LIBNAME) osx.def
87	$(PREFIX)gcc $(CFLAGS) -all_load -dynamiclib -o $(LIBDYNNAME) $< -Wl,-exported_symbols_list,osx.def  $(FEXTRALIB)
88
89symbol.$(SUFFIX) : symbol.S
90	$(CC) $(CFLAGS) -c -o $(@F) $^
91
92dllinit.$(SUFFIX) : dllinit.c
93	$(CC) $(CFLAGS) -c -o $(@F) -s $<
94
95ifeq ($(OSNAME), Linux)
96
97so : ../$(LIBSONAME)
98
99../$(LIBSONAME) : ../$(LIBNAME) linux.def linktest.c
100	$(CC) $(CFLAGS) -shared -o ../$(LIBSONAME) \
101	-Wl,--whole-archive ../$(LIBNAME) -Wl,--no-whole-archive \
102	-Wl,--retain-symbols-file=linux.def $(EXTRALIB)
103	$(CC) $(CFLAGS) -w -o linktest linktest.c ../$(LIBSONAME) $(FEXTRALIB) && echo OK.
104	rm -f linktest
105
106endif
107
108ifneq (,$(filter $(OSNAME), FreeBSD DragonFly))
109EXTRALIB += -lgfortran
110
111so : ../$(LIBSONAME)
112
113../$(LIBSONAME) : ../$(LIBNAME) linux.def linktest.c
114	$(FC) $(CFLAGS)  -shared -o ../$(LIBSONAME) \
115	-Wl,--whole-archive ../$(LIBNAME) -Wl,--no-whole-archive \
116	-Wl,--retain-symbols-file=linux.def $(EXTRALIB)
117	$(CC) $(CFLAGS) -w -o linktest linktest.c ../$(LIBSONAME) $(FEXTRALIB) && echo OK.
118	rm -f linktest
119
120endif
121
122ifeq ($(OSNAME), OSF1)
123
124so : ../$(LIBSONAME)
125
126../$(LIBSONAME) :
127	$(CC) -shared -o ../$(LIBSONAME) ../$(LIBNAME)
128endif
129
130ifeq ($(OSNAME), SunOS)
131
132so : ../$(LIBSONAME)
133	$(CC) $(CFLAGS)  -shared -o ../$(LIBSONAME) \
134	-Wl,--whole-archive ../$(LIBNAME) -Wl,--no-whole-archive $(EXTRALIB)
135	$(CC) $(CFLAGS) -w -o linktest linktest.c ../$(LIBSONAME) $(FEXTRALIB) && echo OK.
136	rm -f linktest
137
138endif
139
140ifeq ($(OSNAME), AIX)
141
142ifeq ($(COMPILER_F77), xlf)
143
144goto32.$(SUFFIX) : ../$(LIBNAME) aix.def
145	ld -o $(@F) ../$(LIBNAME) -bE:aix.def -bM:SRE -bnoexpall -bnoentry -L$(HOME)/misc/lib -lxlf90 -lc -lm  -lpthread
146
147goto64.$(SUFFIX) : ../$(LIBNAME) aix.def
148	ld -b64 -o $(@F) ../$(LIBNAME) -bE:aix.def -bM:SRE -bnoexpall -bnoentry -L$(HOME)/misc/lib/ppc64 -lxlf90 -lc -lm -lpthread
149else
150goto32.$(SUFFIX) : ../$(LIBNAME) aix.def
151	ld -o $(@F) ../$(LIBNAME) -bE:aix.def -bM:SRE -bnoexpall -bnoentry -L$(HOME)/misc/lib -lg2c -lc -lm
152
153goto64.$(SUFFIX) : ../$(LIBNAME) aix.def
154	ld -b64 -o $(@F) ../$(LIBNAME) -bE:aix.def -bM:SRE -bnoexpall -bnoentry -L$(HOME)/misc/lib/ppc64 -lg2c -lc -lm
155endif
156endif
157
158static : ../$(LIBNAME)
159	$(LD) $(LDFLAGS) -r -o goto.$(SUFFIX) \
160	--whole-archive ../$(LIBNAME) --no-whole-archive
161	rm -f ../$(LIBNAME)
162	$(AR) -cq ../$(LIBNAME) goto.$(SUFFIX)
163	rm -f goto.$(SUFFIX)
164
165linux.def : gensymbol ../Makefile.system ../getarch.c
166	perl ./gensymbol linux $(ARCH_) $(BU) $(EXPRECISION) $(NO_CBLAS) > $(@F)
167
168osx.def : gensymbol ../Makefile.system ../getarch.c
169	perl ./gensymbol osx $(ARCH_) $(BU) $(EXPRECISION) $(NO_CBLAS) > $(@F)
170
171aix.def : gensymbol ../Makefile.system ../getarch.c
172	perl ./gensymbol aix $(ARCH_) $(BU) $(EXPRECISION) $(NO_CBLAS) > $(@F)
173
174symbol.S : gensymbol
175	perl ./gensymbol win2kasm noarch dummy $(EXPRECISION) $(NO_CBLAS) > symbol.S
176
177test : linktest.c
178	$(CC) $(CFLAGS) -w -o linktest linktest.c ../$(LIBSONAME) -lm && echo OK.
179	rm -f linktest
180
181linktest.c : gensymbol ../Makefile.system ../getarch.c
182	perl ./gensymbol linktest  $(ARCH_) $(BU) $(EXPRECISION) $(NO_CBLAS) > linktest.c
183
184clean ::
185	@rm -f *.def *.dylib __.SYMDEF*
186
187include ../Makefile.tail
188
189
190