-# the plaform
-PLATFORM = MARTE_OS
-# the path of the platform
+# Platform: MARTE_OS, DUMMY_OS, RT_LINUX, OSE, AQuoSA
+PLATFORM = MARTE_OS
PLATFORM_PATH = $(HOME)/marte
-# the path for exporting programs linux_arch -> ./
-EXPORT_PATH = $(HOME)/export
+EXPORT_PATH = $(HOME)/export
-# enable networks with their flag (change DISABLED<->ENABLED)
-RTEP_ENABLE = RTEP_FNA_ENABLED
-UNIX_ENABLE = UNIX_FNA_DISABLED
+# utilization or response time
+SA_VERSION = utilization
# the gcc to use
CC = mgcc
-# the path to the FRSH directory.
-FRSH_PATH = $(HOME)/frescor/frsh
-# the path to the FOSA directory.
-FOSA_PATH = $(HOME)/frescor/fosa
-# the path to the FNA directory.
-FNA_PATH = $(HOME)/frescor/fna
+
+FRESCOR_ROOT = $(HOME)/frescor
+FRSH_PATH = $(FRESCOR_ROOT)/frsh
+FOSA_PATH = $(FRESCOR_ROOT)/fosa
+FNA_PATH = $(FRESCOR_ROOT)/fna
+UTILS_PATH = $(FRESCOR_ROOT)/utils
+FSA_PATH = $(FRESCOR_ROOT)/fsa
+
# the compilation flags
-CFLAGS = -Wall -g -D$(PLATFORM) -D$(RTEP_ENABLE) -D$(UNIX_ENABLE) -I$(FNA_PATH)/include -I$(FRSH_PATH)/include
+CFLAGS = -Wall -g -O1 -Wuninitialized \
+ -D$(PLATFORM) \
+ -I$(FNA_PATH)/include \
+ -I$(FRSH_PATH)/include \
+ -I$(FOSA_PATH)/include \
+ -I$(UTILS_PATH)/include \
+ -I$(FSA_PATH)/include
+
+
+# fna networks configuration
+CONFIG_FNA_RTEP=n
+CONFIG_FNA_UNIX=n
+CONFIG_FNA_FRESCAN=n
+CONFIG_FWP=n
+
+ifeq ($(CONFIG_FNA_RTEP),y)
+CFLAGS += -DRTEP_FNA_ENABLED -I$(FNA_PATH)/src_rtep/ -I$(PLATFORM_PATH)/arch/drivers/rt-ep/
+endif
+
+ifeq ($(CONFIG_FNA_UNIX),y)
+CFLAGS += -DUNIX_FNA_ENABLED
+endif
+
+ifeq ($(CONFIG_FNA_FRESCAN),y)
+CFLAGS += -DFRESCAN_FNA_ENABLED -I$(FNA_PATH)/src_frescan/
+endif
+
+ifeq ($(CONFIG_FWP),y)
+CFLAGS += -DFWP_FNA_ENABLED
+endif
+
+# fna network connected
+CONFIG_FNA_RTEP_CONNECTED=n
+CONFIG_FNA_UNIX_CONNECTED=n
+CONFIG_FNA_FRESCAN_CONNECTED=n
+CONFIG_FWP_CONNECTED=n
+
+ifeq ($(CONFIG_FNA_RTEP_CONNECTED),y)
+CFLAGS += -DCONFIG_FNA_RTEP_CONNECTED
+endif
+
+ifeq ($(CONFIG_FNA_UNIX_CONNECTED),y)
+CFLAGS += -DCONFIG_FNA_UNIX_CONNECTED
+endif
+
+ifeq ($(CONFIG_FNA_FRESCAN_CONNECTED),y)
+CFLAGS += -DCONFIG_FNA_FRESCAN_CONNECTED
+endif
+
+ifeq ($(CONFIG_FWP_CONNECTED),y)
+CFLAGS += -DCONFIG_FWP_CONNECTED
+endif
+
# the library flags
-LDFLAGS = -L$(FNA_PATH)/lib -lfna
+LDFLAGS = -L$(FRSH_PATH)/lib -L$(FSA_PATH)/lib -L$(FOSA_PATH)/lib \
+ -L$(UTILS_PATH)/lib -L$(FNA_PATH)/lib
+
+LDFLAGS += -Wl,--start-group -lfrsh -lfsa_$(SA_VERSION) -lfosa_$(PLATFORM) -lutils -lfna -lm
+
+ifeq ($(PLATFORM),MARTE_OS)
+LDFLAGS += $(PLATFORM_PATH)/misc/logger.o \
+ $(PLATFORM_PATH)/misc/time_measurement_hwtime.o \
+ $(PLATFORM_PATH)/misc/time_measurement_posix.o \
+ $(PLATFORM_PATH)/misc/freelist.o
+endif
+
+LDFLAGS += -Wl,--end-group