-#in the next section to remove that particular feature from compilation
-APP_CFLAGS = -DWITH_LF -DWITH_ISO15693 -DWITH_ISO14443a -DWITH_ISO14443b -DWITH_ICLASS -DWITH_LEGICRF -DWITH_HITAG -DWITH_CRC -fno-strict-aliasing
-#-DWITH_LCD
-
-#SRC_LCD = fonts.c LCD.c
-SRC_LF = lfops.c hitag2.c lfsampling.c
-SRC_ISO15693 = iso15693.c iso15693tools.c
-SRC_ISO14443a = epa.c iso14443a.c mifareutil.c mifarecmd.c mifaresniff.c
-SRC_ISO14443b = iso14443.c
-SRC_CRAPTO1 = crapto1.c crypto1.c des.c aes.c
-SRC_CRC = iso14443crc.c crc.c crc16.c crc32.c
-
+#in the next section to remove that particular feature from compilation
+APP_CFLAGS = -DON_DEVICE \
+ -fno-strict-aliasing -ffunction-sections -fdata-sections
+
+include ../common/Makefile_Enabled_Options.common
+
+ifneq (,$(findstring WITH_LCD,$(APP_CFLAGS)))
+ SRC_LCD = fonts.c LCD.c
+else
+ SRC_LCD =
+endif
+SRC_LF = lfops.c hitag2.c hitagS.c lfsampling.c pcf7931.c lfdemod.c protocols.c
+SRC_ISO15693 = iso15693.c iso15693tools.c
+SRC_ISO14443a = epa.c iso14443a.c mifareutil.c mifarecmd.c mifaresniff.c mifaresim.c
+SRC_ISO14443b = iso14443b.c
+SRC_CRAPTO1 = crypto1.c des.c
+SRC_CRC = iso14443crc.c crc.c crc16.c crc32.c parity.c
+ifneq (,$(findstring WITH_SMARTCARD,$(APP_CFLAGS)))
+ SRC_SMARTCARD = i2c.c
+else
+ SRC_SMARTCARD =
+endif
+#the FPGA bitstream files. Note: order matters!
+FPGA_BITSTREAMS = fpga_lf.bit fpga_hf.bit
+
+#the zlib source files required for decompressing the fpga config at run time
+SRC_ZLIB = inflate.c inffast.c inftrees.c adler32.c zutil.c
+#additional defines required to compile zlib
+ZLIB_CFLAGS = -DZ_SOLO -DZ_PREFIX -DNO_GZIP -DZLIB_PM3_TUNED
+APP_CFLAGS += $(ZLIB_CFLAGS)
+# zlib includes:
+APP_CFLAGS += -I../zlib
+
+# Compile these in thumb mode (small size)