0,0 → 1,235 |
# This file is part of "Filter Foundry", a filter plugin for Adobe Photoshop |
# Copyright (C) 2003-2009 Toby Thain, toby@telegraphics.com.au |
# Copyright (C) 2018-2019 Daniel Marschall, ViaThinkSoft |
|
# 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 |
|
# GNU Makefile |
# builds Win32 DLL and CS2/Mac Mach-O plugin bundle |
|
|
# ---------- variables & flags ---------- |
|
EXEC = FilterFoundry |
|
VERSION = $(shell perl -n -e 'm/^.*VERSION_STR[[:blank:]]+\"([^"]*)\"/ && print $$1;' version.h) |
|
MINGW_CC = i386-mingw32msvc-gcc |
DLLWRAP = i386-mingw32msvc-dllwrap |
WINDRES = i386-mingw32msvc-windres |
|
# use GNU flex and bison |
# these lines can be commented to use system lex and yacc |
# although this may result in a larger overall executable |
LEX = flex |
YACC = bison -y |
YFLAGS = -d |
|
PSAPI = "photoshop_sdk/pluginsdk/photoshopapi" |
|
CFLAGS += -O2 -W -Wall -Wno-main -Wno-unused-parameter -Wno-multichar |
CPPFLAGS += -DYY_SKIP_YYWRAP \ |
-I$(PSAPI)/pica_sp -I$(PSAPI)/photoshop -I$(PSAPI)/general \ |
-Itelegraphics_common/adobeplugin -Itelegraphics_common/tt |
|
|
# ---------- source & object files ---------- |
|
# where to find .c source files |
vpath %.c telegraphics_common/tt telegraphics_common/adobeplugin ../MoreFiles/Sources |
|
# list of source files |
SRC_COMMON = main.c funcs.c process.c node.c symtab.c \ |
ui.c ui_build.c preview.c read.c save.c make.c \ |
scripting.c y.tab.c lex.yy.c str.c |
SRC_OSX = dbg_mac.c ui_mac.c make_mac.c load_mac.c ui_compat_mac.c \ |
choosefile_nav.c preview_mac.c \ |
MoreFilesExtras.c MoreFiles.c MoreDesktopMgr.c FileCopy.c Search.c |
SRC_W32 = dbg_win.c manifest.c ui_win.c make_win.c versioninfo_modify_win.c load_win.c ui_compat_win.c \ |
choosefile_win.c ui_build_win.c compat_string.c compat_win.c \ |
file_compat_win.c dllmain.c |
|
# derive lists of object files, separate for each platform |
OBJ_OSX := $(patsubst %.c, obj/%.o, $(SRC_COMMON) $(SRC_OSX)) |
OBJ_W32 := $(patsubst %.c, obj_w32/%.o, $(SRC_COMMON) $(SRC_W32)) obj_w32/res.o |
|
|
# ---------- executables ---------- |
|
# parts of Mac OS X plugin bundle to build |
# Adobe's plugs use .plugin extension |
BUNDLE = $(EXEC).plugin |
PLUGIN_OSX = $(BUNDLE)/Contents/MacOS/$(EXEC) |
PLUGIN_RSRC = $(BUNDLE)/Contents/Resources/$(EXEC).rsrc |
PLUGIN_PARTS = $(PLUGIN_OSX) $(PLUGIN_RSRC) $(BUNDLE)/Contents/Info.plist $(BUNDLE)/Contents/PkgInfo |
DISTDMG = dist/$(EXEC)-$(VERSION).dmg |
|
$(PLUGIN_OSX) : CPPFLAGS += -DMAC_ENV -DMACMACHO -Dmacintosh \ |
-I/Developer/Headers/FlatCarbon \ |
-I../MoreFiles/CHeaders -I../MoreFiles/Sources |
|
# Win32 plugin DLL to build |
PLUGIN_W32 = $(EXEC).8bf |
DISTZIP = dist/$(EXEC)-$(VERSION)-win.zip |
|
$(PLUGIN_W32) : CPPFLAGS += -DWIN_ENV |
|
|
# ---------- targets ---------- |
|
# build everything |
all : dll osx |
|
dll : $(PLUGIN_W32) |
|
osx fat : $(BUNDLE) $(PLUGIN_PARTS) |
|
# See: http://developer.apple.com/documentation/Porting/Conceptual/PortingUnix/compiling/chapter_4_section_3.html#//apple_ref/doc/uid/TP40002850-BAJCFEBA |
fat : CFLAGS += -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch ppc -arch i386 |
fat : LDFLAGS += -Wl,-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk -arch ppc -arch i386 |
fat : REZFLAGS += -arch ppc -arch i386 |
|
$(BUNDLE) : |
mkdir -p $@ |
/Developer/Tools/SetFile -a B $@ |
|
# insert correct executable name and version string in bundle's Info.plist |
$(BUNDLE)/Contents/Info.plist : Info.plist $(BUNDLE) version.h |
mkdir -p $(dir $@) |
V=`sed -n -E 's/^.*VERSION_STR[[:blank:]]+\"([^"]*)\"/\1/p' version.h` ;\ |
sed -e s/VERSION_STR/$$V/ -e s/EXEC/$(EXEC)/ $< > $@ |
|
$(BUNDLE)/Contents/PkgInfo : $(BUNDLE) |
mkdir -p $(dir $@) |
echo -n 8BFM8BIM > $@ |
|
clean : |
rm -fr *.[ox] $(OBJ_OSX) $(OBJ_W32) $(PLUGIN_W32) $(BUNDLE) \ |
lex.yy.[ch] y.tab.[ch] temp |
|
|
dmg : $(DISTDMG) |
|
# create an Apple disk image (dmg) archive of the distribution kit |
$(DISTDMG) : $(PLUGIN_PARTS) dist/README.html dist/gpl.html |
@ DIR=`mktemp -d $(EXEC)-XXXX`; \ |
cp -Rp dist/README.html dist/gpl.html $(BUNDLE) $$DIR; \ |
mkdir -p $$DIR/examples; \ |
cp dist/examples/*.afs $$DIR/examples; \ |
/Developer/Tools/SetFile -t TEXT -c ttxt $$DIR/examples/*; \ |
hdiutil create -srcfolder $$DIR -ov -volname "$(EXEC) $(VERSION)" $@; \ |
rm -fr $$DIR |
@ ls -l $@ |
|
|
zip : $(DISTZIP) |
|
$(DISTZIP) : $(PLUGIN_W32) dist/README.html dist/gpl.html dist/examples/*.afs |
T=`mktemp -d`; \ |
D=$$T/FilterFoundry-$(VERSION); \ |
mkdir -p $$D/examples; \ |
cp $^ $$D; \ |
mv $$D/*.afs $$D/examples; \ |
cd $$T; \ |
zip -9 -r temp.zip FilterFoundry-$(VERSION); \ |
mv temp.zip $(PWD)/$@; \ |
rm -fr $$T |
ls -l $@ |
|
|
# ---------- compile rules ---------- |
|
obj/%.o : %.c |
$(CC) -o $@ -c $< $(CFLAGS) $(CPPFLAGS) -fpascal-strings |
obj_w32/%.o : %.c |
$(MINGW_CC) -o $@ -c $< $(CFLAGS) $(CPPFLAGS) |
|
# note dependencies on version.h: |
|
obj_w32/res.o : win_res.rc PiPL.rc PiPL_body.rc manifest.rc version_win.rc ui_win.rc caution.ico ui.h version.h |
$(WINDRES) -o $@ -i $< --language=0 $(CPPFLAGS) |
|
lex.yy.c : lexer.l y.tab.h |
$(LEX) $< |
y.tab.c y.tab.h : parser.y |
$(YACC) $< $(YFLAGS) |
|
obj_w32/funcs.o : ff.h funcs.h symtab.h ui.h PARM.h y.tab.h |
obj_w32/lex.yy.o : node.h symtab.h y.tab.h |
obj_w32/load_win.o : ff.h funcs.h symtab.h ui.h PARM.h |
obj_w32/main.o : ff.h funcs.h symtab.h ui.h PARM.h node.h scripting.h y.tab.h |
obj_w32/make.o : ff.h funcs.h symtab.h ui.h PARM.h |
obj_w32/make_win.o : ff.h funcs.h symtab.h ui.h PARM.h |
obj_w32/versioninfo_modify_win.o : ff.h funcs.h symtab.h ui.h PARM.h |
obj_w32/node.o : node.h y.tab.h funcs.h symtab.h ui.h PARM.h |
obj_w32/y.tab.o : node.h y.tab.h |
obj_w32/preview.o : ff.h funcs.h symtab.h ui.h PARM.h node.h y.tab.h |
obj_w32/process.o : ff.h funcs.h symtab.h ui.h PARM.h node.h y.tab.h |
obj_w32/read.o : ff.h funcs.h symtab.h ui.h PARM.h |
obj_w32/save.o : ff.h funcs.h symtab.h ui.h PARM.h |
obj_w32/scripting.o : ff.h funcs.h symtab.h ui.h PARM.h scripting.h |
obj_w32/symtab.o : symtab.h |
obj_w32/ui.o : ff.h funcs.h symtab.h ui.h PARM.h node.h y.tab.h |
obj_w32/ui_build.o : ff.h funcs.h symtab.h ui.h PARM.h |
obj_w32/ui_build_win.o : ff.h funcs.h symtab.h ui.h PARM.h version.h |
obj_w32/ui_win.o : ff.h funcs.h symtab.h ui.h PARM.h version.h |
obj_w32/manifest.o : manifest.h |
|
obj/funcs.o : ff.h funcs.h symtab.h ui.h PARM.h y.tab.h |
obj/lex.yy.o : node.h symtab.h y.tab.h |
obj/load_mac.o : ff.h funcs.h symtab.h ui.h PARM.h |
obj/main.o : ff.h funcs.h symtab.h ui.h PARM.h node.h scripting.h y.tab.h |
obj/make.o : ff.h funcs.h symtab.h ui.h PARM.h |
obj/make_mac.o : ff.h funcs.h symtab.h ui.h PARM.h |
obj/node.o : node.h y.tab.h funcs.h symtab.h ui.h PARM.h |
obj/y.tab.o : node.h symtab.h y.tab.h |
obj/preview.o : ff.h funcs.h symtab.h ui.h PARM.h node.h y.tab.h |
obj/process.o : ff.h funcs.h symtab.h ui.h PARM.h node.h y.tab.h |
obj/read.o : ff.h funcs.h symtab.h ui.h PARM.h |
obj/save.o : ff.h funcs.h symtab.h ui.h PARM.h |
obj/scripting.o : ff.h funcs.h symtab.h ui.h PARM.h scripting.h |
obj/symtab.o : symtab.h |
obj/ui.o : ff.h funcs.h symtab.h ui.h PARM.h node.h y.tab.h |
obj/ui_build.o : ff.h funcs.h symtab.h ui.h PARM.h |
obj/ui_mac.o : ff.h funcs.h symtab.h ui.h PARM.h |
|
# compile Mac resources (into data fork of .rsrc file) |
$(PLUGIN_RSRC) : $(BUNDLE) PiPL_macho.r ui_mac.r scripting.r ui.h version.h |
mkdir -p $(dir $@) |
/Developer/Tools/Rez -o $@ -useDF $(REZFLAGS) $(filter %.r,$^) \ |
-i /Developer/Headers/FlatCarbon \ |
-i $(PSAPI)/Resources \ |
-i $(PSAPI)/Photoshop |
ls -l $@ |
|
|
# ---------- link rules ---------- |
|
# link OS X Mach-O executable |
$(PLUGIN_OSX) : $(BUNDLE) exports.exp $(OBJ_OSX) |
mkdir -p $(dir $@) |
$(CC) -bundle -o $@ $(OBJ_OSX) \ |
$(LDFLAGS) -exported_symbols_list exports.exp \ |
-framework Carbon -framework System |
ls -l $@ |
file $@ |
|
# link Win32 DLL |
$(PLUGIN_W32) : exports.def $(OBJ_W32) |
$(DLLWRAP) -o $@ -def $^ -mwindows -s |
ls -l $@ |
|
|
# -------------------- |