CMakeLists.txt
author Ethan Lee <flibitijibibo@flibitijibibo.com>
Wed, 23 May 2018 11:07:59 -0400
changeset 1188 25000edc0176
parent 1187 0687a8d78a54
child 1191 f2ecd5032ffe
permissions -rw-r--r--
Move zeromalloc trickery to internal malloc/free functions
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
711
d547597e81de Cleaned up some CMake issues.
Ryan C. Gordon <icculus@icculus.org>
parents: 710
diff changeset
     1
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
35
5749d174b537 [svn] Might as well keep the tradition alive.
icculus
parents: 10
diff changeset
     2
PROJECT(MojoShader)
48
86dc2c772d26 [svn] Enabled -Wall, found some bugs.
icculus
parents: 35
diff changeset
     3
1150
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
     4
OPTION(BUILD_SHARED "Build MojoShader as a shared library" OFF)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
     5
OPTION(PROFILE_D3D "Build MojoShader with support for the D3D profile" ON)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
     6
OPTION(PROFILE_BYTECODE "Build MojoShader with support for the BYTECODE profile" ON)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
     7
OPTION(PROFILE_GLSL120 "Build MojoShader with support for the GLSL120 profile" ON)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
     8
OPTION(PROFILE_GLSL "Build MojoShader with support for the GLSL profile" ON)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
     9
OPTION(PROFILE_ARB1 "Build MojoShader with support for the ARB1 profile" ON)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
    10
OPTION(PROFILE_ARB1_NV "Build MojoShader with support for the ARB1_NV profile" ON)
1172
55700e64bd8c Make Metal profile optional in the CMake project.
Ryan C. Gordon <icculus@icculus.org>
parents: 1166
diff changeset
    11
OPTION(PROFILE_METAL "Build MojoShader with support for the Metal profile" ON)
1166
ba0794ea4172 Default to building with Effects framework support enabled.
Ryan C. Gordon <icculus@icculus.org>
parents: 1150
diff changeset
    12
OPTION(EFFECT_SUPPORT "Build MojoShader with support for Effect framework files" ON)
1187
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
    13
OPTION(COMPILER_SUPPORT "Build MojoShader with support for HLSL source files" ON)
1150
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
    14
OPTION(FLIP_VIEWPORT "Build MojoShader with the ability to flip the GL viewport" OFF)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
    15
OPTION(DEPTH_CLIPPING "Build MojoShader with the ability to simulate [0, 1] depth clipping" OFF)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
    16
OPTION(XNA4_VERTEXTEXTURE "Build MojoShader with XNA4 vertex texturing behavior" OFF)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
    17
588
ef3d2efa822d Moved all the test and utility programs to a "utils" directory.
Ryan C. Gordon <icculus@icculus.org>
parents: 569
diff changeset
    18
INCLUDE_DIRECTORIES(.)
ef3d2efa822d Moved all the test and utility programs to a "utils" directory.
Ryan C. Gordon <icculus@icculus.org>
parents: 569
diff changeset
    19
569
117d6e606c4e Cleaned up CMakeLists.txt to work in the absence of external tools.
Ryan C. Gordon <icculus@icculus.org>
parents: 563
diff changeset
    20
FIND_PROGRAM(HG hg DOC "Path to hg command line app: http://www.selenic.com/mercurial/")
117d6e606c4e Cleaned up CMakeLists.txt to work in the absence of external tools.
Ryan C. Gordon <icculus@icculus.org>
parents: 563
diff changeset
    21
IF(NOT HG)
117d6e606c4e Cleaned up CMakeLists.txt to work in the absence of external tools.
Ryan C. Gordon <icculus@icculus.org>
parents: 563
diff changeset
    22
    MESSAGE(STATUS "Mercurial (hg) not found. You can go on, but version info will be wrong.")
117d6e606c4e Cleaned up CMakeLists.txt to work in the absence of external tools.
Ryan C. Gordon <icculus@icculus.org>
parents: 563
diff changeset
    23
    SET(MOJOSHADER_VERSION -1)
117d6e606c4e Cleaned up CMakeLists.txt to work in the absence of external tools.
Ryan C. Gordon <icculus@icculus.org>
parents: 563
diff changeset
    24
    SET(MOJOSHADER_CHANGESET "???")
117d6e606c4e Cleaned up CMakeLists.txt to work in the absence of external tools.
Ryan C. Gordon <icculus@icculus.org>
parents: 563
diff changeset
    25
ELSE(NOT HG)
117d6e606c4e Cleaned up CMakeLists.txt to work in the absence of external tools.
Ryan C. Gordon <icculus@icculus.org>
parents: 563
diff changeset
    26
    MARK_AS_ADVANCED(HG)
117d6e606c4e Cleaned up CMakeLists.txt to work in the absence of external tools.
Ryan C. Gordon <icculus@icculus.org>
parents: 563
diff changeset
    27
    EXECUTE_PROCESS(
117d6e606c4e Cleaned up CMakeLists.txt to work in the absence of external tools.
Ryan C. Gordon <icculus@icculus.org>
parents: 563
diff changeset
    28
        COMMAND hg tip --template {rev}
117d6e606c4e Cleaned up CMakeLists.txt to work in the absence of external tools.
Ryan C. Gordon <icculus@icculus.org>
parents: 563
diff changeset
    29
        WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
117d6e606c4e Cleaned up CMakeLists.txt to work in the absence of external tools.
Ryan C. Gordon <icculus@icculus.org>
parents: 563
diff changeset
    30
        RESULT_VARIABLE HGVERSION_RC
117d6e606c4e Cleaned up CMakeLists.txt to work in the absence of external tools.
Ryan C. Gordon <icculus@icculus.org>
parents: 563
diff changeset
    31
        OUTPUT_VARIABLE MOJOSHADER_VERSION
117d6e606c4e Cleaned up CMakeLists.txt to work in the absence of external tools.
Ryan C. Gordon <icculus@icculus.org>
parents: 563
diff changeset
    32
        ERROR_QUIET
117d6e606c4e Cleaned up CMakeLists.txt to work in the absence of external tools.
Ryan C. Gordon <icculus@icculus.org>
parents: 563
diff changeset
    33
        OUTPUT_STRIP_TRAILING_WHITESPACE
117d6e606c4e Cleaned up CMakeLists.txt to work in the absence of external tools.
Ryan C. Gordon <icculus@icculus.org>
parents: 563
diff changeset
    34
    )
117d6e606c4e Cleaned up CMakeLists.txt to work in the absence of external tools.
Ryan C. Gordon <icculus@icculus.org>
parents: 563
diff changeset
    35
    EXECUTE_PROCESS(
117d6e606c4e Cleaned up CMakeLists.txt to work in the absence of external tools.
Ryan C. Gordon <icculus@icculus.org>
parents: 563
diff changeset
    36
        COMMAND hg tip --template hg-{rev}:{node|short}
117d6e606c4e Cleaned up CMakeLists.txt to work in the absence of external tools.
Ryan C. Gordon <icculus@icculus.org>
parents: 563
diff changeset
    37
        WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
117d6e606c4e Cleaned up CMakeLists.txt to work in the absence of external tools.
Ryan C. Gordon <icculus@icculus.org>
parents: 563
diff changeset
    38
        RESULT_VARIABLE HGVERSION_RC
117d6e606c4e Cleaned up CMakeLists.txt to work in the absence of external tools.
Ryan C. Gordon <icculus@icculus.org>
parents: 563
diff changeset
    39
        OUTPUT_VARIABLE MOJOSHADER_CHANGESET
117d6e606c4e Cleaned up CMakeLists.txt to work in the absence of external tools.
Ryan C. Gordon <icculus@icculus.org>
parents: 563
diff changeset
    40
        ERROR_QUIET
117d6e606c4e Cleaned up CMakeLists.txt to work in the absence of external tools.
Ryan C. Gordon <icculus@icculus.org>
parents: 563
diff changeset
    41
        OUTPUT_STRIP_TRAILING_WHITESPACE
117d6e606c4e Cleaned up CMakeLists.txt to work in the absence of external tools.
Ryan C. Gordon <icculus@icculus.org>
parents: 563
diff changeset
    42
    )
117d6e606c4e Cleaned up CMakeLists.txt to work in the absence of external tools.
Ryan C. Gordon <icculus@icculus.org>
parents: 563
diff changeset
    43
ENDIF(NOT HG)
455
d99f47386d51 Generate MOJOSHADER_VERSION, etc.
Ryan C. Gordon <icculus@icculus.org>
parents: 423
diff changeset
    44
d99f47386d51 Generate MOJOSHADER_VERSION, etc.
Ryan C. Gordon <icculus@icculus.org>
parents: 423
diff changeset
    45
WRITE_FILE(
d99f47386d51 Generate MOJOSHADER_VERSION, etc.
Ryan C. Gordon <icculus@icculus.org>
parents: 423
diff changeset
    46
    "${CMAKE_CURRENT_SOURCE_DIR}/mojoshader_version.h"
d99f47386d51 Generate MOJOSHADER_VERSION, etc.
Ryan C. Gordon <icculus@icculus.org>
parents: 423
diff changeset
    47
    "/* This file was autogenerated. Do not edit! */\n"
d99f47386d51 Generate MOJOSHADER_VERSION, etc.
Ryan C. Gordon <icculus@icculus.org>
parents: 423
diff changeset
    48
    "#ifndef _INCL_MOJOSHADER_VERSION_H_\n"
d99f47386d51 Generate MOJOSHADER_VERSION, etc.
Ryan C. Gordon <icculus@icculus.org>
parents: 423
diff changeset
    49
    "#define _INCL_MOJOSHADER_VERSION_H_\n"
d99f47386d51 Generate MOJOSHADER_VERSION, etc.
Ryan C. Gordon <icculus@icculus.org>
parents: 423
diff changeset
    50
    "#define MOJOSHADER_VERSION ${MOJOSHADER_VERSION}\n"
d99f47386d51 Generate MOJOSHADER_VERSION, etc.
Ryan C. Gordon <icculus@icculus.org>
parents: 423
diff changeset
    51
    "#define MOJOSHADER_CHANGESET \"${MOJOSHADER_CHANGESET}\"\n"
d99f47386d51 Generate MOJOSHADER_VERSION, etc.
Ryan C. Gordon <icculus@icculus.org>
parents: 423
diff changeset
    52
    "#endif\n"
d99f47386d51 Generate MOJOSHADER_VERSION, etc.
Ryan C. Gordon <icculus@icculus.org>
parents: 423
diff changeset
    53
)
d99f47386d51 Generate MOJOSHADER_VERSION, etc.
Ryan C. Gordon <icculus@icculus.org>
parents: 423
diff changeset
    54
48
86dc2c772d26 [svn] Enabled -Wall, found some bugs.
icculus
parents: 35
diff changeset
    55
IF(CMAKE_COMPILER_IS_GNUCC)
86dc2c772d26 [svn] Enabled -Wall, found some bugs.
icculus
parents: 35
diff changeset
    56
    ADD_DEFINITIONS(-Wall -ggdb3)
86dc2c772d26 [svn] Enabled -Wall, found some bugs.
icculus
parents: 35
diff changeset
    57
ENDIF(CMAKE_COMPILER_IS_GNUCC)
86dc2c772d26 [svn] Enabled -Wall, found some bugs.
icculus
parents: 35
diff changeset
    58
52
305ddf21d660 [svn] Okay, done with memory profiling for now.
icculus
parents: 48
diff changeset
    59
# testparse uses this when I'm looking at memory usage patterns.
305ddf21d660 [svn] Okay, done with memory profiling for now.
icculus
parents: 48
diff changeset
    60
#ADD_DEFINITIONS(-DMOJOSHADER_DEBUG_MALLOC=1)
48
86dc2c772d26 [svn] Enabled -Wall, found some bugs.
icculus
parents: 35
diff changeset
    61
254
13184ff204b9 More Windows patches.
Ryan C. Gordon <icculus@icculus.org>
parents: 225
diff changeset
    62
IF(MSVC)
13184ff204b9 More Windows patches.
Ryan C. Gordon <icculus@icculus.org>
parents: 225
diff changeset
    63
    ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS=1)
13184ff204b9 More Windows patches.
Ryan C. Gordon <icculus@icculus.org>
parents: 225
diff changeset
    64
    ADD_DEFINITIONS(-TP)  # force .c files to compile as C++.
13184ff204b9 More Windows patches.
Ryan C. Gordon <icculus@icculus.org>
parents: 225
diff changeset
    65
ENDIF(MSVC)
13184ff204b9 More Windows patches.
Ryan C. Gordon <icculus@icculus.org>
parents: 225
diff changeset
    66
706
01a92f30b84f Added some basic compiler stub stuff, just to get this building at all.
Ryan C. Gordon <icculus@icculus.org>
parents: 705
diff changeset
    67
# We build lemon, then use it to generate parser C code.
1187
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
    68
IF(COMPILER_SUPPORT)
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
    69
    ADD_EXECUTABLE(lemon "misc/lemon.c")
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
    70
    GET_TARGET_PROPERTY(LEMON lemon LOCATION)
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
    71
    ADD_CUSTOM_COMMAND(
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
    72
        OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/mojoshader_parser_hlsl.h"
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
    73
        MAIN_DEPENDENCY "${CMAKE_CURRENT_SOURCE_DIR}/mojoshader_parser_hlsl.lemon"
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
    74
        DEPENDS lemon "${CMAKE_CURRENT_SOURCE_DIR}/misc/lempar.c"
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
    75
        COMMAND "${LEMON}"
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
    76
        ARGS -q "-T${CMAKE_CURRENT_SOURCE_DIR}/misc/lempar.c" "${CMAKE_CURRENT_SOURCE_DIR}/mojoshader_parser_hlsl.lemon"
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
    77
    )
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
    78
ENDIF(COMPILER_SUPPORT)
706
01a92f30b84f Added some basic compiler stub stuff, just to get this building at all.
Ryan C. Gordon <icculus@icculus.org>
parents: 705
diff changeset
    79
1150
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
    80
IF(APPLE)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
    81
    find_library(CARBON_FRAMEWORK Carbon)  # Stupid Gestalt.
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
    82
ENDIF(APPLE)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
    83
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
    84
IF(NOT PROFILE_D3D)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
    85
    ADD_DEFINITIONS(-DSUPPORT_PROFILE_D3D=0)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
    86
ENDIF(NOT PROFILE_D3D)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
    87
IF(NOT PROFILE_BYTECODE)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
    88
    ADD_DEFINITIONS(-DSUPPORT_PROFILE_BYTECODE=0)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
    89
ENDIF(NOT PROFILE_BYTECODE)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
    90
IF(NOT PROFILE_GLSL120)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
    91
    ADD_DEFINITIONS(-DSUPPORT_PROFILE_GLSL120=0)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
    92
ENDIF(NOT PROFILE_GLSL120)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
    93
IF(NOT PROFILE_GLSL)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
    94
    ADD_DEFINITIONS(-DSUPPORT_PROFILE_GLSL=0)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
    95
ENDIF(NOT PROFILE_GLSL)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
    96
IF(NOT PROFILE_ARB1)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
    97
    ADD_DEFINITIONS(-DSUPPORT_PROFILE_ARB1=0)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
    98
ENDIF(NOT PROFILE_ARB1)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
    99
IF(NOT PROFILE_ARB1_NV)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   100
    ADD_DEFINITIONS(-DSUPPORT_PROFILE_ARB1_NV=0)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   101
ENDIF(NOT PROFILE_ARB1_NV)
1172
55700e64bd8c Make Metal profile optional in the CMake project.
Ryan C. Gordon <icculus@icculus.org>
parents: 1166
diff changeset
   102
IF(NOT PROFILE_METAL)
55700e64bd8c Make Metal profile optional in the CMake project.
Ryan C. Gordon <icculus@icculus.org>
parents: 1166
diff changeset
   103
    ADD_DEFINITIONS(-DSUPPORT_PROFILE_METAL=0)
1187
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
   104
ENDIF(NOT PROFILE_METAL)
1150
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   105
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   106
IF(EFFECT_SUPPORT)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   107
    IF(UNIX)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   108
        SET(LIBM -lm)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   109
    ENDIF(UNIX)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   110
    ADD_DEFINITIONS(-DMOJOSHADER_EFFECT_SUPPORT)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   111
ENDIF(EFFECT_SUPPORT)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   112
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   113
IF(FLIP_VIEWPORT)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   114
    ADD_DEFINITIONS(-DMOJOSHADER_FLIP_RENDERTARGET)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   115
ENDIF(FLIP_VIEWPORT)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   116
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   117
IF(DEPTH_CLIPPING)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   118
    ADD_DEFINITIONS(-DMOJOSHADER_DEPTH_CLIPPING)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   119
ENDIF(DEPTH_CLIPPING)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   120
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   121
IF(XNA4_VERTEXTEXTURE)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   122
    ADD_DEFINITIONS(-DMOJOSHADER_XNA4_VERTEX_TEXTURES)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   123
ENDIF(XNA4_VERTEXTEXTURE)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   124
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   125
IF(BUILD_SHARED)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   126
    SET(LIBRARY_FORMAT SHARED)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   127
ELSE(BUILD_SHARED)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   128
    SET(LIBRARY_FORMAT STATIC)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   129
ENDIF(BUILD_SHARED)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   130
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   131
ADD_LIBRARY(mojoshader ${LIBRARY_FORMAT}
465
0a75f98f785b Initial work on assembler. Not even close to done.
Ryan C. Gordon <icculus@icculus.org>
parents: 455
diff changeset
   132
    mojoshader.c
732
e070fea1f8c7 Added mojoshader_common.c with first shot at generic hashtable.
Ryan C. Gordon <icculus@icculus.org>
parents: 714
diff changeset
   133
    mojoshader_common.c
465
0a75f98f785b Initial work on assembler. Not even close to done.
Ryan C. Gordon <icculus@icculus.org>
parents: 455
diff changeset
   134
    mojoshader_opengl.c
0a75f98f785b Initial work on assembler. Not even close to done.
Ryan C. Gordon <icculus@icculus.org>
parents: 455
diff changeset
   135
)
1187
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
   136
IF(EFFECT_SUPPORT)
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
   137
    TARGET_SOURCES(mojoshader PRIVATE
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
   138
        mojoshader_effects.c
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
   139
    )
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
   140
ENDIF(EFFECT_SUPPORT)
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
   141
IF(COMPILER_SUPPORT)
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
   142
    TARGET_SOURCES(mojoshader PRIVATE
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
   143
        mojoshader_compiler.c
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
   144
        mojoshader_preprocessor.c
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
   145
        mojoshader_lexer.c
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
   146
        mojoshader_assembler.c
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
   147
    )
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
   148
ENDIF(COMPILER_SUPPORT)
1150
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   149
IF(BUILD_SHARED)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   150
    TARGET_LINK_LIBRARIES(mojoshader ${LIBM} ${CARBON_FRAMEWORK})
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   151
ENDIF(BUILD_SHARED)
1036
8a3597b44ff7 First shot at preshader interpreter. Completely untested!
Ryan C. Gordon <icculus@icculus.org>
parents: 1019
diff changeset
   152
711
d547597e81de Cleaned up some CMake issues.
Ryan C. Gordon <icculus@icculus.org>
parents: 710
diff changeset
   153
SET_SOURCE_FILES_PROPERTIES(
d547597e81de Cleaned up some CMake issues.
Ryan C. Gordon <icculus@icculus.org>
parents: 710
diff changeset
   154
    mojoshader_compiler.c
714
e8ed66bfff18 Make parser generate a header, to avoid external project build confusion.
Ryan C. Gordon <icculus@icculus.org>
parents: 711
diff changeset
   155
    PROPERTIES OBJECT_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/mojoshader_parser_hlsl.h"
711
d547597e81de Cleaned up some CMake issues.
Ryan C. Gordon <icculus@icculus.org>
parents: 710
diff changeset
   156
)
d547597e81de Cleaned up some CMake issues.
Ryan C. Gordon <icculus@icculus.org>
parents: 710
diff changeset
   157
569
117d6e606c4e Cleaned up CMakeLists.txt to work in the absence of external tools.
Ryan C. Gordon <icculus@icculus.org>
parents: 563
diff changeset
   158
FIND_PROGRAM(RE2C re2c DOC "Path to re2c command line app: http://re2c.org/")
117d6e606c4e Cleaned up CMakeLists.txt to work in the absence of external tools.
Ryan C. Gordon <icculus@icculus.org>
parents: 563
diff changeset
   159
IF(NOT RE2C)
117d6e606c4e Cleaned up CMakeLists.txt to work in the absence of external tools.
Ryan C. Gordon <icculus@icculus.org>
parents: 563
diff changeset
   160
    MESSAGE(STATUS "re2c missing. You can go on, but can't rebuild the lexer.")
117d6e606c4e Cleaned up CMakeLists.txt to work in the absence of external tools.
Ryan C. Gordon <icculus@icculus.org>
parents: 563
diff changeset
   161
ELSE(NOT RE2C)
117d6e606c4e Cleaned up CMakeLists.txt to work in the absence of external tools.
Ryan C. Gordon <icculus@icculus.org>
parents: 563
diff changeset
   162
    MARK_AS_ADVANCED(RE2C)
117d6e606c4e Cleaned up CMakeLists.txt to work in the absence of external tools.
Ryan C. Gordon <icculus@icculus.org>
parents: 563
diff changeset
   163
    ADD_CUSTOM_COMMAND(
705
7ea12a852213 Throw some quotes around strings in CMakeLists.txt ...
Ryan C. Gordon <icculus@icculus.org>
parents: 669
diff changeset
   164
        OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/mojoshader_lexer.c"
569
117d6e606c4e Cleaned up CMakeLists.txt to work in the absence of external tools.
Ryan C. Gordon <icculus@icculus.org>
parents: 563
diff changeset
   165
        DEPENDS mojoshader_lexer.re
705
7ea12a852213 Throw some quotes around strings in CMakeLists.txt ...
Ryan C. Gordon <icculus@icculus.org>
parents: 669
diff changeset
   166
        COMMAND "${RE2C}"
7ea12a852213 Throw some quotes around strings in CMakeLists.txt ...
Ryan C. Gordon <icculus@icculus.org>
parents: 669
diff changeset
   167
        ARGS -is --no-generation-date -o "${CMAKE_CURRENT_SOURCE_DIR}/mojoshader_lexer.c" "${CMAKE_CURRENT_SOURCE_DIR}/mojoshader_lexer.re"
569
117d6e606c4e Cleaned up CMakeLists.txt to work in the absence of external tools.
Ryan C. Gordon <icculus@icculus.org>
parents: 563
diff changeset
   168
    )
117d6e606c4e Cleaned up CMakeLists.txt to work in the absence of external tools.
Ryan C. Gordon <icculus@icculus.org>
parents: 563
diff changeset
   169
ENDIF(NOT RE2C)
563
d22551643fcb Added re2c step to build.
Ryan C. Gordon <icculus@icculus.org>
parents: 555
diff changeset
   170
1134
be31bd0ee0a2 Moved to SDL2.
Ryan C. Gordon <icculus@icculus.org>
parents: 1036
diff changeset
   171
find_path(SDL2_INCLUDE_DIR SDL.h PATH_SUFFIXES include/SDL2)
be31bd0ee0a2 Moved to SDL2.
Ryan C. Gordon <icculus@icculus.org>
parents: 1036
diff changeset
   172
find_library(SDL2 NAMES SDL2 PATH_SUFFIXES lib)
be31bd0ee0a2 Moved to SDL2.
Ryan C. Gordon <icculus@icculus.org>
parents: 1036
diff changeset
   173
IF(SDL2)
be31bd0ee0a2 Moved to SDL2.
Ryan C. Gordon <icculus@icculus.org>
parents: 1036
diff changeset
   174
    INCLUDE_DIRECTORIES(${SDL2_INCLUDE_DIR})
588
ef3d2efa822d Moved all the test and utility programs to a "utils" directory.
Ryan C. Gordon <icculus@icculus.org>
parents: 569
diff changeset
   175
    ADD_EXECUTABLE(glcaps utils/glcaps.c)
1134
be31bd0ee0a2 Moved to SDL2.
Ryan C. Gordon <icculus@icculus.org>
parents: 1036
diff changeset
   176
    TARGET_LINK_LIBRARIES(glcaps ${SDL2} ${LIBM} ${CARBON_FRAMEWORK})
588
ef3d2efa822d Moved all the test and utility programs to a "utils" directory.
Ryan C. Gordon <icculus@icculus.org>
parents: 569
diff changeset
   177
    ADD_EXECUTABLE(bestprofile utils/bestprofile.c)
1134
be31bd0ee0a2 Moved to SDL2.
Ryan C. Gordon <icculus@icculus.org>
parents: 1036
diff changeset
   178
    TARGET_LINK_LIBRARIES(bestprofile mojoshader ${SDL2} ${LIBM} ${CARBON_FRAMEWORK})
588
ef3d2efa822d Moved all the test and utility programs to a "utils" directory.
Ryan C. Gordon <icculus@icculus.org>
parents: 569
diff changeset
   179
    ADD_EXECUTABLE(availableprofiles utils/availableprofiles.c)
1134
be31bd0ee0a2 Moved to SDL2.
Ryan C. Gordon <icculus@icculus.org>
parents: 1036
diff changeset
   180
    TARGET_LINK_LIBRARIES(availableprofiles mojoshader ${SDL2} ${LIBM} ${CARBON_FRAMEWORK})
be31bd0ee0a2 Moved to SDL2.
Ryan C. Gordon <icculus@icculus.org>
parents: 1036
diff changeset
   181
ENDIF(SDL2)
169
7e9d90724cf8 Push parsed shaders through GLSL compiler to see what breaks.
Ryan C. Gordon <icculus@icculus.org>
parents: 153
diff changeset
   182
1187
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
   183
IF(COMPILER_SUPPORT)
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
   184
    ADD_EXECUTABLE(finderrors utils/finderrors.c)
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
   185
    TARGET_LINK_LIBRARIES(finderrors mojoshader ${SDL2} ${LIBM} ${CARBON_FRAMEWORK})
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
   186
    IF(SDL2)
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
   187
        SET_SOURCE_FILES_PROPERTIES(
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
   188
            utils/finderrors.c
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
   189
            PROPERTIES COMPILE_FLAGS "-DFINDERRORS_COMPILE_SHADERS=1"
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
   190
        )
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
   191
    ENDIF(SDL2)
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
   192
ENDIF(COMPILER_SUPPORT)
711
d547597e81de Cleaned up some CMake issues.
Ryan C. Gordon <icculus@icculus.org>
parents: 710
diff changeset
   193
588
ef3d2efa822d Moved all the test and utility programs to a "utils" directory.
Ryan C. Gordon <icculus@icculus.org>
parents: 569
diff changeset
   194
ADD_EXECUTABLE(testparse utils/testparse.c)
1134
be31bd0ee0a2 Moved to SDL2.
Ryan C. Gordon <icculus@icculus.org>
parents: 1036
diff changeset
   195
TARGET_LINK_LIBRARIES(testparse mojoshader ${LIBM} ${CARBON_FRAMEWORK})
588
ef3d2efa822d Moved all the test and utility programs to a "utils" directory.
Ryan C. Gordon <icculus@icculus.org>
parents: 569
diff changeset
   196
ADD_EXECUTABLE(testoutput utils/testoutput.c)
1134
be31bd0ee0a2 Moved to SDL2.
Ryan C. Gordon <icculus@icculus.org>
parents: 1036
diff changeset
   197
TARGET_LINK_LIBRARIES(testoutput mojoshader ${LIBM} ${CARBON_FRAMEWORK})
1187
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
   198
IF(COMPILER_SUPPORT)
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
   199
    ADD_EXECUTABLE(mojoshader-compiler utils/mojoshader-compiler.c)
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
   200
    TARGET_LINK_LIBRARIES(mojoshader-compiler mojoshader ${LIBM} ${CARBON_FRAMEWORK})
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
   201
ENDIF(COMPILER_SUPPORT)
1
99ac16070d07 [svn] Initial add.
icculus
parents:
diff changeset
   202
737
d028bf9d8096 Wired up unit tests to CMakefile.
Ryan C. Gordon <icculus@icculus.org>
parents: 732
diff changeset
   203
# Unit tests...
1187
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
   204
IF(COMPILER_SUPPORT)
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
   205
    ADD_CUSTOM_TARGET(
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
   206
        test
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
   207
        COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/unit_tests/run_tests.pl"
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
   208
        WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
   209
        DEPENDS mojoshader-compiler
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
   210
        COMMENT "Running unit tests..."
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
   211
        VERBATIM
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
   212
    )
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
   213
ENDIF(COMPILER_SUPPORT)
737
d028bf9d8096 Wired up unit tests to CMakefile.
Ryan C. Gordon <icculus@icculus.org>
parents: 732
diff changeset
   214
1
99ac16070d07 [svn] Initial add.
icculus
parents:
diff changeset
   215
# End of CMakeLists.txt ...
99ac16070d07 [svn] Initial add.
icculus
parents:
diff changeset
   216