1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920
|
===============================================================================
===============================================================================
Release notes for Jam 2.6.1
(aka Jam - make(1) redux)
1. Release info:
Jam 2.6.1
June, 2019
VERSION 2.6.1
2. Changes since 2.6.1
A ctrl-c will interrupt the build faster than before.
VS2015+ build improvements.
The Jambase date has been updated to match the last functional change.
===============================================================================
===============================================================================
Release notes for Jam 2.6
(aka Jam - make(1) redux)
1. Release info:
Jam 2.6
August 7, 2014
VERSION 2.6
n.b. Jam 2.6 was updated from changes in our production jam which were
transferred over to the workshop jam using the ptransfer.py tool.
Since p4transfer.py retains the original change date/time, the new
changes are identified as those in the range of 9855 through 9953.
2. Changes since 2.5
Change 9953 2003/06/11
var_string memory leak fix by Matt Armstrong.
Bug fix to be documented in RELNOTES.
Change 9952 2006/04/11
Path handling fix for NT: use the delimiter (/ or \) that was found
in the path to rebuild the path, rather than parsing at / and rebuilding
at \.
Change 9951 2007/09/17
jam -j now builds all command line arguments concurrently,
rather than doing one at a time. From Craig Allsop.
Change 9950 2003/12/15
Jam's message "warning: foo depends on itself" now uses the
current target name (t->name) rather than the target it is
considering recursing towards (c->target->name). This just gets
the end of the loop rather than the beginning, which in the
tricky case of loops caused by HdrRule's include file scanning,
can be more accurate.
Change 9949 2013/11/25
Build rules for jam on Darwin 9.0.
Change 9948 2013/11/15
Update build rules for AIX53.
Change 9947 2011/09/14
On a Windows debug build the /MT flag was used in addition to
the /MTd flag. Basically harmless except the compiler issued
a warning for every file compiled.
Removed the use of the /MT flag in the jambase arena. This
allows the Jamrules to properly set this flag as required.
Also when doing a Smart Heap debug build, duplicate symbols
in the Smart Heap library conflicted with the standard
Windows CRT library. Adding a /FORCE to the link line solves
this problem. This is a very narrow case and should not effect
builds without Smart Heap.
Jam must be rebuilt to remove the /MT and /MTd warning.
Change 9946 2011/08/30
Remove hard coded paths to the Visual Studio SDK libraries.
As of Visual Studio 2008 and including 2010 the SDK libraries,
like kernel32.lib, have been moved out of the VC directory
structure. These hard coded paths prevented jam from building.
Test built jam with VS2005 x64 and x86, VS2010 x64 and x86
with these new settings.
Test built main/p4 in these combinations as well.
Change 9944 2007/09/06
Move the /MT flag for NET 2005 into jam's Jamfile and out
of the Jambase file. This removes the conflict with the
various TYPE=dyn, TYPE=dyng and so on, yet compiles jam as
multi threaded.
Change 9943 2007/09/05
Build jam on Windows using NET 2005 in X86 mode.
This is the counter part to NET 2005 in X64 mode.
Change 9941 2006/11/06
New jambase.c to follow new Jambase.
Change 9940 2005/07/29
Fix jam HdrRule change 79346 -- it has horrible combinatoric
behavior when you have system include files that go like this:
arpa/something includes
sys/something includes
machine/something includes
sys/something-else
Now HdrRule tries to be as conservative as possible to avoid
building monster SEARCH lists.
This is needed for AIX 5.3, where they apparently have such wild
include mazes.
Change 9939 2005/07/29
An attempt at sorting out the various 64bit Windows builds.
IA64 indicates the Intel Itanium 64bit Windows build.
X64 indicates the AMD64 and the Intel EM64T 64bit Windows build.
It should not be necessary to set MSVCVer or OSPLAT for these builds.
Hopefully these changes didn't break the AMD64 Linux build.
Change 9938 2005/06/23
Jam changes for building on the AMD64 platform. The .NET 2005
beta2 compiler requires several flags. First it is necessary
to turn off the depreciation stuff, CRT functions like strcpy
sprintf and so on are now viewed as insecure by MS. For now it
is still possible to use them with the correct application of
compile flags. MS is making noises in line with taking these
functions away for good.
The "Win64" token was used for 64 bit builds. This is now a
bit ambiguous since it covers x64, ia64 and em64t. With this
change Win64 has been retired and we use x64 for amd64, ia64
for the Itanium and em64t for the extended memory processors.
Set MSVCVer accordingly. MSVCNT is set as always, to the
location of the VC directory, VC98, VC7 and now just VC.
For the most part the x64 build works on amd64, the exception
being a template problem in nettcp.cc. That problem will not
be corrected in this change.
Change 9937 2005/06/17
jam and 2004.2 p4 client for AS/400. Built on AS/400 V5R2 with native
ILE C/C++ compiler. Note, this build reports itself as
P4/AS400/2004.2/76944 but this change contains porting changes that
were required to make the build work so the changelist number is incorrect.
This can be resolved with a clean build for 2005.1 at a later date.
p4.sav and jam.sav are AS/400 "Save Files" that can be used to install
the software on an AS/400 machine. The p4.sav file includes the p4.cmd
and p4sync.cmd files we distributed with our older AS/400 builds. These
files define a forms-type interface for supplying the parameters to the
commands when you run them.
Change 9936 2005/05/06
Fix to HdrRule to handle '#include "path/file"': if the included
file has a directory component, then SEARCH and HDRSEARCH are set
to include the previous HDRSEARCH with 'path' appended. Without
this, then any files included by "path/file" might not be found
by jam, as it didn't know to look in the 'path' subdirectory.
This is needed for p4v's central 'windows' include file.
Change 9935 2013/11/25
Build rules for jam on Darwin 9.0.
Change 9934 2010/07/15
Increase generic execcmd buffer to 20kib.
Change 9933 2008/10/02
zLinux porting changes. This is Linux running on an s390x platform,
the x means 64-bit. The only change required was to ensure that
jam guessed the OSPLAT correctly.
I left the old (32-bit) OSPLAT alone (390), but chose s390x for this
one as that's what 'uname -a' reports.
Porting change only.
Change 9932 2007/01/05
Make jam -dr an alias for jam -d+5 (turn on compile debugging).
Change 9931 2006/11/21
Bump VMS command line length to 2048 so that we can build
the p4api. Don't know the actual limit, but it appears not
to be 1024 anymore.
Change 9930 2006/09/25
Define OSPLAT=SPARC64 if building as a sparcv9 binary.
Change 9929 2006/05/18
Set OSPLAT to X86_64 on non-windows adm64 platforms.
Set OSPLAT to X86 even on FreeBSD et al.
Report OSPLAT with jam -v.
Now jam 2.5.2.
Change 9928 2005/07/29
An attempt at sorting out the various 64bit Windows builds.
IA64 indicates the Intel Itanium 64bit Windows build.
X64 indicates the AMD64 and the Intel EM64T 64bit Windows build.
It should not be necessary to set MSVCVer or OSPLAT for these builds.
Hopefully these changes didn't break the AMD64 Linux build.
Change 9927 2005/06/17
jam and 2004.2 p4 client for AS/400. Built on AS/400 V5R2 with native
ILE C/C++ compiler. Note, this build reports itself as
P4/AS400/2004.2/76944 but this change contains porting changes that
were required to make the build work so the changelist number is incorrect.
This can be resolved with a clean build for 2005.1 at a later date.
p4.sav and jam.sav are AS/400 "Save Files" that can be used to install
the software on an AS/400 machine. The p4.sav file includes the p4.cmd
and p4sync.cmd files we distributed with our older AS/400 builds. These
files define a forms-type interface for supplying the parameters to the
commands when you run them.
Change 9926 2005/05/06
Maximum command line length now determined by execmax() function,
which still just returns the compiled-in MAXLINE.
Change 9925 2004/09/07
Port Jam to Zeta. Zeta is a fork of BeOS so this port is
broadly the same as the BeOS port.
Change 9924 2004/06/23
Nonstop unix changes from Kim Hae-Joo.
Change 9923 2004/05/06
FreeBSD 5/AMD64 porting changes.
Change 9922 2003/06/03
OpenBSD porting changes from Michael Champigny.
Change 9921 2003/04/19
HPUX 11 jam porting: a cast for exec() and include unistd.h.
Change 9920 2010/01/06
Updated the Copyright to 2010.
Change 9919 2007/01/05
Make jam -dr an alias for jam -d+5 (turn on compile debugging).
Change 9918 2006/05/18
Set OSPLAT to X86_64 on non-windows adm64 platforms.
Set OSPLAT to X86 even on FreeBSD et al.
Report OSPLAT with jam -v.
Now jam 2.5.2.
Change 9917 2014/08/06
Take it to 2.6 for all the changes since 2.5 which are going to be rolled out to the workshop (public) site
Change 9916 2013/11/25
Build rules for jam on Darwin 9.0.
Change 9915 2013/11/15
Update build rules for AIX53.
Change 9913 2006/03/05
Use off_t instead of long for lseek(), as cygwin seems
to get confused if you use a long.
Bug fix documented in RELNOTES.
Change 9912 2005/06/17
jam and 2004.2 p4 client for AS/400. Built on AS/400 V5R2 with native
ILE C/C++ compiler. Note, this build reports itself as
P4/AS400/2004.2/76944 but this change contains porting changes that
were required to make the build work so the changelist number is incorrect.
This can be resolved with a clean build for 2005.1 at a later date.
p4.sav and jam.sav are AS/400 "Save Files" that can be used to install
the software on an AS/400 machine. The p4.sav file includes the p4.cmd
and p4sync.cmd files we distributed with our older AS/400 builds. These
files define a forms-type interface for supplying the parameters to the
commands when you run them.
Porting change only. No functional change.
Change 9911 2005/05/06
Compute max line length on windows by OS type using GetVersionEx()
call in execmax() function. Now instead of just 996 for the default,
Win NT 4.0 and Win 2K get 2047, and Win XP and 2003+ get 8191.
The wheels of progress grind slowly.
Bumped JAMVERSION to 2.5.1.
New feature documented in RELNOTES.
Change 9910 2004/09/07
Port Jam to Zeta. Zeta is a fork of BeOS so this port is
broadly the same as the BeOS port.
Change 9909 2006/08/02
Header path name generation uses PATH_DELIM and not / on NT now.
From Craig Allsop.
Bug fix documented in RELNOTES.
Change 9908 2003/08/18
Better string table support in file_archscan (filent.c),
to support GHS librarian.
Porting change.
Change 9907 2014/04/02
Build jam without so many warnings on macosxx86_64.
Change 9906 2008/10/02
AS/400 Porting changes. Static variable intr wasn't declared on
AS/400. This was the only change required to build Jam on that
platform.
Change 9905 2005/06/17
jam and 2004.2 p4 client for AS/400. Built on AS/400 V5R2 with native
ILE C/C++ compiler. Note, this build reports itself as
P4/AS400/2004.2/76944 but this change contains porting changes that
were required to make the build work so the changelist number is incorrect.
This can be resolved with a clean build for 2005.1 at a later date.
p4.sav and jam.sav are AS/400 "Save Files" that can be used to install
the software on an AS/400 machine. The p4.sav file includes the p4.cmd
and p4sync.cmd files we distributed with our older AS/400 builds. These
files define a forms-type interface for supplying the parameters to the
commands when you run them.
Change 9904 2008/09/10
Port 2008.1 P4 to MVS Unix System Services. This is an onsite
port carried out at Bank of America in Croydon.
It's not pretty. There are some uglies in here which could
probably be taken care of in better ways, but I was pressed
for time. Here's the background to each of the issues I found:
1. The compiler really didn't like our Zeroconf
code, and since building Avahi on the mainframe wasn't top of
my agenda, I disabled it with some heinous ifdef's in client.cc.
Sorry. The compiler was bitching about types of arguments being
passed to zeroconf methods, and it wasn't obvious to me what the
problem was either. I think we could use a -DUSE_ZEROCONF in
our Jamrules for occasions like this; that would be cleaner than
a platform ifdef in client.cc. With more time, it might be
possible to make the zeroconf code compile on MVS, but getting
dynamic loading working on that platform is ambitious I think.
2. The mapping code needed ifdefs too (again, sorry!). On MVS,
C and C++ don't share the same linkage and qsort() is a C function
so it (apparently) can't take a pointer to a C++ function. So,
all the qsort() compare functions have to be declared as
'extern "C"'. See:
http://publib.boulder.ibm.com/infocenter/zos/v1r9/index.jsp?topic=/com.ibm.zos.r9.bpxbd00/qsort.htm
I didn't ifdef these as I don't think they'll do any harm on other
platforms.
3. support/random.cc needed an ifdef (no big deal)
4. sys/netaddr.cc had to have a (correct) const removed since
the MVS implementation of inet_addr takes a 'char *' argument
instead of 'const char *'. I ifdef'd that to keep it clean
on other platforms.
5. zlib/zconf.h had some old pragmas that no longer apply.
6. Jamrules: I reinstated the old rules from MVS builds, and
made EBCDIC optional rather than compulsory. I also
documented in it the environment variables we set to persuade
the compilers on BofA's machine to behave. These may, or may not
be required on other MVS boxes. No idea.
Building Jam also had a few idiosyncracies:
1. Best to assume the yacc on MVS is broken. It was there, but
not in great shape. I disabled it in Jambase and I think that's
a sensible thing to do going forward.
2. yylineno() can't return a 'const int' on MVS. Not sure why
it's defined that way on other platforms so I changed it to
just returning an int. Hopefully that won't break elsewhere...
There are three binaries being submitted here:
jam - built from main
bin.mvs/p4 - EBCDIC client
bin.mvs/ascii/p4 - Non-EBCDIC client
The ascii client identifies itself as such:
P4/MVS/2008.1.ascii/164042
While unconventional, I thought that was the best plan so that
if we take support calls on it, we'll get a clue.
Change 9903 2007/01/05
Jam -dr now reports file/line numbers, at no small effort.
Change 9902 2014/04/02
Build jam without so many warnings on macosxx86_64.
Change 9901 2005/05/06
Compute max line length on windows by OS type using GetVersionEx()
call in execmax() function. Now instead of just 996 for the default,
Win NT 4.0 and Win 2K get 2047, and Win XP and 2003+ get 8191.
The wheels of progress grind slowly.
Bumped JAMVERSION to 2.5.1.
Change 9900 2005/05/06
Maximum command line length now determined by execmax() function,
which still just returns the compiled-in MAXLINE.
Change 9899 2004/09/07
Port Jam to Zeta. Zeta is a fork of BeOS so this port is
broadly the same as the BeOS port.
Change 9898 2003/04/19
HPUX 11 jam porting: a cast for exec() and include unistd.h
Change 9897 2011/03/17
(make1d): Honor -q flag even when DEBUG_MAKE is 0.
Change 9896 2005/05/06
Maximum command line length now determined by execmax() function,
which still just returns the compiled-in MAXLINE.
Change 9895 2013/11/25
Build rules for jam on Darwin 9.0.
Change 9894 2013/11/15
Update build rules for AIX53.
Change 9893 2011/09/14
On a Windows debug build the /MT flag was used in addition to
the /MTd flag. Basically harmless except the compiler issued
a warning for every file compiled.
Removed the use of the /MT flag in the jambase arena. This
allows the Jamrules to properly set this flag as required.
Also when doing a Smart Heap debug build, duplicate symbols
in the Smart Heap library conflicted with the standard
Windows CRT library. Adding a /FORCE to the link line solves
this problem. This is a very narrow case and should not effect
builds without Smart Heap.
Jam must be rebuilt to remove the /MT and /MTd warning.
Change 9892 2011/08/17
Clarify that Windows VS Net settings work for 2005, 2008 and 2010.
Change 9891 2007/09/06
Move the /MT flag for NET 2005 into jam's Jamfile and out
of the Jambase file. This removes the conflict with the
various TYPE=dyn, TYPE=dyng and so on, yet compiles jam as
multi threaded.
Change 9887 2005/07/28
Add the _M_AMD64 flag to the amd64 build. The rest does indeed
produce x64 binaries as verified by dumpbin /headers p4d.exe.
With change 81112, the x64 p4d.exe no longer faults.
Change 9886 2005/06/25
Change default build back to Unix from NT, correcting a previous mistake.
Related to change 81710, amd64 build changes.
Change 9885 2005/06/23
Jam changes for building on the AMD64 platform. The .NET 2005
beta2 compiler requires several flags. First it is necessary
to turn off the depreciation stuff, CRT functions like strcpy
sprintf and so on are now viewed as insecure by MS. For now it
is still possible to use them with the correct application of
compile flags. MS is making noises in line with taking these
functions away for good.
The "Win64" token was used for 64 bit builds. This is now a
bit ambiguous since it covers x64, ia64 and em64t. With this
change Win64 has been retired and we use x64 for amd64, ia64
for the Itanium and em64t for the extended memory processors.
Set MSVCVer accordingly. MSVCNT is set as always, to the
location of the VC directory, VC98, VC7 and now just VC.
For the most part the x64 build works on amd64, the exception
being a template problem in nettcp.cc. That problem will not
be corrected in this change.
Change 9883 2013/11/25
Build rules for jam on Darwin 9.0.
Change 9882 2013/11/15
Update build rules for AIX53.
Change 9881 2012/10/05
Eliminate hateful MSVCNT variable and the need to set it.
Consolidate all the Visual Studio configuration sections.
Change 9880 2012/10/04
Add defaults for NT ARM.
Change 9879 2011/09/14
On a Windows debug build the /MT flag was used in addition to
the /MTd flag. Basically harmless except the compiler issued
a warning for every file compiled.
Removed the use of the /MT flag in the jambase arena. This
allows the Jamrules to properly set this flag as required.
Also when doing a Smart Heap debug build, duplicate symbols
in the Smart Heap library conflicted with the standard
Windows CRT library. Adding a /FORCE to the link line solves
this problem. This is a very narrow case and should not effect
builds without Smart Heap.
Jam must be rebuilt to remove the /MT and /MTd warning.
Change 9877 2011/05/07
*Significant* MD5 speedups
This change requires a new Jambase, so, a new Jam, to take full
advantage.
Jambase: Now we handle local variables OPTIM, SUBDIRC++FLAGS, and
SUBDIRCCFLAGS on targets correctly. This was a change contemplated
ages ago on the jamming@ mailing list but never committed.
md5.cc: We no longer do byte-swabbing on temporary buffers,
we use a union to treat buffers as char * or uint32 *. We have
re-ordered the MD5STEP macros to be faster slightly based on
Wei Dai's "Public Domain" crypto++ 5.6.1 routines.
md5.h: We now align our buffers (per Wittenberg's recommendation) for
those machines both where it's faster to do so. Windows will be next?
Mostly reviewed by development.
Infrastructure change.
Change 9876 2011/01/17
Add shell command definitions for MINGW.
Change 9875 2010/01/04
Added Objective-C and Objective-C++ support to the Jambase.
Change 9873 2008/06/12
Don't hardcode paths to SDK libraries on ia64.
The LIB search path should come from the environment.
Change 9872 2008/06/12
Remove -D_CRT_SECURE_NO_DEPRECATE for ntia64.
Not supported.
Change 9871 2008/02/01
Add settings for IA64 VS2005.
Add /MT flags to other VS2005 sections and change libc.lib to libcmt.lib.
VS2005 doesn't have libc.lib anymore.
Remove \\$(I) ia64 hack from VS6 section and from the other sections in
which it appears uninitialized.
Change 9869 2007/09/06
Move the /MT flag for NET 2005 into jam's Jamfile and out
of the Jambase file. This removes the conflict with the
various TYPE=dyn, TYPE=dyng and so on, yet compiles jam as
multi threaded.
Change 9866 2007/07/12
Use $(MSVCNT:J=" ") and $(MSVC:J=" ") when constructing paths, since
spaces in the inherited environment variable are part of a scalar
value (a file name), not separators within an array.
This is probably still going to blow chunks if MSVCNT contains a
path where there are two or more adjacent spaces somewhere (since
the join will result in a nonexistent filename), but that's an
unlikely case whereas single spaces in NT filenames are pervasive.
To really do this right, Jam needs a way to treat variables
inherited from the environment as a single value without any array
tokenization. At least sometimes.
For the MSVC/MSVCNT special case actions Cc, C++, and Link: put quotes
around the expansion of $(STDHDRS) and $(LINKLIBS) so the batch
interpreter won't split space-embedded pathnames into multiple
arguments. Note that it's the operating system's command interpreter,
not Jam, which needs the quoting against whitespace this time.
Multiple values within these variables are still expanded correctly
at the Jam level.
Change 9865 2006/10/09
* Build.com: Compile jamgram.c with /NOOPTIMIZE.
The V7.2-021 cxx compiler on VMS8.2/IA64 has trouble with the parser
produced by either (b)yacc or bison: when jamgram.c is compiled with
optimization levels at or above /OPTIMIZE=(LEVEL=2), jam.exe crashes
as soon as it begins to parse its internal copy of Jambase. (The
default optmization level is /OPTIMIZE=(LEVEL=4), by the way.)
* Build.com: Display commands in build.com as they are executed, since
there is no other progress notification.
* Jambase ($(VMS)): Remove special cases for OS=OPENVMS and OS=VMS;
Newer compilers do not accept "vaxc" as a C dialect, and vaxcrtl.olb
does not exist on IA64.
There is no real difference between VMS and OPENVMS; the latter is
just marketingspeak. Having both OS=VMS and OS=OPENVMS switches is
probably more confusing than helpful; if in the future these flags
need to be restored, consider using some combination of OSPLAT and/or
OSVER also.
Change 9863 2005/07/29
Fix jam HdrRule change 79346 -- it has horrible combinatoric
behavior when you have system include files that go like this:
arpa/something includes
sys/something includes
machine/something includes
sys/something-else
Now HdrRule tries to be as conservative as possible to avoid
building monster SEARCH lists.
This is needed for AIX 5.3, where they apparently have such wild
include mazes.
Change 9859 2005/06/23
Jam changes for building on the AMD64 platform. The .NET 2005
beta2 compiler requires several flags. First it is necessary
to turn off the depreciation stuff, CRT functions like strcpy
sprintf and so on are now viewed as insecure by MS. For now it
is still possible to use them with the correct application of
compile flags. MS is making noises in line with taking these
functions away for good.
The "Win64" token was used for 64 bit builds. This is now a
bit ambiguous since it covers x64, ia64 and em64t. With this
change Win64 has been retired and we use x64 for amd64, ia64
for the Itanium and em64t for the extended memory processors.
Set MSVCVer accordingly. MSVCNT is set as always, to the
location of the VC directory, VC98, VC7 and now just VC.
For the most part the x64 build works on amd64, the exception
being a template problem in nettcp.cc. That problem will not
be corrected in this change.
Change 9858 2005/06/17
Porting changes to support AS/400
Change 9857 2005/05/06
Fix to HdrRule to handle '#include "path/file"': if the included
file has a directory component, then SEARCH and HDRSEARCH are set
to include the previous HDRSEARCH with 'path' appended. Without
this, then any files included by "path/file" might not be found
by jam, as it didn't know to look in the 'path' subdirectory.
This is needed for p4v's central 'windows' include file.
Change 9856 2003/12/09
Jam's Yacc rule now puts include dependencies on the generated
.c rather than on the .y.
Bug fix documented in RELNOTES.
Change 9855 2006/10/09
* Build.com: Compile jamgram.c with /NOOPTIMIZE.
The V7.2-021 cxx compiler on VMS8.2/IA64 has trouble with the parser
produced by either (b)yacc or bison: when jamgram.c is compiled with
optimization levels at or above /OPTIMIZE=(LEVEL=2), jam.exe crashes
as soon as it begins to parse its internal copy of Jambase. (The
default optmization level is /OPTIMIZE=(LEVEL=4), by the way.)
* Build.com: Display commands in build.com as they are executed, since
there is no other progress notification.
* Jambase ($(VMS)): Remove special cases for OS=OPENVMS and OS=VMS;
Newer compilers do not accept "vaxc" as a C dialect, and vaxcrtl.olb
does not exist on IA64.
There is no real difference between VMS and OPENVMS; the latter is
just marketingspeak. Having both OS=VMS and OS=OPENVMS switches is
probably more confusing than helpful; if in the future these flags
need to be restored, consider using some combination of OSPLAT and/or
OSVER also.
===============================================================================
===============================================================================
Release notes for Jam 2.5
(aka Jam - make(1) redux)
1. Release info:
Jam 2.5
August 19, 2004
VERSION 2.5
(n.b. Jam 2.5 is merely Jam 2.5rc3 of April 2003 with the rc3
moniker removed.)
2. Compatibility
Jam 2.5 is upward compatible with Jam 2.4
The Jam 2.5 language is a superset of the 2.4 language;
Jamfiles, Jambase, and other rulesets used in 2.4 can be used
with the 2.5 language support.
3. Changes since 2.4.
3.1. Changes to Jam Language
The 'return' statement now actually returns, and there are now
break & continue statements for for & while loops.
3.2. Jambase Changes
MkDir now grists directories with 'dir', so that directory
targets can be distinguished from other targets.
SubDir now allows multiple overlapping roots (top level
directories): the first SubDir of a new root uses the CWD of
jam to set that root; subsquent SubDirs use the current SUBDIR
to set the new root. New FSubDirPath to compute a path (given
SubDir arguments) and SubRules to include another root's
Jamrules. Jamrules only included if present; no error issued
if no Jamrules file.
Using SubDir to include a subpart of an SubDir tree now works.
Previously, you could only include the root of another SubDir
tree. This example includes the ../server/support/Jamfile,
without getting confused as to the current directory:
SubDir ALL src builds ;
SubInclude ALL src server support ;
$(RMDIR) has been defined for NT and defaulted to $(RM)
everwhere else. Not much tested. For Michael Champigny.
GenFile actions (on UNIX) now put . in the PATH for the execution
of the command, so that (at least) when jam builds itself . does
not need to be in the global path. It is the rare case where a
target bound in the current directory can't be used directly,
so we fudge it by setting PATH.
Undocumented support for SUBDIRRULES, user-provided rules
to invoke at the end of the SubDir rule, and SUBDIRRESET,
SUBDIR variables to reset (like SUBDIRC++FLAGS, SUBDIRHDRS, etc)
for each new SubDir.
3.3 'jam' Changes (See Jam.html)
The whole /MR of Jam's name has been dropped. It was intended
to avoid trademark infringement of JYACC's JAM, but as far as
we can tell (a) it wasn't enough to avoid infringement and (b)
the trademark has lapsed anyhow.
If header dependencies cause an object to be recompiled and
the source file is a temporary, the temporary is now
reconstructed. Previously, headers weren't considered when
deciding when to reconstruct a temporary.
-d has been reworked to make it easier to display more useful
tracing information separate from the debugging gunk:
-da - show all actions (formerly -d2)
-dc - show 'causes' for rebuilding (new output)
-dd - show dependencies (new output)
-dm - show make graph (aka -d3)
-dx - show executable text (formerly -d2)
-dd is new, and more display options are anticipated.
-n now implies -dax.
The message "...using xxx..." now only shows up with -da.
Jam.html was extensively updated, in an attempt at lucidity.
3.4. Jam internal code changes
Removed spurious search() in 'on' statement handling, thanks
(again) to Ingo Weinhold.
Fix 'includes' support so that included files aren't treated
as direct dependencies during the command execution phase. If
an included file failed to build, make1() would bypass the
including file. Now make0() appends each child's 'includes'
onto its own 'depends' list, eliminating 'includes'-specific
code in make0() and make1().
Rewrite of the past: updated all jam's source with comments to
reflect changes since about 2.3, very early 2001.
4. Fixed bugs
Fixed the description of the :E modifier in Jam.html.
Setting target-specific variables while under the influence of
the target's target-specific variables caused the _global_ values
to be modified. This happened both during header file scanning
(HdrRule is called when target-specific variables are in effect)
and with the "on target statement" syntax. Now setting
target-specific variables works again. Thanks to Matt Armstrong.
Setting "var on target ?= value" now works as expected: if the
variable is already set on the target, it is left unchanged.
Previously, ?= was ignored and the variable was set anyway.
Thanks to Chris Antos.
Variable expansion in actions has always put an extra blank
space after the last list element, but the expansion is described
in the code as "space separated". Now the last blank is suppressed
to match. From Miklos Fazekas.
The temp file name used by jam for .bat files on NT now contains
jam's pid, so that multiple jams can run on the same system (with
the same $TEMP). Thanks to Steve Anichini.
Several uninitialized memory accesses have been corrected in
var_expand() and file_archscan(), thanks to Matt Armstrong.
5. Porting
The Makefile now uses $(EXENAME) (./jam0 on UNIX, .\jam0.exe
on NT) instead of just "jam0", so that . doesn't need to be in
your PATH to bootstrap.
MACOSX updates: use 'ar' instead of libtool, as libtool can't
update a library and we archive too many things to do it in
one go; add piles of code to file_archscan() to handle new
BSD4.4 style "#1/nnnn" archive entry names, where the real
entry name follows the header and nnnn is the length of the
name.
The jam code underwent a const-ing, to work with compilers
that don't like "" being passed as a non-const char *.
Compiling on solaris w/ sparc now sets OSPLAT to "sparc".
Previously, it suppressed this, assuming (wrongly) that sparc
was the only solaris platform. Thanks to Michael Champigny
<michael.champigny@intel.com>.
Jambase no longer announces the compiler it is using on
Windows. It doesn't announce anything else, so why?
Jambase no longer refers to advapi32.lib on NT, as it isn't
needed for linking jam itself and it seems to move from
release to release (of MS Visual Studio).
Makefile/Jambase: BEOS updates from "Ingo Weinhold"
<bonefish@cs.tu-berlin.de>.
The NoCare rule can be used to suppress error messages when
an 'include' file can't be found.
AIX "big" archives are now supported, thanks to suggestions
from Randy Roesler.
MSVCDIR now works as well as MSVCNT for the Microsoft Visual C
compiler directory. It changed names in VC 6.0. Thanks to
Matt Armstrong.
Allow jam to build with BorlandC 5.5
For WinXP IA64; set MSVCNT to the root of the SDK and MSVCVer
to Win64; change handle type to long long (too much to include
windows.h?); bury IA64 in the library path in Jambase.
Mac classic MPW Codewarrior 7 upgrades: minor compiling
issues, new paths in Jambase for libraries and includes, and
separate out GenFile1 that sets PATH for UNIX only, as it
does't work under MPW (or anything other than with sh).
Minor Cray porting: make hashitem()'s key value unsigned so
we're guaranteed no integer overflows.
Remove NT FQuote rule, as, \" is required to pass quotes on
the command line.
Remove temp .bat files created on NT. They used to all have
the same name and get reused, but with 2.5 the names were salted
with the PID and they would litter $TEMP. Now they get removed
after being used.
===============================================================================
===============================================================================
Release notes for Jam 2.4
(aka Jam - make(1) redux)
1. Release info:
Jam 2.4
March, 21, 2002
VERSION 2.4
2. Compatibility
Jam 2.4 is upward compatible with Jam 2.3
The Jam 2.4 language is a superset of the 2.3 language;
Jamfiles, Jambase, and other rulesets used in 2.3 can be used
with the 2.4 language support.
3. Changes since 2.3.
3.1. Changes to Jam Language
The mechanism for calling rules that return values - "[ rule
args ...]", (and 'return' in the rule body), is now a
documented part of the language.
Add "on <target> <rulename> <field1> ..." syntax, to invoke a
rule under the influence of a target's specific variables.
Add "[ on targ rule ... ]" to call a rule returning a value,
under the influence of a target's specific variables.
New 'Glob' builtin that returns a list of files, given a list
of directories, and a list of filename patterns.
New 'while expr { block }' construct.
New :E=value modifier provides default value if variable unset.
New :J=joinval modifier concatenates list elements into single
element, separated by joinval.
\ can now be used to escape a space (or any single whitespace
character), so that you don't have to resort to quotes.
New 'Match regexp : string' rule matches regexp against string
and returns list of results.
Rules can now be invoked indirectly, through variable names.
If the variable expands to an empty list, no rule is run.
If the variable expands to multiple entries, each rule is
run with the same arguments. The result of the rule invocation
is the concatenation of the results of the rules invoked.
'Echo' and 'Exit' now have aliases 'echo' and 'exit', since it
is really hard to tell that these are built-in rules and not
part of the language, like 'include'. Real rules continue to
start with a capital.
3.2. Jambase Changes
Support for YACCGEN, the suffix used on generated yacc output.
Fix ups to have jam and p4 build with borland C 5.5,
and minor win98 jam support for jam clean
SubDirHdrs now takes directory names in the same format as
SubInclude : one directory element per word.
More portable support for specifying includes and #defines:
New ASHDRS, CCHDRS, CCDEFS, DEFINES, ObjectDefines, FQuote,
FIncludes, FDefines. Ordering of cc and c++ flags grossly
rearranged.
Jambase has been compacted by applying the new E: and J:
expansion modifiers.
New SoftLink rule, courtesy of David Lindes. It currently
assumes you can pass a -s flag to $(LN).
3.3 'jam' Changes (See Jam.html)
Added '-q' (quit quick) option; jam will exit promptly (as if it
received an interrupt), as soon as any target fails.
Added experimental '-g' (build newest sources first) option:
all things being equal, normally targets are simply built in
the order they appear in the Jamfiles. With this flag, targets
with the newest sources are built first. From an idea by Arnt
Gulbrandsen. Undocumented (outside this note).
3.4. Jam internal code changes
jamgram.yy now defines YYMAXDEPTH to 10000, what it is on
FreeBSD, for older yaccs that left it at 150 or so. This is
needed for the right-recursion now used in the grammar.
Optimize rule compilation, with right-recursion instead of left.
Split jam's built-in rules out to builtins.c from compile.c,
so that compile.c only deals with the language.
Split jam's pathsys.h from filesys.h, since they are really
two different pieces.
evaluate_if(), which evaluated the condition tree for 'if' and
returned an int, has been replaced with compile_eval(), which does
essentially the same but returns a LIST.
4. Fixed bugs
Missing TEMPORARY targets with multiple parents no longer spoil one
parent's time with another. The parents' time is used for comparison
with dependents, but no longer taken on as the target's own time.
'actions updated', not 'actions together', now protects targets
from being deleted on failed/interrupted updates.
Fixed broken $(v[1-]), which always returned an empty expansion.
Thanks to Ian Godin <ian@sgrail.com>.
Defining a rule within another rule, and invoking the enclosing
rule more than once, would result in giving the first rule a
null definition. Fixed.
$(d:P) now works properly on the mac, climbing up directories.
Thanks to Miklos Fazekas <boga@mac.com>.
No longer (sometimes) treat \ as a directory separator on
UNIX. It isn't supposed to be, but was due to bungled ifdefs.
Applying just :U or :D (or :E, :J) mods no longer causes the
variable value to be treated as a filename (parsed and rebuilt
using the OS specific pathsys routines). Previously, if _any_
mods were present then the value was parsed and rebuilt as if
a filename, and that could in certain cases munge the value.
Only the file modifiers (:GDBSM) treat the value as a
filename.
Four rules makeCommon, makeGrist, makeString, makeSubDir from
jam 2.2 missing in 2.3 have been re-added, with apologies to
dtb@cisco.com.
Return status more likely to be correct when using -d0, now that
targets are could as being built even with no debugging output.
Thanks to Miklos Fazekas <boga@mac.com>.
yyacc now suffixes all terminals it defines with _t, so that they
don't conflict with other symbols (like RULE with the typedef
in rules.h). Thanks to Michael Allard.
InstallInto now handles multiple sources properly, rather than
acting as if each installed target depended on all sources to
be installed. $(INSTALLGRIST) is now the default grist for
installed targets, rather than the hardcoded 'installed'. Thanks
to Stephen Goodson.
5. Porting
[MACINTOSH] Paths are now downshifted (internally) so as to
handle its case insensitivity. Thanks to Miklos Fazekas
<boga@mac.com>.
[NT] MS changed the macro for the IA64 Windows NT 64bit
compiler.
[CYGWIN] Cygwin jam porting: dance around bison and yyacc.
Use bison's -y flag to use yacc's output file naming
conventions, and don't use yyacc on systems whose SUFEXE is
set.
[VMS] The Jambase itself was not formatting the CCHDRS and
CCDEFS properly: on VMS they can't be appended to, because
multiple /define or /include directives don't work. Instead
now CCHDRS and CCDEFS is reformatted from HDRS and DEFINES
anytime those latter two change. This requires the recent
change to jam to allow access to target-specific variables
when setting other variables.
[VMS] Remove exception call when file_dirscan() can't, for
some reason, scan a directory. Use a better set of #ifdefs to
determine if we're on a vax, rather than relying on the C
compiler being a specific version: we're able to build with
the C++ compiler now.
[VMS] Port new jam to run with just cxx compiler.
(The C compiler being a extra-cost item).
[NT] Add entry for DevStudio when the settings are already in the
system environment.
[NT] default $(MV) to "move /y" in Jambase.
[MINGW] Mingw port by Max Blagai.
===============================================================================
===============================================================================
Release notes for Jam 2.3
(aka Jam - make(1) redux)
0. Bugs fixed since 2.3.1
PATCHLEVEL 2 - 3/12/2001
NOCARE changed back: it once again does not applies to targets
with sources and/or actions. In 2.3 it was changed to apply to
such targets, but that broke header file builds: files that are
#included get marked with NOCARE, but if they have source or
actions, they still should get built.
1. Release info:
Jam 2.3
November 16, 2000
VERSION 2.3
PATCHLEVEL 1
2. Compatibility
Jam 2.3 is upward compatible with Jam 2.2.
The Jam 2.3 language is a superset of the 2.2 language;
Jamfiles, Jambase, and other rulesets used in 2.2 can be used
with the 2.3 language support.
3. Changes since 2.2
3.1. Changes to Jam Language
Rules now can have values, which can expanded into a list with
the new "[ rule args ... ]" syntax. A rule's value is the value
of its last statement, though only the following statements have
values: if (value of the leg chosen), switch (ditto), set (value
of the resulting variable), return (its arguments). Note that
'return' doesn't actually return. This support is EXPERIEMENTAL
and otherwise undocumented. (2.3.1)
Because of the new way lists are processed, if a rule has no
targets a warning message is no longer issued.
NOCARE now applies to targets with sources and/or actions,
rather than just those without.
3.2. Jambase Changes
The HDRPATTERN variable now allows for leading blanks before
the #include, to keep up with ANSI. By john@nanaon-sha.co.jp
(John Belmonte) (2.2.3).
HDRPATTERN has been adjusted to avoid mistaking cases like:
# include <time.h> /* could be <sys/time.h> */
MkDir now NOUPDATE's $(DOT), so that there are no dependencies
on the current directory's timestamp. By john@nanaon-sha.co.jp
(John Belmonte).
The old mock functions like makeDirName, which assigned their
results to the variable named as their first argument, have
been replaced with real functions using the new [] syntax.
E.g. "makeDirName foo : bar ola" is now "foo = [ fDirName bar ]"
Install now always does a cp/chmod/etc, rather than using
the system's install(1), which invariably seems broken.
3.3. Jam internal code changes
$JAMUNAME is set on UNIX. (2.2.4).
Jam ANSI-fied (2.3.0).
jam.h now defines a bunch of symbols used by the other source
files, so as minimize compiler- and platform-specific ifdefs.
OSVER is no longer set by jam.h (it was only set for AIX).
Jam does not depend on this variable at all, except to set
$(OSFULL), which is used to determine jam's build directory.
If the user needs to distinguish between various revs of
OSs, he must set OSVER in the environment.
4. Fixed bugs
Redefining a rule while it was executing could cause jam to
crash. Reference counts are now used to prevent that, thanks
to Matt Armstrong.
Logic for computing chunk size when executing PIECEMEAL rules
has been reworked to be a little more accurate, without danger
of overflow, at the cost of being a little more compute intensive.
Instead of computing an estimate chunksize in the (now gone)
make1chunk(), make1cmds() now just goes full bore and tries to
use all args. When that fails, it backs off by 10% of the source
args until the command fits. It takes a little bit more compute
time compared to the old logic, but when you're executing actions
to build all of Shinola it's still pretty small in the scheme
of things.
The NT handle leak in execunix.c has been fixed, thanks to
Gurusamy Sarathy. (2.2.1).
5. Porting
Platforms newly supported or updated:
AmigaOS (with gcc), courtesy of Alain Penders (2.2.2).
Beos
CYGWIN 1.1.4, courtesy of John Belmonte <john@nanaon-sha.co.jp>.
IBM AS400 via Visual Age on NT (primitive)
IBM OS/390 Unix System Services
Linux SuSE on OS390
Linux Mips, ARM
Lynx
HPUX 11, IA64
Mac OS X Server, courtesy of Jeff_Sickel@sickel.com (2.2.5).
Mac Rhapsody
MPE IX 6.0
NetBSD
QNX RTP (QNX 6.0)
Siemens Sinix
UNICOS
VMS 6.2, 7.1
Windows NT IA64
5.1. NT Porting Notes
Always create tmp .bat file for actions if JAMSHELL is set.
That way, if JAMSHELL is a .bat file itself, it can handle
single-command actions with more than 9 cmd line args.
COMSPEC is no longer examined: cmd.exe is always used
instead. Only cmd.exe can execute the Jambase rules anyhow.
Jam can be built with Borland C++ 5.5.
OS2 fixes: InstallBin now works. Filenames are now downshifted,
so mixed case works better there, too. file_dirscan() can now scan
the root ("c:\" or "\") directory, which it couldn't handle before.
var_defines now ignores OS=Windows_NT, because it conflicts
with Jam's setting of OS (to NT).
5.2. Mac OS 8/9 Notes
The support for Mac is curious at best. It runs under MPW.
It requires CodeWarrior Pro 5, but no longer requires GUSI.
Use Build.mpw to bootstrap the build.
The Mac specific definitions in the Jambase are not intended
to be of general purpose, but are sufficient to have Jam build
itself.
===============================================================================
===============================================================================
Release Notes for Jam 2.2
1. Release info:
Jam 2.2
October 22, 1997
VERSION 2.2
PATCHLEVEL 1
2. Compatibility
Jam 2.2 is a roll-up of 'Jam - make(1) redux' release 2.1+.
Most of the changes described below were available before this,
in the jam.2.1.plus.tar ball.
The Jam 2.2 language is a superset of the 2.1 language;
Jamfiles, Jambase, and other rulesets used in 2.1 can be used
with the 2.2 language support.
See 'Jambase Changes', below, to see if your Jamfiles need any
changes to work with the 2.2 Jambase.
3. Changes Since 2.1
New product name: Jam. (Executable program is still named 'jam'.)
Documentation rewritten; HTML versions supplied.
3.1 Changes to Jam Language
Rules may now have more fields than just $(<) and $(>).
Local variables are now supported.
The expression 'if $(A) in $(B)' is now supported.
New variable modifiers :U and :L result in uppercased or lowercased
values.
New variable modifier :P reliably results in parent directory
of either a file or directory. (Previously, :D was used, but on VMS
:D of a directory name is just the directory name.)
The :S variable modifier now results in the _last_ suffix if a
filename has more than one dot (.) in it.
New predefined $(JAMDATE) variable is initialized at runtime for
simple date stamping.
New predefined variables $(OSVER) and $(OSPLAT) are used to
distinguish among operating system versions and hardware platforms,
when possible.
New 'bind' qualifier on action definitions allows variables
other than $(<) and $(>) to be bound with SEARCH and LOCATE paths.
Action buffer size is no longer limited by MAXCMD. Instead, each
line in an action is limited by MAXLINE, defined for each OS, and
the entire action size is limited by CMDBUF.
3.2 Jambase Changes (See Jamfile.html)
Jambase has been reworked to incorporate new language features.
A handful of new utility rules has been added: makeString,
makeDirName, etc.
New HDRGRIST variable in Jambase allows for headers with the same
name to be distinguished.
LOCATE_TARGET now has a new flavor, LOCATE_SOURCE, that is used by
rules that generate source files (e.g., Yacc and Lex).
Header file includes now happen in the proper order. The limit of
10 include files has been eliminated.
The old "Install" rule is no longer available. Use InstallBin,
InstallFile, InstallLib, InstallMan, or InstallShell instead.
3.3 'jam' Changes (See Jam.html)
'jam' can now be built as a stand-alone program, with Jambase
compiled into the executable. An external or alternate Jambase can
still be referenced explicitly with -f.
On command failure, 'jam' now emits the text of the command that
failed. This is a compromise between the normal -d1 behavior (where
commands were never seen) and -d2 (where commands are always seen).
'jam' now exits non-zero if it doesn't have a total success. A parse
error, sources that can't be found, and targets that can't be built
all generate non-zero exit status.
The debugging levels (-d flags) have been slightly redefined.
The supplied Jamfile now builds 'jam' into a platform specific
subdirectory. This lets you use the same source directory to
build 'jam' for more than one platform.
The supplied Jamfile does not rebuild generated source files by
default. (They are supplied with the distribution.) See Jamfile
for more information.
4. Fixed Bugs
The 'include' bug has finally been fixed, so that include
statements take effect exactly when they are executed,
rather than after the current statement block. This also
corrects the problem where an 'include' within an 'if'
block would wind up including the file one token after the
'if' block's closing brace. Credit goes to Thomas Woods
for suggesting that the parse tree generation and parse
tree execution be paired in their own loop, rather than
having the parser execute the tree directly.
The setting and extracting of grist has been regularized:
normally, if you set a component of a filename (using the
:DBSMG= modifiers), you are supposed to include the delimiters
that set off the component: that is, you say "$(x:S=.suffix)",
including the ".". But with grist it was inconsistent
between setting and getting: setting grist required no
<>'s, while getting grist included them. Getting grist
continues to return the <>'s, but now setting grist can
either include them (the new way) or not (the old way).
'actions together' now suppresses duplicate sources from
showing up in $(>).
Accessing variables whose names contained ['s (as happens with
MkDir on VMS) wasn't working, because it treated the [ as an
array subscript. Now [ and ] are, like :, handled specially so
that they can appear in variable values.
The 'if' statement now compares all elements in expressions;
previously, it only compared the first element of each list.
If a command line in an action is longer than MAXLINE (formerly
MAXCMD), 'jam' now issues an error and exits rather than dumping
core.
If a Jamfile ended without a trailing newline, jam dumped core.
This has been fixed.
5. Porting
See jam.h for the definitive list of supported platforms.
Since 2.1, support has been added for:
Macintosh MPW
Alpha VMS
Alpha NT
NT PowerPC
BeOS
MVS OE
UNIXWARE
QNX
SINIX (Nixdorf)
OS/2
Interactive UNIX (ISC), courtesy of Matthew Newhook
5.1 NT Support Fixes
The NT command executor now handles multiple line actions, by writing
multi-line actions to a batch file and executing that.
Targets are universally lowercased on NT. (Matthew Newhook)
Concurrent process support is fully enabled for NT.
(Gurusamy Sarathy <gsar@engin.umich.edu>)
Path handling: Jam now knows that the directory component of "D:\"
is "D:\", just as on unix it knows that the directory component of
"/" is "/". It also now successfully gets the timestamp for "D:\"
or just plain "\".
5.2 VMS Support Fixes
VMS support is much, much better now. The path name manipulation
routines (in pathvms.c) were more or less rewritten, and they now
handle the vagaries of combining directory and file names properly.
Targets are universally lowercased on VMS.
Multi-line command blocks on VMS are now executed in a single system()
call rather than separate ones for each line, so that actions can
be DCL scripts.
===============================================================================
===============================================================================
Release notes for Jam 2.1.
1. Release info:
Jam 2.1
February 1, 1996
VERSION 2.1
PATCHLEVEL 0
2. Porting
Linux is now supported.
FREEBSD is now supported.
SCO ("M_XENIX") now supported.
NCR now supported.
NEXT support from karthy@dannug.dk (Karsten Thygesen)
DECC support from zinser@axp614.gsi.de (Martin P.J. Zinser)
I have changes for OS/2, but no way to test them. Volunteers?
I have VMS multiprocess support, but no way to test it. Volunteers?
2.1. NT Support fixes.
The NT support is considerably more real than it was in 2.0.
Filent.c had its syntax error corrected, it no longer skips the
first entry when scanning directories, and it handles string
tables in archives (for long object file names).
The Jambase was changed a bit to support the various C/C++
compilers on NT, although it has only been thorougly tested
with MSVC20.
You still need to set MSVCNT or BCCROOT to the root of the
the compiler's directory tree, and you'll get an error if you
don't set it (rather than getting a pile of mysterious errors).
2.2. Other porting fixes.
SPLITPATH now set up for UNIX (:), NT (;), VMS (,)
Jambase support for Solaris works better now: the location of
AR is hardwired to /usr/ccs/bin/ar and it knowns "install"
doesn't take -c. Solaris -- how the mighty have fallen.
To handle Linux's wacko yacc, jamgram.h is now included after
scan.h so that YYSTYPE is define.
3. Jambase Changes (see Jamfile.html)
SubDir now computes the root directory for the source tree, if
the variable naming the root directory isn't set in the environment.
It counts the number of directory elements leading from the root
to the current directory (as passed to SubDir) and uses that many
"../"'s to identify the root. This means that to use SubDir you
no longer have to have anything special set in the environment.
InstallFile is now an alias for InstallLib.
'first' is now dependency of all pseudo-targets (all, files,
exe, lib, shell), so that jamming any of these pseudo-targets
also builds any dependencies of 'first'.
The File rule definition in the Jambase was missing an &.
The File rule now calls the Clean rule, so that installed files
get cleaned.
4. Jam changes (see Jam.html)
Variables may now be set on the command line with -svar=value.
Targets marked with NOUPDATE are now immune to the -a (anyhow)
flag. Previously, the MkDir rule would try to recreate directories
that already exist when jam was invoked with -a.
A new variable, $(JAMVERSION), joins the small list of built-in
variables. It it set to the release of jam, currently "2.1".
If an actions fails, jam now deletes the target(s). It won't
delete libraries or other targets that are composites. This is
now consistent with jam's behavior on interrupts (it deletes the
targets).
Jam had a nasty bug when setting multiple variables to the same
value: if the first two variable names were the same, the variable
value got trashed. This also affected "on target" variables if
the first two targets were the same. For example:
FOO on bar.c bar.c foo.c = a b c ;
This would mangle the value of FOO for bar.c and foo.c. This has
been fixed.
Jam would generate bogus numbers when reporting the number of
targets updated after an interrupt. It now is more careful about
counting.
The debugging flag -d has been extended. In addition to supporting
-dx (turn on debugging for all levels up to x) there is also now
-d+x (turn on debugging at only level x). The default output
level is -d1 (-or d2 if -n is given); this can be turned off with
-d0. The debug levels are listed in jam.1 and jam.h.
The parsing debug output now uses indenting to indicate when
one rule invokes another.
===============================================================================
===============================================================================
Release notes for Jam 2.0.
1. Release info:
Jam 2.0
March 10, 1994
VERSION 2.0
PATCHLEVEL 5
2. Porting
Windows/NT is now (crudely) supported, courtesy of Brett Taylor
and Laura Wingerd.
COHERENT/386 is now supported, courtesy of Fred Smith.
Solaris archive string table for long archive names is now
supported, thanks to Mike Matrigali.
3. Compatibility
Jam 2.0 syntax is a superset of Jam 1.0 syntax, and thus it can
interpret a Jam 1.0 Jambase.
The Jam 2.0 Jambase is a superset of the Jam 1.0 Jambase, and
thus it can include a Jamfile written for Jam 1.0.
4. Changes from Jam 1.0 to Jam 2.0
4.1. Documentation changes
New Jamfile.5 manual page, with lots of examples and easy
reading. It replaces both the old "Examples" file as well as
the old Jambase.5 manual page.
jam.1 edited by Stephen W. Liddle and Diane Holt.
4.2. Jambase Changes (see Jamfile.5)
4.2.1. New rules:
There are new rules to make handling subdirectories easier:
SubDir, SubInclude, SubDirCcFlags, SubDirHdrs.
There are new rules to handle file-specific CCFLAGS and HDRS:
ObjectCcFlags and ObjectHdrs.
Misc new rules: HardLink, InstallShell, MkDir.
New rule "clean" that deletes exactly what jam has built, and
"uninstall" that deletes exactly what was installed.
New rules for handling suffixes .s, .f, .cc, .cpp, .C.
4.2.2. Old rules:
The InstallBin, Lib, Man, and the new Shell rules now take the
destination directory as the target and the files to be copied
as sources. These rules formerly took the files to be copied
as targets, and used built-in destination directories of
$(BINDIR), $(LIBDIR), $(MANDIR), and $(BINDIR).
The InstallBin, Lib, Man, and Shell rules use the install(1)
program now, instead of doing their own copying.
The Cc rule now uses -o when possible, rather than moving the
result. Some platforms (Pyramid?) have a broken -o.
Jambase rules taking libraries, objects, and executables now
all ignore the suffixes provided and use the one defined in the
Jambase for the platform.
Stupid yyacc support moved out of Jambase, as jam is its only
likely user.
Jambase now purturbs library sources with a "grist" of
SOURCE_GRIST.
4.2.3. Misc:
The names of the default rules defined in Jambase have been
lowercased and un-abbreviated, to be more imake(1) like.
The Jambase has been reorganized and sorted, with VMS and NT
support moved in from their own files.
The Jambase has been relocated on UNIX from /usr/local/lib/jam
to /usr/local/lib.
4.3. Jam changes (see jam.1)
4.3.1. Flags:
New -a (anyhow) flag: means build everything.
New -j<x> flag: run jobs in parallel.
Old -t now rebuilds the touched target, rather that just the
target's parents.
-n now implies -d2, so that you see what's happening. The
debug level can be subsequently overridden.
New -v to dump version.
4.3.2. Rules:
New ALWAYS rule behaves like -t: always builds target.
New EXIT rule makes it possible to raise a fatal error.
New LEAVES rule which say target depends only on the update
times of the leaf sources.
New NOUPDATE rule says built targets only if they don't exist.
NOTIME has been renamed NOTFILE, to more accurately reflect its
meaning (it says a target is not to be bound to a file).
4.3.3. Variables:
New special variable JAMSHELL: argv template for command execution
shell.
Variables, both normal and target-specific, can have their
value appended with the syntax "var += value" or "var on target
+= value".
"?=" is now synonymous with "default =".
Imported enviroment variable values are now split at blanks
(:'s if the variable name ends in PATH), so that they become
proper list values.
4.3.4. Misc:
Files to be sourced with "include" are now bound first, so
$(SEARCH) and $(LOCATE) affect them. They still can't be
built, though.
New modifier on "actions": "existing" causes $(>) to expand
only those files that currently exist.
4.3.5. Bug fixes:
When scanning tokens known to be argument lists (such as the
arguments to rule invocations and variable assignment), the
parser now tells the scanner to ignore alphabetic keywords, as
all such lists terminate with punctuation keywords (like : or
;). This way, alphabetic keywords don't need to be quoted when
they appear as arguments.
The scanner has been fixed to handle oversized tokens,
unterminated quotes, unterminated action blocks, and tokens
abutting EOF (i.e. a token with no white space before EOF).
The progress report "...on xth target..." used to count all
targets, rather than just those with updating actions. Since
the original pronouncement of targets to be udpated included
only those with updating actions, the progress report has been
changed to match.
'If' conditionals now must be single arguments. Previously,
they could be zero or more arguments, which didn't make much
sense, and made things like 'foo == bar' true. The comparison
operator is '=', and '==' just looked like the second of three
arguments in the unary "non-empty argument list" conditional.
Header files indirectly including themselves were mistakenly
reported as being dependent on themselves. Recursing through
header file dependencies is now done after determining the fate
of the target.
The variable expansion support was expanding $(X)$(UNDEF) as if
it were $(X). It now expands to an empty list, like it
should.
The UNIX version of file_build() didn't handle "dir/.suffix"
right. Now it does.
The VMS command buffer was assumed to be as large as 1024 bytes,
which isn't the case everywhere as it is related to some weird
quota. It has been lowered to 256.
$(>) and $(<) wouldn't expand in action blocks if the targets
were marked with NOTIME. Now they expand properly.
Malloc() return values are now checked.
The variable expansion routine var_expand() is now a little
faster, by taking a few often needed shortcuts.
The VMS version of file_build() used the wrong length when
re-rooting file names that already had directory compoents.
This was fixed.
Various tracing adjustments were made.
5. Limitations/Known Bugs
The new Windows/NT support has only been marginally tested. It
is dependent on certain variables being set depending on which
compiler you are using. You'll need to look in the file
Jambase and see what variables are expected to be set.
The VMS support has been tested, courtesy of the DEC guest
machine, but has not been hammered fully in release 2.0. It
was used quite a bit in Jam 1.0.
Jam clean when there is nothing to clean claims it is updating
a target.
Because the include statement works by pushing a new file in
the input stream of the scanner rather than recursively
invoking the parser on the new file, multiple include
statements in a rule's procedure causes the files to be
included in reverse order.
If the include statement appears inside an if block, the
parser's attempt to find the else will cause the text of the
included file to appear after the first token following the
statement block. This is rarely what is intended.
In a rule's actions, only $(<) and $(>) refer to the bound file
names: all other variable references get the unbound names.
This is a pain for $(NEEDLIBS), because it means that library
path can't be bound using $(SEARCH) and $(LOCATE).
With the -j flag, errors from failed commands can get
staggeringly mixed up. Also, because targets tend to get built
in a quickest-first ordering, dependency information must be
quite exact. Finally, beware of parallelizing commands that
drop fixed-named files into the current directory, like yacc(1)
does.
A poorly set $(JAMSHELL) is likely to result in silent
failure.
|