diff options
author | simon <simon@FreeBSD.org> | 2008-08-23 10:51:00 +0000 |
---|---|---|
committer | simon <simon@FreeBSD.org> | 2008-08-23 10:51:00 +0000 |
commit | 64fcbc70db16b1c94d818662746bb0e9c4fdb705 (patch) | |
tree | 596c39f00d5968b1519e8cd7f0546412b14c20f0 /util/pl | |
parent | 8f21bfc1756ff75fb4caf97e5c9612a4d7106243 (diff) | |
download | FreeBSD-src-64fcbc70db16b1c94d818662746bb0e9c4fdb705.zip FreeBSD-src-64fcbc70db16b1c94d818662746bb0e9c4fdb705.tar.gz |
Flatten OpenSSL vendor tree.
Diffstat (limited to 'util/pl')
-rw-r--r-- | util/pl/BC-16.pl | 151 | ||||
-rw-r--r-- | util/pl/BC-32.pl | 139 | ||||
-rw-r--r-- | util/pl/Mingw32.pl | 106 | ||||
-rw-r--r-- | util/pl/OS2-EMX.pl | 120 | ||||
-rw-r--r-- | util/pl/VC-16.pl | 177 | ||||
-rw-r--r-- | util/pl/VC-32.pl | 298 | ||||
-rw-r--r-- | util/pl/VC-CE.pl | 116 | ||||
-rw-r--r-- | util/pl/linux.pl | 104 | ||||
-rw-r--r-- | util/pl/netware.pl | 341 | ||||
-rw-r--r-- | util/pl/ultrix.pl | 38 | ||||
-rw-r--r-- | util/pl/unix.pl | 96 |
11 files changed, 1686 insertions, 0 deletions
diff --git a/util/pl/BC-16.pl b/util/pl/BC-16.pl new file mode 100644 index 0000000..8030653 --- /dev/null +++ b/util/pl/BC-16.pl @@ -0,0 +1,151 @@ +#!/usr/local/bin/perl +# VCw16lib.pl - the file for Visual C++ 1.52b for windows, static libraries +# + +$o='\\'; +$cp='copy'; +$rm='del'; + +# C compiler stuff +$cc='bcc'; + +if ($debug) + { $op="-v "; } +else { $op="-O "; } + +$cflags="-d -ml $op -DL_ENDIAN"; +# I add the stack opt +$base_lflags="/c /C"; +$lflags="$base_lflags"; + +if ($win16) + { + $shlib=1; + $cflags.=" -DOPENSSL_SYSNAME_WIN16"; + $app_cflag="-W"; + $lib_cflag="-WD"; + $lflags.="/Twe"; + } +else + { + $cflags.=" -DOENSSL_SYSNAME_MSDOS"; + $lflags.=" /Tde"; + } + +if ($shlib) + { + $mlflags=" /Twd $base_lflags"; # stack if defined in .def file + $libs="libw ldllcew"; + $no_asm=1; + } +else + { $mlflags=''; } + +$obj='.obj'; +$ofile="-o"; + +# EXE linking stuff +$link="tlink"; +$efile=""; +$exep='.exe'; +$ex_libs="CL"; +$ex_libs.=$no_sock?"":" winsock.lib"; + +$app_ex_obj="C0L.obj "; +$shlib_ex_obj="" if ($shlib); + +# static library stuff +$mklib='tlib'; +$ranlib='echo no ranlib'; +$plib=""; +$libp=".lib"; +$shlibp=($shlib)?".dll":".lib"; +$lfile=''; + +$asm='bcc -c -B -Tml'; +$afile='/o'; +if ($no_asm || $fips) + { + $bn_asm_obj=''; + $bn_asm_src=''; + } +elsif ($asmbits == 32) + { + $bn_asm_obj='crypto\bn\asm\x86w32.obj'; + $bn_asm_src='crypto\bn\asm\x86w32.asm'; + } +else + { + $bn_asm_obj='crypto\bn\asm\x86w16.obj'; + $bn_asm_src='crypto\bn\asm\x86w16.asm'; + } + +sub do_lib_rule + { + local($target,$name,$shlib)=@_; + local($ret,$Name); + + $taget =~ s/\//$o/g if $o ne '/'; + ($Name=$name) =~ tr/a-z/A-Z/; + + $ret.="$target: \$(${Name}OBJ)\n"; + $ret.="\t\$(RM) \$(O_$Name)\n"; + + # Due to a pathetic line length limit, I unwrap the args. + local($lib_names)=""; + local($dll_names)=""; + foreach $_ (sort split(/\s+/,$Vars{"${Name}OBJ"})) + { + $lib_names.=" +$_ &\n"; + $dll_names.=" $_\n"; + } + + if (!$shlib) + { + $ret.="\t\$(MKLIB) $target & <<|\n$lib_names\n,\n|\n"; + } + else + { + local($ex)=($Name eq "SSL")?' $(L_CRYPTO) winsock':""; + $ret.="\t\$(LINK) \$(MLFLAGS) @&&|\n"; + $ret.=$dll_names; + $ret.="\n $target\n\n $ex $libs\nms$o${name}16.def;\n|\n"; + ($out_lib=$target) =~ s/O_/L_/; + $ret.="\timplib /nowep $out_lib $target\n\n"; + } + $ret.="\n"; + return($ret); + } + +sub do_link_rule + { + local($target,$files,$dep_libs,$libs,$sha1file,$openssl)=@_; + local($ret,$f,$_,@f); + + $file =~ s/\//$o/g if $o ne '/'; + $n=&bname($target); + $ret.="$target: $files $dep_libs\n"; + $ret.=" \$(LINK) @&&|"; + + # Due to a pathetic line length limit, I have to unwrap the args. + $ret.=" \$(LFLAGS) "; + if ($files =~ /\(([^)]*)\)$/) + { + $ret.=" \$(APP_EX_OBJ)"; + foreach $_ (sort split(/\s+/,$Vars{$1})) + { $ret.="\n $r $_ +"; } + chop($ret); + $ret.="\n"; + } + else + { $ret.="\n $r \$(APP_EX_OBJ) $files\n"; } + $ret.=" $target\n\n $libs\n\n|\n"; + if (defined $sha1file) + { + $ret.=" $openssl sha1 -hmac etaonrishdlcupfm -binary $target > $sha1file"; + } + $ret.="\n"; + return($ret); + } + +1; diff --git a/util/pl/BC-32.pl b/util/pl/BC-32.pl new file mode 100644 index 0000000..99b8c058 --- /dev/null +++ b/util/pl/BC-32.pl @@ -0,0 +1,139 @@ +#!/usr/local/bin/perl +# Borland C++ builder 3 and 4 -- Janez Jere <jj@void.si> +# + +$ssl= "ssleay32"; +$crypto="libeay32"; + +$o='\\'; +$cp='copy'; +$rm='del'; + +# C compiler stuff +$cc='bcc32'; +$lflags="-ap -Tpe -x -Gn "; +$mlflags=''; + +$out_def="out32"; +$tmp_def="tmp32"; +$inc_def="inc32"; +#enable max error messages, disable most common warnings +$cflags="-DWIN32_LEAN_AND_MEAN -q -w-ccc -w-rch -w-pia -w-aus -w-par -w-inl -c -tWC -tWM -DOPENSSL_SYSNAME_WIN32 -DL_ENDIAN -DDSO_WIN32 -D_stricmp=stricmp -D_strnicmp=strnicmp "; +if ($debug) +{ + $cflags.="-Od -y -v -vi- -D_DEBUG"; + $mlflags.=' '; +} +else +{ + $cflags.="-O2 -ff -fp"; +} + +$obj='.obj'; +$ofile="-o"; + +# EXE linking stuff +$link="ilink32"; +$efile=""; +$exep='.exe'; +if ($no_sock) + { $ex_libs=""; } +else { $ex_libs="cw32mt.lib import32.lib"; } + +# static library stuff +$mklib='tlib /P64'; +$ranlib=''; +$plib=""; +$libp=".lib"; +$shlibp=($shlib)?".dll":".lib"; +$lfile=''; + +$shlib_ex_obj=""; +$app_ex_obj="c0x32.obj"; + +$asm='nasmw -f obj -d__omf__'; +$asm.=" /Zi" if $debug; +$afile='-o'; + +$bn_mulw_obj=''; +$bn_mulw_src=''; +$des_enc_obj=''; +$des_enc_src=''; +$bf_enc_obj=''; +$bf_enc_src=''; + +if (!$no_asm) + { + $bn_mulw_obj='crypto\bn\asm\bn_win32.obj'; + $bn_mulw_src='crypto\bn\asm\bn_win32.asm'; + $des_enc_obj='crypto\des\asm\d_win32.obj crypto\des\asm\y_win32.obj'; + $des_enc_src='crypto\des\asm\d_win32.asm crypto\des\asm\y_win32.asm'; + $bf_enc_obj='crypto\bf\asm\b_win32.obj'; + $bf_enc_src='crypto\bf\asm\b_win32.asm'; + $cast_enc_obj='crypto\cast\asm\c_win32.obj'; + $cast_enc_src='crypto\cast\asm\c_win32.asm'; + $rc4_enc_obj='crypto\rc4\asm\r4_win32.obj'; + $rc4_enc_src='crypto\rc4\asm\r4_win32.asm'; + $rc5_enc_obj='crypto\rc5\asm\r5_win32.obj'; + $rc5_enc_src='crypto\rc5\asm\r5_win32.asm'; + $md5_asm_obj='crypto\md5\asm\m5_win32.obj'; + $md5_asm_src='crypto\md5\asm\m5_win32.asm'; + $sha1_asm_obj='crypto\sha\asm\s1_win32.obj'; + $sha1_asm_src='crypto\sha\asm\s1_win32.asm'; + $rmd160_asm_obj='crypto\ripemd\asm\rm_win32.obj'; + $rmd160_asm_src='crypto\ripemd\asm\rm_win32.asm'; + $cflags.=" -DBN_ASM -DMD5_ASM -DSHA1_ASM -DRMD160_ASM"; + } + +if ($shlib) + { + $mlflags.=" $lflags /dll"; +# $cflags =~ s| /MD| /MT|; + $lib_cflag=" /GD -D_WINDLL -D_DLL"; + $out_def="out32dll"; + $tmp_def="tmp32dll"; + } + +sub do_lib_rule + { + local($objs,$target,$name,$shlib)=@_; + local($ret,$Name); + + $taget =~ s/\//$o/g if $o ne '/'; + ($Name=$name) =~ tr/a-z/A-Z/; + +# $target="\$(LIB_D)$o$target"; + $ret.="$target: $objs\n"; + if (!$shlib) + { + $ret.=<<___; + -\$(RM) $lfile$target + \$(MKLIB) $lfile$target \@&&! ++\$(**: = &^ ++) +! +___ + } + else + { + local($ex)=($target =~ /O_SSL/)?' $(L_CRYPTO)':''; + $ex.=' wsock32.lib gdi32.lib'; + $ret.="\t\$(LINK) \$(MLFLAGS) $efile$target /def:ms/${Name}.def @<<\n \$(SHLIB_EX_OBJ) $objs $ex\n<<\n"; + } + $ret.="\n"; + return($ret); + } + +sub do_link_rule + { + local($target,$files,$dep_libs,$libs)=@_; + local($ret,$_); + + $file =~ s/\//$o/g if $o ne '/'; + $n=&bname($targer); + $ret.="$target: $files $dep_libs\n"; + $ret.="\t\$(LINK) \$(LFLAGS) $files \$(APP_EX_OBJ), $target,, $libs\n\n"; + return($ret); + } + +1; diff --git a/util/pl/Mingw32.pl b/util/pl/Mingw32.pl new file mode 100644 index 0000000..8f0483f --- /dev/null +++ b/util/pl/Mingw32.pl @@ -0,0 +1,106 @@ +#!/usr/local/bin/perl +# +# Mingw32.pl -- Mingw +# + +$o='/'; +$cp='cp'; +$rm='rm -f'; +$mkdir='gmkdir'; + +$o='\\'; +$cp='copy'; +$rm='del'; +$mkdir='mkdir'; + +# C compiler stuff + +$cc='gcc'; +if ($debug) + { $cflags="-DL_ENDIAN -DDSO_WIN32 -g2 -ggdb"; } +else + { $cflags="-DL_ENDIAN -DDSO_WIN32 -fomit-frame-pointer -O3 -march=i486 -Wall"; } + +if ($gaswin and !$no_asm) + { + $bn_asm_obj='$(OBJ_D)\bn-win32.o'; + $bn_asm_src='crypto/bn/asm/bn-win32.s'; + $bnco_asm_obj='$(OBJ_D)\co-win32.o'; + $bnco_asm_src='crypto/bn/asm/co-win32.s'; + $des_enc_obj='$(OBJ_D)\d-win32.o $(OBJ_D)\y-win32.o'; + $des_enc_src='crypto/des/asm/d-win32.s crypto/des/asm/y-win32.s'; + $bf_enc_obj='$(OBJ_D)\b-win32.o'; + $bf_enc_src='crypto/bf/asm/b-win32.s'; +# $cast_enc_obj='$(OBJ_D)\c-win32.o'; +# $cast_enc_src='crypto/cast/asm/c-win32.s'; + $rc4_enc_obj='$(OBJ_D)\r4-win32.o'; + $rc4_enc_src='crypto/rc4/asm/r4-win32.s'; + $rc5_enc_obj='$(OBJ_D)\r5-win32.o'; + $rc5_enc_src='crypto/rc5/asm/r5-win32.s'; + $md5_asm_obj='$(OBJ_D)\m5-win32.o'; + $md5_asm_src='crypto/md5/asm/m5-win32.s'; + $rmd160_asm_obj='$(OBJ_D)\rm-win32.o'; + $rmd160_asm_src='crypto/ripemd/asm/rm-win32.s'; + $sha1_asm_obj='$(OBJ_D)\s1-win32.o'; + $sha1_asm_src='crypto/sha/asm/s1-win32.s'; + $cpuid_asm_obj='$(OBJ_D)\cpu-win32.o'; + $cpuid_asm_src='crypto/cpu-win32.s'; + $cflags.=" -DBN_ASM -DMD5_ASM -DSHA1_ASM -DOPENSSL_BN_ASM_PART_WORDS"; + } + + +$obj='.o'; +$ofile='-o '; + +# EXE linking stuff +$link='${CC}'; +$lflags='${CFLAGS}'; +$efile='-o '; +$exep=''; +$ex_libs="-lwsock32 -lgdi32"; + +# static library stuff +$mklib='ar r'; +$mlflags=''; +$ranlib='ranlib'; +$plib='lib'; +$libp=".a"; +$shlibp=".a"; +$lfile=''; + +$asm='as'; +$afile='-o '; +#$bn_asm_obj=""; +#$bn_asm_src=""; +#$des_enc_obj=""; +#$des_enc_src=""; +#$bf_enc_obj=""; +#$bf_enc_src=""; + +sub do_lib_rule + { + local($obj,$target,$name,$shlib)=@_; + local($ret,$_,$Name); + + $target =~ s/\//$o/g if $o ne '/'; + $target="$target"; + ($Name=$name) =~ tr/a-z/A-Z/; + + $ret.="$target: \$(${Name}OBJ)\n"; + $ret.="\tif exist $target \$(RM) $target\n"; + $ret.="\t\$(MKLIB) $target \$(${Name}OBJ)\n"; + $ret.="\t\$(RANLIB) $target\n\n"; + } + +sub do_link_rule + { + local($target,$files,$dep_libs,$libs)=@_; + local($ret,$_); + + $file =~ s/\//$o/g if $o ne '/'; + $n=&bname($target); + $ret.="$target: $files $dep_libs\n"; + $ret.="\t\$(LINK) ${efile}$target \$(LFLAGS) $files $libs\n\n"; + return($ret); + } +1; diff --git a/util/pl/OS2-EMX.pl b/util/pl/OS2-EMX.pl new file mode 100644 index 0000000..28cd116 --- /dev/null +++ b/util/pl/OS2-EMX.pl @@ -0,0 +1,120 @@ +#!/usr/local/bin/perl +# +# OS2-EMX.pl - for EMX GCC on OS/2 +# + +$o='/'; +$cp='cp'; +$rm='rm -f'; + +$preamble = "SHELL=sh\n"; + +# C compiler stuff + +$cc='gcc'; +$cflags="-DL_ENDIAN -O3 -fomit-frame-pointer -m486 -Zmtd -Wall "; +$cflags.="-Zomf " if $shlib; +$shl_cflag="-Zdll"; + +if ($debug) { + $cflags.="-g "; +} + +$obj=$shlib ? '.obj' : '.o'; +$ofile='-o '; + +# EXE linking stuff +$link='${CC}'; +$lflags='${CFLAGS} -Zbsd-signals -s'; +$efile='-o '; +$exep='.exe'; +$ex_libs="-lsocket"; + +# static library stuff +$mklib='ar r'; +$mlflags=''; +$ranlib="ar s"; +$plib=''; +$libp=$shlib ? ".lib" : ".a"; +$shlibp=$shlib ? ".dll" : ".a"; +$lfile=''; + +$asm=$shlib ? 'as -Zomf' : 'as'; +$afile='-o '; +$bn_asm_obj=""; +$bn_asm_src=""; +$des_enc_obj=""; +$des_enc_src=""; +$bf_enc_obj=""; +$bf_enc_src=""; + +if (!$no_asm) + { + $bn_asm_obj="crypto/bn/asm/bn-os2$obj crypto/bn/asm/co-os2$obj"; + $bn_asm_src="crypto/bn/asm/bn-os2.asm crypto/bn/asm/co-os2.asm"; + $des_enc_obj="crypto/des/asm/d-os2$obj crypto/des/asm/y-os2$obj"; + $des_enc_src="crypto/des/asm/d-os2.asm crypto/des/asm/y-os2.asm"; + $bf_enc_obj="crypto/bf/asm/b-os2$obj"; + $bf_enc_src="crypto/bf/asm/b-os2.asm"; + $cast_enc_obj="crypto/cast/asm/c-os2$obj"; + $cast_enc_src="crypto/cast/asm/c-os2.asm"; + $rc4_enc_obj="crypto/rc4/asm/r4-os2$obj"; + $rc4_enc_src="crypto/rc4/asm/r4-os2.asm"; + $rc5_enc_obj="crypto/rc5/asm/r5-os2$obj"; + $rc5_enc_src="crypto/rc5/asm/r5-os2.asm"; + $md5_asm_obj="crypto/md5/asm/m5-os2$obj"; + $md5_asm_src="crypto/md5/asm/m5-os2.asm"; + $sha1_asm_obj="crypto/sha/asm/s1-os2$obj"; + $sha1_asm_src="crypto/sha/asm/s1-os2.asm"; + $rmd160_asm_obj="crypto/ripemd/asm/rm-os2$obj"; + $rmd160_asm_src="crypto/ripemd/asm/rm-os2.asm"; + $cflags.=" -DBN_ASM -DMD5_ASM -DSHA1_ASM -DOPENSSL_BN_ASM_PART_WORDS"; + } + +if ($shlib) + { + $mlflags.=" $lflags -Zdll"; + $lib_cflag=" -D_DLL"; + $out_def="out_dll"; + $tmp_def="tmp_dll"; + } + +sub do_lib_rule + { + local($obj,$target,$name,$shlib)=@_; + local($ret,$_,$Name); + + $target =~ s/\//$o/g if $o ne '/'; + $target="$target"; + ($Name=$name) =~ tr/a-z/A-Z/; + + $ret.="$target: \$(${Name}OBJ)\n"; + if (!$shlib) + { + $ret.="\t\$(RM) $target\n"; + $ret.="\t\$(MKLIB) $target \$(${Name}OBJ)\n"; + $ret.="\t\$(RANLIB) $target\n\n"; + } + else + { + local($ex)=($target =~ /O_SSL/)?' $(L_CRYPTO)':''; + $ex.=' -lsocket'; + $ret.="\t\$(LINK) \$(SHLIB_CFLAGS) \$(MLFLAGS) $efile$target \$(SHLIB_EX_OBJ) \$(${Name}OBJ) $ex os2/${Name}.def\n"; + $ret.="\temximp -o $out_def/$name.a os2/${Name}.def\n"; + $ret.="\temximp -o $out_def/$name.lib os2/${Name}.def\n\n"; + } + } + +sub do_link_rule + { + local($target,$files,$dep_libs,$libs)=@_; + local($ret,$_); + + $file =~ s/\//$o/g if $o ne '/'; + $n=&bname($target); + $ret.="$target: $files $dep_libs\n"; + $ret.="\t\$(LINK) ${efile}$target \$(CFLAG) \$(LFLAGS) $files $libs\n\n"; + return($ret); + } + +1; diff --git a/util/pl/VC-16.pl b/util/pl/VC-16.pl new file mode 100644 index 0000000..564ba3f --- /dev/null +++ b/util/pl/VC-16.pl @@ -0,0 +1,177 @@ +#!/usr/local/bin/perl +# VCw16lib.pl - the file for Visual C++ 1.52b for windows, static libraries +# + +$ssl= "ssleay16"; +$crypto="libeay16"; + +$o='\\'; +$cp='copy'; +$rm='del'; + +# C compiler stuff +$cc='cl'; + +$out_def="out16"; +$tmp_def="tmp16"; +$inc_def="inc16"; + +if ($debug) + { + $op="/Od /Zi /Zd"; + $base_lflags="/CO"; + } +else { + $op="/G2 /f- /Ocgnotb2"; + } +$base_lflags.=" /FARCALL /NOLOGO /NOD /SEG:1024 /ONERROR:NOEXE /NOE /PACKC:60000"; +if ($win16) { $base_lflags.=" /PACKD:60000"; } + +$cflags="/ALw /Gx- /Gt256 /Gf $op /W3 /WX -DL_ENDIAN /nologo"; +# I add the stack opt +$lflags="$base_lflags /STACK:20000"; + +if ($win16) + { + $cflags.=" -DOPENSSL_SYSNAME_WIN16"; + $app_cflag="/Gw /FPi87"; + $lib_cflag="/Gw"; + $lib_cflag.=" -D_WINDLL -D_DLL" if $shlib; + $lib_cflag.=" -DWIN16TTY" if !$shlib; + $lflags.=" /ALIGN:256"; + $ex_libs.="oldnames llibcewq libw"; + } +else + { + $no_sock=1; + $cflags.=" -DMSDOS"; + $lflags.=" /EXEPACK"; + $ex_libs.="oldnames.lib llibce.lib"; + } + +if ($shlib) + { + $mlflags="$base_lflags"; + $libs="oldnames ldllcew libw"; + $shlib_ex_obj=""; +# $no_asm=1; + $out_def="out16dll"; + $tmp_def="tmp16dll"; + } +else + { $mlflags=''; } + +$app_ex_obj=""; + +$obj='.obj'; +$ofile="/Fo"; + +# EXE linking stuff +$link="link"; +$efile=""; +$exep='.exe'; +$ex_libs.=$no_sock?"":" winsock"; + +# static library stuff +$mklib='lib /PAGESIZE:1024'; +$ranlib=''; +$plib=""; +$libp=".lib"; +$shlibp=($shlib)?".dll":".lib"; +$lfile=''; + +$asm='ml /Cp /c /Cx'; +$afile='/Fo'; + +$bn_asm_obj=''; +$bn_asm_src=''; +$des_enc_obj=''; +$des_enc_src=''; +$bf_enc_obj=''; +$bf_enc_src=''; + +if (!$no_asm && !$fips) + { + if ($asmbits == 32) + { + $bn_asm_obj='crypto\bn\asm\x86w32.obj'; + $bn_asm_src='crypto\bn\asm\x86w32.asm'; + } + else + { + $bn_asm_obj='crypto\bn\asm\x86w16.obj'; + $bn_asm_src='crypto\bn\asm\x86w16.asm'; + } + } + +sub do_lib_rule + { + local($objs,$target,$name,$shlib)=@_; + local($ret,$Name); + + $taget =~ s/\//$o/g if $o ne '/'; + ($Name=$name) =~ tr/a-z/A-Z/; + +# $target="\$(LIB_D)$o$target"; + $ret.="$target: $objs\n"; +# $ret.="\t\$(RM) \$(O_$Name)\n"; + + # Due to a pathetic line length limit, I unwrap the args. + local($lib_names)=""; + local($dll_names)=" \$(SHLIB_EX_OBJ) +\n"; + ($obj)= ($objs =~ /\((.*)\)/); + foreach $_ (sort split(/\s+/,$Vars{$obj})) + { + $lib_names.="+$_ &\n"; + $dll_names.=" $_ +\n"; + } + + if (!$shlib) + { + $ret.="\tdel $target\n"; + $ret.="\t\$(MKLIB) @<<\n$target\ny\n$lib_names\n\n<<\n"; + } + else + { + local($ex)=($target =~ /O_SSL/)?'$(L_CRYPTO)':""; + $ex.=' winsock'; + $ret.="\t\$(LINK) \$(MLFLAGS) @<<\n"; + $ret.=$dll_names; + $ret.="\n $target\n\n $ex $libs\nms$o${name}.def;\n<<\n"; + ($out_lib=$target) =~ s/O_/L_/; + $ret.="\timplib /noignorecase /nowep $out_lib $target\n"; + } + $ret.="\n"; + return($ret); + } + +sub do_link_rule + { + local($target,$files,$dep_libs,$libs,$sha1file,$openssl)=@_; + local($ret,$f,$_,@f); + + $file =~ s/\//$o/g if $o ne '/'; + $n=&bname($targer); + $ret.="$target: $files $dep_libs\n"; + $ret.=" \$(LINK) \$(LFLAGS) @<<\n"; + + # Due to a pathetic line length limit, I have to unwrap the args. + if ($files =~ /\(([^)]*)\)$/) + { + @a=('$(APP_EX_OBJ)'); + push(@a,sort split(/\s+/,$Vars{$1})); + for $_ (@a) + { $ret.=" $_ +\n"; } + } + else + { $ret.=" \$(APP_EX_OBJ) $files"; } + $ret.="\n $target\n\n $libs\n\n<<\n"; + if (defined $sha1file) + { + $ret.=" $openssl sha1 -hmac etaonrishdlcupfm -binary $target > $sha1file"; + } + $ret.="\n"; + return($ret); + } + +1; diff --git a/util/pl/VC-32.pl b/util/pl/VC-32.pl new file mode 100644 index 0000000..81e92f0 --- /dev/null +++ b/util/pl/VC-32.pl @@ -0,0 +1,298 @@ +#!/usr/local/bin/perl +# VC-32.pl - unified script for Microsoft Visual C++, covering Win32, +# Win64 and WinCE [follow $FLAVOR variable to trace the differences]. +# + +$ssl= "ssleay32"; +$crypto="libeay32"; + +$o='\\'; +$cp='$(PERL) util/copy.pl'; +$mkdir='$(PERL) util/mkdir-p.pl'; +$rm='del'; + +$zlib_lib="zlib1.lib"; + +# C compiler stuff +$cc='cl'; +if ($FLAVOR =~ /WIN64/) + { + # Note that we currently don't have /WX on Win64! There is a lot of + # warnings, but only of two types: + # + # C4344: conversion from '__int64' to 'int/long', possible loss of data + # C4267: conversion from 'size_t' to 'int/long', possible loss of data + # + # Amount of latter type is minimized by aliasing strlen to function of + # own desing and limiting its return value to 2GB-1 (see e_os.h). As + # per 0.9.8 release remaining warnings were explicitly examined and + # considered safe to ignore. + # + $base_cflags=' /W3 /Gs0 /GF /Gy /nologo -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DDSO_WIN32 -DOPENSSL_SYSNAME_WIN32 -DOPENSSL_SYSNAME_WINNT -DUNICODE -D_UNICODE'; + $base_cflags.=' -D_CRT_SECURE_NO_DEPRECATE'; # shut up VC8 + $base_cflags.=' -D_CRT_NONSTDC_NO_DEPRECATE'; # shut up VC8 + $opt_cflags=' /MD /Ox'; + $dbg_cflags=' /MDd /Od -DDEBUG -D_DEBUG'; + $lflags="/nologo /subsystem:console /opt:ref"; + } +elsif ($FLAVOR =~ /CE/) + { + # sanity check + die '%OSVERSION% is not defined' if (!defined($ENV{'OSVERSION'})); + die '%PLATFORM% is not defined' if (!defined($ENV{'PLATFORM'})); + die '%TARGETCPU% is not defined' if (!defined($ENV{'TARGETCPU'})); + + # + # Idea behind this is to mimic flags set by eVC++ IDE... + # + $wcevers = $ENV{'OSVERSION'}; # WCENNN + die '%OSVERSION% value is insane' if ($wcevers !~ /^WCE([1-9])([0-9]{2})$/); + $wcecdefs = "-D_WIN32_WCE=$1$2 -DUNDER_CE=$1$2"; # -D_WIN32_WCE=NNN + $wcelflag = "/subsystem:windowsce,$1.$2"; # ...,N.NN + + $wceplatf = $ENV{'PLATFORM'}; + $wceplatf =~ tr/a-z0-9 /A-Z0-9_/d; + $wcecdefs .= " -DWCE_PLATFORM_$wceplatf"; + + $wcetgt = $ENV{'TARGETCPU'}; # just shorter name... + SWITCH: for($wcetgt) { + /^X86/ && do { $wcecdefs.=" -Dx86 -D_X86_ -D_i386_ -Di_386_"; + $wcelflag.=" /machine:IX86"; last; }; + /^ARMV4[IT]/ && do { $wcecdefs.=" -DARM -D_ARM_ -D$wcetgt"; + $wcecdefs.=" -DTHUMB -D_THUMB_" if($wcetgt=~/T$/); + $wcecdefs.=" -QRarch4T -QRinterwork-return"; + $wcelflag.=" /machine:THUMB"; last; }; + /^ARM/ && do { $wcecdefs.=" -DARM -D_ARM_ -D$wcetgt"; + $wcelflag.=" /machine:ARM"; last; }; + /^MIPSIV/ && do { $wcecdefs.=" -DMIPS -D_MIPS_ -DR4000 -D$wcetgt"; + $wcecdefs.=" -D_MIPS64 -QMmips4 -QMn32"; + $wcelflag.=" /machine:MIPSFPU"; last; }; + /^MIPS16/ && do { $wcecdefs.=" -DMIPS -D_MIPS_ -DR4000 -D$wcetgt"; + $wcecdefs.=" -DMIPSII -QMmips16"; + $wcelflag.=" /machine:MIPS16"; last; }; + /^MIPSII/ && do { $wcecdefs.=" -DMIPS -D_MIPS_ -DR4000 -D$wcetgt"; + $wcecdefs.=" -QMmips2"; + $wcelflag.=" /machine:MIPS"; last; }; + /^R4[0-9]{3}/ && do { $wcecdefs.=" -DMIPS -D_MIPS_ -DR4000"; + $wcelflag.=" /machine:MIPS"; last; }; + /^SH[0-9]/ && do { $wcecdefs.=" -D$wcetgt -D_$wcetgt_ -DSHx"; + $wcecdefs.=" -Qsh4" if ($wcetgt =~ /^SH4/); + $wcelflag.=" /machine:$wcetgt"; last; }; + { $wcecdefs.=" -D$wcetgt -D_$wcetgt_"; + $wcelflag.=" /machine:$wcetgt"; last; }; + } + + $cc='$(CC)'; + $base_cflags=' /W3 /WX /GF /Gy /nologo -DUNICODE -D_UNICODE -DOPENSSL_SYSNAME_WINCE -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DDSO_WIN32 -DNO_CHMOD -I$(WCECOMPAT)/include -DOPENSSL_SMALL_FOOTPRINT'; + $base_cflags.=" $wcecdefs"; + $opt_cflags=' /MC /O1i'; # optimize for space, but with intrinsics... + $dbg_clfags=' /MC /Od -DDEBUG -D_DEBUG'; + $lflags="/nologo /opt:ref $wcelflag"; + } +else # Win32 + { + $base_cflags=' /W3 /WX /Gs0 /GF /Gy /nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DDSO_WIN32'; + $base_cflags.=' -D_CRT_SECURE_NO_DEPRECATE'; # shut up VC8 + $base_cflags.=' -D_CRT_NONSTDC_NO_DEPRECATE'; # shut up VC8 + $opt_cflags=' /MD /Ox /O2 /Ob2'; + $dbg_cflags=' /MDd /Od -DDEBUG -D_DEBUG'; + $lflags="/nologo /subsystem:console /opt:ref"; + } +$mlflags=''; + +$out_def="out32"; $out_def.='_$(TARGETCPU)' if ($FLAVOR =~ /CE/); +$tmp_def="tmp32"; $tmp_def.='_$(TARGETCPU)' if ($FLAVOR =~ /CE/); +$inc_def="inc32"; + +if ($debug) + { + $cflags=$dbg_cflags.$base_cflags; + $lflags.=" /debug"; + $mlflags.=' /debug'; + } +else + { + $cflags=$opt_cflags.$base_cflags; + } + +$obj='.obj'; +$ofile="/Fo"; + +# EXE linking stuff +$link="link"; +$rsc="rc"; +$efile="/out:"; +$exep='.exe'; +if ($no_sock) { $ex_libs=''; } +elsif ($FLAVOR =~ /CE/) { $ex_libs='winsock.lib'; } +else { $ex_libs='wsock32.lib'; } + +if ($FLAVOR =~ /CE/) + { + $ex_libs.=' $(WCECOMPAT)/lib/wcecompatex.lib'; + $ex_libs.=' /nodefaultlib:oldnames.lib coredll.lib corelibc.lib' if ($ENV{'TARGETCPU'} eq "X86"); + } +else + { + $ex_libs.=' gdi32.lib advapi32.lib user32.lib'; + $ex_libs.=' bufferoverflowu.lib' if ($FLAVOR =~ /WIN64/); + } + +# As native NT API is pure UNICODE, our WIN-NT build defaults to UNICODE, +# but gets linked with unicows.lib to ensure backward compatibility. +if ($FLAVOR =~ /NT/) + { + $cflags.=" -DOPENSSL_SYSNAME_WINNT -DUNICODE -D_UNICODE"; + $ex_libs="unicows.lib $ex_libs"; + } +# static library stuff +$mklib='lib'; +$ranlib=''; +$plib=""; +$libp=".lib"; +$shlibp=($shlib)?".dll":".lib"; +$lfile='/out:'; + +$shlib_ex_obj=""; +$app_ex_obj="setargv.obj" if ($FLAVOR !~ /CE/); +if ($nasm) { + $asm='nasmw -f win32'; + $afile='-o '; +} else { + $asm='ml /Cp /coff /c /Cx'; + $asm.=" /Zi" if $debug; + $afile='/Fo'; +} + +$bn_asm_obj=''; +$bn_asm_src=''; +$des_enc_obj=''; +$des_enc_src=''; +$bf_enc_obj=''; +$bf_enc_src=''; + +if (!$no_asm) + { + $bn_asm_obj='crypto\bn\asm\bn_win32.obj'; + $bn_asm_src='crypto\bn\asm\bn_win32.asm'; + $des_enc_obj='crypto\des\asm\d_win32.obj crypto\des\asm\y_win32.obj'; + $des_enc_src='crypto\des\asm\d_win32.asm crypto\des\asm\y_win32.asm'; + $bf_enc_obj='crypto\bf\asm\b_win32.obj'; + $bf_enc_src='crypto\bf\asm\b_win32.asm'; + $cast_enc_obj='crypto\cast\asm\c_win32.obj'; + $cast_enc_src='crypto\cast\asm\c_win32.asm'; + $rc4_enc_obj='crypto\rc4\asm\r4_win32.obj'; + $rc4_enc_src='crypto\rc4\asm\r4_win32.asm'; + $rc5_enc_obj='crypto\rc5\asm\r5_win32.obj'; + $rc5_enc_src='crypto\rc5\asm\r5_win32.asm'; + $md5_asm_obj='crypto\md5\asm\m5_win32.obj'; + $md5_asm_src='crypto\md5\asm\m5_win32.asm'; + $sha1_asm_obj='crypto\sha\asm\s1_win32.obj'; + $sha1_asm_src='crypto\sha\asm\s1_win32.asm'; + $rmd160_asm_obj='crypto\ripemd\asm\rm_win32.obj'; + $rmd160_asm_src='crypto\ripemd\asm\rm_win32.asm'; + $cflags.=" -DBN_ASM -DMD5_ASM -DSHA1_ASM -DRMD160_ASM"; + } + +if ($shlib && $FLAVOR !~ /CE/) + { + $mlflags.=" $lflags /dll"; +# $cflags =~ s| /MD| /MT|; + $lib_cflag=" -D_WINDLL"; + $out_def="out32dll"; + $tmp_def="tmp32dll"; + # + # Engage Applink... + # + $app_ex_obj.=" \$(OBJ_D)\\applink.obj /implib:\$(TMP_D)\\junk.lib"; + $cflags.=" -DOPENSSL_USE_APPLINK -I."; + # I'm open for better suggestions than overriding $banner... + $banner=<<'___'; + @echo Building OpenSSL + +$(OBJ_D)\applink.obj: ms\applink.c + $(CC) /Fo$(OBJ_D)\applink.obj $(APP_CFLAGS) -c ms\applink.c +$(OBJ_D)\uplink.obj: ms\uplink.c ms\applink.c + $(CC) /Fo$(OBJ_D)\uplink.obj $(SHLIB_CFLAGS) -c ms\uplink.c +$(INCO_D)\applink.c: ms\applink.c + $(CP) ms\applink.c $(INCO_D)\applink.c + +EXHEADER= $(EXHEADER) $(INCO_D)\applink.c + +LIBS_DEP=$(LIBS_DEP) $(OBJ_D)\applink.obj +CRYPTOOBJ=$(OBJ_D)\uplink.obj $(CRYPTOOBJ) +___ + $banner.=<<'___' if ($FLAVOR =~ /WIN64/); +CRYPTOOBJ=ms\uptable.obj $(CRYPTOOBJ) +___ + } +elsif ($shlib && $FLAVOR =~ /CE/) + { + $mlflags.=" $lflags /dll"; + $lib_cflag=" -D_WINDLL -D_DLL"; + $out_def='out32dll_$(TARGETCPU)'; + $tmp_def='tmp32dll_$(TARGETCPU)'; + } + +$cflags.=" /Fd$out_def"; + +sub do_lib_rule + { + local($objs,$target,$name,$shlib)=@_; + local($ret); + + $taget =~ s/\//$o/g if $o ne '/'; + if ($name ne "") + { + $name =~ tr/a-z/A-Z/; + $name = "/def:ms/${name}.def"; + } + +# $target="\$(LIB_D)$o$target"; + $ret.="$target: $objs\n"; + if (!$shlib) + { +# $ret.="\t\$(RM) \$(O_$Name)\n"; + $ex =' '; + $ret.="\t\$(MKLIB) $lfile$target @<<\n $objs $ex\n<<\n"; + } + else + { + local($ex)=($target =~ /O_CRYPTO/)?'':' $(L_CRYPTO)'; + if ($name eq "") + { + $ex.=' bufferoverflowu.lib' if ($FLAVOR =~ /WIN64/); + } + elsif ($FLAVOR =~ /CE/) + { + $ex.=' winsock.lib $(WCECOMPAT)/lib/wcecompatex.lib'; + } + else + { + $ex.=' unicows.lib' if ($FLAVOR =~ /NT/); + $ex.=' wsock32.lib gdi32.lib advapi32.lib user32.lib'; + $ex.=' bufferoverflowu.lib' if ($FLAVOR =~ /WIN64/); + } + $ex.=" $zlib_lib" if $zlib_opt == 1 && $target =~ /O_CRYPTO/; + $ret.="\t\$(LINK) \$(MLFLAGS) $efile$target $name @<<\n \$(SHLIB_EX_OBJ) $objs $ex\n<<\n"; + $ret.="\tIF EXIST \$@.manifest mt -manifest \$@.manifest -outputresource:\$@;2\n\n"; + } + $ret.="\n"; + return($ret); + } + +sub do_link_rule + { + local($target,$files,$dep_libs,$libs)=@_; + local($ret,$_); + + $file =~ s/\//$o/g if $o ne '/'; + $n=&bname($targer); + $ret.="$target: $files $dep_libs\n"; + $ret.="\t\$(LINK) \$(LFLAGS) $efile$target @<<\n"; + $ret.=" \$(APP_EX_OBJ) $files $libs\n<<\n"; + $ret.="\tIF EXIST \$@.manifest mt -manifest \$@.manifest -outputresource:\$@;1\n\n"; + return($ret); + } + +1; diff --git a/util/pl/VC-CE.pl b/util/pl/VC-CE.pl new file mode 100644 index 0000000..2fd0c4d --- /dev/null +++ b/util/pl/VC-CE.pl @@ -0,0 +1,116 @@ +#!/usr/local/bin/perl +# VC-CE.pl - the file for eMbedded Visual C++ 3.0 for windows CE, static libraries +# + +$ssl= "ssleay32"; +$crypto="libeay32"; +$RSAref="RSAref32"; + +$o='\\'; +$cp='copy nul+'; # Timestamps get stuffed otherwise +$rm='del'; + +# C compiler stuff +$cc='$(CC)'; +$cflags=' /W3 /WX /Ox /O2 /Ob2 /Gs0 /GF /Gy /nologo $(WCETARGETDEFS) -DUNICODE -D_UNICODE -DWIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DDSO_WIN32 -DNO_CHMOD -I$(WCECOMPAT)/include'; +$lflags='/nologo /subsystem:windowsce,$(WCELDVERSION) /machine:$(WCELDMACHINE) /opt:ref'; +$mlflags=''; + +$out_def='out32_$(TARGETCPU)'; +$tmp_def='tmp32_$(TARGETCPU)'; +$inc_def="inc32"; + +if ($debug) + { + $cflags=" /MDd /W3 /WX /Zi /Yd /Od /nologo -DWIN32 -D_DEBUG -DL_ENDIAN -DWIN32_LEAN_AND_MEAN -DDEBUG -DDSO_WIN32"; + $lflags.=" /debug"; + $mlflags.=' /debug'; + } + +$obj='.obj'; +$ofile="/Fo"; + +# EXE linking stuff +$link="link"; +$efile="/out:"; +$exep='.exe'; +if ($no_sock) + { $ex_libs=""; } +else { $ex_libs='winsock.lib $(WCECOMPAT)/lib/wcecompatex.lib $(WCELDFLAGS)'; } + +# static library stuff +$mklib='lib'; +$ranlib=''; +$plib=""; +$libp=".lib"; +$shlibp=($shlib)?".dll":".lib"; +$lfile='/out:'; + +$shlib_ex_obj=""; +$app_ex_obj=""; +$app_ex_obj=""; + +$bn_asm_obj=''; +$bn_asm_src=''; +$des_enc_obj=''; +$des_enc_src=''; +$bf_enc_obj=''; +$bf_enc_src=''; + +if ($shlib) + { + $mlflags.=" $lflags /dll"; +# $cflags =~ s| /MD| /MT|; + $lib_cflag=" -D_WINDLL -D_DLL"; + $out_def='out32dll_$(TARGETCPU)'; + $tmp_def='tmp32dll_$(TARGETCPU)'; + } + +$cflags.=" /Fd$out_def"; + +sub do_lib_rule + { + local($objs,$target,$name,$shlib)=@_; + local($ret,$Name); + + $taget =~ s/\//$o/g if $o ne '/'; + ($Name=$name) =~ tr/a-z/A-Z/; + +# $target="\$(LIB_D)$o$target"; + $ret.="$target: $objs\n"; + if (!$shlib) + { +# $ret.="\t\$(RM) \$(O_$Name)\n"; + $ex =' '; + $ret.="\t\$(MKLIB) $lfile$target @<<\n $objs $ex\n<<\n"; + } + else + { + local($ex)=($target =~ /O_SSL/)?' $(L_CRYPTO)':''; +# $ex.=' winsock.lib coredll.lib $(WCECOMPAT)/lib/wcecompatex.lib'; + $ex.=' winsock.lib $(WCECOMPAT)/lib/wcecompatex.lib'; + $ret.="\t\$(LINK) \$(MLFLAGS) $efile$target /def:ms/${Name}.def @<<\n \$(SHLIB_EX_OBJ) $objs $ex\n<<\n"; + } + $ret.="\n"; + return($ret); + } + +sub do_link_rule + { + local($target,$files,$dep_libs,$libs,$sha1file,$openssl)=@_; + local($ret,$_); + + $file =~ s/\//$o/g if $o ne '/'; + $n=&bname($targer); + $ret.="$target: $files $dep_libs\n"; + $ret.=" \$(LINK) \$(LFLAGS) $efile$target @<<\n"; + $ret.=" \$(APP_EX_OBJ) $files $libs\n<<\n"; + if (defined $sha1file) + { + $ret.=" $openssl sha1 -hmac etaonrishdlcupfm -binary $target > $sha1file"; + } + $ret.="\n"; + return($ret); + } + +1; diff --git a/util/pl/linux.pl b/util/pl/linux.pl new file mode 100644 index 0000000..d24f7b7 --- /dev/null +++ b/util/pl/linux.pl @@ -0,0 +1,104 @@ +#!/usr/local/bin/perl +# +# linux.pl - the standard unix makefile stuff. +# + +$o='/'; +$cp='/bin/cp'; +$rm='/bin/rm -f'; + +# C compiler stuff + +$cc='gcc'; +if ($debug) + { $cflags="-g2 -ggdb -DREF_CHECK -DCRYPTO_MDEBUG"; } +elsif ($profile) + { $cflags="-pg -O3"; } +else + { $cflags="-O3 -fomit-frame-pointer"; } + +if (!$no_asm) + { + $bn_asm_obj='$(OBJ_D)/bn86-elf.o'; + $bn_asm_src='crypto/bn/asm/bn86unix.cpp'; + $bnco_asm_obj='$(OBJ_D)/co86-elf.o'; + $bnco_asm_src='crypto/bn/asm/co86unix.cpp'; + $des_enc_obj='$(OBJ_D)/dx86-elf.o $(OBJ_D)/yx86-elf.o'; + $des_enc_src='crypto/des/asm/dx86unix.cpp crypto/des/asm/yx86unix.cpp'; + $bf_enc_obj='$(OBJ_D)/bx86-elf.o'; + $bf_enc_src='crypto/bf/asm/bx86unix.cpp'; + $cast_enc_obj='$(OBJ_D)/cx86-elf.o'; + $cast_enc_src='crypto/cast/asm/cx86unix.cpp'; + $rc4_enc_obj='$(OBJ_D)/rx86-elf.o'; + $rc4_enc_src='crypto/rc4/asm/rx86unix.cpp'; + $rc5_enc_obj='$(OBJ_D)/r586-elf.o'; + $rc5_enc_src='crypto/rc5/asm/r586unix.cpp'; + $md5_asm_obj='$(OBJ_D)/mx86-elf.o'; + $md5_asm_src='crypto/md5/asm/mx86unix.cpp'; + $rmd160_asm_obj='$(OBJ_D)/rm86-elf.o'; + $rmd160_asm_src='crypto/ripemd/asm/rm86unix.cpp'; + $sha1_asm_obj='$(OBJ_D)/sx86-elf.o'; + $sha1_asm_src='crypto/sha/asm/sx86unix.cpp'; + $cflags.=" -DBN_ASM -DMD5_ASM -DSHA1_ASM -DOPENSSL_BN_ASM_PART_WORDS"; + } + +$cflags.=" -DTERMIO -DL_ENDIAN -m486 -Wall"; + +if ($shlib) + { + $shl_cflag=" -DPIC -fpic"; + $shlibp=".so.$ssl_version"; + $so_shlibp=".so"; + } + +sub do_shlib_rule + { + local($obj,$target,$name,$shlib,$so_name)=@_; + local($ret,$_,$Name); + + $target =~ s/\//$o/g if $o ne '/'; + ($Name=$name) =~ tr/a-z/A-Z/; + + $ret.="$target: \$(${Name}OBJ)\n"; + $ret.="\t\$(RM) target\n"; + $ret.="\tgcc \${CFLAGS} -shared -Wl,-soname,$target -o $target \$(${Name}OBJ)\n"; + ($t=$target) =~ s/(^.*)\/[^\/]*$/$1/; + if ($so_name ne "") + { + $ret.="\t\$(RM) \$(LIB_D)$o$so_name\n"; + $ret.="\tln -s $target \$(LIB_D)$o$so_name\n\n"; + } + } + +sub do_link_rule + { + local($target,$files,$dep_libs,$libs)=@_; + local($ret,$_); + + $file =~ s/\//$o/g if $o ne '/'; + $n=&bname($target); + $ret.="$target: $files $dep_libs\n"; + $ret.="\t\$(LINK) ${efile}$target \$(LFLAGS) $files $libs\n\n"; + return($ret); + } + +sub do_asm_rule + { + local($target,$src)=@_; + local($ret,@s,@t,$i); + + $target =~ s/\//$o/g if $o ne "/"; + $src =~ s/\//$o/g if $o ne "/"; + + @s=split(/\s+/,$src); + @t=split(/\s+/,$target); + + for ($i=0; $i<=$#s; $i++) + { + $ret.="$t[$i]: $s[$i]\n"; + $ret.="\tgcc -E -DELF \$(SRC_D)$o$s[$i]|\$(AS) $afile$t[$i]\n\n"; + } + return($ret); + } + +1; diff --git a/util/pl/netware.pl b/util/pl/netware.pl new file mode 100644 index 0000000..c05789b --- /dev/null +++ b/util/pl/netware.pl @@ -0,0 +1,341 @@ +# Metrowerks Codewarrior for NetWare +# + +# The import files and other misc imports needed to link +@misc_imports = ("GetProcessSwitchCount", "RunningProcess", + "GetSuperHighResolutionTimer"); +if ($LIBC) +{ + @import_files = ("libc.imp"); + @module_files = ("libc"); +} +else +{ + # clib build + @import_files = ("clib.imp"); + @module_files = ("clib"); + push(@misc_imports, "_rt_modu64%16", "_rt_divu64%16"); +} +if (!$BSDSOCK) +{ + 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"); + +#$ssl= "ssleay32"; +#$crypto="libeay32"; + +$o='\\\\'; +$cp='copy >nul:'; +$rm='del'; + +# C compiler +$cc="mwccnlm"; + +# Linker +$link="mwldnlm"; + +# librarian +$mklib="mwldnlm"; + +# assembler +if ($nw_nasm) +{ + $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=""; +} + + + +# compile flags +# +# 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="-ir crypto -ir engines -ir apps -msgstyle gcc -align 4 -processor pentium \\ + -char unsigned -w on -w nolargeargs -w nopossible -w nounusedarg \\ + -w noimplicitconv -relax_pointers -nosyspath -DL_ENDIAN \\ + -DOPENSSL_SYSNAME_NETWARE -U_WIN32 -maxerrors 20 "; + +# link flags +$lflags="-msgstyle gcc -zerobss -stacksize 32768 -nostdlib -sym internal "; + + +# 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"; +} + +# 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"; + $lflags.=" -entry _LibCPrelude -exit _LibCPostlude -flags pseudopreemption"; +} +else +{ + $cflags.=" -DNETWARE_CLIB"; + $lflags.=" -entry _Prelude -exit _Stop"; +} + +# If BSD Socket support is requested, set a define for the compiler +if ($BSDSOCK) +{ + $cflags.=" -DNETWARE_BSDSOCK"; +} + + +# 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 +{ + $libp=".lib"; + $shlibp=".lib"; + $lib_flags="-nodefaults -type library"; + 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='.obj'; +$ofile='-o '; +$efile=''; +$exep='.nlm'; +$ex_libs=''; + +if (!$no_asm) +{ + $bn_asm_obj="crypto${o}bn${o}asm${o}bn-nw.obj"; + $bn_asm_src="crypto${o}bn${o}asm${o}bn-nw.asm"; + $des_enc_obj="crypto${o}des${o}asm${o}d-nw.obj crypto${o}des${o}asm${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="crypto${o}bf${o}asm${o}b-nw.obj"; + $bf_enc_src="crypto${o}bf${o}asm${o}b-nw.asm"; + $cast_enc_obj="crypto${o}cast${o}asm${o}c-nw.obj"; + $cast_enc_src="crypto${o}cast${o}asm${o}c-nw.asm"; + $rc4_enc_obj="crypto${o}rc4${o}asm${o}r4-nw.obj"; + $rc4_enc_src="crypto${o}rc4${o}asm${o}r4-nw.asm"; + $rc5_enc_obj="crypto${o}rc5${o}asm${o}r5-nw.obj"; + $rc5_enc_src="crypto${o}rc5${o}asm${o}r5-nw.asm"; + $md5_asm_obj="crypto${o}md5${o}asm${o}m5-nw.obj"; + $md5_asm_src="crypto${o}md5${o}asm${o}m5-nw.asm"; + $sha1_asm_obj="crypto${o}sha${o}asm${o}s1-nw.obj"; + $sha1_asm_src="crypto${o}sha${o}asm${o}s1-nw.asm"; + $rmd160_asm_obj="crypto${o}ripemd${o}asm${o}rm-nw.obj"; + $rmd160_asm_src="crypto${o}ripemd${o}asm${o}rm-nw.asm"; + $cflags.=" -DBN_ASM -DMD5_ASM -DSHA1_ASM -DRMD160_ASM"; +} +else +{ + $bn_asm_obj=''; + $bn_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=''; +} + +# create the *.def linker command files in \openssl\netware\ directory +sub do_def_file +{ + # strip off the leading path + my($target) = bname(@_); + my($def_file); + my($mod_file); + my($i); + + if ($target =~ /(.*).nlm/) + { + $target = $1; + } + + # special case for openssl - the mk1mf.pl defines E_EXE = openssl + if ($target =~ /E_EXE/) + { + $target = "openssl"; + } + + # Note: originally tried to use full path ( \openssl\netware\$target.def ) + # Metrowerks linker choked on this with an assertion failure. bug??? + # + $def_file = "netware\\$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 Metrowerks build\n" ); + print( DEF_OUT "#\n"); + print( DEF_OUT "DESCRIPTION \"$target\"\n"); + + foreach $i (@misc_imports) + { + print( DEF_OUT "IMPORT $i\n"); + } + + foreach $i (@import_files) + { + print( DEF_OUT "IMPORT \@$import_path\\$i\n"); + } + + foreach $i (@module_files) + { + print( DEF_OUT "MODULE $i\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 -o $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); + + $def_file = do_def_file($target); + + # special case for openssl - the mk1mf.pl defines E_EXE = openssl + + # 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 ( 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 + # + if ($target =~ /E_EXE/) + { + my($target2) = $target; + + $target2 =~ s/\(E_EXE\)/\(E_EXE\)2/; + + $ret.="$target: $files $dep_libs\n"; + + # openssl + $ret.="\t\$(LINK) \$(LFLAGS) -screenname openssl -commandfile $def_file $files \"$prelude\" $libs -o $target\n"; + # openssl2 + $ret.="\t\$(LINK) \$(LFLAGS) -commandfile $def_file $files \"$prelude\" $libs -o $target2\n"; + } + else + { + $ret.="$target: $files $dep_libs\n"; + $ret.="\t\$(LINK) \$(LFLAGS) -commandfile $def_file $files \"$prelude\" $libs -o $target\n"; + } + + $ret.="\n"; + return($ret); +} + +1; diff --git a/util/pl/ultrix.pl b/util/pl/ultrix.pl new file mode 100644 index 0000000..ea370c7 --- /dev/null +++ b/util/pl/ultrix.pl @@ -0,0 +1,38 @@ +#!/usr/local/bin/perl +# +# linux.pl - the standard unix makefile stuff. +# + +$o='/'; +$cp='/bin/cp'; +$rm='/bin/rm -f'; + +# C compiler stuff + +$cc='cc'; +if ($debug) + { $cflags="-g -DREF_CHECK -DCRYPTO_MDEBUG"; } +else + { $cflags="-O2"; } + +$cflags.=" -std1 -DL_ENDIAN"; + +if (!$no_asm) + { + $bn_asm_obj='$(OBJ_D)/mips1.o'; + $bn_asm_src='crypto/bn/asm/mips1.s'; + } + +sub do_link_rule + { + local($target,$files,$dep_libs,$libs)=@_; + local($ret,$_); + + $file =~ s/\//$o/g if $o ne '/'; + $n=&bname($target); + $ret.="$target: $files $dep_libs\n"; + $ret.="\t\$(LINK) ${efile}$target \$(LFLAGS) $files $libs\n\n"; + return($ret); + } + +1; diff --git a/util/pl/unix.pl b/util/pl/unix.pl new file mode 100644 index 0000000..146611a --- /dev/null +++ b/util/pl/unix.pl @@ -0,0 +1,96 @@ +#!/usr/local/bin/perl +# +# unix.pl - the standard unix makefile stuff. +# + +$o='/'; +$cp='/bin/cp'; +$rm='/bin/rm -f'; + +# C compiler stuff + +if ($gcc) + { + $cc='gcc'; + if ($debug) + { $cflags="-g2 -ggdb"; } + else + { $cflags="-O3 -fomit-frame-pointer"; } + } +else + { + $cc='cc'; + if ($debug) + { $cflags="-g"; } + else + { $cflags="-O"; } + } +$obj='.o'; +$ofile='-o '; + +# EXE linking stuff +$link='${CC}'; +$lflags='${CFLAGS}'; +$efile='-o '; +$exep=''; +$ex_libs=""; + +# static library stuff +$mklib='ar r'; +$mlflags=''; +$ranlib=&which("ranlib") or $ranlib="true"; +$plib='lib'; +$libp=".a"; +$shlibp=".a"; +$lfile=''; + +$asm='as'; +$afile='-o '; +$bn_asm_obj=""; +$bn_asm_src=""; +$des_enc_obj=""; +$des_enc_src=""; +$bf_enc_obj=""; +$bf_enc_src=""; + +sub do_lib_rule + { + local($obj,$target,$name,$shlib)=@_; + local($ret,$_,$Name); + + $target =~ s/\//$o/g if $o ne '/'; + $target="$target"; + ($Name=$name) =~ tr/a-z/A-Z/; + + $ret.="$target: \$(${Name}OBJ)\n"; + $ret.="\t\$(RM) $target\n"; + $ret.="\t\$(MKLIB) $target \$(${Name}OBJ)\n"; + $ret.="\t\$(RANLIB) $target\n\n"; + } + +sub do_link_rule + { + local($target,$files,$dep_libs,$libs)=@_; + local($ret,$_); + + $file =~ s/\//$o/g if $o ne '/'; + $n=&bname($target); + $ret.="$target: $files $dep_libs\n"; + $ret.="\t\$(LINK) ${efile}$target \$(LFLAGS) $files $libs\n\n"; + return($ret); + } + +sub which + { + my ($name)=@_; + my $path; + foreach $path (split /:/, $ENV{PATH}) + { + if (-x "$path/$name") + { + return "$path/$name"; + } + } + } + +1; |