2025-08-08 20:34:09 +02:00

209 lines
9.2 KiB
Makefile

PALIBTOOL = libtool
PALIBTOOL_VERSION = 2.4
LIBSNDFILE = libsndfile
LIBSNDFILE_VERSION = 1.0.24
LIBSAMPLERATE = libsamplerate
LIBSAMPLERATE_VERSION = 0.1.7
JSONC = json-c
JSONC_VERSION = 0.9
SPEEX = speex
SPEEX_VERSION = 1.2rc1
PULSEAUDIO = pulseaudio
PULSEAUDIO_VERSION = 1.0-fe-20111209
PULSEAUDIO_SVER = 1.0
TMPDIST = $(abs_builddir)/dist
TMPHDR = $(abs_builddir)/include
# For caching pre-built binaries on the build slave
CACHE_FLAG = $(HOME)/.docache_pulse
CACHE_DIR = $(HOME)/savebuild
CACHE_TGZ = $(CACHE_DIR)/pulse.tgz
EXTRA_DIST = urls.txt cfg patches $(LIBSNDFILE).shasum $(SPEEX).shasum $(JSONC).shasum \
$(LIBSAMPLERATE).shasum $(PULSEAUDIO).shasum
CLEANFILES = -r $(TMPDIST) $(TMPHDR) pkg-config tmpinstall .*-build .*-srcdir .*-checkarchive .*-lipo \
$(LIBSAMPLERATE) $(LIBSAMPLERATE)-$(LIBSAMPLERATE_VERSION) \
$(LIBSNDFILE) $(LIBSNDFILE)-$(LIBSNDFILE_VERSION) \
$(JSONC) $(JSONC)-$(JSONC_VERSION) \
$(PALIBTOOL) $(PALIBTOOL)-$(PALIBTOOL_VERSION) \
$(SPEEX) $(SPEEX)-$(SPEEX_VERSION) \
$(PULSEAUDIO) $(PULSEAUDIO)-$(PULSEAUDIO_VERSION)
DISTCLEANFILES = *.tar.gz
MAINTAINERCLEANFILES = Makefile.in
CFG_GENERIC = --prefix=$(prefix) --enable-shared --disable-static --disable-dependency-tracking
CFG_libtool =
CFG_speexLE = --enable-sse --without-ogg
CFG_speexBE = --libdir=$(libdir)/ppc --disable-oggtest --without-ogg --host ppc-apple-darwin10
CFG_jsonc =
CFG_libsndfileLE = --disable-external-libs
CFG_libsndfileBE = --disable-external-libs --libdir=$(libdir)/ppc --host ppc-apple-darwin10
CFG_libsamplerateLE =
CFG_libsamplerateBE = --libdir=$(libdir)/ppc --host ppc-apple-darwin10
CFG_pulseaudioLE = --disable-glib2 --disable-openssl --disable-nls --with-udev-rules-dir=$(prefix)/lib \
--with-mac-version-min=$(OSX_MINVER) --with-mac-sysroot=$(OSX_SYSROOT) --program-suffix=.i386
CFG_pulseaudioBE = --disable-glib2 --disable-openssl --disable-nls --with-udev-rules-dir=$(prefix)/lib \
--with-mac-version-min=$(OSX_MINVER) --with-mac-sysroot=$(OSX_SYSROOT) --libdir=$(libdir)/ppc --host ppc-apple-darwin10 --program-suffix=.ppc
PRECFG_libtool = true
PRECFG_speex = true
PRECFG_jsonc = autoreconf -f -i
PRECFG_libsndfile = true
PRECFG_libsamplerate = true
PRECFG_pulseaudio = true
POSTCFG_libtool = true
POSTCFG_speex = true
POSTCFG_jsonc = true
POSTCFG_libsndfile = true
POSTCFG_libsamplerate = true
POSTCFG_pulseaudio = true
MACENV_UNIVERSAL = CC="$(CC)" CXX="$(CXX)" LD="$(LD)" \
CFLAGS="$(UNIFLAGS) $(OSX_SDKFLAGS) -I$(TMPDIST)/include" \
CXXFLAGS="$(UNIFLAGS) $(OSX_SDKFLAGS)" CPPFLAGS="-I$(TMPDIST)$(includedir)"
MACENV_INTEL = CC="$(CC)" CXX="$(CXX)" LD="$(LD)" \
CFLAGS="-arch i386 $(OSX_SDKFLAGS)" \
CXXFLAGS="-arch i386 $(OSX_SDKFLAGS)" CPPFLAGS="-I$(TMPDIST)$(includedir)"
MACENV_PPC = CC="$(CC)" CXX="$(CXX)" LD="$(LD)" \
CFLAGS="-arch ppc $(OSX_SDKFLAGS)" \
CXXFLAGS="-arch ppc $(OSX_SDKFLAGS)" CPPFLAGS="-I$(TMPDIST)$(includedir)"
ENV_libtool = env $(MACENV_UNIVERSAL)
ENV_speexLE = env $(MACENV_INTEL)
ENV_speexBE = env $(MACENV_PPC) OGG_LIBS= OGG_CFLAGS=
ENV_jsonc = env $(MACENV_UNIVERSAL)
ENV_libsndfileLE = env $(MACENV_INTEL)
ENV_libsndfileBE = env $(MACENV_PPC)
ENV_libsamplerateLE = env $(MACENV_INTEL) \
SNDFILE_CFLAGS="-I$(TMPDIST)$(includedir)" SNDFILE_LIBS="-L$(TMPDIST)$(libdir) -lsndfile"
ENV_libsamplerateBE = env $(MACENV_PPC) \
SNDFILE_CFLAGS="-I$(TMPDIST)$(includedir)" SNDFILE_LIBS="-L$(TMPDIST)$(libdir) -lsndfile"
ENV_pulseaudioLE = env $(MACENV_INTEL) CC="gcc-4.2" CXX="g++-4.2" \
LDFLAGS="-L$(TMPDIST)$(libdir)" \
LIBSNDFILE_CFLAGS="-I." LIBSNDFILE_LIBS="-lsndfile" \
LIBSAMPLERATE_CFLAGS="-I." LIBSAMPLERATE_LIBS="-lsamplerate" \
LIBJSON_CFLAGS="-I$(TMPDIST)$(includedir)/json" LIBJSON_LIBS="-ljson" \
LIBSPEEX_CFLAGS="-I." LIBSPEEX_LIBS="-lspeex -lspeexdsp" \
PATH="$(abs_builddir):$(PATH)"
ENV_pulseaudioBE = env $(MACENV_PPC) CC="gcc-4.2" CXX="g++-4.2" \
LDFLAGS="-L$(TMPDIST)$(libdir)" \
LIBSNDFILE_CFLAGS="-I." LIBSNDFILE_LIBS="-lsndfile" \
LIBSAMPLERATE_CFLAGS="-I." LIBSAMPLERATE_LIBS="-lsamplerate" \
LIBJSON_CFLAGS="-I$(TMPDIST)$(includedir)/json" LIBJSON_LIBS="-ljson" \
LIBSPEEX_CFLAGS="-I." LIBSPEEX_LIBS="-lspeex -lspeexdsp" \
PATH="$(abs_builddir):$(PATH)"
upinstall: cachedinstall
cp -av $(TMPDIST)/ $(PKGROOT)/
cachedinstall:
test -f $(CACHE_TGZ) && tar xzf $(CACHE_TGZ) || true
test -f $(CACHE_TGZ) || $(MAKE) tmpinstall
tmpinstall:
$(MAKE) ecfg= subtarget=$(PALIBTOOL) subvar=$(PALIBTOOL) subsrc=$(PALIBTOOL)-$(PALIBTOOL_VERSION) tbuild
$(MAKE) ecfg= subtarget=$(JSONC) subvar=jsonc subsrc=$(JSONC)-$(JSONC_VERSION) tbuild
mkdir -p $(TMPDIST)$(libdir)/ppc
$(MAKE) ecfg=LE subtarget=$(SPEEX) subvar=$(SPEEX) subsrc=$(SPEEX)-$(SPEEX_VERSION) tbuild
$(MAKE) -C $(SPEEX)-$(SPEEX_VERSION) distclean
rm -f .$(SPEEX)-build
$(MAKE) ecfg=BE subtarget=$(SPEEX) subvar=$(SPEEX) subsrc=$(SPEEX)-$(SPEEX_VERSION) tbuild
$(MAKE) ecfg=BE subtarget=$(SPEEX) subvar=$(SPEEX) subsrc=$(SPEEX)-$(SPEEX_VERSION) tlipo
$(MAKE) ecfg=LE subtarget=$(LIBSNDFILE) subvar=$(LIBSNDFILE) subsrc=$(LIBSNDFILE)-$(LIBSNDFILE_VERSION) tbuild
$(MAKE) -C $(LIBSNDFILE)-$(LIBSNDFILE_VERSION) distclean
rm -f .$(LIBSNDFILE)-build
$(MAKE) ecfg=BE subtarget=$(LIBSNDFILE) subvar=$(LIBSNDFILE) subsrc=$(LIBSNDFILE)-$(LIBSNDFILE_VERSION) tbuild
$(MAKE) ecfg=BE subtarget=$(LIBSNDFILE) subvar=$(LIBSNDFILE) subsrc=$(LIBSNDFILE)-$(LIBSNDFILE_VERSION) tlipo
$(MAKE) ecfg=LE subtarget=$(LIBSAMPLERATE) subvar=$(LIBSAMPLERATE) subsrc=$(LIBSAMPLERATE)-$(LIBSAMPLERATE_VERSION) tbuild
$(MAKE) -C $(LIBSAMPLERATE)-$(LIBSAMPLERATE_VERSION) distclean
rm -f .$(LIBSAMPLERATE)-build
$(MAKE) ecfg=BE subtarget=$(LIBSAMPLERATE) subvar=$(LIBSAMPLERATE) subsrc=$(LIBSAMPLERATE)-$(LIBSAMPLERATE_VERSION) tbuild
$(MAKE) ecfg=BE subtarget=$(LIBSAMPLERATE) subvar=$(LIBSAMPLERATE) subsrc=$(LIBSAMPLERATE)-$(LIBSAMPLERATE_VERSION) tlipo
@echo "#!/bin/sh" > pkg-config; \
echo "case \$$* in *--exists*) exit 1 ;; *) exit 0 ;; esac" >> pkg-config; \
chmod a+x pkg-config || true
$(MAKE) ecfg=LE subtarget=$(PULSEAUDIO) subvar=$(PULSEAUDIO) subsrc=$(PULSEAUDIO)-$(PULSEAUDIO_VERSION) tbuild
$(MAKE) -C $(PULSEAUDIO)-$(PULSEAUDIO_VERSION) distclean
rm -f .$(PULSEAUDIO)-build
$(MAKE) ecfg=BE subtarget=$(PULSEAUDIO) subvar=$(PULSEAUDIO) subsrc=$(PULSEAUDIO)-$(PULSEAUDIO_VERSION) tbuild
$(MAKE) ecfg=BE subtarget=$(PULSEAUDIO) subvar=$(PULSEAUDIO) subsrc=$(PULSEAUDIO)-$(PULSEAUDIO_VERSION) modsub=/pulse-$(PULSEAUDIO_SVER)/modules tlipo
rmdir $(TMPDIST)$(libdir)/ppc
mkdir -p $(TMPHDR)
cp -a $(TMPDIST)$(prefix)/include/* $(TMPHDR)
rm -rf $(TMPDIST)$(prefix)/{share,libexec,include} $(TMPDIST)${libdir}/pkgconfig $(TMPDIST)${libdir}/cmake
find $(TMPDIST) -name "*.la" -o -name "*.a"|xargs rm -f
rm -f $(TMPDIST)$(bindir)/sndfile-* $(TMPDIST)$(bindir)/libtool*
cp $(srcdir)/cfg/* $(TMPDIST)$(prefix)/etc/pulse/
test -f $(CACHE_FLAG) && tar czf $(CACHE_TGZ) dist include || true
touch $@
tbuild: .$(subtarget)-build
tlipo: .$(subtarget)-lipo
.$(subtarget)-lipo: .$(subtarget)-build
@echo Merging $(subtarget) to universal
@for f in $(TMPDIST)$(libdir)/ppc/*.dylib ; do \
bn=`basename $$f` ; \
test -L $$f || mv $(TMPDIST)$(libdir)/$$bn $(TMPDIST)$(libdir)/i386-$$bn ; \
test -L $$f || lipo -create -output $(TMPDIST)$(libdir)/$$bn $$f $(TMPDIST)$(libdir)/i386-$$bn ; \
rm -f $(TMPDIST)$(libdir)/i386-$$bn ; \
done
@if test -n "$(modsub)" ; then \
echo Merging $(subtarget) modules to universal ; \
for f in $(TMPDIST)$(libdir)/ppc$(modsub)/*.{dylib,so} ; do \
bn=`basename $$f` ; \
mv $(TMPDIST)$(libdir)$(modsub)/$$bn $(TMPDIST)$(libdir)$(modsub)/i386-$$bn ; \
lipo -create -output $(TMPDIST)$(libdir)$(modsub)/$$bn \
$$f $(TMPDIST)$(libdir)$(modsub)/i386-$$bn ; \
rm $(TMPDIST)$(libdir)$(modsub)/i386-$$bn ; \
done ; \
echo Merging $(subtarget) programs to universal ; \
for f in $(TMPDIST)$(bindir)/*.i386 ; do \
bn=`basename $$f .i386` ; \
file $$f|grep -q shell || lipo -create -output $(TMPDIST)$(bindir)/$$bn $$f $(TMPDIST)$(bindir)/$$bn.ppc ; \
file $$f|grep -q shell && mv $$f $(TMPDIST)$(bindir)/$$bn || true ; \
rm -f $$f $(TMPDIST)$(bindir)/$$bn.ppc ; \
done ; \
fi
@rm -rf $(TMPDIST)$(libdir)/ppc/*
@touch $@
.$(subtarget)-build: .$(subtarget)-srcdir
@echo Configuring $(subtarget)
cd $(subsrc) && $(PRECFG_$(subvar)) && $(ENV_$(subvar)$(ecfg)) ./configure $(CFG_GENERIC) $(CFG_$(subvar)$(ecfg))
@$(POSTCFG_$(subvar))
@echo building $(subtarget)
@$(MAKE) V=$(V) DESTDIR=$(TMPDIST) -C $(subsrc) install
@touch $@
.$(subtarget)-patch:
@echo Applying patches for $(subtarget)
@shopt -s nullglob; for p in $(srcdir)/patches/$(subvar)-*.patch ; do \
test $(V) = 0 || echo Applying `basename $$p`; \
( cd $(subsrc) && patch -p1 < ../$$p ) ; \
done
.$(subtarget)-srcdir: .$(subtarget)-checkarchive
@$(RM) -rf $(subsrc)
@echo Unpacking $(subtarget)
@tar xzf $(subsrc).tar.gz
@test -n "$(NOPATCH_$(subtarget))" || $(MAKE) .$(subtarget)-patch
@touch $@
.$(subtarget)-checkarchive: $(subsrc).tar.gz
@echo Verifying $(subtarget)
@test -n "$(NOCHECK_$(subtarget))" || shasum --status -c $(srcdir)/$(subtarget).shasum
@touch $@
$(subsrc).tar.gz: $(srcdir)/urls.txt
@echo Downloading $(subtarget)
@test -f $@ || $(CURL) -f -L -o $(subsrc).tar.gz $(shell grep $(subsrc).tar.gz $(srcdir)/urls.txt)
@touch $@