1109998Smarkm#!/usr/local/bin/perl 2109998Smarkm# 3109998Smarkm# OS2-EMX.pl - for EMX GCC on OS/2 4109998Smarkm# 5109998Smarkm 6127128Snectar$o='/'; 7127128Snectar$cp='cp'; 8109998Smarkm$rm='rm -f'; 9109998Smarkm 10127128Snectar$preamble = "SHELL=sh\n"; 11127128Snectar 12109998Smarkm# C compiler stuff 13109998Smarkm 14109998Smarkm$cc='gcc'; 15109998Smarkm$cflags="-DL_ENDIAN -O3 -fomit-frame-pointer -m486 -Zmtd -Wall "; 16109998Smarkm$cflags.="-Zomf " if $shlib; 17109998Smarkm$shl_cflag="-Zdll"; 18109998Smarkm 19109998Smarkmif ($debug) { 20109998Smarkm $cflags.="-g "; 21109998Smarkm} 22109998Smarkm 23109998Smarkm$obj=$shlib ? '.obj' : '.o'; 24109998Smarkm$ofile='-o '; 25109998Smarkm 26109998Smarkm# EXE linking stuff 27109998Smarkm$link='${CC}'; 28109998Smarkm$lflags='${CFLAGS} -Zbsd-signals -s'; 29109998Smarkm$efile='-o '; 30109998Smarkm$exep='.exe'; 31109998Smarkm$ex_libs="-lsocket"; 32109998Smarkm 33109998Smarkm# static library stuff 34109998Smarkm$mklib='ar r'; 35109998Smarkm$mlflags=''; 36109998Smarkm$ranlib="ar s"; 37109998Smarkm$plib=''; 38109998Smarkm$libp=$shlib ? ".lib" : ".a"; 39109998Smarkm$shlibp=$shlib ? ".dll" : ".a"; 40109998Smarkm$lfile=''; 41109998Smarkm 42109998Smarkm$asm=$shlib ? 'as -Zomf' : 'as'; 43109998Smarkm$afile='-o '; 44109998Smarkm$bn_asm_obj=""; 45109998Smarkm$bn_asm_src=""; 46109998Smarkm$des_enc_obj=""; 47109998Smarkm$des_enc_src=""; 48109998Smarkm$bf_enc_obj=""; 49109998Smarkm$bf_enc_src=""; 50109998Smarkm 51160814Ssimonif (!$no_asm) 52109998Smarkm { 53127128Snectar $bn_asm_obj="crypto/bn/asm/bn-os2$obj crypto/bn/asm/co-os2$obj"; 54127128Snectar $bn_asm_src="crypto/bn/asm/bn-os2.asm crypto/bn/asm/co-os2.asm"; 55127128Snectar $des_enc_obj="crypto/des/asm/d-os2$obj crypto/des/asm/y-os2$obj"; 56127128Snectar $des_enc_src="crypto/des/asm/d-os2.asm crypto/des/asm/y-os2.asm"; 57127128Snectar $bf_enc_obj="crypto/bf/asm/b-os2$obj"; 58127128Snectar $bf_enc_src="crypto/bf/asm/b-os2.asm"; 59127128Snectar $cast_enc_obj="crypto/cast/asm/c-os2$obj"; 60127128Snectar $cast_enc_src="crypto/cast/asm/c-os2.asm"; 61127128Snectar $rc4_enc_obj="crypto/rc4/asm/r4-os2$obj"; 62127128Snectar $rc4_enc_src="crypto/rc4/asm/r4-os2.asm"; 63127128Snectar $rc5_enc_obj="crypto/rc5/asm/r5-os2$obj"; 64127128Snectar $rc5_enc_src="crypto/rc5/asm/r5-os2.asm"; 65127128Snectar $md5_asm_obj="crypto/md5/asm/m5-os2$obj"; 66127128Snectar $md5_asm_src="crypto/md5/asm/m5-os2.asm"; 67127128Snectar $sha1_asm_obj="crypto/sha/asm/s1-os2$obj"; 68127128Snectar $sha1_asm_src="crypto/sha/asm/s1-os2.asm"; 69127128Snectar $rmd160_asm_obj="crypto/ripemd/asm/rm-os2$obj"; 70127128Snectar $rmd160_asm_src="crypto/ripemd/asm/rm-os2.asm"; 71160814Ssimon $cflags.=" -DBN_ASM -DMD5_ASM -DSHA1_ASM -DOPENSSL_BN_ASM_PART_WORDS"; 72109998Smarkm } 73109998Smarkm 74109998Smarkmif ($shlib) 75109998Smarkm { 76109998Smarkm $mlflags.=" $lflags -Zdll"; 77109998Smarkm $lib_cflag=" -D_DLL"; 78109998Smarkm $out_def="out_dll"; 79109998Smarkm $tmp_def="tmp_dll"; 80109998Smarkm } 81109998Smarkm 82109998Smarkmsub do_lib_rule 83109998Smarkm { 84109998Smarkm local($obj,$target,$name,$shlib)=@_; 85109998Smarkm local($ret,$_,$Name); 86109998Smarkm 87109998Smarkm $target =~ s/\//$o/g if $o ne '/'; 88109998Smarkm $target="$target"; 89109998Smarkm ($Name=$name) =~ tr/a-z/A-Z/; 90109998Smarkm 91109998Smarkm $ret.="$target: \$(${Name}OBJ)\n"; 92109998Smarkm if (!$shlib) 93109998Smarkm { 94109998Smarkm $ret.="\t\$(RM) $target\n"; 95109998Smarkm $ret.="\t\$(MKLIB) $target \$(${Name}OBJ)\n"; 96109998Smarkm $ret.="\t\$(RANLIB) $target\n\n"; 97109998Smarkm } 98109998Smarkm else 99109998Smarkm { 100109998Smarkm local($ex)=($target =~ /O_SSL/)?' $(L_CRYPTO)':''; 101109998Smarkm $ex.=' -lsocket'; 102296279Sjkim $ret.="\t\$(LINK_CMD) \$(SHLIB_CFLAGS) \$(MLFLAGS) $efile$target \$(SHLIB_EX_OBJ) \$(${Name}OBJ) $ex os2/${Name}.def\n"; 103109998Smarkm $ret.="\temximp -o $out_def/$name.a os2/${Name}.def\n"; 104109998Smarkm $ret.="\temximp -o $out_def/$name.lib os2/${Name}.def\n\n"; 105109998Smarkm } 106109998Smarkm } 107109998Smarkm 108109998Smarkmsub do_link_rule 109109998Smarkm { 110160814Ssimon local($target,$files,$dep_libs,$libs)=@_; 111109998Smarkm local($ret,$_); 112109998Smarkm 113109998Smarkm $file =~ s/\//$o/g if $o ne '/'; 114109998Smarkm $n=&bname($target); 115109998Smarkm $ret.="$target: $files $dep_libs\n"; 116296279Sjkim $ret.="\t\$(LINK_CMD) ${efile}$target \$(CFLAG) \$(LFLAGS) $files $libs\n\n"; 117109998Smarkm return($ret); 118109998Smarkm } 119109998Smarkm 120109998Smarkm1; 121