Subversion Repositories filter_foundry

Rev

Rev 69 | Go to most recent revision | Blame | Last modification | View Log | RSS feed

    This file is part of "Filter Foundry", a filter plugin for Adobe Photoshop
    Copyright (C) 2003-5 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


Building the Filter Foundry plugin for Photoshop
------------------------------------------------

Notes on source code
--------------------
Source code, makefiles and IDE projects under GPL license are provided
for MPW (Classic & Carbon PowerPC targets), CodeWarrior 7
(Classic & Carbon PowerPC, Win32, 68K targets) and mingw32 (Win32 target).

A Photoshop SDK is required (available from Adobe Systems, http://www.adobe.com/).
The SDK was also distributed with Photoshop 6.0 and earlier.

The source has been built with SDK 6.0, CS2 and CS3 beta, but older
versions can be used.
(If building with SDK v4, edit 68k.r, carbon.r, classic.r, and PiMI_68k.r
to remove references to "PIResDefines.h", "PiPL.r" and "PiMI.r" and replace
with a single #include "PIGeneral.r"; also remove "fmtCanWriteTransparency"
from PiPL_common.r.)

Before attempting to build, you must edit the makefiles
("FilterFoundry.make" for MPW, "Makefile" for mingw32 or OS X), or change your
CodeWarrior project's access paths, to reflect the SDK's installed location.

In order to build the Carbon plugin with an SDK prior to version 7.0,
it is necessary to edit the SDK file :PhotoshopAPI:Resources:PIPL.r
as follows:
1. find the line "case CodePowerPC:"
2. duplicate the next 15 lines
3. in the copy only, change "case CodePowerPC:" to "case CodeCarbonPowerPC:"
   and change the 5 occurrences of "pwpc" to "ppcb"

Photoshop 7.0, CS and CS2 will load Carbon/PEF plugins built in this manner.
Only CodeWarrior and MPW can build these.

Photoshop CS2 also supports Mach-O format plugins. For details on how
these are built, see the Makefile (target "osx"). 

Photoshop CS3 supports "universal" (or "fat") plugins having native code
for both PowerPC and Intel architectures. The provided Makefile can build
a "universal" plugin if you have the CS3 "Beta" SDK (use target "fat").

Note that building Mach-O plugins requires Apple's Developer Tools
be installed (from the DVD that came with your Mac, or download from
http://developer.apple.com/ if you have an ADC login).


Mac notes
---------
The Mac build requires Apple's MoreFiles library, which can be obtained via
http://developer.apple.com/samplecode/Sample_Code/Files/MoreFiles.htm

Depending on how the source files were extracted, it may be necessary to set
the correct Mac file types before attempting to build. In MPW, this can
be done as follows. First set the current directory to the Filter Foundry
source directory, then:
        setfile -t TEXT Å.[chrly] Å.make Å.rc ::common:tt:Å ::common:adobeplugin:Å
This can also be necessary after regenerating y.tab.c and lex.yy.c.
These files are generated from the parser and lexical analyser definitions,
parser.y and lexer.l, by a UNIX Terminal (not MPW!) command such as:
        make y.tab.c lex.yy.c

If building with MPW, finished binaries are left in the "debug" directory;
these are good for testing and debugging, as they can be updated
and re-run without having to re-launch Photoshop.

The finished binary, which contains executables for Classic and Carbon,
is left in the "dist" directory.


Windows notes
-------------

To build with Visual Studio, you have to use nmake.
Currently, there is not Visual Studio project file.

To compile:
1. First download Flex and Bison from https://sourceforge.net/projects/winflexbison/
   and unpack them on your disk.
2. Download the Adobe Photoshop SDK from https://www.adobe.com/devnet/photoshop/sdk.html
   and unpack it on your disk.
3. Download the telegraphics common library from http://telegraphics.com.au/svn/common/trunk/
   and unpack it on your disk.
4. Adjust paths in the nmake.mak file of Filter Foundry.
5. Run "Visual Studio Developer Command Prompt" from the start menu
6. Navigate to the Filter Foundry dir and run
   nmake /f nmake.mak clean
   nmake /f nmake.mak

Troubleshooting:
- If "rc" can't be found, install the Windows 10 SDK, and then copy
  C:\Program Files (x86)\Windows Kits\10\bin\...\x64 to C:\Program Files (x86)\Windows Kits\10\bin\x86
  see also https://stackoverflow.com/questions/43847542/rc-exe-no-longer-found-in-vs-2015-command-prompt
- If lex.yy.c can't be found, check the flex command (it generates lex.yy.c)
- If nmake gives the error message "makefile(28) : fatal error U1000: Syntax error: ")" missing in macro invocation"
  then run nmake with the parameter "/f nmake.mak" (nmake calls Makefile by default, which is not optimized for nmake)
- If you run into any problems, try "nmake /f nmake.mak clean" followed by "nmake /f nmake.mak"


To build in Windows with the OpenWatcom IDE, see the wpj
subdirectory and notes kindly provided by Peter Heckert.
Please note that there might be problems with calling conventions;
the plugin might not work after the building process.


Development systems
-------------------
While a CodeWarrior 7 project is provided, MPW and mingw32 are recommended 
as they produce much smaller executables.

Mingw32 (http://www.mingw.org/) can be hosted on virtually any UNIX or
Linux system, or under Windows.

MPW (http://developer.apple.com/tools/mpw-tools/) runs on PowerPC and
68K Macs under Mac OS 9 or earlier, or Classic under OS X.