Annotation of embedaddon/curl/packages/vms/setup_gnv_curl_build.com, revision 1.1.1.1
1.1 misho 1: $! File: setup_gnv_curl_build.com
2: $!
3: $! $Id$
4: $!
5: $! Set up build environment for building Curl under GNV on VMS.
6: $!
7: $! GNV needs some files moved into the other directories to help with
8: $! the configure script and the build.
9: $!
10: $! Copyright 2009 - 2020, John Malmberg
11: $!
12: $! Permission to use, copy, modify, and/or distribute this software for any
13: $! purpose with or without fee is hereby granted, provided that the above
14: $! copyright notice and this permission notice appear in all copies.
15: $!
16: $! THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
17: $! WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
18: $! MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
19: $! ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
20: $! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
21: $! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
22: $! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
23: $!
24: $! 30-May-2009 J. Malmberg
25: $!
26: $!=======================================================================
27: $!
28: $! Save this so we can get back.
29: $ default_dir = f$environment("default")
30: $!
31: $! Move to where the Configure script is.
32: $ set def [--]
33: $!
34: $! Get the path to where the Configure script is.
35: $ base_dir = f$environment("default")
36: $!
37: $! Allow arguments to be grouped together with comma or separated by spaces
38: $! Do no know if we will need more than 8.
39: $ args = "," + p1 + "," + p2 + "," + p3 + "," + p4 + ","
40: $ args = args + p5 + "," + p6 + "," + p7 + "," + p8 + ","
41: $!
42: $! Provide lower case version to simplify parsing.
43: $ args_lower = f$edit(args, "LOWERCASE,COLLAPSE")
44: $!
45: $ args_len = f$length(args)
46: $ args_lower_len = f$length(args_lower)
47: $!
48: $ tests = 0
49: $ if f$locate(",test", args_lower) .lt. args_lower_len
50: $ then
51: $ tests = 1
52: $ endif
53: $!
54: $ examples = 0
55: $ if f$locate(",exam", args_lower) .lt. args_lower_len
56: $ then
57: $ examples = 1
58: $ endif
59: $!
60: $! We want detailed build logs.
61: $ clist = "/list/show=(expan,includ)"
62: $!
63: $! We want full symbol names in exact case. Need a common
64: $! repository for all directories.
65: $ cnames = "/names=(shortened,as_is)/repository=''base_dir'"
66: $!
67: $! Set the compiler options for GNV CC wrapper to inherit.
68: $ cc :== cc'clist''cnames'/nested_include_directory=none
69: $ cxx :== cxx'clist''cnames'/nested_include_directory=none
70: $ pointer_size = "32"
71: $! Note 64 bit pointers requires all libraries to either have
72: $! 64 bit pointers or have #pragma directives.
73: $! Currently building curl on VMS with 64 bit pointers does not work.
74: $!
75: $! A logical name to make it easier to find some of the hacks.
76: $ define/job gnv_hacks 'base_dir'
77: $!
78: $! A logical name to find the [.packages.vms] directory where we started.
79: $ define/job gnv_packages_vms 'default_dir'
80: $!
81: $! Kerberos headers:
82: $ if f$trnlnm("gssapi") .eqs. ""
83: $ then
84: $ if f$search("sys$sysroot:[kerberos]include.dir") .nes. ""
85: $ then
86: $ define/job gssapi sys$sysroot:[kerberos.include]
87: $ endif
88: $ endif
89: $!
90: $! OpenSSL headers
91: $ if f$trnlnm("openssl") .eqs. ""
92: $ then
93: $ if f$trnlnm("ssl$include") .nes. ""
94: $ then
95: $ define/job openssl ssl$include:
96: $ endif
97: $ endif
98: $!
99: $! C compiler include path.
100: $ define/job decc$system_include prj_root:[.include.curl],-
101: [-.packages.vms],-
102: ssl$include:,gnv$gnu:[usr.include],-
103: gnv$gnu:[usr.include.libz],gnv$gnu:[include],-
104: gnv$zlib_include:,-
105: sys$sysroot:[kerberos.include]
106: $!
107: $! Set up a include list for the compiler to find all the header files
108: $! that they need.
109: $!
110: $ define/job decc$user_include src_root:[.include.curl]
111: $ define ssl_lib sys$library:
112: $!
113: $! Calculate what is needed in the option files
114: $ libzshr_line = ""
115: $ try_shr = "gnv$libzshr''pointer_size'"
116: $ if f$search(try_shr) .nes. "" then libzshr_line = "''try_shr'/share"
117: $ if (libzshr_line .eqs. "")
118: $ then
119: $ try_shr = "sys$share:" + try_shr
120: $ if f$search("''try_shr'.exe") .nes. ""
121: $ then
122: $ libzshr_line = "''try_shr'/share"
123: $ endif
124: $ endif
125: $!
126: $! Kerberos
127: $ gssrtlshr_line = ""
128: $ try_shr = "sys$share:gss$rtl"
129: $ if f$search("''try_shr'.exe") .nes. ""
130: $ then
131: $ gssrtlshr_line = "''try_shr'/share"
132: $ endif
133: $!
134: $! HP OpenSSL
135: $ libcryptoshr_line = ""
136: $ try_shr = "sys$share:ssl$libcrypto_shr''pointer_size'"
137: $ if f$search("''try_shr'.exe") .nes. ""
138: $ then
139: $ libcryptoshr_line = "''try_shr'/share"
140: $ endif
141: $!
142: $ libsslshr_line = ""
143: $ try_shr = "sys$share:ssl$libssl_shr''pointer_size'"
144: $ if f$search("''try_shr'.exe") .nes. ""
145: $ then
146: $ libsslshr_line = "''try_shr'/share"
147: $ endif
148: $!
149: $!
150: $! Copy over the gnv$conftest* files to base directory.
151: $!-----------------------------------------------------
152: $ copy 'default_dir'gnv_conftest.c_first 'base_dir'gnv$conftest.c_first
153: $ create 'base_dir'gnv$conftest.opt
154: $ open/append opt 'base_dir'gnv$conftest.opt
155: $ if libzshr_line .nes. "" then write opt libzshr_line
156: $ if libcryptoshr_line .nes. "" then write opt libcryptoshr_line
157: $ if libsslshr_line .nes. "" then write opt libsslshr_line
158: $ close opt
159: $ purge 'base_dir'gnv$conftest.*
160: $ rename 'base_dir'gnv$conftest.* ;1
161: $!
162: $!
163: $!
164: $! GNV helper files for building the test curl binary.
165: $!-----------------------------------------------
166: $ create [.src]gnv$curl.opt
167: $ open/append opt [.src]gnv$curl.opt
168: $ write opt "gnv_packages_vms:curlmsg.obj"
169: $ if libzshr_line .nes. "" then write opt libzshr_line
170: $ if gssrtlshr_line .nes. "" then write opt gssrtlshr_line
171: $ if libcryptoshr_line .nes. "" then write opt libcryptoshr_line
172: $ if libsslshr_line .nes. "" then write opt libsslshr_line
173: $ close opt
174: $ purge [.src]gnv$*.*
175: $ rename [.src]gnv$*.* ;1
176: $!
177: $!
178: $! Create the libcurl
179: $!------------------------------------------------------
180: $ create 'default_dir'gnv_libcurl_linker.opt
181: $ open/append opt 'default_dir'gnv_libcurl_linker.opt
182: $ if libzshr_line .nes. "" then write opt libzshr_line
183: $ if gssrtlshr_line .nes. "" then write opt gssrtlshr_line
184: $ if libcryptoshr_line .nes. "" then write opt libcryptoshr_line
185: $ if libsslshr_line .nes. "" then write opt libsslshr_line
186: $ close opt
187: $!
188: $!
189: $! Create the template linker file
190: $!---------------------------------
191: $ create 'default_dir'gnv_template_linker.opt
192: $ open/append opt 'default_dir'gnv_template_linker.opt
193: $ write opt "gnv_vms_common:vms_curl_init_unix.obj"
194: $ if libzshr_line .nes. "" then write opt libzshr_line
195: $ if gssrtlshr_line .nes. "" then write opt gssrtlshr_line
196: $ if libcryptoshr_line .nes. "" then write opt libcryptoshr_line
197: $ if libsslshr_line .nes. "" then write opt libsslshr_line
198: $ close opt
199: $!
200: $! Copy over the gnv$*.opt files for [.docs.examples]
201: $!----------------------------------------------------
202: $ if examples .ne. 0
203: $ then
204: $ example_apps = "10-at-a-time,anyauthput,certinfo,cookie_interface,debug"
205: $ example_apps = example_apps + ",fileupload,fopen,ftpget,ftpgetresp"
206: $ example_apps = example_apps + ",ftpupload,getinfo,getinmemory"
207: $ example_apps = example_apps + ",http-post,httpcustomheader,httpput"
208: $ example_apps = example_apps + ",https,multi-app,multi-debugcallback"
209: $ example_apps = example_apps + ",multi-double,multi-post,multi-single"
210: $ example_apps = example_apps + ",persistent,post-callback,postit2"
211: $ example_apps = example_apps + ",sendrecv,sepheaders,simple,simplepost"
212: $ example_apps = example_apps + ",simplessl"
213: $!
214: $ i = 0
215: $example_loop:
216: $ ap_name = f$element(i, ",", example_apps)
217: $ if ap_name .eqs. "," then goto example_loop_end
218: $ if ap_name .eqs. "" then goto example_loop_end
219: $ copy 'default_dir'gnv_template_linker.opt -
220: [.docs.examples]gnv$'ap_name'.opt
221: $ i = i + 1
222: $ goto example_loop
223: $example_loop_end:
224: $!
225: $! clean up the copy.
226: $ purge [.docs.examples]gnv$*.opt
227: $ rename [.docs.examples]gnv$*.opt ;1
228: $ endif
229: $!
230: $!
231: $ if tests .ne. 0
232: $ then
233: $ libtest_apps = "lib500,lib501,lib502,lib503,lib504,lib505,lib506,lib507"
234: $ libtest_apps = libtest_apps + ",lib508,lib510,lib511,lib512,lib513,lib514"
235: $ libtest_apps = libtest_apps + ",lib515,lib516,lib517,lib518,lib519,lib520"
236: $ libtest_apps = libtest_apps + ",lib521,lib523,lib524,lib525,lib526,lib527"
237: $ libtest_apps = libtest_apps + ",lib529,lib530,lib532,lib533,lib536,lib537"
238: $ libtest_apps = libtest_apps + ",lib539,lib540,lib541,lib542,lib543,lib544"
239: $ libtest_apps = libtest_apps + ",lib545,lib547,lib548,lib549,lib552,lib553"
240: $ libtest_apps = libtest_apps + ",lib554,lib555,lib556,lib557,lib558,lib559"
241: $ libtest_apps = libtest_apps + ",lib560,lib562,lib564"
242: $ i = 0
243: $libtest_loop:
244: $ ap_name = f$element(i, ",", libtest_apps)
245: $ if ap_name .eqs. "," then goto libtest_loop_end
246: $ if ap_name .eqs. "" then goto libtest_loop_end
247: $ copy 'default_dir'gnv_template_linker.opt -
248: [.tests.libtest]gnv$'ap_name'.opt
249: $ i = i + 1
250: $ goto libtest_loop
251: $libtest_loop_end:
252: $!
253: $! clean up the copy.
254: $ purge [.tests.libtest]gnv$*.opt
255: $ rename [.tests.libtest]gnv$*.opt ;1
256: $ endif
257: $!
258: $!
259: $! Build the Message file.
260: $!--------------------------
261: $ if f$search("[.packages.vms]curlmsg.obj") .eqs. ""
262: $ then
263: $ message [.packages.vms]curlmsg.msg/object=[.packages.vms]
264: $ endif
265: $ if f$search("gnv$curlmsg.exe") .eqs. ""
266: $ then
267: $ link/share=gnv$curlmsg.exe [.packages.vms]curlmsg.obj
268: $ endif
269: $!
270: $!
271: $!
272: $! Need to build the common init module.
273: $!-------------------------------------------
274: $ init_obj = "[.packages.vms]curl_crtl_init.obj"
275: $ if f$search(init_obj) .eqs. ""
276: $ then
277: $ cc'cflags' 'default_dir'curl_crtl_init.c/obj='init_obj'
278: $ purge 'init_obj'
279: $ rename 'init_obj' ;1
280: $ endif
281: $!
282: $all_exit:
283: $!
284: $ set def 'default_dir'
285: $!
286: $! Verify can break things in bash, especially in Configure scripts.
287: $ set nover
288: $ exit
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>