# these contain: cl.exe, clarm.exe, link.exe, lib.exe # these contain libraries my %platforms= ( "hpc"=>{ "g:/Windows CE Tools/wce300/MS HPC Pro"; }, "palmpc"=>{ "g:/Windows CE Tools/wce300/ms palm size pc"; }, "pocketpc"=>{ "g:/Windows CE Tools/wce300/MS Pocket PC"; }, "pocketpc2002"=>{ "g:/Windows CE Tools/wce300/Pocket PC 2002"; }, "stdsdk400"=>{ "g:/Program Files/Windows CE Tools/wce400/STANDARDSDK"; }, "stdsdk410"=>{ root=>"g:/archive/software/WINCE410/PUBLIC/COMMON/SDK", }; "win32"=>{ root=>"G:/Program Files/Microsoft Visual Studio .NET/Vc7", root=>"G:/Program Files/Microsoft Visual Studio .NET/Vc7/PlatformSDK", root=>"G:/Program Files/Microsoft SDK", }, "win16"=>{ root=>"g:/archive/software/VC152C/MSVC15", }, ); my %compilers= ( msvc152=>{ root=>"g:/archive/software/VC152C/MSVC15", version=>"v8.00c", cc=>{ 286=>"bin/cl.exe", }, link=>"bin/link.exe", lib=>"bin/lib.exe", }, evc2=>{ root=>"g:/Program Files/Microsoft eMbedded Tools/EVC/WCE201", version=>"v11.00.7022", cc=>{ sh=>"bin/shcl.exe", mips=>"bin/clmips.exe", x86=>"bin/cl.exe", }, asm=>{ sh=>"bin/shasm.exe", }, link=>"bin/link.exe", lib=>"bin/lib.exe", }, evc3=>{ root=>"g:/Program Files/Microsoft eMbedded Tools/EVC/WCE300", version=>"v12.00.8168", cc=>{ sh=>"bin/shcl.exe", mips=>"bin/clmips.exe", x86=>"bin/cl.exe", ppc=>"bin/clppc.exe", armv4=>"bin/clarm.exe", armv4t=>"bin/clthumb.exe", }, asm=>{ sh=>"bin/shasm.exe", armv4=>"bin/armasm.exe", }, link=>"bin/link.exe", lib=>"bin/lib.exe", }, evc4=>{ root=>"g:/Program Files/Microsoft eMbedded C++ 4.0/EVC/WCE410", version=>"v12.00.8804", cc=>{ sh=>"bin/clsh.exe", mips=>"bin/clmips.exe", x86=>"bin/cl.exe", armv4=>"bin/clarm.exe", armv4t=>"bin/clthumb.exe", }, asm=>{ sh=>"bin/shasm.exe", armv4=>"bin/armasm.exe", mips=>"bin/mipsasm.exe", }, link=>"bin/link.exe", lib=>"bin/lib.exe", }, vc7=>{ root=>"g:/Program Files/Microsoft Visual Studio .NET/Vc7", version=>"v13.00.9466", cc=>{ x86=>"bin/cl.exe", }, link=>"bin/link.exe", lib=>"bin/lib.exe", }, gcc=>{ root=>"c:/local/cygwin", version=>"v3.2", } ); # these contain windows header files # platform={ppc2002|win32} # cpu={arm|x86} # build={debug|release} # compiler={msvc|evc|gcc} make(output=>"nah6utils.obj", sources=>["nah6utils.cpp"], target=>"ppc2002", cpu=>"arm", build=>"debug"); make(output=>"nah6utils.dll", sources=>["nah6utils.obj"], target=>"ppc2002", cpu=>"arm", build=>"debug"); sub make { my %p= @_; if (!exists $p{type}) { if ($p{output} =~ /\.(...)$/) { $p{type}= $1; } else { die "cannot determine build type for $p{output}\n"; } } if (!exists $p{compiler}) { if ($p{target} eq "ppc2002") { if ($p{type} eq "dll" || $p{type} eq "exe") { $p{compiler}= "link"; } elsif ($p{type} eq "obj") { $p{compiler}= $evc{$p{version}}{$p{cpu}} } } elsif ($p{target} eq "win32") { if ($p{type} eq "dll" || $p{type} eq "exe") { $p{compiler}= "link"; } } } }