X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=contrib%2Fsrc%2Fmain.mak;h=1c0cf98479105efcc8f9b2c4136f0782bba995bf;hb=e47fb7cd004cd51c21f563593501a359a3a3f7ee;hp=a79d9c7c3e7e8204ca7dd684f71ffd9ae511884b;hpb=2bed93ef78a1e02ff7318f56ea2d27dbaf579841;p=vlc diff --git a/contrib/src/main.mak b/contrib/src/main.mak index a79d9c7c3e..1c0cf98479 100644 --- a/contrib/src/main.mak +++ b/contrib/src/main.mak @@ -5,9 +5,15 @@ all: install -PKGS_ALL := $(patsubst ../src/%/rules.mak,%,$(wildcard ../src/*/rules.mak)) -SRC := ../src -TARBALLS := ../tarballs +# bootstrap configuration +include config.mak + +TOPSRC ?= ../../contrib +TOPDST ?= .. +SRC := $(TOPSRC)/src +TARBALLS := $(TOPSRC)/tarballs + +PKGS_ALL := $(patsubst $(SRC)/%/rules.mak,%,$(wildcard $(SRC)/*/rules.mak)) DATE := $(shell date +%Y%m%d) VPATH := $(TARBALLS) @@ -17,13 +23,10 @@ SF := http://heanet.dl.sourceforge.net/sourceforge VIDEOLAN := http://downloads.videolan.org/pub/videolan CONTRIB_VIDEOLAN := $(VIDEOLAN)/testing/contrib -# bootstrap configuration -include config.mak - # # Machine-dependent variables # -PREFIX ?= ../hosts/$(HOST) +PREFIX ?= $(TOPDST)/$(HOST) PREFIX := $(abspath $(PREFIX)) ifneq ($(HOST),$(BUILD)) HAVE_CROSS_COMPILE = 1 @@ -86,6 +89,36 @@ STRIP := $(HOST)-strip endif endif +ifdef HAVE_MACOSX +OSX_VERSION?=10.5 +MACOSX_SDK=/Developer/SDKs/MacOSX$(OSX_VERSION).sdk +CC=gcc-4.2 +CXX=g++-4.2 +AR=ar +LD=ld +STRIP=strip +RANLIB=ranlib +EXTRA_CFLAGS += -isysroot $(MACOSX_SDK) -mmacosx-version-min=$(OSX_VERSION) +EXTRA_LDFLAGS += -Wl,-syslibroot,$(MACOSX_SDK) -mmacosx-version-min=$(OSX_VERSION) -isysroot $(MACOSX_SDK) +#TODO ppc +ifeq ($(ARCH),x86_64) +EXTRA_CFLAGS += -m64 +EXTRA_LDFLAGS += -m64 +else +EXTRA_CFLAGS += -m32 +EXTRA_LDFLAGS += -m32 +endif + +XCODE_FLAGS = -sdk macosx$(OSX_VERSION) +ifeq ($(xcodebuild -version 2>/dev/null | tee /dev/null|head -1|cut -d\ -f2|cut -d. -f1), 3) +# XCode 3 doesn't support -arch +else +XCODE_FLAGS += -arch $(ARCH) +endif + +endif + + EXTRA_CFLAGS += -I$(PREFIX)/include CPPFLAGS := $(CPPFLAGS) $(EXTRA_CFLAGS) CFLAGS := $(CFLAGS) $(EXTRA_CFLAGS) @@ -122,33 +155,36 @@ endif endif SVN ?= $(error subversion client (svn) not found!) -ifndef WGET -ifeq ($(shell wget --version >/dev/null 2>&1 || echo FAIL),) -WGET = wget --passive -c -endif -endif -ifndef WGET ifeq ($(shell curl --version >/dev/null 2>&1 || echo FAIL),) -WGET = curl -L -O +download = curl -f -L -- "$(1)" > "$@" +else ifeq ($(shell wget --version >/dev/null 2>&1 || echo FAIL),) +download = rm -f $@.tmp && \ + wget --passive -c -p -O $@.tmp "$(1)" && \ + touch $@.tmp && \ + mv $@.tmp $@ +else +download = $(error Neither curl nor wget found!) +endif + +ifeq ($(shell gzcat --version >/dev/null 2>&1 || echo FAIL),) +ZCAT = gzcat +else ifeq ($(shell zcat --version >/dev/null 2>&1 || echo FAIL),) +ZCAT = zcat +else +ZCAT ?= $(error Gunzip client (zcat) not found!) endif + +ifeq ($(shell sha512sum --version >/dev/null 2>&1 || echo FAIL),) +SHA512SUM = sha512sum +else ifeq ($(shell shasum --version >/dev/null 2>&1 || echo FAIL),) +SHA512SUM = shasum -a 512 +else +SHA512SUM = $(error SHA-512 checksumming not found!) endif -WGET ?= $(error Neither wget not curl found!) # # Common helpers # -HOSTVARS := CPPFLAGS="$(CPPFLAGS)" -HOSTVARS += CC="$(CC)" -HOSTVARS += CFLAGS="$(CFLAGS)" -HOSTVARS += CXX="$(CXX)" -HOSTVARS += CXXFLAGS="$(CXXFLAGS)" -HOSTVARS += LD="$(LD)" -HOSTVARS += LDFLAGS="$(LDFLAGS)" -HOSTVARS += AR="$(AR)" -HOSTVARS += RANLIB="$(RANLIB)" -HOSTVARS += STRIP="$(STRIP)" -HOSTVARS_AR += AR="$(AR) rcvu" - HOSTCONF := --prefix="$(PREFIX)" HOSTCONF += --build="$(BUILD)" --host="$(HOST)" --target="$(HOST)" HOSTCONF += --program-prefix="" @@ -156,25 +192,42 @@ HOSTCONF += --program-prefix="" HOSTCONF += --enable-static --disable-shared --disable-dependency-tracking ifdef HAVE_WIN32 HOSTCONF += --without-pic +PIC := else HOSTCONF += --with-pic +PIC := -fPIC endif -download = rm -f $@.tmp && \ - $(WGET) -p -O $@.tmp $(1) && \ - touch $@.tmp && \ - mv $@.tmp $@ +HOSTTOOLS := \ + CC="$(CC)" CXX="$(CXX)" LD="$(LD)" \ + AR="$(AR)" RANLIB="$(RANLIB)" STRIP="$(STRIP)" \ + PATH="$(PREFIX)/bin:$(PATH)" +HOSTVARS := $(HOSTTOOLS) \ + CPPFLAGS="$(CPPFLAGS)" \ + CFLAGS="$(CFLAGS)" \ + CXXFLAGS="$(CXXFLAGS)" \ + LDFLAGS="$(LDFLAGS)" +HOSTVARS_PIC := $(HOSTTOOLS) \ + CPPFLAGS="$(CPPFLAGS) $(PIC)" \ + CFLAGS="$(CFLAGS) $(PIC)" \ + CXXFLAGS="$(CXXFLAGS) $(PIC)" \ + LDFLAGS="$(LDFLAGS)" + download_git = \ rm -Rf $(@:.tar.xz=) && \ $(GIT) clone $(2:%=--branch %) $(1) $(@:.tar.xz=) && \ + (cd $(@:.tar.xz=) && $(GIT) checkout $(3:%= %)) && \ rm -Rf $(@:%.tar.xz=%)/.git && \ (cd $(dir $@) && \ tar cvJ $(notdir $(@:.tar.xz=))) > $@ && \ rm -Rf $(@:.tar.xz=) -checksum = (cd $(TARBALLS) && $(1)sum -c -) < \ - $(SRC)/$(patsubst .sum-%,%,$@)/$(2)SUMS -CHECK_SHA256 = $(call checksum,sha512,SHA512) -CHECK_SHA512 = $(call checksum,sha512,SHA512) +checksum = \ + $(foreach f,$(filter $(TARBALLS)/%,$^), \ + grep -- " $(f:$(TARBALLS)/%=%)$$" \ + "$(SRC)/$(patsubst .sum-%,%,$@)/$(2)SUMS" &&) \ + (cd $(TARBALLS) && $(1) --check /dev/stdin) < \ + "$(SRC)/$(patsubst .sum-%,%,$@)/$(2)SUMS" +CHECK_SHA512 = $(call checksum,$(SHA512SUM),SHA512) UNPACK = $(RM) -R $@ \ $(foreach f,$(filter %.tar.gz %.tgz,$^), && tar xvzf $(f)) \ $(foreach f,$(filter %.tar.bz2,$^), && tar xvjf $(f)) \ @@ -193,7 +246,7 @@ CMAKE = cmake . -DCMAKE_TOOLCHAIN_FILE=$(abspath toolchain.cmake) \ # Per-package build rules # PKGS_FOUND := -include ../src/*/rules.mak +include $(SRC)/*/rules.mak # # Targets @@ -217,7 +270,7 @@ mostlyclean: -$(RM) $(foreach p,$(PKGS_ALL),.$(p) .sum-$(p) .dep-$(p)) -$(RM) toolchain.cmake -$(RM) -R "$(PREFIX)" - -find -maxdepth 1 -type d '!' -name . -exec $(RM) -R '{}' ';' + -$(RM) -R */ clean: mostlyclean -$(RM) $(TARBALLS)/*.* @@ -226,9 +279,44 @@ distclean: clean $(RM) config.mak unlink Makefile +PREBUILT_URL=ftp://ftp.videolan.org/pub/videolan/contrib/$(HOST)/vlc-contrib-$(HOST)-latest.tar.bz2 + +vlc-contrib-$(HOST)-latest.tar.bz2: + $(call download,$(PREBUILT_URL)) + +prebuilt: vlc-contrib-$(HOST)-latest.tar.bz2 + $(UNPACK) && mv $(HOST) $(TOPDST) + cd $(TOPDST)/$(HOST) && ./change_prefix.sh + package: install - (cd $(PREFIX)/.. && \ - tar cvJ $(notdir $(PREFIX))/) > ../vlc-contrib-$(HOST)-$(DATE).tar.xz + rm -Rf tmp/ + mkdir -p tmp/ + cp -r $(PREFIX) tmp/ + # remove useless files + cd tmp/$(notdir $(PREFIX)); \ + cd share; rm -Rf man doc gtk-doc info lua projectM gettext; cd ..; \ + rm -Rf man sbin etc lib/lua lib/sidplay + cp $(SRC)/change_prefix.sh tmp/$(notdir $(PREFIX))/ + cd tmp/$(notdir $(PREFIX)) && ./change_prefix.sh $(PREFIX) @@CONTRIB_PREFIX@@ + (cd tmp && tar c $(notdir $(PREFIX))/) | bzip2 -c > ../vlc-contrib-$(HOST)-$(DATE).tar.bz2 + +list: + @echo All packages: + @echo ' $(PKGS_ALL)' | fmt + @echo Distribution-provided packages: + @echo ' $(PKGS_FOUND)' | fmt + @echo Automatically selected packages: + @echo ' $(PKGS_AUTOMATIC)' | fmt + @echo Manually deselected packages: + @echo ' $(PKGS_DISABLE)' | fmt + @echo Manually selected packages: + @echo ' $(PKGS_ENABLE)' | fmt + @echo Depended-on packages: + @echo ' $(PKGS_DEPS)' | fmt + @echo To-be-built packages: + @echo ' $(PKGS)' | fmt + +.PHONY: all fetch fetch-all install mostlyclean clean distclean package list prebuilt # CMake toolchain toolchain.cmake: @@ -240,7 +328,7 @@ endif ifdef HAVE_MACOSX echo "set(CMAKE_SYSTEM_NAME Darwin)" >> $@ echo "set(CMAKE_C_FLAGS $(CFLAGS))" >> $@ - echo "set(CMAKE_CXX_FLAGS $(CFLAGS)" >> $@ + echo "set(CMAKE_CXX_FLAGS $(CFLAGS))" >> $@ echo "set(CMAKE_LD_FLAGS $(LDFLAGS))" >> $@ endif echo "set(CMAKE_C_COMPILER $(CC))" >> $@