diff options
| author | Steven Fuller <relnev@icculus.org> | 2017-05-05 12:00:00 +0200 |
|---|---|---|
| committer | Patryk Obara <dreamer.tan@gmail.com> | 2019-08-20 03:51:51 +0200 |
| commit | 5673c1665a2c6d7fdaf1a20d554bb135a20c7bc8 (patch) | |
| tree | ccf08c484f14d7c5e95fa7f645db2014d61ebb78 /CMakeLists.txt | |
| parent | 0de664d0a886bcda45a0cd05551b6896c5c46ed0 (diff) | |
Import icculus.org release (2017-05-05)
Diffstat (limited to 'CMakeLists.txt')
| -rw-r--r-- | CMakeLists.txt | 314 |
1 files changed, 185 insertions, 129 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index a55d9cf..e585edb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,117 +9,148 @@ IF(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) SET_PROPERTY(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo") ENDIF(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) +# default to Desktop build +IF(NOT AVP_BUILD_TYPE) + SET(AVP_BUILD_TYPE DESKTOP CACHE STRING "Executable type; one of: DESKTOP WEB" FORCE) +ENDIF(NOT AVP_BUILD_TYPE) + +IF(NOT AVP_BUILD_TYPE STREQUAL "DESKTOP" AND NOT AVP_BUILD_TYPE STREQUAL "WEB") + MESSAGE(FATAL_ERROR "Invalid AVP_BUILD_TYPE setting ${AVP_BUILD_TYPE}; must be one of DESKTOP WEB") +ENDIF(NOT AVP_BUILD_TYPE STREQUAL "DESKTOP" AND NOT AVP_BUILD_TYPE STREQUAL "WEB") + +SET(AVP_WEB "NO") +IF(AVP_BUILD_TYPE STREQUAL "WEB") + SET(AVP_WEB "YES") +ENDIF(AVP_BUILD_TYPE STREQUAL "WEB") + PROJECT(avp) -# required dependencies -INCLUDE(FindOpenGLES.cmake) -INCLUDE(FindOpenGLES2.cmake) -INCLUDE(FindSDL2.cmake) -INCLUDE(FindSDL) -INCLUDE(FindOpenGL) -INCLUDE(FindOpenAL) +IF(AVP_WEB) + IF(CMAKE_BUILD_TYPE STREQUAL "Debug") + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -g4 -s USE_SDL=2 -s TOTAL_MEMORY=234881024 -s ASSERTIONS=2 -s SAFE_HEAP=1 -s STACK_OVERFLOW_CHECK=2 -s DEMANGLE_SUPPORT=1") + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -g4 -s USE_SDL=2 -s TOTAL_MEMORY=234881024 -s ASSERTIONS=2 -s SAFE_HEAP=1 -s STACK_OVERFLOW_CHECK=2 -s DEMANGLE_SUPPORT=1") + ELSE() + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -s USE_SDL=2 -s TOTAL_MEMORY=234881024") + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -s USE_SDL=2 -s TOTAL_MEMORY=234881024") + ENDIF() -# Use SDL 1.2 if it is installed, else use SDL 2.0. -IF(NOT SDL_TYPE) - SET(SDL_TYPE AUTO CACHE STRING "SDL Version; one of: AUTO SDL SDL2") - SET_PROPERTY(CACHE SDL_TYPE PROPERTY STRINGS "AUTO" "SDL" "SDL2") -ENDIF(NOT SDL_TYPE) + IF(AVP_WEB_WASM) + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -s WASM=1") + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -s WASM=1") + ENDIF() +ENDIF(AVP_WEB) -IF(NOT SDL_TYPE STREQUAL "AUTO" AND NOT SDL_TYPE STREQUAL "SDL" AND NOT SDL_TYPE STREQUAL "SDL2") - MESSAGE(FATAL_ERROR "Invalid SDL_TYPE setting ${SDL_TYPE}; must be one of AUTO SDL SDL2") -ENDIF(NOT SDL_TYPE STREQUAL "AUTO" AND NOT SDL_TYPE STREQUAL "SDL" AND NOT SDL_TYPE STREQUAL "SDL2") +# required dependencies +IF(NOT AVP_WEB) + INCLUDE(FindOpenGLES2.cmake) + INCLUDE(FindSDL2.cmake) + INCLUDE(FindSDL) + INCLUDE(FindOpenGL) + INCLUDE(FindOpenAL) -IF(SDL_FOUND) - IF(SDL_VERSION_STRING VERSION_LESS "1.2.0") - MESSAGE(WARNING "SDL 1.2 was claimed to be found with version ${SDL_VERSION_STRING}, ignoring...") - UNSET(SDL_FOUND) - ENDIF(SDL_VERSION_STRING VERSION_LESS "1.2.0") + # Use SDL 1.2 if it is installed, else use SDL 2.0. + IF(NOT SDL_TYPE) + SET(SDL_TYPE AUTO CACHE STRING "SDL Version; one of: AUTO SDL SDL2") + SET_PROPERTY(CACHE SDL_TYPE PROPERTY STRINGS "AUTO" "SDL" "SDL2") + ENDIF(NOT SDL_TYPE) - IF(SDL_VERSION_STRING VERSION_GREATER "1.2.99") - MESSAGE(WARNING "SDL 1.2 was claimed to be found with version ${SDL_VERSION_STRING}, ignoring...") - UNSET(SDL_FOUND) - ENDIF(SDL_VERSION_STRING VERSION_GREATER "1.2.99") -ENDIF(SDL_FOUND) + IF(NOT SDL_TYPE STREQUAL "AUTO" AND NOT SDL_TYPE STREQUAL "SDL" AND NOT SDL_TYPE STREQUAL "SDL2") + MESSAGE(FATAL_ERROR "Invalid SDL_TYPE setting ${SDL_TYPE}; must be one of AUTO SDL SDL2") + ENDIF(NOT SDL_TYPE STREQUAL "AUTO" AND NOT SDL_TYPE STREQUAL "SDL" AND NOT SDL_TYPE STREQUAL "SDL2") -IF(SDL_TYPE STREQUAL "AUTO") IF(SDL_FOUND) - MESSAGE(STATUS "SDL 1.2 found; using that.") - SET(SDL_TYPE "SDL") + IF(SDL_VERSION_STRING VERSION_LESS "1.2.0") + MESSAGE(WARNING "SDL 1.2 was claimed to be found with version ${SDL_VERSION_STRING}, ignoring...") + UNSET(SDL_FOUND) + ENDIF(SDL_VERSION_STRING VERSION_LESS "1.2.0") + + IF(SDL_VERSION_STRING VERSION_GREATER "1.2.99") + MESSAGE(WARNING "SDL 1.2 was claimed to be found with version ${SDL_VERSION_STRING}, ignoring...") + UNSET(SDL_FOUND) + ENDIF(SDL_VERSION_STRING VERSION_GREATER "1.2.99") ENDIF(SDL_FOUND) -ENDIF(SDL_TYPE STREQUAL "AUTO") -IF(SDL_TYPE STREQUAL "AUTO") - IF(SDL2_FOUND) - MESSAGE(STATUS "SDL 2.0 found; using that.") - SET(SDL_TYPE "SDL2") - ENDIF(SDL2_FOUND) -ENDIF(SDL_TYPE STREQUAL "AUTO") + IF(SDL_TYPE STREQUAL "AUTO") + IF(SDL_FOUND) + MESSAGE(STATUS "SDL 1.2 found; using that.") + SET(SDL_TYPE "SDL") + ENDIF(SDL_FOUND) + ENDIF(SDL_TYPE STREQUAL "AUTO") + + IF(SDL_TYPE STREQUAL "AUTO") + IF(SDL2_FOUND) + MESSAGE(STATUS "SDL 2.0 found; using that.") + SET(SDL_TYPE "SDL2") + ENDIF(SDL2_FOUND) + ENDIF(SDL_TYPE STREQUAL "AUTO") -IF(SDL_TYPE STREQUAL "AUTO") - MESSAGE(FATAL_ERROR "SDL 1.2 or SDL 2.0 is required but CMake couldn't find it.") -ENDIF(SDL_TYPE STREQUAL "AUTO") + IF(SDL_TYPE STREQUAL "AUTO") + MESSAGE(FATAL_ERROR "SDL 1.2 or SDL 2.0 is required but CMake couldn't find it.") + ENDIF(SDL_TYPE STREQUAL "AUTO") -IF(SDL_TYPE STREQUAL "SDL") - IF(NOT SDL_FOUND) - MESSAGE(FATAL_ERROR "SDL 1.2 was requested but CMake couldn't find it.") - ENDIF(NOT SDL_FOUND) -ENDIF(SDL_TYPE STREQUAL "SDL") + IF(SDL_TYPE STREQUAL "SDL") + IF(NOT SDL_FOUND) + MESSAGE(FATAL_ERROR "SDL 1.2 was requested but CMake couldn't find it.") + ENDIF(NOT SDL_FOUND) + ENDIF(SDL_TYPE STREQUAL "SDL") -IF(SDL_TYPE STREQUAL "SDL2") - IF(NOT SDL2_FOUND) - MESSAGE(FATAL_ERROR "SDL 2.0 was requested but CMake couldn't find it.") - ENDIF(NOT SDL2_FOUND) - MESSAGE(WARNING "SDL 2.0 support is EXPERIMENTAL and INCOMPLETE.") -ENDIF(SDL_TYPE STREQUAL "SDL2") + IF(SDL_TYPE STREQUAL "SDL2") + IF(NOT SDL2_FOUND) + MESSAGE(FATAL_ERROR "SDL 2.0 was requested but CMake couldn't find it.") + ENDIF(NOT SDL2_FOUND) + MESSAGE(WARNING "SDL 2.0 support is EXPERIMENTAL and INCOMPLETE.") + ENDIF(SDL_TYPE STREQUAL "SDL2") -# Use Desktop OpenGL if it is available, else try OpenGL ES. -IF(NOT OPENGL_TYPE) - SET(OPENGL_TYPE AUTO CACHE STRING "OpenGL Version; one of: AUTO OPENGL OPENGLES") - SET_PROPERTY(CACHE OPENGL_TYPE PROPERTY STRINGS "AUTO" "OPENGL" "OPENGLES") -ENDIF(NOT OPENGL_TYPE) + # Use Desktop OpenGL if it is available, else try OpenGL ES 2.0. + IF(NOT OPENGL_TYPE) + SET(OPENGL_TYPE AUTO CACHE STRING "OpenGL Version; one of: AUTO OPENGL OPENGLES2") + SET_PROPERTY(CACHE OPENGL_TYPE PROPERTY STRINGS "AUTO" "OPENGL" "OPENGLES2") + ENDIF(NOT OPENGL_TYPE) -IF(NOT OPENGL_TYPE STREQUAL "AUTO" AND NOT OPENGL_TYPE STREQUAL "OPENGL" AND NOT OPENGL_TYPE STREQUAL "OPENGLES") - MESSAGE(FATAL_ERROR "Invalid OPENGL_TYPE setting ${OPENGL_TYPE}; must be one of AUTO OPENGL OPENGLES") -ENDIF(NOT OPENGL_TYPE STREQUAL "AUTO" AND NOT OPENGL_TYPE STREQUAL "OPENGL" AND NOT OPENGL_TYPE STREQUAL "OPENGLES") + IF(NOT OPENGL_TYPE STREQUAL "AUTO" AND NOT OPENGL_TYPE STREQUAL "OPENGL" AND NOT OPENGL_TYPE STREQUAL "OPENGLES2") + MESSAGE(FATAL_ERROR "Invalid OPENGL_TYPE setting ${OPENGL_TYPE}; must be one of AUTO OPENGL OPENGLES2") + ENDIF(NOT OPENGL_TYPE STREQUAL "AUTO" AND NOT OPENGL_TYPE STREQUAL "OPENGL" AND NOT OPENGL_TYPE STREQUAL "OPENGLES2") -IF(OPENGL_TYPE STREQUAL "AUTO") - IF(OPENGL_FOUND) - MESSAGE(STATUS "OpenGL found; using that.") - SET(OPENGL_TYPE "OPENGL") - ENDIF(OPENGL_FOUND) -ENDIF(OPENGL_TYPE STREQUAL "AUTO") + IF(OPENGL_TYPE STREQUAL "AUTO") + IF(OPENGL_FOUND) + MESSAGE(STATUS "OpenGL found; using that.") + SET(OPENGL_TYPE "OPENGL") + ENDIF(OPENGL_FOUND) + ENDIF(OPENGL_TYPE STREQUAL "AUTO") -IF(OPENGL_TYPE STREQUAL "AUTO") - IF(OPENGLES_FOUND) - MESSAGE(STATUS "OpenGL ES found; using that.") - SET(OPENGL_TYPE "OPENGLES") - ENDIF(OPENGLES_FOUND) -ENDIF(OPENGL_TYPE STREQUAL "AUTO") + IF(OPENGL_TYPE STREQUAL "AUTO") + IF(OPENGLES2_FOUND) + MESSAGE(STATUS "OpenGL ES 2.0 found; using that.") + SET(OPENGL_TYPE "OPENGLES2") + ENDIF(OPENGLES2_FOUND) + ENDIF(OPENGL_TYPE STREQUAL "AUTO") -IF(OPENGL_TYPE STREQUAL "AUTO") - MESSAGE(FATAL_ERROR "OpenGL is required but CMake couldn't find it.") -ENDIF(OPENGL_TYPE STREQUAL "AUTO") + IF(OPENGL_TYPE STREQUAL "AUTO") + MESSAGE(FATAL_ERROR "OpenGL is required but CMake couldn't find it.") + ENDIF(OPENGL_TYPE STREQUAL "AUTO") -IF(OPENGL_TYPE STREQUAL "OPENGL") - IF(NOT OPENGL_FOUND) - MESAGE(FATAL_ERROR "OpenGL was requested but CMake couldn't find it.") - ENDIF(NOT OPENGL_FOUND) -ENDIF(OPENGL_TYPE STREQUAL "OPENGL") + IF(OPENGL_TYPE STREQUAL "OPENGL") + IF(NOT OPENGL_FOUND) + MESAGE(FATAL_ERROR "OpenGL was requested but CMake couldn't find it.") + ENDIF(NOT OPENGL_FOUND) + ENDIF(OPENGL_TYPE STREQUAL "OPENGL") -IF(OPENGL_TYPE STREQUAL "OPENGLES") - IF(NOT OPENGLES_FOUND) - MESSAGE(FATAL_ERROR "OpenGL ES was requested but CMake couldn't find it.") - ENDIF(NOT OPENGLES_FOUND) -ENDIF(OPENGL_TYPE STREQUAL "OPENGLES") + IF(OPENGL_TYPE STREQUAL "OPENGLES2") + IF(NOT OPENGLES2_FOUND) + MESSAGE(FATAL_ERROR "OpenGL ES 2.0 was requested but CMake couldn't find it.") + ENDIF(NOT OPENGLES2_FOUND) + IF(NOT SDL_TYPE STREQUAL "SDL2") + MESSAGE(FATAL_ERROR "OpenGL ES 2.0 support requires SDL2.") + ENDIF(NOT SDL_TYPE STREQUAL "SDL2") + ENDIF(OPENGL_TYPE STREQUAL "OPENGLES2") -# OpenAL -IF(NOT OPENAL_FOUND) - MESSAGE(FATAL_ERROR "OpenAL is required but CMake couldn't find it.") -ENDIF(NOT OPENAL_FOUND) + # OpenAL + IF(NOT OPENAL_FOUND) + MESSAGE(FATAL_ERROR "OpenAL is required but CMake couldn't find it.") + ENDIF(NOT OPENAL_FOUND) +ENDIF(NOT AVP_WEB) # required source files -LIST(APPEND source src/files.c) -LIST(APPEND source src/winapi.c) LIST(APPEND source src/stubs.c) LIST(APPEND source src/version.c) LIST(APPEND source src/mathline.c) @@ -339,18 +370,31 @@ LIST(APPEND source src/openal.c) LIST(APPEND source src/cdplayer.c) LIST(APPEND source src/menus.c) -IF(SDL_TYPE STREQUAL "SDL") - LIST(APPEND source src/main.c) +IF(WIN32) + LIST(APPEND source src/winfiles.c) +ELSE(WIN32) + LIST(APPEND source src/files.c) + LIST(APPEND source src/winapi.c) +ENDIF(WIN32) - # SDL 1.2 on OS X requires this support file - IF(APPLE AND ${CMAKE_SYSTEM_NAME} MATCHES "Darwin") - LIST(APPEND source src/sdl12/sdlmain.m) - ENDIF(APPLE AND ${CMAKE_SYSTEM_NAME} MATCHES "Darwin") -ENDIF(SDL_TYPE STREQUAL "SDL") +IF(AVP_WEB) + LIST(APPEND source src/main2.c) +ENDIF(AVP_WEB) -IF(SDL_TYPE STREQUAL "SDL2") - LIST(APPEND source src/main2.c) -ENDIF(SDL_TYPE STREQUAL "SDL2") +IF(NOT AVP_WEB) + IF(SDL_TYPE STREQUAL "SDL") + LIST(APPEND source src/main.c) + + # SDL 1.2 on OS X requires this support file + IF(APPLE AND ${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + LIST(APPEND source src/sdl12/sdlmain.m) + ENDIF(APPLE AND ${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + ENDIF(SDL_TYPE STREQUAL "SDL") + + IF(SDL_TYPE STREQUAL "SDL2") + LIST(APPEND source src/main2.c) + ENDIF(SDL_TYPE STREQUAL "SDL2") +ENDIF(NOT AVP_WEB) ### build all source as C++ ### (not normally used) @@ -366,44 +410,56 @@ INCLUDE_DIRECTORIES(${include}) # manually include src/include INCLUDE_DIRECTORIES(src/include) -ADD_EXECUTABLE(avp ${source}) +IF(AVP_WEB) + ADD_DEFINITIONS(-DUSE_OPENGL_ES=1) -# required dependencies -IF(SDL_TYPE STREQUAL "SDL") - INCLUDE_DIRECTORIES(${SDL_INCLUDE_DIR}) -ENDIF(SDL_TYPE STREQUAL "SDL") + ADD_EXECUTABLE(avp ${source}) +ENDIF(AVP_WEB) + +IF(NOT AVP_WEB) + ADD_EXECUTABLE(avp ${source}) + + # required dependencies + IF(WIN32) + TARGET_LINK_LIBRARIES(avp winmm) + ENDIF(WIN32) + + IF(SDL_TYPE STREQUAL "SDL") + INCLUDE_DIRECTORIES(${SDL_INCLUDE_DIR}) + ENDIF(SDL_TYPE STREQUAL "SDL") -IF(SDL_TYPE STREQUAL "SDL2") - INCLUDE_DIRECTORIES(${SDL2_INCLUDE_DIR}) -ENDIF(SDL_TYPE STREQUAL "SDL2") + IF(SDL_TYPE STREQUAL "SDL2") + INCLUDE_DIRECTORIES(${SDL2_INCLUDE_DIR}) + ENDIF(SDL_TYPE STREQUAL "SDL2") -IF(OPENGL_TYPE STREQUAL "OPENGL") - INCLUDE_DIRECTORIES(${OPENGL_INCLUDE_DIR}) -ENDIF(OPENGL_TYPE STREQUAL "OPENGL") + IF(OPENGL_TYPE STREQUAL "OPENGL") + INCLUDE_DIRECTORIES(${OPENGL_INCLUDE_DIR}) + ENDIF(OPENGL_TYPE STREQUAL "OPENGL") -IF(OPENGL_TYPE STREQUAL "OPENGLES") - ADD_DEFINITIONS(-DUSE_OPENGL_ES=1) - INCLUDE_DIRECTORIES(${OPENGLES_INCLUDE_DIR}) - INCLUDE_DIRECTORIES(${EGL_INCLUDE_DIR}) -ENDIF(OPENGL_TYPE STREQUAL "OPENGLES") + IF(OPENGL_TYPE STREQUAL "OPENGLES2") + ADD_DEFINITIONS(-DUSE_OPENGL_ES=1) + INCLUDE_DIRECTORIES(${OPENGLES2_INCLUDE_DIR}) + INCLUDE_DIRECTORIES(${EGL_INCLUDE_DIR}) + ENDIF(OPENGL_TYPE STREQUAL "OPENGLES2") -INCLUDE_DIRECTORIES(${OPENAL_INCLUDE_DIR}) + INCLUDE_DIRECTORIES(${OPENAL_INCLUDE_DIR}) -IF(SDL_TYPE STREQUAL "SDL") - TARGET_LINK_LIBRARIES(avp ${SDL_LIBRARY}) -ENDIF(SDL_TYPE STREQUAL "SDL") + IF(SDL_TYPE STREQUAL "SDL") + TARGET_LINK_LIBRARIES(avp ${SDL_LIBRARY}) + ENDIF(SDL_TYPE STREQUAL "SDL") -IF(SDL_TYPE STREQUAL "SDL2") - TARGET_LINK_LIBRARIES(avp ${SDL2_LIBRARY}) -ENDIF(SDL_TYPE STREQUAL "SDL2") + IF(SDL_TYPE STREQUAL "SDL2") + TARGET_LINK_LIBRARIES(avp ${SDL2_LIBRARY}) + ENDIF(SDL_TYPE STREQUAL "SDL2") -IF(OPENGL_TYPE STREQUAL "OPENGL") - TARGET_LINK_LIBRARIES(avp ${OPENGL_gl_LIBRARY}) -ENDIF(OPENGL_TYPE STREQUAL "OPENGL") + IF(OPENGL_TYPE STREQUAL "OPENGL") + TARGET_LINK_LIBRARIES(avp ${OPENGL_gl_LIBRARY}) + ENDIF(OPENGL_TYPE STREQUAL "OPENGL") -IF(OPENGL_TYPE STREQUAL "OPENGLES") - TARGET_LINK_LIBRARIES(avp ${OPENGLES_gl_LIBRARY}) - TARGET_LINK_LIBRARIES(avp ${EGL_LIBRARIES}) -ENDIF(OPENGL_TYPE STREQUAL "OPENGLES") + IF(OPENGL_TYPE STREQUAL "OPENGLES2") + TARGET_LINK_LIBRARIES(avp ${OPENGLES2_gl_LIBRARY}) + TARGET_LINK_LIBRARIES(avp ${EGL_LIBRARIES}) + ENDIF(OPENGL_TYPE STREQUAL "OPENGLES2") -TARGET_LINK_LIBRARIES(avp ${OPENAL_LIBRARY}) + TARGET_LINK_LIBRARIES(avp ${OPENAL_LIBRARY}) +ENDIF(NOT AVP_WEB) |
