| 1 | # This is only intended to work on a Darwin host.
|
|---|
| 2 | # On the PPC (at least), it may only compile cleanly under Leopard.
|
|---|
| 3 |
|
|---|
| 4 | NOW = $(shell date -u "+%F-%H-%M-%S")
|
|---|
| 5 |
|
|---|
| 6 | GCC_VERSION = 5646
|
|---|
| 7 | ARCH = $(shell arch)
|
|---|
| 8 | ifeq ($(ARCH),i386)
|
|---|
| 9 | PLATFORM = intel
|
|---|
| 10 | else
|
|---|
| 11 | PLATFORM = $(ARCH)
|
|---|
| 12 | endif
|
|---|
| 13 |
|
|---|
| 14 | package: compile
|
|---|
| 15 | mkdir -p ffigen/include ffigen/bin bin
|
|---|
| 16 | cp -p build/gcc/xlimits.h ffigen/include/limits.h
|
|---|
| 17 | cp -p gcc-$(GCC_VERSION)/gcc/ginclude/* ffigen/include
|
|---|
| 18 | (cd build/gcc ; tar cf - include | tar xf - -C ../../ffigen)
|
|---|
| 19 | ifeq ($(ARCH),i386)
|
|---|
| 20 | # Need to copy header files which describe intrinsics for
|
|---|
| 21 | # vector/fpu hardware
|
|---|
| 22 | cp -p gcc-$(GCC_VERSION)/gcc/config/i386/xmmintrin.h \
|
|---|
| 23 | gcc-$(GCC_VERSION)/gcc/config/i386/tmmintrin.h \
|
|---|
| 24 | gcc-$(GCC_VERSION)/gcc/config/i386/emmintrin.h \
|
|---|
| 25 | gcc-$(GCC_VERSION)/gcc/config/i386/pmmintrin.h \
|
|---|
| 26 | gcc-$(GCC_VERSION)/gcc/config/i386/pmm_malloc.h \
|
|---|
| 27 | gcc-$(GCC_VERSION)/gcc/config/i386/gmm_malloc.h \
|
|---|
| 28 | gcc-$(GCC_VERSION)/gcc/config/i386/mmintrin.h \
|
|---|
| 29 | gcc-$(GCC_VERSION)/gcc/config/i386/mm3dnow.h \
|
|---|
| 30 | ffigen/include
|
|---|
| 31 | mv ffigen/include/gmm_malloc.h ffigen/include/mm_malloc.h
|
|---|
| 32 | endif
|
|---|
| 33 | cp -p build/gcc/cc1obj ffigen/bin/ffigen
|
|---|
| 34 | strip ffigen/bin/ffigen
|
|---|
| 35 | cp source/h-to-ffi.sh bin
|
|---|
| 36 | chmod +x bin/h-to-ffi.sh
|
|---|
| 37 | tar cvfz ffigen-apple-gcc-$(GCC_VERSION)-$(PLATFORM)-$(NOW).tar.gz bin ffigen
|
|---|
| 38 |
|
|---|
| 39 |
|
|---|
| 40 |
|
|---|
| 41 | compile: patch
|
|---|
| 42 | mkdir build
|
|---|
| 43 | (cd build; ../gcc-$(GCC_VERSION)/configure --enable-languages=objc)
|
|---|
| 44 | (cd build; ln -s . build-`../gcc-$(GCC_VERSION)/config.guess`)
|
|---|
| 45 | (cd build ; $(MAKE) maybe-configure-libiberty maybe-configure-gcc maybe-configure-libcpp maybe-configure-fixincludes)
|
|---|
| 46 | (cd build/libiberty ; $(MAKE))
|
|---|
| 47 | (cd build/intl ; $(MAKE))
|
|---|
| 48 | (cd build/libcpp ; $(MAKE))
|
|---|
| 49 | mkdir gcc
|
|---|
| 50 | (cd build/fixincludes ; $(MAKE))
|
|---|
| 51 | (cd build/gcc ; $(MAKE) cc1obj stmp-fixinc xlimits.h)
|
|---|
| 52 |
|
|---|
| 53 |
|
|---|
| 54 | patch: extract
|
|---|
| 55 | ln -sf `pwd`/source/ffi.c gcc-$(GCC_VERSION)/gcc
|
|---|
| 56 | printf "char *ffi_version = \42%s\42;\n" "$(NOW)" > \
|
|---|
| 57 | gcc-$(GCC_VERSION)/gcc/ffi-version.h
|
|---|
| 58 | for f in source/gcc-$(GCC_VERSION)*.diff ; do \
|
|---|
| 59 | (cd gcc-$(GCC_VERSION)/gcc; patch -p0 <../../$$f); \
|
|---|
| 60 | done
|
|---|
| 61 |
|
|---|
| 62 |
|
|---|
| 63 | clean:
|
|---|
| 64 | rm -rf gcc-$(GCC_VERSION) build bin gcc ffigen*
|
|---|
| 65 |
|
|---|
| 66 |
|
|---|
| 67 | extract: dist-gcc/gcc-$(GCC_VERSION).tar.gz clean
|
|---|
| 68 | tar fxz dist-gcc/gcc-$(GCC_VERSION).tar.gz
|
|---|
| 69 |
|
|---|
| 70 |
|
|---|