@@ -2,7 +2,11 @@ cmake_minimum_required(VERSION 3.1)
project (medusa)
set (BINARY_NAME medusa-emu CACHE INTERNAL "Name of output binaries" )
if (NOT MSVC)
- set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Wno-missing-field-initializers -std=c99" )
+ set (GCC_STD "c99" )
+ if (CMAKE_C_COMPILER_ID STREQUAL "GNU" AND CMAKE_COMPILER_VERSION VERSION_LESS "4.3" )
+ set (GCC_STD "gnu99" )
+ endif ()
+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Wno-missing-field-initializers -std=${GCC_STD} " )
else ()
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_CRT_SECURE_NO_WARNINGS /wd4003 /wd4244 /wd4146" )
endif ()
@@ -40,6 +44,10 @@ set(BUILD_GL ON CACHE STRING "Build with OpenGL")
set (BUILD_GLES2 OFF CACHE STRING "Build with OpenGL|ES 2" )
set (USE_EPOXY ON CACHE STRING "Build with libepoxy" )
set (DISABLE_DEPS OFF CACHE BOOL "Build without dependencies" )
+if (WIN32 )
+ set (WIN32_UNIX_PATHS OFF CACHE BOOL "Use Unix-like paths" )
+ mark_as_advanced (WIN32_UNIX_PATHS)
+endif ()
file (GLOB ARM_SRC ${CMAKE_CURRENT_SOURCE_DIR} /src/arm/*.c)
file (GLOB ARM_TEST_SRC ${CMAKE_CURRENT_SOURCE_DIR} /src/arm/test/*.c)
file (GLOB LR35902_SRC ${CMAKE_CURRENT_SOURCE_DIR} /src/lr35902/*.c)
@@ -57,7 +65,7 @@ file(GLOB UTIL_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/util/*.[cSs])
file (GLOB UTIL_TEST_SRC ${CMAKE_CURRENT_SOURCE_DIR} /src/util/test/*.c)
file (GLOB GUI_SRC ${CMAKE_CURRENT_SOURCE_DIR} /src/util/gui/*.c ${CMAKE_CURRENT_SOURCE_DIR} /src/feature/gui/*.c)
file (GLOB GBA_RENDERER_SRC ${CMAKE_CURRENT_SOURCE_DIR} /src/gba/renderers/*.c)
-file (GLOB GBA_SIO_SRC ${CMAKE_CURRENT_SOURCE_DIR} /src/gba/sio/lockstep .c)
+file (GLOB GBA_SIO_SRC ${CMAKE_CURRENT_SOURCE_DIR} /src/gba/sio/* .c)
file (GLOB GBA_EXTRA_SRC ${CMAKE_CURRENT_SOURCE_DIR} /src/gba/extra/*.c)
file (GLOB GB_SIO_SRC ${CMAKE_CURRENT_SOURCE_DIR} /src/gb/sio/*.c)
file (GLOB GB_RENDERER_SRC ${CMAKE_CURRENT_SOURCE_DIR} /src/gb/renderers/*.c)
@@ -80,8 +88,16 @@ if(NOT CMAKE_BUILD_TYPE)
set (CMAKE_BUILD_TYPE Release CACHE STRING "Build type (e.g. Release or Debug)" FORCE )
endif ()
-include (GNUInstallDirs)
-string (REPLACE "${PROJECT_NAME} " "${BINARY_NAME} " CMAKE_INSTALL_DOCDIR "${CMAKE_INSTALL_DOCDIR} " )
+if (NOT WIN32 OR WIN32_UNIX_PATHS)
+ include (GNUInstallDirs)
+ string (REPLACE "${PROJECT_NAME} " "${BINARY_NAME} " CMAKE_INSTALL_DOCDIR "${CMAKE_INSTALL_DOCDIR} " )
+else ()
+ set (CMAKE_INSTALL_LIBDIR "." )
+ set (CMAKE_INSTALL_BINDIR "." )
+ set (CMAKE_INSTALL_DATADIR "." )
+ set (CMAKE_INSTALL_DOCDIR "." )
+ set (CMAKE_INSTALL_INCLUDEDIR "include" )
+endif ()
set (LIBDIR "${CMAKE_INSTALL_LIBDIR} " CACHE PATH "Installed library directory" )
mark_as_advanced (LIBDIR)
@@ -168,7 +184,7 @@ list(APPEND UTIL_SRC ${CMAKE_CURRENT_BINARY_DIR}/version.c)
source_group ("Generated sources" FILES ${CMAKE_CURRENT_BINARY_DIR} /version.c)
# Advanced settings
-if (NOT DEFINED 3DS)
+if (NOT DEFINED 3DS AND NOT (CMAKE_C_COMPILER_ID STREQUAL "GNU" AND CMAKE_COMPILER_VERSION VERSION_LESS "4.5" ) )
# LTO appears to make 3DS binary slower
set (DEFAULT_LTO ON )
else ()
@@ -214,6 +230,7 @@ elseif(UNIX)
endif ()
if (NOT APPLE AND NOT HAIKU)
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pthread" )
+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread" )
endif ()
list (APPEND CORE_VFS_SRC ${CMAKE_CURRENT_SOURCE_DIR} /src/util/vfs/vfs-fd.c ${CMAKE_CURRENT_SOURCE_DIR} /src/util/vfs/vfs-dirent.c)
@@ -223,7 +240,9 @@ endif()
if (APPLE)
add_definitions (-D_DARWIN_C_SOURCE)
- set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mmacosx-version-min=10.6" )
+ if (CMAKE_SYSTEM_VERSION VERSION_GREATER "10.5.8" )
+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mmacosx-version-min=10.6" )
+ endif ()
endif ()
if (NOT HAIKU AND NOT MSVC AND NOT PSP2)
@@ -414,6 +433,8 @@ set(DEBUGGER_SRC
${CMAKE_CURRENT_SOURCE_DIR} /src/debugger/symbols.c
${CMAKE_CURRENT_SOURCE_DIR} /src/debugger/cli-debugger.c)
+file (GLOB DEBUGGER_TEST_SRC ${CMAKE_CURRENT_SOURCE_DIR} /src/debugger/test/*.c)
+
set (FEATURE_SRC)
set (CPACK_DEBIAN_PACKAGE_DEPENDS "libc6" )
@@ -520,6 +541,7 @@ if(USE_ZLIB)
list (APPEND DEPENDENCY_LIB ${ZLIB_LIBRARIES} )
set (CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_DEPENDS} ,zlib1g" )
set (HAVE_CRC32 ON )
+ list (APPEND OS_LIB ${ZLIB_LIBRARIES} )
else ()
# zlib pulls in crc32
check_function_exists(crc32 HAVE_CRC32)
@@ -596,7 +618,7 @@ elseif(USE_ZLIB)
endif ()
if (USE_LZMA)
- include_directories (AFTER ${CMAKE_CURRENT_SOURCE_DIR} /third-party/lzma)
+ include_directories (AFTER ${CMAKE_CURRENT_SOURCE_DIR} /src/ third-party/lzma)
add_definitions (-D_7ZIP_PPMD_SUPPPORT)
list (APPEND VFS_SRC ${CMAKE_CURRENT_SOURCE_DIR} /src/util/vfs/vfs-lzma.c)
set (LZMA_SRC
@@ -710,6 +732,7 @@ endif()
if (USE_DEBUGGERS)
list (APPEND FEATURE_SRC ${DEBUGGER_SRC} )
+ list (APPEND TEST_SRC ${DEBUGGER_TEST_SRC} )
list (APPEND FEATURES DEBUGGERS)
endif ()
@@ -850,7 +873,7 @@ if(BUILD_OPENEMU)
find_library (FOUNDATION Foundation)
find_library (OPENEMUBASE OpenEmuBase)
file (GLOB OE_SRC ${CMAKE_CURRENT_SOURCE_DIR} /src/platform/openemu/*.m)
- add_library (${BINARY_NAME} -openemu MODULE ${CORE_SRC} ${OE_SRC } )
+ add_library (${BINARY_NAME} -openemu MODULE ${CORE_SRC} ${OS_SRC } )
set_target_properties (${BINARY_NAME} -openemu PROPERTIES
MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR} /src/platform/openemu/Info.plist.in
BUNDLE TRUE
@@ -951,7 +974,8 @@ SET(CPACK_DEB_COMPONENT_INSTALL ON)
set (CPACK_STRIP_FILES ${BINARY_NAME} )
-install (FILES ${CMAKE_CURRENT_SOURCE_DIR} /README.md ${CMAKE_CURRENT_SOURCE_DIR} /CHANGES DESTINATION ${CMAKE_INSTALL_DOCDIR} COMPONENT lib${BINARY_NAME} )
+file (GLOB READMES ${CMAKE_CURRENT_SOURCE_DIR} /README*.md)
+install (FILES ${READMES} ${CMAKE_CURRENT_SOURCE_DIR} /CHANGES DESTINATION ${CMAKE_INSTALL_DOCDIR} COMPONENT lib${BINARY_NAME} )
include (CPack)
0 comments on commit
4d137e7