1#*******************************************************************************
2# Copyright (c) 2002, 2009 QNX Software Systems and others.
3# All rights reserved. This program and the accompanying materials
4# are made available under the terms of the Eclipse Public License v1.0
5# which accompanies this distribution, and is available at
6# http://www.eclipse.org/legal/epl-v10.html
7#
8# Contributors:
9#     QNX Software Systems - initial API and implementation
10#     Alex Blewitt - MacOSX with a 64-bit vm
11#*******************************************************************************/
12
13# Defaults which can be overridden.
14LINUX=linux
15ARCH_X86 = x86
16ARCH_X86_64 = x86_64
17ARCH_AARCH64 = aarch64
18ARCH_PPC64LE = ppc64le
19ARCH_MIPS64EL = mips64el
20
21CC=gcc
22PPC64LE_CC=powerpc64le-linux-gnu-gcc
23LD=libtool
24CPPFLAGS = -I.
25CFLAGS +=-B/usr/lib/x86_64-linux-gnu -fpic -D_REENTRANT -D_GNU_SOURCE
26
27ARCH_FLAG_X86 = -m32
28ARCH_FLAG_X86_64 =
29ARCH_FLAG_AARCH64 = -fPIC
30ARCH_FLAG_MIPS64EL = -fPIC
31
32INSTALL_DIR_LINUX_X86 = ../os/$(LINUX)/$(ARCH_X86)
33INSTALL_DIR_LINUX_X86_64 = ../os/$(LINUX)/x86-64
34INSTALL_DIR_LINUX_AARCH64 = ../os/$(LINUX)/$(ARCH_AARCH64)
35INSTALL_DIR_LINUX_PPC64LE = ../os/$(LINUX)/$(ARCH_PPC64LE)
36INSTALL_DIR_LINUX_MIPS64EL = ../os/$(LINUX)/$(ARCH_MIPS64EL)
37
38LIB_NAME_PTY = libpty.so
39
40LIB_NAME_FULL_PTY_LINUX_X86 = $(INSTALL_DIR_LINUX_X86)/libpty.so
41LIB_NAME_FULL_PTY_LINUX_X86_64 = $(INSTALL_DIR_LINUX_X86_64)/libpty.so
42LIB_NAME_FULL_PTY_LINUX_AARCH64 = $(INSTALL_DIR_LINUX_AARCH64)/libpty.so
43LIB_NAME_FULL_PTY_LINUX_PPC64LE = $(INSTALL_DIR_LINUX_PPC64LE)/libpty.so
44LIB_NAME_FULL_PTY_LINUX_MIPS64EL = $(INSTALL_DIR_LINUX_MIPS64EL)/libpty.so
45
46OBJS_PTY_X86 = exec_pty_$(ARCH_X86).o openpty_$(ARCH_X86).o pfind_$(ARCH_X86).o
47OBJS_PTY_X86_64 = exec_pty_$(ARCH_X86_64).o openpty_$(ARCH_X86_64).o pfind_$(ARCH_X86_64).o
48OBJS_PTY_AARCH64 = exec_pty_$(ARCH_AARCH64).o openpty_$(ARCH_AARCH64).o pfind_$(ARCH_AARCH64).o
49OBJS_PTY_PPC64LE = exec_pty_$(ARCH_PPC64LE).o openpty_$(ARCH_PPC64LE).o pfind_$(ARCH_PPC64LE).o
50OBJS_PTY_MIPS64EL = exec_pty_$(ARCH_MIPS64EL).o openpty_$(ARCH_MIPS64EL).o pfind_$(ARCH_MIPS64EL).o
51
52OBJS_X86 = $(OBJS_PTY_X86)
53OBJS_X86_64 = $(OBJS_PTY_X86_64)
54OBJS_AARCH64 = $(OBJS_PTY_AARCH64)
55OBJS_PPC64LE = $(OBJS_PTY_PPC64LE)
56OBJS_MIPS64EL = $(OBJS_PTY_MIPS64EL)
57
58all: linux_x86 linux_x86_64 linux_ppc64le linux_aarch64 linux_mips64el
59
60linux_x86: $(LIB_NAME_FULL_PTY_LINUX_X86)
61linux_x86_64: $(LIB_NAME_FULL_PTY_LINUX_X86_64)
62linux_aarch64: $(LIB_NAME_FULL_PTY_LINUX_AARCH64)
63# Prerequisites: apt-get install gcc-powerpc64le-linux-gnu libc-dev-ppc64el-cross
64linux_ppc64le: $(LIB_NAME_FULL_PTY_LINUX_PPC64LE)
65linux_mips64el: $(LIB_NAME_FULL_PTY_LINUX_MIPS64EL)
66
67rebuild: clean all
68
69$(LIB_NAME_FULL_PTY_LINUX_X86): $(OBJS_PTY_X86)
70	mkdir -p $(INSTALL_DIR_LINUX_X86)
71	$(CC) -m32 -g -shared -Wl,-soname,$(LIB_NAME_PTY) $(LDFLAGS) -o $(LIB_NAME_FULL_PTY_LINUX_X86) $(OBJS_PTY_X86)
72
73$(LIB_NAME_FULL_PTY_LINUX_X86_64): $(OBJS_PTY_X86_64)
74	mkdir -p $(INSTALL_DIR_LINUX_X86_64)
75	$(CC) -g -shared -Wl,-soname,$(LIB_NAME_PTY) $(LDFLAGS) -o $(LIB_NAME_FULL_PTY_LINUX_X86_64) $(OBJS_PTY_X86_64)
76
77$(LIB_NAME_FULL_PTY_LINUX_AARCH64): $(OBJS_PTY_AARCH64)
78	mkdir -p $(INSTALL_DIR_LINUX_AARCH64)
79	$(CC) -g -shared -Wl,-soname,$(LIB_NAME_PTY) $(LDFLAGS) -o $(LIB_NAME_FULL_PTY_LINUX_AARCH64) $(OBJS_PTY_AARCH64)
80
81$(LIB_NAME_FULL_PTY_LINUX_PPC64LE): $(OBJS_PTY_PPC64LE)
82	mkdir -p $(INSTALL_DIR_LINUX_PPC64LE)
83	$(PPC64LE_CC) -g -shared -Wl,-soname,$(LIB_NAME_PTY) $(LDFLAGS) -o $(LIB_NAME_FULL_PTY_LINUX_PPC64LE) $(OBJS_PTY_PPC64LE)
84
85$(LIB_NAME_FULL_PTY_LINUX_MIPS64EL): $(OBJS_PTY_MIPS64EL)
86	mkdir -p $(INSTALL_DIR_LINUX_MIPS64EL)
87	$(CC) -g -shared -Wl,-soname,$(LIB_NAME_PTY) $(LDFLAGS) -o $(LIB_NAME_FULL_PTY_LINUX_MIPS64EL) $(OBJS_PTY_MIPS64EL)
88
89exec_pty_$(ARCH_X86).o: exec_pty.c
90	$(CC) $(CFLAGS) $(ARCH_FLAG_X86) $(CPPFLAGS) -c -o $@ exec_pty.c
91
92openpty_$(ARCH_X86).o: openpty.c
93	$(CC) $(CFLAGS) $(ARCH_FLAG_X86) $(CPPFLAGS) -c -o $@ openpty.c
94
95pfind_$(ARCH_X86).o: pfind.c
96	$(CC) $(CFLAGS) $(ARCH_FLAG_X86) $(CPPFLAGS) -c -o $@ pfind.c
97
98exec_pty_$(ARCH_X86_64).o: exec_pty.c
99	$(CC) $(CFLAGS) $(ARCH_FLAG_X86_64) $(CPPFLAGS) -c -o $@ exec_pty.c
100
101openpty_$(ARCH_X86_64).o: openpty.c
102	$(CC) $(CFLAGS) $(ARCH_FLAG_X86_64) $(CPPFLAGS) -c -o $@ openpty.c
103
104pfind_$(ARCH_X86_64).o: pfind.c
105	$(CC) $(CFLAGS) $(ARCH_FLAG_X86_64) $(CPPFLAGS) -c -o $@ pfind.c
106
107exec_pty_$(ARCH_AARCH64).o: exec_pty.c
108	$(CC) $(CFLAGS) $(ARCH_FLAG_AARCH64) $(CPPFLAGS) -c -o $@ exec_pty.c
109
110openpty_$(ARCH_AARCH64).o: openpty.c
111	$(CC) $(CFLAGS) $(ARCH_FLAG_AARCH64) $(CPPFLAGS) -c -o $@ openpty.c
112
113pfind_$(ARCH_AARCH64).o: pfind.c
114	$(CC) $(CFLAGS) $(ARCH_FLAG_AARCH64) $(CPPFLAGS) -c -o $@ pfind.c
115
116exec_pty_$(ARCH_PPC64LE).o: exec_pty.c
117	$(PPC64LE_CC) $(CFLAGS) $(ARCH_FLAG_PPC64LE) $(CPPFLAGS) -c -o $@ exec_pty.c
118
119openpty_$(ARCH_PPC64LE).o: openpty.c
120	$(PPC64LE_CC) $(CFLAGS) $(ARCH_FLAG_PPC64LE) $(CPPFLAGS) -c -o $@ openpty.c
121
122pfind_$(ARCH_PPC64LE).o: pfind.c
123	$(PPC64LE_CC) $(CFLAGS) $(ARCH_FLAG_PPC64LE) $(CPPFLAGS) -c -o $@ pfind.c
124
125exec_pty_$(ARCH_MIPS64EL).o: exec_pty.c
126	$(CC) $(CFLAGS) $(ARCH_FLAG_MIPS64EL) $(CPPFLAGS) -c -o $@ exec_pty.c
127
128openpty_$(ARCH_MIPS64EL).o: openpty.c
129	$(CC) $(CFLAGS) $(ARCH_FLAG_MIPS64EL) $(CPPFLAGS) -c -o $@ openpty.c
130
131pfind_$(ARCH_MIPS64EL).o: pfind.c
132	$(CC) $(CFLAGS) $(ARCH_FLAG_MIPS64EL) $(CPPFLAGS) -c -o $@ pfind.c
133
134clean :
135	$(RM) $(OBJS_X86) $(LIB_NAME_FULL_PTY_LINUX_X86)
136	$(RM) $(OBJS_X86_64) $(LIB_NAME_FULL_PTY_LINUX_X86_64)
137	$(RM) $(OBJS_AARCH64) $(LIB_NAME_FULL_PTY_LINUX_AARCH64)
138	$(RM) $(OBJS_PPC64LE) $(LIB_NAME_FULL_PTY_LINUX_PPC64LE)
139	$(RM) $(OBJS_MIPS64EL) $(LIB_NAME_FULL_PTY_LINUX_MIPS64EL)
140