mirror of
https://github.com/outbackdingo/UltraGrid.git
synced 2026-03-20 23:40:18 +00:00
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.
703 lines
26 KiB
Makefile
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
|