/
CMakeLists.txt
187 lines (157 loc) · 5.42 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
PROJECT(Toby)
SET(TOBY_VERSION 0.1)
12
SET(LUA_DIR lua)
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# 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)
32
ADD_DEFINITIONS(-DLUA_ANSI=1)
33
34
INCLUDE_DIRECTORIES(.)
35
INCLUDE_DIRECTORIES(${LUA_DIR}/src)
36
37
38
39
40
41
42
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)
43
44
# Not building a library, so disable PIC for minor optimizations.
ADD_DEFINITIONS(-mdynamic-no-pic)
45
46
ENDIF(MACOSX)
47
48
IF(WINDOWS)
ADD_DEFINITIONS(-DPLATFORM_WINDOWS=1)
49
SET(USES_WINMAIN WIN32)
50
51
ENDIF(WINDOWS)
52
53
IF(BEOS)
ADD_DEFINITIONS(-DPLATFORM_BEOS=1)
54
55
56
# !!! FIXME: Workaround for lua issue on some platforms...fix this better.
ADD_DEFINITIONS(-D_setjmp=setjmp)
ADD_DEFINITIONS(-D_longjmp=longjmp)
57
58
59
60
61
62
63
ENDIF(BEOS)
IF(UNIX)
ADD_DEFINITIONS(-DPLATFORM_UNIX=1)
ENDIF(UNIX)
IF(CMAKE_COMPILER_IS_GNUCC)
64
65
# Always build with debug symbols...you can strip it later.
ADD_DEFINITIONS(-g -pipe -Wall -Werror -fsigned-char)
66
67
ENDIF(CMAKE_COMPILER_IS_GNUCC)
68
69
70
71
72
IF(MSVC)
# VS.NET 8.0 got really really anal about strcpy, etc.
ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS=1)
ENDIF(MSVC)
73
74
SET(TOBY_HAVE_GUI FALSE)
75
OPTION(TOBY_GUI_WXWIDGETS "Build wxWidgets GUI(s)" TRUE)
76
77
78
79
80
IF(TOBY_GUI_WXWIDGETS)
SET(wxWidgets_USE_LIBS base core adv)
SET(wxWidgets_INCLUDE_DIRS_NO_SYSTEM 1)
FIND_PACKAGE(wxWidgets)
IF(wxWidgets_FOUND)
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
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)
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
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)
124
125
SET(TOBY_SRCS
126
buildver.c
127
toby_app.c
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
${LUA_DIR}/src/lapi.c
${LUA_DIR}/src/ldebug.c
${LUA_DIR}/src/ldo.c
${LUA_DIR}/src/ldump.c
${LUA_DIR}/src/lfunc.c
${LUA_DIR}/src/lgc.c
${LUA_DIR}/src/lmem.c
${LUA_DIR}/src/lobject.c
${LUA_DIR}/src/lopcodes.c
${LUA_DIR}/src/lstate.c
${LUA_DIR}/src/lstring.c
${LUA_DIR}/src/ltable.c
${LUA_DIR}/src/ltm.c
${LUA_DIR}/src/lundump.c
${LUA_DIR}/src/lvm.c
${LUA_DIR}/src/lzio.c
${LUA_DIR}/src/loadlib.c
${LUA_DIR}/src/lparser.c
${LUA_DIR}/src/llex.c
${LUA_DIR}/src/lcode.c
${LUA_DIR}/src/lauxlib.c
149
150
151
152
153
154
155
156
157
)
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)
158
ADD_LIBRARY(tobybackend STATIC ${TOBY_SRCS} ${OPTIONAL_SRCS})
159
160
IF(TOBY_GUI_WXWIDGETS)
161
ADD_EXECUTABLE(toby ${USES_WINMAIN} toby_wxwidgets.cpp)
162
163
TARGET_LINK_LIBRARIES(toby tobybackend ${OPTIONAL_LIBS} ${wxWidgets_LIBRARIES})
ENDIF(TOBY_GUI_WXWIDGETS)
164
165
IF(TOBY_GUI_SDL)
166
ADD_EXECUTABLE(toby-sdl ${USES_WINMAIN} toby_sdl.c)
167
168
TARGET_LINK_LIBRARIES(toby-sdl tobybackend ${OPTIONAL_LIBS} ${SDL_LIBRARY})
ENDIF(TOBY_GUI_SDL)
169
170
171
MACRO(MESSAGE_BOOL_OPTION _NAME _VALUE)
IF(${_VALUE})
172
MESSAGE(STATUS " ${_NAME}: enabled")
173
ELSE(${_VALUE})
174
MESSAGE(STATUS " ${_NAME}: disabled")
175
176
177
ENDIF(${_VALUE})
ENDMACRO(MESSAGE_BOOL_OPTION)
178
MESSAGE(STATUS "Toby will build with the following options:")
179
MESSAGE_BOOL_OPTION("wxWidgets-based IDE application" TOBY_GUI_WXWIDGETS)
180
181
182
183
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)
184
185
MESSAGE_BOOL_OPTION("SDL-based interpreter application" TOBY_GUI_SDL)
186
# end of CMakeLists.txt ...