MYARCH := $(shell uname -ms | tr ' ' -) DEBUG=0 STATIC=0 USE_TRIDGE_MFS_SO=0 CFLAGS = -Wall -I. -I/sw/include -I/sw/include/gnugetopt -I../include -D_GNU_SOURCE CCLDFLAGS = IS_TIVO := $(shell grep -qsE 'Teleworld|TiVo' /proc/cpuinfo && echo 1 || echo 0) ifneq ($(IS_TIVO),0) MYARCH = $(shell uname -m) endif ARCH := $(MYARCH) ifeq ($(ARCH),ppc) # ARCH is ppc PREFIX=powerpc-TiVo-linux- CFLAGS += -DTIVO -DTIVO_S1 EXTRABINS = mfs-utils/s1_unscramble else # ARCH is mips or native (assuming kernel/glibc largefile support) CFLAGS += -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE ifeq ($(ARCH),mips) # ARCH is mips PREFIX=mips-TiVo-linux- CFLAGS += -mips2 -DTIVO -DTIVO_S2 #CCLDFLAGS += -static else # host ARCH, not cross compiling #EXTRABINS = vplayer sd-h400_unlock vsplit ifeq ($(ARCH),Darwin-Power-Macintosh) CFLAGS += -DNEED_STRNDUP -DNEED_STRNDUPA -DNEED_STRDUPA else CFLAGS += -DNEED_ALLOCA_H ifeq ($(findstring CYGWIN,$(ARCH)),CYGWIN) CFLAGS += -DNEED_STRNDUPA -DNEED_STRDUPA endif endif endif endif ifneq ($(IS_TIVO),0) PREFIX = endif #AN PREFIX=/usr/local/tivo/bin/ CFLAGS += -DTIVO -DTIVO_S1 ARCH=ppc PPC_STRIP=/usr/local/tivo/bin/strip PPC_CFLAGS = -Wall -DTIVO -DTIVO_S1 -DPPC -O2 -msoft-float #EXTRABINS = mfs-utils/tdnsip #AN CC = $(PREFIX)gcc AR = $(PREFIX)ar ifeq ($(DEBUG),1) CFLAGS += -O0 -ggdb #LIBS += -lefence -lpthread else CFLAGS += -O3 CCLDFLAGS += -Wl,-s endif ifeq ($(STATIC),1) CCLDFLAGS += -static TRIDGE_MFS_LIB=$(OBJDIR)/libtridgemfs.a else ifeq ($(USE_TRIDGE_MFS_SO),1) TRIDGE_MFS_LIB=$(BINDIR)/libtridgemfs.so.1.0 CCLDFLAGS += -Wl,-rpath,/usr/local/lib else TRIDGE_MFS_LIB=$(OBJDIR)/libtridgemfs.a endif endif MFS_COMMON = mfs-utils/mfs.c mfs-utils/object.c mfs-utils/util.c mfs-utils/bitmap.c mfs-utils/io.c mfs-utils/partition.c \ mfs-utils/crc.c mfs-utils/schema.c mfs-utils/query.c \ mfs-utils/log.c COMMON = $(MFS_COMMON) tivodns.c base64.c mfs_attr.c osd_write.c BINS = mfs_test emuProxyZA #COMMON = mfs.c object.c util.c bitmap.c io.c partition.c \ # crc.c pri.c export.c schema.c query.c tzoffset.c tar.c \ # credits.c read_xml.c generate_xml.c generate_NowShowing.c attribute.c log.c #BINS = \ # mfs_info mfs_ls mfs_streams mfs_dumpobj mfs_dumpschema mfs_tzoffset mfs_test \ # mfs_import mfs_uberexport mfs_burstcmds \ # mfs_export mfs_stream mfs_tarstream mfs_tmfstream \ # tserver vserver NowShowing ciphercheck \ # vplay \ # mfs_dump mfs_poke \ # mfs_bitmap mfs_purge mfs_getslice mfs_findzero OBJDIR = obj.$(ARCH) BINDIR = $(ARCH) .PHONY : all clean binaries mkdirs tags all: proto.h mkdirs binaries clean: rm -rf obj.* bin.* proto.h preload_schema.h *~ binaries: $(BINS:%=$(BINDIR)/%) $(EXTRABINS:%=$(BINDIR)/%) mkdirs: mkdir -p $(OBJDIR) $(BINDIR) $(OBJDIR)/mfs-utils tags: etags *.[ch] mfs.h: proto.h proto.h: $(MFS_COMMON) cat $(MFS_COMMON) | awk -f mfs-utils/mkproto.awk > mfs-utils/proto.h .PRECIOUS : $(OBJDIR)/%.o $(OBJDIR)/%.o : %.c mfs-utils/mfs.h mfs-utils/log.h $(CC) $(CFLAGS) -c $< -o $@ $(BINDIR)/% : $(OBJDIR)/%.o $(TRIDGE_MFS_LIB) $(CC) $(CCLDFLAGS) -o $@ $^ $(LIBS) $(BINDIR)/libtridgemfs.so.1.0: $(COMMON:%.c=$(OBJDIR)/%.o) $(SCHEMA:%.c=$(OBJDIR)/%.o) $(CC) -shared $(CCLDFLAGS) -Wl,-soname,libtridgemfs.so.1 -o $@ $^ $(OBJDIR)/libtridgemfs.a: $(COMMON:%.c=$(OBJDIR)/%.o) $(SCHEMA:%.c=$(OBJDIR)/%.o) $(AR) -rc $@ $^ ; $(PREFIX)ranlib $@ mfs-utils/schema.c: mfs-utils/preload_schema.h mfs-utils/preload_schema.h: mfs-utils/schema-7.1a-02.txt perl mfs-utils/make-preload-schema.pl <$< >$@