ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/SheepShaver/src/MacOSX/SheepShaver.xcodeproj/project.pbxproj
(Generate patch)

Comparing SheepShaver/src/MacOSX/SheepShaver.xcodeproj/project.pbxproj (file contents):
Revision 1.1 by asvitkine, 2011-12-28T18:01:17Z vs.
Revision 1.4 by asvitkine, 2011-12-29T07:43:25Z

# Line 109 | Line 109
109                  0873A54314AAF18E004F12B7 /* dyngen.c in Sources */ = {isa = PBXBuildFile; fileRef = 0873A54114AAF18E004F12B7 /* dyngen.c */; };
110                  0873A5D614AB80CA004F12B7 /* basic-dyngen-ops.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0873A5D514AB80CA004F12B7 /* basic-dyngen-ops.cpp */; };
111                  0873A5D814AB80E3004F12B7 /* ppc-dyngen-ops.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0873A5D714AB80E3004F12B7 /* ppc-dyngen-ops.cpp */; };
112 +                0873A76814ABD151004F12B7 /* config-macosx-x86_64.h in Headers */ = {isa = PBXBuildFile; fileRef = 0873A76614ABD151004F12B7 /* config-macosx-x86_64.h */; };
113 +                0873A76914ABD151004F12B7 /* config.h in Headers */ = {isa = PBXBuildFile; fileRef = 0873A76714ABD151004F12B7 /* config.h */; };
114 +                0873A76A14ABD151004F12B7 /* config-macosx-x86_64.h in Headers */ = {isa = PBXBuildFile; fileRef = 0873A76614ABD151004F12B7 /* config-macosx-x86_64.h */; };
115 +                0873A76B14ABD151004F12B7 /* config.h in Headers */ = {isa = PBXBuildFile; fileRef = 0873A76714ABD151004F12B7 /* config.h */; };
116 +                0873A80214AC515D004F12B7 /* utils_macosx.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0873A80114AC515D004F12B7 /* utils_macosx.mm */; };
117   /* End PBXBuildFile section */
118  
119   /* Begin PBXContainerItemProxy section */
# Line 123 | Line 128
128                          isa = PBXContainerItemProxy;
129                          containerPortal = 0856CCAE14A99DE0000B1711 /* Project object */;
130                          proxyType = 1;
131 <                        remoteGlobalIDString = 0873A5CB14AB806D004F12B7 /* ppc-dyngen-ops */;
131 >                        remoteGlobalIDString = 0873A5CB14AB806D004F12B7;
132                          remoteInfo = "ppc-dyngen-ops";
133                  };
134                  0873A60214AB83CC004F12B7 /* PBXContainerItemProxy */ = {
135                          isa = PBXContainerItemProxy;
136                          containerPortal = 0856CCAE14A99DE0000B1711 /* Project object */;
137                          proxyType = 1;
138 <                        remoteGlobalIDString = 0873A5C414AB8038004F12B7 /* basic-dyngen-ops */;
138 >                        remoteGlobalIDString = 0873A5C414AB8038004F12B7;
139                          remoteInfo = "basic-dyngen-ops";
140                  };
141                  0873A62614AB869A004F12B7 /* PBXContainerItemProxy */ = {
142                          isa = PBXContainerItemProxy;
143                          containerPortal = 0856CCAE14A99DE0000B1711 /* Project object */;
144                          proxyType = 1;
145 <                        remoteGlobalIDString = 0873A53114AAF05A004F12B7 /* dyngen */;
145 >                        remoteGlobalIDString = 0873A53114AAF05A004F12B7;
146                          remoteInfo = dyngen;
147                  };
148                  0873A67C14AB8AF9004F12B7 /* PBXContainerItemProxy */ = {
149                          isa = PBXContainerItemProxy;
150                          containerPortal = 0856CCAE14A99DE0000B1711 /* Project object */;
151                          proxyType = 1;
152 <                        remoteGlobalIDString = 0873A67314AB8AE9004F12B7 /* ppc-execute-impl */;
152 >                        remoteGlobalIDString = 0873A67314AB8AE9004F12B7;
153                          remoteInfo = "ppc-execute-impl";
154                  };
155   /* End PBXContainerItemProxy section */
# Line 322 | Line 327
327                  0856CEC414A99EF0000B1711 /* about_window_unix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = about_window_unix.cpp; sourceTree = "<group>"; };
328                  0856CECF14A99EF0000B1711 /* bincue_unix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = bincue_unix.cpp; sourceTree = "<group>"; };
329                  0856CED014A99EF0000B1711 /* bincue_unix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bincue_unix.h; sourceTree = "<group>"; };
325                0856CED314A99EF0000B1711 /* config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = "<group>"; };
330                  0856CEE314A99EF0000B1711 /* ether_unix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ether_unix.cpp; sourceTree = "<group>"; };
331                  0856CEFB14A99EF0000B1711 /* main_unix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = main_unix.cpp; sourceTree = "<group>"; };
332                  0856CF5A14A99EF0000B1711 /* prefs_unix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = prefs_unix.cpp; sourceTree = "<group>"; };
# Line 364 | Line 368
368                  0873A5CC14AB806D004F12B7 /* libppc-dyngen-ops.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libppc-dyngen-ops.a"; sourceTree = BUILT_PRODUCTS_DIR; };
369                  0873A5D514AB80CA004F12B7 /* basic-dyngen-ops.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = "basic-dyngen-ops.cpp"; sourceTree = "<group>"; };
370                  0873A5D714AB80E3004F12B7 /* ppc-dyngen-ops.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = "ppc-dyngen-ops.cpp"; sourceTree = "<group>"; };
371 +                0873A76614ABD151004F12B7 /* config-macosx-x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "config-macosx-x86_64.h"; sourceTree = "<group>"; };
372 +                0873A76714ABD151004F12B7 /* config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = "<group>"; };
373 +                0873A80014AC515D004F12B7 /* utils_macosx.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = utils_macosx.h; sourceTree = "<group>"; };
374 +                0873A80114AC515D004F12B7 /* utils_macosx.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = utils_macosx.mm; sourceTree = "<group>"; };
375   /* End PBXFileReference section */
376  
377   /* Begin PBXFrameworksBuildPhase section */
# Line 695 | Line 703
703                  0856CE0614A99EEF000B1711 /* MacOSX */ = {
704                          isa = PBXGroup;
705                          children = (
706 +                                0873A76514ABD151004F12B7 /* config */,
707                                  0856D2D614A9A704000B1711 /* Launcher */,
708                                  0856CE2C14A99EF0000B1711 /* clip_macosx.cpp */,
709                                  0856CE2D14A99EF0000B1711 /* extfs_macosx.cpp */,
# Line 703 | Line 712
712                                  0856CE7014A99EF0000B1711 /* prefs_macosx.mm */,
713                                  0856CE8314A99EF0000B1711 /* SheepShaver.icns */,
714                                  0856CE8714A99EF0000B1711 /* sys_darwin.cpp */,
715 +                                0873A80014AC515D004F12B7 /* utils_macosx.h */,
716 +                                0873A80114AC515D004F12B7 /* utils_macosx.mm */,
717                          );
718                          name = MacOSX;
719                          sourceTree = "<group>";
# Line 777 | Line 788
788                                  0856CEC414A99EF0000B1711 /* about_window_unix.cpp */,
789                                  0856CECF14A99EF0000B1711 /* bincue_unix.cpp */,
790                                  0856CED014A99EF0000B1711 /* bincue_unix.h */,
780                                0856CED314A99EF0000B1711 /* config.h */,
791                                  0856CEE314A99EF0000B1711 /* ether_unix.cpp */,
792                                  0856CEFB14A99EF0000B1711 /* main_unix.cpp */,
793                                  0856CF5A14A99EF0000B1711 /* prefs_unix.cpp */,
# Line 817 | Line 827
827                          path = Launcher;
828                          sourceTree = "<group>";
829                  };
830 +                0873A76514ABD151004F12B7 /* config */ = {
831 +                        isa = PBXGroup;
832 +                        children = (
833 +                                0873A76614ABD151004F12B7 /* config-macosx-x86_64.h */,
834 +                                0873A76714ABD151004F12B7 /* config.h */,
835 +                        );
836 +                        path = config;
837 +                        sourceTree = "<group>";
838 +                };
839   /* End PBXGroup section */
840  
841   /* Begin PBXHeadersBuildPhase section */
# Line 824 | Line 843
843                          isa = PBXHeadersBuildPhase;
844                          buildActionMask = 2147483647;
845                          files = (
846 +                                0873A76A14ABD151004F12B7 /* config-macosx-x86_64.h in Headers */,
847 +                                0873A76B14ABD151004F12B7 /* config.h in Headers */,
848                          );
849                          runOnlyForDeploymentPostprocessing = 0;
850                  };
# Line 831 | Line 852
852                          isa = PBXHeadersBuildPhase;
853                          buildActionMask = 2147483647;
854                          files = (
855 +                                0873A76814ABD151004F12B7 /* config-macosx-x86_64.h in Headers */,
856 +                                0873A76914ABD151004F12B7 /* config.h in Headers */,
857                          );
858                          runOnlyForDeploymentPostprocessing = 0;
859                  };
# Line 1035 | Line 1058
1058                          );
1059                          runOnlyForDeploymentPostprocessing = 0;
1060                          shellPath = /bin/sh;
1061 <                        shellScript = "gcc -E \"-I${SRCROOT}/../include\" \"-I${SRCROOT}/../kpx_cpu/include\" \"-I${SRCROOT}/../kpx_cpu/src\" \"-I${SRCROOT}/../Unix\" -DUSE_JIT -DGENEXEC \"${SRCROOT}/../kpx_cpu/src/cpu/ppc/ppc-decode.cpp\" | perl \"${SRCROOT}/../kpx_cpu/src/cpu/ppc/genexec.pl\" > \"${SRCROOT}/../Unix/ppc-execute-impl.cpp\"\n";
1061 >                        shellScript = "gcc -E \"-I${SRCROOT}/config\" \"-I${SRCROOT}/../include\" \"-I${SRCROOT}/../kpx_cpu/include\" \"-I${SRCROOT}/../kpx_cpu/src\" \"-I${SRCROOT}/../Unix\" -DUSE_JIT -DGENEXEC \"${SRCROOT}/../kpx_cpu/src/cpu/ppc/ppc-decode.cpp\" | perl \"${SRCROOT}/../kpx_cpu/src/cpu/ppc/genexec.pl\" > \"${SRCROOT}/../Unix/ppc-execute-impl.cpp\"\n";
1062                  };
1063   /* End PBXShellScriptBuildPhase section */
1064  
# Line 1131 | Line 1154
1154                                  0856D13F14A99EF1000B1711 /* xpram.cpp in Sources */,
1155                                  0856D33914A9A704000B1711 /* VMSettingsController.mm in Sources */,
1156                                  082AC22D14AA52E900071F5E /* prefs_editor_dummy.cpp in Sources */,
1157 +                                0873A80214AC515D004F12B7 /* utils_macosx.mm in Sources */,
1158                          );
1159                          runOnlyForDeploymentPostprocessing = 0;
1160                  };
# Line 1237 | Line 1261
1261                                  GCC_ENABLE_BUILTIN_FUNCTIONS = NO;
1262                                  GCC_ENABLE_FIX_AND_CONTINUE = NO;
1263                                  GCC_ENABLE_PASCAL_STRINGS = NO;
1264 +                                GCC_ENABLE_SYMBOL_SEPARATION = NO;
1265                                  GCC_MODEL_TUNING = G5;
1266 <                                GCC_PRECOMPILE_PREFIX_HEADER = YES;
1267 <                                GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/AppKit.framework/Headers/AppKit.h";
1266 >                                GCC_PRECOMPILE_PREFIX_HEADER = NO;
1267 >                                GCC_PREFIX_HEADER = "";
1268                                  INSTALL_PATH = /usr/local/bin;
1269                                  OTHER_LDFLAGS = (
1270                                          "-framework",
# Line 1248 | Line 1273
1273                                          AppKit,
1274                                  );
1275                                  PREBINDING = NO;
1276 +                                PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO;
1277                                  PRODUCT_NAME = lowmem;
1278                                  ZERO_LINK = NO;
1279                          };
# Line 1278 | Line 1304
1304                                  GCC_ENABLE_FIX_AND_CONTINUE = NO;
1305                                  GCC_ENABLE_PASCAL_STRINGS = NO;
1306                                  GCC_ENABLE_SYMBOL_SEPARATION = NO;
1307 <                                GCC_ENABLE_TRIGRAPHS = YES;
1307 >                                GCC_ENABLE_TRIGRAPHS = NO;
1308                                  GCC_INLINES_ARE_PRIVATE_EXTERN = NO;
1309                                  GCC_MODEL_TUNING = G5;
1310                                  GCC_OPTIMIZATION_LEVEL = 0;
# Line 1294 | Line 1320
1320                                  );
1321                                  GCC_SYMBOLS_PRIVATE_EXTERN = NO;
1322                                  GCC_WARN_UNUSED_FUNCTION = YES;
1323 +                                GCC_WARN_UNUSED_VARIABLE = YES;
1324                                  HEADER_SEARCH_PATHS = (
1325                                          /Library/Frameworks/SDL.framework/Versions/A/Headers/,
1326 +                                        ./config/,
1327                                          ../Unix,
1328                                          ../MacOSX/Launcher,
1329                                          ../slirp,
# Line 1305 | Line 1333
1333                                  );
1334                                  INFOPLIST_FILE = Info.plist;
1335                                  INSTALL_PATH = "$(HOME)/Applications";
1336 <                                OTHER_CPLUSPLUSFLAGS = (
1337 <                                        "$(OTHER_CFLAGS)",
1310 <                                        "-mdynamic-no-pic",
1311 <                                );
1336 >                                OTHER_CFLAGS = "";
1337 >                                OTHER_CPLUSPLUSFLAGS = "$(OTHER_CFLAGS)";
1338                                  OTHER_LDFLAGS = (
1339                                          "-pagezero_size",
1340                                          0x3000,
# Line 1329 | Line 1355
1355                          isa = XCBuildConfiguration;
1356                          buildSettings = {
1357                                  ALWAYS_SEARCH_USER_PATHS = NO;
1358 +                                ARCHS = "$(ARCHS_STANDARD_64_BIT)";
1359                                  COPY_PHASE_STRIP = YES;
1360                                  DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
1361 +                                GCC_CW_ASM_SYNTAX = NO;
1362 +                                GCC_DYNAMIC_NO_PIC = NO;
1363                                  GCC_ENABLE_FIX_AND_CONTINUE = NO;
1364 +                                GCC_ENABLE_PASCAL_STRINGS = NO;
1365 +                                GCC_ENABLE_SYMBOL_SEPARATION = NO;
1366 +                                GCC_ENABLE_TRIGRAPHS = NO;
1367 +                                GCC_INLINES_ARE_PRIVATE_EXTERN = NO;
1368                                  GCC_MODEL_TUNING = G5;
1369 <                                GCC_PRECOMPILE_PREFIX_HEADER = YES;
1370 <                                GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/AppKit.framework/Headers/AppKit.h";
1371 <                                INFOPLIST_FILE = "SheepShaver-Info.plist";
1369 >                                GCC_PRECOMPILE_PREFIX_HEADER = NO;
1370 >                                GCC_PREFIX_HEADER = "";
1371 >                                GCC_PREPROCESSOR_DEFINITIONS = (
1372 >                                        "DATADIR=",
1373 >                                        HAVE_CONFIG_H,
1374 >                                        USE_JIT,
1375 >                                        "_GNU_SOURCE=1",
1376 >                                        _THREAD_SAFE,
1377 >                                        _REENTRANT,
1378 >                                );
1379 >                                GCC_SYMBOLS_PRIVATE_EXTERN = NO;
1380 >                                GCC_WARN_UNUSED_FUNCTION = YES;
1381 >                                GCC_WARN_UNUSED_VARIABLE = YES;
1382 >                                HEADER_SEARCH_PATHS = (
1383 >                                        /Library/Frameworks/SDL.framework/Versions/A/Headers/,
1384 >                                        ./config/,
1385 >                                        ../Unix,
1386 >                                        ../MacOSX/Launcher,
1387 >                                        ../slirp,
1388 >                                        ../kpx_cpu/src,
1389 >                                        ../kpx_cpu/include,
1390 >                                        ../include,
1391 >                                );
1392 >                                INFOPLIST_FILE = Info.plist;
1393                                  INSTALL_PATH = "$(HOME)/Applications";
1394 +                                OTHER_CFLAGS = "";
1395 +                                OTHER_CPLUSPLUSFLAGS = "$(OTHER_CFLAGS)";
1396                                  OTHER_LDFLAGS = (
1397 +                                        "-pagezero_size",
1398 +                                        0x3000,
1399 +                                        "-Wl,-seg1addr,0x78048000",
1400                                          "-framework",
1401                                          Foundation,
1402                                          "-framework",
1403                                          AppKit,
1404                                  );
1405                                  PREBINDING = NO;
1406 +                                PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO;
1407                                  PRODUCT_NAME = SheepShaver;
1408                                  ZERO_LINK = NO;
1409                          };
# Line 1380 | Line 1440
1440                          isa = XCBuildConfiguration;
1441                          buildSettings = {
1442                                  ALWAYS_SEARCH_USER_PATHS = NO;
1443 +                                ARCHS = "$(ARCHS_STANDARD_64_BIT)";
1444                                  COPY_PHASE_STRIP = YES;
1445                                  DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
1446                                  GCC_ENABLE_FIX_AND_CONTINUE = NO;
1447 +                                GCC_ENABLE_SYMBOL_SEPARATION = NO;
1448                                  GCC_MODEL_TUNING = G5;
1449 <                                GCC_PRECOMPILE_PREFIX_HEADER = YES;
1450 <                                GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/AppKit.framework/Headers/AppKit.h";
1449 >                                GCC_PRECOMPILE_PREFIX_HEADER = NO;
1450 >                                GCC_PREFIX_HEADER = "";
1451                                  INSTALL_PATH = /usr/local/bin;
1452                                  OTHER_LDFLAGS = (
1453                                          "-framework",
# Line 1394 | Line 1456
1456                                          AppKit,
1457                                  );
1458                                  PREBINDING = NO;
1459 +                                PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO;
1460                                  PRODUCT_NAME = dyngen;
1461                                  ZERO_LINK = NO;
1462                          };
# Line 1452 | Line 1515
1515                          isa = XCBuildConfiguration;
1516                          buildSettings = {
1517                                  ALWAYS_SEARCH_USER_PATHS = NO;
1518 +                                ARCHS = "$(ARCHS_STANDARD_64_BIT)";
1519                                  COPY_PHASE_STRIP = YES;
1520                                  DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
1521                                  GCC_ENABLE_FIX_AND_CONTINUE = NO;
1522                                  GCC_MODEL_TUNING = G5;
1523 <                                GCC_PRECOMPILE_PREFIX_HEADER = YES;
1524 <                                GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/AppKit.framework/Headers/AppKit.h";
1523 >                                GCC_PRECOMPILE_PREFIX_HEADER = NO;
1524 >                                GCC_PREFIX_HEADER = "";
1525 >                                HEADER_SEARCH_PATHS = (
1526 >                                        ../kpx_cpu/src,
1527 >                                        ../kpx_cpu/include,
1528 >                                );
1529                                  INSTALL_PATH = /usr/local/lib;
1530 +                                OTHER_CFLAGS = (
1531 +                                        "-mdynamic-no-pic",
1532 +                                        "-fomit-frame-pointer",
1533 +                                        "-fno-align-functions",
1534 +                                        "-finline-functions",
1535 +                                        "-finline-limit=10000",
1536 +                                        "-fno-exceptions",
1537 +                                        "-g0",
1538 +                                        "-fno-reorder-blocks",
1539 +                                        "-fno-optimize-sibling-calls",
1540 +                                );
1541                                  OTHER_LDFLAGS = (
1542                                          "-framework",
1543                                          Foundation,
# Line 1466 | Line 1545
1545                                          AppKit,
1546                                  );
1547                                  PREBINDING = NO;
1548 +                                PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO;
1549                                  PRODUCT_NAME = "basic-dyngen-ops";
1550                                  ZERO_LINK = NO;
1551                          };
# Line 1515 | Line 1595
1595                          isa = XCBuildConfiguration;
1596                          buildSettings = {
1597                                  ALWAYS_SEARCH_USER_PATHS = NO;
1598 +                                ARCHS = "$(ARCHS_STANDARD_64_BIT)";
1599                                  COPY_PHASE_STRIP = YES;
1600                                  DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
1601                                  GCC_ENABLE_FIX_AND_CONTINUE = NO;
1602                                  GCC_MODEL_TUNING = G5;
1603                                  GCC_PRECOMPILE_PREFIX_HEADER = YES;
1604 <                                GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/AppKit.framework/Headers/AppKit.h";
1604 >                                GCC_PREFIX_HEADER = "";
1605 >                                HEADER_SEARCH_PATHS = (
1606 >                                        ../kpx_cpu/src,
1607 >                                        ../kpx_cpu/include,
1608 >                                );
1609                                  INSTALL_PATH = /usr/local/lib;
1610 +                                OTHER_CFLAGS = (
1611 +                                        "-mdynamic-no-pic",
1612 +                                        "-fomit-frame-pointer",
1613 +                                        "-fno-align-functions",
1614 +                                        "-finline-functions",
1615 +                                        "-finline-limit=10000",
1616 +                                        "-fno-exceptions",
1617 +                                        "-g0",
1618 +                                        "-fno-reorder-blocks",
1619 +                                        "-fno-optimize-sibling-calls",
1620 +                                );
1621                                  OTHER_LDFLAGS = (
1622                                          "-framework",
1623                                          Foundation,

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines