CC ?= gcc CFLAGS ?= -std=c11 -Wall -Wextra -O2 -pthread -D_GNU_SOURCE CPPFLAGS ?= -Iinclude -Ithird_party/cjson -Ithird_party/kcp LDFLAGS ?= -pthread PYTHON ?= python3 BIN_DIR := bin SRC_DIR := src CMD_DIR := cmd COMMON_SRCS := \ $(SRC_DIR)/omni_common.c \ $(SRC_DIR)/protocol.c \ $(SRC_DIR)/latencylog.c \ $(SRC_DIR)/tx_timestamp_debug.c \ $(SRC_DIR)/kcp_packet_debug.c \ $(SRC_DIR)/kcp_session_stats.c \ $(SRC_DIR)/linux_timestamping.c \ $(SRC_DIR)/interactive.c \ $(SRC_DIR)/transport_udp.c \ $(SRC_DIR)/transport_kcp.c \ $(SRC_DIR)/server_udp_relay.c \ $(SRC_DIR)/server_udp_hub.c \ $(SRC_DIR)/server_kcp_hub.c \ $(SRC_DIR)/peer_udp_client.c \ $(SRC_DIR)/peer_kcp_client.c \ third_party/cjson/cJSON.c \ third_party/kcp/ikcp.c TARGETS := \ $(BIN_DIR)/udpserver \ $(BIN_DIR)/udppeer \ $(BIN_DIR)/udpping \ $(BIN_DIR)/udprelay \ $(BIN_DIR)/kcpserver \ $(BIN_DIR)/kcppeer \ $(BIN_DIR)/kcpping CAMERA_VIDEO_SENDER := $(BIN_DIR)/camera_video_sender CAMERA_VIDEO_SENDER_SRCS := \ $(CMD_DIR)/v1_camera_pipeline_ifdef.c \ $(SRC_DIR)/omni_common.c \ $(SRC_DIR)/protocol.c \ $(SRC_DIR)/latencylog.c \ $(SRC_DIR)/kcp_packet_debug.c \ $(SRC_DIR)/kcp_session_stats.c \ $(SRC_DIR)/linux_timestamping.c \ $(SRC_DIR)/transport_kcp.c \ $(SRC_DIR)/peer_kcp_client.c \ third_party/cjson/cJSON.c \ third_party/kcp/ikcp.c all: $(TARGETS) $(BIN_DIR): mkdir -p $(BIN_DIR) $(BIN_DIR)/udpserver: $(CMD_DIR)/udpserver.c $(COMMON_SRCS) | $(BIN_DIR) $(CC) $(CFLAGS) $(CPPFLAGS) -o $@ $^ $(LDFLAGS) $(BIN_DIR)/udppeer: $(CMD_DIR)/udppeer.c $(COMMON_SRCS) | $(BIN_DIR) $(CC) $(CFLAGS) $(CPPFLAGS) -o $@ $^ $(LDFLAGS) $(BIN_DIR)/udpping: $(CMD_DIR)/udpping.c $(COMMON_SRCS) | $(BIN_DIR) $(CC) $(CFLAGS) $(CPPFLAGS) -o $@ $^ $(LDFLAGS) $(BIN_DIR)/udprelay: $(CMD_DIR)/udprelay.c $(COMMON_SRCS) | $(BIN_DIR) $(CC) $(CFLAGS) $(CPPFLAGS) -o $@ $^ $(LDFLAGS) $(BIN_DIR)/kcpserver: $(CMD_DIR)/kcpserver.c $(COMMON_SRCS) | $(BIN_DIR) $(CC) $(CFLAGS) $(CPPFLAGS) -o $@ $^ $(LDFLAGS) $(BIN_DIR)/kcppeer: $(CMD_DIR)/kcppeer.c $(COMMON_SRCS) | $(BIN_DIR) $(CC) $(CFLAGS) $(CPPFLAGS) -o $@ $^ $(LDFLAGS) $(BIN_DIR)/kcpping: $(CMD_DIR)/kcpping.c $(COMMON_SRCS) | $(BIN_DIR) $(CC) $(CFLAGS) $(CPPFLAGS) -o $@ $^ $(LDFLAGS) $(CAMERA_VIDEO_SENDER): $(CAMERA_VIDEO_SENDER_SRCS) | $(BIN_DIR) $(CC) $(CFLAGS) $(CPPFLAGS) $$(pkg-config --cflags libavformat libavcodec libavutil libswscale) -o $@ $^ $(LDFLAGS) $$(pkg-config --libs libavformat libavcodec libavutil libswscale) camera_video_sender: $(CAMERA_VIDEO_SENDER) clean: rm -rf $(BIN_DIR) python-ext: cd python && $(PYTHON) setup.py build_ext --inplace python-install: cd python && $(PYTHON) -m pip install -e . .PHONY: all clean python-ext python-install camera_video_sender