"SfR Fresh" - the SfR Freeware/Shareware Archive

Member "freetype-2.3.7/builds/mac/README" of archive freetype-2.3.7.tar.gz:


As a special service "SfR Fresh" has tried to format the requested source page into HTML format using source code syntax highlighting with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file. That can be also achieved for any archive member file by clicking within an archive contents listing on the first character of the file(path) respectively on the according byte size field.
    1 This folder contains
    2 
    3   * Makefile skeltons for Apple MPW (Macintosh's Programmers Workshop)
    4 
    5   * Python script to generate MPW makefile from skelton
    6 
    7   * Metrowerks CodeWarrior 9.0 project file in XML format
    8 
    9 ------------------------------------------------------------
   10 
   11 1. What is this
   12 ---------------
   13 
   14 Files in this directory are designed to build FreeType
   15 running on classic MacOS. To build FreeType running on
   16 Mac OS X, build as the system is UNIX.
   17 
   18 However, Mac OS X is most useful to manipulate files in
   19 vanilla FreeType to fit classic MacOS.
   20 
   21 The information about MacOS specific API is written in
   22 appendix of this document.
   23 
   24 2. Requirement
   25 --------------
   26 
   27 You can use MPW: a free-charged developer environment
   28 by Apple, or CodeWarrior: a commercial developer
   29 environment by Metrowerks. GCC for MPW and Symantec
   30 "Think C" are not tested at present.
   31 
   32 
   33   2-1. Apple MPW
   34   --------------
   35 
   36   Following C compilers are tested:
   37 
   38       m68k target:	Apple SC  8.9.0d3e1
   39       ppc  target:	Apple MrC 5.0.0d3c1
   40 
   41   The final MPW-GM (official release on 1999/Dec) is too
   42   old and cannot compile FreeType, because bundled C
   43   compilers cannot search header files in sub directories.
   44   Updating by the final MPW-PR (pre-release on 2001/Feb)
   45   is required.
   46 
   47   Required files are downloadable from:
   48 
   49       http://developer.apple.com/tools/mpw-tools/index.html
   50 
   51   Also you can find documents how to update by MPW-PR.
   52 
   53   Python is required to restore MPW makefiles from the
   54   skeltons. Python bundled to Mac OS X is enough. For
   55   classic MacOS, MacPython is available:
   56 
   57       http://homepages.cwi.nl/~jack/macpython/
   58 
   59   MPW requires all files are typed by resource fork.
   60   ResEdit bundled to MPW is enough. In Mac OS X,
   61   /Developer/Tools/SetFile of DevTool is useful to
   62   manipulate from commandline.
   63 
   64   2-2. Metrowerks CodeWarriror
   65   ----------------------------
   66 
   67   XML project file is generated and tested by
   68   CodeWarriror 9.0.  Older versions are not tested
   69   at all. At present, static library for ppc target
   70   is available in the project file.
   71 
   72 
   73 3. How to build
   74 ---------------
   75 
   76   3-1. Apple MPW
   77   --------------
   78   Detailed building procedure by Apple MPW is
   79   described in following.
   80 
   81     3-1-1. Generate MPW makefiles from the skeltons
   82     ------------------------------------------------
   83 
   84     Here are 4 skeltons for following targets are
   85     included.
   86 
   87     - FreeType.m68k_far.make.txt
   88       Ancient 32bit binary executable format for
   89       m68k MacOS: System 6, with 32bit addressing
   90       mode (far-pointer-model) So-called "Toolbox"
   91       API is used.
   92 
   93     - FreeType.m68k_cfm.make.txt
   94       CFM binary executable format for m68k MacOS:
   95       System 7. So-called "Toolbox" API is used.
   96 
   97     - FreeType.ppc_classic.make.txt
   98       CFM binary executable format for ppc MacOS:
   99       System 7, MacOS 8, MacOS 9. So-called "Toolbox"
  100       API is used.
  101 
  102     - FreeType.ppc_classic.make.txt
  103       CFM binary executable format for ppc MacOS:
  104       MacOS 9. Carbon API is used.
  105 
  106     At present, static library is only supported,
  107     although targets except of m68k_far are capable
  108     to use shared library.
  109 
  110     MPW makefile syntax uses 8bit characters. To keep
  111     from violating them during version control, here
  112     we store skeltons in pure ASCII format. You must
  113     generate MPW makefile by Python script ascii2mpw.py.
  114 
  115     In Mac OS X terminal, you can convert as:
  116 
  117 	python builds/mac/ascii2mpw.py \
  118 		< builds/mac/FreeType.m68k_far.make.txt \
  119 		> FreeType.m68k_far.make
  120 
  121     The skeltons are designed to use in the top
  122     directory where there are builds, include, src etc.
  123     You must name the generated MPW makefile by removing
  124     ".txt" from source skelton name.
  125 
  126     3-1-2. Add resource forks to related files
  127     ------------------------------------------
  128 
  129     MPW's Make and C compilers cannot recognize files
  130     without resource fork. You have to add resource
  131     fork to the files that MPW uses. In Mac OS X
  132     terminal of the system, you can do as:
  133 
  134 	find . -name '*.[ch]' -exec \
  135 		/Developer/Tools/SetFile -a l -c "MPS " -t TEXT \{\} \;
  136 
  137 	find . -name '*.make' -exec \
  138 		/Developer/Tools/SetFile -a l -c "MPS " -t TEXT \{\} \;
  139 
  140 
  141     3-1-3. Open MPW shell and build
  142     -------------------------------
  143 
  144     Open MPW shell and go to the top directory that
  145     FreeType sources are extracted (MPW makefile must
  146     be located in there), from "Set Directory" in
  147     "Directory" menu.
  148 
  149     Choose "Build" from "Build" menu, and type the
  150     name of project by removing ".make" from MPW
  151     makefile, as: FreeType.m68k_far
  152 
  153     If building is successfully finished, you can find
  154     built library in objs/ directory.
  155 
  156 
  157   3-2. Metrowerks CodeWarrior
  158   ---------------------------
  159 
  160   Detailed building procedure by Metrowerks
  161   CodeWarrior (CW) 9.0 is described in following.
  162 
  163     3-2-1. Import XML project file
  164     ------------------------------
  165 
  166     CW XML project file is not ready for double-
  167     click. Start CodeWarrior IDE, and choose
  168     "Import project" in "File" menu. Choose XML
  169     project file: builds/mac/ftlib.prj.xml.
  170     In next, you will be asked where to save CW
  171     native project file: you must choose
  172     "builds/mac/ftlib.prj". The project file is
  173     designed with relative path from there. After
  174     CW native project file is generated, it is
  175     automatically loaded, small project window
  176     titled "ftlib.prj" is displayed.
  177 
  178     3-2-2. Building
  179     ---------------
  180     Choose "Make" from "Project" menu. If building
  181     is successfully finished, you can find built
  182     library at objs/FreeTypeLib.
  183 
  184 4. TODO
  185 -------
  186 
  187   4-1. All modules should be included
  188   -----------------------------------
  189 
  190   At present, MPW makefiles and CW project file are
  191   just updated versions of these by Leonard. Some
  192   modules are added after the last maintenance, they
  193   are not included.
  194 
  195   4-2. Working test with ftdemos
  196   ------------------------------
  197 
  198   At present, MPW makefiles and CW project file can
  199   build FreeType for classic MacOS. But their working
  200   behaviours are not tested at all. Building ftdemos
  201   for classic MacOS and working test is required.
  202 
  203   4-3. Porting Jam onto MPW
  204   -------------------------
  205 
  206   FreeType uses Jam (and FT-Jam) for unified cross-
  207   platform building tool. At present, Jam is not ported
  208   to MPW. To update classic MacOS support easily,
  209   building by Jam is expected on MPW.
  210 
  211 
  212 APPENDIX I
  213 ----------
  214 
  215   A-1. Framework dependencies
  216   ---------------------------
  217 
  218   src/base/ftmac.c adds two Mac-specific features to
  219   FreeType. These features are based on MacOS libraries.
  220 
  221   * accessing resource-fork font
  222   The fonts for classic MacOS store their graphical data
  223   in resource forks which cannot be accessed via ANSI C
  224   functions. FreeType2 provides functions to handle such
  225   resource fork fonts, they are based on File Manager
  226   framework of MacOS. In addition, HFS and HFS+ file
  227   system driver of Linux is supported. Following
  228   functions are for this purpose.
  229 
  230     FT_New_Face_From_Resource()
  231     FT_New_Face_From_FSSpec()
  232     FT_New_Face_From_FSRef()
  233 
  234   * resolving font name to font file
  235   The font menu of MacOS application prefers font name
  236   written in FOND resource than sfnt resource. FreeType2
  237   provides functions to find font file by name in MacOS
  238   application, they are based on QuickDraw Font Manager
  239   and Apple Type Service framework of MacOS.
  240 
  241     FT_GetFile_From_Mac_Name()
  242     FT_GetFile_From_Mac_ATS_Name()
  243 
  244   Working functions for each MacOS are summarized as
  245   following.
  246 
  247   upto MacOS 6:
  248     not tested (you have to obtain MPW 2.x)
  249 
  250   MacOS 7.x, 8.x, 9.x (without CarbonLib):
  251     FT_GetFile_From_Mac_Name()
  252     FT_New_Face_From_Resource()
  253     FT_New_Face_From_FSSpec()
  254 
  255   MacOS 9.x (with CarbonLib):
  256     FT_GetFile_From_Mac_Name()
  257     FT_New_Face_From_Resource()
  258     FT_New_Face_From_FSSpec()
  259     FT_New_Face_From_FSRef()
  260 
  261   Mac OS X upto 10.4.x:
  262     FT_GetFile_From_Mac_Name()     deprecated
  263     FT_New_Face_From_FSSpec()      deprecated
  264     FT_GetFile_From_Mac_ATS_Name() deprecated?
  265     FT_New_Face_From_FSRef()
  266 
  267   A-2. Deprecated Functions
  268   -------------------------
  269 
  270     A-2-1. FileManager
  271     ------------------
  272 
  273     For convenience to write MacOS application, ftmac.c
  274     provides functions to specify a file by FSSpec and FSRef,
  275     because the file identification pathname had ever been
  276     unrecommended method in MacOS programming.
  277 
  278     Toward to MacOS X 10.4 & 5, Carbon functions using FSSpec
  279     datatype is noticed as deprecated, and recommended to
  280     migrate to FSRef datatype. The big differences of FSRef
  281     against FSSpec are explained in Apple TechNotes 2078.
  282 
  283     http://developer.apple.com/technotes/tn2002/tn2078.html
  284 
  285     - filename length: the max length of file
  286     name of FSRef is 255 chars (it is limit of HFS+),
  287     that of FSSpec is 31 chars (it is limit of HFS).
  288 
  289     - filename encoding: FSSpec is localized by
  290     legacy encoding for each language system,
  291     FSRef is Unicode enabled.
  292 
  293     A-2-2. FontManager
  294     ------------------
  295 
  296     Following functions receive QuickDraw fontname:
  297 
  298       FT_GetFile_From_Mac_Name()
  299 
  300     QuickDraw is deprecated and replaced by Quartz
  301     since Mac OS X 10.4. They are still kept for
  302     backward compatibility. By undefinition of
  303     HAVE_QUICKDRAW in building, you can change these
  304     functions to return FT_Err_Unimplemented always.
  305 
  306     Replacement functions are added for migration.
  307 
  308       FT_GetFile_From_Mac_ATS_Name()
  309 
  310     They are usable on Mac OS X only. On older systems,
  311     these functions return FT_Err_Unimplemented always.
  312 
  313     The detailed incompatibilities and possibility
  314     of FontManager emulation without QuickDraw is
  315     explained in
  316 
  317       http://www.gyve.org/~mpsuzuki/ats_benchmark.html
  318 
  319   A-3. Framework Availabilities
  320   -----------------------------
  321 
  322   The framework of MacOS are often revised, especially
  323   when new format of binary executable is introduced.
  324   Following table is the minimum version of frameworks
  325   to use functions used in FreeType2. The table is
  326   extracted from MPW header files for assembly language.
  327 
  328   *** NOTE ***
  329   The conditional definition of available data type
  330   in MPW compiler is insufficient. You can compile
  331   program using FSRef data type for older systems
  332   (MacOS 7, 8) that don't know FSRef data type.
  333 
  334 
  335                                       +-------------------+-----------------------------+
  336            CPU                        |      mc680x0      |           PowerPC           |
  337                                       +---------+---------+---------+---------+---------+
  338   Binary Executable Format            | Classic | 68K-CFM | CFM     | CFM     | Mach-O  |
  339                                       +---------+---------+---------+---------+---------+
  340        Framework API                  | Toolbox | Toolbox | Toolbox | Carbon  | Carbon  |
  341                                       +---------+---------+---------+---------+---------+
  342 
  343                                       +---------+---------+---------+---------+---------+
  344                                       |    ?(*) |Interface|Interface|CarbonLib|Mac OS X |
  345                                       |         |Lib      |Lib      |         |         |
  346 * Files.h                             +---------+---------+---------+---------+---------+
  347 PBGetFCBInfoSync()                    |    o    | 7.1-    | 7.1-    | 1.0-    |    o    |
  348 FSMakeFSSpec()                        |    o    | 7.1-    | 7.1-    | 1.0-    |    o    |
  349 FSGetForkCBInfo()                     |    o    |   (**)  | 9.0-    | 1.0-    |    o    |
  350 FSpMakeFSRef()                        |    o    |   (**)  | 9.0-    | 1.0-    |    o    |
  351 FSGetCatalogInfo()                    |    o    |   (**)  | 9.0-    | 1.0-    |   -10.3 |
  352 FSPathMakeRef()                       |    x    |    x    |    x    | 1.1-    |   -10.3 |
  353                                       +---------+---------+---------+---------+---------+
  354 
  355                                       +---------+---------+---------+---------+---------+
  356                                       |    ?(*) |Font     |Font     |CarbonLib|Mac OS X |
  357                                       |         |Manager  |Manager  |         |         |
  358 * Fonts.h                             +---------+---------+---------+---------+---------+
  359 FMCreateFontFamilyIterator()          |    x    |    x    | 9.0-    | 1.0-    |   -10.3 |
  360 FMDisposeFontFamilyIterator()         |    x    |    x    | 9.0-    | 1.0-    |   -10.3 |
  361 FMGetNextFontFamily()                 |    x    |    x    | 9.0-    | 1.0-    |   -10.3 |
  362 FMGetFontFamilyName()                 |    x    |    x    | 9.0-    | 1.0-    |   -10.3 |
  363 FMCreateFontFamilyInstanceIterator()  |    x    |    x    | 9.0-    | 1.0-    |   -10.3 |
  364 FMDisposeFontFamilyInstanceIterator() |    x    |    x    | 9.0-    | 1.0-    |   -10.3 |
  365 FMGetNextFontFamilyInstance()         |    x    |    x    | 9.0-    | 1.0-    |   -10.3 |
  366                                       +---------+---------+---------+---------+---------+
  367 
  368                                       +---------+---------+---------+---------+---------+
  369                                       |    -    |    -    |    -    |CarbonLib|Mac OS X |
  370 * ATSFont.h (***)                     +---------+---------+---------+---------+---------+
  371 ATSFontFindFromName()                 |    x    |    x    |    x    |    x    |    o    |
  372 ATSFontGetFileSpecification()         |    x    |    x    |    x    |    x    |    o    |
  373                                       +---------+---------+---------+---------+---------+
  374 
  375     (*)
  376     In the "Classic": the original binary executable
  377     format, these framework functions are directly
  378     transformed to MacOS system call. Therefore, the
  379     exact availability should be checked by running
  380     system.
  381 
  382     (**)
  383     InterfaceLib is bundled to MacOS and its version
  384     is usually equal to MacOS. There's no separate
  385     update for InterfaceLib. It is supposed that
  386     there's no InterfaceLib 9.x for m68k platforms.
  387     In fact, these functions are FSRef dependent.
  388 
  389     (***)
  390     ATSUI framework is available on ATSUnicode 8.5 on
  391     ppc Toolbox CFM, CarbonLib 1.0 too. But its base:
  392     ATS font manager is not published in these versions.
  393 
  394 ------------------------------------------------------------
  395 Last update: 2007-Feb-01, by Alexei Podtelezhnikov.
  396 
  397 Currently maintained by
  398 	suzuki toshiya, <mpsuzuki@hiroshima-u.ac.jp>
  399 Originally prepared by
  400 	Leonard Rosenthol, <leonardr@lazerware.com>
  401 	Just van Rossum, <just@letterror.com>
  402 
  403 This directory is now actively maintained as part of the FreeType Project.