| LEVEL = ../../../ | 
 | #RUN_OPTIONS =  | 
 |  | 
 | Source = $(addprefix libclamav_, \ | 
 |  aspack.c autoit.c binhex.c blob.c cab.c chmunpack.c cvd.c dconf.c dsig.c\ | 
 |  elf.c entconv.c filetypes.c fsg.c hashtab.c htmlnorm.c\ | 
 |  is_tar.c jscript.c line.c lockdb.c matcher-ac.c matcher-bm.c\ | 
 |  matcher.c mbox.c md5.c message.c mew.c msexpand.c mspack.c ole2_extract.c\ | 
 |  others.c packlibs.c pdf.c pe.c petite.c phishcheck.c phish_domaincheck_db.c phish_whitelist.c\ | 
 |  pst.c readdb.c rebuildpe.c regex_list.c rtf.c scanners.c sis.c snprintf.c special.c spin.c str.c suecrypt.c\ | 
 |  table.c text.c tnef.c unarj.c unsp.c untar.c unzip.c upack.c upx.c uuencode.c vba_extract.c wwunpack.c yc.c)\ | 
 |  $(addprefix clamscan_, \ | 
 |  clamscan.c manager.c others.c treewalk.c)\ | 
 |  $(addprefix shared_, \ | 
 |  cdiff.c cfgparser.c getopt.c misc.c network.c options.c output.c sha256.c)\ | 
 |  $(addprefix libclamav_regex_, \ | 
 |  regerror.c, regfree.c, \ | 
 |  regcomp.c, regexec.c, strlcpy.c)\ | 
 |  $(addprefix libclamav_nsis_, \ | 
 |  nulsft.c, bzlib.c, infblock.c, LZMADecode.c ) \ | 
 |  $(addprefix zlib_, \ | 
 |  adler32.c \ | 
 |  compress.c \ | 
 |  crc32.c \ | 
 |  deflate.c \ | 
 |  gzclose.c \ | 
 |  gzlib.c \ | 
 |  gzread.c \ | 
 |  gzwrite.c \ | 
 |  infback.c \ | 
 |  inffast.c \ | 
 |  inflate.c \ | 
 |  inftrees.c \ | 
 |  trees.c \ | 
 |  uncompr.c \ | 
 |  zutil.c) | 
 | # SVN version has these: | 
 | # inflate64.c lzma_iface.c | 
 | # $(addprefix libclamav_lzma_, \ | 
 | # LzmaStateDecode.c) \ | 
 |  | 
 | INPUT = $(PROJ_SRC_DIR)/inputs/clam.cab \ | 
 |  $(PROJ_SRC_DIR)/inputs/clamdoc.tar.gz \ | 
 |  $(PROJ_SRC_DIR)/inputs/clam.exe \ | 
 |  $(PROJ_SRC_DIR)/inputs/clam.exe.bz2 \ | 
 |  $(PROJ_SRC_DIR)/inputs/clam-v2.rar \ | 
 |  $(PROJ_SRC_DIR)/inputs/clam-v3.rar \ | 
 |  $(PROJ_SRC_DIR)/inputs/clam.zip \ | 
 |  $(PROJ_SRC_DIR)/inputs/README \ | 
 |  $(PROJ_SRC_DIR)/inputs/rtf-test/Doc11.rtf \ | 
 |  $(PROJ_SRC_DIR)/inputs/rtf-test/Doc1.rtf \ | 
 |  $(PROJ_SRC_DIR)/inputs/rtf-test/Doc22.rtf \ | 
 |  $(PROJ_SRC_DIR)/inputs/rtf-test/Doc2.rtf \ | 
 |  $(PROJ_SRC_DIR)/inputs/rtf-test/doc3.rtf \ | 
 |  $(PROJ_SRC_DIR)/inputs/rtf-test/docCLAMexe.rtf \ | 
 |  $(PROJ_SRC_DIR)/inputs/rtf-test/rtf1.rtf \ | 
 |  $(PROJ_SRC_DIR)/inputs/rtf-test/rtf-novirus.rtf | 
 |  | 
 | PROG = clamscan | 
 | CPPFLAGS += -DHAVE_CONFIG_H -I$(PROJ_SRC_DIR) -I$(PROJ_SRC_DIR)/zlib -DDONT_LOCK_DBDIRS | 
 | RUN_OPTIONS = --debug --exclude-dir .svn --verbose -d$(PROJ_SRC_DIR)/dbdir -r $(INPUT) | 
 |  | 
 | include $(LEVEL)/Makefile.config | 
 |  | 
 |  | 
 | # for ClamAV these are in clamav-config.h, but since we can't run configure, we have to define them here | 
 |  | 
 | CPPFLAGS += -Wno-error=incompatible-pointer-types | 
 | # -- OS macros -- | 
 | # It is especially important to get this correctly defined for windows. | 
 |  | 
 | ifeq ($(TARGET_OS),Darwin) | 
 |  CPPFLAGS += -DC_DARWIN | 
 | endif | 
 | # ClamAV utilizes functions from <netdb.h>. However, since _XOPEN_SOURCE=700 is | 
 | # defined globally on AIX, it prevents us from having access to some of the | 
 | # functions that are required within ClamAV. Thus, _XOPEN_SOURCE=600 is defined | 
 | # explicitly for AIX to resolve this issue. | 
 | ifeq ($(TARGET_OS),AIX) | 
 |  CPPFLAGS += -DC_AIX -D_XOPEN_SOURCE=600 | 
 | endif | 
 | ifeq ($(TARGET_OS), IRIX) | 
 |  CPPFLAGS += -DC_IRIX | 
 | endif | 
 | ifeq ($(TARGET_OS), Cygwin) | 
 |  CPPFLAGS += -DC_CYGWIN | 
 | endif | 
 | ifeq ($(TARGET_OS), FreeBSD) | 
 |  CPPFLAGS += -DC_BSD | 
 | endif | 
 | ifeq ($(TARGET_OS), OpenBSD) | 
 |  CPPFLAGS += -DC_BSD | 
 | endif | 
 | ifeq ($(TARGET_OS), NetBSD) | 
 |  CPPFLAGS += -DC_BSD | 
 | endif | 
 | ifeq ($(TARGET_OS), HP-UX) | 
 |  CPPFLAGS += -DC_HPUX | 
 | endif | 
 | ifeq ($(TARGET_OS), Interix) | 
 |  CPPFLAGS += -DC_INTERIX -DC_WINDOWS | 
 | endif | 
 | ifeq ($(TARGET_OS), Win32) | 
 |  CPPFLAGS += -DC_WINDOWS | 
 | endif | 
 | ifeq ($(TARGET_OS), mingw) | 
 |  CPPFLAGS += -DC_WINDOWS | 
 | endif | 
 | ifeq ($(TARGET_OS), Linux) | 
 |  CPPFLAGS += -DC_LINUX | 
 | endif | 
 |  | 
 | # -- except ARM all arches have WORDS_BIGENDIAN same as ENDIAN. | 
 | # for ARM we'd need a runtime autoconf check to detect. | 
 | # Only affects autoit.c, not defining this macro will partially disable it. | 
 |  | 
 | ifneq ($(ARCH),ARM) | 
 | ifeq ($(ENDIAN),little) | 
 |  CPPFLAGS += -DFPU_WORDS_BIGENDIAN=0 | 
 | endif | 
 | ifeq ($(ENDIAN),big) | 
 |  CPPFLAGS += -DFPU_WORDS_BIGENDIAN=1 | 
 | endif | 
 | endif | 
 |  | 
 |  | 
 | # -- endianness detection -- | 
 | # It is important to get this correctly, especially for Sparc. | 
 | # If arch is little endian the code possibly does unaligned accesses, that would | 
 | # cause a SIGBUS on Sparc. | 
 |  | 
 | ifeq ($(ENDIAN),little) | 
 |  CPPFLAGS += -DWORDS_BIGENDIAN=0 | 
 | endif | 
 | ifeq ($(ENDIAN),big) | 
 |  CPPFLAGS += -DWORDS_BIGENDIAN=1 | 
 | endif | 
 |  | 
 | include ../../Makefile.multisrc | 
 | #compare debug output | 
 | DIFFPROG := $(PROGDIR)/DiffOutput.sh "diff " |