Subversion Repositories filter_foundry

Rev

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