# This file is part of PSPFormat, a File Format plugin for Adobe Photoshop # Copyright (C) 2003-7 Toby Thain, toby@telegraphics.com.au # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ## MPW Makefile EXEC = PSPFormat EXEC_UNI = :dist:{EXEC} # Macintosh type/creator code for plugin file PLUGINTYPE = 8BIF PLUGINCREATOR = 8BIM FILETYPE = -t ¶'{PLUGINTYPE}¶' -c ¶'{PLUGINCREATOR}¶' # variables controlling fat build PLUGIN68K = #68k.rsrc # uncomment this VALUE (after =) to build 68K (fat) BUILD68K = #-d BUILD68K # uncomment this VALUE (after =) to build 68K (fat) # these variables reflect my personal directory layout # and are not used by distribution COMMONA = ::common:adobeplugin: COMMONT = ::common:tt: ZLIB = ::zlib-1.2.3: # where the Photoshop API header files are located PSAPI = ::PhotoshopAPI: PSHEADERS = {PSAPI}Photoshop:,{PSAPI}Pica_sp:,{PSAPI}Resources: REZHEADERS = -i {PSAPI}Photoshop: -i {PSAPI}Resources: # list object files in project # each kind of object file (Classic, Carbon, 68K) has its own list, # of the same series of input files, but with the respective extension (.cl.x, .ca.x, .o) to differentiate # "implicit" rules are used to build these object files from corresponding .c source; see below ZOBJ = {ZLIB}adler32.cl.x {ZLIB}compress.cl.x {ZLIB}crc32.cl.x ¶ {ZLIB}uncompr.cl.x {ZLIB}deflate.cl.x {ZLIB}trees.cl.x {ZLIB}zutil.cl.x ¶ {ZLIB}inflate.cl.x {ZLIB}inftrees.cl.x {ZLIB}inffast.cl.x OBJ_CLASSIC = main.cl.x read.cl.x write.cl.x estimate.cl.x options.cl.x ¶ ui.cl.x ui_mac.cl.x {COMMONT}ui_compat_mac.cl.x ¶ psp.cl.x psp_rle.cl.x psp_util.cl.x psp_strings.cl.x ¶ {ZOBJ} ¶ {COMMONT}dbg_mac.cl.x {COMMONA}dprintf.cl.x {COMMONT}file_io.cl.x {COMMONT}dlg.cl.x {COMMONT}str.cl.x OBJ_CARBON = main.ca.x read.ca.x write.ca.x estimate.ca.x options.ca.x ¶ ui.ca.x ui_mac.ca.x {COMMONT}ui_compat_mac.ca.x ¶ psp.ca.x psp_rle.ca.x psp_util.ca.x psp_strings.ca.x ¶ {ZOBJ} ¶ {COMMONT}dbg_mac.ca.x {COMMONA}dprintf.ca.x {COMMONT}file_io.ca.x {COMMONT}dlg.ca.x {COMMONT}str.ca.x estimate.cl.x ÄÄ pspformat.h psp.h estimate.ca.x ÄÄ pspformat.h psp.h main.cl.x ÄÄ pspformat.h psp.h main.ca.x ÄÄ pspformat.h psp.h options.cl.x ÄÄ pspformat.h psp.h options.ca.x ÄÄ pspformat.h psp.h read.cl.x ÄÄ pspformat.h psp.h read.ca.x ÄÄ pspformat.h psp.h ui.cl.x ÄÄ pspformat.h psp.h ui.ca.x ÄÄ pspformat.h psp.h ui_mac.cl.x ÄÄ pspformat.h psp.h ui_mac.ca.x ÄÄ pspformat.h psp.h write.cl.x ÄÄ pspformat.h psp.h write.ca.x ÄÄ pspformat.h psp.h psp.cl.x ÄÄ psp.h psp.ca.x ÄÄ psp.h psp_rle.cl.x ÄÄ psp.h psp_rle.ca.x ÄÄ psp.h psp_util.cl.x ÄÄ psp.h psp_util.ca.x ÄÄ psp.h OBJ_68K = # 68K BUILD NOT POSSIBLE IN MPW C, DUE TO GLOBAL VARIABLE USAGE REZFILES = ui_mac.r # look for include files in these directories ACCESSPATHS = -i :,{PSHEADERS},"{COMMONT}","{COMMONA}","{ZLIB}" # executable files to build (the Classic executable will be a fat binary containing both PPC and 68K code) EXEC_CLASSIC = :debug:{EXEC}.classic EXEC_CARBON = :debug:{EXEC}.carbon # build "universal" plugin with both Classic and Carbon binaries in one file {EXEC_UNI} ÄÄ {EXEC_CARBON} {EXEC_CLASSIC} universal.r pipl_common.r version.h catenate {EXEC_CARBON} {EXEC_CLASSIC} > temp && duplicate -y -d temp {EXEC_UNI} # copy just data fork, without junk resources ls -x b {EXEC_CARBON} {EXEC_CLASSIC} > temp target temp find ¥ find /[0-9]+/ && set CARBON_LENGTH `catenate "{target}".¤` find /[0-9]+/ && set CLASSIC_LENGTH `catenate "{target}".¤` close Rez universal.r -o {Targ} {FILETYPE} {REZHEADERS} {REZOPTS} ¶ -d CARBON_LENGTH={CARBON_LENGTH} -d CLASSIC_LENGTH={CLASSIC_LENGTH} {EXEC} Ä {EXEC_UNI} files -x brtc {EXEC_CARBON} {EXEC_CLASSIC} {EXEC_UNI} # libraries linked with project LIBS_CLASSIC = ¶ "{SharedLibraries}InterfaceLib" ¶ "{SharedLibraries}StdCLib" ¶ #"{SharedLibraries}MathLib" ¶ #"{SharedLibraries}NavigationLib" ¶ #"{SharedLibraries}AppearanceLib" ¶ #"{SharedLibraries}WindowsLib" ¶ #"{SharedLibraries}ControlsLib" ¶ "{PPCLibraries}StdCRuntime.o" ¶ "{PPCLibraries}PPCCRuntime.o" ¶ #"{PPCLibraries}PPCToolLibs.o" ¶ #"{PPCLibraries}"CarbonAccessors.o LIBS_CARBON = ¶ "{PPCLibraries}PPCCRuntime.o" ¶ "{SharedLibraries}CarbonLib" ¶ "{PPCLibraries}CarbonStdCLib.o" ¶ "{SharedLibraries}StdCLib" LIBS_68K = ¶ "{Libraries}MathLib.o" ¶ #"{CLibraries}Complex.o" ¶ "{CLibraries}StdCLib.o" ¶ "{Libraries}MacRuntime.o" ¶ #"{Libraries}IntEnv.o" ¶ #"{Libraries}ToolLibs.o" ¶ "{Libraries}Interface.o" ### little below should need to change ### COPT = -d MAC_ENV -d STDC -d NO_vsnprintf ¶ {ACCESSPATHS} -opt speed -tb on -proto strict -w 2,35 #-typecheck relaxed -w 2,17,29,35 PPCLINKOPTS = -t {PLUGINTYPE} -c {PLUGINCREATOR} -m PluginMain REZOPTS = -a -s : -d SystemSevenOrLater=1 # implicit build rules for each variety of object file .ca.x Ä .c # Carbon PowerPC object mrc {depdir}{default}.c -o {targ} {copt} -d TARGET_CARBON .cl.x Ä .c # Classic PowerPC object mrc {depdir}{default}.c -o {targ} {copt} .68k.o Ä .c # 68K object sc {depdir}{default}.c -o {targ} {copt} -b -opt all {EXEC_CLASSIC} ÄÄ {OBJ_CLASSIC} PPCLink -o {Targ} {PPCLINKOPTS} {OBJ_CLASSIC} {LIBS_CLASSIC} {EXEC_CARBON} ÄÄ {OBJ_CARBON} PPCLink -o {Targ} {PPCLINKOPTS} -d {OBJ_CARBON} {LIBS_CARBON} # put 68K code resource in intermediate file 68k.rsrc ÄÄ {OBJ_68K} Link -o {TARG} -t 'rsrc' -c 'RSED' -sg {EXEC} -rt {PLUGINTYPE}=16000 -m MAIN {OBJ_68K} {LIBS_68K} rezdet -l {targ} {EXEC_CLASSIC} ÄÄ PiPL_classic.r PiPL_common.r version.h Rez PiPL_classic.r -o {Targ} {FILETYPE} {REZHEADERS} {REZOPTS} {EXEC_CARBON} ÄÄ PiPL_carbon.r PiPL_common.r version.h Rez PiPL_carbon.r -o {Targ} {FILETYPE} {REZHEADERS} {REZOPTS} {EXEC_CLASSIC} ÄÄ {REZFILES} version.h Rez {REZFILES} -o {Targ} {FILETYPE} {REZHEADERS} {REZOPTS} {EXEC_CARBON} ÄÄ {REZFILES} version.h Rez {REZFILES} -o {Targ} {FILETYPE} {REZHEADERS} {REZOPTS} {EXEC_UNI} ÄÄ {REZFILES} version.h Rez {REZFILES} -o {Targ} {FILETYPE} {REZHEADERS} {REZOPTS}