Subversion Repositories filter_foundry

Rev

Rev 13 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

  1. # This file is part of "Filter Foundry", a filter plugin for Adobe Photoshop
  2. # Copyright (C) 2003-5 Toby Thain, toby@telegraphics.com.au
  3.  
  4. # This program is free software; you can redistribute it and/or modify
  5. # it under the terms of the GNU General Public License as published by  
  6. # the Free Software Foundation; either version 2 of the License, or
  7. # (at your option) any later version.
  8.  
  9. # This program is distributed in the hope that it will be useful,
  10. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12. # GNU General Public License for more details.
  13.  
  14. # You should have received a copy of the GNU General Public License  
  15. # along with this program; if not, write to the Free Software
  16. # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  17.  
  18. ## MPW Makefile
  19.  
  20. EXEC = FilterFoundry
  21.  
  22. EXEC_UNI = :dist:{EXEC}
  23.  
  24. # Macintosh type/creator code for plugin file
  25. PLUGINTYPE = 8BFM
  26. PLUGINCREATOR = 8BIM
  27. FILETYPE = -t ¶'{PLUGINTYPE}¶' -c ¶'{PLUGINCREATOR}¶'
  28.  
  29. # variables controlling fat build
  30. PLUGIN68K = #68k.rsrc # uncomment this VALUE (after =) to build 68K (fat)
  31. BUILD68K = #-d BUILD68K # uncomment this VALUE (after =) to build 68K (fat)
  32.  
  33. # these two variables reflect my personal directory layout
  34. # and are not used by distribution
  35. COMMONA = ::common:adobeplugin:
  36. COMMONT = ::common:tt:
  37.  
  38. # where the Photoshop API header files are located
  39. PSAPI = ::PhotoshopAPI:
  40. PSHEADERS = {PSAPI}Photoshop:,{PSAPI}Pica_sp:,{PSAPI}Resources:
  41. REZHEADERS = -i {PSAPI}Photoshop: -i {PSAPI}Resources:
  42.  
  43. # list object files in project
  44. # each kind of object file (Classic, Carbon, 68K) has its own list,
  45. # of the same series of input files, but with the respective extension (.cl.x, .ca.x, .o) to differentiate
  46. # "implicit" rules are used to build these object files from corresponding .c source; see below
  47.  
  48. OBJ_CLASSIC = main.cl.x ui_mac.cl.x ui.cl.x ui_build.cl.x ¶
  49.         preview.cl.x read.cl.x save.cl.x make_mac.cl.x load_mac.cl.x make.cl.x scripting.cl.x ¶
  50.         parser.cl.x lexer.cl.x node.cl.x symtab.cl.x funcs.cl.x process.cl.x trigtab.cl.x ¶
  51.         {COMMONT}dbg_mac.cl.x {COMMONT}str.cl.x {COMMONT}ui_compat_mac.cl.x ¶
  52.         {COMMONT}choosefile_nav.cl.x {COMMONT}sprintf_tiny.cl.x ¶
  53.         ::MoreFiles:Sources:MoreFilesExtras.cl.x ¶
  54.         ::MoreFiles:Sources:MoreFiles.cl.x ¶
  55.         ::MoreFiles:Sources:MoreDesktopMgr.cl.x ¶
  56.         ::MoreFiles:Sources:FileCopy.cl.x
  57.  
  58. OBJ_CARBON =  main.ca.x ui_mac.ca.x ui.ca.x ui_build.ca.x ¶
  59.         preview.ca.x read.ca.x save.ca.x make_mac.ca.x load_mac.ca.x make.ca.x scripting.ca.x ¶
  60.         parser.ca.x lexer.ca.x node.ca.x symtab.ca.x funcs.ca.x process.ca.x trigtab.ca.x ¶
  61.         {COMMONT}dbg_mac.ca.x {COMMONT}str.ca.x {COMMONT}ui_compat_mac.ca.x ¶
  62.         {COMMONT}choosefile_nav.ca.x {COMMONT}sprintf_tiny.ca.x ¶
  63.         ::MoreFiles:Sources:MoreFilesExtras.ca.x ¶
  64.         ::MoreFiles:Sources:MoreFiles.ca.x ¶
  65.         ::MoreFiles:Sources:MoreDesktopMgr.ca.x ¶
  66.         ::MoreFiles:Sources:FileCopy.ca.x
  67.  
  68. OBJ_68K = main.68k.o #{COMMONA}dbg_mac.o {COMMONT}str.o {COMMONT}sprintf_tiny.o
  69. REZFILES = ui_mac.r scripting.r
  70.  
  71. # this is a hack to work around a missing UNIX include
  72. 'sys/cdefs.h' Ä FilterFoundry.make
  73.         echo '#define __IDSTRING(a,b)' > 'sys/cdefs.h'
  74.         echo '#define __P(protos)     protos          /* full-blown ANSI C */' >> 'sys/cdefs.h'
  75.  
  76. parser.c Ä parser.y
  77.         echo "parser.c is out of date; in UNIX, 'make parser.c' before retrying MPW build"
  78. lexer.c Ä lexer.l
  79.         echo "lexer.c is out of date; in UNIX, 'make lexer.c' before retrying MPW build"
  80.  
  81. parser.cl.x ÄÄ 'sys/cdefs.h'
  82. parser.ca.x ÄÄ 'sys/cdefs.h'
  83.  
  84. funcs.cl.x ÄÄ parser.c
  85. funcs.ca.x ÄÄ parser.c
  86. lexer.cl.x ÄÄ parser.c
  87. lexer.ca.x ÄÄ parser.c
  88. node.cl.x ÄÄ parser.c
  89. node.ca.x ÄÄ parser.c
  90. preview.cl.x ÄÄ parser.c
  91. preview.ca.x ÄÄ parser.c
  92. ui.cl.x ÄÄ parser.c
  93. ui.ca.x ÄÄ parser.c
  94.  
  95. # look for include files in these directories
  96. ACCESSPATHS = -i :,{PSHEADERS},"{COMMONT}","{COMMONA}",::MoreFiles:CHeaders:,::MoreFiles:Sources:
  97.  
  98. # executable files to build (the Classic executable will be a fat binary containing both PPC and 68K code)
  99. EXEC_CLASSIC = :debug:{EXEC}.classic
  100. EXEC_CARBON = :debug:{EXEC}.carbon
  101.  
  102. # build "universal" plugin with both Classic and Carbon binaries in one file
  103. {EXEC_UNI} ÄÄ {EXEC_CARBON} {EXEC_CLASSIC} universal.r pipl_common.r version.h
  104.         catenate {EXEC_CARBON} {EXEC_CLASSIC} > temp && duplicate -y -d temp {EXEC_UNI} # copy just data fork, without junk resources
  105.         ls -x b {EXEC_CARBON} {EXEC_CLASSIC} > temp
  106.         target temp
  107.         find ¥
  108.         find /[0-9]+/ && set CARBON_LENGTH `catenate {target}.¤`
  109.         find /[0-9]+/ && set CLASSIC_LENGTH `catenate {target}.¤`
  110.         close
  111.         Rez universal.r -o {Targ} {FILETYPE} {REZHEADERS} {REZOPTS}  ¶
  112.                 -d CARBON_LENGTH={CARBON_LENGTH} -d CLASSIC_LENGTH={CLASSIC_LENGTH}
  113.  
  114. {EXEC} Ä {EXEC_UNI}
  115.         files -x brtc {EXEC_UNI}
  116.  
  117. # libraries linked with project
  118. LIBS_CLASSIC =
  119.                 "{SharedLibraries}InterfaceLib"
  120.                 "{SharedLibraries}StdCLib"
  121.                 "{SharedLibraries}MathLib"
  122.                 "{SharedLibraries}NavigationLib"
  123.                 "{SharedLibraries}AppearanceLib"
  124.                 "{SharedLibraries}WindowsLib"
  125.                 "{SharedLibraries}ControlsLib"
  126.                 "{PPCLibraries}StdCRuntime.o"
  127.                 "{PPCLibraries}PPCCRuntime.o"
  128.                 #"{PPCLibraries}PPCToolLibs.o" ¶
  129.                 #"{PPCLibraries}"CarbonAccessors.o
  130.  
  131. LIBS_CARBON =
  132.                 "{SharedLibraries}CarbonLib"
  133.                 "{SharedLibraries}StdCLib"
  134.                 "{PPCLibraries}PPCCRuntime.o"
  135.  
  136. LIBS_68K =
  137.                 "{Libraries}MathLib.o"
  138.                 #"{CLibraries}Complex.o" ¶
  139.                 "{CLibraries}StdCLib.o"
  140.                 "{Libraries}MacRuntime.o"
  141.                 #"{Libraries}IntEnv.o" ¶
  142.                 #"{Libraries}ToolLibs.o" ¶
  143.                 "{Libraries}Interface.o"
  144.  
  145. ### little below should need to change ###
  146.  
  147. COPT = -tb on -opt speed -d MAC_ENV {ACCESSPATHS} -proto strict -w 2,35
  148.         -d YY_USE_PROTOS #-typecheck relaxed -w 2,17,29,35
  149.        
  150. PPCLINKOPTS = -t {PLUGINTYPE} -c {PLUGINCREATOR} -m main
  151. REZOPTS = -a -s : -d SystemSevenOrLater=1
  152.  
  153. # implicit build rules for each variety of object file
  154. .ca.x Ä .c # Carbon PowerPC object
  155.         mrc {depdir}{default}.c -o {targ} {copt} -d TARGET_CARBON
  156. .cl.x Ä .c # Classic PowerPC object
  157.         mrc {depdir}{default}.c -o {targ} {copt}
  158. .68k.o Ä .c # 68K object
  159.         sc {depdir}{default}.c -o {targ} -b {copt}
  160.  
  161. {EXEC_CLASSIC} ÄÄ {OBJ_CLASSIC}
  162.         PPCLink -o {Targ} {PPCLINKOPTS} {OBJ_CLASSIC} {LIBS_CLASSIC}
  163. {EXEC_CARBON} ÄÄ {OBJ_CARBON}
  164.         PPCLink -o {Targ} {PPCLINKOPTS} -d {OBJ_CARBON} {LIBS_CARBON}
  165.  
  166. # put 68K code resource in intermediate file
  167. 68k.rsrc ÄÄ {OBJ_68K}
  168.         Link -o {TARG} -t 'rsrc' -c 'RSED' -sg {EXEC} -rt {PLUGINTYPE}=16000 -m MAIN {OBJ_68K} {LIBS_68K}
  169.         rezdet -l {targ}
  170.  
  171. {EXEC_CLASSIC} ÄÄ classic.r pipl_common.r version.h {PLUGIN68K}
  172.         Rez classic.r -o {Targ} {FILETYPE} {REZHEADERS} {REZOPTS}  {BUILD68K}
  173. {EXEC_CARBON} ÄÄ carbon.r pipl_common.r version.h
  174.         Rez carbon.r -o {Targ} {FILETYPE} {REZHEADERS} {REZOPTS}
  175.  
  176. {EXEC_CLASSIC} ÄÄ {REZFILES} ui.h version.h
  177.         Rez {REZFILES} -o {Targ} {FILETYPE} {REZHEADERS} {REZOPTS}
  178. {EXEC_CARBON} ÄÄ {REZFILES} ui.h version.h
  179.         Rez {REZFILES} -o {Targ} {FILETYPE} {REZHEADERS} {REZOPTS}
  180. {EXEC_UNI} ÄÄ {REZFILES} ui.h version.h
  181.         Rez {REZFILES} -o {Targ} {FILETYPE} {REZHEADERS} {REZOPTS}
  182.