From 7676eff5cb08d389ac4ff380a966f01b2fb028d0 Mon Sep 17 00:00:00 2001 From: jeblanchard Date: Sun, 8 Jun 2008 06:34:13 +0000 Subject: [PATCH] Lots of love for the cmake build system --- CMakeLists.txt | 370 +----------------- cmake/cross-mingw32/CMakeLists.txt | 2 + cmake/cross-mingw32/debug/CMakeLists.txt | 3 + cmake/cross-mingw32/fceux_cross-mingw32.cmake | 29 ++ cmake/cross-mingw32/release/CMakeLists.txt | 3 + cmake/fceux.cmake | 358 +++++++++++++++++ cmake/native/CMakeLists.txt | 2 + cmake/native/debug/CMakeLists.txt | 3 + cmake/native/fceux_native.cmake | 1 + cmake/native/release/CMakeLists.txt | 3 + 10 files changed, 419 insertions(+), 355 deletions(-) create mode 100644 cmake/cross-mingw32/CMakeLists.txt create mode 100644 cmake/cross-mingw32/debug/CMakeLists.txt create mode 100644 cmake/cross-mingw32/fceux_cross-mingw32.cmake create mode 100644 cmake/cross-mingw32/release/CMakeLists.txt create mode 100644 cmake/fceux.cmake create mode 100644 cmake/native/CMakeLists.txt create mode 100644 cmake/native/debug/CMakeLists.txt create mode 100644 cmake/native/fceux_native.cmake create mode 100644 cmake/native/release/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 1e0830cb..49277b50 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,359 +1,19 @@ cmake_minimum_required(VERSION 2.6) -include(CheckFunctionExists) -include(TestBigEndian) +project(fceux) +set(EXECUTABLE_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/bin) +add_subdirectory(cmake/native) +if(UNIX) + add_subdirectory(cmake/cross-mingw32) +endif(UNIX) -project( fceux ) - -option(FCEUX_FORCE_LE "Build for a little-endian target" OFF) -option(FCEUX_FORCE_BE "Build for a big-endian target" OFF) -option(FCEUX_FRAMESKIP "Build legacy frameskip code" OFF) - -if(NOT WIN32) - option(FCEUX_SDL_OPENGL "Build with OpenGL support" ON) - find_package(SDL REQUIRED) - find_package(ZLIB REQUIRED) - if(FCEUX_SDL_OPENGL) - find_package(OpenGL REQUIRED) - endif(FCEUX_SDL_OPENGL) -endif(NOT WIN32) - -set(SRC_CORE - src/asm.cpp - src/cart.cpp - src/cheat.cpp - src/conddebug.cpp - src/config.cpp - src/debug.cpp - src/drawing.cpp - src/fceu.cpp - src/fds.cpp - src/file.cpp - src/filter.cpp - src/ines.cpp - src/input.cpp - src/movie.cpp - src/netplay.cpp - src/nsf.cpp - src/palette.cpp - src/ppu.cpp - src/sound.cpp - src/state.cpp - src/unif.cpp - src/video.cpp - src/vsuni.cpp - src/wave.cpp - src/x6502.cpp - src/boards/01-222.cpp - src/boards/112.cpp - src/boards/117.cpp - src/boards/164.cpp - src/boards/183.cpp - src/boards/185.cpp - src/boards/186.cpp - src/boards/187.cpp - src/boards/189.cpp - src/boards/199.cpp - src/boards/208.cpp - src/boards/222.cpp - src/boards/235.cpp - src/boards/43.cpp - src/boards/57.cpp - src/boards/603-5052.cpp - src/boards/8157.cpp - src/boards/8237.cpp - src/boards/88.cpp - src/boards/90.cpp - src/boards/95.cpp - src/boards/__dummy_mapper.cpp - src/boards/a9711.cpp - src/boards/addrlatch.cpp - src/boards/bmc13in1jy110.cpp - src/boards/bmc42in1r.cpp - src/boards/bmc64in1nr.cpp - src/boards/bmc70in1.cpp - src/boards/bonza.cpp - src/boards/datalatch.cpp - src/boards/deirom.cpp - src/boards/dream.cpp - src/boards/edu2000.cpp - src/boards/fk23c.cpp - src/boards/h2288.cpp - src/boards/karaoke.cpp - src/boards/kof97.cpp - src/boards/konami-qtai.cpp - src/boards/malee.cpp - src/boards/mmc1.cpp - src/boards/mmc3.cpp - src/boards/mmc5.cpp - src/boards/n-c22m.cpp - src/boards/n106.cpp - src/boards/novel.cpp - src/boards/sachen.cpp - src/boards/sheroes.cpp - src/boards/sl1632.cpp - src/boards/subor.cpp - src/boards/super24.cpp - src/boards/supervision.cpp - src/boards/t-262.cpp - src/boards/tengen.cpp - src/input/arkanoid.cpp - src/input/bworld.cpp - src/input/cursor.cpp - src/input/fkb.cpp - src/input/ftrainer.cpp - src/input/hypershot.cpp - src/input/mahjong.cpp - src/input/mouse.cpp - src/input/oekakids.cpp - src/input/powerpad.cpp - src/input/quiz.cpp - src/input/shadow.cpp - src/input/suborkb.cpp - src/input/toprider.cpp - src/input/zapper.cpp - src/mappers/15.cpp - src/mappers/151.cpp - src/mappers/16.cpp - src/mappers/17.cpp - src/mappers/18.cpp - src/mappers/193.cpp - src/mappers/200.cpp - src/mappers/201.cpp - src/mappers/202.cpp - src/mappers/203.cpp - src/mappers/204.cpp - src/mappers/21.cpp - src/mappers/212.cpp - src/mappers/213.cpp - src/mappers/214.cpp - src/mappers/215.cpp - src/mappers/217.cpp - src/mappers/22.cpp - src/mappers/225.cpp - src/mappers/227.cpp - src/mappers/228.cpp - src/mappers/229.cpp - src/mappers/23.cpp - src/mappers/230.cpp - src/mappers/231.cpp - src/mappers/232.cpp - src/mappers/234.cpp - src/mappers/240.cpp - src/mappers/241.cpp - src/mappers/242.cpp - src/mappers/244.cpp - src/mappers/246.cpp - src/mappers/24and26.cpp - src/mappers/25.cpp - src/mappers/255.cpp - src/mappers/27.cpp - src/mappers/32.cpp - src/mappers/33.cpp - src/mappers/40.cpp - src/mappers/41.cpp - src/mappers/42.cpp - src/mappers/43.cpp - src/mappers/46.cpp - src/mappers/50.cpp - src/mappers/51.cpp - src/mappers/59.cpp - src/mappers/6.cpp - src/mappers/60.cpp - src/mappers/61.cpp - src/mappers/62.cpp - src/mappers/65.cpp - src/mappers/67.cpp - src/mappers/68.cpp - src/mappers/69.cpp - src/mappers/71.cpp - src/mappers/72.cpp - src/mappers/73.cpp - src/mappers/75.cpp - src/mappers/76.cpp - src/mappers/77.cpp - src/mappers/79.cpp - src/mappers/8.cpp - src/mappers/80.cpp - src/mappers/82.cpp - src/mappers/83.cpp - src/mappers/85.cpp - src/mappers/86.cpp - src/mappers/89.cpp - src/mappers/91.cpp - src/mappers/92.cpp - src/mappers/97.cpp - src/mappers/99.cpp - src/mappers/__226.cpp - src/mappers/emu2413.c - src/mappers/mmc2and4.cpp - src/mappers/simple.cpp - src/utils/crc32.cpp - src/utils/endian.cpp - src/utils/general.cpp - src/utils/md5.cpp - src/utils/memory.cpp - src/utils/unzip.cpp - src/utils/xstring.cpp +add_custom_command( + OUTPUT ${EXECUTABLE_OUTPUT_PATH}/fceux.chm + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/src/drivers/win/help/fceux.chm ${EXECUTABLE_OUTPUT_PATH}/fceux.chm + DEPENDS ${CMAKE_SOURCE_DIR}/src/drivers/win/help/fceux.chm + VERBATIM ) - -set(SRC_DRIVERS_COMMON - src/drivers/common/args.cpp - src/drivers/common/cheat.cpp - src/drivers/common/config.cpp - src/drivers/common/configSys.cpp - src/drivers/common/hq2x.cpp - src/drivers/common/hq3x.cpp - src/drivers/common/scale2x.cpp - src/drivers/common/scale3x.cpp - src/drivers/common/scalebit.cpp - src/drivers/common/vidblit.cpp +add_custom_target( + InstallHelpFile + ALL + DEPENDS ${EXECUTABLE_OUTPUT_PATH}/fceux.chm ) - -set(SRC_DRIVERS_SDL - src/drivers/sdl/config.cpp - src/drivers/sdl/input.cpp - src/drivers/sdl/sdl.cpp - src/drivers/sdl/sdl-joystick.cpp - src/drivers/sdl/sdl-sound.cpp - src/drivers/sdl/sdl-throttle.cpp - src/drivers/sdl/sdl-video.cpp - src/drivers/sdl/unix-netplay.cpp -) - -if(FCEUX_SDL_OPENGL) - set(SRC_DRIVERS_SDL ${SRC_DRIVERS_SDL} src/drivers/sdl/sdl-opengl.cpp) -endif(FCEUX_SDL_OPENGL) - -set(SRC_DRIVERS_WIN - src/drivers/win/args.cpp - src/drivers/win/aviout.cpp - src/drivers/win/basicbot.cpp - src/drivers/win/cdlogger.cpp - src/drivers/win/cheat.cpp - src/drivers/win/common.cpp - src/drivers/win/config.cpp - src/drivers/win/debugger.cpp - src/drivers/win/debuggersp.cpp - src/drivers/win/directories.cpp - src/drivers/win/gui.cpp - src/drivers/win/guiconfig.cpp - src/drivers/win/help.cpp - src/drivers/win/input.cpp - src/drivers/win/joystick.cpp - src/drivers/win/keyboard.cpp - src/drivers/win/log.cpp - src/drivers/win/main.cpp - src/drivers/win/mapinput.cpp - src/drivers/win/memview.cpp - src/drivers/win/memviewsp.cpp - src/drivers/win/memwatch.cpp - src/drivers/win/monitor.cpp - src/drivers/win/netplay.cpp - src/drivers/win/ntview.cpp - src/drivers/win/OutputDS.cpp - src/drivers/win/palette.cpp - src/drivers/win/ppuview.cpp - src/drivers/win/pref.cpp - src/drivers/win/replay.cpp - src/drivers/win/res.rc - src/drivers/win/sound.cpp - src/drivers/win/state.cpp - src/drivers/win/tasedit.cpp - src/drivers/win/throttle.cpp - src/drivers/win/timing.cpp - src/drivers/win/tracer.cpp - src/drivers/win/video.cpp - src/drivers/win/wave.cpp - src/drivers/win/window.cpp - src/drivers/win/zlib/adler32.c - src/drivers/win/zlib/compress.c - src/drivers/win/zlib/crc32.c - src/drivers/win/zlib/deflate.c - src/drivers/win/zlib/gzio.c - src/drivers/win/zlib/infblock.c - src/drivers/win/zlib/infcodes.c - src/drivers/win/zlib/inffast.c - src/drivers/win/zlib/inflate.c - src/drivers/win/zlib/inftrees.c - src/drivers/win/zlib/infutil.c - src/drivers/win/zlib/trees.c - src/drivers/win/zlib/uncompr.c - src/drivers/win/zlib/zutil.c -) - -include_directories( . src ) -add_definitions( -DNETWORK ) - -if(WIN32) - set(SOURCES ${SRC_CORE} ${SRC_DRIVERS_COMMON} ${SRC_DRIVERS_WIN}) - include_directories( src/drivers/win/directx src/drivers/win/zlib ) - add_definitions( - -DWIN32 - -DFCEUDEF_DEBUGGER - -D_USE_SHARED_MEMORY_ - -DPSS_STYLE=2 - -DNOMINMAX - ) - link_directories( src/drivers/win/directx ) -else(WIN32) - set(SOURCES ${SRC_CORE} ${SRC_DRIVERS_COMMON} ${SRC_DRIVERS_SDL}) - include_directories( ${SDL_INCLUDE_DIR} ${ZLIB_INCLUDE_DIR} ) - add_definitions( ${SDL_DEFINITIONS} ${ZLIB_DEFINITIONS} ) - if(FCEUX_SDL_OPENGL) - add_definitions( -DOPENGL ) - include_directories( ${OPENGL_INCLUDE_DIR} ) - endif(FCEUX_SDL_OPENGL) -endif(WIN32) - -if(APPLE) - add_definitions( -DPSS_STYLE=4 ) -else(APPLE) - if(UNIX) - add_definitions( -DPSS_STYLE=1 ) - endif(UNIX) -endif(APPLE) - -if(MINGW) - add_definitions( -DNEED_MINGW_HACKS -D_WIN32_IE=0x0600 ) -endif(MINGW) -if(CMAKE_COMPILER_IS_GNUCXX) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-write-strings -Wno-sign-compare") -endif(CMAKE_COMPILER_IS_GNUCXX) - -if(FCEUX_FRAMESKIP) - add_definitions( -DFRAMESKIP ) -endif(FCEUX_FRAMESKIP) - -if(NOT FCEUX_FORCE_BE) - if(FCEUX_FORCE_LE) - add_definitions( -DLSB_FIRST ) - else(FCEUX_FORCE_LE) - test_big_endian(SYS_IS_BE) - if(NOT SYS_IS_BE) - add_definitions( -DLSB_FIRST ) - endif(NOT SYS_IS_BE) - endif(FCEUX_FORCE_LE) -endif(NOT FCEUX_FORCE_BE) - -check_function_exists(asprintf HAVE_ASPRINTF) -if(HAVE_ASPRINTF) - add_definitions( -DHAVE_ASPRINTF ) -endif(HAVE_ASPRINTF) - -add_executable( fceux ${SOURCES} ) - -if(WIN32) - target_link_libraries( fceux rpcrt4 comctl32 vfw32 winmm ws2_32 htmlhelp - comdlg32 ole32 gdi32 - dsound dxguid ddraw dinput - ) -else(WIN32) - target_link_libraries( fceux ${SDL_LIBRARY} ${ZLIB_LIBRARIES} ) - if(FCEUX_SDL_OPENGL) - target_link_libraries( fceux ${OPENGL_gl_LIBRARY} ) - endif(FCEUX_SDL_OPENGL) -endif(WIN32) - -#TODO: Add rules -# Put built executable in bin/ -# if(WIN32), copy src/drivers/win/help/fceux.chm into bin/ diff --git a/cmake/cross-mingw32/CMakeLists.txt b/cmake/cross-mingw32/CMakeLists.txt new file mode 100644 index 00000000..9d36cf4b --- /dev/null +++ b/cmake/cross-mingw32/CMakeLists.txt @@ -0,0 +1,2 @@ +add_subdirectory(release) +add_subdirectory(debug) diff --git a/cmake/cross-mingw32/debug/CMakeLists.txt b/cmake/cross-mingw32/debug/CMakeLists.txt new file mode 100644 index 00000000..15616426 --- /dev/null +++ b/cmake/cross-mingw32/debug/CMakeLists.txt @@ -0,0 +1,3 @@ +project("fceux: cross-mingw32 debug") +set(FCEUX_EXE_NAME fceuxDBG.exe) +include(${CMAKE_SOURCE_DIR}/cmake/cross-mingw32/fceux_cross-mingw32.cmake) diff --git a/cmake/cross-mingw32/fceux_cross-mingw32.cmake b/cmake/cross-mingw32/fceux_cross-mingw32.cmake new file mode 100644 index 00000000..bf2ceb09 --- /dev/null +++ b/cmake/cross-mingw32/fceux_cross-mingw32.cmake @@ -0,0 +1,29 @@ +include(CheckIncludeFile) + +# Find mingw by looking for windows.h; set HOST accordingly. +find_path(PATH_TO_WINDOWS_H windows.h + /usr/i386-mingw32msvc/mingw/include + /usr/i586-mingw32msvc/mingw/include + /usr/i686-mingw32msvc/mingw/include + /usr/i386-mingw32/mingw/include + /usr/i586-mingw32/mingw/include + /usr/i686-mingw32/mingw/include +) +string(REGEX MATCH "i.86-[^/]*" HOST ${PATH_TO_WINDOWS_H}) + +set(CMAKE_CROSSCOMPILING TRUE) +set(MINGW TRUE) +set(WIN32 TRUE) +set(APPLE FALSE) +set(UNIX FALSE) +set(CMAKE_SYSTEM_NAME Windows) +set(CMAKE_C_COMPILER "${HOST}-gcc") +set(CMAKE_CXX_COMPILER "${HOST}-g++") +set(CMAKE_RC_COMPILER "${HOST}-windres") + +set(CMAKE_FIND_ROOT_PATH "/usr/${HOST}") +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) + +include(${CMAKE_SOURCE_DIR}/cmake/fceux.cmake) diff --git a/cmake/cross-mingw32/release/CMakeLists.txt b/cmake/cross-mingw32/release/CMakeLists.txt new file mode 100644 index 00000000..7daf882b --- /dev/null +++ b/cmake/cross-mingw32/release/CMakeLists.txt @@ -0,0 +1,3 @@ +project("fceux: cross-mingw32 release") +set(FCEUX_EXE_NAME fceuxREL.exe) +include(${CMAKE_SOURCE_DIR}/cmake/cross-mingw32/fceux_cross-mingw32.cmake) diff --git a/cmake/fceux.cmake b/cmake/fceux.cmake new file mode 100644 index 00000000..2be10dfc --- /dev/null +++ b/cmake/fceux.cmake @@ -0,0 +1,358 @@ +#TODO: install generated exe's, appropriately named, in bin/ +include(CheckFunctionExists) +include(TestBigEndian) + +option(FCEUX_FORCE_LE "Build for a little-endian target" OFF) +option(FCEUX_FORCE_BE "Build for a big-endian target" OFF) +option(FCEUX_FRAMESKIP "Build legacy frameskip code" OFF) + +if(NOT WIN32) + option(FCEUX_SDL_OPENGL "Build with OpenGL support" ON) + find_package(SDL REQUIRED) + find_package(ZLIB REQUIRED) + if(FCEUX_SDL_OPENGL) + find_package(OpenGL REQUIRED) + endif(FCEUX_SDL_OPENGL) +endif(NOT WIN32) + +set(SRC_CORE + ${CMAKE_SOURCE_DIR}/src/asm.cpp + ${CMAKE_SOURCE_DIR}/src/cart.cpp + ${CMAKE_SOURCE_DIR}/src/cheat.cpp + ${CMAKE_SOURCE_DIR}/src/conddebug.cpp + ${CMAKE_SOURCE_DIR}/src/config.cpp + ${CMAKE_SOURCE_DIR}/src/debug.cpp + ${CMAKE_SOURCE_DIR}/src/drawing.cpp + ${CMAKE_SOURCE_DIR}/src/fceu.cpp + ${CMAKE_SOURCE_DIR}/src/fds.cpp + ${CMAKE_SOURCE_DIR}/src/file.cpp + ${CMAKE_SOURCE_DIR}/src/filter.cpp + ${CMAKE_SOURCE_DIR}/src/ines.cpp + ${CMAKE_SOURCE_DIR}/src/input.cpp + ${CMAKE_SOURCE_DIR}/src/movie.cpp + ${CMAKE_SOURCE_DIR}/src/netplay.cpp + ${CMAKE_SOURCE_DIR}/src/nsf.cpp + ${CMAKE_SOURCE_DIR}/src/palette.cpp + ${CMAKE_SOURCE_DIR}/src/ppu.cpp + ${CMAKE_SOURCE_DIR}/src/sound.cpp + ${CMAKE_SOURCE_DIR}/src/state.cpp + ${CMAKE_SOURCE_DIR}/src/unif.cpp + ${CMAKE_SOURCE_DIR}/src/video.cpp + ${CMAKE_SOURCE_DIR}/src/vsuni.cpp + ${CMAKE_SOURCE_DIR}/src/wave.cpp + ${CMAKE_SOURCE_DIR}/src/x6502.cpp + ${CMAKE_SOURCE_DIR}/src/boards/01-222.cpp + ${CMAKE_SOURCE_DIR}/src/boards/112.cpp + ${CMAKE_SOURCE_DIR}/src/boards/117.cpp + ${CMAKE_SOURCE_DIR}/src/boards/164.cpp + ${CMAKE_SOURCE_DIR}/src/boards/183.cpp + ${CMAKE_SOURCE_DIR}/src/boards/185.cpp + ${CMAKE_SOURCE_DIR}/src/boards/186.cpp + ${CMAKE_SOURCE_DIR}/src/boards/187.cpp + ${CMAKE_SOURCE_DIR}/src/boards/189.cpp + ${CMAKE_SOURCE_DIR}/src/boards/199.cpp + ${CMAKE_SOURCE_DIR}/src/boards/208.cpp + ${CMAKE_SOURCE_DIR}/src/boards/222.cpp + ${CMAKE_SOURCE_DIR}/src/boards/235.cpp + ${CMAKE_SOURCE_DIR}/src/boards/43.cpp + ${CMAKE_SOURCE_DIR}/src/boards/57.cpp + ${CMAKE_SOURCE_DIR}/src/boards/603-5052.cpp + ${CMAKE_SOURCE_DIR}/src/boards/8157.cpp + ${CMAKE_SOURCE_DIR}/src/boards/8237.cpp + ${CMAKE_SOURCE_DIR}/src/boards/88.cpp + ${CMAKE_SOURCE_DIR}/src/boards/90.cpp + ${CMAKE_SOURCE_DIR}/src/boards/95.cpp + ${CMAKE_SOURCE_DIR}/src/boards/__dummy_mapper.cpp + ${CMAKE_SOURCE_DIR}/src/boards/a9711.cpp + ${CMAKE_SOURCE_DIR}/src/boards/addrlatch.cpp + ${CMAKE_SOURCE_DIR}/src/boards/bmc13in1jy110.cpp + ${CMAKE_SOURCE_DIR}/src/boards/bmc42in1r.cpp + ${CMAKE_SOURCE_DIR}/src/boards/bmc64in1nr.cpp + ${CMAKE_SOURCE_DIR}/src/boards/bmc70in1.cpp + ${CMAKE_SOURCE_DIR}/src/boards/bonza.cpp + ${CMAKE_SOURCE_DIR}/src/boards/datalatch.cpp + ${CMAKE_SOURCE_DIR}/src/boards/deirom.cpp + ${CMAKE_SOURCE_DIR}/src/boards/dream.cpp + ${CMAKE_SOURCE_DIR}/src/boards/edu2000.cpp + ${CMAKE_SOURCE_DIR}/src/boards/fk23c.cpp + ${CMAKE_SOURCE_DIR}/src/boards/h2288.cpp + ${CMAKE_SOURCE_DIR}/src/boards/karaoke.cpp + ${CMAKE_SOURCE_DIR}/src/boards/kof97.cpp + ${CMAKE_SOURCE_DIR}/src/boards/konami-qtai.cpp + ${CMAKE_SOURCE_DIR}/src/boards/malee.cpp + ${CMAKE_SOURCE_DIR}/src/boards/mmc1.cpp + ${CMAKE_SOURCE_DIR}/src/boards/mmc3.cpp + ${CMAKE_SOURCE_DIR}/src/boards/mmc5.cpp + ${CMAKE_SOURCE_DIR}/src/boards/n-c22m.cpp + ${CMAKE_SOURCE_DIR}/src/boards/n106.cpp + ${CMAKE_SOURCE_DIR}/src/boards/novel.cpp + ${CMAKE_SOURCE_DIR}/src/boards/sachen.cpp + ${CMAKE_SOURCE_DIR}/src/boards/sheroes.cpp + ${CMAKE_SOURCE_DIR}/src/boards/sl1632.cpp + ${CMAKE_SOURCE_DIR}/src/boards/subor.cpp + ${CMAKE_SOURCE_DIR}/src/boards/super24.cpp + ${CMAKE_SOURCE_DIR}/src/boards/supervision.cpp + ${CMAKE_SOURCE_DIR}/src/boards/t-262.cpp + ${CMAKE_SOURCE_DIR}/src/boards/tengen.cpp + ${CMAKE_SOURCE_DIR}/src/input/arkanoid.cpp + ${CMAKE_SOURCE_DIR}/src/input/bworld.cpp + ${CMAKE_SOURCE_DIR}/src/input/cursor.cpp + ${CMAKE_SOURCE_DIR}/src/input/fkb.cpp + ${CMAKE_SOURCE_DIR}/src/input/ftrainer.cpp + ${CMAKE_SOURCE_DIR}/src/input/hypershot.cpp + ${CMAKE_SOURCE_DIR}/src/input/mahjong.cpp + ${CMAKE_SOURCE_DIR}/src/input/mouse.cpp + ${CMAKE_SOURCE_DIR}/src/input/oekakids.cpp + ${CMAKE_SOURCE_DIR}/src/input/powerpad.cpp + ${CMAKE_SOURCE_DIR}/src/input/quiz.cpp + ${CMAKE_SOURCE_DIR}/src/input/shadow.cpp + ${CMAKE_SOURCE_DIR}/src/input/suborkb.cpp + ${CMAKE_SOURCE_DIR}/src/input/toprider.cpp + ${CMAKE_SOURCE_DIR}/src/input/zapper.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/15.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/151.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/16.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/17.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/18.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/193.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/200.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/201.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/202.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/203.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/204.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/21.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/212.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/213.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/214.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/215.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/217.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/22.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/225.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/227.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/228.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/229.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/23.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/230.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/231.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/232.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/234.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/240.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/241.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/242.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/244.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/246.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/24and26.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/25.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/255.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/27.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/32.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/33.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/40.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/41.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/42.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/43.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/46.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/50.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/51.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/59.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/6.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/60.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/61.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/62.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/65.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/67.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/68.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/69.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/71.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/72.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/73.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/75.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/76.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/77.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/79.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/8.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/80.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/82.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/83.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/85.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/86.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/89.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/91.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/92.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/97.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/99.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/__226.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/emu2413.c + ${CMAKE_SOURCE_DIR}/src/mappers/mmc2and4.cpp + ${CMAKE_SOURCE_DIR}/src/mappers/simple.cpp + ${CMAKE_SOURCE_DIR}/src/utils/crc32.cpp + ${CMAKE_SOURCE_DIR}/src/utils/endian.cpp + ${CMAKE_SOURCE_DIR}/src/utils/general.cpp + ${CMAKE_SOURCE_DIR}/src/utils/md5.cpp + ${CMAKE_SOURCE_DIR}/src/utils/memory.cpp + ${CMAKE_SOURCE_DIR}/src/utils/unzip.cpp + ${CMAKE_SOURCE_DIR}/src/utils/xstring.cpp +) + +set(SRC_DRIVERS_COMMON + ${CMAKE_SOURCE_DIR}/src/drivers/common/args.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/common/cheat.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/common/config.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/common/configSys.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/common/hq2x.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/common/hq3x.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/common/scale2x.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/common/scale3x.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/common/scalebit.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/common/vidblit.cpp +) + +set(SRC_DRIVERS_SDL + ${CMAKE_SOURCE_DIR}/src/drivers/sdl/config.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/sdl/input.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/sdl/sdl.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/sdl/sdl-joystick.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/sdl/sdl-sound.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/sdl/sdl-throttle.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/sdl/sdl-video.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/sdl/unix-netplay.cpp +) + +if(FCEUX_SDL_OPENGL) + set(SRC_DRIVERS_SDL ${SRC_DRIVERS_SDL} ${CMAKE_SOURCE_DIR}/src/drivers/sdl/sdl-opengl.cpp) +endif(FCEUX_SDL_OPENGL) + +set(SRC_DRIVERS_WIN + ${CMAKE_SOURCE_DIR}/src/drivers/win/args.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/win/aviout.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/win/basicbot.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/win/cdlogger.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/win/cheat.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/win/common.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/win/config.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/win/debugger.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/win/debuggersp.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/win/directories.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/win/gui.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/win/guiconfig.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/win/help.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/win/input.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/win/joystick.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/win/keyboard.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/win/log.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/win/main.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/win/mapinput.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/win/memview.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/win/memviewsp.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/win/memwatch.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/win/monitor.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/win/netplay.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/win/ntview.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/win/OutputDS.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/win/palette.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/win/ppuview.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/win/pref.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/win/replay.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/win/res.rc + ${CMAKE_SOURCE_DIR}/src/drivers/win/sound.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/win/state.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/win/tasedit.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/win/throttle.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/win/timing.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/win/tracer.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/win/video.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/win/wave.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/win/window.cpp + ${CMAKE_SOURCE_DIR}/src/drivers/win/zlib/adler32.c + ${CMAKE_SOURCE_DIR}/src/drivers/win/zlib/compress.c + ${CMAKE_SOURCE_DIR}/src/drivers/win/zlib/crc32.c + ${CMAKE_SOURCE_DIR}/src/drivers/win/zlib/deflate.c + ${CMAKE_SOURCE_DIR}/src/drivers/win/zlib/gzio.c + ${CMAKE_SOURCE_DIR}/src/drivers/win/zlib/infblock.c + ${CMAKE_SOURCE_DIR}/src/drivers/win/zlib/infcodes.c + ${CMAKE_SOURCE_DIR}/src/drivers/win/zlib/inffast.c + ${CMAKE_SOURCE_DIR}/src/drivers/win/zlib/inflate.c + ${CMAKE_SOURCE_DIR}/src/drivers/win/zlib/inftrees.c + ${CMAKE_SOURCE_DIR}/src/drivers/win/zlib/infutil.c + ${CMAKE_SOURCE_DIR}/src/drivers/win/zlib/trees.c + ${CMAKE_SOURCE_DIR}/src/drivers/win/zlib/uncompr.c + ${CMAKE_SOURCE_DIR}/src/drivers/win/zlib/zutil.c +) + +set(CMAKE_INCLUDE_CURRENT_DIR ON) +include_directories( ${CMAKE_SOURCE_DIR}/src ) +add_definitions( -DNETWORK ) + +if(WIN32) + set(SOURCES ${SRC_CORE} ${SRC_DRIVERS_COMMON} ${SRC_DRIVERS_WIN}) + include_directories( ${CMAKE_SOURCE_DIR}/src/drivers/win/directx ${CMAKE_SOURCE_DIR}/src/drivers/win/zlib ) + add_definitions( + -DWIN32 + -DFCEUDEF_DEBUGGER + -D_USE_SHARED_MEMORY_ + -DPSS_STYLE=2 + -DNOMINMAX + ) + link_directories( ${CMAKE_SOURCE_DIR}/src/drivers/win/directx ) +else(WIN32) + set(SOURCES ${SRC_CORE} ${SRC_DRIVERS_COMMON} ${SRC_DRIVERS_SDL}) + include_directories( ${SDL_INCLUDE_DIR} ${ZLIB_INCLUDE_DIR} ) + add_definitions( ${SDL_DEFINITIONS} ${ZLIB_DEFINITIONS} ) + if(FCEUX_SDL_OPENGL) + add_definitions( -DOPENGL ) + include_directories( ${OPENGL_INCLUDE_DIR} ) + endif(FCEUX_SDL_OPENGL) +endif(WIN32) + +if(APPLE) + add_definitions( -DPSS_STYLE=4 ) +else(APPLE) + if(UNIX) + add_definitions( -DPSS_STYLE=1 ) + endif(UNIX) +endif(APPLE) + +if(MINGW) + add_definitions( -DNEED_MINGW_HACKS -D_WIN32_IE=0x0600 ) +endif(MINGW) +if(CMAKE_COMPILER_IS_GNUCXX) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-write-strings -Wno-sign-compare") +endif(CMAKE_COMPILER_IS_GNUCXX) + +if(FCEUX_FRAMESKIP) + add_definitions( -DFRAMESKIP ) +endif(FCEUX_FRAMESKIP) + +if(NOT FCEUX_FORCE_BE) + if(FCEUX_FORCE_LE) + add_definitions( -DLSB_FIRST ) + else(FCEUX_FORCE_LE) + test_big_endian(SYS_IS_BE) + if(NOT SYS_IS_BE) + add_definitions( -DLSB_FIRST ) + endif(NOT SYS_IS_BE) + endif(FCEUX_FORCE_LE) +endif(NOT FCEUX_FORCE_BE) + +check_function_exists(asprintf HAVE_ASPRINTF) +# HACK: cmake seems to cache HAVE_ASPRINTF and I don't know how to ask it +# to forget--even if your compiler changes. So tell it mingw=>no. +if(HAVE_ASPRINTF AND NOT MINGW) + add_definitions( -DHAVE_ASPRINTF ) +endif(HAVE_ASPRINTF AND NOT MINGW) + +add_executable( ${FCEUX_EXE_NAME} ${SOURCES} ) + +if(WIN32) + add_dependencies( ${FCEUX_EXE_NAME} InstallHelpFile ) + + target_link_libraries( ${FCEUX_EXE_NAME} rpcrt4 comctl32 vfw32 winmm ws2_32 htmlhelp + comdlg32 ole32 gdi32 + dsound dxguid ddraw dinput + ) +else(WIN32) + target_link_libraries( ${FCEUX_EXE_NAME} ${SDL_LIBRARY} ${ZLIB_LIBRARIES} ) + if(FCEUX_SDL_OPENGL) + target_link_libraries( ${FCEUX_EXE_NAME} ${OPENGL_gl_LIBRARY} ) + endif(FCEUX_SDL_OPENGL) +endif(WIN32) diff --git a/cmake/native/CMakeLists.txt b/cmake/native/CMakeLists.txt new file mode 100644 index 00000000..9d36cf4b --- /dev/null +++ b/cmake/native/CMakeLists.txt @@ -0,0 +1,2 @@ +add_subdirectory(release) +add_subdirectory(debug) diff --git a/cmake/native/debug/CMakeLists.txt b/cmake/native/debug/CMakeLists.txt new file mode 100644 index 00000000..f12195b7 --- /dev/null +++ b/cmake/native/debug/CMakeLists.txt @@ -0,0 +1,3 @@ +project("fceux: native debug") +set(FCEUX_EXE_NAME fceuxDBG) +include(${CMAKE_SOURCE_DIR}/cmake/native/fceux_native.cmake) diff --git a/cmake/native/fceux_native.cmake b/cmake/native/fceux_native.cmake new file mode 100644 index 00000000..474a4288 --- /dev/null +++ b/cmake/native/fceux_native.cmake @@ -0,0 +1 @@ +include(${CMAKE_SOURCE_DIR}/cmake/fceux.cmake) diff --git a/cmake/native/release/CMakeLists.txt b/cmake/native/release/CMakeLists.txt new file mode 100644 index 00000000..d9a2a932 --- /dev/null +++ b/cmake/native/release/CMakeLists.txt @@ -0,0 +1,3 @@ +project("fceux: native release") +set(FCEUX_EXE_NAME fceuxREL) +include(${CMAKE_SOURCE_DIR}/cmake/native/fceux_native.cmake)