⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 netware.pl

📁 OpenSSL 0.9.8k 最新版OpenSSL
💻 PL
字号:
# Metrowerks Codewarrior or gcc / nlmconv for NetWare#$version_header = "crypto/opensslv.h";open(IN, "$version_header") or die "Couldn't open $version_header: $!";while (<IN>) {  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 (<IN>) {  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';}# assemblerif ($nw_nasm){   if ($gnuc)   {      $asm="nasmw -s -f elf";   }   else   {      $asm="nasmw -s -f 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 LibCif ($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 compilerif ($BSDSOCK){   $cflags.=" -DNETWARE_BSDSOCK";   if (!$LIBC)   {      $cflags.=" -DNETDB_USE_INTERNET";   }}# linking stuff# for the output directories use the mk1mf.pl values with "_nw" appendedif ($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}";   $sha1_asm_src="crypto${o}sha${o}asm${o}s1-nw.asm";   $rmd160_asm_obj="\$(OBJ_D)${o}rm-nw${obj}";   $rmd160_asm_src="crypto${o}ripemd${o}asm${o}rm-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 -DSHA1_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='';   $cpuid_asm_obj='';   $cpuid_asm_src='';}# create the *.def linker command files in \openssl\netware\ directorysub 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 "<press any key to continue>" 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;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -