From d6584e5b8b37075f696e7ba6e1d19a738881a7bb Mon Sep 17 00:00:00 2001 From: Eric Wing Date: Fri, 21 Mar 2008 03:44:37 -0700 Subject: [PATCH] Resync (forgot to add new files?) --- .../data/_modules/_c_make_c_compiler_id.c.in.i | Bin 0 -> 1218 bytes .../_modules/_c_make_c_x_x_compiler_id.cpp.in.i | Bin 0 -> 1042 bytes .../_modules/_c_make_fortran_compiler_id._f90.in.i | Bin 0 -> 790 bytes .../_c_make_ingest_o_s_x_bundle_libraries.cmake.i | Bin 0 -> 3173 bytes .../store/data/_modules/_c_make_platform_id.h.in.i | Bin 0 -> 889 bytes .../.hg/store/data/_modules/_find_c_v_s.cmake.i | Bin 0 -> 903 bytes .../store/data/_modules/_get_prerequisites.cmake.i | Bin 0 -> 4532 bytes .../data/_source/_qt_dialog/_c_make.desktop.i | Bin 0 -> 274 bytes .../_c_make_ingest_o_s_x_bundle_libraries.cmake.i | Bin 0 -> 6532 bytes .../_source/_qt_dialog/_mac_install_dialog.ui.i | Bin 0 -> 1242 bytes .../_source/_qt_dialog/_q_mac_install_dialog.cxx.i | Bin 0 -> 761 bytes .../_source/_qt_dialog/_q_mac_install_dialog.h.i | Bin 0 -> 253 bytes .../store/data/_source/_qt_dialog/cmakecache.xml.i | Bin 0 -> 273 bytes .../data/_source/_qt_dialog/postflight.sh.in.i | Bin 0 -> 184 bytes .../data/_source/_qt_dialog/postupgrade.sh.in.i | Bin 0 -> 84 bytes .../data/_source/cm_c_make_policy_command.cxx.i | Bin 0 -> 1614 bytes .../data/_source/cm_c_make_policy_command.h.i | Bin 0 -> 2767 bytes .../data/_source/cm_cmake_policy_c_ommand.cxx.i | Bin 0 -> 779 bytes .../cm_documentation_formatter_docbook.cxx.i | Bin 0 -> 2427 bytes .../_source/cm_documentation_formatter_docbook.h.i | Bin 0 -> 788 bytes CMakeLua/.hg/store/data/_source/cm_e_l_f.cxx.i | Bin 0 -> 8568 bytes CMakeLua/.hg/store/data/_source/cm_e_l_f.h.i | Bin 0 -> 1813 bytes .../store/data/_source/cm_order_directories.cxx.i | Bin 0 -> 4742 bytes .../store/data/_source/cm_order_directories.h.i | Bin 0 -> 1263 bytes CMakeLua/.hg/store/data/_source/cm_policies.cxx.i | Bin 0 -> 13408 bytes CMakeLua/.hg/store/data/_source/cm_policies.h.i | Bin 0 -> 3950 bytes .../.hg/store/data/_source/kwsys/_c_p_u.h.in.i | Bin 0 -> 1282 bytes .../data/_templates/_c_make_v_s_macros2.vsmacros.i | Bin 0 -> 11151 bytes .../_get_prerequisites_test.cmake.in.i | Bin 0 -> 1114 bytes CMakeLua/Modules/CMakeCCompilerId.c.in | 84 +++ CMakeLua/Modules/CMakeCXXCompilerId.cpp.in | 72 ++ CMakeLua/Modules/CMakeFortranCompilerId.F90.in | 78 ++ CMakeLua/Modules/CMakePlatformId.h.in | 83 ++ CMakeLua/Modules/FindCVS.cmake | 56 ++ CMakeLua/Modules/GetPrerequisites.cmake | 491 ++++++++++++ CMakeLua/Source/QtDialog/CMake.desktop | 13 + .../QtDialog/CMakeIngestOSXBundleLibraries.cmake | 339 +++++++++ CMakeLua/Source/QtDialog/MacInstallDialog.ui | 103 +++ CMakeLua/Source/QtDialog/QMacInstallDialog.cxx | 69 ++ CMakeLua/Source/QtDialog/QMacInstallDialog.h | 20 + CMakeLua/Source/QtDialog/cmakecache.xml | 8 + CMakeLua/Source/QtDialog/postflight.sh.in | 4 + CMakeLua/Source/QtDialog/postupgrade.sh.in | 2 + CMakeLua/Source/cmCMakePolicyCommand.cxx | 129 ++++ CMakeLua/Source/cmCMakePolicyCommand.h | 111 +++ .../Source/cmDocumentationFormatterDocbook.cxx | 254 +++++++ CMakeLua/Source/cmDocumentationFormatterDocbook.h | 45 ++ CMakeLua/Source/cmELF.cxx | 833 +++++++++++++++++++++ CMakeLua/Source/cmELF.h | 99 +++ CMakeLua/Source/cmOrderDirectories.cxx | 531 +++++++++++++ CMakeLua/Source/cmOrderDirectories.h | 88 +++ CMakeLua/Source/cmPolicies.cxx | 582 ++++++++++++++ CMakeLua/Source/cmPolicies.h | 99 +++ CMakeLua/Source/kwsys/CPU.h.in | 111 +++ CMakeLua/Templates/CMakeVSMacros2.vsmacros | Bin 0 -> 63488 bytes .../Tests/CMakeTests/GetPrerequisitesTest.cmake.in | 146 ++++ 56 files changed, 4450 insertions(+) create mode 100644 CMakeLua/.hg/store/data/_modules/_c_make_c_compiler_id.c.in.i create mode 100644 CMakeLua/.hg/store/data/_modules/_c_make_c_x_x_compiler_id.cpp.in.i create mode 100644 CMakeLua/.hg/store/data/_modules/_c_make_fortran_compiler_id._f90.in.i create mode 100644 CMakeLua/.hg/store/data/_modules/_c_make_ingest_o_s_x_bundle_libraries.cmake.i create mode 100644 CMakeLua/.hg/store/data/_modules/_c_make_platform_id.h.in.i create mode 100644 CMakeLua/.hg/store/data/_modules/_find_c_v_s.cmake.i create mode 100644 CMakeLua/.hg/store/data/_modules/_get_prerequisites.cmake.i create mode 100644 CMakeLua/.hg/store/data/_source/_qt_dialog/_c_make.desktop.i create mode 100644 CMakeLua/.hg/store/data/_source/_qt_dialog/_c_make_ingest_o_s_x_bundle_libraries.cmake.i create mode 100644 CMakeLua/.hg/store/data/_source/_qt_dialog/_mac_install_dialog.ui.i create mode 100644 CMakeLua/.hg/store/data/_source/_qt_dialog/_q_mac_install_dialog.cxx.i create mode 100644 CMakeLua/.hg/store/data/_source/_qt_dialog/_q_mac_install_dialog.h.i create mode 100644 CMakeLua/.hg/store/data/_source/_qt_dialog/cmakecache.xml.i create mode 100644 CMakeLua/.hg/store/data/_source/_qt_dialog/postflight.sh.in.i create mode 100644 CMakeLua/.hg/store/data/_source/_qt_dialog/postupgrade.sh.in.i create mode 100644 CMakeLua/.hg/store/data/_source/cm_c_make_policy_command.cxx.i create mode 100644 CMakeLua/.hg/store/data/_source/cm_c_make_policy_command.h.i create mode 100644 CMakeLua/.hg/store/data/_source/cm_cmake_policy_c_ommand.cxx.i create mode 100644 CMakeLua/.hg/store/data/_source/cm_documentation_formatter_docbook.cxx.i create mode 100644 CMakeLua/.hg/store/data/_source/cm_documentation_formatter_docbook.h.i create mode 100644 CMakeLua/.hg/store/data/_source/cm_e_l_f.cxx.i create mode 100644 CMakeLua/.hg/store/data/_source/cm_e_l_f.h.i create mode 100644 CMakeLua/.hg/store/data/_source/cm_order_directories.cxx.i create mode 100644 CMakeLua/.hg/store/data/_source/cm_order_directories.h.i create mode 100644 CMakeLua/.hg/store/data/_source/cm_policies.cxx.i create mode 100644 CMakeLua/.hg/store/data/_source/cm_policies.h.i create mode 100644 CMakeLua/.hg/store/data/_source/kwsys/_c_p_u.h.in.i create mode 100644 CMakeLua/.hg/store/data/_templates/_c_make_v_s_macros2.vsmacros.i create mode 100644 CMakeLua/.hg/store/data/_tests/_c_make_tests/_get_prerequisites_test.cmake.in.i create mode 100644 CMakeLua/Modules/CMakeCCompilerId.c.in create mode 100644 CMakeLua/Modules/CMakeCXXCompilerId.cpp.in create mode 100644 CMakeLua/Modules/CMakeFortranCompilerId.F90.in create mode 100644 CMakeLua/Modules/CMakePlatformId.h.in create mode 100644 CMakeLua/Modules/FindCVS.cmake create mode 100644 CMakeLua/Modules/GetPrerequisites.cmake create mode 100644 CMakeLua/Source/QtDialog/CMake.desktop create mode 100755 CMakeLua/Source/QtDialog/CMakeIngestOSXBundleLibraries.cmake create mode 100755 CMakeLua/Source/QtDialog/MacInstallDialog.ui create mode 100755 CMakeLua/Source/QtDialog/QMacInstallDialog.cxx create mode 100755 CMakeLua/Source/QtDialog/QMacInstallDialog.h create mode 100644 CMakeLua/Source/QtDialog/cmakecache.xml create mode 100644 CMakeLua/Source/QtDialog/postflight.sh.in create mode 100644 CMakeLua/Source/QtDialog/postupgrade.sh.in create mode 100755 CMakeLua/Source/cmCMakePolicyCommand.cxx create mode 100755 CMakeLua/Source/cmCMakePolicyCommand.h create mode 100644 CMakeLua/Source/cmDocumentationFormatterDocbook.cxx create mode 100644 CMakeLua/Source/cmDocumentationFormatterDocbook.h create mode 100644 CMakeLua/Source/cmELF.cxx create mode 100644 CMakeLua/Source/cmELF.h create mode 100644 CMakeLua/Source/cmOrderDirectories.cxx create mode 100644 CMakeLua/Source/cmOrderDirectories.h create mode 100755 CMakeLua/Source/cmPolicies.cxx create mode 100755 CMakeLua/Source/cmPolicies.h create mode 100644 CMakeLua/Source/kwsys/CPU.h.in create mode 100644 CMakeLua/Templates/CMakeVSMacros2.vsmacros create mode 100644 CMakeLua/Tests/CMakeTests/GetPrerequisitesTest.cmake.in diff --git a/CMakeLua/.hg/store/data/_modules/_c_make_c_compiler_id.c.in.i b/CMakeLua/.hg/store/data/_modules/_c_make_c_compiler_id.c.in.i new file mode 100644 index 0000000000000000000000000000000000000000..977900ef390cd36a9c41712df9fdba1d88303e88 GIT binary patch literal 1218 zcwS>*WME_f1E$>!3~a}sY@h#7pmP7ZV)XX4dD5=`duRCTmse@Ut1uveiaD*JxAPtu z2-Kbr?|HD)oV83odhHc~3~5m(mrG%*LsNHlGIl4V=PuW|^=|)r3lWxFCwZkqXXfmb znO}ITX4Xbcfk|SOE8jle(x|B_y2a+h`SXfXPd7dHIXEY)BGIQI&C;9qbV66)zS~8& zd{Sy&S((1pEC z^?jG01s~Y9BjF~eqT>vnwj=WWixMnm%sF)X_P)#C{Wm`CW!&bd^1@kLpzW#dnPZ=t zYxaIjdC^)se}YC9aYA6Qjtj)l}b_pNdGXu+`IXK~O{YgV5%Yu~+g-%uKTm5=ov%cHGkIV<_SH$LS) zZ4_g(_v5Z@$L`E{wCQr>+AzK4r(7Ghwq0t_>vq!Gy&^m9K`QUR4!s-Co4>26{F78~ z4$RrU@@ImaV(c&3o2!iT{4*KlbT=v)ZN^qw77@h-a>0c*1m1dv@Mq zf71-3?>|qz-?|{-QG$$Fms-c8MNyVA8Z$rJZu>a5aE@Q2gOa$@I+hcsa+a{nO#iX_ ztY@n%m%eS{k15Nq6li{k^PYMnTQ4wM`q#VI{Jg_+q~=s)hB9rQlzGN#`La_-wu?LymIdXUxM6s8#dEH$KlPRrcirh+ zsSyd*^cEp)Bp5+% zyKBtcI$0;tHRS7eh2J0NzvYlD`HAYb(Efv7M+^ko9=k5||9Cl>|6T0IEm~q%L~Xlt z46SqBZ!Pgz*5&^q+wx+pi-!Ww=lcKR&-?bzu`WC(dv}f0n&2~9-T^NhHmDz$Q`YX3 zKPYG%ynx4dM(aJzci%55HD2(XrNv;oa@w6IraW7$S?8H>Hf~k0d3NMthd_R!Vbk`N zvV#93Kdl$}Gl{!Qsm0{1&7_o?4;GJdPiEcC+#aF$KK16B?%;5sDs~n20|3!IF~N((A8 z$P_amm4yeXp0Ltt1-a67Cbpu>QZS4?8aM|$ml?|;NzzhOrhc3QU|K5;Jr~H11ada; zi!r3h1WPT;>U=fNlb&;PPQzoJ+fn z`-=_QN=q1?!at{`1xSlamK`Pu31&f(^pV)w251Pq>13XGW9SjJWVGrbh>2G)&yOe5 zWEu@-%8R9s&k_uJ8m_70o z2XcR`oB0_Dnm!=-3&gx&I=Xb{1n>&ggS!4XY|`}s6PspYTU)5>zHea{g3U)>;CBk( zg;Ckup}}Tl?MUJ`!xe*H+hrm_HD;?6D3RfNo0H0#Hcr2^Jm)F3^@3W`R4bhKSU=aH z8}IXaEeL8+g=O6_6csb3*?>(J+tk1yiFt5cZW(R%)|<031^>Lcx1dE?t=^m;n&@W} zV;G=Jm0XLlQ>yc98q|70rVEPN$y_B{*w1_Tfh)&955DhAz1R5r-l^l9k(qlnNpL!o zJ!cY5-S|A1&(Mh5&X3QW|K^MUvj6}900O1}00000>;M1U z!M!Vk7SiXKIlY<9LCX`3>cD*k&Xx{C-2gkj$2ed65W)Val-b0@dU8mlyBl{qT3 zBiNJ27CkFT=)of4tUdg>-Q)PxW3_&GYVNO}H_a9N Mo4=^O0h4!eBpJr%4*&oF literal 0 HcwPel00001 diff --git a/CMakeLua/.hg/store/data/_modules/_c_make_fortran_compiler_id._f90.in.i b/CMakeLua/.hg/store/data/_modules/_c_make_fortran_compiler_id._f90.in.i new file mode 100644 index 0000000000000000000000000000000000000000..5a81211d9857f20b6598ffaf66f4e6d0dec23a8e GIT binary patch literal 790 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 LN=W|$`16K;RpJxv literal 0 HcwPel00001 diff --git a/CMakeLua/.hg/store/data/_modules/_c_make_platform_id.h.in.i b/CMakeLua/.hg/store/data/_modules/_c_make_platform_id.h.in.i new file mode 100644 index 0000000000000000000000000000000000000000..b40a017e2790f0e72b5c34183abd9fbbff980b1a GIT binary patch literal 889 zcwS>*WME_f113%e1`Zi0+vh(NM0CDboD;Bv{rI`}o8v!S|HpFmTRa02sF+hb)i-~! zfk4~)KU~^7-?(Khu3OQ*_S=N_Tc;$5P4->2%4y4tYqzerNX+WJBEO&QlGhDm+h>yZ zjyKz?9cEm(GGOVMz9;KX@pru`_ni6k=xVio_eGP!3;j+cy!e{x7BtaQ^-_M}p2@3z zeV@B$|81Q<>n*kCUe9OXoVGaQ+@VmP9#%px;xh0ZfA7PihLiByrLRA4_21& zEAct&^gcfET6L6-qpvB!@^JFyB@E&wv2n3cyDu1Ii{E-K@Y8LTiG9X`)s>1zX87yg zR6pLb+(_YzE9cLso|m_@5|XPID#&uD{S)68%p>s1t2E?mzRMx)qdQhhTwHsV$79Yk z;Y|L`ia%^5Sg-usyhWw$hWAI-qial9w(3_uUv`z_{k!mjZEY^e2Y0ASotM~dy+(4` zI?;xo+u!G{OsqTdLC;s#V5)0r@m*6!jlM%)&zipLd&QBUzohQe)~8vDdfb}xpIrEQ zCCD=QvO&7O#n;&j54Y{qW9DA-TI7E-yFWj}MfbUNU;Uo_b7bGibttghC90{`x7j$D zHSBz8+S>-j3iF=x`Z3(|4L;||@;98hdGr_W-J5C*B@u5=9kSdbc5C_eIJaj>i`*}S zG>UFBzW?`v$%f{rrW4x_`2@ed*2KfUBUO@hMPi89%xsyp zuZ5y^9RK%oK59Y=?RWHIF%)op?Df)k$B&eo-0ACg2&5J`$Oe`xIjaTVmGxBjT^jXq zPu!8NzK#hF8n5>MPdf8(xuN^%Pm^n>X!s`|Y!@xV{~oXBuB{ HweUFr5pAd6 literal 0 HcwPel00001 diff --git a/CMakeLua/.hg/store/data/_modules/_find_c_v_s.cmake.i b/CMakeLua/.hg/store/data/_modules/_find_c_v_s.cmake.i new file mode 100644 index 0000000000000000000000000000000000000000..bff3c36d7df99df2e9ba21217614963d6fd67f91 GIT binary patch literal 903 zcwS>*WME_f1Ezfp3~ato_JRLUV8&rL<7~~%8Gl*Yyi;!~81E9P&0#GiMSowl{HVt+%Vzl#>F=luGaeZJMU2!<6?RJ$rC)* zowxly=k@IBmPxA4J5OmH3^?{I#;BL4<(U`9*8@+P)@Gc1IXB_gB}*rcpZAl6{&D<` zeDt+V@ztWHS*k`{OSOB0raliz^I+ijVokr4GilMsH&zULG_~7)>{(gF&@Z>5?bXyX z3dVnYKQm1UouxNpEx(X)(1kB@O1Tf-ngrVA=V#sEaI(By8nv5MecDGMS^KxI;s`DxR*fmvI;me^%hGrCv%RMT zon3R{*`%FU+PDrHRb(x5Y*wD~ane$^sr~DtwyseLQc70+_*PE86|`8tX7;ugs}4XUTNJXZ`{8W^+re?m(4FIV&3i&;+e=7btlMtu3L#g^lzoyfLw z()ww)54{c9D4)DiO!e&T>e-CHI1fBtF8*rmf6F^t^Uw3&+iY8vd~3U-_52sVY?Fg# z&&zm__Vnt3xO`u(c%>BfWO-BXrw4wmI&bagce>iibm7geQ&Uo__hz=O;-9(U)~m{& zX3{MuKZsq8xh!yRSz<%R&J{%oS9~LkH*a-KysLIOGGcvT0#l)aqqM||sM+r69_69WIRzMcJx z+5H-S0W94EfhREa`#@9wK@bT_{gW;VKKWmN&*^VT{VBWN&2o=BzsEA50G6)|46MdL zhOL5vQnZJ+Yh=8Szq6xHysx9Pho_%wOiZx9TS&NL5Rl~@790~3P@Gy+mRe-(nO9tr On3EHbSdtN|#03D-oR+Qt literal 0 HcwPel00001 diff --git a/CMakeLua/.hg/store/data/_modules/_get_prerequisites.cmake.i b/CMakeLua/.hg/store/data/_modules/_get_prerequisites.cmake.i new file mode 100644 index 0000000000000000000000000000000000000000..0ce43ec0885a1eaf05bc27bd89eaa97f19541810 GIT binary patch literal 4532 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 S{J``nKcMuiwef#z@!>Qit);pE literal 0 HcwPel00001 diff --git a/CMakeLua/.hg/store/data/_source/_qt_dialog/_c_make.desktop.i b/CMakeLua/.hg/store/data/_source/_qt_dialog/_c_make.desktop.i new file mode 100644 index 0000000000000000000000000000000000000000..947755fc76a8e6f80e1e567c30ea4e2ba7001116 GIT binary patch literal 274 zcwS>*WME`~fJ+PvjC>F#)5-r(z_Ld-V!QsqEt4(g=(29klJQnq)6akeD(3k1*=8Sh z5ODeZS2QbV-sBR-!q$nR9*X8+P6|72%n6@<^!w4faU1^CiX?8ho%rnR?^}VE-afwa zD(BsQEQqmS`@5&I$!U?t8%kcb`UddGV!o-88>H_3p|u zt|y%96&Lr$-#QhRC#P0n%w2w0-XrVQl7z%1Z!8yF7T)FbVP)H^mdT5Aw>_2WD^}X; zdvc>=7Tc3CtY*;?Eb^FD~u50_)&hl^l Kz|JC+WC#GThkT&` literal 0 HcwPel00001 diff --git a/CMakeLua/.hg/store/data/_source/_qt_dialog/_c_make_ingest_o_s_x_bundle_libraries.cmake.i b/CMakeLua/.hg/store/data/_source/_qt_dialog/_c_make_ingest_o_s_x_bundle_libraries.cmake.i new file mode 100644 index 0000000000000000000000000000000000000000..491d53df3e36c93d2e56207fd4625e13e2963af4 GIT binary patch literal 6532 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 UWQfT&-y86WDgA=Mz1*|?UzW6gCIA2c literal 0 HcwPel00001 diff --git a/CMakeLua/.hg/store/data/_source/_qt_dialog/_mac_install_dialog.ui.i b/CMakeLua/.hg/store/data/_source/_qt_dialog/_mac_install_dialog.ui.i new file mode 100644 index 0000000000000000000000000000000000000000..d386b1bc57afac079d1c73579c4b5614c45a47ea GIT binary patch literal 1242 zcwPb81SR_b0RRC20000000NKz00{^H0000000K7u|NsC0|Ns9W9}(eE_Lgi3q=sao zo^oV?-RIi?00000000000001ZoTXOHZrd;nzV|5vKS1QB?SK`E5AA+BAcqz!uw$Xv zOiWZ314&+zKK*1{b{xlDQuIbr^hfd|DOr@r{(`YcdKO(z;)o>|Or%O$n|wp5XeD@~ zdGiLd6*yMwv*@WgkC>JP%%WEFj!di#t--imI9mY~;LNT$Wx_z}YKe($5(~Z!%C1s& zLGjUCp4?1t1aHK~oCB_Mmt0<53m)VeleeIPx6#K^*`Us7^NdbGn~ik_^(y(Lt&>Wz zdnyX4Gd4#J?3qYe!Gp^&x{^C8_muoJn9XZb3qA;6NV7s64w=wpu>g~N6+B2yDg6*f z5Oyt7pUe>B%YQM@LBR}dX3=HDQc`8%`yJP!$Mf=4hd1c*TrNPhO;(liGHrd2a&xeC z-C@Vm6&~uv_kPevL6$?_BGKKopGDpni;B#q+R~7NDBA(HbrGqk`haWY)wyQ ze2>GBLC{V*?De5?10N%Ka<{h+-s6qDixRvxc1XjxBQ@X~Jor67K(35?wS5$>i8(u=W+#VRr@-dunF)Q~TRvu+jHuFvjDx^hWt} zwPf_!N=A#ASGWG>DiOTdw!yyk%)O8O|AwW~q+ogdcSBnHe+56pl`eRR$;CgtPPR4x z00002kN^Mx00GJX016@i0000000KDx00030|NsBnZS|9Im^3C@76(4=xwiAtOIK|G z00000000000001ZoUN0=YTPgohSh{Z$)SflKoNd`m3NyGvUq)HX=x#c4V3m6wDRm) zM3#&+W|KZhA1Sxq`UuT?bZptlF3q-Gh(R#=t(p1ex6By(&KSF;m2!HrwJxyCPfpWJ z#PFz-OVFzl^YNRrO!V;)W6ypucJPyOU3*3&RNTAuEP0)9~9lQH(ET;jdH!##xStx3^qyUO2n>7&tz2&2+xiy^%S5s{?Z zWum2y;iLTNF8*`505hPQxY>*MlMN`1;UAnSz)zo)dc2cbTX z`SF%16w*Dg-R1vZgDxj~TJ*Wpfv+{0q&!Fj9&W0IGg@(@?N#9DIF>*xRV8iFia;8X zaku2El2^d#r-+9_4N5OH6eLCCm!0wdx-Ng9uAMKwdRcGaE~saYzJW}1;U1sxH{2Fg EF7Gi~lmGw# literal 0 HcwPel00001 diff --git a/CMakeLua/.hg/store/data/_source/_qt_dialog/_q_mac_install_dialog.cxx.i b/CMakeLua/.hg/store/data/_source/_qt_dialog/_q_mac_install_dialog.cxx.i new file mode 100644 index 0000000000000000000000000000000000000000..7d19375ff9a483a2e7b4bb498df5f4b953786b61 GIT binary patch literal 761 zcwPbd0tWp60RRC20000000OxH00*rA0000000K7u|NsC0|NsAfJ>f%f7pYLFJ0miS zmuv(ly@%ic00000000000001ZoTXJ!Z`v>re$TJ)(idkfq0a^?wJV#Dx|Rs4J#14I z5(8cxJBpnFMeMil948?(bYf~ALVWk#_nqy#K+7c=KxOmtm{b9P5d=TEzKY>~v2Q%zrs^$g8#$>L*W-N@A0BC{_jybQ4l zm9@|3RqER0ZFi}3ObE0f6N`#rDxp;OY<>!rggsx&iH;`)65DGrs!=jr)5wSh*J%pf z6KW;}A>n=j&T&CeMAZR)6l2%-&B?iz&$RtW%;gy26LGq%!Eb^ zke5C9=@)UnVlNaR==_{{_Tsn2yOu!n>SJIdLXBC$d3YoSCc=aQtcvi>$357Nok=^o z85z!$*WME`~fV~V1jKvTpli7bLSXmJF<+bRt)s9QfXz%Iu+BS9eGYtkLP%)>p{~%YB zgNW<*_u6th4DB5kx87W&;KUVm>PgS9j2VLIS6r`bU#_W`dAs=C-aXF)mhCuUV7IAc zeNSqT+mR*bCNs_Pn;>+$FGMR_uRxYRhk1fm+8LW(yJ=s2gSwJM o9{x8huJiw`%vir>g~(*Jh+RLkZRfDeXKYXwSk literal 0 HcwPel00001 diff --git a/CMakeLua/.hg/store/data/_source/_qt_dialog/cmakecache.xml.i b/CMakeLua/.hg/store/data/_source/_qt_dialog/cmakecache.xml.i new file mode 100644 index 0000000000000000000000000000000000000000..15fbaa17193380c3d62fcc2d2ec99440098aa6c1 GIT binary patch literal 273 zcwS>*WME`~fQt+ajCv3z)5-r((3yAC^YQuf&+8o*&1$p{-S_!)(mDntP%+2$ylviL z10L1~cb5xnIi0h8(T2H-4%_n1GD>uAYkk2lB)xn4`lRJ?JNEcLN-mGuE6jiD=&=i@ zzkl=P;R*t6(YK$WHOa{q?Z$XkZOl3L|`D|;)O4oUE& z1ur-=$o2MxOIMJss~^0jZk*?!&R0tZ`+^o J*Home1OSeRdl>)# literal 0 HcwPel00001 diff --git a/CMakeLua/.hg/store/data/_source/_qt_dialog/postflight.sh.in.i b/CMakeLua/.hg/store/data/_source/_qt_dialog/postflight.sh.in.i new file mode 100644 index 0000000000000000000000000000000000000000..7e47f4e34ee19ead5412626c1a237657a68e9d4f GIT binary patch literal 184 zcwS>*WME`~fC?bq31Kps|AzvRsOR3Sk;R6(YmTb8rS$xNGodVj0SQ#h2@bpBf9lL- ze=nVL54?QOod^#IGQ3n?@U8SqS?~8R+^RQ=6mKO&ew28fY=Sa%kGkYFQIx*WME`~01+S-hA^4T|3kt2&#V`&=AT&d{cwQv`@GM$_ydF38IVA!vZ8)cW}bdh PVsQpnYDH#=f&mu*0}UC5 literal 0 HcwPel00001 diff --git a/CMakeLua/.hg/store/data/_source/cm_c_make_policy_command.cxx.i b/CMakeLua/.hg/store/data/_source/cm_c_make_policy_command.cxx.i new file mode 100644 index 0000000000000000000000000000000000000000..a8d2e49c36e1a8beab3729f9f93f3c93b52ecb49 GIT binary patch literal 1614 zcwPZc2C?}70RRC20000000P7S00w*j0000000LwG|NsC0|NsAW>+*`Vkue;I|E!=( z{Wq{ww3j^q00000000000001ZoV8PHPunmQ{hnWO)gjbCNod7~Ej*+wlr>r(QPP6Y zgpf(y)>>kBw$qj&{`;gk=;yQBEb%LL#gu#zjUA3bx`PF?kQtyrhUk#?sqBGECta-? z3)n(Tm+)yprUn)4?qcAS=!ybKs(ovJ|Gm54a$6s8>m9Vb=0OQPr&2M&y|Nr#um4wcL4k>gA%4dQbpy0jvZu6 zD1Bmd^h$$}Fw=VOx$bhgbkZD~bcCF`onf!*J{_IuJOi8=jHxCpQ;yMwYdB*Hl$ex? z0QY02v}8AhrenAWhn>M_2!8((F8nz5`@_paSTa2mg$BByydu#vgy!>%AqIIQ;rbTD z1bXc_=pe}d7bk;&#Y#>II{LZ8F$@{hO=&j$Tnv@ zFXT)!l0`(Ry3%9MThJ5@eN^tvo$%=i4uUJa4Ma{=1Bu!znii(@L=#;o*tV@ZoFtn- z-5hZg`%ddN96{5@@SRm%7E^mC3Ds>Wg{;>~%UsV(HR!c(1w+FD(U4K1&|jRIaz#$L zc53!v$swsOB!>yf6g821>si$=`&V#$47EY`v0hgU-j0)S(EmpTYfJqs#QyEbqfye? zRI~ZVno*%<>$YF(D;h+9$uH(F>8)R#h>uA~iLQS%T=mYMJJeXPRQA$>_tp>8dG~Dq z00002!~g&Q00RmD01WE@0000000Nr;00030|NsAf^+rwr z00000000000001ZoV8WmZqqOn4xsHKcf7$_G@(|aS=$K-y0#M9Dh-LP)e7TcOejm; z)>~o^+vzBeEVfvr>Hm_02}T)~G&%bsON22uV59lh+T(gvKv5w~k*e>%kX1e;{Tb zfDTKZ7)e*skEB$FCe+Hd4)Dob)tJgkyH8X{2rf#FAnzk8hy+hTKs>2{GXe+@g@h^B zDQ{``pLqU4_*D&YsYiZW)(W$%``=~(kE+MeYJt=5ymICv3Zf#xlEAwj8w3Qy@9_aK zzhQtF6o3Sh@xLKt|10aYlX7tGj7LpKIV zvL1SvQ#y9J$Y;+xBSRXHO1l@yagPVopO%(U>h^BSsN1_kLKuI63_nk}nEB;=La7EK z%3*1~H%R`1sxglgl2HDbvJu3~ygb+IG(GGb^j~!Mml-dqqDAwen>pJ16g?gR_+huN z1m=ZT;)P(6Akb`r6Kfr@GsZ74Ln^RhQn}%+7R2V5LYTuD!cwWb2mk{ z`Z+#VzSN409AdKXkTgeB{SHTqO#lBs1!liBN1u{G+k&Q;osINQ~Ns#8Yb(P^! zJvK=9V!AV(^xgY-OtkhdtrPN=7_SGr=~t$MC+(Zf>|dUcz>tKXK5{zc!VM|o;>bPMTg!2_>$tbA MlLdGF0aez@n-K&5E&u=k literal 0 HcwPel00001 diff --git a/CMakeLua/.hg/store/data/_source/cm_c_make_policy_command.h.i b/CMakeLua/.hg/store/data/_source/cm_c_make_policy_command.h.i new file mode 100644 index 0000000000000000000000000000000000000000..d7248c5a07349b291b1099245fb05e7934be34fa GIT binary patch literal 2767 zcwSYMbyyQ>ABMLn9gf%lIVw3AbF_fcjRSNrq(o|TOG`@(k%rM8a4^6^!pQ~-Y#<@s zAtEIqphzho$fxJ?yRPp%e>~Uw@9%!E`vCv}K)^qt69E8N!~gpRIh_2-k~aS{9duZh z)<9oe=Xm!WQCY|&;Qtc(pvv6acUl4b^NZbWzvR~2m86X5S%Em;*@Z-|WkW!`_-y)zmXp!&=uzcEh}{qUlEan=)+Z$iLBp$2(lGP7 zqk+WLQ^gBggCF@3d5;s>)dezy_ir9vda(f3E7ac&oR4rL$&L32B?IVDn&<%g1g>Dw z1;!y4truQ$ zu6qkGo4WKVFf`3NPF{4DsT7;JQQl7`?J*A!p#$g28ke8k zqa&F(8d8Fvj;#mJBP@Cwnw}u3iwQYyp)eJq%dN~=hj%wv;oSoB0mGTC1SR(kZID=o z`gMRK&FqoTMc$V7uy%G({9AvcMJrRfDMe3dj2_5r)9ZF}+SsSS|#47vMyPF0@doP|>xD&H;SMIKHPeFAaRn@1d_0Ajus#f#r$cX-8+TuFJ^qe-2oOl z$HFv6B-@g*StPmm>a4^v{VA1ec{?g#HqcL_g4`3u#aP0l@jkr zNg_dxR~AR41Qz3}8;?_{W9@HyKqc2JUkr`$nlCknYx?`EDo20X_ZU_Y&BYrpPvBfM zmQk%}JB1Zq&zg#Okgt6rhT?CB7Em(KqEfQnNLrB$IH)~2=px2`w848B&c~WH+LrkO zIlyfi^D@6qLfNV?-*Al#U6_HW*tBvALvdN6?VP08fEVFX{T;eEG2=WQA!kIA+GoEj zESX?^t#yINxumtOL!en)mgD<1-E`CYwv$T4ovRAvX`-F^e?_@87h^S4d0i|&>)h{a z1oLjZLv6aN6h1`fl`fpJf}7MkRI=rJ%i)_J4s}|aP_{PS5WhjCZolpg7k(*aU2$JF znG8-|XPbw{=4x3fg9WqHvdoC==Mq6;Soj`-a79xXcpk$8yMm z%yS!|Rv_C)J+FM|Xzx}O;xWEj#Z{Tfh-3L5goPT0_u?&KNsP8;?twuxvgMfy;eq8M z8yi_4W7klhMHJaH1JmQa@_yc_1CVR003;|e>S%0cmLj4Mf!&i z#|=d|uA+i`EDq=5#M~#x{=Km|X2zcUGT<9Taj1}r(g&D|lsjn|BfVo)CZ{ z?rYMB>qxNk^;7$nE4u6nTR6i93DQ*_mF9qGeBYxGAVcTz{9a74w$#qIvec`@#w|J% z$p+5$_l}ti)go6lsD`Q$nn-!Z!63~T|{vetzg|@m{FMK+(wLO)~Pjn zBcW9Xzuq%SqpUpx1q^wmg}vK>H9t+zqbms9k`J zF!zd$Tg=XW*`sUD`t=!#eAANz4iXs+BWIUhk^Q?$esk@OxMrm2fpeh6nMa+EdlN6{ zRc0)YuImhW;tw_FZza06F|-@2ce`X6dT^R5L%x5I?JMUhc&1ZhTyqe5Fn`BfDT=tS zm+EvL!!M#&8S_1XR0m?ze!HGr?4;?P61eCuGz#NPv_wxpw$yobZJXI3w%?F)j%)e~ zw3L^*eyH~%X@h$~DL2R4XTIPW-2%|hs^qxm1a(Hezd-x~u;lL+kv)7T>OWh6WOxG002Awk3Lnu3iw+e)WD1ei*o)YC?f#<3PE{$n=$#19Ma){3XQ< zHFGKiHbP%{qrY+d(51X6ry1Jd?ld9JGMD4%xLL8hUBIqlH-1C78g(n8>wx=ADLczGNX%_oE%uK}}$u1Fy^om;tK9E6?E zN*O(%?A>Pdla+5F2a%^(e`W92ofl6p%xZ86J%ovii>$z0Dm%1C mJx;&EiBAG9?E~-r9b4i_aWN|9jSP5nT literal 0 HcwPel00001 diff --git a/CMakeLua/.hg/store/data/_source/cm_cmake_policy_c_ommand.cxx.i b/CMakeLua/.hg/store/data/_source/cm_cmake_policy_c_ommand.cxx.i new file mode 100644 index 0000000000000000000000000000000000000000..83142638e75bdb5230aaea8312238d0abdb359e4 GIT binary patch literal 779 zcwPYu1N8g=0RRC20000000PSZ00w;k0000000LqE|NsC0|NsAzy54H^j#knA3$v6k zQ0uI@rq#s&00000000000001ZoV8PJPunmM{+?fP>JVz6ByBZKEWAivC~LL8L`e!l z6GA3+TWg8k*-l%A_TP6-3Wcp>(#HHDa_;;*_uTohyLa+h%d!9hDW;NS9su}#@`b_y z_);i!5Try;gv`K1CoHA#k#Z`D77}57G0szJP_PsFk;!|IWPXN+1Cg@i&L3tO;bSLR zt!fL{K}?VEX-=jF!0!hk!vtB=R>rJ=$9=Bfe(0lu?fL>6knBZPfjxJdF z({LJ?#k4QxcalwK8mftHNSg48=_Qf023?*w=BtXlFSrs?vpjPET4@ReOo60|$^{)e z$QDt$VRZCLgOD)OdhWUIa=CO8)1)Kh)a}Imp1V0Z(^(2QGZ<4%SgIVO4Ocv43Y3@> ziU9XxrnF?Yxu#>d?8cqpD2CSH3NBk=*c!xFN3djiCUOmQL3v4{X9&&aDMJkMNW%3U zhza!Dq2EDJ>qEEKjjxQ>^KLw7M-iM4Luf(J3gfOn>b1g>C>VvoFlswxqlT8;iUoz_ zafn=KmQYo+k_jW38z&HrQ^%fO&3}8Y^@i~z&BqifXrBJYJfbwutYSSovi3m{cU{{h)d%g%|5+XBU#fo54x{dH@Q(`Cmik$U z{o9cTqo}j3X5)`FgIvwlZNJo4Fbw{ZU(BD=TfaIHACr(0UH@pf@|{0*sIg$7?70Pz J?+5>C_khR&cANkJ literal 0 HcwPel00001 diff --git a/CMakeLua/.hg/store/data/_source/cm_documentation_formatter_docbook.cxx.i b/CMakeLua/.hg/store/data/_source/cm_documentation_formatter_docbook.cxx.i new file mode 100644 index 0000000000000000000000000000000000000000..5559a2fe14a86c1fe7785053a992fc30e9a0850b GIT binary patch literal 2427 zcwPZ}3550l0RRC20000000}z)03F}}0000000KDw|NsC0|Ns9`!tHE-dK(QXNBb>k zB}xX4uIZ{xzFG;3t8+a5#zQK;Uzw!UGU>Y|B~k0;06c6O#&7w zM{yAz;%-MN7USDnA?_^q{(f@?KjQXdC!8eCgb4IEHt@xPqYO2qXU4nR+kdyWckP`I zu=An){(bwW_j>EkES5;TtvRz9HxE134$k6qUqlZvpG*}r-4+qqg@1B2cVe~)!_c+p zztr=65lRs&o&**^&-X!ZlMpk>;u-TSq;|>Jf}*AF6^Iz7N=0qkp3mo&8=!G45l`%+ z(aEvBSUOdK4`@E{m~yx;Es_mCqbZjl#aK%OIQFralag5LwWQN zvDoL~U4QCi=4rY(2DerFh9Dzf?R5BuP-=0}bC_b_qw4{B9?V62X8<-Sz$>z#Fo>B- z;t-lm7xwp{(QClk8o1EK@xK}^_~Q@bO!||qaSCgGe`3vcVaeL=LK)sR}t06GyIuSY#`z>Lii_SNOkYT(^Cw?I4B&H8{in$QS-?U*|2X{8Q zjdp4#A)(ua`kJpg^-lWk7TMl)3d{E!Z78jud~f~Q3VA1pD%X2#>?FQgUhdM|<9`7H z7h_IoQ?7pxf@2J*RS1fkZ`p*0IT**dM+XpvI19Zj9Z+Br3dNl?y=V55mh&mr&gRSF zdL8$+TG~Xj{jHy@+ji4poUq0GV=ep6%x54FXrXw40TocJ=4e7=E>xhbZdu0{ zMM$)c9#Yws z!J0IKr*>)A4xNCRkV7MzhlN=+f9jgU32@4#^_1jIT3_(x#-65;K98YEecRUlAmFH& zM_w}Yq&4QD*W{k|w#o&Vmzu3IsFf>uh^Gcc#4;$eR7=9`piG!)b2({-;)i`$!{-Y?NSf-tG-X4Kgp`j(~Pq5KSG)B{3!C{r$J*(zP?n zU3|@$mbz;%iG1!lbZ^7GhJ*>D z!}T&LJjWw9G_^^I&D#fXq6i&DrV^ipAT=RHk^C`2I5#(ew_* zA2TO^6T}o)w-{D*llibbPj{Yl4W--9RdhmnsCS?kZpIn4VX_9+%Wa}Xtb$=-;hc6s z+r`0v{#W!^-(^}2#3~<3|EpE6qVdgf(T&;yn8%lP@@XS~j!7_=cJ=IAZp>fysXj4h zBB!beeg^S8Nr`zeUf!uMcVh|+0;*oD|+CVum zmSJf~=^R3pT2k#LIW73Yz{R@jVquS|nZWZsB_L`okTTuEr`6q%z(N!&y32F&J8`{* z&i|FgPZKVkMn2vLKFrLoR@jv7Slici__%b2s(0TVob^Xv&j%<2mOj+y{OZ&3un*Vu zE!#fpT@Ej8`(Shch{q?oYy9~qYuC01r%0+m=DJ?^ZAwswy(O^S&_7V6+0;g9Y}%YY z-&>yYkjgJ5c?PE=`UUB4;CR@rc@plZty zPsqfV#v-vR`_h6C|NG8KH(>mHAP=o$f4`sHozITi-`?v90)U}4Q!C0C0Fpy-iLeQY zHO_4g3qhH&CHUD)6$n33qZMQ<+YXJa3iK{m9VKJG9z$C0o3tuXlOSbukKKX@Eze#U za~b9vb692bK{Kymgf*Kann(@xo*5_zzC))l3+h5|{-T2dPZT*ebF*>fl zi*wbyY=_&t%FBtFU0XHH30mp8hwQ*FMGIkZ1Nu4*{jaOn6QiB6q^dFm=oAIiHU}0R z+BwRQX=B7YVn|m6#zIasi=$|Ax~+Ln=jACsP_9w9e{n<+^iL@79X#C|FUMmYBi$D{XY12P>>o8s8#itWJwc zB78{8F$pb&mHlSQh53hvf~RSvoZiCb}w%=u@~8@m6pF(whECN)W@Wx+qlotT4C<8b!>T{0gnLzUNzWt}Ioe_+Q=C zRq5i`oA~gP|8K2xb7)6R|GfCz@L8hD>Sw6S2t0J}_I?m^qa38Us$_F%1`m!(G SUU16|wSrozEcgSq{~&)ta(`d| literal 0 HcwPel00001 diff --git a/CMakeLua/.hg/store/data/_source/cm_e_l_f.cxx.i b/CMakeLua/.hg/store/data/_source/cm_e_l_f.cxx.i new file mode 100644 index 0000000000000000000000000000000000000000..4b1a588c4188f09d3f1a092b422e9961a948ba62 GIT binary patch literal 8568 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 literal 0 HcwPel00001 diff --git a/CMakeLua/.hg/store/data/_source/cm_e_l_f.h.i b/CMakeLua/.hg/store/data/_source/cm_e_l_f.h.i new file mode 100644 index 0000000000000000000000000000000000000000..7acb5731db09fa4fadf550ef9a5486bb385d8285 GIT binary patch literal 1813 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 Zh4)-y{)h9bkC9JsfH6D?{sXh-KD7{BW-R~! literal 0 HcwPel00001 diff --git a/CMakeLua/.hg/store/data/_source/cm_policies.cxx.i b/CMakeLua/.hg/store/data/_source/cm_policies.cxx.i new file mode 100644 index 0000000000000000000000000000000000000000..c3c1f0db950ecdf356e78a0a8df7c2bc681b0508 GIT binary patch literal 13408 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

qjZG3|`uThf%*kSTSqDwehg_` z&=}|0QoUtQcO={#Pv>ul=p+9iWd{J%UH{^JI~T=z!`qXR2DXJbus2hK--!|aly@4o zNd8}V)hBHUSW)kaXoQEhjP#aqF}@M1(WWg!iJRt7Cy67N)DZbfHqVkz)?KmRl=08L zEW;JC;)ZEG21u98jBJ+Nyk6q$d1e_}G$CrVyGSu8Za+R=jeJ}S?u%UXZx_oc4OOA^mkGYSaX==4)CW+sIqTVgqq zirJRwho8eyV8X`~v$fAsKk7bw@pgQm=w1~)2KPM65^+T-ou*!(qa2GWM4mM!+nEi3 z@8KlZ#8u8DQ764yvw`t&e$hP`Ss))eQe*#QGv+Pk)C~BUQW1DoT0j|cdv5TJzJ4af zM zw8mCE>>Rqb`03PX|Li^bIY{bMLq0V^>6+Q5E=$x87bctqBo$!LPD~Pc~hS%l( ztDF@>arodHB)rL)!9o@$2ck+DOT|i&t4`K556{vJuJjrc8!Ti@DsU+BoEx8SMSR0y z{ede*R+CtlS%{y=#1d=9%4t52`<3Y=I{Rc$iz?};%>_VHYkzKzsYXp~NuN&R3!vI` xI;ItLYvv<%*%sME_(93|N-7kQ(v43T>z`f?&Giv#)-HAR;P!xJ+2i@;{{hh6KIQ-b literal 0 HcwPel00001 diff --git a/CMakeLua/.hg/store/data/_source/cm_policies.h.i b/CMakeLua/.hg/store/data/_source/cm_policies.h.i new file mode 100644 index 0000000000000000000000000000000000000000..9be6c31c0fbf96eeaad46b9a09904d731791128b GIT binary patch literal 3950 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 Yx|m)nSZ}m^s5&!@I literal 0 HcwPel00001 diff --git a/CMakeLua/.hg/store/data/_source/kwsys/_c_p_u.h.in.i b/CMakeLua/.hg/store/data/_source/kwsys/_c_p_u.h.in.i new file mode 100644 index 0000000000000000000000000000000000000000..e91cbedb440ec7e9862f4da492689ccb6745582c GIT binary patch literal 1282 zcwPYl1^xN}0RRC20000000cY$01==70000000LD1|NsC0|NsA#YP!H#+|ChKl?vgz z`8T1PI|(QN00000000000001ZoV{0VbDKC2{_bC~*K|5bnqoJ}_;S6MDWUF}iC-A7 z$IX3VWDrIZkQgM#$xVO!t-wxW;Bx*Djt{ZDTJ1jj>qFDvd5gQ zVg<*+$u8Cz*gP=wUs)_!f=iJrwoVNIGfAM>At9%d=Jzx-Fpx*-k6?y+P#|)MmC8PK zyPM6%xGO^&fk?YQ{9=_tgpMIqgeB6@knowsOo9|qSs8v0nN&Gjt`!YoVb6xs`3%g- zEi6peH7B#%Utz;kEY=F>J>_K(730=4OBn9KI62|!5kv&zfolzMlX-2A?Afix`PH6H z2A&6Br!JV_nC{HB<|ETB137conR)}GEK-LhOL0#jc;b!=#R4jeQc|HIbNreT#RSKi zUTp+UyPYEz@sLLF8T)_h`4e+I@Ep?`eD<-me%v|2MaJpBu44cmBo7fF5v=(g7aNW#bkQ#s^_0NBw*S-(ySzC6c<>&af!SyP zAI~o?i;~SO!!k*-A$YvX7;+Eh77}9I)^Y4_gY2UEC!HfWEd7D-I!83wONf=WkqyI^ zBqUi(iZUyCiC#E?@87F7gt2EG`{u|Qny=1;@0Wwg6;0sbs^0{XU0n4m7`3Sm(f)>x zZTAXuR1*8M;lj5kv%#ne$+rubt&h)mF>r4@o&DXr=h?TIUOoR_%Rclko4ST8e*dz< zM`^5g?i+fx&Jsz(8lb|~E=6V@#7xmZ;fq*vb!;ob@$x-soOM!zs7?RF5ZPuevop}Au<@sjDKET{n7T3`L0S<7C}Tx8w1Ia54_j@8N=92eb2Vq`}0D!9Vd z3XGxCbxd$=uMta}W!1|>n_59K7E0tIA<)0NYr>MEz0#p^|EkyPwSmQUyhaQxlNCO+ zsWv!ze=8)pUbl}WH(}Fvmh0i_J{J3W?4IwNim`6@fZ=QpeP`kBC*E1l+c-~!yy{;3 z+(-_ZYfaLGmG<_~{L+X5X}-O8}bZsP^7y0i;O2qN+$wo-={M6_p{BLgo!_(&8yX ze8op`;YYAsvm|7E1q3XuMXmSmL2Gr?kZ`w=C_Oh&#qLY_DaASuXyK*x5(!Xy zO0A~UPL0VYJxoxhZbe-PoTL=r^+AJ%sTBRJOXbQwXWQpLsC_ZUPOKet`d^B(6>tat z6H}7E{rm@$_F0<%00004JOBUy002e+01=)50000000LD200030|NsBpl{95+6tA|n zA;ZY0Fj(>%2#O{E00000000000001ZoMT{MWny4p4Pjtl2vAl?NlnYlOI2|24iAnD sj`wr)bqx-1bar)!cMb@RclC4ebo7h&bRi@k@8cN~;^WE%00}b~ay0y2asU7T literal 0 HcwPel00001 diff --git a/CMakeLua/.hg/store/data/_templates/_c_make_v_s_macros2.vsmacros.i b/CMakeLua/.hg/store/data/_templates/_c_make_v_s_macros2.vsmacros.i new file mode 100644 index 0000000000000000000000000000000000000000..da38a61684911152508b9594ffb0dd220ae5c73f GIT binary patch literal 11151 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 literal 0 HcwPel00001 diff --git a/CMakeLua/.hg/store/data/_tests/_c_make_tests/_get_prerequisites_test.cmake.in.i b/CMakeLua/.hg/store/data/_tests/_c_make_tests/_get_prerequisites_test.cmake.in.i new file mode 100644 index 0000000000000000000000000000000000000000..2b4e842a4723974e30dcc817b9832df25609d020 GIT binary patch literal 1114 zcwPZo1f}}`0RRC20000000bHU0271&0000000N2s|NsC0|NsAn9EReo8Cz{2wEV&W z`}U-zzz^;K00000000000001ZoXuFMT)|XA)>; z2ipDk3xPgQH6s$Hl#zGNl|!?H>6EzlM2!Ryl>ig!a@8z*|^Q>b9wR?n$$w#10sNMseOjW~Jl1>-3IA`W6fozJmh3rZt z%slcOF>1c@!+Ny^-Eshabw!-6@Z-2}= zGX{+fNCW(v@vs*L9qU&{tB7H<-G^g^dDk3CBf5}MK@!Eq3cgY`FB+!$f?e!; zLbJ%=p=fXK;C|m9+?qU({NS(ZiijqwXvX-&z3&Zg(Devw{pPowBp&AF9NYhYcQmGp zoY_7Izh2uNTH2A~f?YU1E~ZN=`ckSSVbkg!p!(>PY27eW*+X1GkHkx2<4AaFlFtSH zBZ&>wmciWM{|*yvqSwM!#lnO)g~K?Dm2=uxO5k|~s-nl)a=BNfJ(K&fm)H^R#bs0Vk8<}Y))QzvHTwZnZ5 z@hDzijZh1k;^Aq|@=m58#hRy^bxgL*7`5u7pYQBTJ5tU161tH>SxVg+}pw zJs1Xe!*Fo>#H<*ImzW{n+-}QQP + # + # Try to choose the right tool by default. Caller can set gp_tool prior to + # calling this function to force using a different tool. + # + if("${gp_tool}" STREQUAL "") + set(gp_tool "ldd") + if(APPLE) + set(gp_tool "otool") + endif(APPLE) + if(WIN32) + set(gp_tool "dumpbin") + endif(WIN32) + endif("${gp_tool}" STREQUAL "") + + set(gp_tool_known 0) + + if("${gp_tool}" STREQUAL "ldd") + set(gp_cmd_args "") + set(gp_regex "^\t([\t ]+)[\t ].*${eol_char}$") + set(gp_regex_cmp_count 1) + set(gp_tool_known 1) + endif("${gp_tool}" STREQUAL "ldd") + + if("${gp_tool}" STREQUAL "otool") + set(gp_cmd_args "-L") + set(gp_regex "^\t([^\t]+) \\(compatibility version ([0-9]+.[0-9]+.[0-9]+), current version ([0-9]+.[0-9]+.[0-9]+)\\)${eol_char}$") + set(gp_regex_cmp_count 3) + set(gp_tool_known 1) + endif("${gp_tool}" STREQUAL "otool") + + if("${gp_tool}" STREQUAL "dumpbin") + set(gp_cmd_args "/dependents") + set(gp_regex "^ ([^ ].*[Dd][Ll][Ll])${eol_char}$") + set(gp_regex_cmp_count 1) + set(gp_tool_known 1) + endif("${gp_tool}" STREQUAL "dumpbin") + + if(NOT gp_tool_known) + message(STATUS "warning: gp_tool='${gp_tool}' is an unknown tool...") + message(STATUS "CMake function get_prerequisites needs more code to handle '${gp_tool}'") + message(STATUS "Valid gp_tool values are dumpbin, ldd and otool.") + return() + endif(NOT gp_tool_known) + + set(gp_cmd_paths ${gp_cmd_paths} + "C:/Program Files/Microsoft Visual Studio 9.0/VC/bin" + "C:/Program Files (x86)/Microsoft Visual Studio 9.0/VC/bin" + "C:/Program Files/Microsoft Visual Studio 8/VC/BIN" + "C:/Program Files (x86)/Microsoft Visual Studio 8/VC/BIN" + "C:/Program Files/Microsoft Visual Studio .NET 2003/VC7/BIN" + "C:/Program Files (x86)/Microsoft Visual Studio .NET 2003/VC7/BIN" + "/usr/local/bin" + "/usr/bin" + ) + + find_program(gp_cmd ${gp_tool} PATHS ${gp_cmd_paths}) + + if(NOT gp_cmd) + message(STATUS "warning: could not find '${gp_tool}' - cannot analyze prerequisites...") + return() + endif(NOT gp_cmd) + + if("${gp_tool}" STREQUAL "dumpbin") + # When running dumpbin, it also needs the "Common7/IDE" directory in the + # PATH. It will already be in the PATH if being run from a Visual Studio + # command prompt. Add it to the PATH here in case we are running from a + # different command prompt. + # + get_filename_component(gp_cmd_dir "${gp_cmd}" PATH) + get_filename_component(gp_cmd_dlls_dir "${gp_cmd_dir}/../../Common7/IDE" ABSOLUTE) + if(EXISTS "${gp_cmd_dlls_dir}") + set(ENV{PATH} "$ENV{PATH};${gp_cmd_dlls_dir}") + endif(EXISTS "${gp_cmd_dlls_dir}") + endif("${gp_tool}" STREQUAL "dumpbin") + # + # + + # Track new prerequisites at each new level of recursion. Start with an + # empty list at each level: + # + set(unseen_prereqs) + + # Run gp_cmd on the target: + # + execute_process( + COMMAND ${gp_cmd} ${gp_cmd_args} ${target} + OUTPUT_VARIABLE gp_cmd_ov + ) + + if(verbose) + message(STATUS "") + message(STATUS "gp_cmd_ov='${gp_cmd_ov}'") + message(STATUS "") + endif(verbose) + + get_filename_component(target_dir "${target}" PATH) + + # Convert to a list of lines: + # + string(REGEX REPLACE ";" "\\\\;" candidates "${gp_cmd_ov}") + string(REGEX REPLACE "\n" "${eol_char};" candidates "${candidates}") + + # Analyze each line for file names that match the regular expression: + # + foreach(candidate ${candidates}) + if("${candidate}" MATCHES "${gp_regex}") + # Extract information from each candidate: + string(REGEX REPLACE "${gp_regex}" "\\1" raw_item "${candidate}") + + if(gp_regex_cmp_count GREATER 1) + string(REGEX REPLACE "${gp_regex}" "\\2" raw_compat_version "${candidate}") + string(REGEX REPLACE "^([0-9]+)\\.([0-9]+)\\.([0-9]+)$" "\\1" compat_major_version "${raw_compat_version}") + string(REGEX REPLACE "^([0-9]+)\\.([0-9]+)\\.([0-9]+)$" "\\2" compat_minor_version "${raw_compat_version}") + string(REGEX REPLACE "^([0-9]+)\\.([0-9]+)\\.([0-9]+)$" "\\3" compat_patch_version "${raw_compat_version}") + endif(gp_regex_cmp_count GREATER 1) + + if(gp_regex_cmp_count GREATER 2) + string(REGEX REPLACE "${gp_regex}" "\\3" raw_current_version "${candidate}") + string(REGEX REPLACE "^([0-9]+)\\.([0-9]+)\\.([0-9]+)$" "\\1" current_major_version "${raw_current_version}") + string(REGEX REPLACE "^([0-9]+)\\.([0-9]+)\\.([0-9]+)$" "\\2" current_minor_version "${raw_current_version}") + string(REGEX REPLACE "^([0-9]+)\\.([0-9]+)\\.([0-9]+)$" "\\3" current_patch_version "${raw_current_version}") + endif(gp_regex_cmp_count GREATER 2) + + # Using find_program on Windows will find dll files that are in the PATH. + # (Converting simple file names into full path names if found.) + # + set(item "item-NOTFOUND") + find_program(item "${raw_item}" PATHS "${target_dir}") + if(NOT item) + set(item "${raw_item}") + endif(NOT item) + + if(verbose) + message(STATUS "raw_item='${raw_item}'") + message(STATUS "item='${item}'") + endif(verbose) + + # Add each item unless it is excluded: + # + set(add_item 1) + + if(${exclude_system}) + set(type "") + gp_file_type("${target}" "${item}" type) + + if("${type}" STREQUAL "system") + set(add_item 0) + endif("${type}" STREQUAL "system") + endif(${exclude_system}) + + if(add_item) + list(LENGTH ${prerequisites_var} list_length_before_append) + gp_append_unique(${prerequisites_var} "${item}") + list(LENGTH ${prerequisites_var} list_length_after_append) + + if(${recurse}) + # If item was really added, this is the first time we have seen it. + # Add it to unseen_prereqs so that we can recursively add *its* + # prerequisites... + # + if(NOT list_length_before_append EQUAL list_length_after_append) + set(unseen_prereqs ${unseen_prereqs} "${item}") + endif(NOT list_length_before_append EQUAL list_length_after_append) + endif(${recurse}) + endif(add_item) + else("${candidate}" MATCHES "${gp_regex}") + if(verbose) + message(STATUS "ignoring non-matching line: '${candidate}'") + endif(verbose) + endif("${candidate}" MATCHES "${gp_regex}") + endforeach(candidate) + + list(SORT ${prerequisites_var}) + + if(${recurse}) + set(more_inputs ${unseen_prereqs}) + foreach(input ${more_inputs}) + get_prerequisites("${input}" ${prerequisites_var} ${exclude_system} ${recurse}) + endforeach(input) + endif(${recurse}) + + set(${prerequisites_var} ${${prerequisites_var}} PARENT_SCOPE) +endfunction(get_prerequisites) + + +# list_prerequisites target all exclude_system verbose +# +# ARGV0 (target) is the full path to an executable file +# +# optional ARGV1 (all) is 0 or 1: 0 for direct prerequisites only, +# 1 for all prerequisites recursively +# +# optional ARGV2 (exclude_system) is 0 or 1: 0 to include "system" +# prerequisites , 1 to exclude them +# +# optional ARGV3 (verbose) is 0 or 1: 0 to print only full path +# names of prerequisites, 1 to print extra information +# +function(list_prerequisites target) + if("${ARGV1}" STREQUAL "") + set(all 1) + else("${ARGV1}" STREQUAL "") + set(all "${ARGV1}") + endif("${ARGV1}" STREQUAL "") + + if("${ARGV2}" STREQUAL "") + set(exclude_system 0) + else("${ARGV2}" STREQUAL "") + set(exclude_system "${ARGV2}") + endif("${ARGV2}" STREQUAL "") + + if("${ARGV3}" STREQUAL "") + set(verbose 0) + else("${ARGV3}" STREQUAL "") + set(verbose "${ARGV3}") + endif("${ARGV3}" STREQUAL "") + + set(count 0) + set(count_str "") + set(print_count "${verbose}") + set(print_prerequisite_type "${verbose}") + set(print_target "${verbose}") + set(type_str "") + + set(prereqs "") + get_prerequisites("${target}" prereqs ${exclude_system} ${all}) + + if(print_target) + message(STATUS "File '${target}' depends on:") + endif(print_target) + + foreach(d ${prereqs}) + math(EXPR count "${count} + 1") + + if(print_count) + set(count_str "${count}. ") + endif(print_count) + + if(print_prerequisite_type) + gp_file_type("${target}" "${d}" type) + set(type_str " (${type})") + endif(print_prerequisite_type) + + message(STATUS "${count_str}${d}${type_str}") + endforeach(d) +endfunction(list_prerequisites) + + +# list_prerequisites_by_glob glob_arg glob_exp +# +# glob_arg is GLOB or GLOB_RECURSE +# +# glob_exp is a globbing expression used with "file(GLOB" to retrieve a list +# of matching files. If a matching file is executable, its prerequisites are +# listed. +# +# Any additional (optional) arguments provided are passed along as the +# optional arguments to the list_prerequisites calls. +# +function(list_prerequisites_by_glob glob_arg glob_exp) + message(STATUS "=============================================================================") + message(STATUS "List prerequisites of executables matching ${glob_arg} '${glob_exp}'") + message(STATUS "") + file(${glob_arg} file_list ${glob_exp}) + foreach(f ${file_list}) + is_file_executable("${f}" is_f_executable) + if(is_f_executable) + message(STATUS "=============================================================================") + list_prerequisites("${f}" ${ARGN}) + message(STATUS "") + endif(is_f_executable) + endforeach(f) +endfunction(list_prerequisites_by_glob) diff --git a/CMakeLua/Source/QtDialog/CMake.desktop b/CMakeLua/Source/QtDialog/CMake.desktop new file mode 100644 index 0000000..0c82538 --- /dev/null +++ b/CMakeLua/Source/QtDialog/CMake.desktop @@ -0,0 +1,13 @@ +[Desktop Entry] +Version=1.0 +Encoding=UTF-8 +Name=CMake +Comment=Cross-platform buildsystem +Exec=cmake-gui %f +Icon=CMakeSetup.png +Terminal=false +X-MultipleArgs=false +Type=Application +Categories=Application;Development; +StartupNotify=true +MimeType=application/x-cmakecache; diff --git a/CMakeLua/Source/QtDialog/CMakeIngestOSXBundleLibraries.cmake b/CMakeLua/Source/QtDialog/CMakeIngestOSXBundleLibraries.cmake new file mode 100755 index 0000000..37e4701 --- /dev/null +++ b/CMakeLua/Source/QtDialog/CMakeIngestOSXBundleLibraries.cmake @@ -0,0 +1,339 @@ +# +# CMakeIngestOSXBundleLibraries.cmake +# +# Only for the Mac build. +# +# Depends on OS tools: +# otool +# install_name_tool +# +# This script ingests libraries and frameworks into an existing .app bundle and +# then uses install_name_tool to fixup the references to the newly embedded +# libraries so that they all refer to each other via "@executable_path." +# +# The main intent (and simplifying assumption used for developing the script) +# is to have a single executable .app bundle that becomes "self-contained" by +# copying all non-system libs that it depends on into itself. The further +# assumption is that all such dependencies are simple .dylib shared library +# files or Mac Framework libraries. +# +# This script can be used as part of the build via ADD_CUSTOM_COMMAND, or used +# only during make install via INSTALL SCRIPT. +# +if(NOT DEFINED input_file) + message(FATAL_ERROR " +${CMAKE_CURRENT_LIST_FILE}(${CMAKE_CURRENT_LIST_LINE}): error: Variable input_file is not defined. + +Use a command line like this to use this script: + cmake \"-Dinput_file=filename\" \"-Dextra_libs=/path/to/lib1;/path/to/lib2\" \"-Dlib_path=/path/to/unqualified/libs\" -P \"${CMAKE_CURRENT_LIST_FILE}\" + +'input_file' should be the main executable inside a Mac bundle directory structure. +For example, use 'bin/paraview.app/Contents/MacOS/paraview' from a ParaView binary dir. + +'extra_libs' should be a semi-colon separated list of full path names to extra libraries +to copy into the bundle that cannot be derived from otool -L output. For example, you may +also want to fixup dynamically loaded plugins from your build tree and copy them into the +bundle. + +'lib_path' should be the path where to find libraries referenced without a path name in +otool -L output. + +") +endif(NOT DEFINED input_file) +message("ingest ${input_file}") +set(eol_char "E") + +if(APPLE) + set(dep_tool "otool") + set(dep_cmd_args "-L") + set(dep_regex "^\t([^\t]+) \\(compatibility version ([0-9]+.[0-9]+.[0-9]+), current version ([0-9]+.[0-9]+.[0-9]+)\\)${eol_char}$") +endif(APPLE) + +message("") +message("# Script \"${CMAKE_CURRENT_LIST_FILE}\" running...") +message("") +message("input_file: '${input_file}'") +message("extra_libs: '${extra_libs}'") +message("lib_path: '${lib_path}'") +message("") + +get_filename_component(input_file_full "${input_file}" ABSOLUTE) +message("input_file_full: '${input_file_full}'") + +get_filename_component(bundle "${input_file_full}/../../.." ABSOLUTE) +message("bundle: '${bundle}'") + + +find_program(dep_cmd ${dep_tool}) + +# find the full path to the framework in path set the result +# in pathout +macro(find_framework_full_path path pathout) + set(${pathout} "${path}") + if(NOT EXISTS "${path}") + set(FRAMEWORK_SEARCH "/Library/Frameworks" + "/System/Library/Frameworks" ) + set(__FOUND FALSE) + foreach(f ${FRAMEWORK_SEARCH}) + set(newd "${f}/${path}") + if(EXISTS "${newd}" AND NOT __FOUND) + set(${pathout} "${newd}") + set(__FOUND TRUE) + endif(EXISTS "${newd}" AND NOT __FOUND) + endforeach(f) + endif(NOT EXISTS "${path}") +endmacro(find_framework_full_path) + + +macro(append_unique au_list_var au_value) + set(${au_list_var} ${${au_list_var}} "${au_value}") +endmacro(append_unique) + + +macro(gather_dependents gd_target gd_dependents_var) + execute_process( + COMMAND ${dep_cmd} ${dep_cmd_args} ${gd_target} + OUTPUT_VARIABLE dep_tool_ov + ) + + string(REGEX REPLACE ";" "\\\\;" dep_candidates "${dep_tool_ov}") + string(REGEX REPLACE "\n" "${eol_char};" dep_candidates "${dep_candidates}") + + set(${gd_dependents_var} "") + + foreach(candidate ${dep_candidates}) + if("${candidate}" MATCHES "${dep_regex}") + string(REGEX REPLACE "${dep_regex}" "\\1" raw_item "${candidate}") + string(REGEX REPLACE "${dep_regex}" "\\2" raw_compat_version "${candidate}") + string(REGEX REPLACE "${dep_regex}" "\\3" raw_current_version "${candidate}") + + set(item "${raw_item}") + + string(REGEX REPLACE "^([0-9]+)\\.([0-9]+)\\.([0-9]+)$" "\\1" compat_major_version "${raw_compat_version}") + string(REGEX REPLACE "^([0-9]+)\\.([0-9]+)\\.([0-9]+)$" "\\2" compat_minor_version "${raw_compat_version}") + string(REGEX REPLACE "^([0-9]+)\\.([0-9]+)\\.([0-9]+)$" "\\3" compat_patch_version "${raw_compat_version}") + + string(REGEX REPLACE "^([0-9]+)\\.([0-9]+)\\.([0-9]+)$" "\\1" current_major_version "${raw_current_version}") + string(REGEX REPLACE "^([0-9]+)\\.([0-9]+)\\.([0-9]+)$" "\\2" current_minor_version "${raw_current_version}") + string(REGEX REPLACE "^([0-9]+)\\.([0-9]+)\\.([0-9]+)$" "\\3" current_patch_version "${raw_current_version}") + + #message("${raw_item} - compat ${raw_compat_version} - current ${raw_current_version}") + append_unique("${gd_dependents_var}" "${item}") + else("${candidate}" MATCHES "${dep_regex}") + if("${candidate}" STREQUAL "${gd_target}:${eol_char}") + #message("info: ignoring target name...") + else("${candidate}" STREQUAL "${gd_target}:${eol_char}") + message("error: candidate='${candidate}'") + endif("${candidate}" STREQUAL "${gd_target}:${eol_char}") + endif("${candidate}" MATCHES "${dep_regex}") + endforeach(candidate) +endmacro(gather_dependents) + + +message("Gathering dependent libraries for '${input_file_full}'...") +gather_dependents("${input_file_full}" deps) +message("") + + +# Order lexicographically: +# +list(SORT deps) + + +# Split into separate lists, "system" "embedded" and "nonsystem" libraries. +# System libs are assumed to be available on all target runtime Macs and do not +# need to be copied/fixed-up by this script. Embedded libraries are assumed to +# be in the bundle and fixed-up already. Only non-system, non-embedded libs +# need copying and fixing up... +# +set(system_deps "") +set(embedded_deps "") +set(nonsystem_deps "") + +foreach(d ${deps}) + set(d_is_embedded_lib 0) + set(d_is_system_lib 0) + + if("${d}" MATCHES "^(/System/Library|/usr/lib)") + set(d_is_system_lib 1) + else("${d}" MATCHES "^(/System/Library|/usr/lib)") + if("${d}" MATCHES "^@executable_path") + set(d_is_embedded_lib 1) + endif("${d}" MATCHES "^@executable_path") + endif("${d}" MATCHES "^(/System/Library|/usr/lib)") + + if(d_is_system_lib) + set(system_deps ${system_deps} "${d}") + else(d_is_system_lib) + if(d_is_embedded_lib) + set(embedded_deps ${embedded_deps} "${d}") + else(d_is_embedded_lib) + set(nonsystem_deps ${nonsystem_deps} "${d}") + endif(d_is_embedded_lib) + endif(d_is_system_lib) +endforeach(d) + +message("") +message("system_deps:") +foreach(d ${system_deps}) + message("${d}") +endforeach(d ${system_deps}) + +message("") +message("embedded_deps:") +foreach(d ${embedded_deps}) + message("${d}") +endforeach(d ${embedded_deps}) + +message("") +message("nonsystem_deps:") +foreach(d ${nonsystem_deps}) + message("${d}") +endforeach(d ${nonsystem_deps}) + +message("") + + +macro(copy_library_into_bundle clib_bundle clib_libsrc clib_dstlibs clib_fixups) + # + # If the source library is a framework, copy just the shared lib bit of the framework + # into the bundle under "${clib_bundle}/Contents/Frameworks" - if it is just a dylib + # copy it into the same directory with the main bundle executable under + # "${clib_bundle}/Contents/MacOS" + # + if("${clib_libsrc}" MATCHES ".framework/.*/.*/.*") + # make sure clib_libsrc is a full path to the framework as a framework + # maybe linked in with relative paths in some cases + find_framework_full_path("${clib_libsrc}" fw_full_src) + get_filename_component(fw_src "${fw_full_src}" ABSOLUTE) + get_filename_component(fw_srcdir "${clib_libsrc}/../../.." ABSOLUTE) + get_filename_component(fwdirname "${fw_srcdir}" NAME) + string(REGEX REPLACE "^(.*)\\.framework$" "\\1" fwname "${fwdirname}") + string(REGEX REPLACE "^.*/${fwname}\\.framework/(.*)$" "\\1" fwlibname "${clib_libsrc}") + set(fw_dstdir "${clib_bundle}/Contents/Frameworks/${fwdirname}") + +# message("") +# message("fwdirname: '${fwdirname}'") +# message("fwname: '${fwname}'") +# message("fwlibname: '${fwlibname}'") +# message("fw_src: '${fw_src}'") +# message("fw_srcdir: '${fw_srcdir}'") +# message("fw_dstdir: '${fw_dstdir}'") +# message("new_name: '@executable_path/../Frameworks/${fwdirname}/${fwlibname}'") +# message("") + + message("Copying ${fw_srcdir} into bundle...") + + # This command copies the *entire* framework recursively: + # +# execute_process(COMMAND ${CMAKE_COMMAND} -E copy_directory +# "${fw_srcdir}" "${fw_dstdir}" +# ) + + # This command copies just the main shared lib of the framework: + # (This technique will not work for frameworks that have necessary + # resource or auxiliary files...) + # + message("fw_src = [${fw_src}] fw_full_src = [${fw_full_src}]") + message("Copy: ${CMAKE_COMMAND} -E copy \"${fw_src}\" \"${fw_dstdir}/${fwlibname}\"") + execute_process(COMMAND ${CMAKE_COMMAND} -E copy + "${fw_src}" "${fw_dstdir}/${fwlibname}" + ) + + execute_process(COMMAND install_name_tool + -id "@executable_path/../Frameworks/${fwdirname}/${fwlibname}" + "${clib_bundle}/Contents/Frameworks/${fwdirname}/${fwlibname}" + ) + set(${clib_dstlibs} ${${clib_dstlibs}} + "${clib_bundle}/Contents/Frameworks/${fwdirname}/${fwlibname}" + ) + set(${clib_fixups} ${${clib_fixups}} + "-change" + "${clib_libsrc}" + "@executable_path/../Frameworks/${fwdirname}/${fwlibname}" + ) + else("${clib_libsrc}" MATCHES ".framework/.*/.*/.*") + if("${clib_libsrc}" MATCHES "/") + set(clib_libsrcfull "${clib_libsrc}") + else("${clib_libsrc}" MATCHES "/") + set(clib_libsrcfull "${lib_path}/${clib_libsrc}") + if(NOT EXISTS "${clib_libsrcfull}") + message(FATAL_ERROR "error: '${clib_libsrcfull}' does not exist...") + endif(NOT EXISTS "${clib_libsrcfull}") + endif("${clib_libsrc}" MATCHES "/") + + get_filename_component(dylib_src "${clib_libsrcfull}" ABSOLUTE) + get_filename_component(dylib_name "${dylib_src}" NAME) + set(dylib_dst "${clib_bundle}/Contents/MacOS/${dylib_name}") + +# message("dylib_src: ${dylib_src}") +# message("dylib_dst: ${dylib_dst}") +# message("new_name: '@executable_path/${dylib_name}'") + + message("Copying ${dylib_src} into bundle...") + execute_process(COMMAND ${CMAKE_COMMAND} -E copy + "${dylib_src}" "${dylib_dst}") + execute_process(COMMAND install_name_tool + -id "@executable_path/${dylib_name}" + "${dylib_dst}" + ) + set(${clib_dstlibs} ${${clib_dstlibs}} + "${dylib_dst}" + ) + set(${clib_fixups} ${${clib_fixups}} + "-change" + "${clib_libsrc}" + "@executable_path/${dylib_name}" + ) + endif("${clib_libsrc}" MATCHES ".framework/.*/.*/.*") +endmacro(copy_library_into_bundle) + + +# Copy dependent "nonsystem" libraries into the bundle: +# +message("Copying dependent libraries into bundle...") +set(srclibs ${nonsystem_deps} ${extra_libs}) +set(dstlibs "") +set(fixups "") +foreach(d ${srclibs}) + message("copy it --- ${d}") + copy_library_into_bundle("${bundle}" "${d}" dstlibs fixups) +endforeach(d) + +message("") +message("dstlibs='${dstlibs}'") +message("") +message("fixups='${fixups}'") +message("") + + +# Fixup references to copied libraries in the main bundle executable and in the +# copied libraries themselves: +# +if(NOT "${fixups}" STREQUAL "") + message("Fixing up references...") + foreach(d ${dstlibs} "${input_file_full}") + message("fixing up references in: '${d}'") + execute_process(COMMAND install_name_tool ${fixups} "${d}") + endforeach(d) + message("") +endif(NOT "${fixups}" STREQUAL "") + + +# List all references to eyeball them and make sure they look right: +# +message("Listing references...") +foreach(d ${dstlibs} "${input_file_full}") + execute_process(COMMAND otool -L "${d}") + message("") +endforeach(d) +message("") + + +# Output file: +# +#get_filename_component(script_name "${CMAKE_CURRENT_LIST_FILE}" NAME) +#file(WRITE "${input_file_full}_${script_name}" "# Script \"${CMAKE_CURRENT_LIST_FILE}\" completed.\n") +message("") +message("# Script \"${CMAKE_CURRENT_LIST_FILE}\" completed.") +message("") diff --git a/CMakeLua/Source/QtDialog/MacInstallDialog.ui b/CMakeLua/Source/QtDialog/MacInstallDialog.ui new file mode 100755 index 0000000..c7e31db --- /dev/null +++ b/CMakeLua/Source/QtDialog/MacInstallDialog.ui @@ -0,0 +1,103 @@ + + Dialog + + + + 0 + 0 + 470 + 159 + + + + Install Command Line Tools + + + + 9 + + + 6 + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + 0 + + + 6 + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Skip Install Command Line + + + + + + + Install Command Line Links + + + + + + + + + Choose... + + + + + + + Install Folder: + + + + + + + + + + This will create symbolic links to the command line tools of cmake into the specified install folder. + + + true + + + + + + + + diff --git a/CMakeLua/Source/QtDialog/QMacInstallDialog.cxx b/CMakeLua/Source/QtDialog/QMacInstallDialog.cxx new file mode 100755 index 0000000..c3daaf2 --- /dev/null +++ b/CMakeLua/Source/QtDialog/QMacInstallDialog.cxx @@ -0,0 +1,69 @@ +#include "QMacInstallDialog.h" +#include "cmSystemTools.h" +#include +#include +#include "ui_MacInstallDialog.h" + +class QMacInstallDialog::QMacInstallDialogInternals : public Ui::Dialog +{ +public: +}; + +QMacInstallDialog::QMacInstallDialog(QWidget*w) + :QDialog(w) +{ + this->Internals = new QMacInstallDialogInternals; + this->Internals->setupUi(this); + QObject::connect(this->Internals->choosePathButton, SIGNAL(pressed()), + this, SLOT(ShowBrowser())); + QObject::connect(this->Internals->skipInstallButton, SIGNAL(pressed()), + this, SLOT(SkipInstall())); + QObject::connect(this->Internals->doInstallButton, SIGNAL(pressed()), + this, SLOT(DoInstall())); + this->Internals->InstallPrefix->setText("/usr/bin/"); + +} + +QMacInstallDialog::~QMacInstallDialog() +{ + delete this->Internals; +} + +void QMacInstallDialog::DoInstall() +{ + QDir installDir(this->Internals->InstallPrefix->text()); + std::string installTo = installDir.path().toStdString(); + QDir cmExecDir(QApplication::applicationDirPath()); + cmExecDir.cd("../bin"); + QFileInfoList list = cmExecDir.entryInfoList(); + for (int i = 0; i < list.size(); ++i) + { + QFileInfo fileInfo = list.at(i); + std::string filename = fileInfo.fileName().toStdString(); + std::string file = fileInfo.absoluteFilePath().toStdString(); + std::string newName = installTo; + newName += "/"; + newName += filename; + std::cout << "ln -s [" << file << "] ["; + std::cout << newName << "]\n"; + cmSystemTools::CreateSymlink(file.c_str(), + newName.c_str()); + } + this->done(0); +} + +void QMacInstallDialog::SkipInstall() +{ + this->done(0); +} + + +void QMacInstallDialog::ShowBrowser() +{ + QString dir = QFileDialog::getExistingDirectory(this, + tr("Enter Install Prefix"), this->Internals->InstallPrefix->text()); + if(!dir.isEmpty()) + { + this->Internals->InstallPrefix->setText(dir); + } +} diff --git a/CMakeLua/Source/QtDialog/QMacInstallDialog.h b/CMakeLua/Source/QtDialog/QMacInstallDialog.h new file mode 100755 index 0000000..efe67df --- /dev/null +++ b/CMakeLua/Source/QtDialog/QMacInstallDialog.h @@ -0,0 +1,20 @@ +#ifndef QMacInstallDialog_h +#define QMacInstallDialog_h +#include + +class QMacInstallDialog : public QDialog +{ + Q_OBJECT; +public: + QMacInstallDialog(QWidget*w); + ~QMacInstallDialog(); +private slots: + void ShowBrowser(); + void SkipInstall(); + void DoInstall(); +private: + class QMacInstallDialogInternals; + QMacInstallDialogInternals* Internals; +}; + +#endif diff --git a/CMakeLua/Source/QtDialog/cmakecache.xml b/CMakeLua/Source/QtDialog/cmakecache.xml new file mode 100644 index 0000000..a13b5b1 --- /dev/null +++ b/CMakeLua/Source/QtDialog/cmakecache.xml @@ -0,0 +1,8 @@ + + + + CMake cache file + + + + diff --git a/CMakeLua/Source/QtDialog/postflight.sh.in b/CMakeLua/Source/QtDialog/postflight.sh.in new file mode 100644 index 0000000..88dd066 --- /dev/null +++ b/CMakeLua/Source/QtDialog/postflight.sh.in @@ -0,0 +1,4 @@ +#!/bin/bash +echo "$2/@CMAKE_INSTALL_SUBDIR@/cmake-gui.app/Contents/MacOS/cmake-gui" >>/tmp/mylog +"$2/@CMAKE_INSTALL_SUBDIR@/cmake-gui.app/Contents/MacOS/cmake-gui" --mac-install +exit 0 diff --git a/CMakeLua/Source/QtDialog/postupgrade.sh.in b/CMakeLua/Source/QtDialog/postupgrade.sh.in new file mode 100644 index 0000000..06bd986 --- /dev/null +++ b/CMakeLua/Source/QtDialog/postupgrade.sh.in @@ -0,0 +1,2 @@ +#!/bin/bash +exit 0 diff --git a/CMakeLua/Source/cmCMakePolicyCommand.cxx b/CMakeLua/Source/cmCMakePolicyCommand.cxx new file mode 100755 index 0000000..96c9ac2 --- /dev/null +++ b/CMakeLua/Source/cmCMakePolicyCommand.cxx @@ -0,0 +1,129 @@ +/*========================================================================= + + Program: CMake - Cross-Platform Makefile Generator + Module: $RCSfile: cmCMakePolicyCommand.cxx,v $ + Language: C++ + Date: $Date: 2008-03-05 23:21:09 $ + Version: $Revision: 1.2 $ + + Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. + See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. + + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the above copyright notices for more information. + +=========================================================================*/ +#include "cmCMakePolicyCommand.h" + +#include "cmVersion.h" + +// cmCMakePolicyCommand +bool cmCMakePolicyCommand +::InitialPass(std::vector const& args, cmExecutionStatus &) +{ + if(args.size() < 1) + { + this->SetError("requires at least one argument."); + return false; + } + + if(args[0] == "SET") + { + return this->HandleSetMode(args); + } + else if(args[0] == "PUSH") + { + if(args.size() > 1) + { + this->SetError("PUSH may not be given additional arguments."); + return false; + } + return this->Makefile->PushPolicy(); + } + else if(args[0] == "POP") + { + if(args.size() > 1) + { + this->SetError("POP may not be given additional arguments."); + return false; + } + if(this->Makefile->PopPolicy(false)) + { + return true; + } + else + { + this->SetError("POP without matching PUSH"); + return false; + } + } + else if(args[0] == "VERSION") + { + return this->HandleVersionMode(args); + } + + cmOStringStream e; + e << "given unknown first argument \"" << args[0] << "\""; + this->SetError(e.str().c_str()); + return false; +} + +//---------------------------------------------------------------------------- +bool cmCMakePolicyCommand::HandleSetMode(std::vector const& args) +{ + if(args.size() != 3) + { + this->SetError("SET must be given exactly 2 additional arguments."); + return false; + } + + cmPolicies::PolicyStatus status; + if(args[2] == "OLD") + { + status = cmPolicies::OLD; + } + else if(args[2] == "NEW") + { + status = cmPolicies::NEW; + } + else + { + cmOStringStream e; + e << "SET given unrecognized policy status \"" << args[2] << "\""; + this->SetError(e.str().c_str()); + return false; + } + + if(!this->Makefile->SetPolicy(args[1].c_str(), status)) + { + this->SetError("SET failed to set policy."); + return false; + } + return true; +} + +//---------------------------------------------------------------------------- +bool +cmCMakePolicyCommand::HandleVersionMode(std::vector const& args) +{ + if(args.size() <= 1) + { + this->SetError("VERSION not given an argument"); + return false; + } + else if(args.size() >= 3) + { + this->SetError("VERSION given too many arguments"); + return false; + } + if(!this->Makefile->SetPolicyVersion(args[1].c_str())) + { + cmOStringStream e; + e << "VERSION given invalid value \"" << args[1] << "\". " + << "A numeric major.minor[.patch] must be given."; + this->SetError(e.str().c_str()); + return false; + } + return true; +} diff --git a/CMakeLua/Source/cmCMakePolicyCommand.h b/CMakeLua/Source/cmCMakePolicyCommand.h new file mode 100755 index 0000000..4d43af8 --- /dev/null +++ b/CMakeLua/Source/cmCMakePolicyCommand.h @@ -0,0 +1,111 @@ +/*========================================================================= + + Program: CMake - Cross-Platform Makefile Generator + Module: $RCSfile: cmCMakePolicyCommand.h,v $ + Language: C++ + Date: $Date: 2008-03-13 15:38:46 $ + Version: $Revision: 1.4 $ + + Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. + See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. + + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the above copyright notices for more information. + +=========================================================================*/ +#ifndef cmCMakePolicyCommand_h +#define cmCMakePolicyCommand_h + +#include "cmCommand.h" + +/** \class cmCMakePolicyCommand + * \brief Set how CMake should handle policies + * + * cmCMakePolicyCommand sets how CMake should deal with backwards + * compatibility policies. + */ +class cmCMakePolicyCommand : public cmCommand +{ +public: + /** + * This is a virtual constructor for the command. + */ + virtual cmCommand* Clone() + { + return new cmCMakePolicyCommand; + } + + /** + * This is called when the command is first encountered in + * the CMakeLists.txt file. + */ + virtual bool InitialPass(std::vector const& args, + cmExecutionStatus &status); + + /** + * This determines if the command is invoked when in script mode. + */ + virtual bool IsScriptable() { return true; } + + /** + * The name of the command as specified in CMakeList.txt. + */ + virtual const char* GetName() {return "cmake_policy";} + + /** + * Succinct documentation. + */ + virtual const char* GetTerseDocumentation() + { + return "Manage CMake policy settings."; + } + + /** + * More documentation. + */ + virtual const char* GetFullDocumentation() + { + return + " cmake_policy(VERSION major.minor[.patch])\n" + "Specify that the current CMake list file is written for the " + "given version of CMake. " + "All policies introduced in the specified version or earlier " + "will be set NEW. " + "All policies introduced after the specified version will be set " + "to WARN, which is like OLD but also produces a warning. " + "This effectively requests behavior preferred as of a given CMake " + "version and tells newer CMake versions to warn about their new " + "policies. " + "The policy version specified must be at least 2.4 or the command " + "will report an error. " + "In order to get compatibility features supporting versions earlier " + "than 2.4 see documentation of policy CMP0001." + "\n" + " cmake_policy(SET NEW)\n" + " cmake_policy(SET OLD)\n" + "Tell CMake to use the OLD or NEW behavior for a given policy. " + "Projects depending on the old behavior of a given policy may " + "silence a policy warning by setting the policy state to OLD. " + "Alternatively one may fix the project to work with the new behavior " + "and set the policy state to NEW." + "\n" + " cmake_policy(PUSH)\n" + " cmake_policy(POP)\n" + "Push and pop the current policy setting state on a stack. " + "Each PUSH must have a matching POP. " + "This is useful when mixing multiple projects, subprojects, and " + "files included from external projects that may each have been " + "written for a different version of CMake." + ; + } + + cmTypeMacro(cmCMakePolicyCommand, cmCommand); +private: + bool HandleSetMode(std::vector const& args); + bool HandleVersionMode(std::vector const& args); +}; + + + +#endif diff --git a/CMakeLua/Source/cmDocumentationFormatterDocbook.cxx b/CMakeLua/Source/cmDocumentationFormatterDocbook.cxx new file mode 100644 index 0000000..4860d71 --- /dev/null +++ b/CMakeLua/Source/cmDocumentationFormatterDocbook.cxx @@ -0,0 +1,254 @@ +/*========================================================================= + + Program: CMake - Cross-Platform Makefile Generator + Module: $RCSfile: cmDocumentationFormatterDocbook.cxx,v $ + Language: C++ + Date: $Date: 2008/02/19 19:33:43 $ + Version: $Revision: 1.1 $ + + Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. + See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. + + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the above copyright notices for more information. + +=========================================================================*/ +#include "cmDocumentationFormatterDocbook.h" +#include "cmDocumentationSection.h" +//---------------------------------------------------------------------------- + +// this function is a copy of the one in the HTML formatter +// the three functions below are slightly modified copies +static bool cmDocumentationIsHyperlinkCharDocbook(char c) +{ + // This is not a complete list but works for CMake documentation. + return ((c >= 'A' && c <= 'Z') || + (c >= 'a' && c <= 'z') || + (c >= '0' && c <= '9') || + c == '-' || c == '.' || c == '/' || c == '~' || c == '@' || + c == ':' || c == '_' || c == '&' || c == '?' || c == '='); +} + +//---------------------------------------------------------------------------- +static void cmDocumentationPrintDocbookChar(std::ostream& os, char c) +{ + // Use an escape sequence if necessary. + switch(c) + { + case '<': + os << "<"; + break; + case '>': + os << ">"; + break; + case '&': + os << "&"; + break; + default: + os << c; + } +} + +//---------------------------------------------------------------------------- +const char* cmDocumentationPrintDocbookLink(std::ostream& os,const char* begin) +{ + // Look for the end of the link. + const char* end = begin; + while(cmDocumentationIsHyperlinkCharDocbook(*end)) + { + ++end; + } + + // Print the hyperlink itself. + os << ""; + + return end; +} + +//---------------------------------------------------------------------------- +void cmDocumentationPrintDocbookEscapes(std::ostream& os, const char* text) +{ + // Hyperlink prefixes. + static const char* hyperlinks[] = {"http://", "ftp://", "mailto:", 0}; + + // Print each character. + for(const char* p = text; *p;) + { + // Handle hyperlinks specially to make them active. + bool found_hyperlink = false; + for(const char** h = hyperlinks; !found_hyperlink && *h; ++h) + { + if(strncmp(p, *h, strlen(*h)) == 0) + { + p = cmDocumentationPrintDocbookLink(os, p); + found_hyperlink = true; + } + } + + // Print other characters normally. + if(!found_hyperlink) + { + cmDocumentationPrintDocbookChar(os, *p++); + } + } +} + + +cmDocumentationFormatterDocbook::cmDocumentationFormatterDocbook() +:cmDocumentationFormatter() +{ +} + +void cmDocumentationFormatterDocbook +::PrintSection(std::ostream& os, + const cmDocumentationSection §ion, + const char* name) +{ + if(name) + { + std::string id = "section_"; + id += name; + if (this->EmittedLinkIds.find(id) == this->EmittedLinkIds.end()) + { + this->EmittedLinkIds.insert(id); + os << "\n" + "\n" << name << "\n"; + } + else + { + static unsigned int i=0; + i++; + os << "\n" + "\n" << name << "\n"; + } + } + + const std::vector &entries = + section.GetEntries(); + + os << "\n"; + for(std::vector::const_iterator op + = entries.begin(); op != entries.end(); ++ op ) + { + if(op->Name.size()) + { + os << " Name.c_str()); + os << "\">"; + cmDocumentationPrintDocbookEscapes(os, op->Name.c_str()); + os << ""; + } + } + os << "\n" ; + + for(std::vector::const_iterator op = entries.begin(); + op != entries.end();) + { + if(op->Name.size()) + { + for(;op != entries.end() && op->Name.size(); ++op) + { + if(op->Name.size()) + { + os << " Name.c_str()); + + // make sure that each id exists only once, e.g. + // command_COMPILE_DEFINITIONS exists at least twice. Since it seems + // not easily possible to determine which link refers to which id, + // we have at least to make sure that the duplicated id's get a + // different name (by appending an increasing number), Alex + std::string id = "command_"; + id += op->Name; + if (this->EmittedLinkIds.find(id) == this->EmittedLinkIds.end()) + { + this->EmittedLinkIds.insert(id); + } + else + { + static unsigned int i=0; + i++; + os << i; + } + // continue as normal... + + os << "\">"; + cmDocumentationPrintDocbookEscapes(os, op->Name.c_str()); + os << " "; + } + cmDocumentationPrintDocbookEscapes(os, op->Brief.c_str()); + if(op->Name.size()) + { + os << "\n"; + } + + if(op->Full.size()) + { + // a line break seems to be simply a line break with docbook + os << "\n "; + this->PrintFormatted(os, op->Full.c_str()); + } + os << "\n"; + } + } + else + { + this->PrintFormatted(os, op->Brief.c_str()); + os << "\n"; + ++op; + } + } + if(name) + { + os << "\n"; + } +} + +void cmDocumentationFormatterDocbook::PrintPreformatted(std::ostream& os, + const char* text) +{ + os << ""; + cmDocumentationPrintDocbookEscapes(os, text); + os << "\n "; +} + +void cmDocumentationFormatterDocbook::PrintParagraph(std::ostream& os, + const char* text) +{ + os << ""; + cmDocumentationPrintDocbookEscapes(os, text); + os << ""; +} + +//---------------------------------------------------------------------------- +void cmDocumentationFormatterDocbook::PrintHeader(const char* name, + std::ostream& os) +{ + // this one is used to ensure that we don't create multiple link targets + // with the same name. We can clear it here since we are at the + // start of a document here. + this->EmittedLinkIds.clear(); + + os << "\n" + "\n" + " ]>\n" + "

\n" + "\n" + "" << name << "\n" + "\n"; +} + +//---------------------------------------------------------------------------- +void cmDocumentationFormatterDocbook::PrintFooter(std::ostream& os) +{ + os << "
\n"; +} + diff --git a/CMakeLua/Source/cmDocumentationFormatterDocbook.h b/CMakeLua/Source/cmDocumentationFormatterDocbook.h new file mode 100644 index 0000000..9d6ff78 --- /dev/null +++ b/CMakeLua/Source/cmDocumentationFormatterDocbook.h @@ -0,0 +1,45 @@ +/*========================================================================= + + Program: CMake - Cross-Platform Makefile Generator + Module: $RCSfile: cmDocumentationFormatterDocbook.h,v $ + Language: C++ + Date: $Date: 2008/02/19 19:33:43 $ + Version: $Revision: 1.1 $ + + Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. + See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. + + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the above copyright notices for more information. + +=========================================================================*/ +#ifndef _cmDocumentationFormatterDocbook_h +#define _cmDocumentationFormatterDocbook_h + +#include "cmStandardIncludes.h" + +#include "cmDocumentationFormatter.h" + +/** Class to print the documentation as Docbook. + http://www.oasis-open.org/docbook/xml/4.2/ */ +class cmDocumentationFormatterDocbook : public cmDocumentationFormatter +{ +public: + cmDocumentationFormatterDocbook(); + + virtual cmDocumentationEnums::Form GetForm() const + { return cmDocumentationEnums::DocbookForm;} + + virtual void PrintHeader(const char* name, std::ostream& os); + virtual void PrintFooter(std::ostream& os); + virtual void PrintSection(std::ostream& os, + const cmDocumentationSection& section, + const char* name); + virtual void PrintPreformatted(std::ostream& os, const char* text); + virtual void PrintParagraph(std::ostream& os, const char* text); +private: + std::set EmittedLinkIds; +}; + +#endif diff --git a/CMakeLua/Source/cmELF.cxx b/CMakeLua/Source/cmELF.cxx new file mode 100644 index 0000000..a425ef8 --- /dev/null +++ b/CMakeLua/Source/cmELF.cxx @@ -0,0 +1,833 @@ +/*========================================================================= + + Program: CMake - Cross-Platform Makefile Generator + Module: $RCSfile: cmELF.cxx,v $ + Language: C++ + Date: $Date: 2008-03-03 13:48:37 $ + Version: $Revision: 1.8 $ + + Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. + See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. + + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the above copyright notices for more information. + +=========================================================================*/ +#include "cmStandardIncludes.h" // to get CMAKE_USE_ELF_PARSER first +#include "cmELF.h" + +#include + +// Need the native byte order of the running CPU. +#include + +// Include the ELF format information system header. +#include +#if defined(__sun) +# include // For dynamic section information +#endif + +//---------------------------------------------------------------------------- +// Low-level byte swapping implementation. +template struct cmELFByteSwapSize {}; +void cmELFByteSwap(char*, cmELFByteSwapSize<1> const&) +{ +} +void cmELFByteSwap(char* data, cmELFByteSwapSize<2> const&) +{ + char one_byte; + one_byte = data[0]; data[0] = data[1]; data[1] = one_byte; +} +void cmELFByteSwap(char* data, cmELFByteSwapSize<4> const&) +{ + char one_byte; + one_byte = data[0]; data[0] = data[3]; data[3] = one_byte; + one_byte = data[1]; data[1] = data[2]; data[2] = one_byte; +} +void cmELFByteSwap(char* data, cmELFByteSwapSize<8> const&) +{ + char one_byte; + one_byte = data[0]; data[0] = data[7]; data[7] = one_byte; + one_byte = data[1]; data[1] = data[6]; data[6] = one_byte; + one_byte = data[2]; data[2] = data[5]; data[5] = one_byte; + one_byte = data[3]; data[3] = data[4]; data[4] = one_byte; +} + +// Low-level byte swapping interface. +template +void cmELFByteSwap(T& x) +{ + cmELFByteSwap(reinterpret_cast(&x), cmELFByteSwapSize()); +} + +//---------------------------------------------------------------------------- +class cmELFInternal +{ +public: + typedef cmELF::StringEntry StringEntry; + enum ByteOrderType { ByteOrderMSB, ByteOrderLSB }; + + // Construct and take ownership of the file stream object. + cmELFInternal(cmELF* external, + cmsys::auto_ptr& fin, + ByteOrderType order): + External(external), + Stream(*fin.release()), + ByteOrder(order), + ELFType(cmELF::FileTypeInvalid) + { + // In most cases the processor-specific byte order will match that + // of the target execution environment. If we choose wrong here + // it is fixed when the header is read. +#if cmsys_CPU_ENDIAN_ID == cmsys_CPU_ENDIAN_ID_LITTLE + this->NeedSwap = (this->ByteOrder == ByteOrderMSB); +#elif cmsys_CPU_ENDIAN_ID == cmsys_CPU_ENDIAN_ID_BIG + this->NeedSwap = (this->ByteOrder == ByteOrderLSB); +#endif + + // We have not yet loaded the section info. + this->DynamicSectionIndex = -1; + } + + // Destruct and delete the file stream object. + virtual ~cmELFInternal() + { + delete &this->Stream; + } + + // Forward to the per-class implementation. + virtual unsigned int GetNumberOfSections() const = 0; + virtual StringEntry const* GetDynamicSectionString(int tag) = 0; + virtual void PrintInfo(std::ostream& os) const = 0; + + // Lookup the SONAME in the DYNAMIC section. + StringEntry const* GetSOName() + { + return this->GetDynamicSectionString(DT_SONAME); + } + + // Lookup the RPATH in the DYNAMIC section. + StringEntry const* GetRPath() + { + return this->GetDynamicSectionString(DT_RPATH); + } + + // Lookup the RUNPATH in the DYNAMIC section. + StringEntry const* GetRunPath() + { +#if defined(DT_RUNPATH) + return this->GetDynamicSectionString(DT_RUNPATH); +#else + return 0; +#endif + } + + // Return the recorded ELF type. + cmELF::FileType GetFileType() const { return this->ELFType; } +protected: + // Data common to all ELF class implementations. + + // The external cmELF object. + cmELF* External; + + // The stream from which to read. + std::istream& Stream; + + // The byte order of the ELF file. + ByteOrderType ByteOrder; + + // The ELF file type. + cmELF::FileType ELFType; + + // Whether we need to byte-swap structures read from the stream. + bool NeedSwap; + + // The section header index of the DYNAMIC section (-1 if none). + int DynamicSectionIndex; + + // Helper methods for subclasses. + void SetErrorMessage(const char* msg) + { + this->External->ErrorMessage = msg; + this->ELFType = cmELF::FileTypeInvalid; + } + + // Store string table entry states. + std::map DynamicSectionStrings; +}; + +//---------------------------------------------------------------------------- +// Configure the implementation template for 32-bit ELF files. +struct cmELFTypes32 +{ + typedef Elf32_Ehdr ELF_Ehdr; + typedef Elf32_Shdr ELF_Shdr; + typedef Elf32_Dyn ELF_Dyn; + typedef Elf32_Half ELF_Half; + static const char* GetName() { return "32-bit"; } +}; + +// Configure the implementation template for 32-bit ELF files. +struct cmELFTypes64 +{ + typedef Elf64_Ehdr ELF_Ehdr; + typedef Elf64_Shdr ELF_Shdr; + typedef Elf64_Dyn ELF_Dyn; + typedef Elf64_Half ELF_Half; + static const char* GetName() { return "64-bit"; } +}; + +//---------------------------------------------------------------------------- +// Parser implementation template. +template +class cmELFInternalImpl: public cmELFInternal +{ +public: + // Copy the ELF file format types from our configuration parameter. + typedef typename Types::ELF_Ehdr ELF_Ehdr; + typedef typename Types::ELF_Shdr ELF_Shdr; + typedef typename Types::ELF_Dyn ELF_Dyn; + typedef typename Types::ELF_Half ELF_Half; + + // Construct with a stream and byte swap indicator. + cmELFInternalImpl(cmELF* external, + cmsys::auto_ptr& fin, + ByteOrderType order); + + // Return the number of sections as specified by the ELF header. + virtual unsigned int GetNumberOfSections() const + { + return static_cast(this->ELFHeader.e_shnum); + } + + // Lookup a string from the dynamic section with the given tag. + virtual StringEntry const* GetDynamicSectionString(int tag); + + // Print information about the ELF file. + virtual void PrintInfo(std::ostream& os) const + { + os << "ELF " << Types::GetName(); + if(this->ByteOrder == ByteOrderMSB) + { + os << " MSB"; + } + else if(this->ByteOrder == ByteOrderLSB) + { + os << " LSB"; + } + switch(this->ELFType) + { + case cmELF::FileTypeInvalid: + os << " invalid file"; + break; + case cmELF::FileTypeRelocatableObject: + os << " relocatable object"; + break; + case cmELF::FileTypeExecutable: + os << " executable"; + break; + case cmELF::FileTypeSharedLibrary: + os << " shared library"; + break; + case cmELF::FileTypeCore: + os << " core file"; + break; + case cmELF::FileTypeSpecificOS: + os << " os-specific type"; + break; + case cmELF::FileTypeSpecificProc: + os << " processor-specific type"; + break; + } + os << "\n"; + } + +private: + void ByteSwap(ELF_Ehdr& elf_header) + { + cmELFByteSwap(elf_header.e_type); + cmELFByteSwap(elf_header.e_machine); + cmELFByteSwap(elf_header.e_version); + cmELFByteSwap(elf_header.e_entry); + cmELFByteSwap(elf_header.e_phoff); + cmELFByteSwap(elf_header.e_shoff); + cmELFByteSwap(elf_header.e_flags); + cmELFByteSwap(elf_header.e_ehsize); + cmELFByteSwap(elf_header.e_phentsize); + cmELFByteSwap(elf_header.e_phnum); + cmELFByteSwap(elf_header.e_shentsize); + cmELFByteSwap(elf_header.e_shnum); + cmELFByteSwap(elf_header.e_shstrndx); + } + + void ByteSwap(ELF_Shdr& sec_header) + { + cmELFByteSwap(sec_header.sh_name); + cmELFByteSwap(sec_header.sh_type); + cmELFByteSwap(sec_header.sh_flags); + cmELFByteSwap(sec_header.sh_addr); + cmELFByteSwap(sec_header.sh_offset); + cmELFByteSwap(sec_header.sh_size); + cmELFByteSwap(sec_header.sh_link); + cmELFByteSwap(sec_header.sh_info); + cmELFByteSwap(sec_header.sh_addralign); + cmELFByteSwap(sec_header.sh_entsize); + } + + void ByteSwap(ELF_Dyn& dyn) + { + cmELFByteSwap(dyn.d_tag); + switch (dyn.d_tag) + { + case DT_NULL: /* dyn.d_un ignored */ break; + case DT_NEEDED: cmELFByteSwap(dyn.d_un.d_val); break; + case DT_PLTRELSZ: cmELFByteSwap(dyn.d_un.d_val); break; + case DT_PLTGOT: cmELFByteSwap(dyn.d_un.d_ptr); break; + case DT_HASH: cmELFByteSwap(dyn.d_un.d_ptr); break; + case DT_STRTAB: cmELFByteSwap(dyn.d_un.d_ptr); break; + case DT_SYMTAB: cmELFByteSwap(dyn.d_un.d_ptr); break; + case DT_RELA: cmELFByteSwap(dyn.d_un.d_ptr); break; + case DT_RELASZ: cmELFByteSwap(dyn.d_un.d_val); break; + case DT_RELAENT: cmELFByteSwap(dyn.d_un.d_val); break; + case DT_STRSZ: cmELFByteSwap(dyn.d_un.d_val); break; + case DT_SYMENT: cmELFByteSwap(dyn.d_un.d_val); break; + case DT_INIT: cmELFByteSwap(dyn.d_un.d_ptr); break; + case DT_FINI: cmELFByteSwap(dyn.d_un.d_ptr); break; + case DT_SONAME: cmELFByteSwap(dyn.d_un.d_val); break; + case DT_RPATH: cmELFByteSwap(dyn.d_un.d_val); break; + case DT_SYMBOLIC: /* dyn.d_un ignored */ break; + case DT_REL: cmELFByteSwap(dyn.d_un.d_ptr); break; + case DT_RELSZ: cmELFByteSwap(dyn.d_un.d_val); break; + case DT_RELENT: cmELFByteSwap(dyn.d_un.d_val); break; + case DT_PLTREL: cmELFByteSwap(dyn.d_un.d_val); break; + case DT_DEBUG: cmELFByteSwap(dyn.d_un.d_ptr); break; + case DT_TEXTREL: /* dyn.d_un ignored */ break; + case DT_JMPREL: cmELFByteSwap(dyn.d_un.d_ptr); break; +#ifdef T_BIND_NOW + case T_BIND_NOW: /* dyn.d_un ignored */ break; +#endif +#ifdef DT_INIT_ARRAY + case DT_INIT_ARRAY: cmELFByteSwap(dyn.d_un.d_ptr); break; +#endif +#ifdef DT_FINI_ARRAY + case DT_FINI_ARRAY: cmELFByteSwap(dyn.d_un.d_ptr); break; +#endif +#ifdef DT_INIT_ARRAYSZ + case DT_INIT_ARRAYSZ: cmELFByteSwap(dyn.d_un.d_val); break; +#endif +#ifdef DT_FINI_ARRAYSZ + case DT_FINI_ARRAYSZ: cmELFByteSwap(dyn.d_un.d_val); break; +#endif +#ifdef DT_RUNPATH + case DT_RUNPATH: cmELFByteSwap(dyn.d_un.d_val); break; +#endif +#ifdef DT_FLAGS + case DT_FLAGS: cmELFByteSwap(dyn.d_un.d_val); break; +#endif +#ifdef DT_PREINIT_ARRAY + case DT_PREINIT_ARRAY: cmELFByteSwap(dyn.d_un.d_ptr); break; +#endif +#ifdef DT_PREINIT_ARRAYSZ + case DT_PREINIT_ARRAYSZ: cmELFByteSwap(dyn.d_un.d_val); break; +#endif + } + } + + bool FileTypeValid(ELF_Half et) + { + unsigned int eti = static_cast(et); + if(eti == ET_NONE || eti == ET_REL || eti == ET_EXEC || + eti == ET_DYN || eti == ET_CORE) + { + return true; + } +#if defined(ET_LOOS) && defined(ET_HIOS) + if(eti >= ET_LOOS && eti <= ET_HIOS) + { + return true; + } +#endif +#if defined(ET_LOPROC) && defined(ET_HIPROC) + if(eti >= ET_LOPROC && eti <= ET_HIPROC) + { + return true; + } +#endif + return false; + } + + bool Read(ELF_Ehdr& x) + { + // Read the header from the file. + if(!this->Stream.read(reinterpret_cast(&x), sizeof(x))) + { + return false; + } + + // The byte order of ELF header fields may not match that of the + // processor-specific data. The header fields are ordered to + // match the target execution environment, so we may need to + // memorize the order of all platforms based on the e_machine + // value. As a heuristic, if the type is invalid but its + // swapped value is okay then flip our swap mode. + ELF_Half et = x.e_type; + if(this->NeedSwap) + { + cmELFByteSwap(et); + } + if(!this->FileTypeValid(et)) + { + cmELFByteSwap(et); + if(this->FileTypeValid(et)) + { + // The previous byte order guess was wrong. Flip it. + this->NeedSwap = !this->NeedSwap; + } + } + + // Fix the byte order of the header. + if(this->NeedSwap) + { + ByteSwap(x); + } + return true; + } + bool Read(ELF_Shdr& x) + { + if(this->Stream.read(reinterpret_cast(&x), sizeof(x)) && + this->NeedSwap) + { + ByteSwap(x); + } + return this->Stream? true:false; + } + bool Read(ELF_Dyn& x) + { + if(this->Stream.read(reinterpret_cast(&x), sizeof(x)) && + this->NeedSwap) + { + ByteSwap(x); + } + return this->Stream? true:false; + } + + bool LoadSectionHeader(ELF_Half i) + { + // Read the section header from the file. + this->Stream.seekg(this->ELFHeader.e_shoff + + this->ELFHeader.e_shentsize * i); + if(!this->Read(this->SectionHeaders[i])) + { + return false; + } + + // Identify some important sections. + if(this->SectionHeaders[i].sh_type == SHT_DYNAMIC) + { + this->DynamicSectionIndex = i; + } + return true; + } + + bool LoadDynamicSection(); + + // Store the main ELF header. + ELF_Ehdr ELFHeader; + + // Store all the section headers. + std::vector SectionHeaders; + + // Store all entries of the DYNAMIC section. + std::vector DynamicSectionEntries; +}; + +//---------------------------------------------------------------------------- +template +cmELFInternalImpl +::cmELFInternalImpl(cmELF* external, + cmsys::auto_ptr& fin, + ByteOrderType order): + cmELFInternal(external, fin, order) +{ + // Read the main header. + if(!this->Read(this->ELFHeader)) + { + this->SetErrorMessage("Failed to read main ELF header."); + return; + } + + // Determine the ELF file type. + switch(this->ELFHeader.e_type) + { + case ET_NONE: + this->SetErrorMessage("ELF file type is NONE."); + return; + case ET_REL: + this->ELFType = cmELF::FileTypeRelocatableObject; + break; + case ET_EXEC: + this->ELFType = cmELF::FileTypeExecutable; + break; + case ET_DYN: + this->ELFType = cmELF::FileTypeSharedLibrary; + break; + case ET_CORE: + this->ELFType = cmELF::FileTypeCore; + break; + default: + { + unsigned int eti = static_cast(this->ELFHeader.e_type); +#if defined(ET_LOOS) && defined(ET_HIOS) + if(eti >= ET_LOOS && eti <= ET_HIOS) + { + this->ELFType = cmELF::FileTypeSpecificOS; + break; + } +#endif +#if defined(ET_LOPROC) && defined(ET_HIPROC) + if(eti >= ET_LOPROC && eti <= ET_HIPROC) + { + this->ELFType = cmELF::FileTypeSpecificProc; + break; + } +#endif + cmOStringStream e; + e << "Unknown ELF file type " << eti; + this->SetErrorMessage(e.str().c_str()); + return; + } + } + + // Load the section headers. + this->SectionHeaders.resize(this->ELFHeader.e_shnum); + for(ELF_Half i=0; i < this->ELFHeader.e_shnum; ++i) + { + if(!this->LoadSectionHeader(i)) + { + this->SetErrorMessage("Failed to load section headers."); + return; + } + } +} + +//---------------------------------------------------------------------------- +template +bool cmELFInternalImpl::LoadDynamicSection() +{ + // If there is no dynamic section we are done. + if(this->DynamicSectionIndex < 0) + { + return false; + } + + // If the section was already loaded we are done. + if(!this->DynamicSectionEntries.empty()) + { + return true; + } + + // Allocate the dynamic section entries. + ELF_Shdr const& sec = this->SectionHeaders[this->DynamicSectionIndex]; + int n = sec.sh_size / sec.sh_entsize; + this->DynamicSectionEntries.resize(n); + + // Read each entry. + for(int j=0; j < n; ++j) + { + // Seek to the beginning of the section entry. + this->Stream.seekg(sec.sh_offset + sec.sh_entsize*j); + ELF_Dyn& dyn = this->DynamicSectionEntries[j]; + + // Try reading the entry. + if(!this->Read(dyn)) + { + this->SetErrorMessage("Error reading entry from DYNAMIC section."); + this->DynamicSectionIndex = -1; + return false; + } + } + return true; +} + +//---------------------------------------------------------------------------- +template +cmELF::StringEntry const* +cmELFInternalImpl::GetDynamicSectionString(int tag) +{ + // Short-circuit if already checked. + std::map::iterator dssi = + this->DynamicSectionStrings.find(tag); + if(dssi != this->DynamicSectionStrings.end()) + { + if(dssi->second.Position > 0) + { + return &dssi->second; + } + return 0; + } + + // Create an entry for this tag. Assume it is missing until found. + StringEntry& se = this->DynamicSectionStrings[tag]; + se.Position = 0; + se.Size = 0; + + // Try reading the dynamic section. + if(!this->LoadDynamicSection()) + { + return 0; + } + + // Get the string table referenced by the DYNAMIC section. + ELF_Shdr const& sec = this->SectionHeaders[this->DynamicSectionIndex]; + if(sec.sh_link >= this->SectionHeaders.size()) + { + this->SetErrorMessage("Section DYNAMIC has invalid string table index."); + return 0; + } + ELF_Shdr const& strtab = this->SectionHeaders[sec.sh_link]; + + // Look for the requested entry. + for(typename std::vector::iterator + di = this->DynamicSectionEntries.begin(); + di != this->DynamicSectionEntries.end(); ++di) + { + ELF_Dyn& dyn = *di; + if(dyn.d_tag == tag) + { + // We found the tag requested. + // Make sure the position given is within the string section. + if(dyn.d_un.d_val >= strtab.sh_size) + { + this->SetErrorMessage("Section DYNAMIC references string beyond " + "the end of its string section."); + return 0; + } + + // Seek to the position reported by the entry. + unsigned long first = static_cast(dyn.d_un.d_val); + unsigned long last = first; + unsigned long end = static_cast(strtab.sh_size); + this->Stream.seekg(strtab.sh_offset + first); + + // Read the string. It may be followed by more than one NULL + // terminator. Count the total size of the region allocated to + // the string. This assumes that the next string in the table + // is non-empty, but the "chrpath" tool makes the same + // assumption. + bool terminated = false; + char c; + while(last != end && this->Stream.get(c) && !(terminated && c)) + { + ++last; + if(c) + { + se.Value += c; + } + else + { + terminated = true; + } + } + + // Make sure the whole value was read. + if(!this->Stream) + { + this->SetErrorMessage("Dynamic section specifies unreadable RPATH."); + se.Value = ""; + return 0; + } + + // The value has been read successfully. Report it. + se.Position = static_cast(strtab.sh_offset + first); + se.Size = last - first; + return &se; + } + } + return 0; +} + +//============================================================================ +// External class implementation. + +//---------------------------------------------------------------------------- +cmELF::cmELF(const char* fname): Internal(0) +{ + // Try to open the file. + cmsys::auto_ptr fin(new std::ifstream(fname)); + + // Quit now if the file could not be opened. + if(!fin.get() || !*fin) + { + this->ErrorMessage = "Error opening input file."; + return; + } + + // Read the ELF identification block. + char ident[EI_NIDENT]; + if(!fin->read(ident, EI_NIDENT)) + { + this->ErrorMessage = "Error reading ELF identification."; + return; + } + if(!fin->seekg(0)) + { + this->ErrorMessage = "Error seeking to beginning of file."; + return; + } + + // Verify the ELF identification. + if(!(ident[EI_MAG0] == ELFMAG0 && + ident[EI_MAG1] == ELFMAG1 && + ident[EI_MAG2] == ELFMAG2 && + ident[EI_MAG3] == ELFMAG3)) + { + this->ErrorMessage = "File does not have a valid ELF identification."; + return; + } + + // Check the byte order in which the rest of the file is encoded. + cmELFInternal::ByteOrderType order; + if(ident[EI_DATA] == ELFDATA2LSB) + { + // File is LSB. + order = cmELFInternal::ByteOrderLSB; + } + else if(ident[EI_DATA] == ELFDATA2MSB) + { + // File is MSB. + order = cmELFInternal::ByteOrderMSB; + } + else + { + this->ErrorMessage = "ELF file is not LSB or MSB encoded."; + return; + } + + // Check the class of the file and construct the corresponding + // parser implementation. + if(ident[EI_CLASS] == ELFCLASS32) + { + // 32-bit ELF + this->Internal = new cmELFInternalImpl(this, fin, order); + } + else if(ident[EI_CLASS] == ELFCLASS64) + { + // 64-bit ELF + this->Internal = new cmELFInternalImpl(this, fin, order); + } + else + { + this->ErrorMessage = "ELF file class is not 32-bit or 64-bit."; + return; + } +} + +//---------------------------------------------------------------------------- +cmELF::~cmELF() +{ + delete this->Internal; +} + +//---------------------------------------------------------------------------- +bool cmELF::Valid() const +{ + return this->Internal && this->Internal->GetFileType() != FileTypeInvalid; +} + +//---------------------------------------------------------------------------- +cmELF::FileType cmELF::GetFileType() const +{ + if(this->Valid()) + { + return this->Internal->GetFileType(); + } + else + { + return FileTypeInvalid; + } +} + +//---------------------------------------------------------------------------- +unsigned int cmELF::GetNumberOfSections() const +{ + if(this->Valid()) + { + return this->Internal->GetNumberOfSections(); + } + else + { + return 0; + } +} + +//---------------------------------------------------------------------------- +bool cmELF::GetSOName(std::string& soname) +{ + if(StringEntry const* se = this->GetSOName()) + { + soname = se->Value; + return true; + } + else + { + return false; + } +} + +//---------------------------------------------------------------------------- +cmELF::StringEntry const* cmELF::GetSOName() +{ + if(this->Valid() && + this->Internal->GetFileType() == cmELF::FileTypeSharedLibrary) + { + return this->Internal->GetSOName(); + } + else + { + return 0; + } +} + +//---------------------------------------------------------------------------- +cmELF::StringEntry const* cmELF::GetRPath() +{ + if(this->Valid() && + this->Internal->GetFileType() == cmELF::FileTypeExecutable || + this->Internal->GetFileType() == cmELF::FileTypeSharedLibrary) + { + return this->Internal->GetRPath(); + } + else + { + return 0; + } +} + +//---------------------------------------------------------------------------- +cmELF::StringEntry const* cmELF::GetRunPath() +{ + if(this->Valid() && + this->Internal->GetFileType() == cmELF::FileTypeExecutable || + this->Internal->GetFileType() == cmELF::FileTypeSharedLibrary) + { + return this->Internal->GetRunPath(); + } + else + { + return 0; + } +} + +//---------------------------------------------------------------------------- +void cmELF::PrintInfo(std::ostream& os) const +{ + if(this->Valid()) + { + this->Internal->PrintInfo(os); + } + else + { + os << "Not a valid ELF file.\n"; + } +} diff --git a/CMakeLua/Source/cmELF.h b/CMakeLua/Source/cmELF.h new file mode 100644 index 0000000..e47d69c --- /dev/null +++ b/CMakeLua/Source/cmELF.h @@ -0,0 +1,99 @@ +/*========================================================================= + + Program: CMake - Cross-Platform Makefile Generator + Module: $RCSfile: cmELF.h,v $ + Language: C++ + Date: $Date: 2008-03-02 21:19:40 $ + Version: $Revision: 1.4 $ + + Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. + See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. + + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the above copyright notices for more information. + +=========================================================================*/ +#ifndef cmELF_h +#define cmELF_h + +#if !defined(CMAKE_USE_ELF_PARSER) +# error "This file may be included only if CMAKE_USE_ELF_PARSER is enabled." +#endif + +class cmELFInternal; + +/** \class cmELF + * \brief Executable and Link Format (ELF) parser. + */ +class cmELF +{ +public: + /** Construct with the name of the ELF input file to parse. */ + cmELF(const char* fname); + + /** Destruct. */ + ~cmELF(); + + /** Get the error message if any. */ + std::string const& GetErrorMessage() const + { + return this->ErrorMessage; + } + + /** Boolean conversion. True if the ELF file is valid. */ + operator bool() const { return this->Valid(); } + + /** Enumeration of ELF file types. */ + enum FileType + { + FileTypeInvalid, + FileTypeRelocatableObject, + FileTypeExecutable, + FileTypeSharedLibrary, + FileTypeCore, + FileTypeSpecificOS, + FileTypeSpecificProc + }; + + /** Represent string table entries. */ + struct StringEntry + { + // The string value itself. + std::string Value; + + // The position in the file at which the string appears. + unsigned long Position; + + // The size of the string table entry. This includes the space + // allocated for one or more null terminators. + unsigned long Size; + }; + + /** Get the type of the file opened. */ + FileType GetFileType() const; + + /** Get the number of ELF sections present. */ + unsigned int GetNumberOfSections() const; + + /** Get the SONAME field if any. */ + bool GetSOName(std::string& soname); + StringEntry const* GetSOName(); + + /** Get the RPATH field if any. */ + StringEntry const* GetRPath(); + + /** Get the RUNPATH field if any. */ + StringEntry const* GetRunPath(); + + /** Print human-readable information about the ELF file. */ + void PrintInfo(std::ostream& os) const; + +private: + friend class cmELFInternal; + bool Valid() const; + cmELFInternal* Internal; + std::string ErrorMessage; +}; + +#endif diff --git a/CMakeLua/Source/cmOrderDirectories.cxx b/CMakeLua/Source/cmOrderDirectories.cxx new file mode 100644 index 0000000..712515d --- /dev/null +++ b/CMakeLua/Source/cmOrderDirectories.cxx @@ -0,0 +1,531 @@ +/*========================================================================= + + Program: CMake - Cross-Platform Makefile Generator + Module: $RCSfile: cmOrderDirectories.cxx,v $ + Language: C++ + Date: $Date: 2008/02/22 14:44:11 $ + Version: $Revision: 1.4 $ + + Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. + See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. + + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the above copyright notices for more information. + +=========================================================================*/ +#include "cmOrderDirectories.h" + +#include "cmGlobalGenerator.h" +#include "cmSystemTools.h" + +#include + +#include + +/* +Directory ordering computation. + - Useful to compute a safe runtime library path order + - Need runtime path for supporting INSTALL_RPATH_USE_LINK_PATH + - Need runtime path at link time to pickup transitive link dependencies + for shared libraries. +*/ + +//---------------------------------------------------------------------------- +class cmOrderDirectoriesConstraint +{ +public: + cmOrderDirectoriesConstraint(cmOrderDirectories* od, + std::string const& file): + OD(od), GlobalGenerator(od->GlobalGenerator) + { + this->FullPath = file; + this->Directory = cmSystemTools::GetFilenamePath(file); + this->FileName = cmSystemTools::GetFilenameName(file); + } + virtual ~cmOrderDirectoriesConstraint() {} + + void AddDirectory() + { + this->DirectoryIndex = this->OD->AddOriginalDirectory(this->Directory); + } + + virtual void Report(std::ostream& e) = 0; + + void FindConflicts(unsigned int index) + { + for(unsigned int i=0; i < this->OD->OriginalDirectories.size(); ++i) + { + // Check if this directory conflicts with they entry. + std::string const& dir = this->OD->OriginalDirectories[i]; + if(dir != this->Directory && this->FindConflict(dir)) + { + // The library will be found in this directory but this is not + // the directory named for it. Add an entry to make sure the + // desired directory comes before this one. + cmOrderDirectories::ConflictPair p(this->DirectoryIndex, index); + this->OD->ConflictGraph[i].push_back(p); + } + } + } +protected: + virtual bool FindConflict(std::string const& dir) = 0; + + bool FileMayConflict(std::string const& dir, std::string const& name); + + cmOrderDirectories* OD; + cmGlobalGenerator* GlobalGenerator; + + // The location in which the item is supposed to be found. + std::string FullPath; + std::string Directory; + std::string FileName; + + // The index assigned to the directory. + int DirectoryIndex; +}; + +//---------------------------------------------------------------------------- +bool cmOrderDirectoriesConstraint::FileMayConflict(std::string const& dir, + std::string const& name) +{ + // Check if the file will be built by cmake. + std::set const& files = + (this->GlobalGenerator->GetDirectoryContent(dir, false)); + if(std::set::const_iterator(files.find(name)) != files.end()) + { + return true; + } + + // Check if the file exists on disk and is not a symlink back to the + // original file. + std::string file = dir; + file += "/"; + file += name; + if(cmSystemTools::FileExists(file.c_str(), true) && + !cmSystemTools::SameFile(this->FullPath.c_str(), file.c_str())) + { + return true; + } + return false; +} + +//---------------------------------------------------------------------------- +class cmOrderDirectoriesConstraintSOName: public cmOrderDirectoriesConstraint +{ +public: + cmOrderDirectoriesConstraintSOName(cmOrderDirectories* od, + std::string const& file, + const char* soname): + cmOrderDirectoriesConstraint(od, file), SOName(soname? soname : "") + { + if(this->SOName.empty()) + { + // Try to guess the soname. + std::string soguess; + if(cmSystemTools::GuessLibrarySOName(file, soguess)) + { + this->SOName = soguess; + } + } + } + + virtual void Report(std::ostream& e) + { + e << "runtime library ["; + if(this->SOName.empty()) + { + e << this->FileName; + } + else + { + e << this->SOName; + } + e << "]"; + } + + virtual bool FindConflict(std::string const& dir); +private: + // The soname of the shared library if it is known. + std::string SOName; +}; + +//---------------------------------------------------------------------------- +bool cmOrderDirectoriesConstraintSOName::FindConflict(std::string const& dir) +{ + // Determine which type of check to do. + if(!this->SOName.empty()) + { + // We have the library soname. Check if it will be found. + if(this->FileMayConflict(dir, this->SOName)) + { + return true; + } + } + else + { + // We do not have the soname. Look for files in the directory + // that may conflict. + std::set const& files = + (this->GlobalGenerator + ->GetDirectoryContent(dir, true)); + + // Get the set of files that might conflict. Since we do not + // know the soname just look at all files that start with the + // file name. Usually the soname starts with the library name. + std::string base = this->FileName; + std::set::const_iterator first = files.lower_bound(base); + ++base[base.size()-1]; + std::set::const_iterator last = files.upper_bound(base); + if(first != last) + { + return true; + } + } + return false; +} + +//---------------------------------------------------------------------------- +class cmOrderDirectoriesConstraintLibrary: public cmOrderDirectoriesConstraint +{ +public: + cmOrderDirectoriesConstraintLibrary(cmOrderDirectories* od, + std::string const& file): + cmOrderDirectoriesConstraint(od, file) + { + } + + virtual void Report(std::ostream& e) + { + e << "link library [" << this->FileName << "]"; + } + + virtual bool FindConflict(std::string const& dir); +}; + +//---------------------------------------------------------------------------- +bool cmOrderDirectoriesConstraintLibrary::FindConflict(std::string const& dir) +{ + // We have the library file name. Check if it will be found. + if(this->FileMayConflict(dir, this->FileName)) + { + return true; + } + + // Now check if the file exists with other extensions the linker + // might consider. + if(!this->OD->LinkExtensions.empty() && + this->OD->RemoveLibraryExtension.find(this->FileName)) + { + cmStdString lib = this->OD->RemoveLibraryExtension.match(1); + cmStdString ext = this->OD->RemoveLibraryExtension.match(2); + for(std::vector::iterator + i = this->OD->LinkExtensions.begin(); + i != this->OD->LinkExtensions.end(); ++i) + { + if(*i != ext) + { + std::string fname = lib; + fname += *i; + if(this->FileMayConflict(dir, fname.c_str())) + { + return true; + } + } + } + } + return false; +} + +//---------------------------------------------------------------------------- +cmOrderDirectories::cmOrderDirectories(cmGlobalGenerator* gg, + const char* name, + const char* purpose) +{ + this->GlobalGenerator = gg; + this->Name = name; + this->Purpose = purpose; + this->Computed = false; +} + +//---------------------------------------------------------------------------- +cmOrderDirectories::~cmOrderDirectories() +{ + for(std::vector::iterator + i = this->ConstraintEntries.begin(); + i != this->ConstraintEntries.end(); ++i) + { + delete *i; + } +} + +//---------------------------------------------------------------------------- +std::vector const& cmOrderDirectories::GetOrderedDirectories() +{ + if(!this->Computed) + { + this->Computed = true; + this->CollectOriginalDirectories(); + this->FindConflicts(); + this->OrderDirectories(); + } + return this->OrderedDirectories; +} + +//---------------------------------------------------------------------------- +void cmOrderDirectories::AddRuntimeLibrary(std::string const& fullPath, + const char* soname) +{ + // Add the runtime library at most once. + if(this->EmmittedConstraintSOName.insert(fullPath).second) + { + // Avoid dealing with implicit directories. + if(!this->ImplicitDirectories.empty()) + { + std::string dir = cmSystemTools::GetFilenamePath(fullPath); + if(this->ImplicitDirectories.find(dir) != + this->ImplicitDirectories.end()) + { + return; + } + } + + // Construct the runtime information entry for this library. + this->ConstraintEntries.push_back( + new cmOrderDirectoriesConstraintSOName(this, fullPath, soname)); + } + else + { + // This can happen if the same library is linked multiple times. + // In that case the runtime information check need be done only + // once anyway. For shared libs we could add a check in AddItem + // to not repeat them. + } +} + +//---------------------------------------------------------------------------- +void cmOrderDirectories::AddLinkLibrary(std::string const& fullPath) +{ + // Link extension info is required for library constraints. + assert(!this->LinkExtensions.empty()); + + // Add the link library at most once. + if(this->EmmittedConstraintLibrary.insert(fullPath).second) + { + // Avoid dealing with implicit directories. + if(!this->ImplicitDirectories.empty()) + { + std::string dir = cmSystemTools::GetFilenamePath(fullPath); + if(this->ImplicitDirectories.find(dir) != + this->ImplicitDirectories.end()) + { + return; + } + } + + // Construct the link library entry. + this->ConstraintEntries.push_back( + new cmOrderDirectoriesConstraintLibrary(this, fullPath)); + } +} + +//---------------------------------------------------------------------------- +void +cmOrderDirectories +::AddUserDirectories(std::vector const& extra) +{ + this->UserDirectories.insert(this->UserDirectories.end(), + extra.begin(), extra.end()); +} + +//---------------------------------------------------------------------------- +void +cmOrderDirectories +::SetImplicitDirectories(std::set const& implicitDirs) +{ + this->ImplicitDirectories = implicitDirs; +} + +//---------------------------------------------------------------------------- +void +cmOrderDirectories +::SetLinkExtensionInfo(std::vector const& linkExtensions, + std::string const& removeExtRegex) +{ + this->LinkExtensions = linkExtensions; + this->RemoveLibraryExtension.compile(removeExtRegex.c_str()); +} + +//---------------------------------------------------------------------------- +void cmOrderDirectories::CollectOriginalDirectories() +{ + // Add user directories specified for inclusion. These should be + // indexed first so their original order is preserved as much as + // possible subject to the constraints. + for(std::vector::const_iterator + di = this->UserDirectories.begin(); + di != this->UserDirectories.end(); ++di) + { + // Avoid dealing with implicit directories. + if(this->ImplicitDirectories.find(*di) != + this->ImplicitDirectories.end()) + { + continue; + } + + // Skip the empty string. + if(di->empty()) + { + continue; + } + + // Add this directory. + this->AddOriginalDirectory(*di); + } + + // Add directories containing constraints. + for(unsigned int i=0; i < this->ConstraintEntries.size(); ++i) + { + this->ConstraintEntries[i]->AddDirectory(); + } +} + +//---------------------------------------------------------------------------- +int cmOrderDirectories::AddOriginalDirectory(std::string const& dir) +{ + // Add the runtime directory with a unique index. + std::map::iterator i = + this->DirectoryIndex.find(dir); + if(i == this->DirectoryIndex.end()) + { + std::map::value_type + entry(dir, static_cast(this->OriginalDirectories.size())); + i = this->DirectoryIndex.insert(entry).first; + this->OriginalDirectories.push_back(dir); + } + + return i->second; +} + +//---------------------------------------------------------------------------- +struct cmOrderDirectoriesCompare +{ + typedef std::pair ConflictPair; + + // The conflict pair is unique based on just the directory + // (first). The second element is only used for displaying + // information about why the entry is present. + bool operator()(ConflictPair const& l, + ConflictPair const& r) + { + return l.first == r.first; + } +}; + +//---------------------------------------------------------------------------- +void cmOrderDirectories::FindConflicts() +{ + // Allocate the conflict graph. + this->ConflictGraph.resize(this->OriginalDirectories.size()); + this->DirectoryVisited.resize(this->OriginalDirectories.size(), 0); + + // Find directories conflicting with each entry. + for(unsigned int i=0; i < this->ConstraintEntries.size(); ++i) + { + this->ConstraintEntries[i]->FindConflicts(i); + } + + // Clean up the conflict graph representation. + for(std::vector::iterator + i = this->ConflictGraph.begin(); + i != this->ConflictGraph.end(); ++i) + { + // Sort the outgoing edges for each graph node so that the + // original order will be preserved as much as possible. + std::sort(i->begin(), i->end()); + + // Make the edge list unique so cycle detection will be reliable. + ConflictList::iterator last = + std::unique(i->begin(), i->end(), cmOrderDirectoriesCompare()); + i->erase(last, i->end()); + } +} + +//---------------------------------------------------------------------------- +void cmOrderDirectories::OrderDirectories() +{ + // Allow a cycle to be diagnosed once. + this->CycleDiagnosed = false; + this->WalkId = 0; + + // Iterate through the directories in the original order. + for(unsigned int i=0; i < this->OriginalDirectories.size(); ++i) + { + // Start a new DFS from this node. + ++this->WalkId; + this->VisitDirectory(i); + } +} + +//---------------------------------------------------------------------------- +void cmOrderDirectories::VisitDirectory(unsigned int i) +{ + // Skip nodes already visited. + if(this->DirectoryVisited[i]) + { + if(this->DirectoryVisited[i] == this->WalkId) + { + // We have reached a node previously visited on this DFS. + // There is a cycle. + this->DiagnoseCycle(); + } + return; + } + + // We are now visiting this node so mark it. + this->DirectoryVisited[i] = this->WalkId; + + // Visit the neighbors of the node first. + ConflictList const& clist = this->ConflictGraph[i]; + for(ConflictList::const_iterator j = clist.begin(); + j != clist.end(); ++j) + { + this->VisitDirectory(j->first); + } + + // Now that all directories required to come before this one have + // been emmitted, emit this directory. + this->OrderedDirectories.push_back(this->OriginalDirectories[i]); +} + +//---------------------------------------------------------------------------- +void cmOrderDirectories::DiagnoseCycle() +{ + // Report the cycle at most once. + if(this->CycleDiagnosed) + { + return; + } + this->CycleDiagnosed = true; + + // Construct the message. + cmOStringStream e; + e << "WARNING: Cannot generate a safe " << this->Purpose + << " for target " << this->Name + << " because there is a cycle in the constraint graph:\n"; + + // Display the conflict graph. + for(unsigned int i=0; i < this->ConflictGraph.size(); ++i) + { + ConflictList const& clist = this->ConflictGraph[i]; + e << "dir " << i << " is [" << this->OriginalDirectories[i] << "]\n"; + for(ConflictList::const_iterator j = clist.begin(); + j != clist.end(); ++j) + { + e << " dir " << j->first << " must precede it due to "; + this->ConstraintEntries[j->second]->Report(e); + e << "\n"; + } + } + cmSystemTools::Message(e.str().c_str()); +} diff --git a/CMakeLua/Source/cmOrderDirectories.h b/CMakeLua/Source/cmOrderDirectories.h new file mode 100644 index 0000000..9cb17e7 --- /dev/null +++ b/CMakeLua/Source/cmOrderDirectories.h @@ -0,0 +1,88 @@ +/*========================================================================= + + Program: CMake - Cross-Platform Makefile Generator + Module: $RCSfile: cmOrderDirectories.h,v $ + Language: C++ + Date: $Date: 2008/02/21 16:41:11 $ + Version: $Revision: 1.1 $ + + Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. + See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. + + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the above copyright notices for more information. + +=========================================================================*/ +#ifndef cmOrderDirectories_h +#define cmOrderDirectories_h + +#include "cmStandardIncludes.h" + +#include + +class cmGlobalGenerator; +class cmOrderDirectoriesConstraint; +class cmOrderDirectoriesConstraintLibrary; + +/** \class cmOrderDirectories + * \brief Compute a safe runtime path order for a set of shared libraries. + */ +class cmOrderDirectories +{ +public: + cmOrderDirectories(cmGlobalGenerator* gg, const char* name, + const char* purpose); + ~cmOrderDirectories(); + void AddRuntimeLibrary(std::string const& fullPath, const char* soname = 0); + void AddLinkLibrary(std::string const& fullPath); + void AddUserDirectories(std::vector const& extra); + void SetImplicitDirectories(std::set const& implicitDirs); + void SetLinkExtensionInfo(std::vector const& linkExtensions, + std::string const& removeExtRegex); + + std::vector const& GetOrderedDirectories(); +private: + cmGlobalGenerator* GlobalGenerator; + std::string Name; + std::string Purpose; + + bool Computed; + + std::vector OrderedDirectories; + + bool OrderedDirectoriesComputed; + std::vector ConstraintEntries; + std::vector UserDirectories; + cmsys::RegularExpression RemoveLibraryExtension; + std::vector LinkExtensions; + std::set ImplicitDirectories; + std::set EmmittedConstraintSOName; + std::set EmmittedConstraintLibrary; + std::vector OriginalDirectories; + std::map DirectoryIndex; + std::vector DirectoryVisited; + void CollectOriginalDirectories(); + int AddOriginalDirectory(std::string const& dir); + void FindConflicts(); + void OrderDirectories(); + void VisitDirectory(unsigned int i); + void DiagnoseCycle(); + bool CycleDiagnosed; + int WalkId; + + // Adjacency-list representation of runtime path ordering graph. + // This maps from directory to those that must come *before* it. + // Each entry that must come before is a pair. The first element is + // the index of the directory that must come first. The second + // element is the index of the runtime library that added the + // constraint. + typedef std::pair ConflictPair; + struct ConflictList: public std::vector {}; + std::vector ConflictGraph; + + friend class cmOrderDirectoriesConstraint; + friend class cmOrderDirectoriesConstraintLibrary; +}; + +#endif diff --git a/CMakeLua/Source/cmPolicies.cxx b/CMakeLua/Source/cmPolicies.cxx new file mode 100755 index 0000000..c4b51b5 --- /dev/null +++ b/CMakeLua/Source/cmPolicies.cxx @@ -0,0 +1,582 @@ +#include "cmPolicies.h" +#include "cmake.h" +#include "cmMakefile.h" +#include "cmSourceFile.h" +#include "cmVersion.h" +#include +#include +#include +#include + +const char* cmPolicies::PolicyStatusNames[] = { + "OLD", "WARN", "NEW", "REQUIRED_IF_USED", "REQUIRED_ALWAYS" +}; + +class cmPolicy +{ +public: + cmPolicy(cmPolicies::PolicyID iD, + const char *idString, + const char *shortDescription, + const char *longDescription, + unsigned int majorVersionIntroduced, + unsigned int minorVersionIntroduced, + unsigned int patchVersionIntroduced, + cmPolicies::PolicyStatus status) + { + if (!idString || !shortDescription || ! longDescription) + { + cmSystemTools::Error("Attempt to define a policy without " + "all parameters being specified!"); + return; + } + this->ID = iD; + this->IDString = idString; + this->ShortDescription = shortDescription; + this->LongDescription = longDescription; + this->MajorVersionIntroduced = majorVersionIntroduced; + this->MinorVersionIntroduced = minorVersionIntroduced; + this->PatchVersionIntroduced = patchVersionIntroduced; + this->Status = status; + } + + std::string GetVersionString() + { + cmOStringStream error; + error << this->MajorVersionIntroduced << "." << + this->MinorVersionIntroduced << "." << + this->PatchVersionIntroduced; + return error.str(); + } + + bool IsPolicyNewerThan(unsigned int majorV, + unsigned int minorV, + unsigned int patchV) + { + if (majorV < this->MajorVersionIntroduced) + { + return true; + } + if (majorV > this->MajorVersionIntroduced) + { + return false; + } + if (minorV < this->MinorVersionIntroduced) + { + return true; + } + if (minorV > this->MinorVersionIntroduced) + { + return false; + } + return (patchV < this->PatchVersionIntroduced); + } + + cmPolicies::PolicyID ID; + std::string IDString; + std::string ShortDescription; + std::string LongDescription; + unsigned int MajorVersionIntroduced; + unsigned int MinorVersionIntroduced; + unsigned int PatchVersionIntroduced; + cmPolicies::PolicyStatus Status; +}; + +cmPolicies::cmPolicies() +{ + // define all the policies + this->DefinePolicy( + CMP0000, "CMP0000", + "A policy version number must be specified.", + "CMake requires that projects specify the version of CMake to which " + "they have been written. " + "This policy has been put in place to help existing projects build with " + "new CMake versions as it evolves. " + "The easiest way to specify a policy version number is to " + "call the cmake_minimum_required command at the top of " + "your CMakeLists.txt file:\n" + " cmake_minimum_required(VERSION .)\n" + "where \".\" is the version of CMake you want to support " + "(such as \"2.6\"). " + "The command will ensure that at least the given version of CMake is " + "running and set the policy version. " + "See documentation of cmake_minimum_required for details. " + "The cmake_policy command may be used at any time to set the " + "policy version:\n" + " cmake_policy(VERSION .)\n" + "This is the recommended way to set the policy version except at " + "the very top of a project.", + 2,6,0, cmPolicies::WARN + ); + + this->DefinePolicy( + CMP0001, "CMP0001", + "CMAKE_BACKWARDS_COMPATIBILITY should no longer be used.", + "The OLD behavior is to check CMAKE_BACKWARDS_COMPATIBILITY and present " + "it to the user. " + "The NEW behavior is to ignore CMAKE_BACKWARDS_COMPATIBILITY " + "completely.\n" + "In CMake 2.4 and below the variable CMAKE_BACKWARDS_COMPATIBILITY was " + "used to request compatibility with earlier versions of CMake. " + "In CMake 2.6 and above all compatibility issues are handled by policies " + "and the cmake_policy command. " + "However, CMake must still check CMAKE_BACKWARDS_COMPATIBILITY for " + "projects written for CMake 2.4 and below.", + 2,6,0, cmPolicies::WARN + ); + + this->DefinePolicy( + CMP0002, "CMP0002", + "Logical target names must be globally unique.", + "Targets names created with " + "add_executable, add_library, or add_custom_target " + "are logical build target names. " + "Logical target names must be globally unique because:\n" + " - Unique names may be referenced unambiguously both in CMake\n" + " code and on make tool command lines.\n" + " - Logical names are used by Xcode and VS IDE generators\n" + " to produce meaningful project names for the targets.\n" + "The logical name of executable and library targets does not " + "have to correspond to the physical file names built. " + "Consider using the OUTPUT_NAME target property to create two " + "targets with the same physical name while keeping logical " + "names distinct. " + "Custom targets must simply have globally unique names (unless one " + "uses the global property ALLOW_DUPLICATE_CUSTOM_TARGETS with a " + "Makefiles generator).", + 2,6,0, cmPolicies::WARN + ); + + this->DefinePolicy( + CMP0003, "CMP0003", + "Libraries linked via full path no longer produce linker search paths.", + "This policy affects how libraries whose full paths are NOT known " + "are found at link time, but was created due to a change in how CMake " + "deals with libraries whose full paths are known. " + "Consider the code\n" + " target_link_libraries(myexe /path/to/libA.so)\n" + "CMake 2.4 and below implemented linking to libraries whose full paths " + "are known by splitting them on the link line into separate components " + "consisting of the linker search path and the library name. " + "The example code might have produced something like\n" + " ... -L/path/to -lA ...\n" + "in order to link to library A. " + "An analysis was performed to order multiple link directories such that " + "the linker would find library A in the desired location, but there " + "are cases in which this does not work. " + "CMake versions 2.6 and above use the more reliable approach of passing " + "the full path to libraries directly to the linker in most cases. " + "The example code now produces something like\n" + " ... /path/to/libA.so ....\n" + "Unfortunately this change can break code like\n" + " target_link_libraries(myexe /path/to/libA.so B)\n" + "where \"B\" is meant to find \"/path/to/libB.so\". " + "This code is wrong because the user is asking the linker to find " + "library B but has not provided a linker search path (which may be " + "added with the link_directories command). " + "However, with the old linking implementation the code would work " + "accidentally because the linker search path added for library A " + "allowed library B to be found." + "\n" + "In order to support projects depending on linker search paths " + "added by linking to libraries with known full paths, the OLD " + "behavior for this policy will add the linker search paths even " + "though they are not needed for their own libraries. " + "When this policy is set to OLD, CMake will produce a link line such as\n" + " ... -L/path/to /path/to/libA.so -lB ...\n" + "which will allow library B to be found as it was previously. " + "When this policy is set to NEW, CMake will produce a link line such as\n" + " ... /path/to/libA.so -lB ...\n" + "which more accurately matches what the project specified." + "\n" + "The setting for this policy used when generating the link line is that " + "in effect when the target is created by an add_executable or " + "add_library command. For the example described above, the code\n" + " cmake_policy(SET CMP0003 OLD) # or cmake_policy(VERSION 2.4)\n" + " add_executable(myexe myexe.c)\n" + " target_link_libraries(myexe /path/to/libA.so B)\n" + "will work and suppress the warning for this policy. " + "It may also be updated to work with the corrected linking approach:\n" + " cmake_policy(SET CMP0003 NEW) # or cmake_policy(VERSION 2.6)\n" + " link_directories(/path/to) # needed to find library B\n" + " add_executable(myexe myexe.c)\n" + " target_link_libraries(myexe /path/to/libA.so B)\n" + "Even better, library B may be specified with a full path:\n" + " add_executable(myexe myexe.c)\n" + " target_link_libraries(myexe /path/to/libA.so /path/to/libB.so)\n" + "When all items on the link line have known paths CMake does not check " + "this policy so it has no effect.", + 2,6,0, cmPolicies::WARN); + + this->DefinePolicy( + CMP0004, "CMP0004", + "Libraries linked may not have leading or trailing whitespace.", + "CMake versions 2.4 and below silently removed leading and trailing " + "whitespace from libraries linked with code like\n" + " target_link_libraries(myexe \" A \")\n" + "This could lead to subtle errors in user projects.\n" + "The OLD behavior for this policy is to silently remove leading and " + "trailing whitespace. " + "The NEW behavior for this policy is to diagnose the existence of " + "such whitespace as an error. " + "The setting for this policy used when checking the library names is " + "that in effect when the target is created by an add_executable or " + "add_library command.", + 2,6,0, cmPolicies::WARN); + + this->DefinePolicy( + CMP0005, "CMP0005", + "Preprocessor definition values are now escaped automatically.", + "This policy determines whether or not CMake should generate escaped " + "preprocessor definition values added via add_definitions. " + "CMake versions 2.4 and below assumed that only trivial values would " + "be given for macros in add_definitions calls. " + "It did not attempt to escape non-trivial values such as string " + "literals in generated build rules. " + "CMake versions 2.6 and above support escaping of most values, but " + "cannot assume the user has not added escapes already in an attempt to " + "work around limitations in earlier versions.\n" + "The OLD behavior for this policy is to place definition values given " + "to add_definitions directly in the generated build rules without " + "attempting to escape anything. " + "The NEW behavior for this policy is to generate correct escapes " + "for all native build tools automatically. " + "See documentation of the COMPILE_DEFINITIONS target property for " + "limitations of the escaping implementation.", + 2,6,0, cmPolicies::WARN); +} + +cmPolicies::~cmPolicies() +{ + // free the policies + std::map::iterator i + = this->Policies.begin(); + for (;i != this->Policies.end(); ++i) + { + delete i->second; + } +} + +void cmPolicies::DefinePolicy(cmPolicies::PolicyID iD, + const char *idString, + const char *shortDescription, + const char *longDescription, + unsigned int majorVersionIntroduced, + unsigned int minorVersionIntroduced, + unsigned int patchVersionIntroduced, + cmPolicies::PolicyStatus status) +{ + // a policy must be unique and can only be defined once + if (this->Policies.find(iD) != this->Policies.end()) + { + cmSystemTools::Error("Attempt to redefine a CMake policy for policy " + "ID ", this->GetPolicyIDString(iD).c_str()); + return; + } + + this->Policies[iD] = new cmPolicy(iD, idString, + shortDescription, + longDescription, + majorVersionIntroduced, + minorVersionIntroduced, + patchVersionIntroduced, + status); + this->PolicyStringMap[idString] = iD; +} + +bool cmPolicies::ApplyPolicyVersion(cmMakefile *mf, + const char *version) +{ + std::string ver = "2.4.0"; + + if (version && strlen(version) > 0) + { + ver = version; + } + + unsigned int majorVer = 2; + unsigned int minorVer = 0; + unsigned int patchVer = 0; + + // parse the string + if(sscanf(ver.c_str(), "%u.%u.%u", + &majorVer, &minorVer, &patchVer) < 2) + { + return false; + } + + // it is an error if the policy version is less than 2.4 + if (majorVer < 2 || majorVer == 2 && minorVer < 4) + { + mf->IssueMessage(cmake::FATAL_ERROR, + "An attempt was made to set the policy version of CMake to something " + "earlier than \"2.4\". " + "In CMake 2.4 and below backwards compatibility was handled with the " + "CMAKE_BACKWARDS_COMPATIBILITY variable. " + "In order to get compatibility features supporting versions earlier " + "than 2.4 set policy CMP0001 to OLD to tell CMake to check the " + "CMAKE_BACKWARDS_COMPATIBILITY variable. " + "One way to so this is to set the policy version to 2.4 exactly." + ); + } + + // now loop over all the policies and set them as appropriate + std::map::iterator i + = this->Policies.begin(); + for (;i != this->Policies.end(); ++i) + { + if (i->second->IsPolicyNewerThan(majorVer,minorVer,patchVer)) + { + if (!mf->SetPolicy(i->second->ID, cmPolicies::WARN)) + { + return false; + } + } + else + { + if (!mf->SetPolicy(i->second->ID, cmPolicies::NEW)) + { + return false; + } + } + } + return true; +} + +// is this a valid status the listfile can set this policy to? +bool cmPolicies::IsValidPolicyStatus(cmPolicies::PolicyID id, + cmPolicies::PolicyStatus status) +{ + // if they are setting a feature to anything other than OLD or WARN and the + // feature is not known about then that is an error + if (this->Policies.find(id) == this->Policies.end()) + { + if (status == cmPolicies::WARN || + status == cmPolicies::OLD) + { + return true; + } + cmOStringStream error; + error << + "Error: an attempt was made to enable the new behavior for " << + "a new feature that is in a later version of CMake than " + "what you are runing, please upgrade to a newer version " + "of CMake."; + cmSystemTools::Error(error.str().c_str()); + return false; + } + + // now we know the feature is defined, so the only issue is if someone is + // setting it to WARN or OLD when the feature is REQUIRED_ALWAYS + if ((status == cmPolicies::WARN || + status == cmPolicies::OLD) && + this->Policies[id]->Status == cmPolicies::REQUIRED_ALWAYS) + { + cmOStringStream error; + error << + "Error: an attempt was made to enable the old behavior for " << + "a feature that is no longer supported. The feature in " << + "question is feature " << + id << + " which had new behavior introduced in CMake version " << + this->Policies[id]->GetVersionString() << + " please either update your CMakeLists files to conform to " << + "the new behavior " << + "or use an older version of CMake that still supports " << + "the old behavior. Run cmake --help-policies " << + id << " for more information."; + cmSystemTools::Error(error.str().c_str()); + return false; + } + + return true; +} + +// is this a valid status the listfile can set this policy to? +bool cmPolicies::IsValidUsedPolicyStatus(cmPolicies::PolicyID id, + cmPolicies::PolicyStatus status) +{ + // if they are setting a feature to anything other than OLD or WARN and the + // feature is not known about then that is an error + if (this->Policies.find(id) == this->Policies.end()) + { + if (status == cmPolicies::WARN || + status == cmPolicies::OLD) + { + return true; + } + cmOStringStream error; + error << + "Error: an attempt was made to enable the new behavior for " << + "a new feature that is in a later version of CMake than " + "what you are runing, please upgrade to a newer version " + "of CMake."; + cmSystemTools::Error(error.str().c_str()); + return false; + } + + // now we know the feature is defined, so the only issue is if someone is + // setting it to WARN or OLD when the feature is REQUIRED_ALWAYS + if ((status == cmPolicies::WARN || + status == cmPolicies::OLD) && + (this->Policies[id]->Status == cmPolicies::REQUIRED_ALWAYS || + this->Policies[id]->Status == cmPolicies::REQUIRED_IF_USED)) + { + cmOStringStream error; + error << + "Error: an attempt was made to enable the old behavior for " << + "a feature that is no longer supported. The feature in " << + "question is feature " << + id << + " which had new behavior introduced in CMake version " << + this->Policies[id]->GetVersionString() << + " please either update your CMakeLists files to conform to " << + "the new behavior " << + "or use an older version of CMake that still supports " << + "the old behavior. Run cmake --help-policies " << + id << " for more information."; + cmSystemTools::Error(error.str().c_str()); + return false; + } + + return true; +} + +bool cmPolicies::GetPolicyID(const char *id, cmPolicies::PolicyID &pid) +{ + if (!id || strlen(id) < 1) + { + return false; + } + std::map::iterator pos = + this->PolicyStringMap.find(id); + if (pos == this->PolicyStringMap.end()) + { + return false; + } + pid = pos->second; + return true; +} + +std::string cmPolicies::GetPolicyIDString(cmPolicies::PolicyID pid) +{ + std::map::iterator pos = + this->Policies.find(pid); + if (pos == this->Policies.end()) + { + return ""; + } + return pos->second->IDString; +} + + +///! return a warning string for a given policy +std::string cmPolicies::GetPolicyWarning(cmPolicies::PolicyID id) +{ + std::map::iterator pos = + this->Policies.find(id); + if (pos == this->Policies.end()) + { + cmSystemTools::Error( + "Request for warning text for undefined policy!"); + return "Request for warning text for undefined policy!"; + } + + cmOStringStream msg; + msg << + "Policy " << pos->second->IDString << " is not set: " + "" << pos->second->ShortDescription << " " + "Run \"cmake --help-policy " << pos->second->IDString << "\" for " + "policy details. " + "Use the cmake_policy command to set the policy " + "and suppress this warning."; + return msg.str(); +} + + +///! return an error string for when a required policy is unspecified +std::string cmPolicies::GetRequiredPolicyError(cmPolicies::PolicyID id) +{ + std::map::iterator pos = + this->Policies.find(id); + if (pos == this->Policies.end()) + { + cmSystemTools::Error( + "Request for error text for undefined policy!"); + return "Request for warning text for undefined policy!"; + } + + cmOStringStream error; + error << + "Policy " << pos->second->IDString << " is not set to NEW: " + "" << pos->second->ShortDescription << " " + "Run \"cmake --help-policy " << pos->second->IDString << "\" for " + "policy details. " + "CMake now requires this policy to be set to NEW by the project. " + "The policy may be set explicitly using the code\n" + " cmake_policy(SET " << pos->second->IDString << " NEW)\n" + "or by upgrading all policies with the code\n" + " cmake_policy(VERSION " << pos->second->GetVersionString() << + ") # or later\n" + "Run \"cmake --help-command cmake_policy\" for more information."; + return error.str(); +} + +///! Get the default status for a policy +cmPolicies::PolicyStatus +cmPolicies::GetPolicyStatus(cmPolicies::PolicyID id) +{ + // if the policy is not know then what? + std::map::iterator pos = + this->Policies.find(id); + if (pos == this->Policies.end()) + { + // TODO is this right? + return cmPolicies::WARN; + } + + return pos->second->Status; +} + +void cmPolicies::GetDocumentation(std::vector& v) +{ + // now loop over all the policies and set them as appropriate + std::map::iterator i + = this->Policies.begin(); + for (;i != this->Policies.end(); ++i) + { + cmOStringStream full; + full << i->second->LongDescription; + full << "\nThis policy was introduced in CMake version "; + full << i->second->GetVersionString() << ". "; + full << "CMake version " << cmVersion::GetMajorVersion() + << "." << cmVersion::GetMinorVersion() << " "; + // add in some more text here based on status + switch (i->second->Status) + { + case cmPolicies::WARN: + full << "defaults to WARN for this policy. " + << "Use the cmake_policy command to set it to OLD or NEW."; + break; + case cmPolicies::OLD: + full << "defaults to the OLD behavior for this policy."; + break; + case cmPolicies::NEW: + full << "defaults to the NEW behavior for this policy."; + break; + case cmPolicies::REQUIRED_IF_USED: + full << "requires the policy to be set to NEW if you use it. " + << "Use the cmake_policy command to set it to NEW."; + break; + case cmPolicies::REQUIRED_ALWAYS: + full << "requires the policy to be set to NEW. " + << "Use the cmake_policy command to set it to NEW."; + break; + } + + cmDocumentationEntry e(i->second->IDString.c_str(), + i->second->ShortDescription.c_str(), + full.str().c_str()); + v.push_back(e); + } +} diff --git a/CMakeLua/Source/cmPolicies.h b/CMakeLua/Source/cmPolicies.h new file mode 100755 index 0000000..7f3ebd0 --- /dev/null +++ b/CMakeLua/Source/cmPolicies.h @@ -0,0 +1,99 @@ +/*========================================================================= + + Program: CMake - Cross-Platform Makefile Generator + Module: $RCSfile: cmPolicies.h,v $ + Language: C++ + Date: $Date: 2008-03-13 21:11:57 $ + Version: $Revision: 1.13 $ + + Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. + See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. + + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the above copyright notices for more information. + +=========================================================================*/ +#ifndef cmPolicies_h +#define cmPolicies_h + +#include "cmCustomCommand.h" + +class cmake; +class cmMakefile; +class cmPolicy; + +/** \class cmPolicies + * \brief Handles changes in CMake behavior and policies + * + * See the cmake wiki section on policies for an overview of this class's + * purpose + */ +class cmPolicies +{ +public: + cmPolicies(); + ~cmPolicies(); + + enum PolicyStatus { OLD, WARN, NEW, REQUIRED_IF_USED, REQUIRED_ALWAYS }; + static const char* PolicyStatusNames[]; + + enum PolicyID + { + CMP0000, // Policy version specification + CMP0001, // Ignore old compatibility variable + CMP0002, // Target names must be unique + CMP0003, // Linking does not include extra -L paths + CMP0004, // Libraries linked may not have leading or trailing whitespace + CMP0005, // Definition value escaping + + // Always the last entry. Useful mostly to avoid adding a comma + // the last policy when adding a new one. + CMPCOUNT + }; + + ///! convert a string policy ID into a number + bool GetPolicyID(const char *id, /* out */ cmPolicies::PolicyID &pid); + std::string GetPolicyIDString(cmPolicies::PolicyID pid); + + ///! Get the default status for a policy + cmPolicies::PolicyStatus GetPolicyStatus(cmPolicies::PolicyID id); + + ///! Define a Policy for CMake + void DefinePolicy(cmPolicies::PolicyID id, + const char *stringID, + const char *shortDescription, + const char *longDescription, + unsigned int majorVersionIntroduced, + unsigned int minorVersionIntroduced, + unsigned int patchVersionIntroduced, + cmPolicies::PolicyStatus status); + + ///! Set a policy level for this listfile + bool ApplyPolicyVersion(cmMakefile *mf, const char *version); + + ///! test to see if setting a policy to a specific value is valid + bool IsValidPolicyStatus(cmPolicies::PolicyID id, + cmPolicies::PolicyStatus status); + + ///! test to see if setting a policy to a specific value is valid, when used + bool IsValidUsedPolicyStatus(cmPolicies::PolicyID id, + cmPolicies::PolicyStatus status); + + ///! return a warning string for a given policy + std::string GetPolicyWarning(cmPolicies::PolicyID id); + + ///! return an error string for when a required policy is unspecified + std::string GetRequiredPolicyError(cmPolicies::PolicyID id); + + ///! Get docs for policies + void GetDocumentation(std::vector& v); + + private: + // might have to make these internal for VS6 not sure yet + std::map Policies; + std::map PolicyStringMap; + +}; + +#endif diff --git a/CMakeLua/Source/kwsys/CPU.h.in b/CMakeLua/Source/kwsys/CPU.h.in new file mode 100644 index 0000000..cabc398 --- /dev/null +++ b/CMakeLua/Source/kwsys/CPU.h.in @@ -0,0 +1,111 @@ +/*========================================================================= + + Program: KWSys - Kitware System Library + Module: $RCSfile: CPU.h.in,v $ + + Copyright (c) Kitware, Inc., Insight Consortium. All rights reserved. + See Copyright.txt or http://www.kitware.com/Copyright.htm for details. + + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the above copyright notices for more information. + +=========================================================================*/ +#ifndef @KWSYS_NAMESPACE@_CPU_h +#define @KWSYS_NAMESPACE@_CPU_h + +#include <@KWSYS_NAMESPACE@/Configure.h> + +/* Identify possible endian cases. The macro + @KWSYS_NAMESPACE@_CPU_ENDIAN_ID will be defined to one of these, or + 0 if unknown. */ +#define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_BIG 4321 +#define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_LITTLE 1234 + +/* Apple always defines one of these. */ +#if defined(__LITTLE_ENDIAN__) +# define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_LITTLE +#elif defined(__BIG_ENDIAN__) +# define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_BIG + +/* Alpha */ +#elif defined(__alpha) || defined(__alpha__) || defined(_M_ALPHA) +# define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_LITTLE + +/* Intel x86 */ +#elif defined(__i386) || defined(__i386__) || defined(_M_IX86) +# define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_LITTLE +#elif defined(_X86_) || defined(__THW_INTEL__) || defined(__I86__) +# define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_LITTLE +#elif defined(__MWERKS__) && defined(__INTEL__) +# define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_LITTLE + +/* Intel x86-64 */ +#elif defined(__x86_64) || defined(__x86_64__) || defined(_M_X64) +# define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_LITTLE +#elif defined(__amd64) || defined(__amd64__) +# define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_LITTLE + +/* Intel Architecture-64 (Itanium) */ +#elif defined(__ia64) || defined(__ia64__) +# define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_LITTLE +#elif defined(_IA64) || defined(__IA64__) || defined(_M_IA64) +# define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_LITTLE + +/* PowerPC */ +#elif defined(__powerpc) || defined(__powerpc__) +# define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_BIG +#elif defined(__ppc) || defined(__ppc__) || defined(__POWERPC__) +# define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_BIG + +/* SPARC */ +#elif defined(__sparc) || defined(__sparc__) +# define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_BIG + +/* HP/PA RISC */ +#elif defined(__hppa) || defined(__hppa__) +# define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_BIG + +/* Motorola 68k */ +#elif defined(__m68k__) || defined(M68000) +# define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_BIG + +/* MIPS */ +#elif defined(__mips) || defined(__mips__) || defined(__MIPS__) +# define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_BIG + +/* RS/6000 */ +#elif defined(__THW_RS600) || defined(_IBMR2) || defined(_POWER) +# define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_BIG +#elif defined(_ARCH_PWR) || defined(_ARCH_PWR2) +# define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_BIG + +/* System/370 */ +#elif defined(__370__) || defined(__THW_370__) +# define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_BIG + +/* System/390 */ +#elif defined(__s390__) || defined(__s390x__) +# define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_BIG + +/* z/Architecture */ +#elif defined(__SYSC_ZARCH__) +# define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_BIG + +/* Unknown CPU */ +#else +# define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID 0 +# if !defined(@KWSYS_NAMESPACE@_CPU_UNKNOWN_OKAY) +# error "The target CPU architecture is not known." +# endif +#endif + +/* If building a C or C++ file in kwsys itself, give the source file + access to the macros without a configured namespace. */ +#if defined(KWSYS_NAMESPACE) +# define KWSYS_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID +# define KWSYS_CPU_ENDIAN_ID_BIG @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_BIG +# define KWSYS_CPU_ENDIAN_ID_LITTLE @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_LITTLE +#endif + +#endif diff --git a/CMakeLua/Templates/CMakeVSMacros2.vsmacros b/CMakeLua/Templates/CMakeVSMacros2.vsmacros new file mode 100644 index 0000000000000000000000000000000000000000..5ba27991a836866251cd05f6abcdb9ca06ec13da GIT binary patch literal 63488 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 I7J7jH4-5j`eE