source: trunk/ffigen4/Makefile@ 70

Last change on this file since 70 was 68, checked in by gb, 14 years ago

ARM Linux changes

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 4.3 KB
Line 
1OS = $(shell uname -s)
2NOW = $(shell date -u "+%F-%H-%M-%S")
3TAR = tar
4EXE =
5
6GCC_VERSION = 4.0.0
7ARCHIVES = gcc-core-$(GCC_VERSION).tar.bz2 gcc-objc-$(GCC_VERSION).tar.bz2
8
9ifeq ($(OS),Linux)
10ARCH = $(shell uname -m)
11ifeq ($(ARCH), ppc64)
12PLATFORM = linuxppc
13CONFIGTARGET = ppc64-unknown-linux
14CONFIGARGS = --target=$(CONFIGTARGET) --host=$(CONFIGTARGET) --with-cpu=default32 --enable-biarch --enable-threads=posix
15MAKE_FUNKY_LINK = YES
16COPY_OBJC_HEADERS = YES
17endif
18ifeq ($(ARCH), ppc)
19PLATFORM = linuxppc
20CONFIGTARGET = ppc64-unknown-linux
21CONFIGARGS = --target=$(CONFIGTARGET) --host=$(CONFIGTARGET) --with-cpu=default32 --enable-biarch --enable-threads=posix
22MAKE_FUNKY_LINK = YES
23COPY_OBJC_HEADERS = YES
24endif
25ifeq ($(ARCH), x86_64)
26PLATFORM = linuxx8664
27CONFIGTARGET = x86_64-unknown-linux
28CONFIGARGS = --target=$(CONFIGTARGET) --host=$(CONFIGTARGET) --enable-threads=posix --enable-biarch
29MAKE_FUNKY_LINK = YES
30COPY_OBJC_HEADERS = YES
31endif
32ifeq ($(ARCH), i686)
33PLATFORM = linuxx8664
34CONFIGTARGET = i686-unknown-linux
35CONFIGARGS = --target=$(CONFIGTARGET) --host=$(CONFIGTARGET) --enable-threads=posix --enable-biarch
36MAKE_FUNKY_LINK = YES
37COPY_OBJC_HEADERS = YES
38endif
39ifeq ($(ARCH), armv7l)
40PLATFORM = linuxarm
41CONFIGTARGET = armv7l-unknown-linux-gnu
42MAKE_FUNKY_LINK = YES
43COPY_OBJC_HEADERS = YES
44endif
45endif
46
47ifeq ($(OS),FreeBSD)
48ARCH = $(shell uname -p)
49ifeq ($(ARCH),amd64)
50PLATFORM = freebsdx8664
51CONFIGTARGET = amd64-unknown-freebsd6.0
52else
53PLATFORM = freebsdx86
54CONFIGTARGET = i386-unknown-freebsd6.0
55endif
56CONFIGARGS = --target=$(CONFIGTARGET) --host=$(CONFIGTARGET) --enable-threads=posix --enable-biarch
57MAKE_FUNKY_LINK = YES
58COPY_OBJC_HEADERS = YES
59endif
60
61
62ifeq ($(OS),Darwin)
63ARCH = $(shell arch)
64PLATFORM=darwinppc
65CONFIGTARGET = powerpc-apple-darwin8
66CONFIGARGS = --target=$(CONFIGTARGET) --with-cpu=default32 --enable-biarch
67MAKE_FUNKY_LINK = YES
68COPY_OBJC_HEADERS = NO
69endif
70
71ifeq ($(OS),SunOS)
72TAR = gtar
73PLATFORM = solarisx86
74MAKE_FUNKY_LINK = YES
75endif
76
77# 32-bit Cygwin, at this point
78ifeq (CYGWIN,$(findstring CYGWIN,$(OS)))
79ARCH = $(shell arch)
80PLATFORM=win32
81CONFIGTARGET=i386-pc-cygwin
82MAKE_FUNKY_LINK = YES
83COPY_OBJC_HEADERS = YES
84EXE = .exe
85endif
86
87all: package
88 m4 -DPLATFORM=$(PLATFORM) -DGCC_VERSION=$(GCC_VERSION)-$(NOW) source/INSTALL-$(PLATFORM).m4 > INSTALL-FFIGEN-$(PLATFORM)-gcc-$(GCC_VERSION)-$(NOW).txt
89
90
91compile: patch
92 mkdir build
93 (cd build ; ../gcc-$(GCC_VERSION)/configure --enable-languages=objc $(CONFIGARGS) )
94ifeq ($(MAKE_FUNKY_LINK),YES)
95ifeq ($(OS),Darwin)
96 (cd build ; ln -s . build-`../gcc-$(GCC_VERSION)/config.guess`)
97endif
98ifeq ($(OS),Linux)
99 (cd build ; ln -s . build-$(CONFIGTARGET))
100endif
101ifeq ($(OS),FreeBSD)
102 (cd build ; ln -s . build-$(CONFIGTARGET))
103endif
104ifeq ($(OS),SunOS)
105 (cd build ; ln -s . build-`../gcc-$(GCC_VERSION)/config.guess`)
106endif
107ifeq ($(PLATFORM),win32)
108 (cd build ; ln -s . build-`../gcc-$(GCC_VERSION)/config.guess`)
109endif
110endif
111 (cd build ; $(MAKE) maybe-configure-libiberty maybe-configure-gcc maybe-configure-libcpp)
112 (cd build/libiberty ; $(MAKE))
113 (cd build/intl ; $(MAKE))
114 (cd build/libcpp ; $(MAKE))
115 (cd build/gcc ; $(MAKE) cc1obj$(EXE) xlimits.h)
116
117patch: extract
118 ln -sf `pwd`/source/ffi.c gcc-$(GCC_VERSION)/gcc
119 printf "char *ffi_version = \42%s\42;\n" "$(NOW)" > gcc-$(GCC_VERSION)/gcc/ffi-version.h
120 for f in source/gcc-$(GCC_VERSION)*.diff ; do \
121 (cd gcc-$(GCC_VERSION)/gcc; patch -p0 <../../$$f); \
122 done
123
124package: compile
125 mkdir bin
126 cat source/$(PLATFORM)-gcc-$(GCC_VERSION)-h-to-ffi.sh source/h-to-ffi-common > bin/h-to-ffi.sh
127 chmod +x bin/h-to-ffi.sh
128 mkdir ffigen
129 cp -r -p gcc-$(GCC_VERSION)/gcc/ginclude ffigen
130 mv ffigen/ginclude ffigen/include
131 cp -p build/gcc/xlimits.h ffigen/include/limits.h
132 cp -p gcc-$(GCC_VERSION)/gcc/gsyslimits.h ffigen/include/syslimits.h
133ifeq ($(COPY_OBJC_HEADERS), YES)
134 cp -r -p gcc-$(GCC_VERSION)/libobjc/objc ffigen/include
135endif
136 mkdir ffigen/bin
137 cp -p build/gcc/cc1obj$(EXE) ffigen/bin/ffigen$(EXE)
138 strip ffigen/bin/ffigen$(EXE)
139 $(TAR) cfz ffigen-bin-$(PLATFORM)-gcc-$(GCC_VERSION)-$(NOW).tar.gz bin ffigen
140
141clean:
142 rm -rf gcc-$(GCC_VERSION) ffigen build bin ffigen*tar.gz INSTALL-FFIGEN-$(PLATFORM)-gcc-$(GCC_VERSION)*.txt
143
144%.bz2:
145 @echo
146 @echo Obtain the file $@ from a GNU repository \(or gcc.gnu.org mirror\) and copy it to this directory.
147 @echo
148 @exit 2
149
150extract: $(ARCHIVES) clean
151 $(TAR) fxj gcc-core-$(GCC_VERSION).tar.bz2
152 $(TAR) fxj gcc-objc-$(GCC_VERSION).tar.bz2
Note: See TracBrowser for help on using the repository browser.