3
3
#
4
4
cmake_minimum_required (VERSION 2.4 FATAL_ERROR)
5
5
6
- project (llvm-lua C CXX)
6
+ project (llvm_lua C CXX)
7
7
8
8
set (CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR} /cmake)
9
9
10
10
include (CustomMacros)
11
+ include (CMakeDependentOption)
11
12
include (FindLLVM)
12
13
13
14
enable_testing ()
14
15
15
- option (BUILD_STATIC "build static library" ON )
16
-
17
- option (LUA_USE_DLOPEN "Enable dlopen support." )
18
- option (LUA_USE_ISATTY "Enable isatty support." )
19
- option (LUA_USE_READLINE "Enable readline support." )
20
- option (LUA_USE_POPEN "Enable lua_popen support." )
21
- option (LUA_USE_ULONGJMP "Try using _longjmp/_setjmp (more efficient)" )
22
- option (LUA_USE_APICHECK "Enable API checks." )
23
- option (LUA_USE_MKSTEMP "Use mkstemp." )
24
- option (LUA_ANSI "Disable non-ansi features." OFF )
25
-
26
- #
27
- # llvm-lua options.
28
- #
29
- option (LUA_CPP_SUPPORT "Enable c++ support" OFF )
30
-
31
- #
32
- # LuaCoco options
33
- #
34
- option (COCO_USE_SETJMP "Coco: Force use of setjmp (instead of gccasm)" OFF )
35
- option (COCO_USE_UCONTEXT "Coco: Force use of ucontext (instead of gccasm or setjmp)" OFF )
36
- option (COCO_DISABLE "Disable coco" OFF )
37
- set (COCO_DEFAULT_CSTACKSIZE "" CACHE STRING "Coco default cstacksize" )
38
-
39
-
40
16
#
41
17
# Lua version
42
18
#
@@ -46,7 +22,7 @@ set(LUA_VERSION_PATCH 4)
46
22
set (LUA_VERSION
47
23
"${LUA_VERSION_MAJOR} .${LUA_VERSION_MINOR} .${LUA_VERSION_PATCH} " )
48
24
set (LUA_SOVERSION
49
- "${LUA_VERSION_MAJOR} " )
25
+ "${LUA_VERSION_MAJOR} . ${LUA_VERSION_MINOR} " )
50
26
51
27
#
52
28
# llvm-lua version
@@ -57,7 +33,7 @@ set(LLVM_LUA_VERSION_PATCH 0)
57
33
set (LLVM_LUA_VERSION
58
34
"${LLVM_LUA_VERSION_MAJOR} .${LLVM_LUA_VERSION_MINOR} .${LLVM_LUA_VERSION_PATCH} " )
59
35
set (LLVM_LUA_SOVERSION
60
- "${LLVM_LUA_VERSION_MAJOR} " )
36
+ "${LLVM_LUA_VERSION_MAJOR} . ${LLVM_LUA_VERSION_MINOR} " )
61
37
62
38
#
63
39
# Lua package info.
@@ -77,45 +53,200 @@ set(CPACK_SOURCE_PACKAGE_FILE_NAME
77
53
include (CPack)
78
54
79
55
set (COMMON_CFLAGS)
80
- set (COMMON_LDFLAGS " -lm " )
81
-
56
+ set (COMMON_LDFLAGS)
57
+ set (LIBS)
82
58
#
83
59
# Detect system type
84
60
#
85
61
if (CMAKE_SYSTEM_NAME STREQUAL "Linux" )
86
- set (LUA_USE_LINUX TRUE )
87
- set (COMMON_CFLAGS "${COMMON_CFLAGS} -DLUA_USE_LINUX" )
88
- set (COMMON_LDFLAGS "${COMMON_LDFLAGS} -Wl,-E -ldl -lreadline -lhistory -lncurses" )
89
- else (CMAKE_SYSTEM_NAME STREQUAL "Linux" )
90
- if (APPLE )
91
- set (LUA_USE_MACOSX TRUE )
92
- set (COMMON_CFLAGS "${COMMON_CFLAGS} -DLUA_USE_LINUX" )
93
- set (COMMON_LDFLAGS "${COMMON_LDFLAGS} -lreadline " )
94
- # use this on Mac OS X 10.3-
95
- #set(COMMON_CFLAGS "${COMMON_CFLAGS} -DLUA_USE_MACOSX")
96
- elseif (WIN32 )
97
- set (LUA_WIN TRUE )
98
- set (COMMON_CFLAGS "${COMMON_CFLAGS} -DLUA_BUILD_AS_DLL" )
99
- elseif (UNIX )
100
- set (LUA_USE_POSIX TRUE )
101
- set (COMMON_CFLAGS "${COMMON_CFLAGS} -DLUA_USE_POSIX" )
102
- else (APPLE )
103
- set (LUA_ANSI TRUE )
104
- set (COMMON_CFLAGS "${COMMON_CFLAGS} -DLUA_ANSI" )
105
- endif (APPLE )
62
+ set (DEFAULT_POSIX TRUE )
63
+ set (DEFAULT_DLOPEN ON )
64
+ set (DEFAULT_READLINE ON )
65
+ set (COMMON_LDFLAGS "${COMMON_LDFLAGS} -Wl,-E" )
66
+ set (USE_RPATH TRUE )
67
+ elseif (APPLE )
68
+ set (DEFAULT_POSIX TRUE )
69
+ set (DEFAULT_DLOPEN ON )
70
+ # use this on Mac OS X 10.3-
71
+ option (LUA_USE_MACOSX "Mac OS X 10.3-" OFF )
72
+ set (OSX_ARCHITECTURES "ppc;i386;ppc64;x86_64" CACHE STRING "Build architectures for OSX" )
73
+ CMAKE_DEPENDENT_OPTION(WANT_FRAMEWORK
74
+ "Set to ON to build framework instead of dylib." ON
75
+ "WANT_SHARED_LIBRARY" ON
76
+ )
77
+ CMAKE_DEPENDENT_OPTION(LUA_FRAMEWORK_SYMLINKS
78
+ "Set to ON to create symlinks to lua & luac to CMAKE_PREFIX_PATH/bin." ON
79
+ "WANT_FRAMEWORK;WANT_SHARED_LIBRARY" ON
80
+ )
81
+ set (CMAKE_FRAMEWORK_INSTALL_DIR "/Library/Frameworks" CACHE STRING "Directory to install frameworks to." )
82
+ set (CMAKE_FRAMEWORK_INSTALL_NAME_DIR "@executable_path/../Frameworks" CACHE STRING "install_name path for framework." )
83
+ set (CMAKE_DYLIB_INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX} /lib" CACHE STRING "install_name path for dylib." )
84
+ set (LUA_FRAMEWORK_NAME "llvm-lua.framework" )
85
+ set (LUA_FRAMEWORK_VERSION_NUMBER "${LLVM_LUA_VERSION_MAJOR} .${LLVM_LUA_VERSION_MINOR} " )
86
+ set (LUA_FRAMEWORK_VERSIONED_EXECUTABLE_DIR "Versions/${LUA_FRAMEWORK_VERSION_NUMBER} /MacOS" )
87
+ set (LUA_FRAMEWORK_VERSIONED_LIB_DIR "Versions/${LUA_FRAMEWORK_VERSION_NUMBER} /lib" )
88
+ set (LUA_FRAMEWORK_CURRENT_EXECUTABLE_DIR "Versions/Current/MacOS" )
89
+
90
+ # For Apple install_name, is it better to detect if Xcode vs Makefile?
91
+ # Xcode default=1, Makefile=0? Or detect if Framework vs. dylib,
92
+ # Framework=1, dylib=0?
93
+ option (CMAKE_BUILD_WITH_INSTALL_RPATH "Set to YES to set the rpath or install_name on build instead of install." ON )
94
+
95
+ set (LUA_SOVERSION
96
+ "${LUA_VERSION_MAJOR} .${LUA_VERSION_MINOR} .0" )
97
+ elseif (CYGWIN )
98
+ set (DEFAULT_POSIX TRUE )
99
+ set (USE_RPATH TRUE )
100
+ elseif (UNIX )
101
+ set (DEFAULT_POSIX TRUE )
102
+ set (USE_RPATH TRUE )
103
+ elseif (WIN32 )
104
+ set (LUA_WIN TRUE )
105
+ set (COMMON_CFLAGS "${COMMON_CFLAGS} -DLUA_BUILD_AS_DLL" )
106
+ else (APPLE )
107
+ set (DEFAULT_ANSI TRUE )
106
108
endif (CMAKE_SYSTEM_NAME STREQUAL "Linux" )
107
109
110
+ #
111
+ # setup config options with default values.
112
+ #
113
+ option (WANT_SHARED_LIBRARY "Set to ON to build dynamic library." ON )
114
+ if (WIN32 )
115
+ set (WANT_STATIC_LIBRARY OFF )
116
+ else (WIN32 )
117
+ option (WANT_STATIC_LIBRARY "Set to ON to build static library." ON )
118
+ endif (WIN32 )
119
+
120
+ if (USE_RPATH)
121
+ set (CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX} /lib" CACHE STRING "rpaths separated by semicolons." )
122
+ option (CMAKE_BUILD_WITH_INSTALL_RPATH "Set to YES to set the rpath or install_name on build instead of install." OFF )
123
+ endif (USE_RPATH)
124
+
125
+ if (DEFAULT_DLOPEN)
126
+ option (LUA_USE_DLOPEN "Enable dlopen support." ON )
127
+ else (DEFAULT_DLOPEN)
128
+ option (LUA_USE_DLOPEN "Enable dlopen support." OFF )
129
+ endif (DEFAULT_DLOPEN)
130
+
131
+ if (DEFAULT_POSIX)
132
+ option (LUA_USE_CURSES "Enable Curses support." ON )
133
+ option (LUA_USE_MKSTEMP "Use mkstemp." ON )
134
+ option (LUA_USE_ISATTY "Enable isatty support." ON )
135
+ option (LUA_USE_POPEN "Enable lua_popen support." ON )
136
+ option (LUA_USE_ULONGJMP "Try using _longjmp/_setjmp (more efficient)" ON )
137
+ else (DEFAULT_POSIX)
138
+ option (LUA_USE_CURSES "Enable Curses support." OFF )
139
+ option (LUA_USE_MKSTEMP "Use mkstemp." OFF )
140
+ option (LUA_USE_ISATTY "Enable isatty support." OFF )
141
+ option (LUA_USE_POPEN "Enable lua_popen support." OFF )
142
+ option (LUA_USE_ULONGJMP "Try using _longjmp/_setjmp (more efficient)" OFF )
143
+ endif (DEFAULT_POSIX)
144
+
145
+ if (DEFAULT_READLINE)
146
+ option (LUA_USE_READLINE "Enable readline support." ON )
147
+ else (DEFAULT_READLINE)
148
+ option (LUA_USE_READLINE "Enable readline support." OFF )
149
+ endif (DEFAULT_READLINE)
150
+
151
+ if (DEFAULT_ANSI)
152
+ option (LUA_ANSI "Disable non-ansi features." ON )
153
+ else (DEFAULT_ANSI)
154
+ option (LUA_ANSI "Disable non-ansi features." OFF )
155
+ endif (DEFAULT_ANSI)
156
+
157
+ option (LUA_USE_APICHECK "Enable API checks." OFF )
158
+
159
+ #
160
+ # llvm-lua options.
161
+ #
162
+ option (LUA_CPP_SUPPORT "Enable c++ support" OFF )
163
+
164
+ #
165
+ # LuaCoco options
166
+ #
167
+ option (COCO_USE_SETJMP "Coco: Force use of setjmp (instead of gccasm)" OFF )
168
+ option (COCO_USE_UCONTEXT "Coco: Force use of ucontext (instead of gccasm or setjmp)" OFF )
169
+ option (COCO_DISABLE "Disable coco" OFF )
170
+ set (COCO_DEFAULT_CSTACKSIZE "" CACHE STRING "Coco default cstacksize" )
171
+
172
+ #
173
+ # libs & cflags
174
+ #
175
+ set (COMMON_LDFLAGS "${COMMON_LDFLAGS} -lm " )
176
+
177
+ # For "Mac OS X 10.3-"
178
+ if (LUA_USE_MACOSX)
179
+ set (COMMON_CFLAGS "${COMMON_CFLAGS} -DLUA_USE_MACOSX" )
180
+ set (LUA_USE_DLOPEN FALSE )
181
+ endif (LUA_USE_MACOSX)
182
+
183
+ # enable options
184
+ if (LUA_USE_DLOPEN)
185
+ set (COMMON_CFLAGS "${COMMON_CFLAGS} -DLUA_USE_DLOPEN" )
186
+ if (NOT APPLE )
187
+ set (COMMON_LDFLAGS "${COMMON_LDFLAGS} -ldl " )
188
+ endif (NOT APPLE )
189
+ endif (LUA_USE_DLOPEN)
190
+ if (LUA_USE_MKSTEMP)
191
+ set (COMMON_CFLAGS "${COMMON_CFLAGS} -DLUA_USE_MKSTEMP" )
192
+ endif (LUA_USE_MKSTEMP)
193
+ if (LUA_USE_ISATTY)
194
+ set (COMMON_CFLAGS "${COMMON_CFLAGS} -DLUA_USE_ISATTY" )
195
+ endif (LUA_USE_ISATTY)
196
+ if (LUA_USE_POPEN)
197
+ set (COMMON_CFLAGS "${COMMON_CFLAGS} -DLUA_USE_POPEN" )
198
+ endif (LUA_USE_POPEN)
199
+ if (LUA_USE_ULONGJMP)
200
+ set (COMMON_CFLAGS "${COMMON_CFLAGS} -DLUA_USE_ULONGJMP" )
201
+ endif (LUA_USE_ULONGJMP)
202
+ if (LUA_USE_APICHECK)
203
+ set (COMMON_CFLAGS "${COMMON_CFLAGS} -DLUA_USE_APICHECK" )
204
+ endif (LUA_USE_APICHECK)
205
+ if (LUA_ANSI)
206
+ set (COMMON_CFLAGS "${COMMON_CFLAGS} -DLUA_ANSI" )
207
+ endif (LUA_ANSI)
208
+
209
+ # readline support
210
+ if (LUA_USE_READLINE)
211
+ FIND_PATH (READLINE_INCLUDE_DIR readline/readline.h)
212
+ FIND_LIBRARY (READLINE_LIBRARY NAMES readline)
213
+ if (READLINE_LIBRARY)
214
+ set (COMMON_CFLAGS "${COMMON_CFLAGS} -DLUA_USE_READLINE" )
215
+ set (COMMON_LDFLAGS "${COMMON_LDFLAGS} -lreadline -lhistory" )
216
+ include_directories (${READLINE_INCLUDE_DIR} )
217
+ endif (READLINE_LIBRARY)
218
+ endif (LUA_USE_READLINE)
219
+
220
+ # curses
221
+ if (LUA_USE_CURSES)
222
+ include (FindCurses)
223
+ if (CURSES_LIBRARY)
224
+ include_directories (${CURSES_INCLUDE_DIR} )
225
+ set (LIBS ${LIBS} ${CURSES_LIBRARY} )
226
+ endif (CURSES_LIBRARY)
227
+ endif (LUA_USE_CURSES)
228
+
108
229
#
109
230
# standard flags to use for each build type.
110
231
#
111
232
if (CMAKE_COMPILER_IS_GNUCC)
112
- # set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pipe -Wall -Wextra - Wshadow -W -pedantic -std=gnu99 -fgnu89-inline ")
233
+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pipe -Wall -Wshadow -W " )
113
234
set (CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O2" )
114
235
set (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O0 -g" )
115
236
set (CMAKE_C_FLAGS_PROFILE "${CMAKE_C_FLAGS_PROFILE} -O1 -g" )
116
237
set (CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_WITHDEBINFO} -O2 -g" )
117
238
endif (CMAKE_COMPILER_IS_GNUCC)
118
239
240
+ #
241
+ # For uninstall (needs cmake_uninstall.cmake.in in the top-level directory)
242
+ #
243
+ CONFIGURE_FILE (
244
+ "${CMAKE_CURRENT_SOURCE_DIR} /cmake_uninstall.cmake.in"
245
+ "${CMAKE_CURRENT_BINARY_DIR} /cmake_uninstall.cmake"
246
+ IMMEDIATE @ONLY)
247
+ ADD_CUSTOM_TARGET (uninstall
248
+ "${CMAKE_COMMAND} " -P "${CMAKE_CURRENT_BINARY_DIR} /cmake_uninstall.cmake" )
249
+
119
250
#
120
251
# sub-folders
121
252
#
0 commit comments