From c55b6a8a8bd8d4028b29718dbab9f9461d29d673 Mon Sep 17 00:00:00 2001 From: Mark Pizzolato Date: Tue, 26 Apr 2016 20:24:01 -0700 Subject: [PATCH] makefile: Document supported build requirements and allow unsupported builds Users wanting to build simulators with locally build dependent packages or packages provided by an unsupported package management system can override where this procedure looks for include files and/or libraries. Overrides can be specified by define exported environment variables or GNU make command line arguments which specify INCLUDES and/or LIBRARIES. Each of these, if specified, must be the complete list include directories or library directories that should be used with each element separated by colons. (i.e. INCLUDES=/usr/include/:/usr/local/include/:...) Binaries built with unsupported library components will have a 'unsupported' tag in the output of the SHOW VERSION command. --- README.md | 21 +++++++++ doc/simh_doc.doc | Bin 258048 -> 260608 bytes makefile | 115 +++++++++++++++++++++++++++++++++++++++-------- 3 files changed, 118 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 4ccc6369..4eb76119 100644 --- a/README.md +++ b/README.md @@ -374,6 +374,27 @@ See the 0readme_ethernet.txt file for details about the required network compone The makefile provided requires GNU make, which is the default make facility for most systems these days. Any host system which doesn't have GNU make available as the default make facility may have it installed as 'gmake'. GNU make (gmake) is generally available an installation package for all current operating systems which have a package installation system. +##### Build Dependencies + +Some simulators depend on external packages to provide the full scope of functionality they may be simulating. These additional external packages may or may not be included in as part of the standard Operating System distributions. + +###### OS X - Dependencies + +The MacPorts package manager is available to provide these external packages. Once MacPorts is installed, these commands will install the required dependent packages: + + # port install vde2 + # port install libsdl2 + +###### Linux - Dependencies + +Different Linux distributions have different package managment systems: + +Ubuntu: + + # apt-get install libpcap-dev + # apt-get install vde2 + # apt-get install libsdl2 + #### Windows Compiling on windows is supported with recent versions of Microsoft Visual Studio (Standard or Express) and using GCC via the MinGW environment. Things may also work under Cygwin, but that is not the preferred windows environment. Not all features will be available as well as with either Visual Studio or MinGW. diff --git a/doc/simh_doc.doc b/doc/simh_doc.doc index eddc06a74a72b08b94ba73ac05b58d5e8fcdb842..3e6217bfce122afcb6ff65eec3cdb07380c9657b 100644 GIT binary patch delta 35790 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∬@uvKxdoeF%H4Efg>R-B$cf61jvu(_x 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 L)*<(dV-5cgX>Ci$ delta 32935 zcmd7b2YeLOyYTUu-B1FgEF>gAfF<;jkZeK4a*&>MV-+* zEl`wR21S`%N>PUAVO>SnVV?1Nmi6iEKeVc%Eap^Ak&1GNUDj!e!eNy4yvomWUPCh? zlp*wKI;mmL)Fp~Cn&o30Akfy@P$=Iq*C}3#WU+9lytDl1ua|gd`O#mGX|_kk5?a&> z)s#TgvuwJ~v7&h$8!HiWzRIpmNQC}Qdg8M$OXA#r#>Q%O$Ez{n`djDR?u;$(>r46l zW+TH5vQJa%Nc~u@!tM_*qtN>OTZj5G5UrIo&s*L02(z-w^| zuqLlkkn&TB^%Czk`6)k%oI?n&vbf@YTW#ObekChE(V zBBe%^3(Z`Xqh#(U1t~wrG)FuGnI`e$pA}zEz_YervK7m-%%Y$5Gh=0|6`Uoht!2s) ze?yJD=hgg?abYczUJJ8CL{_tv&NoxF*f!*gQY{;P$X7U5-l%FZaj}u{(Y9RvW-qTT30QUHId%79c4<{UibIcqgHc^svj%Hw#~nW9wEjVp_&}a$91e& z$FXd;O@(YVO+k9hSZB-_iK!nd&Nj{zuSbaU5Fy_7lc}h!Pr*PvQhbg`mWT*j^MXZf zUImLfBeB9mq)6NQ1*_^2BApRpGtb2mVX=7^s;oz_I3vVKgldjtSt6n&SyA5glLie+ z7~Ct>yO6n6-Np^uG;Cz<_Ht6sXg!wOp3Y=iBBE{U3q|RNj&_US@7l?c`%&Q*Z(Bmg zqPEU~uKc$|xboj|9{SN@Y^ebi^`p7+Ki)khv9<#NHT4LtY|j!Q&K46Gt-rS`+an{~ z4-s!$7+6)0;mY$!i(3q$-wTX##fWrec-9z^woZlP^%$-k&l=ax~J>JY0Dm z8Eab_9ID4~WogzJakiVmVR{TbPaVxdKSsRmr6OiMhMuQx&B0=cu%&0ju;_W3B}Sy} zdJ(-`EP9@1iD9udE^2YTi$%{<_lju=R@>*Y;onN#l4nBMcC>T*K;Gvm7`f>MA}vqukJd}C|8b>MVaRrWwGTek#P)H zj#}JnM^uz;KncBuMY(b`Ym8{yXC?HS9_7l>tTC$DLP}=DaOEi3>~hhu4#$A%xOvPvCV0T!_%Bw2dDK*8l1{;U+&v4)!frI zuv-6esUuR;5(lMnNX{d5XmWB=it~J0wQS2fzTB`)^A}sTwf$Uewe4n1kga7+AKT`b zIeA{}Z63i1*eb*px0-t;C8iFZlVI9+oBocXAEA{wQYm8a<^voD{kyB zH*u!CV+;3fIXX$r0hEXAF7f;n zXiw^>p^k%mT3apV2zV^s94RZ1Jr4u4b#=3+wX|E(f2pg^^6_Tmn-BR>R+~~!t?m}X zQLY#3sRc{q%#rNx=6+<^@1H0r?d$q#fs8CElC8#vCi*GLH>j+6H&9F08dXS9&Y?CV zviFcXP*GBF22~3y%2b>~e2}6{!D++=Gl+w+h&HCCT2V`GsQTEKH&DB)@ny-Oawv}q zsEA6aj4BAji)f0M&FTB_Z(R;|>4idH&+MOcg_Sc(-` ziLKa%PjFnD(#k{M*XnQ7qSjg7`roNVIr_fiq~QckYNj@7p?2p9Ucf{AiAQ)0nVnJ* zg5oHFIK-nmYT^adg7lkpP#3SFt2U&K`pVy`w#(^-J@gp=UbStjma^u&W+@?ENk=zy zM9kWzTQhEm9Cv$J?`uL-(qV)bazQSnd5{-nP!{D-9#s&AmS~06 z7=VEogd`+m2;^d%inPG;iZYA9Y|McT3$PG&Y{6C>)uy!f&`8_=jYitxf1!~&YM|Rq zZs<|ca16(B5~pw)az}C&=Wrhn@DP7O;SNPb0r z8`AM_Hra91+W*xi+vyoiwgri4iB@Qfm(d4((GPE8JSJcgCSwZZ_HG)c<2|gwTD*_- z_y}9E4WHn6VI{Y6g1|{_NM|)Nv&Fu~IuAMXmo2vQKh|Pj`KuOtl2bm7GdK&m%{`9` zc!)po2#=w1+iO5!1R)p}L?Ie6h(#RaR=GNA1kqwU5a@_b=#1`2KyUOxUyReHbWuBJ zyE&Wxs#-8Jdy|RgA$$LcYem-aLyqP-jx%`^<1rDFFc~s9n2KpwjrXtyYq1_5VKeO5 zf+IMJV>p46I0YGCoWWV#3sQLs@)j_C$ZH!3Bzl9p}w1fO9i zF5(g{;}IU?2^4C93ImMrLN1g-C`zLYDxe~oqXk-`UlDq}{sabSLwdOPdd-S^%$>jN z^?Lkcyh%VYj6oQTBqU=9Qt%dLVism&9_Hg+tio#S!fx!r=h%lYupeLIt0MGz z-xK%&KjJ!m#SJ{dV?05yHl>$``;=aP<31(v|H6HWR3gbdNq9*<@E?lfh^NIYLM}eL z?t|?pNa2hX}6=fM#;6toO5uP}>uQ-0RDK%BIW2!|v)LZp& zhHf-ai`rR?P_4ndbrBRr2#TWwHm-Q zCIkMeH;E=0F^EMRr1Dos4RnB9K02W@x+4L@F#;no7xOS53$PIBkOs6EON!B(Y$dP_ zpI|$7V-GIl3a;XbHf5lP-eln4=uHOwU+7JqkcOv_CteIN!VA)ix`*?st#hIuGpzjVWuB9ZqPgM9* zJ^wpRHu)cGvP1r=$p(^+AOxcbs`)r+IDwNmjWak4xwxOl1w6!` zc!bBu&&9p~d{7=0P!W|;1!0gIgQ|!?Gc-qw5{j0TriSOpEg9zQOj8T|txN6`p4jtH zOaHwFJk)aoE=KZ{mgt7=NWklO1EXNY7>tG7GrfuNSdJA~iMO!{n_#|fM) zp%ir7aGhr14DRBdHtIFCwLZo!ku8h=hnW+q^&RFK$UOfe%IqHzIzNzn?p$NZdz}4! zJU~8LTYeNkIh02QR6=D`f!t<>qbgoPGc-pFbjB;_g4Zw%!%H$XJ(9rdcmt!fA;aD8 zRK5@UCn{8^R&&JvAkW+jaKvBrf^yeA8dfaAVl2T@Y=#|Ma0Ewj3@30BryzIiXK)tx za32rw5EZz?t!O3-D-mdbhG?V>8R?#dXR3P4!UEYpvJQ7t(EnN;Dq8SjxW}VgpZ~G? zUq8j*Y392TscV84(G)U}X@=(LhyECVfo8?3yg^_TMq>dMA{~pd1WU0D%drA761u{D zajw!-&nkS*Lc&T$aD)B*(a(;4^xj8vj*h$Y{hj3RWw}SkHvDVaQQ^n8u;ZDAmQ4*x zYbf~~%i7vE)Fyw~Wsdq^xXRSa_Bnls4E>7YGV~0{O(u-y(Q_**m18`P_i!CQmD4_2 zsxH+oKH$m_G2Sp!Ti#Li)3&Fpq4U2tdTBeXs#y=zEBF(8tm58fHOg{zC|6M{F`WlL z!pE!I=iAg?TC!F3(%MYmX_dG1#Q?>t98vu$DT+T9RHpPQXYQtr_A2Zt?@iRi=xp~4a#MEGX zgz=bwz4#n&y`U)Xpmi-q;7G$zyoRZmhAGzCM8cdp+!)knMx_}U(466Y3+}*>hN<|Z z6;ml^JkC>CQm?AVI7 z9TcS}`XUJvF%=822>0+O9^T6O@A9q7CoZ$@@~zJaXhYVh5fw@~9vu3X2jIC&$!xf- zni?IAmrvRXJDcyig=#VFn>W-#+Ql_$$=WRfE%egZiq9a$aus`{$YSV4G(IM?n3faX zj!$Ex!EDi%Pi8hnZ#4t78;e~HrobdMv8dmt#M~51ZAA(Nn~G5wt(BUp7T0QYH27$b z*Qw>T=Hu1Y+Op|tUaikGb%FNEG_^)%(EGC)L_M1qRxO`x8Ef^rM9z^;Iw>vdr^HeetK!8#v9(yZoZ|4Y2$XNujbF? zr}&MJ^Xdw1$1HV4iCk0M>i;KoxRlo8Qi`Y8uC4eZgSBlx)2R*r!BNTuwD~vHPC>clXwteOu>vb`t-jXch#I3En@E!BP^W0$ZKrg< zo1>PJg6OMV-s?I>y_wF#*7eJEjUB5tpoyVzL(SLM(9*dFo#P-^sGu`6v6!)OLmD@l zHsY#@d5sx4;m2mOXUM#8L(zFP3_ch)?>j>Q?dQ3?_vnC(Bh6J4%jed61eIPPA3Z^S zgg|oO{JYSt$-COT&rg7jq zbT@bLZJW&Q<}~4#=x&-px}8LnqUIk zjh2=%v4)~@f99umZVTGe4bxe*fpluU@D&c=25v$+w8)OGq`c*<7MyWGXSH~BIYpDc zLQT{i7!m#GQ91tj|C@b1KYwq{yMhY=n?he2Oa!hN^5*-a{!oudS(R%2)4FTsac zkFK4$^56|D!Ke5hKVao6bb;=LH`IM0^}n%D;qUIG?Vm_G$kWnx5*@5s^Gk=XpZG>j zd@By&2qXb=(!b%J>%_m{8Us7>E?Sk6ozUlWqiaumzuD502nCD$_7hFbuCF9q(Wj_TVAZL~0NG zQ3@3hW93&Y8lxprkcN%ej_+^@(Y={X!CgFt(vMC9xd!pLNHW)KEXOUh8^SFfhEOP{ za0_?v0Q1r~DXhjGc1S|crEm@*-bc^Jdx`h}QgEdboxQr_LPoDXO#AEux9hBtenGmr(#~!v{e3kdUoI(N zDbtO1?+?^_YHKM^6XjMA7DPeHvjY}m2}1jl2t2`4Ncl$KI$iKj7(aj-jE@KM0fW8u zI`u=TeY3{nr^ufc8I8SkN-jnf$}ArDUC z)O4-Y*W7v(_mv^ZZtk(d#vA%*H}I*W6dHG_JAxkz}6kBhLHI`ST- z&7zXp!}h61)tKpoXJQs!nN6RLAxObp+(X5JycsvgTh+; zh;mCfO)SCJc!*L#?jext15O4VKCsfY6ZjC{;SqxWL-&lP zcwrr_7Ms>naX+G0h0n*dEG*tc8KUE6hUa(}7f@*nCx9BLgJzh3iQ75;-Cwf)>zH-% zf3T!v{n3UjR74ic zKuzq;kEk2egeHUsVhN7pGEDE%;~@bH@GXq1XanerB{+s_C`uuBMk-cAFZg8?_;M+9 zd%_8Inc7}2{3aCmC<<{jK7|zO5lF%Qh)NV}Wq47BdI8rY+#Veu%v9i{RycPd8rFhFN)x0v_nnmh18EXF%42rwqYZ6Me55V)cHu`o~6FF^BwgS z?bcm-R_2V#Yt_%H`>b`SOG6;_YCWWG{RpXFzG&>KXXAO@jf3#r!1Nh9;}yJ%Rk(`K zjZBtfAU?$o+`(Pwb@g#(C9zx2sbkglQiDIkPFGFtL=EnYxtNFZkXoI`PG^YTn1_A1 z52@{yG2T_nck+60i`=Q@Rwda!a%YuaM$YB5^zYQ({SOl15ITLr8(}5Z;sVSxks26< z36Lgp5QmWKQ`$OOp*1S+U;-HVc2YIb72U8AnI8!AYD(vu{W1$KZ!#KJ;jCK6n)(e0tavi#}IOwc6Wx{ILoE=oTB^(>+wBaI!{|e`wNUU zupeLI8=S&9T*6iOf5#o!jX!Q&`{NqFZk+Y_FUIrgzgVkCPZlH}Kgl;u-5&RMelDZP zRIlQkrt2)$Z7Y&Df1S*uI-~wuknFXjDU6O8#Z6#(Ow~!;spr zHW$C%|6HbhW3=}#Q>&L==1R>kAMKlW)Vi{+yk@?lUVPzwVoK%N3zbTuSDxyGKmCFt zK(YN~J^Fk}w}_=!hMM*luBv;~c)enEq!R6gUZH+-t5mb8R6f)lsZ(K)dgYia>zpyF zDe4;4e9x#R#=YJhCGJbqHND=AcGbPxyyl_aW!6FIzJ@v5ahJD9?0;m++i{=R^H;UD zX8xI5R;j5exJV7XH2k7j8{jrxV_Q zy*P>A;7g77gI@CsQ|o=H@lx}vpepL48Af3WmSQ8e+FRe?xb3BdY{Lp#$x8eHX)(EJ zDc&fKa_E2wNXL4(x2VG`m!bhVTNbxirzEGC)_8}zc^RNGZ=TE5>)lp+$220Y-uS*I zT#SY%jjtB^;4K`6FO9J!W@FA7?W1?p_cO-3GhD~}UG3d|4%?;Su0bmruQcE(*o8k) zjRq_Yx+ktd8gyYAvoz{v7zJtEYw-ih(}>$&@O)9cqxNVmoj?b;cLaVkdTIEPuwWDR z;&UWj;)08@m~oj4I#!_fRnm*E?XB-p7QOWS^?mjI^nJb|ZsBXxq3aA4aUFMY{1zhy zMBe6tcb8jXI_bxhyLwmukxd3YbYaTMRcHtO)z#ZhH@QWb~beh6V(-LZ9Kn@MCIb@) zR|tCD=Y9o+QO#~Lu->;C;f|PyCHEbl@7Q1UGQ6z@E@9149K$sjA290CR!roMDSSKK zErann(w*49%WWv7`pV{tcoAbBxDJ$;1Nn|&&2}6^*hANrd~7j=J><>N3H`CkZYsb@ z`K%)R8v_2MJJwA8hAba56fjh@kM=c;Q%&(~Pr*m{7<=r*W&b^dFF<+3;7c40?qLEL-2~WjN{D~@dQ(-w|6-uBDhGUK0C)n`2>br*UH^}>h zUiXRS8*E6nk1ooI`Icf$6AZ>IeM^XJnZ=q9a2)|pUHg=fEdfs%;2{Zb>RZgRSf(=Rb(Pd;4i^^0i#OjPq~18QAMg$b%|0om#Wl4JM_*GrKY@ZZ#GTE7M#O*J4d4GoF{w(;ki|% z4Xk!k9oG9<3BQZ)5RixL_BFJyzgmx4=*OZ`7q4M?#-;|ciA9Bn2b35L%B%0yNH(#k ztj12<$k^0GHnFJqd8)Dt#~y`!Y5)W0Q$RB^evQz0;%| zdlR0Ct#;7L*aG?&Y1vZ$0UMpuJjm|{1rl+&C-cm)pP9v|svz1BLK&pYhzbC2yMLpWb_ z(M<1oh__1KrwiN1;zO**E<15KwOxb{<2($-^;28RE`BU3RnZL-GB$l6n^;s!AT)bGku(qzm9WWFXs}+rfwLCC0J@F8a?$=!t3!B)RJ5a?52&97i9^z z#xTs#Ok1+1aif&mW+}HBY+sGdu;WWRac`kio}Yj2`>scif1l&!M11;%FIx|^*gS^F{a zg;L>B%x>Dt`Fa;4+ycw&-uq}~`IZs>21QES^X->*T%Xmr=SR*K*9o4txjyO5A>6Fy>$b{y>q+ zsuGW6dhJh;VQMGD$}UW8**-py__QjiL@5q;8*yC zt4dFNg!6ces#UqhV=vAiIzm<2V*=jALEJ{UNL3jD8+PLoN?7OuFa*nS5PyI{%iLA! zs~*ouw);nM$ArF^jIZGz%{2j&V8=1|RHJzz5et!yMaUJy{Rv9q1$4qdOu#~Hf(&zA z8RX2S$M)r`)CR84%4N7~|MRpV*^oa5e zpL1ol<7LZxIbOEBXI0L;&s>@9cqW6EIG>}%2QeBE3+IgDrZ@ET$Q6NqH>l+ zRL-(+uF6tRqCAy_zB1dn@N{E;>_kU2-l zUw@LnW+Z=`r*JTzkwE^=hx|>5xsY$^%NNY$`_h5M*&i)RDCLxUCHN4bBp-a3dGsQJ zDZCDRLYT$}E$Kww?)+e2vo@--(Q4hzIUdD1`~)VVoi{6-v;0j_`EwZZohA8Zk$g=^ zzVahq&yX)r$af#)`wH@91Nnx4Jk&3b+{@GQ@(jE@!Y)si%fsICNVYsTEzdy9qpOw# zCOUiZv8z0VDNkO?QbcX>@el55@8<=1^@sG^EMH zKMGIikbvb(Hon7$K5Lv$jL0YW^7*-Zq}^?od_d^@Ojtf@lMlt@1FWsbIk0^CBcIsF zrzrA)gUt8K9J@?z%QUjg8O!{z%mmByu1w_0l&wt9%G9e&v&uZG%$dsksLY4T%%{w8 z%50|0TgnWjOhw9^qf9Q!ETT*e&b0DNX8mM-PiFFD)=uW-#! zB9kLB86p!PGU*``9WuEg6B;syA@de8S0VEgGAAMP5HjZ=lM6D7ATtIsH6U{UGTxT~ zy$s%Ed@f^g8Fb44TL#ZEFqT2EjCL8;wwLj&A|q58jmpSVMwK#xlu@FL1!cr1<2o6= z$w*B`XEGp@L6{7@WOyY*DH;06C`0b*H*34XjfJ%PKl1H^i{VDIR^d9oLaG`=)U(>4 z>&93uS;D_-GpZWP+yA(3+^*&tL?#W^21OdD1?HpfmqP_qL}k3B`B;nxtRwUD)E`D+ z3AW(`PU8&D;Sq`#pmLxlUO;Vh!$hpayI6(yupd{U_)x*%h1@8IRv3sRB>T`@QV7h! z797J#oWdDAgb#g8MN~l;s-h+OVmu~cGNxiJw&4U$;|$K>5rSy@QHVh-;?c>E=F*42 zo0y16n1VI1<0wwxBu?W23j5R8Q4KMOLq`n9TxeK;bZo;VJcdHY$Yi5pL}|1@e=ENR zVK9<03#+gjpJN~P<3~J35qj1T6h}$aMq4By1*wqUcOEw2AdcWDj^hr33Xv0tfi;$2 z@#usRn1=;eh(-7WSMU@Dx^g3Op)49A0lkojKA41bY{ph>!*-m*eFShB2tqK522%dj z3A9HFhT=60#{z7_37p0m$e&bv1o`uc@@Eq(L;hr<{JBKAwsglEuwo3xVI?->2>7dj zjz0=`ir4$dA4K_=58}BZR7Mz@;}s0UNW6|wSOPobkHP7G2<|lD2dEfKZlDQX#7h`} zQINlECV$Xu36>!yii!*Q?qBQR7*dU?cwrLd2pcxr`^6ZC8`Lq{M^@zW88C2=Gi$D$)3;3nMe;gV|7lV$oMgP)?}tW z@;N!fxbr!0`0Sivd@1``JybS1nP*iR+4k(5kt+PG)JvY`+-8+2Bn$tZU1?-%&K>pr zo?U0;e)rk?xpKyuqp8W;J-gCao|7{S>z?z5o^!@3sb~E5%pIeilQU7z$(g9<)EUNP z`ukb4bu@A^&#p8KzVsbE?Dy?qrwU1y@7lQYtizyGhec(zKg2nMsp3=~;qlq$!>>H6l&BNmEbKB;WA4N1FDNqyZ%95lL!9 zl7imlX5d@Ww2L(DCQa=~(@fG7@HH7pn!X}Ut4Y%rq$z?l?SYjvEhA0wq~{KPB~3A; zX`iGiT;-;V?*Gc}lu6>O#Kp-R>pg;zTpf69=1fBZRgsDYXtQ8EE1tLff$; zqPvob__`aB5uCs_M4%d0VJ&hqQuak9L}3tyLc?;b$5!0IW0dU8aZnxgF}ydWHj021 zbFdqGaS1=ds}JLQG)7Z&!yqida;)h`6T-JRgkNw2f&D2Rv_c!CVkj14DGuQXezWrH z4^$q&-~{#25FZZY?BPR$@JHDc?h|nkNAZY;{}lU1(irg08=MUGU>}x`qQk(4qq*jA!KQsN?qVmyJEuK)sU79kkdaZNUDpz0s??7O_J0>h8tK=fyS1j|%x) zHS!#{{Ky=Z-X+Mkr*({D7<{`9Co%Y>(XlLBWxf0u{GG4dkdL+-BUMvl(=2sNK7%2* zx0fMTUZWRZJJ@2ZoG4Vqz<&IIht)r`~C|-)uzbvt{u9Y?NQ_85^^3Qyvl#d|`lq#QVd9IDh zMrG{Sf)UPG`tJ~u3i)q2UvOlO)?vG`N^p}_62be{Q$NMK4B@L}nWWRcXuHwJxOu0s zlgf9KJMS`e$^3P9CfVWAD=tJ%JC-hzo{CDQWo+mCoiv) z?YnjvEBmP-_FoSf`x=ck6qDBRm@&3w_KT=9I-4E4RnWQ~Ge%~M6y-X$9x2pQBulnP zA)X>}F>}0)ex$;lB1u+C5^5-g9k2d5Bgw5u)=2q0MT*N7$;%PR?4AWt+$Ux|(i27N zcFY)&EfyVfmXo^gF;=x~v3~OyD>_@OUp&Uj%ynlreD5(x*i%i@;v&RE}ijFp-7&RF|B#>&ilXRO^GV`b*OGuC#Gu`=`C8Edo0Sebe6 zjJ4iltjxT3##-w!R%YHiW4+@sR%YHiV=eULr{9C^RMLo6A!>9x=qYmUcQnR)Mw zHQi&Z%)EETn&>fBX5Kqvjqw;OGw+?TMtY2unfK0EX&z%`=Djo4V2`mf^WGV&ug6%K zdGCzX!(*(>ybpBbeHRb0BHZ%c8LPd=Sebe6jMd6xtjxT3#%k&@R%YHiV>R#?D>Lt% zv1)mYm6`X>SaBX>W#+vzmc?VN%)EETs^T$LX5KqvmGc-&&-*wf#F6*r9I>R<>-Aob zRn%iFJ@55c0Ul%Nd9TOv^%zUfdp%ZOkFoT;*JBx+vD`jwbxao8Yh5*_K00|CarZHuQ$kswQi9c*#ALD6^Mp zBX6?mg7)yHain@i8+wbS%i5h=#-zr}2R!WI_}|>K{jctHQpy*~3FWZzjdET&g!)Pc zWv_CC<>tz6<)G3+ImPb?&1 | grep -A 10 '> search starts here' | grep '^ ' | tr -d '\n') + else + $(info *** Warning *** Unsupported build with INCLUDES defined as: $(INCLUDES)) + INCPATH:=$(strip $(subst :, ,$(INCLUDES))) + UNSUPPORTED_BUILD := include + endif + ifeq (,$(LIBRARIES)) + LIBPATH:=/usr/lib + else + $(info *** Warning *** Unsupported build with LIBRARIES defined as: $(LIBRARIES)) + LIBPATH:=$(strip $(subst :, ,$(LIBRARIES))) + ifeq (include,$(UNSUPPORTED_BUILD)) + UNSUPPORTED_BUILD := include+lib + else + UNSUPPORTED_BUILD := lib + endif + endif + $(info *** Warning ***) + endif OS_CCDEFS = -D_GNU_SOURCE GCC_OPTIMIZERS_CMD = $(GCC) -v --help 2>&1 GCC_WARNINGS_CMD = $(GCC) -v --help 2>&1 LD_ELF = $(shell echo | $(GCC) -E -dM - | grep __ELF__) - INCPATH:=$(shell LANG=C; $(GCC) -x c -v -E /dev/null 2>&1 | grep -A 10 '> search starts here' | grep '^ ' | tr -d '\n') ifeq (Darwin,$(OSTYPE)) OSNAME = OSX LIBEXT = dylib - INCPATH:=$(shell LANG=C; $(GCC) -x c -v -E /dev/null 2>&1 | grep -A 10 '> search starts here' | grep '^ ' | grep -v 'framework directory' | tr -d '\n') + ifneq (include,$(findstring include,$(UNSUPPORTED_BUILD))) + INCPATH:=$(shell LANG=C; $(GCC) -x c -v -E /dev/null 2>&1 | grep -A 10 '> search starts here' | grep '^ ' | grep -v 'framework directory' | tr -d '\n') + endif ifeq (incopt,$(shell if $(TEST) -d /opt/local/include; then echo incopt; fi)) INCPATH += /opt/local/include OS_CCDEFS += -I/opt/local/include @@ -199,12 +237,16 @@ ifeq ($(WIN32),) #*nix Environments (&& cygwin) endif else ifeq (Linux,$(OSTYPE)) - LIBPATH := $(sort $(foreach lib,$(shell /sbin/ldconfig -p | grep ' => /' | sed 's/^.* => //'),$(dir $(lib)))) + ifneq (lib,$(findstring lib,$(UNSUPPORTED_BUILD))) + LIBPATH := $(sort $(foreach lib,$(shell /sbin/ldconfig -p | grep ' => /' | sed 's/^.* => //'),$(dir $(lib)))) + endif LIBEXT = so else ifeq (SunOS,$(OSTYPE)) OSNAME = Solaris - LIBPATH := $(shell LANG=C; crle | grep 'Default Library Path' | awk '{ print $$5 }' | sed 's/:/ /g') + ifneq (lib,$(findstring lib,$(UNSUPPORTED_BUILD))) + LIBPATH := $(shell LANG=C; crle | grep 'Default Library Path' | awk '{ print $$5 }' | sed 's/:/ /g') + endif LIBEXT = so OS_LDFLAGS += -lsocket -lnsl ifeq (incsfw,$(shell if $(TEST) -d /opt/sfw/include; then echo incsfw; fi)) @@ -458,9 +500,24 @@ ifeq ($(WIN32),) #*nix Environments (&& cygwin) $(info *** Info ***) $(info *** Info *** The simulator$(BUILD_MULTIPLE) you are building could provide more) $(info *** Info *** functionality if video support were available on your system.) - $(info *** Info *** Install the development components of libSDL packaged by your) - $(info *** Info *** operating system distribution and rebuild your simulator to) - $(info *** Info *** enable this extra functionality.) + ifeq (Darwin,$(OSTYPE)) + $(info *** Info *** Install the MacPorts libSDL2 packaged to provide this) + $(info *** Info *** functionality for your OS X system:) + $(info *** Info *** # port install libsdl2) + else + ifneq (,$(and $(findstring Linux,$(OSTYPE)),$(call find_exe,apt-get))) + $(info *** Info *** Install the development components of libSDL or libSDL2) + $(info *** Info *** packaged for your operating system distribution for) + $(info *** Info *** your Linux system:) + $(info *** Info *** # apt-get install libsdl2-dev) + $(info *** Info *** or) + $(info *** Info *** # apt-get install libsdl-dev) + else + $(info *** Info *** Install the development components of libSDL packaged by your) + $(info *** Info *** operating system distribution and rebuild your simulator to) + $(info *** Info *** enable this extra functionality.) + endif + endif $(info *** Info ***) endif endif @@ -581,9 +638,15 @@ ifeq ($(WIN32),) #*nix Environments (&& cygwin) $(info *** Warning *** libpcap networking support) $(info *** Warning ***) $(info *** Warning *** To build simulator(s) with libpcap networking support you) - $(info *** Warning *** should read 0readme_ethernet.txt and follow the instructions) - $(info *** Warning *** regarding the needed libpcap development components for your) - $(info *** Warning *** $(OSTYPE) platform) + ifneq (,$(and $(findstring Linux,$(OSTYPE)),$(call find_exe,apt-get))) + $(info *** Warning *** should install the libpcap development components for) + $(info *** Warning *** for your Linux system:) + $(info *** Warning *** # apt-get install libpcap-dev) + else + $(info *** Warning *** should read 0readme_ethernet.txt and follow the instructions) + $(info *** Warning *** regarding the needed libpcap development components for your) + $(info *** Warning *** $(OSTYPE) platform) + endif $(info *** Warning ***) endif endif @@ -616,13 +679,26 @@ ifeq ($(WIN32),) #*nix Environments (&& cygwin) $(info *** Info *** minimal libpcap networking support) $(info *** Info ***) endif + $(info *** Info ***) $(info *** Info *** Simulators on your $(OSNAME) platform can also be built with) $(info *** Info *** extended LAN Ethernet networking support by using VDE Ethernet.) $(info *** Info ***) $(info *** Info *** To build simulator(s) with extended networking support you) - $(info *** Info *** should read 0readme_ethernet.txt and follow the instructions) - $(info *** Info *** regarding the needed libvdeplug components for your $(OSNAME)) - $(info *** Info *** platform) + ifeq (Darwin,$(OSTYPE)) + $(info *** Info *** should install the MacPorts vde2 package to provide this) + $(info *** Info *** functionality for your OS X system:) + $(info *** Info *** # port install vde2) + else + ifneq (,$(and $(findstring Linux,$(OSTYPE)),$(call find_exe,apt-get))) + $(info *** Info *** should install the vde2 package to provide this) + $(info *** Info *** functionality for your $(OSNAME) system:) + $(info *** Info *** # apt-get install vde2) + else + $(info *** Info *** should read 0readme_ethernet.txt and follow the instructions) + $(info *** Info *** regarding the needed libvdeplug components for your $(OSNAME)) + $(info *** Info *** platform) + endif + endif $(info *** Info ***) endif endif @@ -802,6 +878,9 @@ endif # Win32 (via MinGW) ifneq (,$(GIT_COMMIT_ID)) CFLAGS_GIT = -DSIM_GIT_COMMIT_ID=$(GIT_COMMIT_ID) endif +ifneq (,$(UNSUPPORTED_BUILD)) + CFLAGS_GIT += -DSIM_BUILD=Unsupported=$(UNSUPPORTED_BUILD) +endif ifneq ($(DEBUG),) CFLAGS_G = -g -ggdb -g3 CFLAGS_O = -O0