|
14 | 14 | 0D354FEF2551C249009178D1 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0D354FEE2551C249009178D1 /* Cocoa.framework */; }; |
15 | 15 | 0D7B44A82555E01500CBC44B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0D7B44A72555E01500CBC44B /* Foundation.framework */; }; |
16 | 16 | 0D7B44DA2556C84100CBC44B /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D354FD72551BFBD009178D1 /* main.m */; }; |
| 17 | +{%- if cookiecutter.use_framework %} |
17 | 18 | 6060E7722AF0B40500C04AE0 /* Python.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6060E76F2AF0B14D00C04AE0 /* Python.xcframework */; }; |
18 | 19 | 6060E7732AF0B40500C04AE0 /* Python.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6060E76F2AF0B14D00C04AE0 /* Python.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; |
| 20 | +{%- else %} |
| 21 | + AA0000022AF0B40500C04AE0 /* libpython{{ cookiecutter.python_version|py_tag }}.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = AA0000012AF0B14D00C04AE0 /* libpython{{ cookiecutter.python_version|py_tag }}.dylib */; }; |
| 22 | +{%- endif %} |
19 | 23 | /* End PBXBuildFile section */ |
20 | 24 |
|
21 | 25 | /* Begin PBXCopyFilesBuildPhase section */ |
|
29 | 33 | name = "Embed Foundation Extensions"; |
30 | 34 | runOnlyForDeploymentPostprocessing = 0; |
31 | 35 | }; |
| 36 | +{%- if cookiecutter.use_framework %} |
32 | 37 | 6060E7742AF0B40500C04AE0 /* Embed Frameworks */ = { |
33 | 38 | isa = PBXCopyFilesBuildPhase; |
34 | 39 | buildActionMask = 2147483647; |
|
40 | 45 | name = "Embed Frameworks"; |
41 | 46 | runOnlyForDeploymentPostprocessing = 0; |
42 | 47 | }; |
| 48 | +{%- endif %} |
43 | 49 | /* End PBXCopyFilesBuildPhase section */ |
44 | 50 |
|
45 | 51 | /* Begin PBXFileReference section */ |
|
53 | 59 | 0D354FE52551C1E1009178D1 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; }; |
54 | 60 | 0D354FEE2551C249009178D1 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; |
55 | 61 | 0D7B44A72555E01500CBC44B /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; |
| 62 | +{%- if cookiecutter.use_framework %} |
56 | 63 | 6060E76F2AF0B14D00C04AE0 /* Python.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = Python.xcframework; sourceTree = "<group>"; }; |
| 64 | +{%- else %} |
| 65 | + AA0000012AF0B14D00C04AE0 /* libpython{{ cookiecutter.python_version|py_tag }}.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libpython{{ cookiecutter.python_version|py_tag }}.dylib; path = Python/lib/libpython{{ cookiecutter.python_version|py_tag }}.dylib; sourceTree = "<group>"; }; |
| 66 | +{%- endif %} |
57 | 67 | /* End PBXFileReference section */ |
58 | 68 |
|
59 | 69 | /* Begin PBXFrameworksBuildPhase section */ |
|
64 | 74 | 0D354FE62551C1E1009178D1 /* AppKit.framework in Frameworks */, |
65 | 75 | 0D354FEF2551C249009178D1 /* Cocoa.framework in Frameworks */, |
66 | 76 | 0D7B44A82555E01500CBC44B /* Foundation.framework in Frameworks */, |
| 77 | +{%- if cookiecutter.use_framework %} |
67 | 78 | 6060E7722AF0B40500C04AE0 /* Python.xcframework in Frameworks */, |
| 79 | +{%- else %} |
| 80 | + AA0000022AF0B40500C04AE0 /* libpython{{ cookiecutter.python_version|py_tag }}.dylib in Frameworks */, |
| 81 | +{%- endif %} |
68 | 82 | ); |
69 | 83 | runOnlyForDeploymentPostprocessing = 0; |
70 | 84 | }; |
|
115 | 129 | 60A04BBB28AF5E1000DAA9E5 /* Support */ = { |
116 | 130 | isa = PBXGroup; |
117 | 131 | children = ( |
| 132 | +{%- if cookiecutter.use_framework %} |
118 | 133 | 6060E76F2AF0B14D00C04AE0 /* Python.xcframework */, |
| 134 | +{%- else %} |
| 135 | + AA0000012AF0B14D00C04AE0 /* libpython{{ cookiecutter.python_version|py_tag }}.dylib */, |
| 136 | +{%- endif %} |
119 | 137 | ); |
120 | 138 | path = Support; |
121 | 139 | sourceTree = "<group>"; |
|
131 | 149 | 0D354FC52551BFBA009178D1 /* Frameworks */, |
132 | 150 | 0D354FC62551BFBA009178D1 /* Resources */, |
133 | 151 | 0D7B44EB2556C8B800CBC44B /* Embed Foundation Extensions */, |
| 152 | +{%- if cookiecutter.use_framework %} |
134 | 153 | 6060E7742AF0B40500C04AE0 /* Embed Frameworks */, |
| 154 | +{%- else %} |
| 155 | + AA0000032AF0B40500C04AE0 /* Embed Python lib */, |
| 156 | +{%- endif %} |
135 | 157 | 60A04BC128AF640400DAA9E5 /* Sign Python Binary Modules */, |
136 | 158 | ); |
137 | 159 | buildRules = ( |
|
150 | 172 | isa = PBXProject; |
151 | 173 | attributes = { |
152 | 174 | BuildIndependentTargetsInParallel = YES; |
153 | | - LastUpgradeCheck = 1540; |
| 175 | + LastUpgradeCheck = 2660; |
154 | 176 | ORGANIZATIONNAME = "{{ cookiecutter.author }}"; |
155 | 177 | TargetAttributes = { |
156 | 178 | 0D354FC72551BFBA009178D1 = { |
|
190 | 212 | /* End PBXResourcesBuildPhase section */ |
191 | 213 |
|
192 | 214 | /* Begin PBXShellScriptBuildPhase section */ |
| 215 | +{%- if not cookiecutter.use_framework %} |
| 216 | + AA0000032AF0B40500C04AE0 /* Embed Python lib */ = { |
| 217 | + isa = PBXShellScriptBuildPhase; |
| 218 | + alwaysOutOfDate = 1; |
| 219 | + buildActionMask = 2147483647; |
| 220 | + files = ( |
| 221 | + ); |
| 222 | + inputFileListPaths = ( |
| 223 | + ); |
| 224 | + inputPaths = ( |
| 225 | + ); |
| 226 | + name = "Embed Python lib"; |
| 227 | + outputFileListPaths = ( |
| 228 | + ); |
| 229 | + outputPaths = ( |
| 230 | + ); |
| 231 | + runOnlyForDeploymentPostprocessing = 0; |
| 232 | + shellPath = /bin/sh; |
| 233 | + shellScript = "set -e\nDEST=\"$BUILT_PRODUCTS_DIR/$UNLOCALIZED_RESOURCES_FOLDER_PATH/python\"\necho \"Embedding Python lib into $DEST\"\nmkdir -p \"$DEST\"\n# Copy the entire lib/ tree, preserving symlinks. Exclude static archives\n# and pkgconfig metadata that are not needed at runtime.\nrsync -a --delete --copy-unsafe-links \\\n --exclude='*.a' \\\n --exclude='pkgconfig' \\\n \"$PROJECT_DIR/Support/Python/lib/\" \"$DEST/lib/\"\n"; |
| 234 | + }; |
| 235 | +{%- endif %} |
193 | 236 | 60A04BC128AF640400DAA9E5 /* Sign Python Binary Modules */ = { |
194 | 237 | isa = PBXShellScriptBuildPhase; |
195 | 238 | alwaysOutOfDate = 1; |
|
286 | 329 | ONLY_ACTIVE_ARCH = YES; |
287 | 330 | PRODUCT_NAME = "{{ cookiecutter.formal_name }}"; |
288 | 331 | SDKROOT = macosx; |
| 332 | + STRING_CATALOG_GENERATE_SYMBOLS = YES; |
289 | 333 | }; |
290 | 334 | name = Debug; |
291 | 335 | }; |
|
345 | 389 | MTL_FAST_MATH = YES; |
346 | 390 | PRODUCT_NAME = "{{ cookiecutter.formal_name }}"; |
347 | 391 | SDKROOT = macosx; |
| 392 | + STRING_CATALOG_GENERATE_SYMBOLS = YES; |
348 | 393 | }; |
349 | 394 | name = Release; |
350 | 395 | }; |
|
363 | 408 | COMBINE_HIDPI_IMAGES = YES; |
364 | 409 | DEAD_CODE_STRIPPING = YES; |
365 | 410 | ENABLE_HARDENED_RUNTIME = YES; |
| 411 | +{%- if cookiecutter.use_framework %} |
366 | 412 | FRAMEWORK_SEARCH_PATHS = ( |
367 | 413 | "$(inherited)", |
368 | 414 | "\"$(PROJECT_DIR)/Support\"", |
369 | 415 | ); |
| 416 | +{%- else %} |
| 417 | + FRAMEWORK_SEARCH_PATHS = "$(inherited)"; |
| 418 | +{%- endif %} |
370 | 419 | GCC_C_LANGUAGE_STANDARD = gnu99; |
| 420 | +{%- if cookiecutter.use_framework %} |
371 | 421 | HEADER_SEARCH_PATHS = "\"$(BUILT_PRODUCTS_DIR)/Python.framework/Headers\""; |
| 422 | +{%- else %} |
| 423 | + HEADER_SEARCH_PATHS = "\"$(PROJECT_DIR)/Support/Python/include/python{{ cookiecutter.python_version|py_tag }}\""; |
| 424 | +{%- endif %} |
372 | 425 | INFOPLIST_FILE = "{{ cookiecutter.class_name }}/Info.plist"; |
| 426 | +{%- if cookiecutter.use_framework %} |
373 | 427 | LD_RUNPATH_SEARCH_PATHS = ( |
374 | 428 | "$(inherited)", |
375 | 429 | "@executable_path/../Frameworks", |
376 | 430 | ); |
| 431 | +{%- else %} |
| 432 | + LD_RUNPATH_SEARCH_PATHS = ( |
| 433 | + "$(inherited)", |
| 434 | + "@executable_path/../Frameworks", |
| 435 | + "@executable_path/../Resources/python/lib", |
| 436 | + ); |
| 437 | + LIBRARY_SEARCH_PATHS = ( |
| 438 | + "$(inherited)", |
| 439 | + "\"$(PROJECT_DIR)/Support/Python/lib\"", |
| 440 | + ); |
| 441 | +{%- endif %} |
377 | 442 | MACOSX_DEPLOYMENT_TARGET = {{ cookiecutter.min_os_version }}; |
378 | 443 | PRODUCT_BUNDLE_IDENTIFIER = "{{ cookiecutter.bundle }}.{{ cookiecutter.app_name }}"; |
379 | 444 | PROVISIONING_PROFILE_SPECIFIER = ""; |
|
396 | 461 | DEAD_CODE_STRIPPING = YES; |
397 | 462 | ENABLE_HARDENED_RUNTIME = YES; |
398 | 463 | ENABLE_TESTABILITY = YES; |
| 464 | +{%- if cookiecutter.use_framework %} |
399 | 465 | FRAMEWORK_SEARCH_PATHS = ( |
400 | 466 | "$(inherited)", |
401 | 467 | "\"$(PROJECT_DIR)/Support\"", |
402 | 468 | ); |
| 469 | +{%- else %} |
| 470 | + FRAMEWORK_SEARCH_PATHS = "$(inherited)"; |
| 471 | +{%- endif %} |
403 | 472 | GCC_C_LANGUAGE_STANDARD = gnu99; |
| 473 | +{%- if cookiecutter.use_framework %} |
404 | 474 | HEADER_SEARCH_PATHS = "\"$(BUILT_PRODUCTS_DIR)/Python.framework/Headers\""; |
| 475 | +{%- else %} |
| 476 | + HEADER_SEARCH_PATHS = "\"$(PROJECT_DIR)/Support/Python/include/python{{ cookiecutter.python_version|py_tag }}\""; |
| 477 | +{%- endif %} |
405 | 478 | INFOPLIST_FILE = "{{ cookiecutter.class_name }}/Info.plist"; |
| 479 | +{%- if cookiecutter.use_framework %} |
406 | 480 | LD_RUNPATH_SEARCH_PATHS = ( |
407 | 481 | "$(inherited)", |
408 | 482 | "@executable_path/../Frameworks", |
409 | 483 | ); |
| 484 | +{%- else %} |
| 485 | + LD_RUNPATH_SEARCH_PATHS = ( |
| 486 | + "$(inherited)", |
| 487 | + "@executable_path/../Frameworks", |
| 488 | + "@executable_path/../Resources/python/lib", |
| 489 | + ); |
| 490 | + LIBRARY_SEARCH_PATHS = ( |
| 491 | + "$(inherited)", |
| 492 | + "\"$(PROJECT_DIR)/Support/Python/lib\"", |
| 493 | + ); |
| 494 | +{%- endif %} |
410 | 495 | MACOSX_DEPLOYMENT_TARGET = {{ cookiecutter.min_os_version }}; |
411 | 496 | PRODUCT_BUNDLE_IDENTIFIER = "{{ cookiecutter.bundle }}.{{ cookiecutter.app_name }}"; |
412 | 497 | }; |
|
0 commit comments