File: Makefile.LinuxARM

package info (click to toggle)
euslisp 9.31%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 55,448 kB
  • sloc: ansic: 41,610; lisp: 3,339; makefile: 286; sh: 238; asm: 138; python: 53
file content (125 lines) | stat: -rw-r--r-- 4,214 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
# makefile for EusLisp on sun4 with SunOS (Solaris)
# RCSid="@(#)$Id$"
#	Copyright (1988) Toshihiro MATSUI, Electrotechnical Laboratory
#	1989/Oct
#	1990/Sep Second Tape Distribution
#	KOBJECTS --- eus kernel objects written in C
#	NOKOBJECTS-- eus kernel, but cannot be optimized with -O option
#	CLIBOBJECTS- functions written in C, not members of kernel
#	LOBJECTS --- functions coded in EUSLISP; must be compiled with euscomp
#	GEOOBJECTS-- geometric modeling functions and classes
#	XOBJECTS---- Xwindow interface
#	XTKOBJECTS---- Xwindow interface
#	IMGOBJECTS--- image processing
#	MTOBJECTS--- multithread functions
#
#########################################################################
# Customizable section begins
#########################################################################
ifneq ($(ARCHDIR),)
ARCH=$(ARCHDIR)
else
ARCH=LinuxARM
endif

include Makefile.generic1

THREAD= -DTHREADED -DPTHREAD
MFLAGS=
XVERSION=X_V11R6_1


#
# Select CFLAGS and XVERSION according to the version of SunOS and Xlib.
#
# for ARM

#MACHINE=armv6
#MACHINE=armv5te
# gcc -dumpmachine retruns target triplet consists of three fields separated by a hyphen (-).
MACHINE=$(shell gcc -dumpmachine | sed 's/\(.*\)-.*-.*/\1/')

GCC_MAJOR_VERSION=$(shell gcc -dumpversion | sed -e 's/\([0-9]\)\.\([0-9]\)\([\.0-9]*\)/\1/')
GCC_MINOR_VERSION=$(shell gcc -dumpversion | sed -e 's/\([0-9]\)\.\([0-9]\)\([\.0-9]*\)/\2/')
ifeq ($(GCC_MAJOR_VERSION), 2)
 CPU_OPTIMIZE=
 ALIGN_FUNCTIONS="-malign-functions=4"
 ADD_CFLAGS=-fno-stack-protector -fpic
else
 ifeq ($(MACHINE), aarch64)
   ALIGN_FUNCTIONS=-falign-functions=8
   ADD_CFLAGS=-fPIC -Darmv8
 else
   ALIGN_FUNCTIONS=-falign-functions=4
   ADD_CFLAGS=-fno-stack-protector -fpic
 endif
 GCC3=-DGCC3
endif

ADD_LDFLAGS=
ifneq (,$(findstring t,$(shell if [ \( $(GCC_MAJOR_VERSION) -eq 4 -a $(GCC_MINOR_VERSION) -ge 5 \) -o  $(GCC_MAJOR_VERSION) -ge 5 ] ; then echo t ;fi )))
ADD_LDFLAGS += -Wl,--no-as-needed
endif

# Pentium's arch returns 'i586', which is ignored by conditionals in c/*.[ch].
DEBUG= -g
#WFLAGS= -Wall -Wno-unused -Wno-switch -Wno-return-type -Wno-comment

# If you use libc.so.5, remove -DLIB6 option.
# In order to include thread library, libc.so.6 is preferrable.

CFLAGS:= $(CFLAGS) $(CPPFLAGS) $(WFLAGS) -D$(MACHINE) -DLinux -DARM -D_REENTRANT -DVERSION=\"$(VERSION)\" \
	-DLIB6 $(ALIGN_FUNCTIONS) $(ADD_CFLAGS) \
        $(DEBUG) $(CPU_OPTIMIZE) $(THREAD) -D$(XVERSION) \
	-DGCC $(GCC3) \
	        -I/usr/include -I/usr/X11R6/include -I$(EUSDIR)/include

# Use gcc for C-compiling on SunOS4. Sun's cc is ok on Solaris.
# /usr/ucb/cc cannot compile because of its incapability of recognizing
# prototype declarations.
CC=gcc
LD=gcc

#
# L I B R A R I E S
# Three kinds of libraries are needed to build eus.
# 1. RAWLIB: unix libraries needed to make eus0-eus2
# 2. XLIB: X window libraries
#    When you use a window toolkit, you may need to override the 'read'
#    function in libc.a with a specific window library such as libXview.a.
# 3. EUSLIB: euslisp functions that cannot be linked in eus because of
#    'GLOBAL OFFSET TABLE OVERFLOW', that are xwindow interface functions.
# You may add any optional user-supplied library in EUSLIB.
# On Solaris, XLIB and EUSLIB are combined together into lib/libeusx.so.

# Linux
RAWLIB=-ldl -lm -lpthread -lc
XLIB= -L/usr/X11R6/lib -lX11

# specify directories where euslisp's libraries are located.
EUSRPATH=-R$(ADLIBDIR):$(EUSDIR)/lib/LinuxARM
EUSLIB= -Xlinker $(EUSRPATH) -L$(ADLIBDIR)
GLLIB= -L$(ADLIBDIR) -lGLU -lGL -lXext

# POSIX Thread 
THREADDEP=mthread_posix.c
#THREADDEP=pthreads.c

# If you don't like optimization, comment out the next line.
OFLAGS=-O2

# link-editor's default flags ?-rdynamic
SOFLAGS:= $(LDFLAGS) -shared -Xlinker -build-id
LD=gcc
LDFLAGS:= $(LDFLAGS) -rdynamic -fno-stack-protector -Wl,-z,execstack $(ADD_LDFLAGS)
MTCOBJECTS= $(OBJDIR)/mthread.o $(OBJDIR)/mthread_posix.o
#MTCOBJECTS= $(OBJDIR)/mthread.o $(OBJDIR)/pthreads.o
MAPOPTION=$(OBJDIR)/par.o

#################################################################
# end of the customizable section
################################################################

#include Makefile.rgc
include Makefile.generic2