5 - Apple Developer Tools
7 There are two ways to build SOPE on MacOSX:
8 a) build using gnustep-make
9 b) build using Xcode >= 2.4
11 Option a) is usually used when you build SOPE for use with OGo, while b)
12 is more appropriate for SOPE:X applications or other interested
13 3rd parties which already have existing Xcode projects.
16 Building using gstep-make:
17 ==========================
19 For the build just enter:
23 make -s debug=yes install
24 if you build with debug information.
30 For the Xcode build to succeed it is imperative to have everything built
31 in a central location. This can be achieved by navigating to:
33 Xcode -> Preferences -> Building
36 "Place Build Products in:" [x] Customized location:
38 The location itself is arbitrary, mine is: "/Local/BuildArea".
41 The Xcode build comes in two variants, one for development and the other
47 Development usually means you're happily hacking away at your pet
48 projects and sometimes want to update the SOPE frameworks. For this purpose
49 use the "all" target and the accompanied "Development" build style. Later,
50 you can narrow the target down to something more specific. For development
51 we assume the destination for frameworks to be /Library/Frameworks.
52 Once you are done building all the frameworks the loader commands of the
53 frameworks will have that destination path built in. In order to use the
54 frameworks you either have to install them (by copying them manually to
55 their intended destination) or to prepare symlinks from
56 /Library/Frameworks to the place where the built products
57 are. I usually have symlinks from /Library/Frameworks to /Local/BuildArea
58 (see above) for each of the products.
60 Also the following products are expected to be in the following locations:
61 *.sax -> /Library/SaxDrivers
62 *.sxp -> /Library/SoProducts
64 Either copy them to the appropriate places or symlink them
71 Deployment in our terms means you want to copy all required SOPE products
72 into an application's app wrapper. For this step all frameworks need to be
73 built in a special fashion, as the "install_name" of the frameworks needs
74 to be prepared to point to a relative path in the app wrapper. The
75 situation is even more complicated as all frameworks during linking store
76 the "install names" of other frameworks in their mach loader commands. In
77 order for this step not to break we need to set up an environment which is
78 clearly separated from the Development environment. I chose to use
79 $(USER_LIBRARY_DIR)/EmbeddedFrameworks
80 as the default destination for these builds. In order for your application
81 to easily pick up the built products and copy them into its app wrapper
82 this location needs to be fixed and easily accessible. Note that on my
83 system ~/Library/EmbeddedFrameworks is a symlink to
84 /Library/EmbeddedFrameworks so even if you don't like the location at all
85 it's very easy to point it to someplace else. As soon as you have set this
86 up you can use the "Wrapper Contents" target with the accompanied
87 "Wrapper" build style to build all wrapper contents in the appropriate
88 fashion. When you're done you can copy all the wrapper products into your
89 application's wrapper. The expected destination is the "Frameworks"
90 directory in the wrappers "Contents" directory. For a complete list of
91 what you need to copy into your application's wrapper see the
92 "Direct Dependencies" of all "Wrapper Contents" targets in all SOPE
98 For Deployment purposes, the SOPE umbrella framework comes in pretty
99 handy. If you use it in conjunction with the "Wrapper" build style, it
101 $(USER_LIBRARY_DIR)/EmbeddedFrameworks/Wrapper/SOPE.framework
102 and can be copied into your application's app wrapper without further
103 adjustments. It contains all SOPE frameworks and also guarantees that
104 all loader commands of the frameworks and SaxDriver bundles will have been
105 fixed to be relative to the SOPE.framework umbrella.
111 NOTE: AS OF MAC OS X 10.5, PREBINDING IS DEPRECATED.
112 The following is left here as a reference, only.
114 General technical information about prebinding is available from Apple at
115 http://developer.apple.com/documentation/Performance/Conceptual/LaunchTime/Tasks/Prebinding.html#//apple_ref/doc/uid/20001858.
117 OGo frameworks currently use the range from 0xC0000000 to 0xCFFFFFFF.
119 Any questions and feedback regarding our use of this range should go to
120 Marcus Mueller <znek@mulle-kybernetik.com>.