Skip to content

Latest commit

 

History

History
199 lines (175 loc) · 6.79 KB

CMakeLists.txt

File metadata and controls

199 lines (175 loc) · 6.79 KB
 
Feb 28, 2009
Feb 28, 2009
1
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
Mar 22, 2008
Mar 22, 2008
2
PROJECT(MojoShader)
Mar 28, 2008
Mar 28, 2008
3
Jan 1, 2016
Jan 1, 2016
4
5
6
7
8
9
10
OPTION(BUILD_SHARED "Build MojoShader as a shared library" OFF)
OPTION(PROFILE_D3D "Build MojoShader with support for the D3D profile" ON)
OPTION(PROFILE_BYTECODE "Build MojoShader with support for the BYTECODE profile" ON)
OPTION(PROFILE_GLSL120 "Build MojoShader with support for the GLSL120 profile" ON)
OPTION(PROFILE_GLSL "Build MojoShader with support for the GLSL profile" ON)
OPTION(PROFILE_ARB1 "Build MojoShader with support for the ARB1 profile" ON)
OPTION(PROFILE_ARB1_NV "Build MojoShader with support for the ARB1_NV profile" ON)
May 29, 2016
May 29, 2016
11
OPTION(PROFILE_METAL "Build MojoShader with support for the Metal profile" ON)
May 28, 2016
May 28, 2016
12
OPTION(EFFECT_SUPPORT "Build MojoShader with support for Effect framework files" ON)
Jan 1, 2016
Jan 1, 2016
13
14
15
16
OPTION(FLIP_VIEWPORT "Build MojoShader with the ability to flip the GL viewport" OFF)
OPTION(DEPTH_CLIPPING "Build MojoShader with the ability to simulate [0, 1] depth clipping" OFF)
OPTION(XNA4_VERTEXTEXTURE "Build MojoShader with XNA4 vertex texturing behavior" OFF)
Feb 12, 2009
Feb 12, 2009
17
18
INCLUDE_DIRECTORIES(.)
Feb 12, 2009
Feb 12, 2009
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
FIND_PROGRAM(HG hg DOC "Path to hg command line app: http://www.selenic.com/mercurial/")
IF(NOT HG)
MESSAGE(STATUS "Mercurial (hg) not found. You can go on, but version info will be wrong.")
SET(MOJOSHADER_VERSION -1)
SET(MOJOSHADER_CHANGESET "???")
ELSE(NOT HG)
MARK_AS_ADVANCED(HG)
EXECUTE_PROCESS(
COMMAND hg tip --template {rev}
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
RESULT_VARIABLE HGVERSION_RC
OUTPUT_VARIABLE MOJOSHADER_VERSION
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE
)
EXECUTE_PROCESS(
COMMAND hg tip --template hg-{rev}:{node|short}
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
RESULT_VARIABLE HGVERSION_RC
OUTPUT_VARIABLE MOJOSHADER_CHANGESET
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE
)
ENDIF(NOT HG)
Nov 6, 2008
Nov 6, 2008
43
44
45
46
47
48
49
50
51
52
53
WRITE_FILE(
"${CMAKE_CURRENT_SOURCE_DIR}/mojoshader_version.h"
"/* This file was autogenerated. Do not edit! */\n"
"#ifndef _INCL_MOJOSHADER_VERSION_H_\n"
"#define _INCL_MOJOSHADER_VERSION_H_\n"
"#define MOJOSHADER_VERSION ${MOJOSHADER_VERSION}\n"
"#define MOJOSHADER_CHANGESET \"${MOJOSHADER_CHANGESET}\"\n"
"#endif\n"
)
Mar 28, 2008
Mar 28, 2008
54
55
56
57
IF(CMAKE_COMPILER_IS_GNUCC)
ADD_DEFINITIONS(-Wall -ggdb3)
ENDIF(CMAKE_COMPILER_IS_GNUCC)
Mar 28, 2008
Mar 28, 2008
58
59
# testparse uses this when I'm looking at memory usage patterns.
#ADD_DEFINITIONS(-DMOJOSHADER_DEBUG_MALLOC=1)
Mar 28, 2008
Mar 28, 2008
60
Apr 30, 2008
Apr 30, 2008
61
62
63
64
65
IF(MSVC)
ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS=1)
ADD_DEFINITIONS(-TP) # force .c files to compile as C++.
ENDIF(MSVC)
Feb 28, 2009
Feb 28, 2009
66
67
68
69
# We build lemon, then use it to generate parser C code.
ADD_EXECUTABLE(lemon "misc/lemon.c")
GET_TARGET_PROPERTY(LEMON lemon LOCATION)
ADD_CUSTOM_COMMAND(
Feb 28, 2009
Feb 28, 2009
70
OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/mojoshader_parser_hlsl.h"
Feb 28, 2009
Feb 28, 2009
71
72
MAIN_DEPENDENCY "${CMAKE_CURRENT_SOURCE_DIR}/mojoshader_parser_hlsl.lemon"
DEPENDS lemon "${CMAKE_CURRENT_SOURCE_DIR}/misc/lempar.c"
Feb 28, 2009
Feb 28, 2009
73
COMMAND "${LEMON}"
Feb 8, 2010
Feb 8, 2010
74
ARGS -q "-T${CMAKE_CURRENT_SOURCE_DIR}/misc/lempar.c" "${CMAKE_CURRENT_SOURCE_DIR}/mojoshader_parser_hlsl.lemon"
Feb 28, 2009
Feb 28, 2009
75
76
)
Jan 1, 2016
Jan 1, 2016
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
IF(APPLE)
find_library(CARBON_FRAMEWORK Carbon) # Stupid Gestalt.
ENDIF(APPLE)
IF(NOT PROFILE_D3D)
ADD_DEFINITIONS(-DSUPPORT_PROFILE_D3D=0)
ENDIF(NOT PROFILE_D3D)
IF(NOT PROFILE_BYTECODE)
ADD_DEFINITIONS(-DSUPPORT_PROFILE_BYTECODE=0)
ENDIF(NOT PROFILE_BYTECODE)
IF(NOT PROFILE_GLSL120)
ADD_DEFINITIONS(-DSUPPORT_PROFILE_GLSL120=0)
ENDIF(NOT PROFILE_GLSL120)
IF(NOT PROFILE_GLSL)
ADD_DEFINITIONS(-DSUPPORT_PROFILE_GLSL=0)
ENDIF(NOT PROFILE_GLSL)
IF(NOT PROFILE_ARB1)
ADD_DEFINITIONS(-DSUPPORT_PROFILE_ARB1=0)
ENDIF(NOT PROFILE_ARB1)
IF(NOT PROFILE_ARB1_NV)
ADD_DEFINITIONS(-DSUPPORT_PROFILE_ARB1_NV=0)
ENDIF(NOT PROFILE_ARB1_NV)
May 29, 2016
May 29, 2016
99
100
101
IF(NOT PROFILE_METAL)
ADD_DEFINITIONS(-DSUPPORT_PROFILE_METAL=0)
ENDIF(NOT PROFILE_ARB1_NV)
Jan 1, 2016
Jan 1, 2016
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
IF(EFFECT_SUPPORT)
IF(UNIX)
SET(LIBM -lm)
ENDIF(UNIX)
ADD_DEFINITIONS(-DMOJOSHADER_EFFECT_SUPPORT)
ENDIF(EFFECT_SUPPORT)
IF(FLIP_VIEWPORT)
ADD_DEFINITIONS(-DMOJOSHADER_FLIP_RENDERTARGET)
ENDIF(FLIP_VIEWPORT)
IF(DEPTH_CLIPPING)
ADD_DEFINITIONS(-DMOJOSHADER_DEPTH_CLIPPING)
ENDIF(DEPTH_CLIPPING)
IF(XNA4_VERTEXTEXTURE)
ADD_DEFINITIONS(-DMOJOSHADER_XNA4_VERTEX_TEXTURES)
ENDIF(XNA4_VERTEXTEXTURE)
IF(BUILD_SHARED)
SET(LIBRARY_FORMAT SHARED)
ELSE(BUILD_SHARED)
SET(LIBRARY_FORMAT STATIC)
ENDIF(BUILD_SHARED)
ADD_LIBRARY(mojoshader ${LIBRARY_FORMAT}
Dec 5, 2008
Dec 5, 2008
129
mojoshader.c
Apr 5, 2009
Apr 5, 2009
130
mojoshader_common.c
May 22, 2011
May 22, 2011
131
mojoshader_effects.c
Feb 28, 2009
Feb 28, 2009
132
mojoshader_compiler.c
Feb 9, 2009
Feb 9, 2009
133
134
mojoshader_preprocessor.c
mojoshader_lexer.c
Dec 5, 2008
Dec 5, 2008
135
136
137
mojoshader_assembler.c
mojoshader_opengl.c
)
Jan 1, 2016
Jan 1, 2016
138
139
140
IF(BUILD_SHARED)
TARGET_LINK_LIBRARIES(mojoshader ${LIBM} ${CARBON_FRAMEWORK})
ENDIF(BUILD_SHARED)
May 31, 2011
May 31, 2011
141
Feb 28, 2009
Feb 28, 2009
142
143
SET_SOURCE_FILES_PROPERTIES(
mojoshader_compiler.c
Feb 28, 2009
Feb 28, 2009
144
PROPERTIES OBJECT_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/mojoshader_parser_hlsl.h"
Feb 28, 2009
Feb 28, 2009
145
146
)
Feb 12, 2009
Feb 12, 2009
147
148
149
150
151
152
FIND_PROGRAM(RE2C re2c DOC "Path to re2c command line app: http://re2c.org/")
IF(NOT RE2C)
MESSAGE(STATUS "re2c missing. You can go on, but can't rebuild the lexer.")
ELSE(NOT RE2C)
MARK_AS_ADVANCED(RE2C)
ADD_CUSTOM_COMMAND(
Feb 28, 2009
Feb 28, 2009
153
OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/mojoshader_lexer.c"
Feb 12, 2009
Feb 12, 2009
154
DEPENDS mojoshader_lexer.re
Feb 28, 2009
Feb 28, 2009
155
156
COMMAND "${RE2C}"
ARGS -is --no-generation-date -o "${CMAKE_CURRENT_SOURCE_DIR}/mojoshader_lexer.c" "${CMAKE_CURRENT_SOURCE_DIR}/mojoshader_lexer.re"
Feb 12, 2009
Feb 12, 2009
157
158
)
ENDIF(NOT RE2C)
Feb 11, 2009
Feb 11, 2009
159
Feb 21, 2014
Feb 21, 2014
160
161
162
163
find_path(SDL2_INCLUDE_DIR SDL.h PATH_SUFFIXES include/SDL2)
find_library(SDL2 NAMES SDL2 PATH_SUFFIXES lib)
IF(SDL2)
INCLUDE_DIRECTORIES(${SDL2_INCLUDE_DIR})
Feb 12, 2009
Feb 12, 2009
164
ADD_EXECUTABLE(glcaps utils/glcaps.c)
Feb 21, 2014
Feb 21, 2014
165
TARGET_LINK_LIBRARIES(glcaps ${SDL2} ${LIBM} ${CARBON_FRAMEWORK})
Feb 12, 2009
Feb 12, 2009
166
ADD_EXECUTABLE(bestprofile utils/bestprofile.c)
Feb 21, 2014
Feb 21, 2014
167
TARGET_LINK_LIBRARIES(bestprofile mojoshader ${SDL2} ${LIBM} ${CARBON_FRAMEWORK})
Feb 12, 2009
Feb 12, 2009
168
ADD_EXECUTABLE(availableprofiles utils/availableprofiles.c)
Feb 21, 2014
Feb 21, 2014
169
170
TARGET_LINK_LIBRARIES(availableprofiles mojoshader ${SDL2} ${LIBM} ${CARBON_FRAMEWORK})
ENDIF(SDL2)
Apr 22, 2008
Apr 22, 2008
171
Feb 28, 2009
Feb 28, 2009
172
ADD_EXECUTABLE(finderrors utils/finderrors.c)
Feb 21, 2014
Feb 21, 2014
173
174
TARGET_LINK_LIBRARIES(finderrors mojoshader ${SDL2} ${LIBM} ${CARBON_FRAMEWORK})
IF(SDL2)
Feb 28, 2009
Feb 28, 2009
175
176
177
178
SET_SOURCE_FILES_PROPERTIES(
utils/finderrors.c
PROPERTIES COMPILE_FLAGS "-DFINDERRORS_COMPILE_SHADERS=1"
)
Feb 21, 2014
Feb 21, 2014
179
ENDIF(SDL2)
Feb 28, 2009
Feb 28, 2009
180
Feb 12, 2009
Feb 12, 2009
181
ADD_EXECUTABLE(testparse utils/testparse.c)
Feb 21, 2014
Feb 21, 2014
182
TARGET_LINK_LIBRARIES(testparse mojoshader ${LIBM} ${CARBON_FRAMEWORK})
Feb 12, 2009
Feb 12, 2009
183
ADD_EXECUTABLE(testoutput utils/testoutput.c)
Feb 21, 2014
Feb 21, 2014
184
TARGET_LINK_LIBRARIES(testoutput mojoshader ${LIBM} ${CARBON_FRAMEWORK})
Feb 19, 2009
Feb 19, 2009
185
ADD_EXECUTABLE(mojoshader-compiler utils/mojoshader-compiler.c)
Feb 21, 2014
Feb 21, 2014
186
TARGET_LINK_LIBRARIES(mojoshader-compiler mojoshader ${LIBM} ${CARBON_FRAMEWORK})
Feb 9, 2008
Feb 9, 2008
187
Apr 9, 2009
Apr 9, 2009
188
189
190
191
192
# Unit tests...
ADD_CUSTOM_TARGET(
test
COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/unit_tests/run_tests.pl"
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
Apr 9, 2009
Apr 9, 2009
193
DEPENDS mojoshader-compiler
Apr 9, 2009
Apr 9, 2009
194
COMMENT "Running unit tests..."
Apr 9, 2009
Apr 9, 2009
195
VERBATIM
Apr 9, 2009
Apr 9, 2009
196
197
)
Feb 9, 2008
Feb 9, 2008
198
# End of CMakeLists.txt ...