diff --git a/Makefile b/Makefile index 37863b3155..4080b82214 100644 --- a/Makefile +++ b/Makefile @@ -10,6 +10,7 @@ PROGS-$(CONFIG_FFPROBE) += ffprobe PROGS-$(CONFIG_FFSERVER) += ffserver PROGS := $(PROGS-yes:%=%$(EXESUF)) +PROGS_G = $(PROGS-yes:%=%_g$(EXESUF)) OBJS = $(PROGS-yes:%=%.o) cmdutils.o MANPAGES = $(PROGS-yes:%=doc/%.1) PODPAGES = $(PROGS-yes:%=doc/%.pod) @@ -20,6 +21,7 @@ HOSTPROGS := $(TESTTOOLS:%=tests/%) BASENAMES = ffmpeg ffplay ffprobe ffserver ALLPROGS = $(BASENAMES:%=%$(EXESUF)) +ALLPROGS_G = $(BASENAMES:%=%_g$(EXESUF)) ALLMANPAGES = $(BASENAMES:%=%.1) FFLIBS-$(CONFIG_AVDEVICE) += avdevice @@ -51,6 +53,10 @@ INSTALL_PROGS_TARGETS-$(CONFIG_SHARED) = install-libs all: $(FF_DEP_LIBS) $(PROGS) $(ALL_TARGETS-yes) +$(PROGS): %$(EXESUF): %_g$(EXESUF) + $(CP) $< $@ + $(STRIP) $@ + config.h: .config .config: $(wildcard $(FFLIBS:%=$(SRC_DIR)/lib%/all*.c)) @-tput bold 2>/dev/null @@ -74,10 +80,10 @@ endef $(foreach D,$(FFLIBS),$(eval $(call DOSUBDIR,lib$(D)))) -ffplay$(EXESUF): FF_EXTRALIBS += $(SDL_LIBS) -ffserver$(EXESUF): FF_LDFLAGS += $(FFSERVERLDFLAGS) +ffplay_g$(EXESUF): FF_EXTRALIBS += $(SDL_LIBS) +ffserver_g$(EXESUF): FF_LDFLAGS += $(FFSERVERLDFLAGS) -%$(EXESUF): %.o cmdutils.o $(FF_DEP_LIBS) +%_g$(EXESUF): %.o cmdutils.o $(FF_DEP_LIBS) $(LD) $(FF_LDFLAGS) -o $@ $< cmdutils.o $(FF_EXTRALIBS) tools/%$(EXESUF): tools/%.o @@ -159,7 +165,7 @@ testclean: $(RM) $(TESTTOOLS:%=tests/%$(HOSTEXESUF)) clean:: testclean - $(RM) $(ALLPROGS) + $(RM) $(ALLPROGS) $(ALLPROGS_G) $(RM) $(CLEANSUFFIXES) $(RM) doc/*.html doc/*.pod doc/*.1 $(RM) $(TOOLS) diff --git a/common.mak b/common.mak index 6daf77cc07..3d1a1293fb 100644 --- a/common.mak +++ b/common.mak @@ -21,7 +21,7 @@ endif ifndef V Q = @ ECHO = printf "$(1)\t%s\n" $(2) -BRIEF = CC AS YASM AR LD HOSTCC +BRIEF = CC AS YASM AR LD HOSTCC STRIP CP SILENT = DEPCC YASMDEP RM RANLIB MSG = $@ M = @$(call ECHO,$(TAG),$@); diff --git a/configure b/configure index 4cc64af740..435bb629af 100755 --- a/configure +++ b/configure @@ -243,6 +243,7 @@ Developer options (useful when working on FFmpeg itself): --enable-debug=LEVEL set the debug level [$debuglevel] --disable-optimizations disable compiler optimizations --enable-extra-warnings enable more compiler warnings + --disable-stripping disable stripping of executables and shared libraries --samples=PATH location of test samples for FATE, if not set use \$FATE_SAMPLES at make invocation time. @@ -1146,6 +1147,7 @@ CMDLINE_SELECT=" extra_warnings logging optimizations + stripping symver yasm " @@ -1183,6 +1185,7 @@ CMDLINE_SET=" pkg_config samples source_path + strip sysinclude sysroot target_exec @@ -1622,6 +1625,7 @@ nm_default="nm" objformat="elf" pkg_config_default=pkg-config ranlib="ranlib" +strip_default="strip" yasmexe="yasm" nogas=":" @@ -1654,6 +1658,7 @@ enable network enable optimizations enable protocols enable static +enable stripping enable swscale enable swscale_alpha @@ -1830,10 +1835,11 @@ cc_default="${cross_prefix}${cc_default}" nm_default="${cross_prefix}${nm_default}" pkg_config_default="${cross_prefix}${pkg_config_default}" ranlib="${cross_prefix}${ranlib}" +strip_default="${cross_prefix}${strip_default}" sysinclude_default="${sysroot}/usr/include" -set_default cc nm pkg_config sysinclude +set_default cc nm pkg_config strip sysinclude enabled cross_compile || host_cc_default=$cc set_default host_cc @@ -2392,6 +2398,7 @@ case $target_os in ;; bsd/os) add_extralibs -lpoll -lgnugetopt + strip="strip -d" ;; darwin) enable malloc_aligned @@ -2399,6 +2406,7 @@ case $target_os in enabled ppc && add_asflags -force_cpusubtype_ALL SHFLAGS='-dynamiclib -Wl,-single_module -Wl,-install_name,$(SHLIBDIR)/$(SLIBNAME),-current_version,$(LIBVERSION),-compatibility_version,$(LIBMAJOR)' enabled x86_32 && append SHFLAGS -Wl,-read_only_relocs,suppress + strip="${strip} -x" add_ldflags -Wl,-dynamic,-search_paths_first SLIBSUF=".dylib" SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME).$(LIBVERSION)$(SLIBSUF)' @@ -2468,6 +2476,7 @@ case $target_os in ranlib="echo ignoring ranlib" ;; os/2*) + strip="lxlite -CS" ln_s="cp -f" add_ldflags -Zomf -Zbin-files -Zargs-wild -Zmap SHFLAGS='$(SUBDIR)$(NAME).def -Zdll -Zomf' @@ -3129,6 +3138,7 @@ if enabled sparc; then echo "VIS enabled ${vis-no}" fi echo "debug symbols ${debug-no}" +echo "strip symbols ${stripping-no}" echo "optimizations ${optimizations-no}" echo "static ${static-no}" echo "shared ${shared-no}" @@ -3224,6 +3234,8 @@ if enabled source_path_used; then map 'test -f "$source_path/$v" && $ln_s "$source_path/$v" $v' $FILES fi +enabled stripping || strip="echo skipping strip" + config_files="$TMPH config.mak" cat > config.mak <