@ -5,26 +5,37 @@
# Windows stuff needs to end in .exe
i f n e q ( , $( findstring mingw ,$ ( CC ) ) )
EXEC_SUFFIX = .exe
EXEC_SUFFIX = .exe
LIB_SUFFIX = dll
e l s e
EXEC_SUFFIX =
LIB_SUFFIX = so
e n d i f
# Basic stuff
# Set to disable looking for gutenprint for the backend name..
#NO_GUTENPRINT = 1
# Base executable name
EXEC_NAME ?= dyesub_backend$( EXEC_SUFFIX)
# More stuff..
CPUS ?= $( shell nproc)
#NO_GUTENPRINT = 1
REVISION ?= -g$( shell if [ -d .git ] ; then git rev-parse --short HEAD; else echo "NONE" ; fi )
REVISION ?= -$( shell if [ -n " ${ BUILD_NUMBER } " ] ; then echo -n " b ${ BUILD_NUMBER } " - ; fi ; if [ -d .git ] ; then echo -n "g" ; git rev-parse --short HEAD; else echo -n "NONE" ; fi )
# Destination directories (rely on CUPS to tell us where)
# Destination directories (rely on CUPS & Gutenprint to tell us where)
GP_PREFIX ?= $( shell pkg-config --variable= prefix gutenprint)
PREFIX ?=
CUPS_BACKEND_DIR ?= $( PREFIX) $( shell cups-config --serverbin) /backend
CUPS_DATA_DIR ?= $( PREFIX) $( shell cups-config --datadir)
LIB_DIR ?= $( PREFIX) /usr/local/lib/
i f e q ( $( GP_PREFIX ) , )
GP_PREFIX = /usr/local
e n d i f
BACKEND_DATA_DIR ?= $( GP_PREFIX) /share/gutenprint/backend_data
i f n e q ( , $( findstring mingw ,$ ( CC ) ) )
BACKEND_DATA_DIR ?= backend_data
e n d i f
# Figure out what the backend name needs to be
i f e q ( $( NO_GUTENPRINT ) , )
@ -42,9 +53,17 @@ endif
# Fallthrough
BACKEND_NAME ?= gutenprint5X+usb
# Libraries:
LIBS6145_NAME = lib6145/libS6145ImageReProcess.$( LIB_SUFFIX)
LIBS6145_SOURCES = lib6145/libS6145ImageReProcess.c
LIB70X_NAME ?= lib70x/libMitsuD70ImageReProcess.$( LIB_SUFFIX)
LIB70X_SOURCES = lib70x/libMitsuD70ImageReProcess.c
LIBRARIES = $( LIBS6145_NAME) $( LIB70X_NAME)
# Tools
CC ?= $( CROSS_COMPILE) gcc
LD ?= $( CROSS_COMPILE) gcc
LD ?= $( CROSS_COMPILE) ld
CPPCHECK ?= cppcheck
MKDIR ?= mkdir
INSTALL ?= install
@ -52,16 +71,12 @@ LN ?= ln
RM ?= rm
# Flags
CFLAGS += -Wall -Wextra -Wformat-security -g -Og -D_FORTIFY_SOURCE= 2 -D_GNU_SOURCE -std= c99 # -Wconversion
CFLAGS += -Wall -Wextra -Wformat-security -funit-at-a-time - g -Og -D_FORTIFY_SOURCE= 2 -D_GNU_SOURCE -std= c99 # -Wconversion
LDFLAGS += $( shell pkg-config --libs libusb-1.0)
CPPFLAGS += $( shell pkg-config --cflags libusb-1.0)
# CPPFLAGS += -DLIBUSB_PRE_1_0_10
CPPFLAGS += -DURI_PREFIX= \" $( BACKEND_NAME) \" $( OLD_URI)
# If you want to use LTO..
#CFLAGS += -flto
# If not...
CFLAGS += -funit-at-a-time
LIBLDFLAGS = -g -shared
# List of backends
BACKENDS = canonselphy canonselphyneo dnpds40 hiti kodak605 kodak1400 kodak6800 magicard mitsu70x mitsu9550 mitsud90 mitsup95d shinkos1245 shinkos2145 shinkos6145 shinkos6245 sonyupd sonyupdneo
@ -75,6 +90,9 @@ CPPFLAGS += -DUSE_DLOPEN
LDFLAGS += -ldl
e n d i f
# Linking..
LDFLAGS += $( CFLAGS) $( CPPFLAGS)
# Build stuff
DEPS += backend_common.h
SOURCES = backend_common.c backend_sinfonia.c $( addsuffix .c,$( addprefix backend_,$( BACKENDS) ) )
@ -86,13 +104,16 @@ SINFONIA_BACKENDS_O = $(addsuffix .o,$(addprefix backend_,$(SINFONIA_BACKENDS)))
# And now the rules!
.PHONY : clean all install cppcheck
all : $( EXEC_NAME ) $( BACKENDS )
all : $( EXEC_NAME ) $( BACKENDS ) libraries
libraries : $( LIBRARIES )
# $(MAKE) -C lib70x $@
%.o : %.c $( DEPS )
$( CC) $( CFLAGS) $( CPPFLAGS) -c -o $@ $<
$(EXEC_NAME) : $( SOURCES :.c =.o ) $( DEPS )
$( CC) -o $@ $( SOURCES:.c= .o) $( CFLAGS) $( CPPFLAGS) $( LDFLAGS)
$( CC) -o $@ $( SOURCES:.c= .o) $( LDFLAGS)
$(BACKENDS) : $( EXEC_NAME )
$( LN) -sf $( EXEC_NAME) $@
@ -113,24 +134,39 @@ testgp_%: dyesub_backend
STP_PARALLEL = $( CPUS) ./regression-gp.pl regression-gp.csv $( subst testgp_,,$@ )
cppcheck :
$( CPPCHECK) -q -v --std= c99 --enable= all --suppress= variableScope --suppress= selfAssignment --suppress= unusedStructMember -I. -I/usr/include -DCORRTABLE_PATH= \" $( BACKEND_DATA_DIR) \" --include= lib70x/libMitsuD70ImageReProcess.h $( CPPFLAGS) $( SOURCES)
$( CPPCHECK) -q -v --std= c99 --enable= all --suppress= variableScope --suppress= selfAssignment --suppress= unusedStructMember -I. -I/usr/include -DCORRTABLE_PATH= \" $( BACKEND_DATA_DIR) \" --include= lib70x/libMitsuD70ImageReProcess.h $( CPPFLAGS) $( SOURCES) $( LIB70X_SOURCES) $( LIBS6145_SOURCES)
install :
$( MKDIR) -p $( CUPS_BACKEND_DIR)
$( INSTALL) -o root -m 700 $( EXEC_NAME) $( CUPS_BACKEND_DIR) /$( BACKEND_NAME)
$( INSTALL) -o root -m 755 $( LIBRARIES) $( LIB_DIR)
$( MKDIR) -p $( CUPS_DATA_DIR) /usb
$( INSTALL) -o root -m 644 blacklist $( CUPS_DATA_DIR) /usb/net.sf.gimp-print.usb-quirks
$( MKDIR) -p $( BACKEND_DATA_DIR)
$( INSTALL) -o root -m 644 hiti_data/*bin $( BACKEND_DATA_DIR)
$( INSTALL) -o root -m 644 lib70x/data/*raw $( BACKEND_DATA_DIR)
$( INSTALL) -o root -m 644 lib70x/data/*lut $( BACKEND_DATA_DIR)
$( INSTALL) -o root -m 644 lib70x/data/*cpc $( BACKEND_DATA_DIR)
$( INSTALL) -o root -m 644 lib70x/data/*dat $( BACKEND_DATA_DIR)
clean :
$( RM) $( EXEC_NAME) $( BACKENDS) $( SOURCES:.c= .o) lib70x/*o lib6145/*o
$( RM) $( EXEC_NAME) $( BACKENDS) $( LIBRARIES) $( SOURCES:.c= .o) $( LIBS6145_SOURCES:.c= .o) $( LIB70X_SOURCES:.c= .o)
release : clean
release :
$( RM) -Rf selphy_print$( REVISION)
$( MKDIR) -p selphy_print$( REVISION)
cp -a *.c *.h Makefile blacklist COPYING README lib6145 lib70x hiti_data selphy_print$( REVISION)
tar -czvf selphy_print$( REVISION) .tar.gz selphy_print$( REVISION)
cp -a COPYING README selphy_print$( REVISION)
i f e q ( , $( findstring mingw ,$ ( CC ) ) )
cp -a *.c *.h Makefile blacklist lib6145 lib70x hiti_data selphy_print$( REVISION)
tar -czvf selphy_print-src$( REVISION) .tar.gz selphy_print$( REVISION)
e l s e
cp -a $( EXEC_NAME) $( LIBRARIES) selphy_print$( REVISION)
$( MKDIR) -p selphy_print$( REVISION) /$( BACKEND_DATA_DIR)
cp -a hiti_data lib70x/data/* selphy_print$( REVISION) /$( BACKEND_DATA_DIR)
cp -a lib70x/README selphy_print$( REVISION) /$( BACKEND_DATA_DIR) /README-lib70x
cp -a lib6145/README selphy_print$( REVISION) /$( BACKEND_DATA_DIR) /README-lib6145
zip -r selphy_print-mingw$( REVISION) .zip selphy_print$( REVISION)
e n d i f
$( RM) -Rf selphy_print$( REVISION)
# Backend-specific joy:
@ -138,3 +174,12 @@ $(SINFONIA_BACKENDS_O): backend_sinfonia.h
backend_mitsu70x.o : CPPFLAGS += -DCORRTABLE_PATH =\"$( BACKEND_DATA_DIR ) \" -include lib 70x /libMitsuD 70ImageReProcess .h
backend_mitsu9550.o : CPPFLAGS += -DCORRTABLE_PATH =\"$( BACKEND_DATA_DIR ) \" -include lib 70x /libMitsuD 70ImageReProcess .h
backend_hiti.o : CPPFLAGS += -DCORRTABLE_PATH =\"$( BACKEND_DATA_DIR ) \"
# Library joy:
%.$(LIB_SUFFIX) : CFLAGS += -fPIC --no -strict -overflow
$(LIB70X_NAME) : $( LIB 70X_SOURCES :.c =.o )
$( CC) $( LIBLDFLAGS) -o $@ $^
$(LIBS6145_NAME) : $( LIBS 6145_SOURCES :.c =.o )
$( CC) $( LIBLDFLAGS) -o $@ $^