summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorSteven Fuller <relnev@icculus.org>2017-05-05 12:00:00 +0200
committerPatryk Obara <dreamer.tan@gmail.com>2019-08-20 03:51:51 +0200
commit5673c1665a2c6d7fdaf1a20d554bb135a20c7bc8 (patch)
treeccf08c484f14d7c5e95fa7f645db2014d61ebb78 /CMakeLists.txt
parent0de664d0a886bcda45a0cd05551b6896c5c46ed0 (diff)
Import icculus.org release (2017-05-05)
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt314
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)