Skip to content
This repository was archived by the owner on Nov 20, 2020. It is now read-only.

Commit 9eb29b0

Browse files
committed
Import to git
0 parents  commit 9eb29b0

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

138 files changed

+65612
-0
lines changed

CMakeLists.txt

+225
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,225 @@
1+
# Copyright (C) 2007-2009 LuaDist.
2+
# Submited by David Manura
3+
# Redistribution and use of this file is allowed according to the terms of the MIT license.
4+
# For details see the COPYRIGHT file distributed with LuaDist.
5+
# Please note that the package source code is licensed under its own license.
6+
7+
#~WARNING: The was derived from the Makefile and some parts
8+
# remain unimplemented:
9+
# gcc-2, x86-64, CFLAGS_P, bcheck.o, arm, TCC_UCLIBC,
10+
# CONFIG_CROSS
11+
# NOTE: tcc itself is broken on Cygwin.
12+
13+
14+
PROJECT(tcc C)
15+
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
16+
INCLUDE(dist.cmake)
17+
18+
#~TODO: autodetect?
19+
SET(ARCH i386)
20+
21+
# Build config.h
22+
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/config.h.in
23+
${CMAKE_CURRENT_BINARY_DIR}/config.h)
24+
25+
SET(CORE_FILES tcc.c libtcc.c tccpp.c tccgen.c tccelf.c tccasm.c
26+
tcc.h config.h libtcc.h tcctok.h)
27+
SET(I386_FILES ${CORE_FILES} i386-gen.c i386-asm.c i386-asm.h)
28+
SET(WIN32_FILES ${CORE_FILES} i386-gen.c i386-asm.c i386-asm.h tccpe.c)
29+
SET(X86_64_FILES ${CORE_FILES} x86_64-gen.c)
30+
SET(ARM_FILES ${CORE_FILES} arm-gen.c)
31+
SET(C67_FILES ${CORE_FILES} c67-gen.c tcccoff.c)
32+
33+
# Set C compiler flags.
34+
INCLUDE(CheckCCompilerFlag)
35+
CHECK_C_COMPILER_FLAG(-fno-strict-aliasing, HAVE_NOSTRICTALIASING)
36+
IF(HAVE_NOSTRICTALIASING)
37+
ADD_DEFINITIONS(-fno-strict-aliasing)
38+
ENDIF(HAVE_NOSTRICTALIASING)
39+
40+
41+
# Set target and sources
42+
IF(WIN32 AND NOT CYGWIN)
43+
SET(NATIVE_TARGET -DTCC_TARGET_PE)
44+
SET(NATIVE_FILES ${WIN32_FILES})
45+
ELSE()
46+
IF(${ARCH} STREQUAL i386)
47+
SET(NATIVE_TARGET -DTCC_TARGET_I386)
48+
SET(NATIVE_FILES ${I386_FILES})
49+
ELSEIF(${ARCH} STREQUALS arm)
50+
SET(NATIVE_TARGET -DTCC_TARGET_ARM)
51+
#NOT-IMPL:
52+
# NATIVE_TARGET+=$(if $(wildcard /lib/ld-linux.so.3),-DTCC_ARM_EABI)
53+
# NATIVE_TARGET+=$(if $(shell grep -l "^Features.* \(vfp\|iwmmxt\) "
54+
# /proc/cpuinfo),-DTCC_ARM_VFP)
55+
MESSAGE(FATAL_ERROR "TODO - not implemented")
56+
ELSEIF(${ARCH} STREQUALS x86-64)
57+
SET(NATIVE_TARGET -DTCC_X86_64)
58+
ENDIF(${ARCH} STREQUAL i386)
59+
# (CMAKE_SIZEOF_VOID_P MATCHES "8")
60+
ENDIF(WIN32 AND NOT CYGWIN)
61+
62+
# Set C flags.
63+
ADD_DEFINITIONS(${NATIVE_TARGET})
64+
65+
66+
# Set libraries.
67+
IF(NOT WIN32)
68+
LINK_LIBRARIES(-ldl)
69+
ENDIF(NOT WIN32)
70+
71+
72+
73+
# Set libtcc1 sources and tcc arguments
74+
SET(LIBTCC1_SRC lib/libtcc1.c)
75+
SET(TCC ${CMAKE_CURRENT_BINARY_DIR}/tcc)
76+
SET(TCC_ARGS)
77+
IF(WIN32 AND NOT CYGWIN)
78+
SET(LIBTCC1_SRC ${LIBTCC1_SRC}
79+
win32/lib/crt1.c win32/lib/wincrt1.c
80+
win32/lib/dllcrt1.c win32/lib/dllmain.c win32/lib/chkstk.S)
81+
SET(LIBTCC1_OBJS ${LIBTCC1_OBJS}
82+
crt1.o wincrt1.o dllcrt1.o dllmain.o chkstk.o)
83+
SET(TCC_ARGS -Bwin32 -DTCC_TARGET_PE)
84+
ENDIF(WIN32 AND NOT CYGWIN)
85+
IF(ARCH STREQUAL i386)
86+
SET(LIBTCC1_SRC ${LIBTCC1_SRC} lib/alloca86.S lib/alloca86-bt.S)
87+
SET(LIBTCC1_OBJS ${LIBTCC1_OBJS} alloca86.o alloca86-bt.o)
88+
ENDIF(ARCH STREQUAL i386)
89+
90+
91+
# make 'include "config.h"' and 'include "../config.h"' work
92+
FILE(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/child-dir)
93+
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}
94+
${CMAKE_CURRENT_BINARY_DIR}/child-dir)
95+
96+
# TCC executable.
97+
ADD_EXECUTABLE(tcc tcc.c)
98+
99+
# libtcc
100+
ADD_LIBRARY(libtcc STATIC libtcc.c)
101+
102+
# Extra utility executables.
103+
IF(WIN32 AND NOT CYGWIN)
104+
ADD_EXECUTABLE(tiny_impdef win32/tools/tiny_impdef.c)
105+
ENDIF(WIN32 AND NOT CYGWIN)
106+
ADD_EXECUTABLE(tiny_libmaker win32/tools/tiny_libmaker.c)
107+
108+
109+
110+
SET(TCC_INCLUDE -I${CMAKE_CURRENT_BINARY_DIR}/child-dir) # make include "../config.h" work
111+
IF(WIN32 AND NOT CYGWIN)
112+
SET(TCC_INCLUDE ${TCC_INCLUDE} -I${CMAKE_CURRENT_SOURCE_DIR}/win32/include
113+
-I${CMAKE_CURRENT_SOURCE_DIR}/win32/include/winapi)
114+
ENDIF(WIN32 AND NOT CYGWIN)
115+
116+
117+
# libtcc1 sources built with tcc.
118+
FOREACH(src ${LIBTCC1_SRC})
119+
GET_FILENAME_COMPONENT(srcname ${src} NAME_WE)
120+
GET_FILENAME_COMPONENT(srcext ${src} EXT)
121+
IF(${srcext} STREQUAL .c)
122+
SET(TCC_EXTRA_FLAGS -O2 -Wall)
123+
ELSE() # .S
124+
SET(TCC_EXTRA_FLAGS)
125+
ENDIF(${srcext} STREQUAL .c)
126+
ADD_CUSTOM_COMMAND(OUTPUT ${srcname}.o DEPENDS tcc ${src} COMMAND
127+
${TCC} ${TCC_EXTRA_FLAGS} ${TCC_INCLUDE}
128+
-c ${CMAKE_CURRENT_SOURCE_DIR}/${src})
129+
ENDFOREACH(src)
130+
131+
132+
# Link libtcc1
133+
ADD_CUSTOM_COMMAND(OUTPUT libtcc1.a DEPENDS tiny_libmaker ${LIBTCC1_OBJS}
134+
COMMAND ${CMAKE_CURRENT_BINARY_DIR}/tiny_libmaker rcs libtcc1.a
135+
${LIBTCC1_OBJS}
136+
)
137+
ADD_CUSTOM_TARGET(libtcc1 ALL DEPENDS libtcc1.a)
138+
139+
140+
# Install files.
141+
INSTALL(TARGETS tcc RUNTIME DESTINATION ${INSTALL_BIN})
142+
INSTALL(TARGETS libtcc ARCHIVE DESTINATION ${INSTALL_LIB})
143+
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/libtcc1.a DESTINATION ${INSTALL_LIB}/tcc)
144+
INSTALL(FILES libtcc.h DESTINATION ${INSTALL_INC})
145+
INSTALL(FILES tcc-doc.html DESTINATION ${INSTALL_DOC})
146+
INSTALL(FILES include/stdarg.h include/stddef.h include/stdbool.h include/float.h include/varargs.h include/tcclib.h DESTINATION ${INSTALL_LIB}/tcc/include)
147+
INSTALL(FILES README COPYING DESTINATION ${INSTALL_DATA})
148+
IF(WIN32 AND NOT CYGWIN)
149+
INSTALL(TARGETS tcc RUNTIME DESTINATION ${INSTALL_BIN})
150+
INSTALL(FILES
151+
win32/include/assert.h
152+
win32/include/conio.h
153+
win32/include/ctype.h
154+
win32/include/dir.h
155+
win32/include/direct.h
156+
win32/include/dirent.h
157+
win32/include/dos.h
158+
win32/include/errno.h
159+
win32/include/excpt.h
160+
win32/include/fcntl.h
161+
win32/include/fenv.h
162+
win32/include/float.h
163+
win32/include/inttypes.h
164+
win32/include/io.h
165+
win32/include/limits.h
166+
win32/include/locale.h
167+
win32/include/malloc.h
168+
win32/include/math.h
169+
win32/include/mem.h
170+
win32/include/memory.h
171+
win32/include/process.h
172+
win32/include/setjmp.h
173+
win32/include/share.h
174+
win32/include/signal.h
175+
win32/include/stdarg.h
176+
win32/include/stdbool.h
177+
win32/include/stddef.h
178+
win32/include/stdint.h
179+
win32/include/stdio.h
180+
win32/include/stdlib.h
181+
win32/include/string.h
182+
win32/include/tchar.h
183+
win32/include/time.h
184+
win32/include/unistd.h
185+
win32/include/values.h
186+
win32/include/varargs.h
187+
win32/include/wchar.h
188+
win32/include/wctype.h
189+
win32/include/_mingw.h
190+
DESTINATION ${INSTALL_LIB}/tcc/include)
191+
INSTALL(FILES
192+
win32/include/sys/fcntl.h
193+
win32/include/sys/file.h
194+
win32/include/sys/locking.h
195+
win32/include/sys/stat.h
196+
win32/include/sys/time.h
197+
win32/include/sys/timeb.h
198+
win32/include/sys/types.h
199+
win32/include/sys/unistd.h
200+
win32/include/sys/utime.h
201+
DESTINATION ${INSTALL_LIB}/tcc/include/sys)
202+
INSTALL(FILES
203+
win32/include/winapi/basetsd.h
204+
win32/include/winapi/basetyps.h
205+
win32/include/winapi/winbase.h
206+
win32/include/winapi/wincon.h
207+
win32/include/winapi/windef.h
208+
win32/include/winapi/windows.h
209+
win32/include/winapi/winerror.h
210+
win32/include/winapi/wingdi.h
211+
win32/include/winapi/winnetwk.h
212+
win32/include/winapi/winnls.h
213+
win32/include/winapi/winnt.h
214+
win32/include/winapi/winreg.h
215+
win32/include/winapi/winsvc.h
216+
win32/include/winapi/winuser.h
217+
win32/include/winapi/winver.h
218+
DESTINATION ${INSTALL_LIB}/tcc/include/winapi)
219+
INSTALL(FILES
220+
win32/lib/gdi32.def
221+
win32/lib/msvcrt.def
222+
win32/lib/kernel32.def
223+
win32/lib/user32.def
224+
DESTINATION ${INSTALL_LIB})
225+
ENDIF(WIN32 AND NOT CYGWIN)

0 commit comments

Comments
 (0)