aboutsummaryrefslogtreecommitdiff
path: root/lib/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Makefile')
-rw-r--r--lib/Makefile25
1 files changed, 20 insertions, 5 deletions
diff --git a/lib/Makefile b/lib/Makefile
index 300fa46..e9e12f1 100644
--- a/lib/Makefile
+++ b/lib/Makefile
@@ -6,7 +6,7 @@ TOP = ..
include $(TOP)/Makefile
VPATH = $(top_srcdir)/lib $(top_srcdir)/win32/lib
-ifndef TARGET
+ifndef TARGET # native library
ifdef CONFIG_WIN64
TARGET = x86_64-win32
else
@@ -24,6 +24,11 @@ ifndef TARGET
ifneq ($(TARGETOS),Darwin)
XCC = $(CC)
endif
+ else
+ ifeq ($(ARCH),arm)
+ TARGET = arm
+ XCC = $(CC)
+ endif
endif
endif
endif
@@ -41,20 +46,27 @@ cross : TCC = $(TOP)/$(TARGET)-tcc$(EXESUF)
I386_O = libtcc1.o alloca86.o alloca86-bt.o $(BCHECK_O)
X86_64_O = libtcc1.o alloca86_64.o
+ARM_O = libtcc1.o armeabi.o alloca-arm.o
WIN32_O = $(I386_O) crt1.o wincrt1.o dllcrt1.o dllmain.o chkstk.o
WIN64_O = $(X86_64_O) crt1.o wincrt1.o dllcrt1.o dllmain.o chkstk.o
+# build TCC runtime library to contain PIC code, so it can be linked
+# into shared libraries
+PICFLAGS = -fPIC
+
ifeq "$(TARGET)" "i386-win32"
OBJ = $(addprefix $(DIR)/,$(WIN32_O))
TGT = -DTCC_TARGET_I386 -DTCC_TARGET_PE
XCC = $(TCC) -B$(top_srcdir)/win32 -I$(top_srcdir)/include
XAR = $(DIR)/tiny_libmaker$(EXESUF)
+ PICFLAGS =
else
ifeq "$(TARGET)" "x86_64-win32"
OBJ = $(addprefix $(DIR)/,$(WIN64_O))
TGT = -DTCC_TARGET_X86_64 -DTCC_TARGET_PE
XCC = $(TCC) -B$(top_srcdir)/win32 -I$(top_srcdir)/include
XAR = $(DIR)/tiny_libmaker$(EXESUF)
+ PICFLAGS =
else
ifeq "$(TARGET)" "i386"
OBJ = $(addprefix $(DIR)/,$(I386_O))
@@ -66,13 +78,19 @@ ifeq "$(TARGET)" "x86_64"
TGT = -DTCC_TARGET_X86_64
XCC ?= $(TCC) -B$(TOP)
else
+ifeq "$(TARGET)" "arm"
+ OBJ = $(addprefix $(DIR)/,$(ARM_O))
+ TGT = -DTCC_TARGET_ARM
+ XCC ?= $(TCC) -B$(TOP)
+else
$(error libtcc1.a not supported on target '$(TARGET)')
endif
endif
endif
endif
+endif
-XFLAGS = $(CPPFLAGS) $(CFLAGS) $(TGT)
+XFLAGS = $(CPPFLAGS) $(CFLAGS) $(PICFLAGS) $(TGT)
ifeq ($(TARGETOS),Darwin)
XAR = $(DIR)/tiny_libmaker$(EXESUF)
@@ -100,6 +118,3 @@ $(DIR)/exists :
clean :
rm -rfv i386-win32 x86_64-win32 i386 x86_64
-
-Makefile: $(top_srcdir)/lib/Makefile
- cp $< $@