123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- LIB60870_HOME=.
- include make/target_system.mk
- ifndef WITHOUT_COMMON
- LIB_SOURCE_DIRS = src/common
- endif
- LIB_SOURCE_DIRS += src/iec60870
- LIB_SOURCE_DIRS += src/iec60870/cs101
- LIB_SOURCE_DIRS += src/iec60870/cs104
- LIB_SOURCE_DIRS += src/iec60870/link_layer
- LIB_SOURCE_DIRS += src/iec60870/apl
- ifndef WITHOUT_HAL
- ifeq ($(HAL_IMPL), WIN32)
- LIB_SOURCE_DIRS += src/hal/socket/win32
- LIB_SOURCE_DIRS += src/hal/thread/win32
- LIB_SOURCE_DIRS += src/hal/time/win32
- LIB_SOURCE_DIRS += src/hal/memory
- else ifeq ($(HAL_IMPL), POSIX)
- LIB_SOURCE_DIRS += src/hal/socket/linux
- LIB_SOURCE_DIRS += src/hal/thread/linux
- LIB_SOURCE_DIRS += src/hal/time/unix
- LIB_SOURCE_DIRS += src/hal/serial/linux
- LIB_SOURCE_DIRS += src/hal/memory
- else ifeq ($(HAL_IMPL), BSD)
- LIB_SOURCE_DIRS += src/hal/socket/bsd
- LIB_SOURCE_DIRS += src/hal/thread/bsd
- LIB_SOURCE_DIRS += src/hal/time/unix
- LIB_SOURCE_DIRS += src/hal/memory
- endif
- ifdef WITH_MBEDTLS
- LIB_SOURCE_DIRS += dependencies/mbedtls-2.28/library
- LIB_SOURCE_DIRS += src/hal/tls/mbedtls
- LIB_INCLUDE_DIRS += src/hal/tls/mbedtls
- LIB_INCLUDE_DIRS += dependencies/mbedtls-2.28/include
- CFLAGS += -D'MBEDTLS_CONFIG_FILE="mbedtls_config.h"'
- CFLAGS += -D'CONFIG_CS104_SUPPORT_TLS=1'
- endif
- endif
- LIB_INCLUDE_DIRS += config
- LIB_INCLUDE_DIRS += src/inc/api
- LIB_INCLUDE_DIRS += src/inc/internal
- LIB_INCLUDE_DIRS += src/hal/inc
- LIB_INCLUDE_DIRS += src/common/inc
- LIB_INCLUDES = $(addprefix -I,$(LIB_INCLUDE_DIRS))
- ifndef INSTALL_PREFIX
- INSTALL_PREFIX = ./.install
- endif
- LIB_API_HEADER_FILES = src/hal/inc/hal_time.h
- LIB_API_HEADER_FILES += src/hal/inc/hal_thread.h
- LIB_API_HEADER_FILES += src/hal/inc/hal_socket.h
- LIB_API_HEADER_FILES += src/hal/inc/hal_serial.h
- LIB_API_HEADER_FILES += src/hal/inc/hal_base.h
- LIB_API_HEADER_FILES += src/common/inc/linked_list.h
- LIB_API_HEADER_FILES += src/inc/api/cs101_information_objects.h
- LIB_API_HEADER_FILES += src/inc/api/cs101_master.h
- LIB_API_HEADER_FILES += src/inc/api/cs101_slave.h
- LIB_API_HEADER_FILES += src/inc/api/cs104_connection.h
- LIB_API_HEADER_FILES += src/inc/api/cs104_slave.h
- LIB_API_HEADER_FILES += src/inc/api/iec60870_common.h
- LIB_API_HEADER_FILES += src/inc/api/iec60870_master.h
- LIB_API_HEADER_FILES += src/inc/api/iec60870_slave.h
- LIB_API_HEADER_FILES += src/inc/api/link_layer_parameters.h
- LIB_API_HEADER_FILES += src/hal/inc/tls_config.h
- LIB_API_HEADER_FILES += src/file-service/cs101_file_service.h
- LIB_TEST_SOURCES = tests/all_tests.c
- LIB_TEST_SOURCES += tests/unity/unity.c
- LIB_TEST_INCLUDE_DIRS = tests/unity
- TEST_INCLUDES = $(addprefix -I,$(LIB_TEST_INCLUDE_DIRS))
- get_sources_from_directory = $(wildcard $1/*.c)
- get_sources = $(foreach dir, $1, $(call get_sources_from_directory,$(dir)))
- src_to = $(addprefix $(LIB_OBJS_DIR)/,$(subst .c,$1,$2))
- LIB_SOURCES = $(call get_sources,$(LIB_SOURCE_DIRS))
- LIB_OBJS = $(call src_to,.o,$(LIB_SOURCES))
- TEST_OBJS = $(call src_to,.o,$(LIB_TEST_SOURCES))
- CFLAGS += -std=gnu99
- #CFLAGS += -Wno-error=format
- CFLAGS += -Wstrict-prototypes -Wall -Wextra
- ifneq ($(HAL_IMPL), WIN32)
- CFLAGS += -Wuninitialized
- endif
- CFLAGS += -Wsign-compare
- CFLAGS += -Wpointer-arith
- CFLAGS += -Wnested-externs
- CFLAGS += -Wmissing-declarations
- CFLAGS += -Wshadow
- CFLAGS += -Wall
- #CFLAGS += -Werror
- all: lib
- static_checks: lib
- splint -preproc +posixlib +skip-sys-headers +gnuextensions $(LIB_INCLUDES) $(LIB_SOURCES)
- cppcheck: lib
- cppcheck --xml --force --std=c99 --enable=all $(LIB_INCLUDES) $(LIB_SOURCES) 2> cppcheck-output.xml
- lib: $(LIB_NAME)
- tests: $(TEST_NAME)
- dynlib: CFLAGS += -fPIC
- dynlib: $(DYN_LIB_NAME)
- .PHONY: examples
- examples:
- cd examples; $(MAKE)
-
- $(TEST_NAME): $(LIB_OBJS) $(TEST_OBJS)
- $(CC) -o $(TEST_NAME) $(LIB_OBJS) $(TEST_OBJS) -lpthread
- $(LIB_NAME): $(LIB_OBJS)
- $(AR) r $(LIB_NAME) $(LIB_OBJS)
- $(RANLIB) $(LIB_NAME)
-
- $(DYN_LIB_NAME): $(LIB_OBJS)
- $(CC) $(LDFLAGS) $(DYNLIB_LDFLAGS) -shared -o $(DYN_LIB_NAME) $(LIB_OBJS) $(LDLIBS)
- $(LIB_OBJS_DIR)/%.o: %.c config
- @echo compiling $(notdir $<)
- $(SILENCE)mkdir -p $(dir $@)
- $(CC) $(CFLAGS) -c $(LIB_INCLUDES) $(TEST_INCLUDES) $(OUTPUT_OPTION) $<
-
- install: $(LIB_NAME)
- mkdir -p $(INSTALL_PREFIX)/include
- mkdir -p $(INSTALL_PREFIX)/lib
- cp $(LIB_API_HEADER_FILES) $(INSTALL_PREFIX)/include
- cp $(LIB_NAME) $(INSTALL_PREFIX)/lib
- clean:
- rm -f $(EXAMPLES)
- rm -rf $(LIB_OBJS_DIR)
|