Skip to content

Commit f02cbcd

Browse files
Added MacOSX framework support.
git-svn-id: http://llvm-lua.googlecode.com/svn/trunk@95 f87b780f-1855-0410-a4d3-fd11cda3f415
1 parent 2ef400d commit f02cbcd

File tree

12 files changed

+383
-111
lines changed

12 files changed

+383
-111
lines changed

.svnignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
build
2+
llvm-lua/*.bc
3+
llvm-lua/*_bc.h
14
src/.libs
25
src/*.o
36
src/*.lo

CMakeLists.txt

Lines changed: 182 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -3,40 +3,16 @@
33
#
44
cmake_minimum_required(VERSION 2.4 FATAL_ERROR)
55

6-
project(llvm-lua C CXX)
6+
project(llvm_lua C CXX)
77

88
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
99

1010
include(CustomMacros)
11+
include(CMakeDependentOption)
1112
include(FindLLVM)
1213

1314
enable_testing()
1415

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-
4016
#
4117
# Lua version
4218
#
@@ -46,7 +22,7 @@ set(LUA_VERSION_PATCH 4)
4622
set(LUA_VERSION
4723
"${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR}.${LUA_VERSION_PATCH}")
4824
set(LUA_SOVERSION
49-
"${LUA_VERSION_MAJOR}")
25+
"${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR}")
5026

5127
#
5228
# llvm-lua version
@@ -57,7 +33,7 @@ set(LLVM_LUA_VERSION_PATCH 0)
5733
set(LLVM_LUA_VERSION
5834
"${LLVM_LUA_VERSION_MAJOR}.${LLVM_LUA_VERSION_MINOR}.${LLVM_LUA_VERSION_PATCH}")
5935
set(LLVM_LUA_SOVERSION
60-
"${LLVM_LUA_VERSION_MAJOR}")
36+
"${LLVM_LUA_VERSION_MAJOR}.${LLVM_LUA_VERSION_MINOR}")
6137

6238
#
6339
# Lua package info.
@@ -77,45 +53,200 @@ set(CPACK_SOURCE_PACKAGE_FILE_NAME
7753
include(CPack)
7854

7955
set(COMMON_CFLAGS)
80-
set(COMMON_LDFLAGS " -lm ")
81-
56+
set(COMMON_LDFLAGS)
57+
set(LIBS)
8258
#
8359
# Detect system type
8460
#
8561
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)
106108
endif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
107109

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+
108229
#
109230
# standard flags to use for each build type.
110231
#
111232
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 ")
113234
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O2")
114235
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O0 -g")
115236
set(CMAKE_C_FLAGS_PROFILE "${CMAKE_C_FLAGS_PROFILE} -O1 -g")
116237
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_WITHDEBINFO} -O2 -g")
117238
endif(CMAKE_COMPILER_IS_GNUCC)
118239

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+
119250
#
120251
# sub-folders
121252
#

cmake_uninstall.cmake.in

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
IF(NOT EXISTS "@CMAKE_BINARY_DIR@/install_manifest.txt")
2+
MESSAGE(FATAL_ERROR "Cannot find install manifest: \"@CMAKE_BINARY_DIR@/install_manifest.txt\"")
3+
ENDIF(NOT EXISTS "@CMAKE_BINARY_DIR@/install_manifest.txt")
4+
5+
FILE(READ "@CMAKE_BINARY_DIR@/install_manifest.txt" files)
6+
STRING(REGEX REPLACE "\n" ";" files "${files}")
7+
FOREACH(file ${files})
8+
MESSAGE(STATUS "Uninstalling \"$ENV{DESTDIR}${file}\"")
9+
EXEC_PROGRAM(
10+
"@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\""
11+
OUTPUT_VARIABLE rm_out
12+
RETURN_VALUE rm_retval
13+
)
14+
IF(NOT "${rm_retval}" STREQUAL 0)
15+
MESSAGE(FATAL_ERROR "Problem when removing \"$ENV{DESTDIR}${file}\"")
16+
ENDIF(NOT "${rm_retval}" STREQUAL 0)
17+
ENDFOREACH(file)
18+

0 commit comments

Comments
 (0)