libssh2

Форк
0
/
libssh2_make_lib.dcl 
345 строк · 8.3 Кб
1
$!
2
$!
3
$ olddir = f$environment("default")
4
$ on control_y then goto YExit
5
$!
6
$ gosub Init
7
$ if .not. init_status then goto YExit
8
$!
9
$ call CompileAll
10
$ call BuildTransferVectors
11
$ call LinkShared
12
$!
13
$ call Cleanup
14
$!
15
$YExit:
16
$ set noon
17
$!
18
$ deassign srcdir
19
$ if f$search("objdir:*.*;*") .nes. "" then delete objdir:*.*;*
20
$ deassign objdir
21
$ delete library_objects.dir;*
22
$!
23
$ set default 'olddir'
24
$exit
25
$!
26
$!---------------------------------------------------------------------
27
$!
28
$Init:
29
$!
30
$!
31
$ init_status = 1
32
$ thisid = f$integer( %x'f$getjpi(0,"pid")')
33
$ mdir   = f$environment("procedure")
34
$ mdir   = mdir - f$parse(mdir,,,"name") - f$parse(mdir,,,"type") - f$parse(mdir,,,"version")
35
$ set default 'mdir'
36
$!
37
$ objdir = "[.library_objects]"
38
$ srcdir = "[-.src]"
39
$!
40
$ objdirfile = objdir - "[." - "]" + ".dir"
41
$ if f$search( objdirfile ) .eqs. ""
42
$ then
43
$   create/directory 'objdir'
44
$ endif
45
$!
46
$ define objdir 'objdir'
47
$ define srcdir 'srcdir'
48
$!
49
$ cc_include = "/include=([],[-.include],""/gnv$zlib_include"")"
50
$ cc_define = "/DEFINE=(_USE_STD_STAT=1)"
51
$ link_opts  = "objdir:libssh2_''thisid'.opt"
52
$!
53
$ pipe search [-.include]libssh2.h libssh2_version_major/nohead | (read sys$input l ; l = f$element(2," ",f$edit(l,"trim,compress")) ; -
54
       define/job majorv &l )
55
$ pipe search [-.include]libssh2.h libssh2_version_minor/nohead | (read sys$input l ; l = f$element(2," ",f$edit(l,"trim,compress")) ; -
56
       define/job minorv &l )
57
$ pipe search [-.include]libssh2.h libssh2_version_patch/nohead | (read sys$input l ; l = f$element(2," ",f$edit(l,"trim,compress")) ; -
58
       define/job patchv &l )
59
$!
60
$ majorv   = f$trnlnm("majorv")
61
$ minorv   = f$integer(f$trnlnm("minorv"))
62
$ patchv   = f$integer( f$trnlnm("patchv"))
63
$!
64
$ OLBONLY = "FALSE"
65
$ if p1 .eqs. "OLBONLY"
66
$ then
67
$   OLBONLY = "TRUE"
68
$ endif
69
$!
70
$ deassign/job majorv
71
$ deassign/job minorv
72
$ deassign/job patchv
73
$!
74
$return
75
$!
76
$!---------------------------------------------------------------------
77
$!
78
$Cleanup: subroutine
79
$!
80
$ set noon
81
$ purge *.opt
82
$ purge *.olb
83
$ purge *.exe
84
$!
85
$exit 1
86
$endsubroutine
87
$!
88
$!---------------------------------------------------------------------
89
$!
90
$LinkShared: subroutine
91
$!
92
$!
93
$!
94
$ cversion = f$fao("!3ZL",minorv)  + f$fao("!3ZL",patchv)
95
$!
96
$! General linking options in link_libssh2_version...opt
97
$! Vectors in link_libssh2_vectors...opt
98
$!
99
$ open/write uitv link_libssh2_version_'majorv'_'minorv'_'patchv'.opt
100
$ write uitv "GSMATCH=LEQUAL,''majorv',''cversion'"
101
$ write uitv "IDENTIFICATION=""LIBSSH2 ''majorv'.''minorv'.''patchv'"""
102
$ write uitv "sys$share:ssl$libcrypto_shr32.exe/share"
103
$ write uitv "sys$share:ssl$libssl_shr32.exe/share"
104
$ write uitv "gnv$libzshr/share"
105
$ close uitv
106
$!
107
$ link/shared/exe=libssh2_'majorv'_'minorv'_'patchv'.exe -
108
    libssh2.olb/lib, -
109
    link_libssh2_version_'majorv'_'minorv'_'patchv'.opt/opt, -
110
    link_libssh2_vectors_'majorv'_'minorv'_'patchv'.opt/opt
111
$!
112
$exit
113
$endsubroutine
114
$!
115
$!---------------------------------------------------------------------
116
$!
117
$CompileAll: subroutine
118
$!
119
$ set noon
120
$!
121
$ if f$search("objdir:*.obj;*") .nes ""
122
$ then
123
$   delete objdir:*.obj;*
124
$ endif
125
$ if f$search("[.cxx_repository]cxx$demangler_db.;") .nes ""
126
$ then
127
$   delete [.cxx_repository]cxx$demangler_db.;*
128
$ endif
129
$!
130
$! Compile all .c files in [-.src], first as_is
131
$! and then as default all uppercase names
132
$! and add the resulting object to object libraries
133
$! libssh2_up.olb and libssh2_as_is.olb.
134
$!
135
$ case = 0
136
$ if OLBONLY then case = 1
137
$CaseLoop:
138
$!
139
$ if case .eq. 0
140
$ then!camel case names
141
$   cc_flags = "/names=(shortened,as_is)''cc_define'"
142
$   objlib = "libssh2_asis.olb"
143
$ endif
144
$!
145
$ if case .eq. 1
146
$ then!uppercase names
147
$   if f$search("[.cxx_repository]cxx$demangler_db.;") .nes ""
148
$   then
149
$      rename [.cxx_repository]cxx$demangler_db.; *.lowercase
150
$      purge  [.cxx_repository]cxx$demangler_db.lowercase
151
$   endif
152
$!
153
$   cc_flags = "/names=(shortened)''cc_define'"
154
$   objlib = "libssh2_up.olb"
155
$ endif
156
$!
157
$ if f$search("''objlib';*") .nes. "" then delete 'objlib';*
158
$ library/create 'objlib'
159
$!
160
$Loop:
161
$ this = f$search("srcdir:*.c;0")
162
$ if this .eqs. "" then goto EndLoop
163
$!
164
$ what = f$parse( this,,,"name")
165
$!
166
$ call CompileAndAdd
167
$!
168
$ goto Loop
169
$EndLoop:
170
$ case = case + 1
171
$ delete objdir:*.obj;*
172
$ if case .lt 2 then goto CaseLoop
173
$!
174
$ rename libssh2_up.olb libssh2.olb
175
$ if f$search("[.cxx_repository]cxx$demangler_db.;") .nes ""
176
$ then
177
$    rename [.cxx_repository]cxx$demangler_db.; *.uppercase
178
$    purge  [.cxx_repository]cxx$demangler_db.uppercase
179
$ endif
180
$!
181
$ if OLBONLY then exit 4
182
$!
183
$! For each function that is too long, create a global symbol
184
$! low$'shortened-uppercase-name' with as value lowercase shortened
185
$! name in it, so we can add the proper lower or mixed case
186
$! shortened name later when building the transfer vectors
187
$! for the shared image.
188
$! This is to prevent two very long similar function names
189
$! that are shortened getting mixed up when sorted alphabetically.
190
$!
191
$ inputfile = "[.cxx_repository]cxx$demangler_db.lowercase"
192
$ gosub GetShortened
193
$!
194
$ inputfile =  "[.cxx_repository]cxx$demangler_db.uppercase"
195
$ gosub GetShortened
196
$!
197
$exit
198
$!
199
$GetShortened:
200
$!
201
$ open/read s 'inputfile'
202
$ namecount = 0
203
$ReadLoop:
204
$!
205
$ read/end=endreadloop s regel
206
$!
207
$ shortname = f$element(0,"$",regel) + "$"
208
$ longname  = f$element(1,"$",regel)
209
$!
210
$ symvalue = ""
211
$!
212
$ if shortname .eqs. f$edit(shortname,"upcase")
213
$ then
214
$!  this is an uppercase shortname, add it
215
$   symname  = "u$''longname'"
216
$   symvalue = "''shortname'"
217
$   low$'shortname' == l$'longname'
218
$!
219
$   delete/symbol l$'longname'
220
$!
221
$ else
222
$!  this is an lowercase shortname
223
$   symname  = "l$''longname'"
224
$   symvalue = "''shortname'"
225
$   'symname' = "''symvalue'"
226
$ endif
227
$!
228
$ namecount = namecount + 1
229
$!
230
$ goto ReadLoop
231
$EndReadLoop:
232
$!
233
$close s
234
$return
235
$!
236
$endsubroutine
237
$!
238
$!---------------------------------------------------------------------
239
$!
240
$CompileAndAdd: subroutine
241
$!
242
$ on error then goto End
243
$!
244
$ cc /warn=disable=longextern/lis=objdir:/show=all 'cc_include' 'cc_flags'/object=objdir:'what'.obj srcdir:'what'.c
245
$ library/insert 'objlib' objdir:'what'.obj
246
$!
247
$End:
248
$exit
249
$endsubroutine
250
$!
251
$!---------------------------------------------------------------------
252
$!
253
$BuildTransferVectors: subroutine
254
$!
255
$! Do a balanced read of the uppercase library names
256
$! and the mixed case library names, and build the
257
$! transfer vectors with uppercase entry points
258
$! with an alternative in mixed case.
259
$! For shortened names, use the low$* symbols
260
$! to avoid being fooled by the sort.
261
$!
262
$ thislib = "libssh2.olb"
263
$ library/lis=libu.'thisid'/names libssh2.olb
264
$ library/lis=lib_asisu.'thisid'/names libssh2_asis.olb
265
$!
266
$! case blind sort of all modules in both the uppercase
267
$! as the case sensitive object library.
268
$!
269
$ sort libu.'thisid' lib.'thisid'/spec=sys$input
270
/COLLATING_SEQUENCE=(SEQUENCE= ("A" - "Z","0"-"9","_"), FOLD)
271
$ sort lib_asisu.'thisid' lib_asis.'thisid'/spec=sys$input
272
/COLLATING_SEQUENCE=(SEQUENCE= ("A" - "Z","0"-"9","_"), FOLD)
273
$!
274
$ open/read  in  lib.'thisid'
275
$ open/read  inasis  lib_asis.'thisid'
276
$ open/write uit link_libssh2_vectors_'majorv'_'minorv'_'patchv'.opt
277
$!
278
$ write uit "CASE_SENSITIVE=YES"
279
$ write uit "SYMBOL_VECTOR= ( -"
280
$!
281
$ mode = 0
282
$ uitregel = ""
283
$!
284
$ReadLoop:
285
$!
286
$ read/end=ReadAsis in regel
287
$ReadAsis:
288
$ read/end=EndReadLoop inasis asisregel
289
$!
290
$ regel     = f$edit( regel, "trim,compress" )
291
$ asisregel = f$edit( asisregel, "trim,compress" )
292
$!
293
$ if f$element(0," ",regel) .eqs. "Module" .or. -
294
     f$extract(0,1,regel)   .eqs. "_" .or. -
295
     f$element(1," ",regel) .nes. " " .or. -
296
     regel .eqs. ""
297
$ then
298
$   goto ReadLoop
299
$ endif
300
$!
301
$ if uitregel .nes. "" .and. mode .eq. 1
302
$ then
303
$   write uit "''uitregel'=PROCEDURE, -"
304
$   write uit "''uitasis'/''uitregel'=PROCEDURE, -"
305
$!
306
$   uitregel = ""
307
$   uitasis  = ""
308
$ endif
309
$!
310
$ uitregel = regel
311
$ if f$type( low$'uitregel' ) .nes. ""
312
$ then
313
$   uitasis = low$'uitregel'
314
$   delete/symbol/global low$'uitregel'
315
$ else
316
$   uitasis  = asisregel
317
$ endif
318
$!
319
$ mode = 1
320
$!
321
$ goto ReadLoop
322
$EndreadLoop:
323
$!
324
$! To get the closing brace after the last procedure
325
$! keyword.
326
$!
327
$ if uitregel .nes. ""
328
$ then
329
$   write uit "''uitregel'=PROCEDURE, -"
330
$   write uit "''uitasis'/''uitregel'=PROCEDURE)"
331
$ endif
332
$!
333
$ write uit "CASE_SENSITIVE=NO"
334
$!
335
$ close in
336
$ close inasis
337
$ close uit
338
$!
339
$ delete lib*.'thisid';*
340
$!
341
$exit
342
$endsubroutine
343
$!
344
$!---------------------------------------------------------------------
345
$!
346

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.