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