You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	build: link with CXX when -lstdc++ on linker commandline
This commit is contained in:
		
							
								
								
									
										20
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								Makefile
									
									
									
									
									
								
							| @@ -53,31 +53,31 @@ FF_DEP_LIBS  := $(DEP_LIBS) | ||||
| FF_STATIC_DEP_LIBS := $(STATIC_DEP_LIBS) | ||||
|  | ||||
| $(TOOLS): %$(EXESUF): %.o | ||||
| 	$(LD) $(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $(filter-out $(FF_DEP_LIBS), $^) $(EXTRALIBS-$(*F)) $(EXTRALIBS) $(ELIBS) | ||||
| 	$(call LINK,$(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $(filter-out $(FF_DEP_LIBS), $^) $(EXTRALIBS-$(*F)) $(EXTRALIBS) $(ELIBS)) | ||||
|  | ||||
| target_dec_%_fuzzer$(EXESUF): target_dec_%_fuzzer.o $(FF_DEP_LIBS) | ||||
| 	$(LD) $(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $^ $(ELIBS) $(FF_EXTRALIBS) $(LIBFUZZER_PATH) | ||||
| 	$(call LINK,$(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $^ $(ELIBS) $(FF_EXTRALIBS) $(LIBFUZZER_PATH)) | ||||
|  | ||||
| target_enc_%_fuzzer$(EXESUF): target_enc_%_fuzzer.o $(FF_DEP_LIBS) | ||||
| 	$(LD) $(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $^ $(ELIBS) $(FF_EXTRALIBS) $(LIBFUZZER_PATH) | ||||
| 	$(call LINK,$(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $^ $(ELIBS) $(FF_EXTRALIBS) $(LIBFUZZER_PATH)) | ||||
|  | ||||
| tools/target_bsf_%_fuzzer$(EXESUF): tools/target_bsf_%_fuzzer.o $(FF_DEP_LIBS) | ||||
| 	$(LD) $(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $^ $(ELIBS) $(FF_EXTRALIBS) $(LIBFUZZER_PATH) | ||||
| 	$(call LINK,$(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $^ $(ELIBS) $(FF_EXTRALIBS) $(LIBFUZZER_PATH)) | ||||
|  | ||||
| target_dem_%_fuzzer$(EXESUF): target_dem_%_fuzzer.o $(FF_DEP_LIBS) | ||||
| 	$(LD) $(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $^ $(ELIBS) $(FF_EXTRALIBS) $(LIBFUZZER_PATH) | ||||
| 	$(call LINK,$(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $^ $(ELIBS) $(FF_EXTRALIBS) $(LIBFUZZER_PATH)) | ||||
|  | ||||
| tools/target_dem_fuzzer$(EXESUF): tools/target_dem_fuzzer.o $(FF_DEP_LIBS) | ||||
| 	$(LD) $(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $^ $(ELIBS) $(FF_EXTRALIBS) $(LIBFUZZER_PATH) | ||||
| 	$(call LINK,$(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $^ $(ELIBS) $(FF_EXTRALIBS) $(LIBFUZZER_PATH)) | ||||
|  | ||||
| tools/target_io_dem_fuzzer$(EXESUF): tools/target_io_dem_fuzzer.o $(FF_DEP_LIBS) | ||||
| 	$(LD) $(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $^ $(ELIBS) $(FF_EXTRALIBS) $(LIBFUZZER_PATH) | ||||
| 	$(call LINK,$(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $^ $(ELIBS) $(FF_EXTRALIBS) $(LIBFUZZER_PATH)) | ||||
|  | ||||
| tools/target_sws_fuzzer$(EXESUF): tools/target_sws_fuzzer.o $(FF_DEP_LIBS) | ||||
| 	$(LD) $(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $^ $(ELIBS) $(FF_EXTRALIBS) $(LIBFUZZER_PATH) | ||||
| 	$(call LINK,$(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $^ $(ELIBS) $(FF_EXTRALIBS) $(LIBFUZZER_PATH)) | ||||
|  | ||||
| tools/target_swr_fuzzer$(EXESUF): tools/target_swr_fuzzer.o $(FF_DEP_LIBS) | ||||
| 	$(LD) $(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $^ $(ELIBS) $(FF_EXTRALIBS) $(LIBFUZZER_PATH) | ||||
| 	$(call LINK,$(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $^ $(ELIBS) $(FF_EXTRALIBS) $(LIBFUZZER_PATH)) | ||||
|  | ||||
| tools/enum_options$(EXESUF): ELIBS = $(FF_EXTRALIBS) | ||||
| tools/enum_options$(EXESUF): $(FF_DEP_LIBS) | ||||
| @@ -144,7 +144,7 @@ else | ||||
| endif | ||||
|  | ||||
| %$(PROGSSUF)_g$(EXESUF): $(FF_DEP_LIBS) | ||||
| 	$(LD) $(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $(OBJS-$*) $(FF_EXTRALIBS) | ||||
| 	$(call LINK,$(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $(OBJS-$*) $(FF_EXTRALIBS)) | ||||
|  | ||||
| VERSION_SH  = $(SRC_PATH)/ffbuild/version.sh | ||||
| ifeq ($(VERSION_TRACKING),yes) | ||||
|   | ||||
| @@ -12,13 +12,22 @@ endif | ||||
|  | ||||
| ifndef SUBDIR | ||||
|  | ||||
| LINK = $(LD) $(1) | ||||
|  | ||||
| ifeq ($(LD),$(CC)) | ||||
| ifneq ($(CXX),) | ||||
| LDXX := $(CXX) | ||||
| LINK = $(if $(filter -lstdc++,$(1)),$(LDXX) $(filter-out -lstdc++,$(1)),$(LD) $(1)) | ||||
| endif | ||||
| endif | ||||
|  | ||||
| BIN2CEXE = ffbuild/bin2c$(HOSTEXESUF) | ||||
| BIN2C = $(BIN2CEXE) | ||||
|  | ||||
| ifndef V | ||||
| Q      = @ | ||||
| ECHO   = printf "$(1)\t%s\n" $(2) | ||||
| BRIEF  = CC CXX OBJCC HOSTCC HOSTLD AS X86ASM AR LD STRIP CP WINDRES NVCC BIN2C METALCC METALLIB | ||||
| BRIEF  = CC CXX OBJCC HOSTCC HOSTLD AS X86ASM AR LD LDXX STRIP CP WINDRES NVCC BIN2C METALCC METALLIB | ||||
| SILENT = DEPCC DEPHOSTCC DEPAS DEPX86ASM RANLIB RM | ||||
|  | ||||
| MSG    = $@ | ||||
|   | ||||
| @@ -55,8 +55,12 @@ $(TESTPROGS): THISLIB = $(SUBDIR)$(LIBNAME) | ||||
|  | ||||
| $(LIBOBJS): CPPFLAGS += -DBUILDING_$(NAME) | ||||
|  | ||||
| $(NAME)LINK_EXE_ARGS = $(LDFLAGS) $(LDEXEFLAGS) | ||||
| $(NAME)LINK_SO_ARGS = $(SHFLAGS) $(LDFLAGS) $(LDSOFLAGS) | ||||
| $(NAME)LINK_EXTRA = $(FFEXTRALIBS) | ||||
|  | ||||
| $(TESTPROGS) $(TOOLS): %$(EXESUF): %.o | ||||
| 	$$(LD) $(LDFLAGS) $(LDEXEFLAGS) $$(LD_O) $$(filter %.o,$$^) $$(THISLIB) $(FFEXTRALIBS) $$(EXTRALIBS-$$(*F)) $$(ELIBS) | ||||
| 	$$(call LINK,$$(call $(NAME)LINK_EXE_ARGS) $$(LD_O) $$(filter %.o,$$^) $$(THISLIB) $$(call $(NAME)LINK_EXTRA) $$(EXTRALIBS-$$(*F)) $$(ELIBS)) | ||||
|  | ||||
| $(SUBDIR)lib$(NAME).version: $(SUBDIR)version.h $(SUBDIR)version_major.h | $(SUBDIR) | ||||
| 	$$(M) $$(SRC_PATH)/ffbuild/libversion.sh $(NAME) $$^ > $$@ | ||||
| @@ -74,9 +78,9 @@ $(SUBDIR)$(SLIBNAME_WITH_MAJOR): $(OBJS) $(SHLIBOBJS) $(SUBDIR)lib$(NAME).ver | ||||
| 	$(SLIB_CREATE_DEF_CMD) | ||||
| ifeq ($(RESPONSE_FILES),yes) | ||||
| 	$(Q)echo $$(filter %.o,$$^) > $$@.objs | ||||
| 	$$(LD) $(SHFLAGS) $(LDFLAGS) $(LDSOFLAGS) $$(LD_O) @$$@.objs $(FFEXTRALIBS) | ||||
| 	$$(call LINK,$$(call $(NAME)LINK_SO_ARGS) $$(LD_O) @$$@.objs $$(call $(NAME)LINK_EXTRA)) | ||||
| else | ||||
| 	$$(LD) $(SHFLAGS) $(LDFLAGS) $(LDSOFLAGS) $$(LD_O) $$(filter %.o,$$^) $(FFEXTRALIBS) | ||||
| 	$$(call LINK,$$(call $(NAME)LINK_SO_ARGS) $$(LD_O) $$(filter %.o,$$^) $$(call $(NAME)LINK_EXTRA)) | ||||
| endif | ||||
| 	$(SLIB_EXTRA_CMD) | ||||
| 	-$(RM) $$@.objs | ||||
|   | ||||
| @@ -15,7 +15,7 @@ $(APITESTOBJS) $(APITESTOBJS:.o=.i): CPPFLAGS += -DTEST | ||||
| $(APITESTOBJS) $(APITESTOBJS:.o=.i): CFLAGS += -Umain | ||||
|  | ||||
| $(APITESTPROGS): %$(EXESUF): %.o $(FF_DEP_LIBS) | ||||
| 	$(LD) $(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $(filter %.o,$^) $(FF_EXTRALIBS) $(ELIBS) | ||||
| 	$(call LINK,$(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $(filter %.o,$^) $(FF_EXTRALIBS) $(ELIBS)) | ||||
|  | ||||
| testclean:: | ||||
| 	$(RM) $(addprefix $(APITESTSDIR)/,$(CLEANSUFFIXES) *-test$(EXESUF)) | ||||
|   | ||||
| @@ -107,7 +107,7 @@ tests/checkasm/checkasm.o: CFLAGS += -Umain | ||||
| CHECKASM := tests/checkasm/checkasm$(EXESUF) | ||||
|  | ||||
| $(CHECKASM): $(CHECKASMOBJS) $(FF_STATIC_DEP_LIBS) | ||||
| 	$(LD) $(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $(CHECKASMOBJS) $(FF_STATIC_DEP_LIBS) $(EXTRALIBS-avcodec) $(EXTRALIBS-avfilter) $(EXTRALIBS-avformat) $(EXTRALIBS-avutil) $(EXTRALIBS-swresample) $(EXTRALIBS) | ||||
| 	$(call LINK,$(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $(CHECKASMOBJS) $(FF_STATIC_DEP_LIBS) $(EXTRALIBS-avcodec) $(EXTRALIBS-avfilter) $(EXTRALIBS-avformat) $(EXTRALIBS-avutil) $(EXTRALIBS-swresample) $(EXTRALIBS)) | ||||
|  | ||||
| run-checkasm: $(CHECKASM) | ||||
| run-checkasm: | ||||
|   | ||||
		Reference in New Issue
	
	Block a user