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 )
#        SVN version has these:	
#	 inflate64.c lzma_iface.c
#	 $(addprefix libclamav_lzma_, \
#	 LzmaStateDecode.c) \

PROG = clamscan
CPPFLAGS += -DHAVE_CONFIG_H -I.
LDFLAGS = -lz
RUN_OPTIONS = --debug --exclude-dir .svn --verbose -d$(PROJ_SRC_DIR)/dbdir -r $(PROJ_SRC_DIR)/inputs/*

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


# -- OS macros --
#  It is especially important to get this correctly defined for windows.

ifeq ($(TARGET_OS),Darwin)
   CPPFLAGS += -DC_DARWIN
endif
ifeq ($(TARGET_OS),AIX)
   CPPFLAGS += -DC_AIX
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 "

ifeq ($(TARGET_OS),Darwin)
EXTRA_LLIFLAGS += -load=libz.dylib
else
ifeq ($(TARGET_OS),Linux)
EXTRA_LLIFLAGS += -load=libz.so.1
else
EXTRA_LLIFLAGS += -load=libz
endif
endif
