Files
UltraGrid/Makefile.in
Martin Pulec 0f9dbdf89e Revert "Makefile: added deps on bundle dir"
This still causes the bundle rebuild. Under normal circumstances it
won't matter but as we sign the directory after creating the bundle
and before creating dmg, it actually hurts, becasue to the DMG goes the
freshly-created (unsigned) bundle.

This reverts commit 7294347a9b.
2023-11-02 12:03:51 +01:00

703 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@
QMAKE_FLAGS ?=
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_ORIG := $(CFLAGS)
CFLAGS = @CFLAGS@ $(COMMON_FLAGS) -Werror=implicit-function-declaration -D_GNU_SOURCE
CPPFLAGS = @CPPFLAGS@ -D_GNU_SOURCE
CXXFLAGS_ORIG := $(CXXFLAGS)
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)
BUNDLE = uv.app
GUI_BUNDLE_DEP = gui/QT/uv-qt.app
GUI_BUNDLE = uv-qt.app
REAL_CUDA_COMPILER = "@CUDA_COMPILER@"
CUDA_COMPILER_0 = @echo "Compiling $<..."; $(REAL_CUDA_COMPILER)
CUDA_COMPILER_1 = $(REAL_CUDA_COMPILER)
CUDA_COMPILER = $(CUDA_COMPILER_$(VERBOSE))
MACOS_LEGACY = @MACOS_LEGACY@
SYSTEM = @system@
GUI_EXE ?= @GUI_EXE@
GUI_TARGET = @GUI_TARGET@
QT_PATH = $(shell [ -n "$(QMAKE)" ] && python3 -c "import os; print(\
os.path.realpath(os.path.dirname(os.path.realpath(\"$$(command -v \
$(QMAKE))\")) + \"/..\"))")# realpath cmd is present in macOS 13
ifeq (@REFLECTOR_REQ@,yes)
REFLECTOR_TARGET ?= bin/hd-rum-transcode$(EXEEXT)
endif
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@
VPATH = @srcdir@
DOCS = $(srcdir)/CONTRIBUTING.md $(srcdir)/README.md $(wildcard $(srcdir)/doc/*)
# autogenerated headers
GENERATED_HEADERS = @GENERATED_HEADERS@
COMMON_OBJS = \
src/control_socket.o \
src/debug.o \
src/host.o \
src/keyboard_control.o \
src/messaging.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/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/none.o \
src/audio/playback/sdi.o \
src/audio/resampler.o \
src/audio/types.o \
src/audio/utils.o \
src/audio/wav_reader.o \
src/audio/wav_writer.o \
src/audio/audio_filter.o \
src/audio/filter_chain.o \
src/capture_filter.o \
src/compat/alarm.o \
src/compat/dlfunc.o \
src/compat/platform_pipe.o \
src/compat/platform_semaphore.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/pixfmt_conv.o \
src/ug_runtime_error.o \
tools/ipc_frame_ug.o \
tools/ipc_frame_unix.o \
tools/ipc_frame.o \
src/utils/audio_buffer.o \
src/utils/color_out.o \
src/utils/config_file.o \
src/utils/fs.o \
src/utils/jpeg_reader.o \
src/utils/list.o \
src/utils/math.o \
src/utils/misc.o \
src/utils/nat.o \
src/utils/net.o \
src/utils/packet_counter.o \
src/utils/pam.o \
src/utils/parallel_conv.o \
src/utils/profile_timer.o \
src/utils/random.o \
src/utils/resource_manager.o \
src/utils/ring_buffer.o \
src/utils/sdp.o \
src/utils/string.o \
src/utils/string_view_utils.o \
src/utils/synchronized_queue.o \
src/utils/text.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/windows.o \
src/utils/worker.o \
src/utils/y4m.o \
src/video.o \
src/video_frame.o \
src/video_codec.o \
src/video_capture.o \
src/video_capture_params.o \
src/video_capture/null.o \
src/video_capture/testcard.o \
src/video_capture/testcard_common.o \
src/video_compress.o \
src/video_compress/none.o \
src/video_decompress.o \
src/video_display.o \
src/video_display/dummy.o \
src/video_display/null.o \
src/video_export.o \
src/video_rxtx.o \
src/video_rxtx/rtp.o \
src/video_rxtx/ultragrid_rtp.o \
src/vo_postprocess.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 \
ULTRAGRID_LIBS = @ULTRAGRID_LIBS@
ULTRAGRID_OBJS = $(COMMON_OBJS) @ULTRAGRID_OBJS@ src/main.o \
REFLECTOR_OBJS = @REFLECTOR_OBJS@ $(COMMON_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 \
src/video_display/blend.o \
src/video_display/pipe.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/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 = $(REFLECTOR_OBJS) $(TEST_OBJS) $(ULTRAGRID_OBJS)
DEP_FILES = $(patsubst %.lib,%.P,$(DEP_FILES_1:.o=.P)) # replace .o and also .lib (Windows) with .P
# -------------------------------------------------------------------------------------------------
.PHONY: doc
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 $(ULTRAGRID_OBJS) $(GENERATED_HEADERS) $(BIN_DEPS)
$(MKDIR_P) $(dir $@)
$(LINKER) $(LDFLAGS) $(ULTRAGRID_OBJS) $(LIBS) $(ULTRAGRID_LIBS) -o $(TARGET)
ifeq ($(SYSTEM),Windows)
if [ -n '@DLL_LIBS@' ]; then $(INSTALL) -m 644 @DLL_LIBS@ bin; fi
endif
$(REFLECTOR_TARGET): src/dir-stamp $(REFLECTOR_OBJS) $(GENERATED_HEADERS)
$(MKDIR_P) $(dir $@)
$(LINKER) $(LDFLAGS) $(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 $@
@$(REAL_CUDA_COMPILER) $(CUDA_FLAGS) $(CUDA_INC) -M $< > $*.d
$(POSTPROCESS_DEPS)
%.lib: %.cu
$(MKDIR_P) $(dir $@)
$(CUDA_COMPILER) $(CUDA_FLAGS) -DEXPORT_DLL_SYMBOLS $(CUDA_INC) --shared $< -o $*.dll
@$(REAL_CUDA_COMPILER) $(CUDA_FLAGS) -DEXPORT_DLL_SYMBOLS $(CUDA_INC) -M --shared $< > $*.d
touch $@
$(POSTPROCESS_DEPS)
src/libavcodec/from_lavc_vid_conv.o: src/libavcodec/from_lavc_vid_conv.c
$(MKDIR_P) $(dir $@)
$(CC) $(CFLAGS) $(OFAST) $(INC) -MD -c $< -o $@
$(POSTPROCESS_DEPS)
src/libavcodec/to_lavc_vid_conv.o: src/libavcodec/to_lavc_vid_conv.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) $< -c -o $@
dxt_compress/dxt_decoder.o: dxt_compress/dxt_decoder.c dxt_compress/dxt_glsl.h
$(MKDIR_P) $(dir $@)
$(CC) $(CFLAGS) $(INC) $< -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 $(srcdir)/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 $(srcdir)/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 $(srcdir)/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 $(srcdir)/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 $(srcdir)/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 $(srcdir)/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 $(srcdir)/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 $(srcdir)/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 $(srcdir)/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 $(srcdir)/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 $(srcdir)/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 $(srcdir)/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 $(srcdir)/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 $(srcdir)/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 $(srcdir)/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 $(srcdir)/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 $(srcdir)/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 $(srcdir)/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 $(srcdir)/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 $(srcdir)/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 $(srcdir)/dxt_compress/rgba_to_yuv422_vp.glsl | sed 's/\(.*\)/ \"\1\\n\"/' >> $@
@#echo ";" >> $@
gui/QT/Makefile: gui/QT/uv-qt.pro
@if test -z "$(QMAKE)"; then echo "Reconfigure with '--enable-qt'"; exit 1; fi
CFLAGS="$(CFLAGS_ORIG)" CXXFLAGS="$(CXXFLAGS_ORIG)" $(QMAKE) -makefile $< "DESTDIR+=./" -o $@ $(QMAKE_FLAGS)
.PHONY: $(GUI_TARGET)
$(GUI_TARGET): gui/QT/Makefile
$(COND_SILENCE)cd gui/QT && $(MAKE) --no-print-directory
# -------------------------------------------------------------------------------------------------
$(TEST_TARGET): $(TEST_OBJS) @TEST_OBJS@
$(MKDIR_P) $(dir $@)
$(LINKER) $(LDFLAGS) $(TEST_OBJS) @TEST_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) $(GENERATED_HEADERS) $(ULTRAGRID_OBJS) $(TARGET) src/version.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) $(GUI_BUNDLE) $(GUI_BUNDLE_DEP)
$(COND_SILENCE)-rm -rf $(REFLECTOR_TARGET) $(REFLECTOR_OBJS)
$(COND_SILENCE)-rm -rf @TOREMOVE@ @MODULES@ @LIB_GENERATED_HEADERS@
$(COND_SILENCE)-rm -rf $(DEP_FILES)
$(COND_SILENCE)-rm -rf bin/shaders
$(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
rm -rf $(BUNDLE)
$(MKDIR_P) $(BUNDLE)/Contents/MacOS $(BUNDLE)/Contents/libs $(BUNDLE)/Contents/Frameworks
cp $(REFLECTOR_TARGET) $(TARGET) $(BUNDLE)/Contents/MacOS/
cp -r data/MacOS-bundle-template/* $(BUNDLE)
cp hd-rum-multi/hd-rum $(BUNDLE)/Contents/MacOS/
cp -r $(srcdir)/share/ $(BUNDLE)/Contents/share/
for n in $(BUNDLE)/Contents/MacOS/*; \
do echo quit \
| $(DYLIBBUNDLER) $(DYLIBBUNDLER_FLAGS) -of -cd -b \
-d $(BUNDLE)/Contents/libs/ -p @executable_path/../libs/ -x $$n; \
done
if [ -d Frameworks ]; then cp -R Frameworks/* $(BUNDLE)/Contents/Frameworks; fi
#echo -n "UltraGrid" > $(BUNDLE)/Contents/PkgInfo
# ships UltraGrid itself to GUI bundle which is copied from
# gui/QT/uv-qt.app to uv-qt.app (referred as $(GUI_BUNDLE))
$(GUI_BUNDLE): $(BUNDLE) $(GUI_BUNDLE_DEP)
rm -rf $(GUI_BUNDLE)
$(MKDIR_P) $(GUI_BUNDLE)/Contents/libs
ln -s libs $(GUI_BUNDLE)/Contents/Frameworks
cp -R $(GUI_BUNDLE_DEP)/* $(GUI_BUNDLE)
# add Qt frameworks
command -v macdeployqt && macdeployqt $(GUI_BUNDLE) -verbose=2
cp -nR $(BUNDLE)/* $(GUI_BUNDLE) || true
if [ $(MACOS_LEGACY) = no ]; then \
for n in $(GUI_BUNDLE)/Contents/MacOS/*; do \
if expr $$n : '.*-real$$' >/dev/null || expr $$n : '.*\.sh$$' >/dev/null; \
then continue; fi; \
mv -f $$n $$n-real; cp -f $(srcdir)/data/scripts/macos-wrapper $$n; \
done; \
fi
# TODO TOREMOVE: currently Qt6 (Homebrew) macdeployqt doesn't deploy QtDbus,
# possibly because @rpath is used in QtDBus ref in QtGui
if [ -d $(QT_PATH)/lib/QtDBus.framework ] && \
[ ! -d $(GUI_BUNDLE)/Contents/Frameworks/QtDBus.framework ] && \
`otool -L $(GUI_BUNDLE)/Contents/Frameworks/QtGui.framework/Versions/A/QtGui \
| grep -q '@rpath/QtDBus'`; \
then \
cp -R $(QT_PATH)/lib/QtDBus.framework $(GUI_BUNDLE)/Contents/Frameworks; \
chmod -R +w $(GUI_BUNDLE)/Contents/Frameworks/QtDBus.framework; \
install_name_tool -change \
'@loader_path/../../../../../../../opt/dbus/lib/libdbus-1.3.dylib' \
/usr/local/opt/dbus/lib/libdbus-1.3.dylib \
$(GUI_BUNDLE)/Contents/Frameworks/QtDBus.framework/QtDBus; \
while :; do echo quit; done \
| $(DYLIBBUNDLER) -of -cd -b -d $(GUI_BUNDLE)/Contents/libs \
-x $(GUI_BUNDLE)/Contents/Frameworks/QtDBus.framework/QtDBus;\
fi
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: $(BUNDLE)
gui-bundle: $(GUI_BUNDLE)
## @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
@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
if [ -n "@VULKAN@" ]; then\
$(INSTALL) -D -m 644 "$(srcdir)/share/ultragrid/vulkan_shaders/"* -t "$(DESTDIR)$(datadir)/ultragrid/vulkan_shaders"; \
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)/`basename $$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
rmdir $(DESTDIR)$(docdir)
$(RM) $(DESTDIR)$(man1dir)/uv.1 $(DESTDIR)$(man1dir)/hd-rum-transcode.1
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
if [ -n "@VULKAN@" ]; then\
$(RM) "$(DESTDIR)$(datadir)/ultragrid/vulkan_shaders/"*;\
rmdir $(DESTDIR)$(datadir)/ultragrid/vulkan_shaders;\
rmdir $(DESTDIR)$(datadir)/ultragrid;\
fi
# vim: set noexpandtab