diff --git a/.cvsignore b/.cvsignore index e69de29..53f6626 100644 --- a/.cvsignore +++ b/.cvsignore @@ -0,0 +1 @@ +argyllV0.70Beta8_src.zip diff --git a/argyllcms-0.70-19-color.fdi b/argyllcms-0.70-19-color.fdi new file mode 100644 index 0000000..09ef067 --- /dev/null +++ b/argyllcms-0.70-19-color.fdi @@ -0,0 +1,82 @@ + + + + + + + + + access_control + color + linux.device_file + + + + + + + access_control + color + linux.device_file + + + + + + + access_control + color + linux.device_file + + + + access_control + color + linux.device_file + + + + access_control + color + linux.device_file + + + + + + + access_control + color + linux.device_file + + + + + + + access_control + color + linux.device_file + + + + access_control + color + linux.device_file + + + + + + + access_control + color + linux.device_file + + + + + diff --git a/argyllcms-0.70-build.patch b/argyllcms-0.70-build.patch new file mode 100644 index 0000000..95b06e0 --- /dev/null +++ b/argyllcms-0.70-build.patch @@ -0,0 +1,676 @@ +diff -uNr argyllcms-0.70.orig/cgats/Jamfile argyllcms-0.70/cgats/Jamfile +--- argyllcms-0.70.orig/cgats/Jamfile 2008-01-16 02:47:37.000000000 +0100 ++++ argyllcms-0.70/cgats/Jamfile 2008-02-07 20:51:37.000000000 +0100 +@@ -3,7 +3,7 @@ + + CCFLAGS += $(CCOPTFLAG) ; # Turn optimisation on + #CCFLAGS += $(CCDEBUGFLAG) ; # Debugging flags +-LINKFLAGS += $(LINKDEBUGFLAG) ; ++LINKFLAGS += -lm $(LINKDEBUGFLAG) ; + + #if stdio is not wanted in icclib: + #CCFLAGS += $(DEFFLAG)SEPARATE_STD ; +diff -uNr argyllcms-0.70.orig/gamut/Jamfile argyllcms-0.70/gamut/Jamfile +--- argyllcms-0.70.orig/gamut/Jamfile 2008-01-16 02:47:39.000000000 +0100 ++++ argyllcms-0.70/gamut/Jamfile 2008-02-07 20:51:37.000000000 +0100 +@@ -6,7 +6,7 @@ + CCFLAGS += $(CCOPTFLAG) ; # Turn optimisation on + #CCFLAGS += $(CCDEBUGFLAG) ; # Debugging flags + #CCFLAGS += $(CCHEAPDEBUG) ; # Heap Debugging flags +-LINKFLAGS += $(LINKDEBUGFLAG) ; # Link with debug info ++LINKFLAGS += -lm $(LINKDEBUGFLAG) ; # Link with debug info + #CCFLAGS += $(CCPROFFLAG) ; # Profile flags + #LINKFLAGS += $(LINKPROFFLAG) ; # Profile flags + +diff -uNr argyllcms-0.70.orig/imdi/Jamfile argyllcms-0.70/imdi/Jamfile +--- argyllcms-0.70.orig/imdi/Jamfile 2008-01-16 02:47:45.000000000 +0100 ++++ argyllcms-0.70/imdi/Jamfile 2008-02-07 20:51:37.000000000 +0100 +@@ -5,14 +5,16 @@ + CCFLAGS += $(CCOPTFLAG) ; # Turn optimisation on + #CCFLAGS += $(CCDEBUGFLAG) ; # Debugging flags + #CCFLAGS += $(CCPROFFLAG) ; # Profile flags +-LINKFLAGS += $(LINKDEBUGFLAG) ; # Link debugging flags ++LINKFLAGS += -lm $(LINKDEBUGFLAG) ; # Link debugging flags + #LINKFLAGS += $(LINKPROFFLAG) ; # Profile flags + #CCFLAGS += $(CCHEAPDEBUG) ; # Heap Debugging flags + + if $(HAVE_TIFF) { # Alternate TIFF library + TIFFLIB = ; + TIFFINC = ; +- LINKLIBS on cctiff$(SUFEXE) = -ltiff $(LINKLIBS) ; ++ LINKLIBS on cctiff$(SUFEXE) ++ cctiffo$(SUFEXE) ++ greytiff$(SUFEXE) = -ltiff $(LINKLIBS) ; + } else { + TIFFLIB = ../tiff/libtiff.lib ; + TIFFINC = ../tiff ; +diff -uNr argyllcms-0.70.orig/Jambase argyllcms-0.70/Jambase +--- argyllcms-0.70.orig/Jambase 2008-01-16 02:47:16.000000000 +0100 ++++ argyllcms-0.70/Jambase 2008-02-07 20:51:37.000000000 +0100 +@@ -259,7 +259,7 @@ + FILEMODE default = 644 ; + FORTRAN default = f77 ; + FORTRANFLAGS default = ; +-# HAVE_TIFF default = 1 ; ++ HAVE_TIFF default = 1 ; + HDRS default = ; + INSTALL default = install -c ; + LEX default = lex ; +diff -uNr argyllcms-0.70.orig/link/Jamfile argyllcms-0.70/link/Jamfile +--- argyllcms-0.70.orig/link/Jamfile 2008-01-16 02:47:49.000000000 +0100 ++++ argyllcms-0.70/link/Jamfile 2008-02-07 20:51:37.000000000 +0100 +@@ -10,9 +10,9 @@ + LINKFLAGS += $(LINKDEBUGFLAG) ; # Link debugging flags + + if $(UNIX) && $(OS) != MACOSX { +- WinDir = /usr/X11R6 ; ++ WinDir = /usr ; + LibWinH = $(WinDir)/include/X11 ; +- LibWinD = $(WinDir)/lib ; ++ LibWinD = ; + LibWin = ; + LINKFLAGS += -L$(LibWinD) -lX11 -lXau -lXdmcp ; + } +diff -uNr argyllcms-0.70.orig/numlib/Jamfile argyllcms-0.70/numlib/Jamfile +--- argyllcms-0.70.orig/numlib/Jamfile 2008-01-16 02:47:17.000000000 +0100 ++++ argyllcms-0.70/numlib/Jamfile 2008-02-07 20:51:37.000000000 +0100 +@@ -3,7 +3,7 @@ + + CCFLAGS += $(CCOPTFLAG) ; # Turn optimisation on + #CCFLAGS += $(CCDEBUGFLAG) ; # Debugging flags +-LINKFLAGS += $(LINKDEBUGFLAG) ; ++LINKFLAGS += -lm $(LINKDEBUGFLAG) ; + #CCFLAGS += $(CCPROFFLAG) ; # Profile flags + #LINKFLAGS += $(LINKPROFFLAG) ; # Profile flags + +diff -uNr argyllcms-0.70.orig/numlib/numsup.c argyllcms-0.70/numlib/numsup.c +--- argyllcms-0.70.orig/numlib/numsup.c 2008-01-16 02:47:17.000000000 +0100 ++++ argyllcms-0.70/numlib/numsup.c 2008-02-07 20:51:37.000000000 +0100 +@@ -5,6 +5,7 @@ + #include + #include + #include ++#include + #if defined (NT) + #define WIN32_LEAN_AND_MEAN + #include +diff -uNr argyllcms-0.70.orig/plot/Jamfile argyllcms-0.70/plot/Jamfile +--- argyllcms-0.70.orig/plot/Jamfile 2008-01-16 02:47:35.000000000 +0100 ++++ argyllcms-0.70/plot/Jamfile 2008-02-07 20:51:37.000000000 +0100 +@@ -6,11 +6,11 @@ + LINKFLAGS += $(LINKDEBUGFLAG) ; + + if $(UNIX) && $(OS) != MACOSX { +- WinDir = /usr/X11R6 ; ++ WinDir = /usr ; + LibWinH = $(WinDir)/include ; +- LibWinD = $(WinDir)/lib ; ++ LibWinD = ; + LibWin = ; +- LINKFLAGS += -L$(LibWinD) -lX11 -lXau -lXdmcp ; ++ LINKFLAGS += -L$(LibWinD) -lX11 -lXau -lXdmcp -lm ; + } + + # PLOT library +diff -uNr argyllcms-0.70.orig/profile/Jamfile argyllcms-0.70/profile/Jamfile +--- argyllcms-0.70.orig/profile/Jamfile 2008-01-16 02:47:48.000000000 +0100 ++++ argyllcms-0.70/profile/Jamfile 2008-02-07 20:51:37.000000000 +0100 +@@ -11,9 +11,9 @@ + LINKFLAGS += -framework IOKit ; + LINKFLAGS += -framework CoreFoundation ; + } else { +- WinDir = /usr/X11R6 ; ++ WinDir = /usr ; + LibWinH = $(WinDir)/include/X11 ; +- LibWinD = $(WinDir)/lib ; ++ LibWinD = ; + LibWin = ; + LINKFLAGS += -L$(LibWinD) -lX11 -lXau -lXdmcp ; + } +diff -uNr argyllcms-0.70.orig/render/Jamfile argyllcms-0.70/render/Jamfile +--- argyllcms-0.70.orig/render/Jamfile 2008-01-16 02:47:50.000000000 +0100 ++++ argyllcms-0.70/render/Jamfile 2008-02-07 20:51:37.000000000 +0100 +@@ -10,6 +10,16 @@ + #CCFLAGS += $(CCPROFFLAG) ; # Profile flags + #LINKFLAGS += $(LINKPROFFLAG) ; # Profile flags + ++if $(HAVE_TIFF) { # Alternate TIFF library ++ TIFFLIB = ; ++ TIFFINC = ; ++ LINKLIBS on timage$(SUFEXE) = $(LINKLIBS) -ltiff ; ++ ++} else { ++ TIFFLIB = ../tiff/libtiff.lib ; ++ TIFFINC = ../tiff ; ++} ++ + #Products + Libraries = librender ; + Executables = timage ; +@@ -22,11 +32,11 @@ + + # 2D Rendering library + Library librender.lib : render.c ; +-ObjectHdrs render$(SUFOBJ) : ../h ../numlib ../tiff ; ++ObjectHdrs render$(SUFOBJ) : ../h ../numlib $(TIFFINC) ; + + Main timage : timage.c ; +-ObjectHdrs timage$(SUFOBJ) : ../h ../numlib ../tiff ; +-LinkLibraries timage : librender.lib ../numlib/libnum.lib ../tiff/libtiff.lib ; ++ObjectHdrs timage$(SUFOBJ) : ../h ../numlib $(TIFFINC) ; ++LinkLibraries timage : librender.lib ../numlib/libnum.lib $(TIFFLIB) ; + + if $(BUILD_JUNK) { + +diff -uNr argyllcms-0.70.orig/rspl/Jamfile argyllcms-0.70/rspl/Jamfile +--- argyllcms-0.70.orig/rspl/Jamfile 2008-01-16 02:47:38.000000000 +0100 ++++ argyllcms-0.70/rspl/Jamfile 2008-02-07 20:51:37.000000000 +0100 +@@ -16,9 +16,9 @@ + LINKFLAGS += -framework IOKit ; + LINKFLAGS += -framework CoreFoundation ; + } else { +- WinDir = /usr/X11R6 ; ++ WinDir = /usr ; + LibWinH = $(WinDir)/include/X11 ; +- LibWinD = $(WinDir)/lib ; ++ LibWinD = ; + LibWin = ; + LINKFLAGS += -L$(LibWinD) -lX11 -lXau -lXdmcp ; + } +@@ -28,12 +28,13 @@ + + if $(HAVE_TIFF) { # Alternate TIFF library + TIFFLIB = ; +- TIFFINC = ; ++ TIFFINC = /usr/include ; + LINKLIBS on c1$(SUFEXE) + c1df$(SUFEXE) + c1i$(SUFEXE) + t2d$(SUFEXE) + t2dfw$(SUFEXE) ++ t2ddf$(SUFEXE) + t3d$(SUFEXE) + t3ddf$(SUFEXE) + tnd$(SUFEXE) +diff -uNr argyllcms-0.70.orig/spectro/Jamfile argyllcms-0.70/spectro/Jamfile +--- argyllcms-0.70.orig/spectro/Jamfile 2008-01-16 02:47:42.000000000 +0100 ++++ argyllcms-0.70/spectro/Jamfile 2008-02-07 20:51:37.000000000 +0100 +@@ -17,7 +17,7 @@ + + if $(UNIX) { + IOFILE = unixio.c pollem.c ; +- LIBUSB = ../libusb ; ++# LIBUSB = ../libusb ; + } + + if $(UNIX) { +@@ -25,11 +25,11 @@ + LINKFLAGS += -framework IOKit ; + LINKFLAGS += -framework CoreFoundation ; + } else { +- WinDir = /usr/X11R6 ; ++ WinDir = /usr ; + LibWinH = $(WinDir)/include ; +- LibWinD = $(WinDir)/lib ; ++ LibWinD = ; + LibWin = ; +- LINKFLAGS += -L$(LibWinD) -lX11 -lXext -lXxf86vm -lXinerama -lXau -lXdmcp -lXss -ldl ; ++ LINKFLAGS += -L$(LibWinD) -lX11 -lXext -lXxf86vm -lXinerama -lXau -lXdmcp -lXss -ldl -lm -lusb ; + } + } + +diff -uNr argyllcms-0.70.orig/spectro/Jamfile.orig argyllcms-0.70/spectro/Jamfile.orig +--- argyllcms-0.70.orig/spectro/Jamfile.orig 1970-01-01 01:00:00.000000000 +0100 ++++ argyllcms-0.70/spectro/Jamfile.orig 2008-01-16 02:47:42.000000000 +0100 +@@ -0,0 +1,222 @@ ++ ++#SubDir TOP spectro ; ++ ++CCFLAGS += $(CCOPTFLAG) ; # Turn optimisation on ++#CCFLAGS += $(CCDEBUGFLAG) ; # Debugging flags ++LINKFLAGS += $(LINKDEBUGFLAG) ; ++ ++if $(NT) { ++ if $(DDK_INC_PATH) && $(DDK_LIB_PATH) { # We can use HID access ++ CCFLAGS += $(DEFFLAG) ENABLE_NT_HID ; ++ HIDLIBS = $(DDK_LIB_PATH)\\hid.lib $(DDK_LIB_PATH)\\setupapi.lib ; ++ HDRS += $(STDHDRS) ; # hack to force search of STDHDRS before DDK ++ } ++ IOFILE = ntio.c ; ++ LIBUSB = ../libusbw ; ++} ++ ++if $(UNIX) { ++ IOFILE = unixio.c pollem.c ; ++ LIBUSB = ../libusb ; ++} ++ ++if $(UNIX) { ++ if $(OS) = MACOSX { ++ LINKFLAGS += -framework IOKit ; ++ LINKFLAGS += -framework CoreFoundation ; ++ } else { ++ WinDir = /usr/X11R6 ; ++ LibWinH = $(WinDir)/include ; ++ LibWinD = $(WinDir)/lib ; ++ LibWin = ; ++ LINKFLAGS += -L$(LibWinD) -lX11 -lXext -lXxf86vm -lXinerama -lXau -lXdmcp -lXss -ldl ; ++ } ++} ++ ++KEEPOBJS = true ; # Jam has trouble with multiple users of .obj ++ ++#Products ++Libraries = libinsttypes libinst ; ++Executables = dispwin displin dispread dispcal fakeread synthread chartread spotread spec2cie spyd2en ; ++Headers = inst.h ; ++Samples = ColorChecker.ti2 ECI2002R.ti2 FograStrip.ti2 i1_RGB_Scan_1.4.ti2 SOtele.sp ; ++ ++#Install ++InstallBin $(DOTDOT)$(SLASH)bin : $(Executables)$(SUFEXE) ; ++InstallFile $(DOTDOT)$(SLASH)ref : $(Samples) ; ++#InstallFile $(DOTDOT)$(SLASH)h : $(Headers) ; ++#InstallLib $(DOTDOT)$(SLASH)lib : $(Libraries)$(SUFLIB) ; ++ ++# Instrument access library library ++Library libinst.lib : inst.c insttypes.c dtp20.c dtp22.c dtp41.c dtp51.c dtp92.c i1disp.c i1pro.c i1pro_imp.c ss.c ss_imp.c hcfr.c spyd2.c huey.c $(IOFILE) usbio.c hidio.c ; ++ObjectHdrs inst insttypes dtp20 dtp22 dtp41 dtp51 dtp92 i1disp i1pro i1pro_imp ss ss_imp hcfr spyd2 huey $(IOFILE) usbio.c hidio.c : . ../h ../numlib ../icc ../rspl ../xicc ../plot $(DDK_INC_PATH) $(LIBUSB) ; ++ ++# Instrument types utility functions library. Use this instead of libinst */ ++# (hack to re-use insttypes.c in this library) ++Object insttypes_$(SUFOBJ) : insttypes.c ; ++ObjectHdrs insttypes_ : . ../h ../icc ../xicc ; ++LibraryFromObjects libinsttypes.lib : insttypes_$(SUFOBJ) ; ++ ++# Support file ++Object alphix$(SUFOBJ) : ../target/alphix.c ; ++ObjectHdrs alphix$(SUFOBJ) : ../h ../numlib ; ++ ++# General target reader program ++Object chartread$(SUFOBJ) : chartread.c ; ++ObjectHdrs chartread : . ../h ../cgats ../icc ../numlib ../xicc ../target $(LIBUSB) ; ++MainFromObjects chartread : chartread$(SUFOBJ) alphix$(SUFOBJ) dispsup$(SUFOBJ) dispwin$(SUFOBJ) ; ++LinkLibraries chartread : libinst.lib ../cgats/libcgats.lib ++ ../rspl/librspl.lib ++ ../xicc/libxicc.lib ../xicc/libxcolorants.lib ++ ../numlib/libnum.lib ../icc/libicc.lib ++ ../plot/libplot.lib $(LIBUSB)/libusb.lib ++ $(HIDLIBS) ; ++ ++# Printed target spot reader utility ++Object spotread$(SUFOBJ) : spotread.c ; ++ObjectHdrs spotread : . ../h ../cgats ../icc ../numlib ../rspl ../xicc ../gamut ++ ../spectro ../plot $(LIBUSB) ; ++MainFromObjects spotread : spotread$(SUFOBJ) dispsup$(SUFOBJ) dispwin$(SUFOBJ) ; ++LinkLibraries spotread : libinst.lib ++ ../rspl/librspl.lib ../xicc/libxicc.lib ++ ../icc/libicc.lib ../gamut/libgamut.lib ../cgats/libcgats.lib ++ ../plot/libplot.lib ../numlib/libnum.lib ++ $(LIBUSB)/libusb.lib $(LibWin) ++ $(HIDLIBS) ; ++ ++# Gretag Spectroscan/T filmstrip reader ++#Object filmread$(SUFOBJ) : filmread.c ; ++#ObjectHdrs filmread : . ../h ../cgats ../icc ../numlib ../xicc $(LIBUSB) ; ++#MainFromObjects filmread : filmread$(SUFOBJ) dispsup$(SUFOBJ) dispwin$(SUFOBJ) ; ++#LinkLibraries filmread : libinst.lib ../cgats/libcgats.lib ../xicc/libxicc.lib ++# ../rspl/librspl.lib ++# ../numlib/libnum.lib ../icc/libicc ../plot/libplot.lib ++# $(LIBUSB)/libusb.lib ++# $(HIDLIBS) ; ++ ++# Create linear .cal ++Main displin : displin.c ; ++ObjectHdrs displin : . ../h ../cgats ../numlib ; ++LinkLibraries displin : ../cgats/libcgats.lib ../numlib/libnum.lib ; ++ ++# Display calibration program ++Object dispcal$(SUFOBJ) : dispcal.c ; ++ObjectHdrs dispcal dispwin dispsup ../target/ofps : . ../h ../cgats ../icc ++ ../numlib ../rspl ../spectro ../xicc ../spectro ../gamut ++ ../target ../plot $(LIBUSB) $(LibWinH) ; ++MainFromObjects dispcal : dispcal$(SUFOBJ) dispwin$(SUFOBJ) ../target/ofps$(SUFOBJ) ++ dispsup$(SUFOBJ) ; ++LinkLibraries dispcal : libinst.lib ../cgats/libcgats.lib ++ ../rspl/librspl.lib ++ ../xicc/libxicc.lib ../icc/libicc.lib ++ ../rspl/librspl.lib ../numlib/libnum.lib ++ ../gamut/libgamut.lib ../plot/libplot.lib ++ $(LIBUSB)/libusb.lib $(LibWin) ++ $(HIDLIBS) ; ++ ++# Display tester program ++Main dispread : dispread.c dispwin.c dispsup.c ; ++ObjectHdrs dispread dispwin dispsup : . ../h ../cgats ../icc ../numlib ../xicc $(LIBUSB) $(LibWinH) ; ++LinkLibraries dispread : libinst.lib ../cgats/libcgats.lib ++ ../rspl/librspl.lib ++ ../xicc/libxicc.lib ../icc/libicc.lib ++ ../numlib/libnum.lib ../plot/libplot.lib ++ $(LIBUSB)/libusb.lib $(LibWin) ++ $(HIDLIBS) ; ++ ++ ++# ~~~999 ++#display test window test/Lut loader utility ++Object sa_dispwin$(SUFOBJ) : dispwin.c ; ++ObjectHdrs sa_dispwin : . ../h ../numlib ../cgats ../icc $(LibWinH) ; ++MainFromObjects dispwin : sa_dispwin$(SUFOBJ) ; ++ObjectCcFlags sa_dispwin.c : -DSTANDALONE_TEST ; ++LinkLibraries dispwin : libinst.lib ../cgats/libcgats.lib ++ ../xicc/libxicc.lib ../icc/libicc.lib ++ ../numlib/libnum.lib ../plot/libplot.lib ++ $(LIBUSB)/libusb.lib $(LibWin) ++ $(HIDLIBS) ; ++ ++# Fake device print/read utility using ICC profile ++Main fakeread : fakeread.c ; ++ObjectHdrs fakeread : . ../h ../cgats ../xicc ../spectro ../rspl ../numlib ../gamut ../plot ../icc ; ++LinkLibraries fakeread : libinsttypes.lib ../icc/libicc.lib ++ ../xicc/libxicc.lib ../xicc/libxcolorants.lib ++ ../gamut/libgamut.lib ../cgats/libcgats.lib ++ ../rspl/librspl.lib ../numlib/libnum.lib ++ ../plot/libplot.lib ++ $(LIBUSB)/libusb.lib $(LibWin) ; ++ ++# Synthetic device print/read utility ++Main synthread : synthread.c ; ++ObjectHdrs synthread : . ../h ../cgats ../xicc ../spectro ../rspl ../numlib ../gamut ../plot ../icc ; ++LinkLibraries synthread : libinsttypes.lib ../icc/libicc.lib ++ ../xicc/libxicc.lib ../xicc/libxcolorants.lib ++ ../gamut/libgamut.lib ../cgats/libcgats.lib ++ ../rspl/librspl.lib ../numlib/libnum.lib ++ ../plot/libplot.lib ++ $(LIBUSB)/libusb.lib $(LibWin) ; ++ ++# Add CIE values to a spectral reading file ++Main spec2cie : spec2cie.c ; ++ObjectHdrs spec2cie : . ../h ../cgats ../xicc ../spectro ../rspl ../numlib ../gamut ../icc ../plot $(LIBUSB) ; ++LinkLibraries spec2cie : libinsttypes.lib ../icc/libicc.lib ++ ../xicc/libxicc.lib ../xicc/libxcolorants.lib ++ ../gamut/libgamut.lib ../numlib/libnum.lib ++ ../cgats/libcgats.lib ../plot/libplot.lib ++ $(LIBUSB)/libusb.lib $(LibWin) ; ++ ++# Utility to enable the Spyder 2 instrument */ ++Main spyd2en : spyd2en.c vinflate.c ; ++ObjectHdrs spyd2en vinflate : . ../h ../numlib ; ++LinkLibraries spyd2en : ../numlib/libnum.lib ; ++ ++# Dumy ti3 file generator for testing ++#Main dumyti3 : dumyti3.c ; ++#ObjectHdrs dumyti3 : . ../h ../cgats ; ++#LinkLibraries dumyti3 : ../cgats/libcgats.lib ; ++ ++# Test utility for XYZ matrix spectral correction ++#Main xyzfix : xyzfix.c ; ++#ObjectHdrs xyzfix : . ../h ../numlib ../icc ../cgats ; ++#LinkLibraries xyzfix : ../numlib/libnum.lib ../icc/libicc.lib ../cgats/libcgats.lib ; ++ ++# Experimental RAMDAC loader ++# Main vgamma : vgamma.c ; ++ ++# fp conversion code test ++#Main fp : fp.c ; ++ ++# test code ++#Main tt : tt.c ++#ObjectHdrs tt : . ../numlib ../plot ; ++#LinkLibraries tt : ../numlib/libnum.lib ../plot/libplot.lib ; ++ ++if $(OLD_GRETAG) && $(UNIX) && $(OS) != MACOSX { ++ ++ # test for parsing a VISE archive ++ Main visetest : visetest.c vinflate.c ; ++ ObjectHdrs visetest vinflate : . ../h ../numlib ; ++ LinkLibraries visetest : ../numlib/libnum.lib ; ++ ++ # Compute deconvolution filter for i1pro ++ #Main i1deconv : i1deconv.c ; ++ #ObjectHdrs i1deconv : . ../numlib ../rspl ../plot ; ++ #LinkLibraries i1deconv : ../numlib/libnum.lib ../rspl/librspl.lib ../plot/libplot.lib ; ++ ++ # Compute stray light calibration for i1pro ++ #Main i1stray : i1stray.c ; ++ #ObjectHdrs i1stray : . ../numlib ../rspl ../plot ../icc ../xicc ; ++ #LinkLibraries i1stray : ../numlib/libnum.lib ../rspl/librspl.lib ../plot/libplot.lib ; ++ ++ # test gretag interface ++ Object gt_gretag$(SUFOBJ) : gretag.c ; ++ ObjectCcFlags gt_gretag.c : -DSTANDALONE_TEST ; ++ ObjectHdrs gt_gretag.c : . ../h ../icc ../xicc ; ++ MainFromObjects gt_test : gt_gretag$(SUFOBJ) spm$(SUFOBJ) $(IOFILE:S=$(SUFOBJ)) ; ++ LinkLibraries gt_test : libinst.lib ../xicc/libxicc.lib ../cgats/libcgats.lib ++ ../icc/libicc.lib $(LIBUSB)/libusb.lib $(LibWin) ; ++ LINKFLAGS on gt_test += -L$(LibWinD) ; ++ LINKLIBS on gt_test += -lglut -lGL -lGLU -lX11 -lXext -lXmu -lXi -lm ; ++} ++ +diff -uNr argyllcms-0.70.orig/spectro/Jamfile.rej argyllcms-0.70/spectro/Jamfile.rej +--- argyllcms-0.70.orig/spectro/Jamfile.rej 1970-01-01 01:00:00.000000000 +0100 ++++ argyllcms-0.70/spectro/Jamfile.rej 2008-02-07 20:51:37.000000000 +0100 +@@ -0,0 +1,42 @@ ++*************** ++*** 37,43 **** ++ ++ #Products ++ Libraries = libinsttypes libinst ; ++- Executables = dispwin displin dispread dispcal fakeread synthread filmread printread spotread spec2cie spyd2en ; ++ Headers = inst.h ; ++ Samples = ColorChecker.ti2 ECI2002R.ti2 FograStrip.ti2 i1_RGB_Scan_1.4.ti2 SOtele.sp ; ++ ++--- 37,43 ---- ++ ++ #Products ++ Libraries = libinsttypes libinst ; +++ Executables = dispwin displin dispread dispcal fakeread synthread printread spotread spec2cie spyd2en ; ++ Headers = inst.h ; ++ Samples = ColorChecker.ti2 ECI2002R.ti2 FograStrip.ti2 i1_RGB_Scan_1.4.ti2 SOtele.sp ; ++ ++*************** ++*** 84,99 **** ++ $(LIBUSB)/libusb.lib $(LibWin) ++ $(HIDLIBS) ; ++ ++- # Gretag Spectroscan/T filmstrip reader ++- Object filmread$(SUFOBJ) : filmread.c ; ++- ObjectHdrs filmread : . ../h ../cgats ../icc ../numlib ../xicc $(LIBUSB) ; ++- MainFromObjects filmread : filmread$(SUFOBJ) dispsup$(SUFOBJ) dispwin$(SUFOBJ) ; ++- LinkLibraries filmread : libinst.lib ../cgats/libcgats.lib ../xicc/libxicc.lib ++- ../rspl/librspl.lib ++- ../numlib/libnum.lib ../icc/libicc ../plot/libplot.lib ++- $(LIBUSB)/libusb.lib ++- $(HIDLIBS) ; ++- ++ # Create linear .cal ++ Main displin : displin.c ; ++ ObjectHdrs displin : . ../h ../cgats ../numlib ; ++--- 84,89 ---- ++ $(LIBUSB)/libusb.lib $(LibWin) ++ $(HIDLIBS) ; ++ ++ # Create linear .cal ++ Main displin : displin.c ; ++ ObjectHdrs displin : . ../h ../cgats ../numlib ; +diff -uNr argyllcms-0.70.orig/target/Jamfile argyllcms-0.70/target/Jamfile +--- argyllcms-0.70.orig/target/Jamfile 2008-01-16 02:47:45.000000000 +0100 ++++ argyllcms-0.70/target/Jamfile 2008-02-07 20:51:37.000000000 +0100 +@@ -14,9 +14,9 @@ + LINKFLAGS += -framework IOKit ; + LINKFLAGS += -framework CoreFoundation ; + } else { +- WinDir = /usr/X11R6 ; ++ WinDir = /usr ; + LibWinH = $(WinDir)/include/X11 ; +- LibWinD = $(WinDir)/lib ; ++ LibWinD = ; + LibWin = ; + LINKFLAGS += -L$(LibWinD) -lX11 -lXau -lXdmcp ; + } +diff -uNr argyllcms-0.70.orig/target/Jamfile.orig argyllcms-0.70/target/Jamfile.orig +--- argyllcms-0.70.orig/target/Jamfile.orig 1970-01-01 01:00:00.000000000 +0100 ++++ argyllcms-0.70/target/Jamfile.orig 2008-01-16 02:47:45.000000000 +0100 +@@ -0,0 +1,138 @@ ++# Print Calibration Target Data File generator ++ ++#SubDir TOP target ; ++ ++CCFLAGS += $(CCOPTFLAG) ; # Turn optimisation on ++#CCFLAGS += $(CCDEBUGFLAG) ; # Debugging flags ++#CCFLAGS += $(CCPROFFLAG) ; # Profile flags ++#LINKFLAGS += $(LINKPROFFLAG) ; # Profile flags ++#CCFLAGS += $(CCHEAPDEBUG) ; # Heap Debugging flags ++LINKFLAGS += $(LINKDEBUGFLAG) ; # Link debugging flags ++ ++if $(UNIX) { ++ if $(OS) = MACOSX { ++ LINKFLAGS += -framework IOKit ; ++ LINKFLAGS += -framework CoreFoundation ; ++ } else { ++ WinDir = /usr/X11R6 ; ++ LibWinH = $(WinDir)/include/X11 ; ++ LibWinD = $(WinDir)/lib ; ++ LibWin = ; ++ LINKFLAGS += -L$(LibWinD) -lX11 -lXau -lXdmcp ; ++ } ++} ++ ++if $(HAVE_TIFF) { ++ TIFFLIB = ; ++ TIFFINC = ; ++ LINKLIBS on targen$(SUFEXE) ++ filmtarg$(SUFEXE) = -ltiff $(LINKLIBS) ; ++} else { ++ TIFFLIB = ../tiff/libtiff.lib ; ++ TIFFINC = ../tiff ; ++} ++ ++#Products ++Executables = targen printtarg ; ++ ++#Install ++InstallBin $(DOTDOT)$(SLASH)bin : $(Executables)$(SUFEXE) ; ++ ++Object alphix$(SUFOBJ) : alphix.c ; ++ObjectHdrs alphix$(SUFOBJ) : ../h ../numlib ; ++ ++Object randix$(SUFOBJ) : randix.c ; ++ObjectHdrs randix$(SUFOBJ) : ../h ../numlib ; ++ ++#target generator ++Main targen : targen.c ppoint.c ofps.c ifarp.c simplat.c simdlat.c prand.c ; ++ObjectHdrs ppoint$(SUFOBJ) : ../h ../numlib ../plot ../icc ../rspl ../xicc ; ++ObjectHdrs ofps$(SUFOBJ) : ../h ../numlib ../plot ../icc ../xicc ; ++ObjectHdrs ifarp$(SUFOBJ) : ../h ../numlib ../plot ../icc ../xicc ; ++ObjectHdrs simplat$(SUFOBJ) : ../h ../numlib ../plot ../icc ../xicc ; ++ObjectHdrs simdlat$(SUFOBJ) : ../h ../numlib ../plot ../icc ../xicc ; ++ObjectHdrs prand$(SUFOBJ) : ../h ../numlib ../plot ../icc ../xicc ; ++ObjectHdrs targen$(SUFOBJ) : ../h ../numlib ../rspl ../cgats ../icc ../gamut ../xicc ../spectro ; ++LinkLibraries targen : ../rspl/librspl.lib ../cgats/libcgats.lib ++ ../icc/libicc.lib ../plot/libplot.lib ../xicc/libxicc.lib ++ ../xicc/libxcolorants.lib ../gamut/libgamut.lib ++ ../numlib/libnum.lib ../spectro/libinsttypes.lib ++ $(LibWin) ; ++ ++# Film Calibration Target File generator ++#MainFromObjects filmtarg : filmtarg$(SUFOBJ) alphix$(SUFOBJ) randix$(SUFOBJ) ; ++#Object filmtarg$(SUFOBJ) : filmtarg.c ; ++#ObjectHdrs filmtarg$(SUFOBJ) : ../h ../numlib ../cgats $(TIFFINC) ; ++#LinkLibraries filmtarg : ../cgats/libcgats.lib $(TIFFLIB) ; ++ ++# Print Calibration Target Postscrip../numlib t File generator ++MainFromObjects printtarg : printtarg$(SUFOBJ) alphix$(SUFOBJ) randix$(SUFOBJ) ; ++Object printtarg$(SUFOBJ) : printtarg.c ; ++ObjectHdrs printtarg$(SUFOBJ) : ../h ../numlib ../cgats ../spectro ../rspl ../icc ../xicc ++ ../gamut ; ++LinkLibraries printtarg : ../cgats/libcgats.lib ../xicc/libxicc.lib ++ ../xicc/libxcolorants.lib ../icc/libicc.lib ++ ../numlib/libnum.lib ../spectro/libinsttypes.lib ++ ../plot/libplot.lib $(LibWin) ; ++ ++# Individual stand alone test of sample point classes ++ ++# Percepttual point distribution ++MainFromObjects ppoint : sa_ppoint$(SUFOBJ) ; ++Object sa_ppoint$(SUFOBJ) : ppoint.c ; ++ObjectCcFlags sa_ppoint$(SUFOBJ) : -DSTANDALONE_TEST ; ++ObjectHdrs sa_ppoint$(SUFOBJ) : ../h ../numlib ../plot ../icc ../rspl ../xicc ; ++LinkLibraries ppoint : ../plot/libplot.lib ../rspl/librspl.lib ../numlib/libnum.lib $(LibWin) ; ++ ++# Optimised farthest point sampling class ++MainFromObjects ofps : sa_ofps$(SUFOBJ) ; ++Object sa_ofps$(SUFOBJ) : ofps.c ; ++ObjectCcFlags sa_ofps$(SUFOBJ) : -DSTANDALONE_TEST ; ++ObjectHdrs sa_ofps$(SUFOBJ) : ../h ../numlib ../plot ../icc ../xicc ; ++LinkLibraries ofps : ../numlib/libnum.lib ../plot/libplot.lib $(LibWin) ; ++ ++# Incremental far point class ++MainFromObjects ifarp : sa_ifarp$(SUFOBJ) ; ++Object sa_ifarp$(SUFOBJ) : ifarp.c ; ++ObjectCcFlags sa_ifarp$(SUFOBJ) : -DSTANDALONE_TEST ; ++ObjectHdrs sa_ifarp$(SUFOBJ) : ../h ../numlib ../plot ../icc ../xicc ; ++LinkLibraries ifarp : ../numlib/libnum.lib ../plot/libplot.lib ++ ../xicc/libxcolorants.lib ../icc/libicc.lib $(LibWin) ; ++ ++# Perceptual space simplex lattice ++MainFromObjects simplat : sa_simplat$(SUFOBJ) ; ++Object sa_simplat$(SUFOBJ) : simplat.c ; ++ObjectCcFlags sa_simplat$(SUFOBJ) : -DSTANDALONE_TEST ; ++ObjectHdrs sa_simplat$(SUFOBJ) : ../h ../numlib ../plot ../icc ../xicc ; ++LinkLibraries simplat : ../numlib/libnum.lib ../plot/libplot.lib ++ ../xicc/libxcolorants.lib ../icc/libicc.lib $(LibWin) ; ++ ++# Device space simplex lattice ++MainFromObjects simdlat : sa_simdlat$(SUFOBJ) ; ++Object sa_simdlat$(SUFOBJ) : simdlat.c ; ++ObjectCcFlags sa_simdlat$(SUFOBJ) : -DSTANDALONE_TEST ; ++ObjectHdrs sa_simdlat$(SUFOBJ) : ../h ../numlib ../plot ../icc ../xicc ; ++LinkLibraries simdlat : ../numlib/libnum.lib ../plot/libplot.lib ++ ../xicc/libxcolorants.lib ../icc/libicc.lib $(LibWin) ; ++ ++if $(BUILD_JUNK) { ++ ++ # Test program ++ MainFromObjects test : test$(SUFOBJ) alphix$(SUFOBJ) ; ++ Object test$(SUFOBJ) : test.c ; ++ ObjectHdrs test$(SUFOBJ) : ../h ../numlib ; ++ LinkLibraries test : ../numlib/libnum.lib ; ++ ++ # Test program ++ MainFromObjects temp : temp$(SUFOBJ) ; ++ Object temp$(SUFOBJ) : temp.c ; ++ ObjectHdrs temp$(SUFOBJ) : ../h ../numlib ../plot ; ++ LinkLibraries temp : ../numlib/libnum.lib ../plot/libplot.lib $(LibWin) ; ++ ++ # Test lmean experiment ++ MainFromObjects lmean : lmean$(SUFOBJ) ; ++ Object lmean$(SUFOBJ) : lmean.c ; ++ ObjectHdrs lmean$(SUFOBJ) : ../h ../numlib ../plot ; ++ LinkLibraries lmean : ../numlib/libnum.lib ../plot/libplot.lib $(LibWin) ; ++ ++} +diff -uNr argyllcms-0.70.orig/xicc/Jamfile argyllcms-0.70/xicc/Jamfile +--- argyllcms-0.70.orig/xicc/Jamfile 2008-01-16 02:47:40.000000000 +0100 ++++ argyllcms-0.70/xicc/Jamfile 2008-02-07 20:51:37.000000000 +0100 +@@ -12,9 +12,9 @@ + LINKFLAGS += -framework IOKit ; + LINKFLAGS += -framework CoreFoundation ; + } else { +- WinDir = /usr/X11R6 ; ++ WinDir = /usr ; + LibWinH = $(WinDir)/include/X11 ; +- LibWinD = $(WinDir)/lib ; ++ LibWinD = ; + LibWin = ; + LINKFLAGS += -L$(LibWinD) -lX11 -lXau -lXdmcp ; + } +@@ -23,7 +23,9 @@ + if $(HAVE_TIFF) { # Alternate TIFF library + TIFFLIB = ; + TIFFINC = ; +- LINKLIBS on tiffgamut$(SUFEXE) = $(LINKLIBS) -ltiff ; ++ LINKLIBS on tiffgamut$(SUFEXE) ++ cam02plot$(SUFEXE) = $(LINKLIBS) -ltiff ; ++ + } else { + TIFFLIB = ../tiff/libtiff.lib ; + TIFFINC = ../tiff ; diff --git a/argyllcms-0.70-color-device-file.policy b/argyllcms-0.70-color-device-file.policy new file mode 100644 index 0000000..c55c0ce --- /dev/null +++ b/argyllcms-0.70-color-device-file.policy @@ -0,0 +1,12 @@ + + + + + Directly access color meter devices + System policy prevents access to the color meter devices + + no + yes + + + diff --git a/argyllcms-0.70-printf.patch b/argyllcms-0.70-printf.patch new file mode 100644 index 0000000..fdf2d42 --- /dev/null +++ b/argyllcms-0.70-printf.patch @@ -0,0 +1,1382 @@ +diff -rud argyll_orig/cgats/cgats.c argyll/cgats/cgats.c +--- argyll_orig/cgats/cgats.c 2008-01-08 00:04:01.000000000 +0100 ++++ argyll/cgats/cgats.c 2008-01-08 00:11:09.000000000 +0100 +@@ -1285,33 +1285,33 @@ + if (!t->sup_id) /* If not suppressed */ { + switch(t->tt) { + case it8_7_1: +- if (fp->printf(fp,"IT8.7/1\n\n") < 0) ++ if ((fp->printf)(fp,"IT8.7/1\n\n") < 0) + goto write_error; + break; + case it8_7_2: +- if (fp->printf(fp,"IT8.7/2\n\n") < 0) ++ if ((fp->printf)(fp,"IT8.7/2\n\n") < 0) + goto write_error; + break; + case it8_7_3: +- if (fp->printf(fp,"IT8.7/3\n\n") < 0) ++ if ((fp->printf)(fp,"IT8.7/3\n\n") < 0) + goto write_error; + break; + case it8_7_4: +- if (fp->printf(fp,"IT8.7/4\n\n") < 0) ++ if ((fp->printf)(fp,"IT8.7/4\n\n") < 0) + goto write_error; + break; + case cgats_5: +- if (fp->printf(fp,"CGATS.5\n\n") < 0) ++ if ((fp->printf)(fp,"CGATS.5\n\n") < 0) + goto write_error; + break; + case cgats_X: /* variable CGATS type */ + if (p->cgats_type == NULL) + goto write_error; +- if (fp->printf(fp,"%s\n\n", p->cgats_type) < 0) ++ if ((fp->printf)(fp,"%s\n\n", p->cgats_type) < 0) + goto write_error; + break; + case tt_other: /* User defined file identifier */ +- if (fp->printf(fp,"%s\n\n",p->others[t->oi]) < 0) ++ if ((fp->printf)(fp,"%s\n\n",p->others[t->oi]) < 0) + goto write_error; + break; + case tt_none: +@@ -1326,7 +1326,7 @@ + al->free(al, sfield); + return err(p,-1,"cgats_write(), ID should not be suppressed when table %d type is not the same as previous table",table); + } +- if (fp->printf(fp,"\n\n") < 0) ++ if ((fp->printf)(fp,"\n\n") < 0) + goto write_error; + } + +@@ -1343,7 +1343,7 @@ + al->free(al, sfield); + return err(p,-2,"quote_cs() malloc failed!"); + } +- if (fp->printf(fp,"KEYWORD %s\n",qs) < 0) { ++ if ((fp->printf)(fp,"KEYWORD %s\n",qs) < 0) { + al->free(al, qs); + goto write_error; + } +@@ -1354,7 +1354,7 @@ + al->free(al, sfield); + return err(p,-2,"quote_cs() malloc failed!"); + } +- if (fp->printf(fp,"%s %s%s",t->ksym[i],qs, ++ if ((fp->printf)(fp,"%s %s%s",t->ksym[i],qs, + t->kcom[i] == NULL ? "\n":"\t") < 0) { + al->free(al, qs); + goto write_error; +@@ -1363,7 +1363,7 @@ + } + /* Comment if its present */ + if (t->kcom[i] != NULL) { +- if (fp->printf(fp,"# %s\n",t->kcom[i]) < 0) { ++ if ((fp->printf)(fp,"# %s\n",t->kcom[i]) < 0) { + al->free(al, qs); + goto write_error; + } +@@ -1372,7 +1372,7 @@ + + /* Then the field specification */ + if (!t->sup_fields) { /* If not suppressed */ +- if (fp->printf(fp,"\n") < 0) ++ if ((fp->printf)(fp,"\n") < 0) + goto write_error; + + /* Declare any non-standard fields */ +@@ -1383,7 +1383,7 @@ + al->free(al, sfield); + return err(p,-2,"quote_cs() malloc failed!"); + } +- if (fp->printf(fp,"KEYWORD %s\n",qs) < 0) { ++ if ((fp->printf)(fp,"KEYWORD %s\n",qs) < 0) { + al->free(al, qs); + goto write_error; + } +@@ -1391,16 +1391,16 @@ + } + } + +- if (fp->printf(fp,"NUMBER_OF_FIELDS %d\n",t->nfields) < 0) ++ if ((fp->printf)(fp,"NUMBER_OF_FIELDS %d\n",t->nfields) < 0) + goto write_error; +- if (fp->printf(fp,"BEGIN_DATA_FORMAT\n") < 0) ++ if ((fp->printf)(fp,"BEGIN_DATA_FORMAT\n") < 0) + goto write_error; + for (field = 0; field < t->nfields; field ++) { + DBG((dbgo,"CGATS writing field %d\n",field)); +- if (fp->printf(fp,"%s ",t->fsym[field]) < 0) ++ if ((fp->printf)(fp,"%s ",t->fsym[field]) < 0) + goto write_error; + } +- if (fp->printf(fp,"\nEND_DATA_FORMAT\n") < 0) ++ if ((fp->printf)(fp,"\nEND_DATA_FORMAT\n") < 0) + goto write_error; + } else { /* Check that it is safe to suppress fields */ + cgats_table *pt = &p->t[table-1]; +@@ -1421,9 +1421,9 @@ + } + + /* Then the actual data */ +- if (fp->printf(fp,"\nNUMBER_OF_SETS %d\n",t->nsets) < 0) ++ if ((fp->printf)(fp,"\nNUMBER_OF_SETS %d\n",t->nsets) < 0) + goto write_error; +- if (fp->printf(fp,"BEGIN_DATA\n") < 0) ++ if ((fp->printf)(fp,"BEGIN_DATA\n") < 0) + goto write_error; + for (set = 0; set < t->nsets; set++) { + DBG((dbgo,"CGATS writing set %d\n",set)); +@@ -1434,10 +1434,10 @@ + double val = *((double *)t->fdata[set][field]); + real_format(val, REAL_SIGDIG, fmt); + strcat(fmt," "); +- if (fp->printf(fp,fmt,val) < 0) ++ if ((fp->printf)(fp,fmt,val) < 0) + goto write_error; + } else if (t->ftype[field] == i_t) { +- if (fp->printf(fp,"%d ",*((int *)t->fdata[set][field])) < 0) ++ if ((fp->printf)(fp,"%d ",*((int *)t->fdata[set][field])) < 0) + goto write_error; + } else if (t->ftype[field] == nqcs_t + && !cs_has_ws((char *)t->fdata[set][field]) +@@ -1446,7 +1446,7 @@ + /* We can only print a non-quote string if it doesn't contain white space, */ + /* quote or comment characters, and if it is a standard field or */ + /* can't be mistaken for a number. */ +- if (fp->printf(fp,"%s ",(char *)t->fdata[set][field]) < 0) ++ if ((fp->printf)(fp,"%s ",(char *)t->fdata[set][field]) < 0) + goto write_error; + } else if (t->ftype[field] == nqcs_t + || t->ftype[field] == cs_t) { +@@ -1455,7 +1455,7 @@ + al->free(al, sfield); + return err(p,-2,"quote_cs() malloc failed!"); + } +- if (fp->printf(fp,"%s ",qs) < 0) { ++ if ((fp->printf)(fp,"%s ",qs) < 0) { + al->free(al, qs); + goto write_error; + } +@@ -1465,10 +1465,10 @@ + return err(p,-1,"cgats_write(), illegal data type found"); + } + } +- if (fp->printf(fp,"\n") < 0) ++ if ((fp->printf)(fp,"\n") < 0) + goto write_error; + } +- if (fp->printf(fp,"END_DATA\n") < 0) ++ if ((fp->printf)(fp,"END_DATA\n") < 0) + goto write_error; + + if (sfield != NULL) +@@ -1849,60 +1849,60 @@ + cgats_dump(cgats *p, cgatsFile *fp) { + int tn; + +- fp->printf(fp,"Number of tables = %d\n",p->ntables); ++ (fp->printf)(fp,"Number of tables = %d\n",p->ntables); + for (tn = 0; tn < p->ntables; tn++) { + cgats_table *t; + int i,j; + t = &p->t[tn]; + + +- fp->printf(fp,"\nTable %d:\n",tn); ++ (fp->printf)(fp,"\nTable %d:\n",tn); + + switch(t->tt) /* Table identifier */ + { + case it8_7_1: +- fp->printf(fp,"Identifier = 'IT8.7/1'\n"); ++ (fp->printf)(fp,"Identifier = 'IT8.7/1'\n"); + break; + case it8_7_2: +- fp->printf(fp,"Identifier = 'IT8.7/2'\n"); ++ (fp->printf)(fp,"Identifier = 'IT8.7/2'\n"); + break; + case it8_7_3: +- fp->printf(fp,"Identifier = 'IT8.7/3'\n"); ++ (fp->printf)(fp,"Identifier = 'IT8.7/3'\n"); + break; + case it8_7_4: +- fp->printf(fp,"Identifier = 'IT8.7/4'\n"); ++ (fp->printf)(fp,"Identifier = 'IT8.7/4'\n"); + break; + case cgats_5: +- fp->printf(fp,"Identifier = 'CGATS.5'\n"); ++ (fp->printf)(fp,"Identifier = 'CGATS.5'\n"); + break; + case cgats_X: +- fp->printf(fp,"Identifier = '%s'\n",p->cgats_type); ++ (fp->printf)(fp,"Identifier = '%s'\n",p->cgats_type); + break; + case tt_other: /* User defined file identifier */ +- fp->printf(fp,"Identifier = '%s'\n",p->others[t->oi]); ++ (fp->printf)(fp,"Identifier = '%s'\n",p->others[t->oi]); + break; + default: +- fp->printf(fp,"**ILLEGAL**\n"); ++ (fp->printf)(fp,"**ILLEGAL**\n"); + break; + } + +- fp->printf(fp,"\nNumber of keywords = %d\n",t->nkwords); ++ (fp->printf)(fp,"\nNumber of keywords = %d\n",t->nkwords); + + /* Dump all the keyword symbols and values */ + for (i = 0; i < t->nkwords; i++) { + if (t->ksym[i] != NULL && t->kdata[i] != NULL) + { + if (t->kcom[i] != NULL) +- fp->printf(fp,"Keyword '%s' has value '%s' and comment '%s'\n", ++ (fp->printf)(fp,"Keyword '%s' has value '%s' and comment '%s'\n", + t->ksym[i],t->kdata[i],t->kcom[i]); + else +- fp->printf(fp,"Keyword '%s' has value '%s'\n",t->ksym[i],t->kdata[i]); ++ (fp->printf)(fp,"Keyword '%s' has value '%s'\n",t->ksym[i],t->kdata[i]); + } + if (t->kcom[i] != NULL) +- fp->printf(fp,"Comment '%s'\n",t->kcom[i]); ++ (fp->printf)(fp,"Comment '%s'\n",t->kcom[i]); + } + +- fp->printf(fp,"\nNumber of field defs = %d\n",t->nfields); ++ (fp->printf)(fp,"\nNumber of field defs = %d\n",t->nfields); + + /* Dump all the field symbols */ + for (i = 0; i < t->nfields; i++) { +@@ -1924,10 +1924,10 @@ + fname = "illegal"; + break; + } +- fp->printf(fp,"Field '%s' has type '%s'\n",t->fsym[i],fname); ++ (fp->printf)(fp,"Field '%s' has type '%s'\n",t->fsym[i],fname); + } + +- fp->printf(fp,"\nNumber of sets = %d\n",t->nsets); ++ (fp->printf)(fp,"\nNumber of sets = %d\n",t->nsets); + + /* Dump all the set values */ + for (j = 0; j < t->nsets; j++) { +@@ -1938,22 +1938,22 @@ + double val = *((double *)t->fdata[j][i]); + fmt[0] = ' '; + real_format(val, REAL_SIGDIG, fmt+1); +- fp->printf(fp,fmt,*((double *)t->fdata[j][i])); ++ (fp->printf)(fp,fmt,*((double *)t->fdata[j][i])); + break; + } + case i_t: +- fp->printf(fp," %d",*((int *)t->fdata[j][i])); ++ (fp->printf)(fp," %d",*((int *)t->fdata[j][i])); + break; + case cs_t: + case nqcs_t: +- fp->printf(fp," %s",((char *)t->fdata[j][i])); ++ (fp->printf)(fp," %s",((char *)t->fdata[j][i])); + break; + default: +- fp->printf(fp," illegal"); ++ (fp->printf)(fp," illegal"); + break; + } + } +- fp->printf(fp,"\n"); ++ (fp->printf)(fp,"\n"); + } + } + } +diff -rud argyll_orig/icc/icc.c argyll/icc/icc.c +--- argyll_orig/icc/icc.c 2008-01-08 00:04:01.000000000 +0100 ++++ argyll/icc/icc.c 2008-01-08 00:08:31.000000000 +0100 +@@ -1741,8 +1741,8 @@ + if (verb <= 1) + return; + +- op->printf(op,"Unknown:\n"); +- op->printf(op," Payload size in bytes = %u\n",p->size); ++ (op->printf)(op,"Unknown:\n"); ++ (op->printf)(op," Payload size in bytes = %u\n",p->size); + + /* Print one row of binary and ASCII interpretation if verb == 2, All if == 3 */ + /* else print all of it. */ +@@ -1752,35 +1752,35 @@ + + c = 1; + if (ph != 0) { /* Print ASCII under binary */ +- op->printf(op," "); ++ (op->printf)(op," "); + i = ii; /* Swap */ + c += 11; + } else { +- op->printf(op," 0x%04lx: ",i); ++ (op->printf)(op," 0x%04lx: ",i); + ii = i; /* Swap */ + c += 10; + } + while (i < p->size && c < 75) { + if (ph == 0) +- op->printf(op,"%02x ",p->data[i]); ++ (op->printf)(op,"%02x ",p->data[i]); + else { + if (isprint(p->data[i])) +- op->printf(op," %c ",p->data[i]); ++ (op->printf)(op," %c ",p->data[i]); + else +- op->printf(op," ",p->data[i]); ++ (op->printf)(op," ",p->data[i]); + } + c += 3; + i++; + } + if (ph == 0 || i < p->size) +- op->printf(op,"\n"); ++ (op->printf)(op,"\n"); + + if (ph == 1 && i >= p->size) { +- op->printf(op,"\n"); ++ (op->printf)(op,"\n"); + break; + } + if (ph == 1 && r > 1 && verb < 3) { +- op->printf(op," ...\n"); ++ (op->printf)(op," ...\n"); + break; /* Print 1 row if not verbose */ + } + +@@ -1971,12 +1971,12 @@ + if (verb <= 0) + return; + +- op->printf(op,"UInt8Array:\n"); +- op->printf(op," No. elements = %lu\n",p->size); ++ (op->printf)(op,"UInt8Array:\n"); ++ (op->printf)(op," No. elements = %lu\n",p->size); + if (verb >= 2) { + unsigned long i; + for (i = 0; i < p->size; i++) +- op->printf(op," %lu: %u\n",i,p->data[i]); ++ (op->printf)(op," %lu: %u\n",i,p->data[i]); + } + } + +@@ -2158,12 +2158,12 @@ + if (verb <= 0) + return; + +- op->printf(op,"UInt16Array:\n"); +- op->printf(op," No. elements = %lu\n",p->size); ++ (op->printf)(op,"UInt16Array:\n"); ++ (op->printf)(op," No. elements = %lu\n",p->size); + if (verb >= 2) { + unsigned long i; + for (i = 0; i < p->size; i++) +- op->printf(op," %lu: %u\n",i,p->data[i]); ++ (op->printf)(op," %lu: %u\n",i,p->data[i]); + } + } + +@@ -2345,12 +2345,12 @@ + if (verb <= 0) + return; + +- op->printf(op,"UInt32Array:\n"); +- op->printf(op," No. elements = %lu\n",p->size); ++ (op->printf)(op,"UInt32Array:\n"); ++ (op->printf)(op," No. elements = %lu\n",p->size); + if (verb >= 2) { + unsigned long i; + for (i = 0; i < p->size; i++) +- op->printf(op," %lu: %u\n",i,p->data[i]); ++ (op->printf)(op," %lu: %u\n",i,p->data[i]); + } + } + +@@ -2532,12 +2532,12 @@ + if (verb <= 0) + return; + +- op->printf(op,"UInt64Array:\n"); +- op->printf(op," No. elements = %lu\n",p->size); ++ (op->printf)(op,"UInt64Array:\n"); ++ (op->printf)(op," No. elements = %lu\n",p->size); + if (verb >= 2) { + unsigned long i; + for (i = 0; i < p->size; i++) +- op->printf(op," %lu: h=%lu, l=%lu\n",i,p->data[i].h,p->data[i].l); ++ (op->printf)(op," %lu: h=%lu, l=%lu\n",i,p->data[i].h,p->data[i].l); + } + } + +@@ -2719,12 +2719,12 @@ + if (verb <= 0) + return; + +- op->printf(op,"U16Fixed16Array:\n"); +- op->printf(op," No. elements = %lu\n",p->size); ++ (op->printf)(op,"U16Fixed16Array:\n"); ++ (op->printf)(op," No. elements = %lu\n",p->size); + if (verb >= 2) { + unsigned long i; + for (i = 0; i < p->size; i++) +- op->printf(op," %lu: %f\n",i,p->data[i]); ++ (op->printf)(op," %lu: %f\n",i,p->data[i]); + } + } + +@@ -2906,12 +2906,12 @@ + if (verb <= 0) + return; + +- op->printf(op,"S15Fixed16Array:\n"); +- op->printf(op," No. elements = %lu\n",p->size); ++ (op->printf)(op,"S15Fixed16Array:\n"); ++ (op->printf)(op," No. elements = %lu\n",p->size); + if (verb >= 2) { + unsigned long i; + for (i = 0; i < p->size; i++) +- op->printf(op," %lu: %f\n",i,p->data[i]); ++ (op->printf)(op," %lu: %f\n",i,p->data[i]); + } + } + +@@ -3135,12 +3135,12 @@ + if (verb <= 0) + return; + +- op->printf(op,"XYZArray:\n"); +- op->printf(op," No. elements = %lu\n",p->size); ++ (op->printf)(op,"XYZArray:\n"); ++ (op->printf)(op," No. elements = %lu\n",p->size); + if (verb >= 2) { + unsigned long i; + for (i = 0; i < p->size; i++) { +- op->printf(op," %lu: %s\n",i,string_XYZNumber_and_Lab(&p->data[i])); ++ (op->printf)(op," %lu: %s\n",i,string_XYZNumber_and_Lab(&p->data[i])); + + } + } +@@ -3609,18 +3609,18 @@ + if (verb <= 0) + return; + +- op->printf(op,"Curve:\n"); ++ (op->printf)(op,"Curve:\n"); + + if (p->flag == icmCurveLin) { +- op->printf(op," Curve is linear\n"); ++ (op->printf)(op," Curve is linear\n"); + } else if (p->flag == icmCurveGamma) { +- op->printf(op," Curve is gamma of %f\n",p->data[0]); ++ (op->printf)(op," Curve is gamma of %f\n",p->data[0]); + } else { +- op->printf(op," No. elements = %lu\n",p->size); ++ (op->printf)(op," No. elements = %lu\n",p->size); + if (verb >= 2) { + unsigned long i; + for (i = 0; i < p->size; i++) +- op->printf(op," %3lu: %f\n",i,p->data[i]); ++ (op->printf)(op," %3lu: %f\n",i,p->data[i]); + } + } + } +@@ -3861,68 +3861,68 @@ + if (verb <= 0) + return; + +- op->printf(op,"Data:\n"); ++ (op->printf)(op,"Data:\n"); + switch(p->flag) { + case icmDataASCII: +- op->printf(op," ASCII data\n"); ++ (op->printf)(op," ASCII data\n"); + size = p->size > 0 ? p->size-1 : 0; + break; + case icmDataBin: +- op->printf(op," Binary data\n"); ++ (op->printf)(op," Binary data\n"); + size = p->size; + break; + case icmDataUndef: +- op->printf(op," Undefined data\n"); ++ (op->printf)(op," Undefined data\n"); + size = p->size; + break; + } +- op->printf(op," No. elements = %lu\n",p->size); ++ (op->printf)(op," No. elements = %lu\n",p->size); + + ii = i = 0; + for (r = 1;; r++) { /* count rows */ + if (i >= size) { +- op->printf(op,"\n"); ++ (op->printf)(op,"\n"); + break; + } + if (r > 1 && verb < 2) { +- op->printf(op,"...\n"); ++ (op->printf)(op,"...\n"); + break; /* Print 1 row if not verbose */ + } + + c = 1; + if (ph != 0) { /* Print ASCII under binary */ +- op->printf(op," "); ++ (op->printf)(op," "); + i = ii; + c += 11; + } else { +- op->printf(op," 0x%04lx: ",i); ++ (op->printf)(op," 0x%04lx: ",i); + ii = i; + c += 10; + } + while (i < size && c < 75) { + if (p->flag == icmDataASCII) { + if (isprint(p->data[i])) { +- op->printf(op,"%c",p->data[i]); ++ (op->printf)(op,"%c",p->data[i]); + c++; + } else { +- op->printf(op,"\\%03o",p->data[i]); ++ (op->printf)(op,"\\%03o",p->data[i]); + c += 4; + } + } else { + if (ph == 0) +- op->printf(op,"%02x ",p->data[i]); ++ (op->printf)(op,"%02x ",p->data[i]); + else { + if (isprint(p->data[i])) +- op->printf(op," %c ",p->data[i]); ++ (op->printf)(op," %c ",p->data[i]); + else +- op->printf(op," ",p->data[i]); ++ (op->printf)(op," ",p->data[i]); + } + c += 3; + } + i++; + } + if (i < size) +- op->printf(op,"\n"); ++ (op->printf)(op,"\n"); + if (verb > 2 && p->flag != icmDataASCII && ph == 0) + ph = 1; + else +@@ -4112,35 +4112,35 @@ + if (verb <= 0) + return; + +- op->printf(op,"Text:\n"); +- op->printf(op," No. chars = %lu\n",p->size); ++ (op->printf)(op,"Text:\n"); ++ (op->printf)(op," No. chars = %lu\n",p->size); + + size = p->size > 0 ? p->size-1 : 0; + i = 0; + for (r = 1;; r++) { /* count rows */ + if (i >= size) { +- op->printf(op,"\n"); ++ (op->printf)(op,"\n"); + break; + } + if (r > 1 && verb < 2) { +- op->printf(op,"...\n"); ++ (op->printf)(op,"...\n"); + break; /* Print 1 row if not verbose */ + } + c = 1; +- op->printf(op," 0x%04lx: ",i); ++ (op->printf)(op," 0x%04lx: ",i); + c += 10; + while (i < size && c < 75) { + if (isprint(p->data[i])) { +- op->printf(op,"%c",p->data[i]); ++ (op->printf)(op,"%c",p->data[i]); + c++; + } else { +- op->printf(op,"\\%03o",p->data[i]); ++ (op->printf)(op,"\\%03o",p->data[i]); + c += 4; + } + i++; + } + if (i < size) +- op->printf(op,"\n"); ++ (op->printf)(op,"\n"); + } + } + +@@ -4445,8 +4445,8 @@ + if (verb <= 0) + return; + +- op->printf(op,"DateTimeNumber:\n"); +- op->printf(op," Date = %s\n", string_DateTimeNumber(p)); ++ (op->printf)(op,"DateTimeNumber:\n"); ++ (op->printf)(op," Date = %s\n", string_DateTimeNumber(p)); + } + + /* Allocate variable sized data elements */ +@@ -5951,34 +5951,34 @@ + return; + + if (p->ttype == icSigLut8Type) { +- op->printf(op,"Lut8:\n"); ++ (op->printf)(op,"Lut8:\n"); + } else { +- op->printf(op,"Lut16:\n"); ++ (op->printf)(op,"Lut16:\n"); + } +- op->printf(op," Input Channels = %u\n",p->inputChan); +- op->printf(op," Output Channels = %u\n",p->outputChan); +- op->printf(op," CLUT resolution = %u\n",p->clutPoints); +- op->printf(op," Input Table entries = %u\n",p->inputEnt); +- op->printf(op," Output Table entries = %u\n",p->outputEnt); +- op->printf(op," XYZ matrix = %f, %f, %f\n",p->e[0][0],p->e[0][1],p->e[0][2]); +- op->printf(op," %f, %f, %f\n",p->e[1][0],p->e[1][1],p->e[1][2]); +- op->printf(op," %f, %f, %f\n",p->e[2][0],p->e[2][1],p->e[2][2]); ++ (op->printf)(op," Input Channels = %u\n",p->inputChan); ++ (op->printf)(op," Output Channels = %u\n",p->outputChan); ++ (op->printf)(op," CLUT resolution = %u\n",p->clutPoints); ++ (op->printf)(op," Input Table entries = %u\n",p->inputEnt); ++ (op->printf)(op," Output Table entries = %u\n",p->outputEnt); ++ (op->printf)(op," XYZ matrix = %f, %f, %f\n",p->e[0][0],p->e[0][1],p->e[0][2]); ++ (op->printf)(op," %f, %f, %f\n",p->e[1][0],p->e[1][1],p->e[1][2]); ++ (op->printf)(op," %f, %f, %f\n",p->e[2][0],p->e[2][1],p->e[2][2]); + + if (verb >= 2) { + unsigned int i, j, size; + unsigned int ii[MAX_CHAN]; /* maximum no of input channels */ + +- op->printf(op," Input table:\n"); ++ (op->printf)(op," Input table:\n"); + for (i = 0; i < p->inputEnt; i++) { +- op->printf(op," %3u: ",i); ++ (op->printf)(op," %3u: ",i); + for (j = 0; j < p->inputChan; j++) +- op->printf(op," %1.10f",p->inputTable[j * p->inputEnt + i]); +- op->printf(op,"\n"); ++ (op->printf)(op," %1.10f",p->inputTable[j * p->inputEnt + i]); ++ (op->printf)(op,"\n"); + } + +- op->printf(op,"\n CLUT table:\n"); ++ (op->printf)(op,"\n CLUT table:\n"); + if (p->inputChan > MAX_CHAN) { +- op->printf(op," !!Can't dump > %d input channel CLUT table!!\n",MAX_CHAN); ++ (op->printf)(op," !!Can't dump > %d input channel CLUT table!!\n",MAX_CHAN); + } else { + size = (p->outputChan * uipow(p->clutPoints,p->inputChan)); + for (j = 0; j < p->inputChan; j++) +@@ -5986,14 +5986,14 @@ + for (i = 0; i < size;) { + unsigned int k; + /* Print table entry index */ +- op->printf(op," "); ++ (op->printf)(op," "); + for (j = p->inputChan-1; j < p->inputChan; j--) +- op->printf(op," %2u",ii[j]); +- op->printf(op,":"); ++ (op->printf)(op," %2u",ii[j]); ++ (op->printf)(op,":"); + /* Print table entry contents */ + for (k = 0; k < p->outputChan; k++, i++) +- op->printf(op," %1.10f",p->clutTable[i]); +- op->printf(op,"\n"); ++ (op->printf)(op," %1.10f",p->clutTable[i]); ++ (op->printf)(op,"\n"); + + for (j = 0; j < p->inputChan; j++) { /* Increment index */ + ii[j]++; +@@ -6004,12 +6004,12 @@ + } + } + +- op->printf(op,"\n Output table:\n"); ++ (op->printf)(op,"\n Output table:\n"); + for (i = 0; i < p->outputEnt; i++) { +- op->printf(op," %3u: ",i); ++ (op->printf)(op," %3u: ",i); + for (j = 0; j < p->outputChan; j++) +- op->printf(op," %1.10f",p->outputTable[j * p->outputEnt + i]); +- op->printf(op,"\n"); ++ (op->printf)(op," %1.10f",p->outputTable[j * p->outputEnt + i]); ++ (op->printf)(op,"\n"); + } + + } +@@ -6319,12 +6319,12 @@ + if (verb <= 0) + return; + +- op->printf(op,"Measurement:\n"); +- op->printf(op," Standard Observer = %s\n", string_StandardObserver(p->observer)); +- op->printf(op," XYZ for Measurement Backing = %s\n", string_XYZNumber_and_Lab(&p->backing)); +- op->printf(op," Measurement Geometry = %s\n", string_MeasurementGeometry(p->geometry)); +- op->printf(op," Measurement Flare = %5.1f%%\n", p->flare * 100.0); +- op->printf(op," Standard Illuminant = %s\n", string_Illuminant(p->illuminant)); ++ (op->printf)(op,"Measurement:\n"); ++ (op->printf)(op," Standard Observer = %s\n", string_StandardObserver(p->observer)); ++ (op->printf)(op," XYZ for Measurement Backing = %s\n", string_XYZNumber_and_Lab(&p->backing)); ++ (op->printf)(op," Measurement Geometry = %s\n", string_MeasurementGeometry(p->geometry)); ++ (op->printf)(op," Measurement Flare = %5.1f%%\n", p->flare * 100.0); ++ (op->printf)(op," Standard Illuminant = %s\n", string_Illuminant(p->illuminant)); + } + + /* Allocate variable sized data elements */ +@@ -6802,45 +6802,45 @@ + return; + + if (p->ttype == icSigNamedColorType) +- op->printf(op,"NamedColor:\n"); ++ (op->printf)(op,"NamedColor:\n"); + else +- op->printf(op,"NamedColor2:\n"); +- op->printf(op," Vendor Flag = 0x%x\n",p->vendorFlag); +- op->printf(op," No. colors = %u\n",p->count); +- op->printf(op," No. dev. coords = %u\n",p->nDeviceCoords); +- op->printf(op," Name prefix = '%s'\n",p->prefix); +- op->printf(op," Name suffix = '%s'\n",p->suffix); ++ (op->printf)(op,"NamedColor2:\n"); ++ (op->printf)(op," Vendor Flag = 0x%x\n",p->vendorFlag); ++ (op->printf)(op," No. colors = %u\n",p->count); ++ (op->printf)(op," No. dev. coords = %u\n",p->nDeviceCoords); ++ (op->printf)(op," Name prefix = '%s'\n",p->prefix); ++ (op->printf)(op," Name suffix = '%s'\n",p->suffix); + if (verb >= 2) { + unsigned long i, n; + icmNamedColorVal *vp; + for (i = 0; i < p->count; i++) { + vp = p->data + i; +- op->printf(op," Color %lu:\n",i); +- op->printf(op," Name root = '%s'\n",vp->root); ++ (op->printf)(op," Color %lu:\n",i); ++ (op->printf)(op," Name root = '%s'\n",vp->root); + + if (p->ttype == icSigNamedColor2Type) { + switch(icp->header->pcs) { + case icSigXYZData: +- op->printf(op," XYZ = %f, %f, %f\n", ++ (op->printf)(op," XYZ = %f, %f, %f\n", + vp->pcsCoords[0],vp->pcsCoords[1],vp->pcsCoords[2]); + break; + case icSigLabData: +- op->printf(op," Lab = %f, %f, %f\n", ++ (op->printf)(op," Lab = %f, %f, %f\n", + vp->pcsCoords[0],vp->pcsCoords[1],vp->pcsCoords[2]); + break; + default: +- op->printf(op," Unexpected PCS\n"); ++ (op->printf)(op," Unexpected PCS\n"); + break; + } + } + if (p->nDeviceCoords > 0) { +- op->printf(op," Device Coords = "); ++ (op->printf)(op," Device Coords = "); + for (n = 0; n < p->nDeviceCoords; n++) { + if (n > 0) +- op->printf(op,", "); +- op->printf(op,"%f",vp->deviceCoords[n]); ++ (op->printf)(op,", "); ++ (op->printf)(op,"%f",vp->deviceCoords[n]); + } +- op->printf(op,"\n"); ++ (op->printf)(op,"\n"); + } + } + } +@@ -7140,28 +7140,28 @@ + return; + + if (p->ttype == icSigColorantTableType) +- op->printf(op,"ColorantTable:\n"); +- op->printf(op," No. colorants = %u\n",p->count); ++ (op->printf)(op,"ColorantTable:\n"); ++ (op->printf)(op," No. colorants = %u\n",p->count); + if (verb >= 2) { + unsigned long i; + icmColorantTableVal *vp; + for (i = 0; i < p->count; i++) { + vp = p->data + i; +- op->printf(op," Colorant %lu:\n",i); +- op->printf(op," Name = '%s'\n",vp->name); ++ (op->printf)(op," Colorant %lu:\n",i); ++ (op->printf)(op," Name = '%s'\n",vp->name); + + if (p->ttype == icSigColorantTableType) { + switch(pcs) { + case icSigXYZData: +- op->printf(op," XYZ = %f, %f, %f\n", ++ (op->printf)(op," XYZ = %f, %f, %f\n", + vp->pcsCoords[0],vp->pcsCoords[1],vp->pcsCoords[2]); + break; + case icSigLabData: +- op->printf(op," Lab = %f, %f, %f\n", ++ (op->printf)(op," Lab = %f, %f, %f\n", + vp->pcsCoords[0],vp->pcsCoords[1],vp->pcsCoords[2]); + break; + default: +- op->printf(op," Unexpected PCS\n"); ++ (op->printf)(op," Unexpected PCS\n"); + break; + } + } +@@ -7559,98 +7559,98 @@ + if (verb <= 0) + return; + +- op->printf(op,"TextDescription:\n"); ++ (op->printf)(op,"TextDescription:\n"); + + if (p->size > 0) { + unsigned long size = p->size > 0 ? p->size-1 : 0; +- op->printf(op," ASCII data, length %lu chars:\n",p->size); ++ (op->printf)(op," ASCII data, length %lu chars:\n",p->size); + + i = 0; + for (r = 1;; r++) { /* count rows */ + if (i >= size) { +- op->printf(op,"\n"); ++ (op->printf)(op,"\n"); + break; + } + if (r > 1 && verb < 2) { +- op->printf(op,"...\n"); ++ (op->printf)(op,"...\n"); + break; /* Print 1 row if not verbose */ + } + c = 1; +- op->printf(op," 0x%04lx: ",i); ++ (op->printf)(op," 0x%04lx: ",i); + c += 10; + while (i < size && c < 75) { + if (isprint(p->desc[i])) { +- op->printf(op,"%c",p->desc[i]); ++ (op->printf)(op,"%c",p->desc[i]); + c++; + } else { +- op->printf(op,"\\%03o",p->desc[i]); ++ (op->printf)(op,"\\%03o",p->desc[i]); + c += 4; + } + i++; + } + if (i < size) +- op->printf(op,"\n"); ++ (op->printf)(op,"\n"); + } + } else { +- op->printf(op," No ASCII data\n"); ++ (op->printf)(op," No ASCII data\n"); + } + + /* Can't dump Unicode or ScriptCode as text with portable code */ + if (p->ucSize > 0) { + unsigned long size = p->ucSize; +- op->printf(op," Unicode Data, Language code 0x%x, length %lu chars\n", ++ (op->printf)(op," Unicode Data, Language code 0x%x, length %lu chars\n", + p->ucLangCode, p->ucSize); + i = 0; + for (r = 1;; r++) { /* count rows */ + if (i >= size) { +- op->printf(op,"\n"); ++ (op->printf)(op,"\n"); + break; + } + if (r > 1 && verb < 2) { +- op->printf(op,"...\n"); ++ (op->printf)(op,"...\n"); + break; /* Print 1 row if not verbose */ + } + c = 1; +- op->printf(op," 0x%04lx: ",i); ++ (op->printf)(op," 0x%04lx: ",i); + c += 10; + while (i < size && c < 75) { +- op->printf(op,"%04x ",p->ucDesc[i]); ++ (op->printf)(op,"%04x ",p->ucDesc[i]); + c += 5; + i++; + } + if (i < size) +- op->printf(op,"\n"); ++ (op->printf)(op,"\n"); + } + } else { +- op->printf(op," No Unicode data\n"); ++ (op->printf)(op," No Unicode data\n"); + } + if (p->scSize > 0) { + unsigned long size = p->scSize; +- op->printf(op," ScriptCode Data, Code 0x%x, length %lu chars\n", ++ (op->printf)(op," ScriptCode Data, Code 0x%x, length %lu chars\n", + p->scCode, p->scSize); + i = 0; + for (r = 1;; r++) { /* count rows */ + if (i >= size) { +- op->printf(op,"\n"); ++ (op->printf)(op,"\n"); + break; + } + if (r > 1 && verb < 2) { +- op->printf(op,"...\n"); ++ (op->printf)(op,"...\n"); + break; /* Print 1 row if not verbose */ + } + c = 1; +- op->printf(op," 0x%04lx: ",i); ++ (op->printf)(op," 0x%04lx: ",i); + c += 10; + while (i < size && c < 75) { +- op->printf(op,"%02x ",p->scDesc[i]); ++ (op->printf)(op,"%02x ",p->scDesc[i]); + c += 3; + i++; + } + if (i < size) +- op->printf(op,"\n"); ++ (op->printf)(op,"\n"); + } + } else { +- op->printf(op," No ScriptCode data\n"); ++ (op->printf)(op," No ScriptCode data\n"); + } + } + +@@ -7842,15 +7842,15 @@ + if (verb <= 0) + return; + +- op->printf(op,"DescStruct %u:\n",index); ++ (op->printf)(op,"DescStruct %u:\n",index); + if (verb >= 1) { +- op->printf(op," Dev. Mnfctr. = %s\n",tag2str(p->deviceMfg)); /* ~~~ */ +- op->printf(op," Dev. Model = %s\n",tag2str(p->deviceModel)); /* ~~~ */ +- op->printf(op," Dev. Attrbts = %s\n", string_DeviceAttributes(p->attributes.l)); +- op->printf(op," Dev. Technology = %s\n", string_TechnologySignature(p->technology)); ++ (op->printf)(op," Dev. Mnfctr. = %s\n",tag2str(p->deviceMfg)); /* ~~~ */ ++ (op->printf)(op," Dev. Model = %s\n",tag2str(p->deviceModel)); /* ~~~ */ ++ (op->printf)(op," Dev. Attrbts = %s\n", string_DeviceAttributes(p->attributes.l)); ++ (op->printf)(op," Dev. Technology = %s\n", string_TechnologySignature(p->technology)); + p->device.dump((icmBase *)&p->device, op,verb); + p->model.dump((icmBase *)&p->model, op,verb); +- op->printf(op,"\n"); ++ (op->printf)(op,"\n"); + } + } + +@@ -8031,8 +8031,8 @@ + if (verb <= 0) + return; + +- op->printf(op,"ProfileSequenceDesc:\n"); +- op->printf(op," No. elements = %u\n",p->count); ++ (op->printf)(op,"ProfileSequenceDesc:\n"); ++ (op->printf)(op," No. elements = %u\n",p->count); + if (verb >= 2) { + unsigned long i; + for (i = 0; i < p->count; i++) +@@ -8212,8 +8212,8 @@ + if (verb <= 0) + return; + +- op->printf(op,"Signature\n"); +- op->printf(op," Technology = %s\n", string_TechnologySignature(p->sig)); ++ (op->printf)(op,"Signature\n"); ++ (op->printf)(op," Technology = %s\n", string_TechnologySignature(p->sig)); + } + + /* Allocate variable sized data elements */ +@@ -8420,16 +8420,16 @@ + if (verb <= 0) + return; + +- op->printf(op,"Screening:\n"); +- op->printf(op," Flags = %s\n", string_ScreenEncodings(p->screeningFlag)); +- op->printf(op," No. channels = %u\n",p->channels); ++ (op->printf)(op,"Screening:\n"); ++ (op->printf)(op," Flags = %s\n", string_ScreenEncodings(p->screeningFlag)); ++ (op->printf)(op," No. channels = %u\n",p->channels); + if (verb >= 2) { + unsigned long i; + for (i = 0; i < p->channels; i++) { +- op->printf(op," %lu:\n",i); +- op->printf(op," Frequency: %f\n",p->data[i].frequency); +- op->printf(op," Angle: %f\n",p->data[i].angle); +- op->printf(op," Spot shape: %s\n", string_SpotShape(p->data[i].spotShape)); ++ (op->printf)(op," %lu:\n",i); ++ (op->printf)(op," Frequency: %f\n",p->data[i].frequency); ++ (op->printf)(op," Angle: %f\n",p->data[i].angle); ++ (op->printf)(op," Spot shape: %s\n", string_SpotShape(p->data[i].spotShape)); + } + } + } +@@ -8720,64 +8720,64 @@ + if (verb <= 0) + return; + +- op->printf(op,"Undercolor Removal Curve & Black Generation:\n"); ++ (op->printf)(op,"Undercolor Removal Curve & Black Generation:\n"); + + if (p->UCRcount == 0) { +- op->printf(op," UCR: Not specified\n"); ++ (op->printf)(op," UCR: Not specified\n"); + } else if (p->UCRcount == 1) { +- op->printf(op," UCR: %f%%\n",p->UCRcurve[0]); ++ (op->printf)(op," UCR: %f%%\n",p->UCRcurve[0]); + } else { +- op->printf(op," UCR curve no. elements = %u\n",p->UCRcount); ++ (op->printf)(op," UCR curve no. elements = %u\n",p->UCRcount); + if (verb >= 2) { + unsigned long i; + for (i = 0; i < p->UCRcount; i++) +- op->printf(op," %3lu: %f\n",i,p->UCRcurve[i]); ++ (op->printf)(op," %3lu: %f\n",i,p->UCRcurve[i]); + } + } + if (p->BGcount == 0) { +- op->printf(op," BG: Not specified\n"); ++ (op->printf)(op," BG: Not specified\n"); + } else if (p->BGcount == 1) { +- op->printf(op," BG: %f%%\n",p->BGcurve[0]); ++ (op->printf)(op," BG: %f%%\n",p->BGcurve[0]); + } else { +- op->printf(op," BG curve no. elements = %u\n",p->BGcount); ++ (op->printf)(op," BG curve no. elements = %u\n",p->BGcount); + if (verb >= 2) { + unsigned long i; + for (i = 0; i < p->BGcount; i++) +- op->printf(op," %3lu: %f\n",i,p->BGcurve[i]); ++ (op->printf)(op," %3lu: %f\n",i,p->BGcurve[i]); + } + } + + { + unsigned long i, r, c, size; +- op->printf(op," Description:\n"); +- op->printf(op," No. chars = %lu\n",p->size); ++ (op->printf)(op," Description:\n"); ++ (op->printf)(op," No. chars = %lu\n",p->size); + + size = p->size > 0 ? p->size-1 : 0; + i = 0; + for (r = 1;; r++) { /* count rows */ + if (i >= size) { +- op->printf(op,"\n"); ++ (op->printf)(op,"\n"); + break; + } + if (r > 1 && verb < 2) { +- op->printf(op,"...\n"); ++ (op->printf)(op,"...\n"); + break; /* Print 1 row if not verbose */ + } + c = 1; +- op->printf(op," 0x%04lx: ",i); ++ (op->printf)(op," 0x%04lx: ",i); + c += 10; + while (i < size && c < 73) { + if (isprint(p->string[i])) { +- op->printf(op,"%c",p->string[i]); ++ (op->printf)(op,"%c",p->string[i]); + c++; + } else { +- op->printf(op,"\\%03o",p->string[i]); ++ (op->printf)(op,"\\%03o",p->string[i]); + c += 4; + } + i++; + } + if (i < size) +- op->printf(op,"\n"); ++ (op->printf)(op,"\n"); + } + } + } +@@ -9134,37 +9134,37 @@ + return; + + if (p->tagType == icmVideoCardGammaTableType) { +- op->printf(op,"VideoCardGammaTable:\n"); +- op->printf(op," channels = %d\n", p->u.table.channels); +- op->printf(op," entries = %d\n", p->u.table.entryCount); +- op->printf(op," entrysize = %d\n", p->u.table.entrySize); ++ (op->printf)(op,"VideoCardGammaTable:\n"); ++ (op->printf)(op," channels = %d\n", p->u.table.channels); ++ (op->printf)(op," entries = %d\n", p->u.table.entryCount); ++ (op->printf)(op," entrysize = %d\n", p->u.table.entrySize); + if (verb >= 2) { + /* dump array contents also */ + for (c=0; cu.table.channels; c++) { +- op->printf(op," channel #%d\n",c); ++ (op->printf)(op," channel #%d\n",c); + for (i=0; iu.table.entryCount; i++) { + if (p->u.table.entrySize == 1) { +- op->printf(op," %d: %d\n",i,((ORD8 *)p->u.table.data)[c*p->u.table.entryCount+i]); ++ (op->printf)(op," %d: %d\n",i,((ORD8 *)p->u.table.data)[c*p->u.table.entryCount+i]); + } + else if (p->u.table.entrySize == 2) { +- op->printf(op," %d: %d\n",i,((ORD16 *)p->u.table.data)[c*p->u.table.entryCount+i]); ++ (op->printf)(op," %d: %d\n",i,((ORD16 *)p->u.table.data)[c*p->u.table.entryCount+i]); + } + } + } + } + } else if (p->tagType == icmVideoCardGammaFormulaType) { +- op->printf(op,"VideoCardGammaFormula:\n"); +- op->printf(op," red gamma = %f\n", p->u.formula.redGamma); +- op->printf(op," red min = %f\n", p->u.formula.redMin); +- op->printf(op," red max = %f\n", p->u.formula.redMax); +- op->printf(op," green gamma = %f\n", p->u.formula.greenGamma); +- op->printf(op," green min = %f\n", p->u.formula.greenMin); +- op->printf(op," green max = %f\n", p->u.formula.greenMax); +- op->printf(op," blue gamma = %f\n", p->u.formula.blueGamma); +- op->printf(op," blue min = %f\n", p->u.formula.blueMin); +- op->printf(op," blue max = %f\n", p->u.formula.blueMax); ++ (op->printf)(op,"VideoCardGammaFormula:\n"); ++ (op->printf)(op," red gamma = %f\n", p->u.formula.redGamma); ++ (op->printf)(op," red min = %f\n", p->u.formula.redMin); ++ (op->printf)(op," red max = %f\n", p->u.formula.redMax); ++ (op->printf)(op," green gamma = %f\n", p->u.formula.greenGamma); ++ (op->printf)(op," green min = %f\n", p->u.formula.greenMin); ++ (op->printf)(op," green max = %f\n", p->u.formula.greenMax); ++ (op->printf)(op," blue gamma = %f\n", p->u.formula.blueGamma); ++ (op->printf)(op," blue min = %f\n", p->u.formula.blueMin); ++ (op->printf)(op," blue max = %f\n", p->u.formula.blueMax); + } else { +- op->printf(op," Unknown tag format\n"); ++ (op->printf)(op," Unknown tag format\n"); + } + } + +@@ -9447,10 +9447,10 @@ + if (verb <= 0) + return; + +- op->printf(op,"Viewing Conditions:\n"); +- op->printf(op," XYZ value of illuminant in cd/m^2 = %s\n", string_XYZNumber(&p->illuminant)); +- op->printf(op," XYZ value of surround in cd/m^2 = %s\n", string_XYZNumber(&p->surround)); +- op->printf(op," Illuminant type = %s\n", string_Illuminant(p->stdIlluminant)); ++ (op->printf)(op,"Viewing Conditions:\n"); ++ (op->printf)(op," XYZ value of illuminant in cd/m^2 = %s\n", string_XYZNumber(&p->illuminant)); ++ (op->printf)(op," XYZ value of surround in cd/m^2 = %s\n", string_XYZNumber(&p->surround)); ++ (op->printf)(op," Illuminant type = %s\n", string_Illuminant(p->stdIlluminant)); + } + + /* Allocate variable sized data elements */ +@@ -9697,69 +9697,69 @@ + if (verb <= 0) + return; + +- op->printf(op,"PostScript Product name and CRD names:\n"); ++ (op->printf)(op,"PostScript Product name and CRD names:\n"); + +- op->printf(op," Product name:\n"); +- op->printf(op," No. chars = %lu\n",p->ppsize); ++ (op->printf)(op," Product name:\n"); ++ (op->printf)(op," No. chars = %lu\n",p->ppsize); + + size = p->ppsize > 0 ? p->ppsize-1 : 0; + i = 0; + for (r = 1;; r++) { /* count rows */ + if (i >= size) { +- op->printf(op,"\n"); ++ (op->printf)(op,"\n"); + break; + } + if (r > 1 && verb < 2) { +- op->printf(op,"...\n"); ++ (op->printf)(op,"...\n"); + break; /* Print 1 row if not verbose */ + } + c = 1; +- op->printf(op," 0x%04lx: ",i); ++ (op->printf)(op," 0x%04lx: ",i); + c += 10; + while (i < size && c < 73) { + if (isprint(p->ppname[i])) { +- op->printf(op,"%c",p->ppname[i]); ++ (op->printf)(op,"%c",p->ppname[i]); + c++; + } else { +- op->printf(op,"\\%03o",p->ppname[i]); ++ (op->printf)(op,"\\%03o",p->ppname[i]); + c += 4; + } + i++; + } + if (i < size) +- op->printf(op,"\n"); ++ (op->printf)(op,"\n"); + } + + for (t = 0; t < 4; t++) { /* For all 4 intents */ +- op->printf(op," CRD%ld name:\n",t); +- op->printf(op," No. chars = %lu\n",p->crdsize[t]); ++ (op->printf)(op," CRD%ld name:\n",t); ++ (op->printf)(op," No. chars = %lu\n",p->crdsize[t]); + + size = p->crdsize[t] > 0 ? p->crdsize[t]-1 : 0; + i = 0; + for (r = 1;; r++) { /* count rows */ + if (i >= size) { +- op->printf(op,"\n"); ++ (op->printf)(op,"\n"); + break; + } + if (r > 1 && verb < 2) { +- op->printf(op,"...\n"); ++ (op->printf)(op,"...\n"); + break; /* Print 1 row if not verbose */ + } + c = 1; +- op->printf(op," 0x%04lx: ",i); ++ (op->printf)(op," 0x%04lx: ",i); + c += 10; + while (i < size && c < 73) { + if (isprint(p->crdname[t][i])) { +- op->printf(op,"%c",p->crdname[t][i]); ++ (op->printf)(op,"%c",p->crdname[t][i]); + c++; + } else { +- op->printf(op,"\\%03o",p->crdname[t][i]); ++ (op->printf)(op,"\\%03o",p->crdname[t][i]); + c += 4; + } + i++; + } + if (i < size) +- op->printf(op,"\n"); ++ (op->printf)(op,"\n"); + } + } + } +@@ -10071,36 +10071,36 @@ + if (verb <= 0) + return; + +- op->printf(op,"Header:\n"); +- op->printf(op," size = %d bytes\n",p->size); +- op->printf(op," CMM = %s\n",tag2str(p->cmmId)); +- op->printf(op," Version = %d.%d.%d\n",p->majv, p->minv, p->bfv); +- op->printf(op," Device Class = %s\n", string_ProfileClassSignature(p->deviceClass)); +- op->printf(op," Color Space = %s\n", string_ColorSpaceSignature(p->colorSpace)); +- op->printf(op," Conn. Space = %s\n", string_ColorSpaceSignature(p->pcs)); +- op->printf(op," Date, Time = %s\n", string_DateTimeNumber(&p->date)); +- op->printf(op," Platform = %s\n", string_PlatformSignature(p->platform)); +- op->printf(op," Flags = %s\n", string_ProfileHeaderFlags(p->flags)); +- op->printf(op," Dev. Mnfctr. = %s\n", tag2str(p->manufacturer)); /* ~~~ */ +- op->printf(op," Dev. Model = %s\n", tag2str(p->model)); /* ~~~ */ +- op->printf(op," Dev. Attrbts = %s\n", string_DeviceAttributes(p->attributes.l)); +- op->printf(op," Rndrng Intnt = %s\n", string_RenderingIntent(p->renderingIntent)); +- op->printf(op," Illuminant = %s\n", string_XYZNumber_and_Lab(&p->illuminant)); +- op->printf(op," Creator = %s\n", tag2str(p->creator)); /* ~~~ */ ++ (op->printf)(op,"Header:\n"); ++ (op->printf)(op," size = %d bytes\n",p->size); ++ (op->printf)(op," CMM = %s\n",tag2str(p->cmmId)); ++ (op->printf)(op," Version = %d.%d.%d\n",p->majv, p->minv, p->bfv); ++ (op->printf)(op," Device Class = %s\n", string_ProfileClassSignature(p->deviceClass)); ++ (op->printf)(op," Color Space = %s\n", string_ColorSpaceSignature(p->colorSpace)); ++ (op->printf)(op," Conn. Space = %s\n", string_ColorSpaceSignature(p->pcs)); ++ (op->printf)(op," Date, Time = %s\n", string_DateTimeNumber(&p->date)); ++ (op->printf)(op," Platform = %s\n", string_PlatformSignature(p->platform)); ++ (op->printf)(op," Flags = %s\n", string_ProfileHeaderFlags(p->flags)); ++ (op->printf)(op," Dev. Mnfctr. = %s\n", tag2str(p->manufacturer)); /* ~~~ */ ++ (op->printf)(op," Dev. Model = %s\n", tag2str(p->model)); /* ~~~ */ ++ (op->printf)(op," Dev. Attrbts = %s\n", string_DeviceAttributes(p->attributes.l)); ++ (op->printf)(op," Rndrng Intnt = %s\n", string_RenderingIntent(p->renderingIntent)); ++ (op->printf)(op," Illuminant = %s\n", string_XYZNumber_and_Lab(&p->illuminant)); ++ (op->printf)(op," Creator = %s\n", tag2str(p->creator)); /* ~~~ */ + if (p->icp->ver) { /* V4.0+ feature */ + for (i = 0; i < 16; i++) { /* Check if ID has been set */ + if (p->id[i] != 0) + break; + } + if (i < 16) +- op->printf(op," ID = %02X%02X%02X%02X%02X%02X%02X%02X" ++ (op->printf)(op," ID = %02X%02X%02X%02X%02X%02X%02X%02X" + "%02X%02X%02X%02X%02X%02X%02X%02X\n", + p->id[0], p->id[1], p->id[2], p->id[3], p->id[4], p->id[5], p->id[6], p->id[7], + p->id[8], p->id[9], p->id[10], p->id[11], p->id[12], p->id[13], p->id[14], p->id[15]); + else +- op->printf(op," ID = \n"); ++ (op->printf)(op," ID = \n"); + } +- op->printf(op,"\n"); ++ (op->printf)(op,"\n"); + } + + static void icmHeader_delete( +@@ -11349,7 +11349,7 @@ + if (verb <= 0) + return; + +- op->printf(op,"icc:\n"); ++ (op->printf)(op,"icc:\n"); + + /* Dump the header */ + if (p->header != NULL) +@@ -11359,21 +11359,21 @@ + for (i = 0; i < p->count; i++) { /* For all the tag element data */ + icmBase *ob; + int tr; +- op->printf(op,"tag %d:\n",i); +- op->printf(op," sig %s\n",tag2str(p->data[i].sig)); +- op->printf(op," type %s\n",tag2str(p->data[i].ttype)); +- op->printf(op," offset %d\n", p->data[i].offset); +- op->printf(op," size %d\n", p->data[i].size); ++ (op->printf)(op,"tag %d:\n",i); ++ (op->printf)(op," sig %s\n",tag2str(p->data[i].sig)); ++ (op->printf)(op," type %s\n",tag2str(p->data[i].ttype)); ++ (op->printf)(op," offset %d\n", p->data[i].offset); ++ (op->printf)(op," size %d\n", p->data[i].size); + tr = 0; + if ((ob = p->data[i].objp) == NULL) { + /* The object is not loaded, so load it then free it */ + if ((ob = p->read_tag(p, p->data[i].sig)) == NULL) { +- op->printf(op,"Unable to read: %d, %s\n",p->errc,p->err); ++ (op->printf)(op,"Unable to read: %d, %s\n",p->errc,p->err); + } + tr = 1; + } + if (ob != NULL) { +- /* op->printf(op," refcount %d\n", ob->refcount); */ ++ /* (op->printf)(op," refcount %d\n", ob->refcount); */ + ob->dump(ob,op,verb-1); + + if (tr != 0) { /* Cleanup if temporary */ +@@ -11382,7 +11382,7 @@ + p->data[i].objp = NULL; + } + } +- op->printf(op,"\n"); ++ (op->printf)(op,"\n"); + } + } + +diff -rud argyll_orig/icc/iccdump.c argyll/icc/iccdump.c +--- argyll_orig/icc/iccdump.c 2008-01-08 00:04:01.000000000 +0100 ++++ argyll/icc/iccdump.c 2008-01-08 00:11:55.000000000 +0100 +@@ -215,13 +215,13 @@ + else if (rv == 2) { + icmHeader *p = icco->header; + printf("Id check fails:\n"); +- op->printf(op," ID is = %02X%02X%02X%02X%02X%02X%02X%02X" ++ (op->printf)(op," ID is = %02X%02X%02X%02X%02X%02X%02X%02X" + "%02X%02X%02X%02X%02X%02X%02X%02X\n", + p->id[0], p->id[1], p->id[2], p->id[3], + p->id[4], p->id[5], p->id[6], p->id[7], + p->id[8], p->id[9], p->id[10], p->id[11], + p->id[12], p->id[13], p->id[14], p->id[15]); +- op->printf(op," ID should be = %02X%02X%02X%02X%02X%02X%02X%02X" ++ (op->printf)(op," ID should be = %02X%02X%02X%02X%02X%02X%02X%02X" + "%02X%02X%02X%02X%02X%02X%02X%02X\n", + id[0], id[1], id[2], id[3], id[4], id[5], id[6], id[7], + id[8], id[9], id[10], id[11], id[12], id[13], id[14], id[15]); diff --git a/argyllcms.spec b/argyllcms.spec new file mode 100644 index 0000000..f8fb769 --- /dev/null +++ b/argyllcms.spec @@ -0,0 +1,211 @@ +%define alphaversion Beta8 +%define alphatag .%{alphaversion} +%define archivename argyllV%{version}%{?alphaversion}_src.zip + +Name: argyllcms +Version: 0.70 +Release: 0.8%{?alphatag}%{?dist} +Summary: ICC compatible color management system + +Group: User Interface/X +License: GPLv3 and MIT +URL: http://www.%{name}.com/ + +Source0: %{url}%{archivename} +Source1: %{name}-0.70-19-color.fdi +Source2: %{name}-0.70-color-device-file.policy +Patch0: %{name}-0.70-build.patch +# Patch by Stefan Brüns, bz421921#c18 +Patch1: %{name}-0.70-printf.patch + +BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) +BuildRequires: jam, libtiff-devel, libusb-devel +BuildRequires: libX11-devel, libXext-devel, libXxf86vm-devel, libXinerama-devel +BuildRequires: libXScrnSaver-devel + +Requires: udev, PolicyKit + +%description +The Argyll color management system supports accurate ICC profile creation for +scanners, CMYK printers, film recorders and calibration and profiling of +displays. + +Spectral sample data is supported, allowing a selection of illuminants observer +types, and paper fluorescent whitener additive compensation. Profiles can also +incorporate source specific gamut mappings for perceptual and saturation +intents. Gamut mapping and profile linking uses the CIECAM02 appearance model, +a unique gamut mapping algorithm, and a wide selection of rendering intents. It +also includes code for the fastest portable 8 bit raster color conversion +engine available anywhere, as well as support for fast, fully accurate 16 bit +conversion. Device color gamuts can also be viewed and compared using a VRML +viewer. + + +%package doc +Summary: Argyll CMS documentation +Group: User Interface/X +# Does not really make sense without Argyll CMS itself +Requires: %{name} = %{version}-%{release} + +%description doc +The Argyll color management system supports accurate ICC profile creation for +scanners, CMYK printers, film recorders and calibration and profiling of +displays. + +This package contains the Argyll color management system documentation. + + +%prep +%setup -q -c +# Remove useless bundled libs to make sure we don't accidentally include them +rm -fr tiff libusb libusbw +# Make argyllcms actually build on a modern Linux system +%patch0 -p1 -b .build +# Do not use printf as a function name +%patch1 -p1 -b .printf + + +%build +CCOPTFLAG="%{optflags}" +PATH=$PATH:. +export CCOPTFLAG PATH + +%define jam jam -d x -f../Jambase %{?_smp_mflags} + +# Patching and running makeall.ksh would be easier, but that would hide build +# errors from rpm. If the build process was a real DAG a single for loop would +# be sufficient + +for dir in numlib plot icc cgats ; do + pushd $dir + %{jam} + popd +done + +pushd rspl + %{jam} librspl.a +popd + +pushd xicc + %{jam} libxicc.a libxcolorants.a +popd + +pushd gamut + %{jam} +popd + +pushd spectro + %{jam} libinsttypes.a +popd + +for dir in xicc imdi target scanin profile link tweak render spectro rspl ; do + pushd $dir + %{jam} + popd +done + + +%install +rm -rf %{buildroot} + +# Use upstream's install logic targetting a temp dir so files can be re-sorted +# sanely later + +PATH=$PATH:. +DOTDOT=$PWD/tmp + +export DOTDOT PATH + +for dir in gamut icc imdi link profile render scanin spectro target tweak xicc +do + pushd $dir + %{jam} install + popd +done + +# No business in bin +rm $DOTDOT/bin/*.txt +mv $DOTDOT/bin/*.gam . + +# Licensing madness +install -p -m 0644 icc/License.txt License-icc.txt +install -p -m 0644 cgats/License.txt License-cgats.txt + +ln -s ArgyllDoc.html doc/index.html + +# Little CMS conflict +mv $DOTDOT/bin/icclink $DOTDOT/bin/icclink-%{name} + +# Actual install phase + +install -d -m 0755 %{buildroot}%{_bindir} +install -p -m 0755 tmp/bin/* %{buildroot}%{_bindir} + +install -d -m 0755 %{buildroot}%{_datadir}/%{name} +install -p -m 0644 ref/* scanin/QPcard_201.c* *.gam \ + %{buildroot}%{_datadir}/%{name} +rm %{buildroot}%{_datadir}/%{name}/afiles + +# Do some device permission magic +install -d -m 0755 %{buildroot}%{_datadir}/hal/fdi/policy/10osvendor/ +install -p -m 0644 %{SOURCE1} \ + %{buildroot}%{_datadir}/hal/fdi/policy/10osvendor/19-color.fdi + +install -d -m 0755 %{buildroot}%{_datadir}/PolicyKit/policy/ +install -p -m 0644 %{SOURCE2} \ + %{buildroot}%{_datadir}/PolicyKit/policy/color-device-file.policy + + +%clean +rm -rf %{buildroot} + + +%files +%defattr(0644,root,root,0755) +%doc *.txt + +%attr(0755,root,root) %{_bindir}/* +%dir %{_datadir}/%{name} +%{_datadir}/%{name}/* +%{_datadir}/hal/fdi/policy/10osvendor/19-color.fdi +%{_datadir}/PolicyKit/policy/color-device-file.policy + + +%files doc +%defattr(0644,root,root,0755) +%doc doc/*.html doc/*.jpg doc/*.txt + + +%changelog +* Thu Feb 8 2008 Nicolas Mailhot +- 0.70-0.8.Beta8 +✓ update to Stefan Brüns' latest safe-printf patch (bz421921#c18) + +* Thu Feb 7 2008 Nicolas Mailhot +- 0.70-0.7.Beta8 + Finally got around packaging beta8, I suck +✓ Fedora patches merged upstream, dropped from rpm +✓ Huey handling seems sanitized (needs testing by Huey users) +⚖ Upstream relicensed icc and cgats library to plain MIT license (Thanks!) + +* Thu Dec 14 2007 Nicolas Mailhot +- 0.70-0.6.Beta7 +☹ fix udev typo +- 0.70-0.5.Beta7 +⚖ Remove files that may be GPLv2-only according to upstream + +* Thu Dec 13 2007 Nicolas Mailhot +- 0.70-0.4.Beta7 +✓ move to modern PolicyKit world (David Zeuthen, Frédéric Crozat, me) + +* Wed Dec 12 2007 Nicolas Mailhot +- 0.70-0.3.Beta7 +✓ integrate review feedback +- 0.70-0.2.Beta7 +✓ fix buffer overflows in dispread and iccdump (credits Daniel Berrangé) +- 0.70-0.1.Beta7 +✓ 0.70 beta7 +➤ initial laborious packaging +✌ Build system from hell untangling by Frédéric Crozat (Mandriva), and me +✌ device permission magic by me +☣ Massively under-tested package, please report problems diff --git a/sources b/sources index e69de29..6f1a938 100644 --- a/sources +++ b/sources @@ -0,0 +1 @@ +5cdc5e6cbb794a06c97f484fd8f9053f argyllV0.70Beta8_src.zip