cmake_minimum_required (VERSION 2.6) set(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "" FORCE) project (USP) option(USE_WX_WIDGETS "wxWidgets + OpenAL + OpenGL version" ON) option(USE_SDL "SDL version" OFF) option(USE_BENCHMARK "benchmark mode (console)" OFF) #core file(GLOB SRCCXX_ROOT "../../*.cpp") file(GLOB SRCH_ROOT "../../*.h") file(GLOB SRCCXX_Z80 "../../z80/*.cpp") file(GLOB SRCH_Z80 "../../z80/*.h") file(GLOB SRCCXX_TOOLS "../../tools/*.cpp") file(GLOB SRCH_TOOLS "../../tools/*.h") file(GLOB SRCCXX_SNAPSHOT "../../snapshot/*.cpp") file(GLOB SRCH_SNAPSHOT "../../snapshot/*.h") file(GLOB SRCCXX_DEVICES "../../devices/*.cpp") file(GLOB SRCH_DEVICES "../../devices/*.h") file(GLOB SRCCXX_DEVICES_FDD "../../devices/fdd/*.cpp") file(GLOB SRCH_DEVICES_FDD "../../devices/fdd/*.h") file(GLOB SRCCXX_DEVICES_INPUT "../../devices/input/*.cpp") file(GLOB SRCH_DEVICES_INPUT "../../devices/input/*.h") file(GLOB SRCCXX_DEVICES_SOUND "../../devices/sound/*.cpp") file(GLOB SRCH_DEVICES_SOUND "../../devices/sound/*.h") list(APPEND SRCCXX ${SRCCXX_ROOT} ${SRCCXX_Z80} ${SRCCXX_TOOLS} ${SRCCXX_SNAPSHOT} ${SRCCXX_DEVICES} ${SRCCXX_DEVICES_FDD} ${SRCCXX_DEVICES_INPUT} ${SRCCXX_DEVICES_SOUND}) list(APPEND SRCH ${SRCH_ROOT} ${SRCH_Z80} ${SRCH_TOOLS} ${SRCH_SNAPSHOT} ${SRCH_DEVICES} ${SRCH_DEVICES_FDD} ${SRCH_DEVICES_INPUT} ${SRCH_DEVICES_SOUND}) source_group("" FILES ${SRCCXX_ROOT} ${SRCH_ROOT}) source_group("z80" FILES ${SRCCXX_Z80} ${SRCH_Z80}) source_group("tools" FILES ${SRCCXX_TOOLS} ${SRCH_TOOLS}) source_group("snapshot" FILES ${SRCCXX_SNAPSHOT} ${SRCH_SNAPSHOT}) source_group("devices" FILES ${SRCCXX_DEVICES} ${SRCH_DEVICES}) source_group("devices\\fdd" FILES ${SRCCXX_DEVICES_FDD} ${SRCH_DEVICES_FDD}) source_group("devices\\input" FILES ${SRCCXX_DEVICES_INPUT} ${SRCH_DEVICES_INPUT}) source_group("devices\\sound" FILES ${SRCCXX_DEVICES_SOUND} ${SRCH_DEVICES_SOUND}) #3rdparty libs find_package(ZLIB) if(ZLIB_FOUND) include_directories(${ZLIB_INCLUDE_DIRS}) list(APPEND THIRDPARTY_LIBRARIES ${ZLIB_LIBRARIES}) else(ZLIB_FOUND) file(GLOB SRCC_ZLIB "../../3rdparty/zlib/*.c") file(GLOB SRCH_ZLIB "../../3rdparty/zlib/*.h") list(APPEND SRCC ${SRCC_ZLIB}) list(APPEND SRCH ${SRCH_ZLIB}) source_group("3rdparty\\zlib" FILES ${SRCC_ZLIB} ${SRCH_ZLIB}) include_directories("../../3rdparty/zlib") endif(ZLIB_FOUND) find_package(PNG) if(PNG_FOUND) include_directories(${PNG_INCLUDE_DIRS}) list(APPEND THIRDPARTY_LIBRARIES ${PNG_LIBRARIES}) else(PNG_FOUND) file(GLOB SRCC_LIBPNG "../../3rdparty/libpng/*.c") file(GLOB SRCH_LIBPNG "../../3rdparty/libpng/*.h") list(APPEND SRCC ${SRCC_LIBPNG}) list(APPEND SRCH ${SRCH_LIBPNG}) source_group("3rdparty\\libpng" FILES ${SRCC_LIBPNG} ${SRCH_LIBPNG}) include_directories("../../3rdparty/libpng") endif(PNG_FOUND) file(GLOB SRCC_MINIZIP "../../3rdparty/minizip/*.c") file(GLOB SRCH_MINIZIP "../../3rdparty/minizip/*.h") list(APPEND SRCC ${SRCC_MINIZIP}) list(APPEND SRCH ${SRCH_MINIZIP}) source_group("3rdparty\\minizip" FILES ${SRCC_MINIZIP} ${SRCH_MINIZIP}) include_directories("../../3rdparty/minizip") file(GLOB SRCCXX_TINYXML2 "../../3rdparty/tinyxml2/*.cpp") file(GLOB SRCH_TINYXML2 "../../3rdparty/tinyxml2/*.h") list(APPEND SRCCXX ${SRCCXX_TINYXML2}) list(APPEND SRCH ${SRCH_TINYXML2}) source_group("3rdparty\\tinyxml2" FILES ${SRCCXX_TINYXML2} ${SRCH_TINYXML2}) include_directories("../../3rdparty/tinyxml2") #platform file(GLOB SRCCXX_PLATFORM "../../platform/*.cpp") file(GLOB SRCH_PLATFORM "../../platform/*.h") list(APPEND SRCCXX ${SRCCXX_PLATFORM}) list(APPEND SRCH ${SRCH_PLATFORM}) source_group("platform" FILES ${SRCCXX_PLATFORM} ${SRCH_PLATFORM}) if(MSVC) add_definitions("/wd4244 /wd4996 /wd4800") set(variables CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE) foreach(variable ${variables}) if(${variable} MATCHES "/MD") string(REGEX REPLACE "/MD" "/MT" ${variable} "${${variable}}") endif() endforeach() endif(MSVC) if(UNIX) add_definitions(-D_LINUX) endif(UNIX) if(USE_WX_WIDGETS) #wxWidgets find_package(wxWidgets COMPONENTS core base adv gl REQUIRED) include("${wxWidgets_USE_FILE}") file(GLOB SRCCXX_PLATFORM_WX_WIDGETS "../../platform/wxwidgets/*.cpp") file(GLOB SRCH_PLATFORM_WX_WIDGETS "../../platform/wxwidgets/*.h") list(APPEND SRCCXX ${SRCCXX_PLATFORM_WX_WIDGETS}) list(APPEND SRCH ${SRCH_PLATFORM_WX_WIDGETS}) source_group("platform\\wxwidgets" FILES ${SRCCXX_PLATFORM_WX_WIDGETS} ${SRCH_PLATFORM_WX_WIDGETS}) IF(WIN32) add_definitions(-DWX_RES) SET(SRCRES "../win/unreal_speccy_portable.rc") source_group("platform\\win\\res" FILES ${SRCRES}) ENDIF(WIN32) #Open AL find_package(OpenAL REQUIRED) include_directories("${OPENAL_INCLUDE_DIR}") file(GLOB SRCCXX_PLATFORM_OPENAL "../../platform/oal/*.cpp") list(APPEND SRCCXX ${SRCCXX_PLATFORM_OPENAL}) source_group("platform\\oal" FILES ${SRCCXX_PLATFORM_OPENAL}) #Open GL find_package(OpenGL REQUIRED) if(NOT WIN32) include_directories("${OPENGL_INCLUDE_DIR}") endif(NOT WIN32) file(GLOB SRCCXX_PLATFORM_OPENGL "../../platform/gl/*.cpp") list(APPEND SRCCXX ${SRCCXX_PLATFORM_OPENGL}) source_group("platform\\gl" FILES ${SRCCXX_PLATFORM_OPENGL}) add_executable(unreal_speccy_portable WIN32 ${SRCCXX} ${SRCC} ${SRCH} ${SRCRES}) target_link_libraries(unreal_speccy_portable ${wxWidgets_LIBRARIES}) target_link_libraries(unreal_speccy_portable ${OPENAL_LIBRARY}) target_link_libraries(unreal_speccy_portable ${OPENGL_LIBRARIES}) elseif(USE_SDL) #SDL find_package(SDL REQUIRED) include_directories("${SDL_INCLUDE_DIR}") file(GLOB SRCCXX_PLATFORM_SDL "../../platform/sdl/*.cpp") add_definitions(-DUSE_SDL -DSDL_USE_JOYSTICK -DSDL_KEYS_COMMON) list(APPEND SRCCXX ${SRCCXX_PLATFORM_SDL}) source_group("platform\\sdl" FILES ${SRCCXX_PLATFORM_SDL}) file(GLOB SRCCXX_UI "../../ui/*.cpp") file(GLOB SRCH_UI "../../ui/*.h") list(APPEND SRCCXX ${SRCCXX_UI}) list(APPEND SRCH ${SRCH_UI}) source_group("ui" FILES ${SRCCXX_UI} ${SRCH_UI}) file(GLOB SRCCXX_PLATFORM_CUSTOM_UI "../../platform/custom_ui/*.cpp") file(GLOB SRCH_PLATFORM_CUSTOM_UI "../../platform/custom_ui/*.h") list(APPEND SRCCXX ${SRCCXX_PLATFORM_CUSTOM_UI}) list(APPEND SRCH ${SRCH_PLATFORM_CUSTOM_UI}) source_group("platform\\custom_ui" FILES ${SRCCXX_PLATFORM_CUSTOM_UI} ${SRCH_PLATFORM_CUSTOM_UI}) if(WIN32) file(GLOB SRCCXX_PLATFORM_WINDOWS "../../platform/win/*.cpp") file(GLOB SRCH_PLATFORM_WINDOWS "../../platform/win/*.h") list(APPEND SRCCXX ${SRCCXX_PLATFORM_WINDOWS}) list(APPEND SRCH ${SRCH_PLATFORM_WINDOWS}) source_group("platform\\windows" FILES ${SRCCXX_PLATFORM_WINDOWS} ${SRCH_PLATFORM_WINDOWS}) elseif(UNIX) file(GLOB SRCCXX_PLATFORM_LINUX "../../platform/linux/*.cpp") file(GLOB SRCH_PLATFORM_LINUX "../../platform/linux/*.h") list(APPEND SRCCXX ${SRCCXX_PLATFORM_LINUX}) list(APPEND SRCH ${SRCH_PLATFORM_LINUX}) source_group("platform\\linux" FILES ${SRCCXX_PLATFORM_LINUX} ${SRCH_PLATFORM_LINUX}) endif(WIN32) add_executable(unreal_speccy_portable WIN32 ${SRCCXX} ${SRCC} ${SRCH}) target_link_libraries(unreal_speccy_portable ${SDL_LIBRARY}) elseif(USE_BENCHMARK) #benchmark mode (console) file(GLOB SRCCXX_PLATFORM_BENCHMARK "../../platform/benchmark/*.cpp") add_definitions(-DUSE_BENCHMARK) list(APPEND SRCCXX ${SRCCXX_PLATFORM_BENCHMARK}) source_group("platform\\benchmark" FILES ${SRCCXX_PLATFORM_BENCHMARK}) add_executable(unreal_speccy_portable ${SRCCXX} ${SRCC} ${SRCH}) endif(USE_WX_WIDGETS) target_link_libraries(unreal_speccy_portable ${THIRDPARTY_LIBRARIES})