Subversion Repositories filter_foundry

Rev

Rev 13 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 toby 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}