Files
UltraGrid/Makefile.in
2022-04-20 09:39:08 +02:00

711 lines
26 KiB
Makefile

AR = ar
RANLIB = ranlib
BIN_DEPS = @BIN_DEPS@
CP = cp
VERBOSE ?= 0
COND_SILENCE_0 = @
COND_SILENCE_1 =
COND_SILENCE = $(COND_SILENCE_$(VERBOSE))
REAL_CC = @CC@
CC_0 = @echo "Compiling $<..."; $(REAL_CC)
CC_1 = $(REAL_CC)
CC = $(CC_$(VERBOSE))
REAL_CXX = @CXX@
CXX_0 = @echo "Compiling $<..."; $(REAL_CXX)
CXX_1 = $(REAL_CXX)
CXX = $(CXX_$(VERBOSE))
QMAKE = @QMAKE@
REAL_LINKER = @LINKER@
LINKER_0 = @echo "Linking $@..."; $(REAL_LINKER)
LINKER_1 = $(REAL_LINKER)
LINKER = $(LINKER_$(VERBOSE))
COMMON_FLAGS = @COMMON_FLAGS@ -g @DEFS@ -DPATH_PREFIX='"@prefix@"' -DLIB_DIR='"@libdir@"' -Wall -Wextra -Wpointer-arith -DGF_BITS=16
CFLAGS = @CFLAGS@ $(COMMON_FLAGS) -Werror=implicit-function-declaration -D_GNU_SOURCE
CPPFLAGS = @CPPFLAGS@ -D_GNU_SOURCE
CXXFLAGS = @CXXFLAGS@ $(COMMON_FLAGS) -D_GNU_SOURCE
MKDIR_P = $(COND_SILENCE)mkdir -p
CUDA_FLAGS = @CUDA_FLAGS@ @CUDA_COMPUTE_ARGS@
LDFLAGS = @LDFLAGS@
LIBS += @LIBS@ @MATHLIBS@ -lm -pthread
INC = -Isrc -I$(srcdir)/src -I$(srcdir)/test \
@INC@
CUDA_INC = @CUDA_INC@ -Isrc -I$(srcdir)/src
OFAST = @OFAST@
DECKLINK_PATH = @DECKLINK_PATH@
DYLIBBUNDLER = @DYLIBBUNDLER@
DYLIBBUNDLER_FLAGS += @DYLIBBUNDLER_FLAGS@
EXEEXT = @EXEEXT@
TARGET = bin/uv$(EXEEXT)
PERF = bin/uv_perf
BUNDLE = uv.app
GUI_BUNDLE = gui/QT/uv-qt.app
DXT_GLSL_CFLAGS = @DXT_GLSL_CFLAGS@
REAL_CUDA_COMPILER = "@CUDA_COMPILER@"
CUDA_COMPILER_0 = @echo "Compiling $<..."; $(REAL_CUDA_COMPILER)
CUDA_COMPILER_1 = $(REAL_CUDA_COMPILER)
CUDA_COMPILER = $(CUDA_COMPILER_$(VERBOSE))
SYSTEM = @system@
GUI_EXE = @GUI_EXE@
GUI_TARGET = @GUI_TARGET@
QT_CFLAGS = @QT_CFLAGS@
REFLECTOR_TARGET = bin/hd-rum-transcode$(EXEEXT)
TEST_TARGET = bin/run_tests$(EXEEXT)
PACKAGE_TARNAME ?= @PACKAGE_TARNAME@
PREFIX = @prefix@
prefix = $(PREFIX)
exec_prefix = @exec_prefix@
INSTALL = @INSTALL@
bindir = @bindir@
libdir = @libdir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
mandir = @mandir@
man1dir = @mandir@/man1
srcdir = @srcdir@
srcdir_abs = @srcdir_abs@
VPATH = @srcdir@
DOCS = $(srcdir)/CONTRIBUTING.md $(srcdir)/README.md $(wildcard $(srcdir)/doc/*)
# autogenerated headers
GENERATED_HEADERS = @GENERATED_HEADERS@
COMMON_OBJS = \
src/bitstream.o \
src/control_socket.o \
src/debug.o \
src/host.o \
src/keyboard_control.o \
src/messaging.o \
src/perf.o \
src/playback.o \
src/ntp.o \
src/pdb.o \
src/tv.o \
src/transmit.o \
src/tfrc.o \
src/rtp/fec.o \
src/rtp/ldgm.o \
src/rtp/pbuf.o \
src/rtp/audio_decoders.o \
src/rtp/ptime.o \
src/rtp/net_udp.o \
src/rtp/rs.o \
src/rtp/rtp.o \
src/rtp/rtpenc_h264.o \
src/rtp/rtp_callback.o \
src/rtp/video_decoders.o \
src/audio/audio.o \
src/audio/audio_capture.o \
src/audio/audio_playback.o \
src/audio/capture/none.o \
src/audio/capture/sdi.o \
src/audio/capture/testcard.o \
src/audio/codec.o \
src/audio/codec/dummy_pcm.o \
src/audio/export.o \
src/audio/playback/dummy.o \
src/audio/playback/dump.o \
src/audio/playback/mixer.o \
src/audio/playback/none.o \
src/audio/playback/sdi.o \
src/audio/types.o \
src/audio/utils.o \
src/audio/wav_reader.o \
src/audio/wav_writer.o \
@JACK_TRANS_OBJ@ \
src/audio/audio_filter.o \
src/audio/filter_chain.o \
src/audio/filter/delay.o \
src/capture_filter.o \
src/capture_filter/change_pixfmt.o \
src/capture_filter/disrupt.o \
src/capture_filter/every.o \
src/capture_filter/flip.o \
src/capture_filter/gamma.o \
src/capture_filter/grayscale.o \
src/capture_filter/logo.o \
src/capture_filter/matrix.o \
src/capture_filter/mirror.o \
src/capture_filter/none.o \
src/capture_filter/split.o \
src/compat/alarm.o \
src/compat/dlfunc.o \
src/compat/drand48.o \
src/compat/gettimeofday.o \
src/compat/platform_pipe.o \
src/compat/platform_semaphore.o \
src/compat/platform_time.o \
src/compat/usleep.o \
src/crypto/crc_32.o \
src/crypto/crypt_aes.o \
src/crypto/crypt_aes_impl.o \
src/crypto/crypt_des.o \
src/crypto/md5.o \
src/crypto/random.o \
src/export.o \
src/ihdtv/ihdtv.o \
src/lib_common.o \
src/module.o \
src/rtsp/rtsp_utils.o \
src/ug_runtime_error.o \
src/utils/audio_buffer.o \
src/utils/color_out.o \
src/utils/config_file.o \
src/utils/fs.o \
src/utils/hresult.o \
src/utils/jpeg_reader.o \
src/utils/list.o \
src/utils/misc.o \
src/utils/nat.o \
src/utils/net.o \
src/utils/packet_counter.o \
src/utils/parallel_conv.o \
src/utils/resource_manager.o \
src/utils/ring_buffer.o \
src/utils/sdp.o \
src/utils/synchronized_queue.o \
src/utils/thread.o \
src/utils/time.o \
src/utils/vf_split.o \
src/utils/video_frame_pool.o \
src/utils/video_pattern_generator.o \
src/utils/wait_obj.o \
src/utils/worker.o \
src/utils/profile_timer.o \
src/video.o \
src/video_frame.o \
src/video_codec.o \
src/video_capture.o \
src/video_capture_params.o \
src/video_capture/aggregate.o \
src/video_capture/import.o \
src/video_capture/null.o \
src/video_capture/switcher.o \
src/video_capture/testcard_common.o \
src/video_capture/ug_input.o \
src/video_compress.o \
src/video_compress/none.o \
src/video_decompress.o \
src/video_display.o \
src/video_display/aggregate.o \
src/video_display/dummy.o \
src/video_display/dump.o \
src/video_display/null.o \
src/video_display/pipe.o \
src/video_display/proxy.o \
src/video_display/multiplier.o \
src/video_export.o \
src/video_rxtx.o \
src/video_rxtx/h264_sdp.o \
src/video_rxtx/ihdtv.o \
src/video_rxtx/loopback.o \
src/video_rxtx/rtp.o \
src/video_rxtx/sage.o \
src/video_rxtx/ultragrid_rtp.o \
src/vo_postprocess.o \
src/vo_postprocess/border.o \
src/vo_postprocess/crop.o \
src/vo_postprocess/deinterlace.o \
src/vo_postprocess/3d-interlaced.o \
src/vo_postprocess/interlace.o \
src/vo_postprocess/double-framerate.o \
src/vo_postprocess/split.o \
ldgm/src/ldgm-session-cpu.o \
ldgm/src/ldgm-session.o \
ldgm/src/tanner.o \
ldgm/matrix-gen/matrix-generator.o \
ldgm/matrix-gen/ldpc-matrix.o \
OBJS = @OBJS@ \
$(COMMON_OBJS)
ULTRAGRID_OBJS = src/main.o \
REFLECTOR_OBJS = src/hd-rum-translator/hd-rum-decompress.o \
src/hd-rum-translator/hd-rum-recompress.o \
src/hd-rum-translator/hd-rum-translator.o
TEST_OBJS = $(COMMON_OBJS) \
@TEST_OBJS@ \
test/codec_conversions_test.o \
test/ff_codec_conversions_test.o \
test/get_framerate_test.o \
test/gpujpeg_test.o \
test/libavcodec_test.o \
test/misc_test.o \
test/video_desc_test.o \
test/test_bitstream.o \
test/test_aes.o \
test/test_des.o \
test/test_md5.o \
test/test_random.o \
test/test_video_display.o \
test/test_video_capture.o \
test/test_tv.o \
test/test_net_udp.o \
test/test_rtp.o \
test/run_tests.o
DEP_FILES_1 = $(OBJS) $(REFLECTOR_OBJS) $(TEST_OBJS) $(ULTRAGRID_OBJS)
DEP_FILES = $(patsubst %.lib,%.P,$(DEP_FILES_1:.o=.P)) # replace .o and also .lib (Windows) with .P
# -------------------------------------------------------------------------------------------------
all: $(TARGET) $(GUI_TARGET) $(REFLECTOR_TARGET) @MODULES@ configure-messages
src/dir-stamp:
$(MKDIR_P) $(dir $@)
touch $@
Frameworks/Syphon.framework:
$(MKDIR_P) Frameworks
cp -R $(srcdir)/data/redists/Syphon.framework Frameworks
Frameworks/VideoMasterHD_Audio.framework:
$(MKDIR_P) Frameworks
cp -R $$(xcrun --show-sdk-path)/System/Library/Frameworks/VideoMasterHD_Audio.framework Frameworks
Frameworks/VideoMasterHD.framework:
$(MKDIR_P) Frameworks
cp -R $$(xcrun --show-sdk-path)/System/Library/Frameworks/VideoMasterHD.framework Frameworks
$(TARGET): src/dir-stamp $(OBJS) $(ULTRAGRID_OBJS) $(GENERATED_HEADERS) $(BIN_DEPS)
$(MKDIR_P) $(dir $@)
$(LINKER) $(LDFLAGS) $(OBJS) $(ULTRAGRID_OBJS) $(LIBS) -o $(TARGET)
ifeq ($(SYSTEM),Windows)
if [ -n '@DLL_LIBS@' ]; then $(INSTALL) -m 644 @DLL_LIBS@ bin; fi
endif
$(REFLECTOR_TARGET): src/dir-stamp $(OBJS) $(GENERATED_HEADERS) $(REFLECTOR_OBJS)
$(MKDIR_P) $(dir $@)
$(LINKER) $(LDFLAGS) $(OBJS) $(REFLECTOR_OBJS) $(LIBS) -o $@
-include $(DEP_FILES)
POSTPROCESS_DEPS = \
@cp $*.d $*.P; \
sed -e 's/\#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \
-e '/^$$/ d' -e 's/$$/ :/' < $*.d >> $*.P; \
rm -f $*.d
%.o : %.c
$(MKDIR_P) $(dir $@)
$(CC) $(CFLAGS) $(INC) -MD -c $< -o $@
$(POSTPROCESS_DEPS)
%.o : %.cpp
$(MKDIR_P) $(dir $@)
$(CXX) $(CXXFLAGS) $(INC) -MD -c $< -o $@
$(POSTPROCESS_DEPS)
%.o: %.m
$(MKDIR_P) $(dir $@)
$(CXX) $(CFLAGS) $(INC) -MD -c $< -o $@
$(POSTPROCESS_DEPS)
%.o: %.mm
$(MKDIR_P) $(dir $@)
$(CXX) -x objective-c++ -std=c++11 $(CXXFLAGS) $(INC) -MD -c $< -o $@
$(POSTPROCESS_DEPS)
# Set suffix for CUDA files
.SUFFIXES: .cu
# Pattern rule for compiling CUDA files
%.o: %.cu
$(MKDIR_P) $(dir $@)
$(CUDA_COMPILER) $(CUDA_FLAGS) $(CUDA_INC) -c $< -o $@
$(CUDA_COMPILER) $(CUDA_FLAGS) $(CUDA_INC) -M $< > $*.d
$(POSTPROCESS_DEPS)
%.lib: %.cu
$(MKDIR_P) $(dir $@)
$(CUDA_COMPILER) $(CUDA_FLAGS) -DEXPORT_DLL_SYMBOLS $(CUDA_INC) -MD --shared $< -o $*.dll
touch $@
$(POSTPROCESS_DEPS)
src/libavcodec_common.o: src/libavcodec_common.c
$(MKDIR_P) $(dir $@)
$(CC) $(CFLAGS) $(OFAST) $(INC) -MD -c $< -o $@
$(POSTPROCESS_DEPS)
src/video_codec.o: src/video_codec.c
$(MKDIR_P) $(dir $@)
$(CC) $(CFLAGS) $(OFAST) $(INC) -MD -c $< -o $@
$(POSTPROCESS_DEPS)
# Important for this target is inclusion of cuda_wrapper that has patched cuda_runtime.h header (wrapper)
ldgm/src/ldgm-session-gpu.o: ldgm/src/ldgm-session-gpu.cpp
$(MKDIR_P) $(dir $@)
$(CXX) $(CXXFLAGS) -Isrc/cuda_wrapper -DEXPORT_DLL_SYMBOLS $(INC) -MD -c $< -o $@
$(POSTPROCESS_DEPS)
src/zfec.o: @ZFEC_PREFIX@/fec.c
$(MKDIR_P) $(dir $@)
$(CC) $(CFLAGS) -w $(INC) -c $< -o $@
src/video_capture/DeckLinkAPIDispatch.o: $(DECKLINK_PATH)/DeckLinkAPIDispatch.cpp
$(MKDIR_P) $(dir $@)
$(CXX) $(CXXFLAGS) -c $(INC) -o src/video_capture/DeckLinkAPIDispatch.o $(DECKLINK_PATH)/DeckLinkAPIDispatch.cpp
src/video_capture/DeckLinkAPI_i.o: $(DECKLINK_PATH)/DeckLinkAPI_i.c
$(MKDIR_P) $(dir $@)
$(CC) $(CFLAGS) -c $(INC) -o src/video_capture/DeckLinkAPI_i.o $(DECKLINK_PATH)/DeckLinkAPI_i.c
dxt_compress/dxt_encoder.o: dxt_compress/dxt_encoder.c dxt_compress/dxt_glsl.h
$(MKDIR_P) $(dir $@)
$(CC) $(CFLAGS) $(INC) $(DXT_GLSL_CFLAGS) $< -c -o $@
dxt_compress/dxt_decoder.o: dxt_compress/dxt_decoder.c dxt_compress/dxt_glsl.h
$(MKDIR_P) $(dir $@)
$(CC) $(CFLAGS) $(INC) $(DXT_GLSL_CFLAGS) $< -c -o $@
dxt_compress/dxt_glsl.h:dxt_compress/compress_vp.glsl \
dxt_compress/compress_dxt1_fp.glsl dxt_compress/compress_dxt5ycocg_fp.glsl \
dxt_compress/display_fp.glsl dxt_compress/display_dxt5ycocg_fp.glsl \
dxt_compress/yuv422_to_yuv444.glsl dxt_compress/display_dxt1_yuv_fp.glsl \
dxt_compress/rgba_to_yuv422.glsl
@echo "Generating $@..."
$(MKDIR_P) $(dir $@)
@echo "/**" > $@
@echo " * GLSL source codes for DXT compressions" >> $@
@echo " *" >> $@
@echo " * @author Martin Srom" >> $@
@echo " */" >> $@
# Write vp_compress
@echo "static const char vp_compress[] = " >> $@
@printf "\"#version 140\\\n\"\n" >> $@
@printf "\"#define legacy 0\\\n\"\n" >> $@
@cat dxt_compress/compress_vp.glsl | sed 's/\(.*\)/ \"\1\\n\"/' >> $@
@echo ";" >> $@
# Write vp_compress_legacy
@echo "static const char vp_compress_legacy[] = " >> $@
@printf "\"#define legacy 1\\\n\"\n" >> $@
@cat dxt_compress/compress_vp.glsl | sed 's/\(.*\)/ \"\1\\n\"/' >> $@
@echo ";" >> $@
# Write fp_compress_dxt1
@echo "static const char fp_compress_dxt1[] = " >> $@
@printf "\"#version 140\\\n\"\n" >> $@
@printf "\"#define legacy 0\\\n\"\n" >> $@
@printf "\"#define FORMAT_YUV 0\\\n\"\n" >> $@
@cat dxt_compress/compress_dxt1_fp.glsl | sed 's/\(.*\)/ \"\1\\n\"/' >> $@
@echo ";" >> $@
# Write fp_compress_dxt1 yuv
@echo "static const char fp_compress_dxt1_yuv[] = " >> $@
@printf "\"#version 140\\\n\"\n" >> $@
@printf "\"#define legacy 0\\\n\"\n" >> $@
@printf "\"#define FORMAT_YUV 1\\\n\"\n" >> $@
@cat dxt_compress/compress_dxt1_fp.glsl | sed 's/\(.*\)/ \"\1\\n\"/' >> $@
@echo ";" >> $@
# Write fp_compress_dxt1_legacy
@echo "static const char fp_compress_dxt1_legacy[] = " >> $@
@printf "\"#define legacy 1\\\n\"\n" >> $@
@printf "\"#define FORMAT_YUV 0\\\n\"\n" >> $@
@cat dxt_compress/compress_dxt1_fp.glsl | sed 's/\(.*\)/ \"\1\\n\"/' >> $@
@echo ";" >> $@
# Write fp_compress_dxt1_legacy
@echo "static const char fp_compress_dxt1_yuv_legacy[] = " >> $@
@printf "\"#define legacy 1\\\n\"\n" >> $@
@printf "\"#define FORMAT_YUV 1\\\n\"\n" >> $@
@cat dxt_compress/compress_dxt1_fp.glsl | sed 's/\(.*\)/ \"\1\\n\"/' >> $@
@echo ";" >> $@
# Write fp_compress_dxt5ycocg
@echo "static const char fp_compress_dxt5ycocg[] = " >> $@
@printf "\"#version 140\\\n\"\n" >> $@
@printf "\"#define legacy 0\\\n\"\n" >> $@
@printf "\"#define FORMAT_YUV 0\\\n\"\n" >> $@
@cat dxt_compress/compress_dxt5ycocg_fp.glsl | sed 's/\(.*\)/ \"\1\\n\"/' >> $@
@echo ";" >> $@
# Write fp_compress_dxt5ycocg yuv
@echo "static const char fp_compress_dxt5ycocg_yuv[] = " >> $@
@printf "\"#version 140\\\n\"\n" >> $@
@printf "\"#define legacy 0\\\n\"\n" >> $@
@printf "\"#define FORMAT_YUV 1\\\n\"\n" >> $@
@cat dxt_compress/compress_dxt5ycocg_fp.glsl | sed 's/\(.*\)/ \"\1\\n\"/' >> $@
@echo ";" >> $@
# Write fp_compress_dxt5ycocg_legacy
@echo "static const char fp_compress_dxt5ycocg_legacy[] = " >> $@
@printf "\"#define legacy 1\\\n\"\n" >> $@
@printf "\"#define FORMAT_YUV 0\\\n\"\n" >> $@
@cat dxt_compress/compress_dxt5ycocg_fp.glsl | sed 's/\(.*\)/ \"\1\\n\"/' >> $@
@echo ";" >> $@
# Write fp_compress_dxt5ycocg_legacy yuv
@echo "static const char fp_compress_dxt5ycocg_yuv_legacy[] = " >> $@
@printf "\"#define legacy 1\\\n\"\n" >> $@
@printf "\"#define FORMAT_YUV 1\\\n\"\n" >> $@
@cat dxt_compress/compress_dxt5ycocg_fp.glsl | sed 's/\(.*\)/ \"\1\\n\"/' >> $@
@echo ";" >> $@
# Write fp_display_dxt1
@echo "static const char fp_display[] = " >> $@
@printf "\"#version 140\\\n\"\n" >> $@
@printf "\"#define legacy 0\\\n\"\n" >> $@
@cat dxt_compress/display_fp.glsl | sed 's/\(.*\)/ \"\1\\n\"/' >> $@
@echo ";" >> $@
# Write fp_display_dxt1 legacy
@echo "static const char fp_display_legacy[] = " >> $@
@printf "\"#define legacy 1\\\n\"\n" >> $@
@cat dxt_compress/display_fp.glsl | sed 's/\(.*\)/ \"\1\\n\"/' >> $@
@echo ";" >> $@
# Write fp_display_dxt5ycocg
@echo "static const char fp_display_dxt5ycocg[] = " >> $@
@printf "\"#version 140\\\n\"\n" >> $@
@printf "\"#define legacy 0\\\n\"\n" >> $@
@cat dxt_compress/display_dxt5ycocg_fp.glsl | sed 's/\(.*\)/ \"\1\\n\"/' >> $@
@echo ";" >> $@
# Write fp_display_dxt5ycocg (legacy)
@echo "static const char fp_display_dxt5ycocg_legacy[] = " >> $@
@printf "\"#define legacy 1\\\n\"\n" >> $@
@cat dxt_compress/display_dxt5ycocg_fp.glsl | sed 's/\(.*\)/ \"\1\\n\"/' >> $@
@echo ";" >> $@
# yuv 422 to yuv 444 shader
@echo "static const char fp_yuv422_to_yuv_444[] = " >> $@
@printf "\"#version 140\\\n\"\n" >> $@
@printf "\"#define legacy 0\\\n\"\n" >> $@
@cat dxt_compress/yuv422_to_yuv444.glsl | sed 's/\(.*\)/ \"\1\\n\"/' >> $@
@echo ";" >> $@
# yuv 422 to yuv 444 shader (legacy)
@echo "static const char fp_yuv422_to_yuv_444_legacy[] = " >> $@
@printf "\"#define legacy 1\\\n\"\n" >> $@
@cat dxt_compress/yuv422_to_yuv444.glsl | sed 's/\(.*\)/ \"\1\\n\"/' >> $@
@echo ";" >> $@
# display YUV dxt1
@echo "static const char fp_display_dxt1_yuv[] = " >> $@
@printf "\"#version 140\\\n\"\n" >> $@
@printf "\"#define legacy 0\\\n\"\n" >> $@
@cat dxt_compress/display_dxt1_yuv_fp.glsl | sed 's/\(.*\)/ \"\1\\n\"/' >> $@
@echo ";" >> $@
# display YUV dxt1 (legacy)
@echo "static const char fp_display_dxt1_yuv_legacy[] = " >> $@
@printf "\"#define legacy 1\\\n\"\n" >> $@
@cat dxt_compress/display_dxt1_yuv_fp.glsl | sed 's/\(.*\)/ \"\1\\n\"/' >> $@
@echo ";" >> $@
# rgba to yuv 422 shader
@echo "static const char fp_display_rgba_to_yuv422[] = " >> $@
@printf "\"#version 140\\\n\"\n" >> $@
@printf "\"#define legacy 0\\\n\"\n" >> $@
@cat dxt_compress/rgba_to_yuv422.glsl | sed 's/\(.*\)/ \"\1\\n\"/' >> $@
@echo ";" >> $@
# rgba to yuv 422 shader legacy
@echo "static const char fp_display_rgba_to_yuv422_legacy[] = " >> $@
@printf "\"#define legacy 1\\\n\"\n" >> $@
@cat dxt_compress/rgba_to_yuv422.glsl | sed 's/\(.*\)/ \"\1\\n\"/' >> $@
@echo ";" >> $@
@# rgba to yuv 422 vertex
@#echo "static const char vp_display_rgba_to_yuv422[] = " >> $@
@#cat dxt_compress/rgba_to_yuv422_vp.glsl | sed 's/\(.*\)/ \"\1\\n\"/' >> $@
@#echo ";" >> $@
# QT-dependent objects
src/shared_mem_frame.o: $(srcdir)/src/shared_mem_frame.cpp
$(MKDIR_P) $(dir $@)
$(CXX) $(CXXFLAGS) $(QT_CFLAGS) $(INC) -MD -c $< -o $@
$(POSTPROCESS_DEPS)
src/video_display/preview.o: $(srcdir)/src/video_display/preview.cpp
$(MKDIR_P) $(dir $@)
$(CXX) $(CXXFLAGS) $(QT_CFLAGS) $(INC) -MD -c $< -o $@
$(POSTPROCESS_DEPS)
src/capture_filter/preview.o: $(srcdir)/src/capture_filter/preview.cpp
$(MKDIR_P) $(dir $@)
$(CXX) $(CXXFLAGS) $(QT_CFLAGS) $(INC) -MD -c $< -o $@
$(POSTPROCESS_DEPS)
$(GUI_TARGET): $(wildcard $(srcdir)/gui/QT/*.cpp $(srcdir)/gui/QT/*.hpp) $(srcdir)/src/shared_mem_frame.cpp $(srcdir)/tools/astat.h
$(MKDIR_P) $(dir $@)
@if test -z "$(QMAKE)"; then echo "Reconfigure with '--enable-qt'"; exit 1; fi
$(COND_SILENCE)cd gui/QT && $(QMAKE) "DESTDIR+=./" $(srcdir_abs)/gui/QT && $(MAKE)
# -------------------------------------------------------------------------------------------------
$(TEST_TARGET): $(TEST_OBJS) @TEST_OBJS@
$(MKDIR_P) $(dir $@)
$(LINKER) $(LDFLAGS) $(TEST_OBJS) @TEST_LIBS@ @CPPUNIT_LIBS@ -o $@
ifeq ($(SYSTEM),Windows)
if [ -n '@DLL_LIBS@' ]; then $(INSTALL) -m 644 @DLL_LIBS@ bin; fi
endif
suggest-tests:
@echo ""
@echo "*** Now type \"make tests\" to run the test suite"
@echo ""
configure-messages:
@printf "@POST_COMPILE_MSG@"
tests: $(TEST_TARGET)
@export DYLD_LIBRARY_PATH=$(MY_DYLD_LIBRARY_PATH); $(TEST_TARGET)
check: tests
distcheck:
$(TARGET)
$(TARGET) --capabilities
$(TARGET) --list-modules
$(REFLECTOR_TARGET) -h
[ -z "$(GUI_EXE)" ] || $(GUI_EXE) -h
# -------------------------------------------------------------------------------------------------
ag-plugins: data/ag_plugin/uvReceiverService.zip data/ag_plugin/uvSenderService.zip
AG_PLUGIN_TX_SCRIPTS = $(srcdir)/data/ag_plugin/uvSenderService.py \
$(srcdir)/data/ag_plugin/uvSenderService.svc \
$(srcdir)/data/ag_plugin/uvSenderService.manifest
data/ag_plugin/uvSenderService.zip: $(AG_PLUGIN_TX_SCRIPTS) $(TARGET)
@echo "Creating AccessGrid plugin: uvSenderService.zip"
@rm -f data/ag_plugin/uvSenderService.zip
@zip -j data/ag_plugin/uvSenderService.zip $(AG_PLUGIN_TX_SCRIPTS) $(TARGET)
AG_PLUGIN_RX_SCRIPTS = $(srcdir)/data/ag_plugin/uvReceiverService.py \
$(srcdir)/data/ag_plugin/uvReceiverService.svc \
$(srcdir)/data/ag_plugin/uvReceiverService.manifest
data/ag_plugin/uvReceiverService.zip: $(AG_PLUGIN_RX_SCRIPTS) $(TARGET)
$(MKDIR_P) $(dir $@)
@echo "Creating AccessGrid plugin: uvReceiverService.zip"
@rm -f data/ag_plugin/uvReceiverService.zip
@zip -j data/ag_plugin/uvReceiverService.zip $(AG_PLUGIN_RX_SCRIPTS) $(TARGET)
# -------------------------------------------------------------------------------------------------
clean:
@echo "Making clean..."
$(COND_SILENCE)-rm -f $(OBJS) $(GENERAED_HEADERS) $(ULTRAGRID_OBJS) $(TARGET) src/version.h
$(COND_SILENCE)-rm -f dxt_compress/dxt_glsl.h
$(COND_SILENCE)-rm -f $(TEST_OBJS) bin/run_tests
$(COND_SILENCE)-rm -f data/ag_plugin/uvReceiverService.zip data/ag_plugin/uvSenderService.zip
$(COND_SILENCE)-rm -rf $(BUNDLE)
$(COND_SILENCE)-rm -rf $(GUI_BUNDLE)
$(COND_SILENCE)-rm -rf $(PERF) src/uv_perf.o
$(COND_SILENCE)-rm -rf $(REFLECTOR_TARGET) $(REFLECTOR_OBJS)
$(COND_SILENCE)-rm -rf @LIB_OBJS@ @MODULES@ @LIB_GENERATED_HEADERS@
$(COND_SILENCE)-rm -rf $(DEP_FILES)
$(COND_SILENCE)if [ -f "gui/QT/Makefile" ]; then make -C gui/QT/ distclean; fi
distclean: clean
-rm -f Makefile config.status config.cache config.log src/config.h cscope.out tags
ctags:
ctags $$(find $(srcdir)/src $(srcdir)/test \( -name '*.c' -o -name '*.cpp' -o -name '*.cu' -o -name '*.h' -o -name '*.hpp' -o -name '*.m' -o -name '*.mm' \))
etags:
etags $$(find $(srcdir)/src $(srcdir)/test \( -name '*.c' -o -name '*.cpp' -o -name '*.cu' -o -name '*.h' -o -name '*.hpp' -o -name '*.m' -o -name '*.mm' \))
universal-ctags:
ctags-universal $$(find $(srcdir)/src $(srcdir)/test \( -name '*.c' -o -name '*.cpp' -o -name '*.cu' -o -name '*.h' -o -name '*.hpp' -o -name '*.m' -o -name '*.mm' \))
cscope:
cscope -bv $$(find $(srcdir)/src $(srcdir)/test \( -name '*.c' -o -name '*.cpp' -o -name '*.cu' -o -name '*.h' -o -name '*.hpp' -o -name '*.m' -o -name '*.mm' \))
doc:
cd $(srcdir) && doxygen Doxyfile
man:
cd $(srcdir)/data && ./make_man.sh all
release:
cvs tag release-`cat VERSION | sed "s/\./-/g"`
hd-rum-multi/hd-rum:
make -C hd-rum-multi
# Makes dummy bundle (almost empty). May not be portable due to missing libs.
$(BUNDLE): $(TARGET) $(REFLECTOR_TARGET) hd-rum-multi/hd-rum
$(MKDIR_P) $(BUNDLE)/Contents/MacOS
cp $(TARGET) $(BUNDLE)/Contents/MacOS/
cp $(REFLECTOR_TARGET) $(BUNDLE)/Contents/MacOS/
cp -r data/MacOS-bundle-template/* $(BUNDLE)/
cp hd-rum-multi/hd-rum $(BUNDLE)/Contents/MacOS/
touch $@ # mark target as up to date
# adds libraries to the bundle
$(BUNDLE)/Contents/libs: $(BUNDLE)
cp $(REFLECTOR_TARGET) $(TARGET) $(BUNDLE)/Contents/MacOS # copy new execs - repeated dylibbundler on a binary fails
$(MKDIR_P) $(BUNDLE)/Contents/libs
for n in $(BUNDLE)/Contents/MacOS/*; \
do echo quit | $(DYLIBBUNDLER) $(DYLIBBUNDLER_FLAGS) -of -p @executable_path/../libs/ -cd -b -x $$n -d $(BUNDLE)/Contents/libs/; \
done
rm -rf $(BUNDLE)/Contents/Frameworks
$(MKDIR_P) $(BUNDLE)/Contents/Frameworks
if otool -L $(TARGET) | grep -q VideoMaster; then \
cp -R $$(xcrun --show-sdk-path)/System/Library/Frameworks/VideoMasterHD*.framework $(BUNDLE)/Contents/Frameworks; \
rm -rf $(BUNDLE)/Contents/Frameworks/VideoMasterHD*.framework/Versions/Current/Headers; \
fi
$(CP) -R data/redists/Syphon.framework $(BUNDLE)/Contents/Frameworks
#echo -n "UltraGrid" > $(BUNDLE)/Contents/PkgInfo
# ships UltraGrid itself to GUI bundle which is created by target gui/QT/uv-qt
# as gui/QT/uv-qt.app (referred as $(GUI_BUNDLE))
$(GUI_BUNDLE)/Contents/libs: $(BUNDLE)/Contents/libs $(GUI_BUNDLE)
rm -rf $(GUI_BUNDLE)/Contents/Frameworks $(GUI_BUNDLE)/Contents/libs
$(MKDIR_P) $(GUI_BUNDLE)/Contents/Frameworks $(GUI_BUNDLE)/Contents/libs
echo quit | $(DYLIBBUNDLER) $(DYLIBBUNDLER_FLAGS) -of -p @executable_path/../libs/ -cd -b -x $(GUI_BUNDLE)/Contents/MacOS/uv-qt -d $(GUI_BUNDLE)/Contents/libs/; \
cp $(BUNDLE)/Contents/MacOS/* $(GUI_BUNDLE)/Contents/MacOS/
[ -d $(BUNDLE)/Contents/libs ] && cp $(BUNDLE)/Contents/libs/* $(GUI_BUNDLE)/Contents/libs
cp -R $(BUNDLE)/Contents/Frameworks/* $(GUI_BUNDLE)/Contents/Frameworks
# add Qt frameworks
command -v macdeployqt && macdeployqt $(GUI_BUNDLE) -verbose=2 -executable=$(GUI_BUNDLE)/Contents/MacOS/uv -executable=$(GUI_BUNDLE)/Contents/MacOS/hd-rum-transcode
test -d $(GUI_BUNDLE)/Contents/Resources || mkdir $(GUI_BUNDLE)/Contents/Resources
cp data/icon.icns $(GUI_BUNDLE)/Contents/Resources
cp data/update.mac $(GUI_BUNDLE)/Contents/MacOS/update
defaults write `pwd`/$(GUI_BUNDLE)/Contents/Info.plist NSCameraUsageDescription 'Allow camera for video capture'
defaults write `pwd`/$(GUI_BUNDLE)/Contents/Info.plist NSMicrophoneUsageDescription 'Allow microphone for audio capture'
defaults write `pwd`/$(GUI_BUNDLE)/Contents/Info.plist CFBundleIconFile icon.icns
plutil -convert xml1 $(GUI_BUNDLE)/Contents/Info.plist
# aliases
bundle-nolib: $(BUNDLE)
bundle: $(BUNDLE)/Contents/libs
gui-bundle: $(GUI_BUNDLE)/Contents/libs
## @todo Add correct dependencies (using $(GUI_BUNDLE)/Contents/libs causes
## uv-qt rebuild which breaks fixed links by macdeployqt)
osx-gui-dmg:
[ ! -f UltraGrid.dmg ] || rm UltraGrid.dmg
hdiutil create -fs HFS+ -volname ULTRAGRID -srcdir $(GUI_BUNDLE) -format UDZO -imagekey zlib-level=9 -o UltraGrid.dmg
perf: src/tv.o src/crypto/random.o
$(CC) $(CFLAGS) -DPERF src/uv_perf.c src/crypto/random.o src/tv.o -o $(PERF)
@TARGETS@
install: all
$(INSTALL) -d -m 755 $(DESTDIR)$(bindir)
$(INSTALL) -m 755 bin/uv $(DESTDIR)$(bindir)
$(INSTALL) -m 755 $(REFLECTOR_TARGET) $(DESTDIR)$(bindir)
if [ -f "$(GUI_TARGET)" ]; then \
$(INSTALL) -m 755 $(GUI_TARGET) $(DESTDIR)$(bindir);\
$(INSTALL) -d -m 755 $(DESTDIR)$(datadir)/applications;\
$(INSTALL) -m 644 $(srcdir)/data/uv-qt.desktop $(DESTDIR)$(datadir)/applications;\
$(INSTALL) -d -m 755 $(DESTDIR)$(datadir)/metainfo;\
$(INSTALL) -m 644 $(srcdir)/data/cz.cesnet.ultragrid.appdata.xml $(DESTDIR)$(datadir)/metainfo;\
$(INSTALL) -d -m 755 $(DESTDIR)$(datadir)/pixmaps;\
$(INSTALL) -m 644 $(srcdir)/data/ultragrid.png $(DESTDIR)$(datadir)/pixmaps;\
fi
if [ -n "@MODULES@" ]; then\
$(INSTALL) -d -m 755 $(DESTDIR)$(libdir)/ultragrid;\
$(INSTALL) -m 755 @MODULES@ $(DESTDIR)$(libdir)/ultragrid;\
fi
$(INSTALL) -d -m 755 $(DESTDIR)$(docdir)
$(INSTALL) -m 644 $(DOCS) $(DESTDIR)$(docdir)
$(INSTALL) -m 644 $(srcdir)/CONTRIBUTING.md $(srcdir)/COPYRIGHT $(srcdir)/INSTALL $(srcdir)/NEWS $(srcdir)/README.md $(DESTDIR)$(docdir)
$(INSTALL) -m 755 $(srcdir)/data/ultragrid-bugreport-collect.sh $(DESTDIR)$(docdir)
$(INSTALL) -d -m 755 $(DESTDIR)$(man1dir)
$(INSTALL) -m 644 $(srcdir)/data/uv.1 $(srcdir)/data/hd-rum-transcode.1 $(DESTDIR)$(man1dir)
if [ -n '@DLL_LIBS@' ]; then $(INSTALL) -m 644 @DLL_LIBS@ $(DESTDIR)$(bindir); fi
uninstall:
$(RM) $(DESTDIR)$(bindir)/uv
$(RM) $(DESTDIR)$(bindir)/hd-rum-transcode
if [ -n "@MODULES@" ]; then for n in @MODULES@; do $(RM) $(DESTDIR)$(libdir)/ultragrid/`basename $$n`; done; fi
for n in $(DOCS); do $(RM) $(DESTDIR)$(docdir)$$n; done;
$(RM) $(DESTDIR)$(docdir)/CONTRIBUTING.md $(DESTDIR)$(docdir)/COPYRIGHT $(DESTDIR)$(docdir)/INSTALL $(DESTDIR)$(docdir)/NEWS $(DESTDIR)$(docdir)/README.md
$(RM) $(DESTDIR)$(docdir)/ultragrid-bugreport-collect.sh
if [ -f "$(GUI_TARGET)" ]; then \
$(RM) $(DESTDIR)$(bindir)/`basename $(GUI_TARGET)`;\
$(RM) $(DESTDIR)$(datadir)/applications/uv-qt.desktop;\
$(RM) $(DESTDIR)$(datadir)/metainfo/cz.cesnet.ultragrid.appdata.xml;\
$(RM) $(DESTDIR)$(datadir)/pixmaps/ultragrid.png;\
fi
# vim: set noexpandtab