X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=lib%2Fopenssl%2Futil%2Fpl%2Fnetware.pl;fp=lib%2Fopenssl%2Futil%2Fpl%2Fnetware.pl;h=0000000000000000000000000000000000000000;hb=02ed66432c92de70694700164f986190aad3cbc5;hp=c78bcfc874223a64a9cad0948c129cf26b928911;hpb=89016837dcbf2775cd15dc8cbaba00dc6379f86e;p=cassiopeia.git diff --git a/lib/openssl/util/pl/netware.pl b/lib/openssl/util/pl/netware.pl deleted file mode 100644 index c78bcfc..0000000 --- a/lib/openssl/util/pl/netware.pl +++ /dev/null @@ -1,532 +0,0 @@ -# Metrowerks Codewarrior or gcc / nlmconv for NetWare -# - -$version_header = "crypto/opensslv.h"; -open(IN, "$version_header") or die "Couldn't open $version_header: $!"; -while () { - if (/^#define[\s\t]+OPENSSL_VERSION_NUMBER[\s\t]+0x(\d)(\d{2})(\d{2})(\d{2})/) - { - # die "OpenSSL version detected: $1.$2.$3.$4\n"; - #$nlmvernum = "$1,$2,$3"; - $nlmvernum = "$1,".($2*10+$3).",".($4*1); - #$nlmverstr = "$1.".($2*1).".".($3*1).($4?(chr(96+$4)):""); - break; - } -} -close(IN) or die "Couldn't close $version_header: $!"; - -$readme_file = "README"; -open(IN, $readme_file) or die "Couldn't open $readme_file: $!"; -while () { - if (/^[\s\t]+OpenSSL[\s\t]+(\d)\.(\d{1,2})\.(\d{1,2})([a-z])(.*)/) - { - #$nlmvernum = "$1,$2,$3"; - #$nlmvernum = "$1,".($2*10+$3).",".($4*1); - $nlmverstr = "$1.$2.$3$4$5"; - } - elsif (/^[\s\t]+(Copyright \(c\) \d{4}\-\d{4} The OpenSSL Project)$/) - { - $nlmcpystr = $1; - } - break if ($nlmvernum && $nlmcpystr); -} -close(IN) or die "Couldn't close $readme_file: $!"; - -# Define stacksize here -$nlmstack = "32768"; - -# some default settings here in case we failed to find them in README -$nlmvernum = "1,0,0" if (!$nlmvernum); -$nlmverstr = "OpenSSL" if (!$nlmverstr); -$nlmcpystr = "Copyright (c) 1998-now The OpenSSL Project" if (!$nlmcpystr); - -# die "OpenSSL copyright: $nlmcpystr\nOpenSSL verstring: $nlmverstr\nOpenSSL vernumber: $nlmvernum\n"; - -# The import files and other misc imports needed to link -@misc_imports = ("GetProcessSwitchCount", "RunningProcess", - "GetSuperHighResolutionTimer"); -if ($LIBC) -{ - @import_files = ("libc.imp"); - @module_files = ("libc"); - $libarch = "LIBC"; -} -else -{ - # clib build - @import_files = ("clib.imp"); - push(@import_files, "socklib.imp") if ($BSDSOCK); - @module_files = ("clib"); - # push(@misc_imports, "_rt_modu64%16", "_rt_divu64%16"); - $libarch = "CLIB"; -} -if ($BSDSOCK) -{ - $libarch .= "-BSD"; -} -else -{ - $libarch .= "-WS2"; - push(@import_files, "ws2nlm.imp"); -} - -# The "IMPORTS" environment variable must be set and point to the location -# where import files (*.imp) can be found. -# Example: set IMPORTS=c:\ndk\nwsdk\imports -$import_path = $ENV{"IMPORTS"} || die ("IMPORTS environment variable not set\n"); - - -# The "PRELUDE" environment variable must be set and point to the location -# and name of the prelude source to link with ( nwpre.obj is recommended ). -# Example: set PRELUDE=c:\codewar\novell support\metrowerks support\libraries\runtime\nwpre.obj -$prelude = $ENV{"PRELUDE"} || die ("PRELUDE environment variable not set\n"); - -# The "INCLUDES" environment variable must be set and point to the location -# where import files (*.imp) can be found. -$include_path = $ENV{"INCLUDE"} || die ("INCLUDES environment variable not set\n"); -$include_path =~ s/\\/\//g; -$include_path = join(" -I", split(/;/, $include_path)); - -# check for gcc compiler -$gnuc = $ENV{"GNUC"}; - -#$ssl= "ssleay32"; -#$crypto="libeay32"; - -if ($gnuc) -{ - # C compiler - $cc='gcc'; - # Linker - $link='nlmconv'; - # librarian - $mklib='ar'; - $o='/'; - # cp command - $cp='cp -af'; - # rm command - $rm='rm -f'; - # mv command - $mv='mv -f'; - # mkdir command - $mkdir='gmkdir'; - #$ranlib='ranlib'; -} -else -{ - # C compiler - $cc='mwccnlm'; - # Linker - $link='mwldnlm'; - # librarian - $mklib='mwldnlm'; - # Path separator - $o='\\'; - # cp command - $cp='copy >nul:'; - # rm command - $rm='del /f /q'; -} - -# assembler -if ($nw_nasm) -{ - $asm=(`nasm -v 2>NUL` gt `nasmw -v 2>NUL`?"nasm":"nasmw"); - if ($gnuc) - { - $asm.=" -s -f elf"; - } - else - { - $asm.=" -s -f coff -d __coff__"; - } - $afile="-o "; - $asm.=" -g" if $debug; -} -elsif ($nw_mwasm) -{ - $asm="mwasmnlm -maxerrors 20"; - $afile="-o "; - $asm.=" -g" if $debug; -} -elsif ($nw_masm) -{ -# masm assembly settings - it should be possible to use masm but haven't -# got it working. -# $asm='ml /Cp /coff /c /Cx'; -# $asm.=" /Zi" if $debug; -# $afile='/Fo'; - die("Support for masm assembler not yet functional\n"); -} -else -{ - $asm=""; - $afile=""; -} - - - -if ($gnuc) -{ - # compile flags for GNUC - # additional flags based upon debug | non-debug - if ($debug) - { - $cflags="-g -DDEBUG"; - } - else - { - $cflags="-O2"; - } - $cflags.=" -nostdinc -I$include_path \\ - -fno-builtin -fpcc-struct-return -fno-strict-aliasing \\ - -funsigned-char -Wall -Wno-unused -Wno-uninitialized"; - - # link flags - $lflags="-T"; -} -else -{ - # compile flags for CodeWarrior - # additional flags based upon debug | non-debug - if ($debug) - { - $cflags="-opt off -g -sym internal -DDEBUG"; - } - else - { - # CodeWarrior compiler has a problem with optimizations for floating - # points - no optimizations until further investigation - # $cflags="-opt all"; - } - - # NOTES: Several c files in the crypto subdirectory include headers from - # their local directories. Metrowerks wouldn't find these h files - # without adding individual include directives as compile flags - # or modifying the c files. Instead of adding individual include - # paths for each subdirectory a recursive include directive - # is used ( -ir crypto ). - # - # A similar issue exists for the engines and apps subdirectories. - # - # Turned off the "possible" warnings ( -w nopossible ). Metrowerks - # complained a lot about various stuff. May want to turn back - # on for further development. - $cflags.=" -nostdinc -ir crypto -ir engines -ir apps -I$include_path \\ - -msgstyle gcc -align 4 -processor pentium -char unsigned \\ - -w on -w nolargeargs -w nopossible -w nounusedarg -w nounusedexpr \\ - -w noimplicitconv -relax_pointers -nosyspath -maxerrors 20"; - - # link flags - $lflags="-msgstyle gcc -zerobss -nostdlib -sym internal -commandfile"; -} - -# common defines -$cflags.=" -DL_ENDIAN -DOPENSSL_SYSNAME_NETWARE -U_WIN32"; - -# If LibC build add in NKS_LIBC define and set the entry/exit -# routines - The default entry/exit routines are for CLib and don't exist -# in LibC -if ($LIBC) -{ - $cflags.=" -DNETWARE_LIBC"; - $nlmstart = "_LibCPrelude"; - $nlmexit = "_LibCPostlude"; - @nlm_flags = ("pseudopreemption", "flag_on 64"); -} -else -{ - $cflags.=" -DNETWARE_CLIB"; - $nlmstart = "_Prelude"; - $nlmexit = "_Stop"; -} - -# If BSD Socket support is requested, set a define for the compiler -if ($BSDSOCK) -{ - $cflags.=" -DNETWARE_BSDSOCK"; - if (!$LIBC) - { - $cflags.=" -DNETDB_USE_INTERNET"; - } -} - - -# linking stuff -# for the output directories use the mk1mf.pl values with "_nw" appended -if ($shlib) -{ - if ($LIBC) - { - $out_def.="_nw_libc_nlm"; - $tmp_def.="_nw_libc_nlm"; - $inc_def.="_nw_libc_nlm"; - } - else # NETWARE_CLIB - { - $out_def.="_nw_clib_nlm"; - $tmp_def.="_nw_clib_nlm"; - $inc_def.="_nw_clib_nlm"; - } -} -else -{ - if ($gnuc) # GNUC Tools - { - $libp=".a"; - $shlibp=".a"; - $lib_flags="-cr"; - } - else # CodeWarrior - { - $libp=".lib"; - $shlibp=".lib"; - $lib_flags="-nodefaults -type library -o"; - } - if ($LIBC) - { - $out_def.="_nw_libc"; - $tmp_def.="_nw_libc"; - $inc_def.="_nw_libc"; - } - else # NETWARE_CLIB - { - $out_def.="_nw_clib"; - $tmp_def.="_nw_clib"; - $inc_def.="_nw_clib"; - } -} - -# used by mk1mf.pl -$obj='.o'; -$ofile='-o '; -$efile=''; -$exep='.nlm'; -$ex_libs=''; - -if (!$no_asm) -{ - $bn_asm_obj="\$(OBJ_D)${o}bn-nw${obj}"; - $bn_asm_src="crypto${o}bn${o}asm${o}bn-nw.asm"; - $bnco_asm_obj="\$(OBJ_D)${o}co-nw${obj}"; - $bnco_asm_src="crypto${o}bn${o}asm${o}co-nw.asm"; - $aes_asm_obj="\$(OBJ_D)${o}a-nw${obj}"; - $aes_asm_src="crypto${o}aes${o}asm${o}a-nw.asm"; - $des_enc_obj="\$(OBJ_D)${o}d-nw${obj} \$(OBJ_D)${o}y-nw${obj}"; - $des_enc_src="crypto${o}des${o}asm${o}d-nw.asm crypto${o}des${o}asm${o}y-nw.asm"; - $bf_enc_obj="\$(OBJ_D)${o}b-nw${obj}"; - $bf_enc_src="crypto${o}bf${o}asm${o}b-nw.asm"; - $cast_enc_obj="\$(OBJ_D)${o}c-nw${obj}"; - $cast_enc_src="crypto${o}cast${o}asm${o}c-nw.asm"; - $rc4_enc_obj="\$(OBJ_D)${o}r4-nw${obj}"; - $rc4_enc_src="crypto${o}rc4${o}asm${o}r4-nw.asm"; - $rc5_enc_obj="\$(OBJ_D)${o}r5-nw${obj}"; - $rc5_enc_src="crypto${o}rc5${o}asm${o}r5-nw.asm"; - $md5_asm_obj="\$(OBJ_D)${o}m5-nw${obj}"; - $md5_asm_src="crypto${o}md5${o}asm${o}m5-nw.asm"; - $sha1_asm_obj="\$(OBJ_D)${o}s1-nw${obj} \$(OBJ_D)${o}sha256-nw${obj} \$(OBJ_D)${o}sha512-nw${obj}"; - $sha1_asm_src="crypto${o}sha${o}asm${o}s1-nw.asm crypto${o}sha${o}asm${o}sha256-nw.asm crypto${o}sha${o}asm${o}sha512-nw.asm"; - $rmd160_asm_obj="\$(OBJ_D)${o}rm-nw${obj}"; - $rmd160_asm_src="crypto${o}ripemd${o}asm${o}rm-nw.asm"; - $whirlpool_asm_obj="\$(OBJ_D)${o}wp-nw${obj}"; - $whirlpool_asm_src="crypto${o}whrlpool${o}asm${o}wp-nw.asm"; - $cpuid_asm_obj="\$(OBJ_D)${o}x86cpuid-nw${obj}"; - $cpuid_asm_src="crypto${o}x86cpuid-nw.asm"; - $cflags.=" -DOPENSSL_CPUID_OBJ -DBN_ASM -DOPENSSL_BN_ASM_PART_WORDS -DMD5_ASM -DWHIRLPOOL_ASM"; - $cflags.=" -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM"; - $cflags.=" -DAES_ASM -DRMD160_ASM"; -} -else -{ - $bn_asm_obj=''; - $bn_asm_src=''; - $bnco_asm_obj=''; - $bnco_asm_src=''; - $aes_asm_obj=''; - $aes_asm_src=''; - $des_enc_obj=''; - $des_enc_src=''; - $bf_enc_obj=''; - $bf_enc_src=''; - $cast_enc_obj=''; - $cast_enc_src=''; - $rc4_enc_obj=''; - $rc4_enc_src=''; - $rc5_enc_obj=''; - $rc5_enc_src=''; - $md5_asm_obj=''; - $md5_asm_src=''; - $sha1_asm_obj=''; - $sha1_asm_src=''; - $rmd160_asm_obj=''; - $rmd160_asm_src=''; - $whirlpool_asm_obj=''; - $whirlpool_asm_src=''; - $cpuid_asm_obj=''; - $cpuid_asm_src=''; -} - -# create the *.def linker command files in \openssl\netware\ directory -sub do_def_file -{ - # strip off the leading path - my($target) = bname(shift); - my($i); - - if ($target =~ /(.*).nlm/) - { - $target = $1; - } - - # special case for openssl - the mk1mf.pl defines E_EXE = openssl - if ($target =~ /E_EXE/) - { - $target =~ s/\$\(E_EXE\)/openssl/; - } - - # Note: originally tried to use full path ( \openssl\netware\$target.def ) - # Metrowerks linker choked on this with an assertion failure. bug??? - # - my($def_file) = "netware${o}$target.def"; - - open(DEF_OUT, ">$def_file") || die("unable to open file $def_file\n"); - - print( DEF_OUT "# command file generated by netware.pl for NLM target.\n" ); - print( DEF_OUT "# do not edit this file - all your changes will be lost!!\n" ); - print( DEF_OUT "#\n"); - print( DEF_OUT "DESCRIPTION \"$target ($libarch) - OpenSSL $nlmverstr\"\n"); - print( DEF_OUT "COPYRIGHT \"$nlmcpystr\"\n"); - print( DEF_OUT "VERSION $nlmvernum\n"); - print( DEF_OUT "STACK $nlmstack\n"); - print( DEF_OUT "START $nlmstart\n"); - print( DEF_OUT "EXIT $nlmexit\n"); - - # special case for openssl - if ($target eq "openssl") - { - print( DEF_OUT "SCREENNAME \"OpenSSL $nlmverstr\"\n"); - } - else - { - print( DEF_OUT "SCREENNAME \"DEFAULT\"\n"); - } - - foreach $i (@misc_imports) - { - print( DEF_OUT "IMPORT $i\n"); - } - - foreach $i (@import_files) - { - print( DEF_OUT "IMPORT \@$import_path${o}$i\n"); - } - - foreach $i (@module_files) - { - print( DEF_OUT "MODULE $i\n"); - } - - foreach $i (@nlm_flags) - { - print( DEF_OUT "$i\n"); - } - - if ($gnuc) - { - if ($target =~ /openssl/) - { - print( DEF_OUT "INPUT ${tmp_def}${o}openssl${obj}\n"); - print( DEF_OUT "INPUT ${tmp_def}${o}openssl${libp}\n"); - } - else - { - print( DEF_OUT "INPUT ${tmp_def}${o}${target}${obj}\n"); - } - print( DEF_OUT "INPUT $prelude\n"); - print( DEF_OUT "INPUT ${out_def}${o}${ssl}${libp} ${out_def}${o}${crypto}${libp}\n"); - print( DEF_OUT "OUTPUT $target.nlm\n"); - } - - close(DEF_OUT); - return($def_file); -} - -sub do_lib_rule -{ - my($objs,$target,$name,$shlib)=@_; - my($ret); - - $ret.="$target: $objs\n"; - if (!$shlib) - { - $ret.="\t\@echo Building Lib: $name\n"; - $ret.="\t\$(MKLIB) $lib_flags $target $objs\n"; - $ret.="\t\@echo .\n" - } - else - { - die( "Building as NLM not currently supported!" ); - } - - $ret.="\n"; - return($ret); -} - -sub do_link_rule -{ - my($target,$files,$dep_libs,$libs)=@_; - my($ret); - my($def_file) = do_def_file($target); - - $ret.="$target: $files $dep_libs\n"; - - # NOTE: When building the test nlms no screen name is given - # which causes the console screen to be used. By using the console - # screen there is no "" message which - # requires user interaction. The test script ( do_tests.pl ) needs - # to be able to run the tests without requiring user interaction. - # - # However, the sample program "openssl.nlm" is used by the tests and is - # a interactive sample so a screen is desired when not be run by the - # tests. To solve the problem, two versions of the program are built: - # openssl2 - no screen used by tests - # openssl - default screen - use for normal interactive modes - # - - # special case for openssl - the mk1mf.pl defines E_EXE = openssl - if ($target =~ /E_EXE/) - { - my($target2) = $target; - - $target2 =~ s/\(E_EXE\)/\(E_EXE\)2/; - - # openssl2 - my($def_file2) = do_def_file($target2); - - if ($gnuc) - { - $ret.="\t\$(MKLIB) $lib_flags \$(TMP_D)${o}\$(E_EXE).a \$(filter-out \$(TMP_D)${o}\$(E_EXE)${obj},$files)\n"; - $ret.="\t\$(LINK) \$(LFLAGS) $def_file2\n"; - $ret.="\t\@$mv \$(E_EXE)2.nlm \$(TEST_D)\n"; - } - else - { - $ret.="\t\$(LINK) \$(LFLAGS) $def_file2 $files \"$prelude\" $libs -o $target2\n"; - } - } - if ($gnuc) - { - $ret.="\t\$(LINK) \$(LFLAGS) $def_file\n"; - $ret.="\t\@$mv \$(\@F) \$(TEST_D)\n"; - } - else - { - $ret.="\t\$(LINK) \$(LFLAGS) $def_file $files \"$prelude\" $libs -o $target\n"; - } - - $ret.="\n"; - return($ret); - -} - -1;