CMakeLists.txt
author Caleb Cornett <caleb.cornett@outlook.com>
Sun, 12 Jan 2020 11:39:49 -0500
changeset 1229 3ecd29a50d9d
parent 1225 50b8dd7e0b1a
child 1230 600d972bbd57
permissions -rw-r--r--
Metal Effect support!
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)
1194
3948d7f5b4ff Add PROFILE_GLSLES CMake option
Caleb Cornett <caleb.cornett@outlook.com>
parents: 1192
diff changeset
     8
OPTION(PROFILE_GLSLES "Build MojoShader with support for the GLSLES profile" ON)
1150
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
     9
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
    10
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
    11
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
    12
OPTION(PROFILE_METAL "Build MojoShader with support for the Metal profile" ON)
1224
21cd84f1aa0a Add support for emitting SPIR-V shaders.
Martin Krošlák <kroslakma@gmail.com>
parents: 1202
diff changeset
    13
OPTION(PROFILE_SPIRV "Build MojoShader with support for the SPIR-V profile" ON)
1225
50b8dd7e0b1a Add GLSPIRV profile, to allow for both GL- and VK-friendly SPIR-V output
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1224
diff changeset
    14
OPTION(PROFILE_GLSPIRV "Build MojoShader with support for the ARB_gl_spirv profile" ON)
1166
ba0794ea4172 Default to building with Effects framework support enabled.
Ryan C. Gordon <icculus@icculus.org>
parents: 1150
diff changeset
    15
OPTION(EFFECT_SUPPORT "Build MojoShader with support for Effect framework files" ON)
1202
3e07483a681c Disable COMPILER_SUPPORT by default
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1199
diff changeset
    16
OPTION(COMPILER_SUPPORT "Build MojoShader with support for HLSL source files" OFF)
1150
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
    17
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
    18
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
    19
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
    20
588
ef3d2efa822d Moved all the test and utility programs to a "utils" directory.
Ryan C. Gordon <icculus@icculus.org>
parents: 569
diff changeset
    21
INCLUDE_DIRECTORIES(.)
ef3d2efa822d Moved all the test and utility programs to a "utils" directory.
Ryan C. Gordon <icculus@icculus.org>
parents: 569
diff changeset
    22
1191
f2ecd5032ffe CMake: Make Hg dependency optional (thanks Chad!)
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1187
diff changeset
    23
# If Mercurial is installed and we are in a mercurial repository, include the rev# and changeset as version information.
569
117d6e606c4e Cleaned up CMakeLists.txt to work in the absence of external tools.
Ryan C. Gordon <icculus@icculus.org>
parents: 563
diff changeset
    24
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
    25
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
    26
    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
    27
    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
    28
    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
    29
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
    30
    MARK_AS_ADVANCED(HG)
1191
f2ecd5032ffe CMake: Make Hg dependency optional (thanks Chad!)
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1187
diff changeset
    31
f2ecd5032ffe CMake: Make Hg dependency optional (thanks Chad!)
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1187
diff changeset
    32
    # See if we are in an hg repository.
569
117d6e606c4e Cleaned up CMakeLists.txt to work in the absence of external tools.
Ryan C. Gordon <icculus@icculus.org>
parents: 563
diff changeset
    33
    EXECUTE_PROCESS(
1191
f2ecd5032ffe CMake: Make Hg dependency optional (thanks Chad!)
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1187
diff changeset
    34
        COMMAND hg root
569
117d6e606c4e Cleaned up CMakeLists.txt to work in the absence of external tools.
Ryan C. Gordon <icculus@icculus.org>
parents: 563
diff changeset
    35
        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
    36
        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
    37
        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
    38
    )
1191
f2ecd5032ffe CMake: Make Hg dependency optional (thanks Chad!)
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1187
diff changeset
    39
    IF(NOT HGVERSION_RC EQUAL 0)
f2ecd5032ffe CMake: Make Hg dependency optional (thanks Chad!)
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1187
diff changeset
    40
        MESSAGE(STATUS "Mercurial (hg) repository not found. You can go on, but version info will be wrong.")
f2ecd5032ffe CMake: Make Hg dependency optional (thanks Chad!)
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1187
diff changeset
    41
        SET(MOJOSHADER_VERSION -1)
f2ecd5032ffe CMake: Make Hg dependency optional (thanks Chad!)
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1187
diff changeset
    42
        SET(MOJOSHADER_CHANGESET "???")
f2ecd5032ffe CMake: Make Hg dependency optional (thanks Chad!)
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1187
diff changeset
    43
    ELSE(NOT HGVERSION_RC EQUAL 0)
f2ecd5032ffe CMake: Make Hg dependency optional (thanks Chad!)
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1187
diff changeset
    44
        # Query the rev and changeset.
f2ecd5032ffe CMake: Make Hg dependency optional (thanks Chad!)
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1187
diff changeset
    45
        EXECUTE_PROCESS(
f2ecd5032ffe CMake: Make Hg dependency optional (thanks Chad!)
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1187
diff changeset
    46
            COMMAND hg tip --template {rev}
f2ecd5032ffe CMake: Make Hg dependency optional (thanks Chad!)
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1187
diff changeset
    47
            WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
f2ecd5032ffe CMake: Make Hg dependency optional (thanks Chad!)
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1187
diff changeset
    48
            RESULT_VARIABLE HGVERSION_RC
f2ecd5032ffe CMake: Make Hg dependency optional (thanks Chad!)
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1187
diff changeset
    49
            OUTPUT_VARIABLE MOJOSHADER_VERSION
f2ecd5032ffe CMake: Make Hg dependency optional (thanks Chad!)
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1187
diff changeset
    50
            ERROR_QUIET
f2ecd5032ffe CMake: Make Hg dependency optional (thanks Chad!)
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1187
diff changeset
    51
            OUTPUT_STRIP_TRAILING_WHITESPACE
f2ecd5032ffe CMake: Make Hg dependency optional (thanks Chad!)
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1187
diff changeset
    52
        )
f2ecd5032ffe CMake: Make Hg dependency optional (thanks Chad!)
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1187
diff changeset
    53
        EXECUTE_PROCESS(
f2ecd5032ffe CMake: Make Hg dependency optional (thanks Chad!)
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1187
diff changeset
    54
            COMMAND hg tip --template hg-{rev}:{node|short}
f2ecd5032ffe CMake: Make Hg dependency optional (thanks Chad!)
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1187
diff changeset
    55
            WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
f2ecd5032ffe CMake: Make Hg dependency optional (thanks Chad!)
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1187
diff changeset
    56
            RESULT_VARIABLE HGVERSION_RC
f2ecd5032ffe CMake: Make Hg dependency optional (thanks Chad!)
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1187
diff changeset
    57
            OUTPUT_VARIABLE MOJOSHADER_CHANGESET
f2ecd5032ffe CMake: Make Hg dependency optional (thanks Chad!)
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1187
diff changeset
    58
            ERROR_QUIET
f2ecd5032ffe CMake: Make Hg dependency optional (thanks Chad!)
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1187
diff changeset
    59
            OUTPUT_STRIP_TRAILING_WHITESPACE
f2ecd5032ffe CMake: Make Hg dependency optional (thanks Chad!)
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1187
diff changeset
    60
        )
f2ecd5032ffe CMake: Make Hg dependency optional (thanks Chad!)
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1187
diff changeset
    61
    ENDIF(NOT HGVERSION_RC EQUAL 0)
569
117d6e606c4e Cleaned up CMakeLists.txt to work in the absence of external tools.
Ryan C. Gordon <icculus@icculus.org>
parents: 563
diff changeset
    62
ENDIF(NOT HG)
455
d99f47386d51 Generate MOJOSHADER_VERSION, etc.
Ryan C. Gordon <icculus@icculus.org>
parents: 423
diff changeset
    63
d99f47386d51 Generate MOJOSHADER_VERSION, etc.
Ryan C. Gordon <icculus@icculus.org>
parents: 423
diff changeset
    64
WRITE_FILE(
d99f47386d51 Generate MOJOSHADER_VERSION, etc.
Ryan C. Gordon <icculus@icculus.org>
parents: 423
diff changeset
    65
    "${CMAKE_CURRENT_SOURCE_DIR}/mojoshader_version.h"
d99f47386d51 Generate MOJOSHADER_VERSION, etc.
Ryan C. Gordon <icculus@icculus.org>
parents: 423
diff changeset
    66
    "/* This file was autogenerated. Do not edit! */\n"
d99f47386d51 Generate MOJOSHADER_VERSION, etc.
Ryan C. Gordon <icculus@icculus.org>
parents: 423
diff changeset
    67
    "#ifndef _INCL_MOJOSHADER_VERSION_H_\n"
d99f47386d51 Generate MOJOSHADER_VERSION, etc.
Ryan C. Gordon <icculus@icculus.org>
parents: 423
diff changeset
    68
    "#define _INCL_MOJOSHADER_VERSION_H_\n"
d99f47386d51 Generate MOJOSHADER_VERSION, etc.
Ryan C. Gordon <icculus@icculus.org>
parents: 423
diff changeset
    69
    "#define MOJOSHADER_VERSION ${MOJOSHADER_VERSION}\n"
d99f47386d51 Generate MOJOSHADER_VERSION, etc.
Ryan C. Gordon <icculus@icculus.org>
parents: 423
diff changeset
    70
    "#define MOJOSHADER_CHANGESET \"${MOJOSHADER_CHANGESET}\"\n"
d99f47386d51 Generate MOJOSHADER_VERSION, etc.
Ryan C. Gordon <icculus@icculus.org>
parents: 423
diff changeset
    71
    "#endif\n"
d99f47386d51 Generate MOJOSHADER_VERSION, etc.
Ryan C. Gordon <icculus@icculus.org>
parents: 423
diff changeset
    72
)
d99f47386d51 Generate MOJOSHADER_VERSION, etc.
Ryan C. Gordon <icculus@icculus.org>
parents: 423
diff changeset
    73
48
86dc2c772d26 [svn] Enabled -Wall, found some bugs.
icculus
parents: 35
diff changeset
    74
IF(CMAKE_COMPILER_IS_GNUCC)
86dc2c772d26 [svn] Enabled -Wall, found some bugs.
icculus
parents: 35
diff changeset
    75
    ADD_DEFINITIONS(-Wall -ggdb3)
86dc2c772d26 [svn] Enabled -Wall, found some bugs.
icculus
parents: 35
diff changeset
    76
ENDIF(CMAKE_COMPILER_IS_GNUCC)
86dc2c772d26 [svn] Enabled -Wall, found some bugs.
icculus
parents: 35
diff changeset
    77
52
305ddf21d660 [svn] Okay, done with memory profiling for now.
icculus
parents: 48
diff changeset
    78
# 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
    79
#ADD_DEFINITIONS(-DMOJOSHADER_DEBUG_MALLOC=1)
48
86dc2c772d26 [svn] Enabled -Wall, found some bugs.
icculus
parents: 35
diff changeset
    80
254
13184ff204b9 More Windows patches.
Ryan C. Gordon <icculus@icculus.org>
parents: 225
diff changeset
    81
IF(MSVC)
13184ff204b9 More Windows patches.
Ryan C. Gordon <icculus@icculus.org>
parents: 225
diff changeset
    82
    ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS=1)
13184ff204b9 More Windows patches.
Ryan C. Gordon <icculus@icculus.org>
parents: 225
diff changeset
    83
    ADD_DEFINITIONS(-TP)  # force .c files to compile as C++.
13184ff204b9 More Windows patches.
Ryan C. Gordon <icculus@icculus.org>
parents: 225
diff changeset
    84
ENDIF(MSVC)
13184ff204b9 More Windows patches.
Ryan C. Gordon <icculus@icculus.org>
parents: 225
diff changeset
    85
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
    86
# 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
    87
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
    88
    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
    89
    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
    90
    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
    91
        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
    92
        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
    93
        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
    94
        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
    95
        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
    96
    )
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
    97
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
    98
1150
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
    99
IF(APPLE)
1192
706e4d246ca1 iOS support (thanks Caleb!)
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1191
diff changeset
   100
    IF(NOT IOS)
706e4d246ca1 iOS support (thanks Caleb!)
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1191
diff changeset
   101
        find_library(CARBON_FRAMEWORK Carbon)  # Stupid Gestalt.
706e4d246ca1 iOS support (thanks Caleb!)
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1191
diff changeset
   102
    ENDIF(NOT IOS)
1150
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   103
ENDIF(APPLE)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   104
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   105
IF(NOT PROFILE_D3D)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   106
    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
   107
ENDIF(NOT PROFILE_D3D)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   108
IF(NOT PROFILE_BYTECODE)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   109
    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
   110
ENDIF(NOT PROFILE_BYTECODE)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   111
IF(NOT PROFILE_GLSL120)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   112
    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
   113
ENDIF(NOT PROFILE_GLSL120)
1194
3948d7f5b4ff Add PROFILE_GLSLES CMake option
Caleb Cornett <caleb.cornett@outlook.com>
parents: 1192
diff changeset
   114
IF(NOT PROFILE_GLSLES)
3948d7f5b4ff Add PROFILE_GLSLES CMake option
Caleb Cornett <caleb.cornett@outlook.com>
parents: 1192
diff changeset
   115
    ADD_DEFINITIONS(-DSUPPORT_PROFILE_GLSLES=0)
3948d7f5b4ff Add PROFILE_GLSLES CMake option
Caleb Cornett <caleb.cornett@outlook.com>
parents: 1192
diff changeset
   116
ENDIF(NOT PROFILE_GLSLES)
1150
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   117
IF(NOT PROFILE_GLSL)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   118
    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
   119
ENDIF(NOT PROFILE_GLSL)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   120
IF(NOT PROFILE_ARB1)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   121
    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
   122
ENDIF(NOT PROFILE_ARB1)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   123
IF(NOT PROFILE_ARB1_NV)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   124
    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
   125
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
   126
IF(NOT PROFILE_METAL)
55700e64bd8c Make Metal profile optional in the CMake project.
Ryan C. Gordon <icculus@icculus.org>
parents: 1166
diff changeset
   127
    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
   128
ENDIF(NOT PROFILE_METAL)
1224
21cd84f1aa0a Add support for emitting SPIR-V shaders.
Martin Krošlák <kroslakma@gmail.com>
parents: 1202
diff changeset
   129
IF(NOT PROFILE_SPIRV)
21cd84f1aa0a Add support for emitting SPIR-V shaders.
Martin Krošlák <kroslakma@gmail.com>
parents: 1202
diff changeset
   130
    ADD_DEFINITIONS(-DSUPPORT_PROFILE_SPIRV=0)
21cd84f1aa0a Add support for emitting SPIR-V shaders.
Martin Krošlák <kroslakma@gmail.com>
parents: 1202
diff changeset
   131
ENDIF(NOT PROFILE_SPIRV)
1225
50b8dd7e0b1a Add GLSPIRV profile, to allow for both GL- and VK-friendly SPIR-V output
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1224
diff changeset
   132
IF(NOT PROFILE_GLSPIRV)
50b8dd7e0b1a Add GLSPIRV profile, to allow for both GL- and VK-friendly SPIR-V output
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1224
diff changeset
   133
    ADD_DEFINITIONS(-DSUPPORT_PROFILE_GLSPIRV=0)
50b8dd7e0b1a Add GLSPIRV profile, to allow for both GL- and VK-friendly SPIR-V output
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1224
diff changeset
   134
ENDIF(NOT PROFILE_GLSPIRV)
1150
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   135
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   136
IF(EFFECT_SUPPORT)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   137
    IF(UNIX)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   138
        SET(LIBM -lm)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   139
    ENDIF(UNIX)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   140
    ADD_DEFINITIONS(-DMOJOSHADER_EFFECT_SUPPORT)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   141
ENDIF(EFFECT_SUPPORT)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   142
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   143
IF(FLIP_VIEWPORT)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   144
    ADD_DEFINITIONS(-DMOJOSHADER_FLIP_RENDERTARGET)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   145
ENDIF(FLIP_VIEWPORT)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   146
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   147
IF(DEPTH_CLIPPING)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   148
    ADD_DEFINITIONS(-DMOJOSHADER_DEPTH_CLIPPING)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   149
ENDIF(DEPTH_CLIPPING)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   150
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   151
IF(XNA4_VERTEXTEXTURE)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   152
    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
   153
ENDIF(XNA4_VERTEXTEXTURE)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   154
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   155
IF(BUILD_SHARED)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   156
    SET(LIBRARY_FORMAT SHARED)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   157
ELSE(BUILD_SHARED)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   158
    SET(LIBRARY_FORMAT STATIC)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   159
ENDIF(BUILD_SHARED)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   160
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   161
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
   162
    mojoshader.c
732
e070fea1f8c7 Added mojoshader_common.c with first shot at generic hashtable.
Ryan C. Gordon <icculus@icculus.org>
parents: 714
diff changeset
   163
    mojoshader_common.c
465
0a75f98f785b Initial work on assembler. Not even close to done.
Ryan C. Gordon <icculus@icculus.org>
parents: 455
diff changeset
   164
    mojoshader_opengl.c
1229
3ecd29a50d9d Metal Effect support!
Caleb Cornett <caleb.cornett@outlook.com>
parents: 1225
diff changeset
   165
    mojoshader_metal.c
1199
b8ece252a201 Reorganize profiles into their own files
Caleb Cornett <caleb.cornett@outlook.com>
parents: 1194
diff changeset
   166
    profiles/mojoshader_profile_arb1.c
b8ece252a201 Reorganize profiles into their own files
Caleb Cornett <caleb.cornett@outlook.com>
parents: 1194
diff changeset
   167
    profiles/mojoshader_profile_bytecode.c
b8ece252a201 Reorganize profiles into their own files
Caleb Cornett <caleb.cornett@outlook.com>
parents: 1194
diff changeset
   168
    profiles/mojoshader_profile_d3d.c
b8ece252a201 Reorganize profiles into their own files
Caleb Cornett <caleb.cornett@outlook.com>
parents: 1194
diff changeset
   169
    profiles/mojoshader_profile_glsl.c
b8ece252a201 Reorganize profiles into their own files
Caleb Cornett <caleb.cornett@outlook.com>
parents: 1194
diff changeset
   170
    profiles/mojoshader_profile_metal.c
1224
21cd84f1aa0a Add support for emitting SPIR-V shaders.
Martin Krošlák <kroslakma@gmail.com>
parents: 1202
diff changeset
   171
    profiles/mojoshader_profile_spirv.c
1199
b8ece252a201 Reorganize profiles into their own files
Caleb Cornett <caleb.cornett@outlook.com>
parents: 1194
diff changeset
   172
    profiles/mojoshader_profile_common.c
465
0a75f98f785b Initial work on assembler. Not even close to done.
Ryan C. Gordon <icculus@icculus.org>
parents: 455
diff changeset
   173
)
1187
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
   174
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
   175
    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
   176
        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
   177
    )
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
   178
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
   179
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
   180
    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
   181
        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
   182
        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
   183
        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
   184
        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
   185
    )
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
   186
ENDIF(COMPILER_SUPPORT)
1150
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   187
IF(BUILD_SHARED)
02c0f0afb39a - Add ability to build MojoShader as a shared library
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1134
diff changeset
   188
    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
   189
ENDIF(BUILD_SHARED)
1036
8a3597b44ff7 First shot at preshader interpreter. Completely untested!
Ryan C. Gordon <icculus@icculus.org>
parents: 1019
diff changeset
   190
711
d547597e81de Cleaned up some CMake issues.
Ryan C. Gordon <icculus@icculus.org>
parents: 710
diff changeset
   191
SET_SOURCE_FILES_PROPERTIES(
d547597e81de Cleaned up some CMake issues.
Ryan C. Gordon <icculus@icculus.org>
parents: 710
diff changeset
   192
    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
   193
    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
   194
)
d547597e81de Cleaned up some CMake issues.
Ryan C. Gordon <icculus@icculus.org>
parents: 710
diff changeset
   195
569
117d6e606c4e Cleaned up CMakeLists.txt to work in the absence of external tools.
Ryan C. Gordon <icculus@icculus.org>
parents: 563
diff changeset
   196
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
   197
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
   198
    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
   199
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
   200
    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
   201
    ADD_CUSTOM_COMMAND(
705
7ea12a852213 Throw some quotes around strings in CMakeLists.txt ...
Ryan C. Gordon <icculus@icculus.org>
parents: 669
diff changeset
   202
        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
   203
        DEPENDS mojoshader_lexer.re
705
7ea12a852213 Throw some quotes around strings in CMakeLists.txt ...
Ryan C. Gordon <icculus@icculus.org>
parents: 669
diff changeset
   204
        COMMAND "${RE2C}"
7ea12a852213 Throw some quotes around strings in CMakeLists.txt ...
Ryan C. Gordon <icculus@icculus.org>
parents: 669
diff changeset
   205
        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
   206
    )
117d6e606c4e Cleaned up CMakeLists.txt to work in the absence of external tools.
Ryan C. Gordon <icculus@icculus.org>
parents: 563
diff changeset
   207
ENDIF(NOT RE2C)
563
d22551643fcb Added re2c step to build.
Ryan C. Gordon <icculus@icculus.org>
parents: 555
diff changeset
   208
1134
be31bd0ee0a2 Moved to SDL2.
Ryan C. Gordon <icculus@icculus.org>
parents: 1036
diff changeset
   209
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
   210
find_library(SDL2 NAMES SDL2 PATH_SUFFIXES lib)
be31bd0ee0a2 Moved to SDL2.
Ryan C. Gordon <icculus@icculus.org>
parents: 1036
diff changeset
   211
IF(SDL2)
be31bd0ee0a2 Moved to SDL2.
Ryan C. Gordon <icculus@icculus.org>
parents: 1036
diff changeset
   212
    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
   213
    ADD_EXECUTABLE(glcaps utils/glcaps.c)
1134
be31bd0ee0a2 Moved to SDL2.
Ryan C. Gordon <icculus@icculus.org>
parents: 1036
diff changeset
   214
    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
   215
    ADD_EXECUTABLE(bestprofile utils/bestprofile.c)
1134
be31bd0ee0a2 Moved to SDL2.
Ryan C. Gordon <icculus@icculus.org>
parents: 1036
diff changeset
   216
    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
   217
    ADD_EXECUTABLE(availableprofiles utils/availableprofiles.c)
1134
be31bd0ee0a2 Moved to SDL2.
Ryan C. Gordon <icculus@icculus.org>
parents: 1036
diff changeset
   218
    TARGET_LINK_LIBRARIES(availableprofiles mojoshader ${SDL2} ${LIBM} ${CARBON_FRAMEWORK})
be31bd0ee0a2 Moved to SDL2.
Ryan C. Gordon <icculus@icculus.org>
parents: 1036
diff changeset
   219
ENDIF(SDL2)
169
7e9d90724cf8 Push parsed shaders through GLSL compiler to see what breaks.
Ryan C. Gordon <icculus@icculus.org>
parents: 153
diff changeset
   220
1187
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
   221
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
   222
    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
   223
    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
   224
    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
   225
        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
   226
            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
   227
            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
   228
        )
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
   229
    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
   230
ENDIF(COMPILER_SUPPORT)
711
d547597e81de Cleaned up some CMake issues.
Ryan C. Gordon <icculus@icculus.org>
parents: 710
diff changeset
   231
1224
21cd84f1aa0a Add support for emitting SPIR-V shaders.
Martin Krošlák <kroslakma@gmail.com>
parents: 1202
diff changeset
   232
FIND_PATH(SPIRV_TOOLS_INCLUDE_DIR "spirv-tools/libspirv.h" PATH_SUFFIXES "include")
21cd84f1aa0a Add support for emitting SPIR-V shaders.
Martin Krošlák <kroslakma@gmail.com>
parents: 1202
diff changeset
   233
FIND_LIBRARY(SPIRV_TOOLS_LIBRARY NAMES SPIRV-Tools-shared)
21cd84f1aa0a Add support for emitting SPIR-V shaders.
Martin Krošlák <kroslakma@gmail.com>
parents: 1202
diff changeset
   234
IF(SPIRV_TOOLS_INCLUDE_DIR AND SPIRV_TOOLS_LIBRARY)
21cd84f1aa0a Add support for emitting SPIR-V shaders.
Martin Krošlák <kroslakma@gmail.com>
parents: 1202
diff changeset
   235
    INCLUDE_DIRECTORIES(${SPIRV_TOOLS_INCLUDE_DIR})
21cd84f1aa0a Add support for emitting SPIR-V shaders.
Martin Krošlák <kroslakma@gmail.com>
parents: 1202
diff changeset
   236
    ADD_DEFINITIONS(-DMOJOSHADER_HAS_SPIRV_TOOLS)
21cd84f1aa0a Add support for emitting SPIR-V shaders.
Martin Krošlák <kroslakma@gmail.com>
parents: 1202
diff changeset
   237
ENDIF(SPIRV_TOOLS_INCLUDE_DIR AND SPIRV_TOOLS_LIBRARY)
21cd84f1aa0a Add support for emitting SPIR-V shaders.
Martin Krošlák <kroslakma@gmail.com>
parents: 1202
diff changeset
   238
588
ef3d2efa822d Moved all the test and utility programs to a "utils" directory.
Ryan C. Gordon <icculus@icculus.org>
parents: 569
diff changeset
   239
ADD_EXECUTABLE(testparse utils/testparse.c)
1134
be31bd0ee0a2 Moved to SDL2.
Ryan C. Gordon <icculus@icculus.org>
parents: 1036
diff changeset
   240
TARGET_LINK_LIBRARIES(testparse mojoshader ${LIBM} ${CARBON_FRAMEWORK})
1224
21cd84f1aa0a Add support for emitting SPIR-V shaders.
Martin Krošlák <kroslakma@gmail.com>
parents: 1202
diff changeset
   241
IF(SPIRV_TOOLS_INCLUDE_DIR AND SPIRV_TOOLS_LIBRARY)
21cd84f1aa0a Add support for emitting SPIR-V shaders.
Martin Krošlák <kroslakma@gmail.com>
parents: 1202
diff changeset
   242
    TARGET_LINK_LIBRARIES(testparse ${SPIRV_TOOLS_LIBRARY})
21cd84f1aa0a Add support for emitting SPIR-V shaders.
Martin Krošlák <kroslakma@gmail.com>
parents: 1202
diff changeset
   243
ENDIF(SPIRV_TOOLS_INCLUDE_DIR AND SPIRV_TOOLS_LIBRARY)
588
ef3d2efa822d Moved all the test and utility programs to a "utils" directory.
Ryan C. Gordon <icculus@icculus.org>
parents: 569
diff changeset
   244
ADD_EXECUTABLE(testoutput utils/testoutput.c)
1134
be31bd0ee0a2 Moved to SDL2.
Ryan C. Gordon <icculus@icculus.org>
parents: 1036
diff changeset
   245
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
   246
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
   247
    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
   248
    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
   249
ENDIF(COMPILER_SUPPORT)
1
99ac16070d07 [svn] Initial add.
icculus
parents:
diff changeset
   250
737
d028bf9d8096 Wired up unit tests to CMakefile.
Ryan C. Gordon <icculus@icculus.org>
parents: 732
diff changeset
   251
# 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
   252
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
   253
    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
   254
        test
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
   255
        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
   256
        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
   257
        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
   258
        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
   259
        VERBATIM
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
   260
    )
0687a8d78a54 Add COMPILER_SUPPORT CMake flag, do not build effect/compiler files if disabled
Ethan Lee <flibitijibibo@flibitijibibo.com>
parents: 1172
diff changeset
   261
ENDIF(COMPILER_SUPPORT)
737
d028bf9d8096 Wired up unit tests to CMakefile.
Ryan C. Gordon <icculus@icculus.org>
parents: 732
diff changeset
   262
1
99ac16070d07 [svn] Initial add.
icculus
parents:
diff changeset
   263
# End of CMakeLists.txt ...
99ac16070d07 [svn] Initial add.
icculus
parents:
diff changeset
   264