/
CMakeLists.txt
185 lines (156 loc) · 5.38 KB
1
2
3
4
5
6
# 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.
7
8
CMAKE_MINIMUM_REQUIRED(VERSION 2.4)
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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)
30
ADD_DEFINITIONS(-DLUA_ANSI=1)
31
32
33
34
35
36
37
38
39
40
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)
41
42
# Not building a library, so disable PIC for minor optimizations.
ADD_DEFINITIONS(-mdynamic-no-pic)
43
44
ENDIF(MACOSX)
45
46
IF(WINDOWS)
ADD_DEFINITIONS(-DPLATFORM_WINDOWS=1)
47
SET(USES_WINMAIN WIN32)
48
49
ENDIF(WINDOWS)
50
51
IF(BEOS)
ADD_DEFINITIONS(-DPLATFORM_BEOS=1)
52
53
54
# !!! FIXME: Workaround for lua issue on some platforms...fix this better.
ADD_DEFINITIONS(-D_setjmp=setjmp)
ADD_DEFINITIONS(-D_longjmp=longjmp)
55
56
57
58
59
60
61
ENDIF(BEOS)
IF(UNIX)
ADD_DEFINITIONS(-DPLATFORM_UNIX=1)
ENDIF(UNIX)
IF(CMAKE_COMPILER_IS_GNUCC)
62
63
# Always build with debug symbols...you can strip it later.
ADD_DEFINITIONS(-g -pipe -Wall -Werror -fsigned-char)
64
65
ENDIF(CMAKE_COMPILER_IS_GNUCC)
66
67
68
69
70
IF(MSVC)
# VS.NET 8.0 got really really anal about strcpy, etc.
ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS=1)
ENDIF(MSVC)
71
72
SET(TOBY_HAVE_GUI FALSE)
73
OPTION(TOBY_GUI_WXWIDGETS "Build wxWidgets GUI(s)" TRUE)
74
75
76
77
78
IF(TOBY_GUI_WXWIDGETS)
SET(wxWidgets_USE_LIBS base core adv)
SET(wxWidgets_INCLUDE_DIRS_NO_SYSTEM 1)
FIND_PACKAGE(wxWidgets)
IF(wxWidgets_FOUND)
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
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)
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
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)
122
123
SET(TOBY_SRCS
124
buildver.c
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
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)
156
ADD_LIBRARY(tobybackend STATIC ${TOBY_SRCS} ${OPTIONAL_SRCS})
157
158
IF(TOBY_GUI_WXWIDGETS)
159
ADD_EXECUTABLE(toby ${USES_WINMAIN} toby_wxwidgets.cpp)
160
161
TARGET_LINK_LIBRARIES(toby tobybackend ${OPTIONAL_LIBS} ${wxWidgets_LIBRARIES})
ENDIF(TOBY_GUI_WXWIDGETS)
162
163
IF(TOBY_GUI_SDL)
164
ADD_EXECUTABLE(toby-sdl ${USES_WINMAIN} toby_sdl.c)
165
166
TARGET_LINK_LIBRARIES(toby-sdl tobybackend ${OPTIONAL_LIBS} ${SDL_LIBRARY})
ENDIF(TOBY_GUI_SDL)
167
168
169
MACRO(MESSAGE_BOOL_OPTION _NAME _VALUE)
IF(${_VALUE})
170
MESSAGE(STATUS " ${_NAME}: enabled")
171
ELSE(${_VALUE})
172
MESSAGE(STATUS " ${_NAME}: disabled")
173
174
175
ENDIF(${_VALUE})
ENDMACRO(MESSAGE_BOOL_OPTION)
176
MESSAGE(STATUS "Toby will build with the following options:")
177
MESSAGE_BOOL_OPTION("wxWidgets-based IDE application" TOBY_GUI_WXWIDGETS)
178
179
180
181
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)
182
183
MESSAGE_BOOL_OPTION("SDL-based interpreter application" TOBY_GUI_SDL)
184
# end of CMakeLists.txt ...