# makefile для сборки примера с помощью компиляторов mingw (под Windows) # или GCC (под Linux). Необходимо определить 3 переменные: # # CC - имя команды для вызова компилятора # X502API_LIBRARIES_DIR - путь к файлм .a или .so библиотек l502api, e502api, x502api (если не стандартный) # X502API_INCLUDE_DIR - путь к заголовочным файлам l502api.h, e502api.h, x502api.h # # Ниже приведено несколько примеров в закоментированном виде #--- Linux с заголовками и библиотекой в стандартных директориях: компилятор GCC #CC = gcc #--- Вариант запуска из MSYS со стандартным 32-битным mingw #CC = gcc #X502API_LIBRARIES_DIR = "/c/Program Files/L-Card/lpcie/lib/mingw" #X502API_INCLUDE_DIR = "/c/Program Files/L-Card/lpcie/include" #--- 64-битный вариант mingw w64, идущий вместе с cygwin -------- #CC = x86_64-w64-mingw32-gcc #X502API_LIBRARIES_DIR = "/cygdrive/c/Program Files (x86)/L-Card/lpcie/lib/mingw64" #X502API_INCLUDE_DIR = "/cygdrive/c/Program Files (x86)/L-Card/lpcie/include" #--- 32-битный вариант mingw w64, идущий вместе с cygwin -------- #CC = i686-w64-mingw32-gcc #X502API_LIBRARIES_DIR = "/cygdrive/c/Program Files (x86)/L-Card/lpcie/lib/mingw" #X502API_INCLUDE_DIR = "/cygdrive/c/Program Files (x86)/L-Card/lpcie/include" #--- 32-битный вариант mingw, идущий вместе с cygwin -------- #CC = i686-pc-mingw32-gcc #X502API_LIBRARIES_DIR = "/cygdrive/c/Program Files (x86)/L-Card/lpcie/lib/mingw" #X502API_INCLUDE_DIR = "/cygdrive/c/Program Files (x86)/L-Card/lpcie/include" CC ?= gcc CFLAGS ?= -O2 -g BUILD_DIR ?= build X502API_ROOT := x502api-1.1.34 X502_SRC_DIR := $(X502API_ROOT)/src L502_SRC_DIR := $(X502API_ROOT)/devs/l502 E502_SRC_DIR := $(X502API_ROOT)/devs/e502 OSSPEC_DIR := $(X502API_ROOT)/lib/osspec LTIMER_DIR := $(X502API_ROOT)/lib/ltimer LCSPEC_DIR := $(X502API_ROOT)/lib/lcspec CRC_DIR := $(X502API_ROOT)/lib/crc LCSPEC_COMPILER ?= gcc LTIMER_PORT := linux INCLUDES := \ -I$(X502_SRC_DIR) \ -I$(L502_SRC_DIR) \ -I$(E502_SRC_DIR) \ -I$(OSSPEC_DIR) \ -I$(LTIMER_DIR) \ -I$(LTIMER_DIR)/ports/$(LTIMER_PORT) \ -I$(LCSPEC_DIR) \ -I$(LCSPEC_DIR)/$(LCSPEC_COMPILER) \ -I$(CRC_DIR) DEFINES := -DOSSPEC_USE_MUTEX -DOSSPEC_USE_EVENTS -DOSSPEC_USE_THREADS \ -DX502API_VER_MAJOR=1 -DX502API_VER_MINOR=1 -DX502API_VER_PATCH=34 \ -DENABLE_USB X502_SRCS := \ x502api.c \ x502api_streams.c \ x502api_async.c \ x502api_bf.c \ x502api_config.c \ x502api_eeprom.c \ x502api_errs.c L502_SRCS := \ l502api.c \ l502api_compat.c \ l502api_eeprom.c \ l502api_bf.c \ linux/l502_spec.c E502_SRCS := \ e502api.c \ e502api_usb.c \ e502api_tcp.c \ e502api_dnssd.c \ e502api_eth_config.c OSSPEC_SRCS := $(OSSPEC_DIR)/osspec.c LTIMER_SRCS := $(LTIMER_DIR)/ports/$(LTIMER_PORT)/lclock.c CRC_SRCS := $(CRC_DIR)/fast_crc.c SRCS := \ main.c \ $(addprefix $(X502_SRC_DIR)/,$(X502_SRCS)) \ $(addprefix $(L502_SRC_DIR)/,$(L502_SRCS)) \ $(addprefix $(E502_SRC_DIR)/,$(E502_SRCS)) \ $(OSSPEC_SRCS) \ $(LTIMER_SRCS) \ $(CRC_SRCS) OBJS := $(addprefix $(BUILD_DIR)/,$(SRCS:.c=.o)) $(BUILD_DIR)/%.o: %.c @mkdir -p $(dir $@) $(CC) $(CFLAGS) $(DEFINES) $(INCLUDES) -c $< -o $@ all: BF_companion BF_companion: $(OBJS) $(CC) $(CFLAGS) $^ -lpthread -lusb-1.0 -lm -o $@ clean: rm -rf $(BUILD_DIR) BF_companion