/
CMakeLists.txt
185 lines (156 loc) · 5.38 KB
/
CMakeLists.txt
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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
# Toby -- A programming language for learning.
# Copyright (C) 2007 Ryan C. Gordon.
#
# Please refer to LICENSE.txt in the root directory of the source
# distribution for licensing details.
CMAKE_MINIMUM_REQUIRED(VERSION 2.4)
PROJECT(Toby)
SET(TOBY_VERSION 0.1)
# I hate that they define "WIN32" ... we're about to move to Win64...I hope!
IF(WIN32 AND NOT WINDOWS)
SET(WINDOWS TRUE)
ENDIF(WIN32 AND NOT WINDOWS)
# Bleh, let's do it for "APPLE" too.
IF(APPLE AND NOT MACOSX)
SET(MACOSX TRUE)
ENDIF(APPLE AND NOT MACOSX)
INCLUDE(CheckIncludeFile)
INCLUDE(CheckLibraryExists)
INCLUDE(CheckCSourceCompiles)
ADD_DEFINITIONS(-DAPPID=toby)
ADD_DEFINITIONS(-DAPPREV=${TOBY_VERSION})
ADD_DEFINITIONS(-D_REENTRANT)
ADD_DEFINITIONS(-D_THREAD_SAFE)
ADD_DEFINITIONS(-DLUA_ANSI=1)
INCLUDE_DIRECTORIES(.)
INCLUDE_DIRECTORIES(lua-5.1.1/src)
IF(MACOSX)
ADD_DEFINITIONS(-DPLATFORM_MACOSX=1)
IF(CMAKE_OSX_ARCHITECTURES MATCHES ppc)
ADD_DEFINITIONS(-DMAC_OS_X_VERSION_MIN_REQUIRED=1020)
SET(OPTIONAL_LIBS ${OPTIONAL_LIBS} "-mmacosx-version-min=10.2")
ENDIF(CMAKE_OSX_ARCHITECTURES MATCHES ppc)
# Not building a library, so disable PIC for minor optimizations.
ADD_DEFINITIONS(-mdynamic-no-pic)
ENDIF(MACOSX)
IF(WINDOWS)
ADD_DEFINITIONS(-DPLATFORM_WINDOWS=1)
SET(USES_WINMAIN WIN32)
ENDIF(WINDOWS)
IF(BEOS)
ADD_DEFINITIONS(-DPLATFORM_BEOS=1)
# !!! FIXME: Workaround for lua issue on some platforms...fix this better.
ADD_DEFINITIONS(-D_setjmp=setjmp)
ADD_DEFINITIONS(-D_longjmp=longjmp)
ENDIF(BEOS)
IF(UNIX)
ADD_DEFINITIONS(-DPLATFORM_UNIX=1)
ENDIF(UNIX)
IF(CMAKE_COMPILER_IS_GNUCC)
# Always build with debug symbols...you can strip it later.
ADD_DEFINITIONS(-g -pipe -Wall -Werror -fsigned-char)
ENDIF(CMAKE_COMPILER_IS_GNUCC)
IF(MSVC)
# VS.NET 8.0 got really really anal about strcpy, etc.
ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS=1)
ENDIF(MSVC)
SET(TOBY_HAVE_GUI FALSE)
OPTION(TOBY_GUI_WXWIDGETS "Build wxWidgets GUI(s)" TRUE)
IF(TOBY_GUI_WXWIDGETS)
SET(wxWidgets_USE_LIBS base core adv)
SET(wxWidgets_INCLUDE_DIRS_NO_SYSTEM 1)
FIND_PACKAGE(wxWidgets)
IF(wxWidgets_FOUND)
SET(TOBY_HAVE_WX_GUI FALSE)
OPTION(TOBY_WX_STANDALONE "Build wxWidgets standalone GUI" TRUE)
IF(TOBY_WX_STANDALONE)
SET(TOBY_HAVE_WX_GUI TRUE)
ADD_DEFINITIONS(-DTOBY_WX_BUILD_STANDALONE=1)
ENDIF(TOBY_WX_STANDALONE)
OPTION(TOBY_WX_IDE "Build wxWidgets IDE GUI" TRUE)
IF(TOBY_WX_IDE)
SET(TOBY_HAVE_WX_GUI TRUE)
ADD_DEFINITIONS(-DTOBY_WX_BUILD_IDE=1)
ENDIF(TOBY_WX_IDE)
IF(NOT TOBY_HAVE_WX_GUI)
MESSAGE(STATUS "No wxWidgets GUIs enabled. Disabling wx app.")
SET(TOBY_GUI_WXWIDGETS FALSE)
ELSE(NOT TOBY_HAVE_WX_GUI)
SET(TOBY_HAVE_GUI TRUE)
INCLUDE(${wxWidgets_USE_FILE})
ADD_DEFINITIONS(${wxWidgets_CXX_FLAGS})
ENDIF(NOT TOBY_HAVE_WX_GUI)
ELSE(wxWidgets_FOUND)
MESSAGE(STATUS "wxWidgets not found. Support is disabled.")
SET(TOBY_GUI_WXWIDGETS FALSE)
ENDIF(wxWidgets_FOUND)
ENDIF(TOBY_GUI_WXWIDGETS)
OPTION(TOBY_GUI_SDL "Build SDL standalone GUI" TRUE)
IF(TOBY_GUI_SDL)
FIND_PACKAGE(SDL)
IF(SDL_FOUND)
SET(TOBY_HAVE_GUI TRUE)
INCLUDE_DIRECTORIES(${SDL_INCLUDE_DIR})
ELSE(SDL_FOUND)
MESSAGE(STATUS "SDL not found. Support is disabled.")
SET(TOBY_GUI_SDL FALSE)
ENDIF(SDL_FOUND)
ENDIF(TOBY_GUI_SDL)
IF(NOT TOBY_HAVE_GUI)
MESSAGE(FATAL_ERROR "Can't find any GUI libraries we can use!")
ENDIF(NOT TOBY_HAVE_GUI)
SET(TOBY_SRCS
buildver.c
toby_app.c
lua-5.1.1/src/lapi.c
lua-5.1.1/src/ldebug.c
lua-5.1.1/src/ldo.c
lua-5.1.1/src/ldump.c
lua-5.1.1/src/lfunc.c
lua-5.1.1/src/lgc.c
lua-5.1.1/src/lmem.c
lua-5.1.1/src/lobject.c
lua-5.1.1/src/lopcodes.c
lua-5.1.1/src/lstate.c
lua-5.1.1/src/lstring.c
lua-5.1.1/src/ltable.c
lua-5.1.1/src/ltm.c
lua-5.1.1/src/lundump.c
lua-5.1.1/src/lvm.c
lua-5.1.1/src/lzio.c
lua-5.1.1/src/loadlib.c
lua-5.1.1/src/lparser.c
lua-5.1.1/src/llex.c
lua-5.1.1/src/lcode.c
lua-5.1.1/src/lauxlib.c
)
IF(UNIX AND NOT MACOSX)
CHECK_LIBRARY_EXISTS("m" "sin" "" HAVE_LIBM)
IF(HAVE_LIBM)
SET(OPTIONAL_LIBS ${OPTIONAL_LIBS} m)
ENDIF(HAVE_LIBM)
ENDIF(UNIX AND NOT MACOSX)
ADD_LIBRARY(tobybackend STATIC ${TOBY_SRCS} ${OPTIONAL_SRCS})
IF(TOBY_GUI_WXWIDGETS)
ADD_EXECUTABLE(toby ${USES_WINMAIN} toby_wxwidgets.cpp)
TARGET_LINK_LIBRARIES(toby tobybackend ${OPTIONAL_LIBS} ${wxWidgets_LIBRARIES})
ENDIF(TOBY_GUI_WXWIDGETS)
IF(TOBY_GUI_SDL)
ADD_EXECUTABLE(toby-sdl ${USES_WINMAIN} toby_sdl.c)
TARGET_LINK_LIBRARIES(toby-sdl tobybackend ${OPTIONAL_LIBS} ${SDL_LIBRARY})
ENDIF(TOBY_GUI_SDL)
MACRO(MESSAGE_BOOL_OPTION _NAME _VALUE)
IF(${_VALUE})
MESSAGE(STATUS " ${_NAME}: enabled")
ELSE(${_VALUE})
MESSAGE(STATUS " ${_NAME}: disabled")
ENDIF(${_VALUE})
ENDMACRO(MESSAGE_BOOL_OPTION)
MESSAGE(STATUS "Toby will build with the following options:")
MESSAGE_BOOL_OPTION("wxWidgets-based IDE application" TOBY_GUI_WXWIDGETS)
IF(TOBY_GUI_WXWIDGETS)
MESSAGE_BOOL_OPTION(" wxWidgets standalone support" TOBY_WX_STANDALONE)
MESSAGE_BOOL_OPTION(" wxWidgets IDE support" TOBY_WX_IDE)
ENDIF(TOBY_GUI_WXWIDGETS)
MESSAGE_BOOL_OPTION("SDL-based interpreter application" TOBY_GUI_SDL)
# end of CMakeLists.txt ...