From: K.Ohta Date: Tue, 29 Sep 2020 15:04:44 +0000 (+0900) Subject: [BUILD][CMAKE][WIP] TRY: Not using build script, only cmake. X-Git-Url: http://git.sourceforge.jp/view?a=commitdiff_plain;h=27382cee365942bc23f61ca460ec254458e56b98;p=csp-qt%2Fcommon_source_project-fm7.git [BUILD][CMAKE][WIP] TRY: Not using build script, only cmake. --- diff --git a/.gitignore b/.gitignore index 8ca7bf2b0..c5a81c16c 100644 --- a/.gitignore +++ b/.gitignore @@ -164,6 +164,8 @@ ipch/ node_modules/ packages/* publish/ +source/*/build/* +source/build/* source/build-cmake/*/build-win32/* source/build-cmake/*/build/* source/src/vm/libcpu_newdev/mame0185/* diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt new file mode 100644 index 000000000..c94c5dec7 --- /dev/null +++ b/source/CMakeLists.txt @@ -0,0 +1,28 @@ +#message(FATAL_ERROR, "This CMakefile is still imcompleted, please use build/foo.sh, older build system") + +message("* common/common") +# Build Common Sourcecode Project, Agar. +# (C) 2014 K.Ohta +# This is part of , but license is apache 2.2, +# this part was written only me. + +cmake_minimum_required (VERSION 2.8) +cmake_policy(SET CMP0011 NEW) + + +project (CSP + DESCRIPTION "Common Source Code Project/Qt") + +#ToDo +#set(CMAKE_SYSTEM_PROCESSOR ${ARCHITECTURE} CACHE STRING "Set processor to build.") +set(USE_DEVICES_SHARED_LIB ON CACHE BOOL "Make devices as one shared library.") +set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/build-cmake/cmake/single-build") +set(BUILD_FM7 ON CACHE BOOL "Build for FM7") + +include(config) + +include(config_emufm7) + +include(config_fmtowns) + + diff --git a/source/build-cmake/3rdparty/FindLibAV.cmake b/source/build-cmake/3rdparty/FindLibAV.cmake index 2d1764052..f68fc4b60 100644 --- a/source/build-cmake/3rdparty/FindLibAV.cmake +++ b/source/build-cmake/3rdparty/FindLibAV.cmake @@ -50,12 +50,12 @@ ELSE (CMAKE_VERSION VERSION_GREATER 2.8.7) ENDIF (CMAKE_VERSION VERSION_GREATER 2.8.7) FIND_PATH (LIBAV_ROOT_DIR - NAMES include/libavcodec/avcodec.h - include/libavdevice/avdevice.h - include/libavfilter/avfilter.h - include/libavutil/avutil.h - include/libswresample/swresample.h - include/libswscale/swscale.h + NAMES libavcodec/avcodec.h + libavdevice/avdevice.h + libavfilter/avfilter.h + libavutil/avutil.h + libswresample/swresample.h + libswscale/swscale.h PATHS ENV LIBAVROOT DOC "libav root directory") diff --git a/source/build-cmake/cmake/single-build/CompressExeWithUpx.cmake b/source/build-cmake/cmake/single-build/CompressExeWithUpx.cmake new file mode 120000 index 000000000..f11961f3b --- /dev/null +++ b/source/build-cmake/cmake/single-build/CompressExeWithUpx.cmake @@ -0,0 +1 @@ +../../3rdparty/CompressExeWithUpx.cmake \ No newline at end of file diff --git a/source/build-cmake/cmake/single-build/FindIconv.cmake b/source/build-cmake/cmake/single-build/FindIconv.cmake new file mode 120000 index 000000000..01046495f --- /dev/null +++ b/source/build-cmake/cmake/single-build/FindIconv.cmake @@ -0,0 +1 @@ +../../3rdparty/FindIconv.cmake \ No newline at end of file diff --git a/source/build-cmake/cmake/single-build/FindLibAV.cmake b/source/build-cmake/cmake/single-build/FindLibAV.cmake new file mode 120000 index 000000000..b89845226 --- /dev/null +++ b/source/build-cmake/cmake/single-build/FindLibAV.cmake @@ -0,0 +1 @@ +../../3rdparty/FindLibAV.cmake \ No newline at end of file diff --git a/source/build-cmake/cmake/single-build/FindOpenCL.cmake b/source/build-cmake/cmake/single-build/FindOpenCL.cmake new file mode 120000 index 000000000..f679e4c0a --- /dev/null +++ b/source/build-cmake/cmake/single-build/FindOpenCL.cmake @@ -0,0 +1 @@ +../../3rdparty/findopencl/FindOpenCL.cmake \ No newline at end of file diff --git a/source/build-cmake/cmake/single-build/PrecompiledHeader.cmake b/source/build-cmake/cmake/single-build/PrecompiledHeader.cmake new file mode 100644 index 000000000..1e578d261 --- /dev/null +++ b/source/build-cmake/cmake/single-build/PrecompiledHeader.cmake @@ -0,0 +1,214 @@ +# Function for setting up precompiled headers. Usage: +# +# add_library/executable(target +# pchheader.c pchheader.cpp pchheader.h) +# +# add_precompiled_header(target pchheader.h +# [FORCEINCLUDE] +# [SOURCE_C pchheader.c] +# [SOURCE_CXX pchheader.cpp]) +# +# Options: +# +# FORCEINCLUDE: Add compiler flags to automatically include the +# pchheader.h from every source file. Works with both GCC and +# MSVC. This is recommended. +# +# SOURCE_C/CXX: Specifies the .c/.cpp source file that includes +# pchheader.h for generating the pre-compiled header +# output. Defaults to pchheader.c. Only required for MSVC. +# +# Caveats: +# +# * Its not currently possible to use the same precompiled-header in +# more than a single target in the same directory (No way to set +# the source file properties differently for each target). +# +# * MSVC: A source file with the same name as the header must exist +# and be included in the target (E.g. header.cpp). Name of file +# can be changed using the SOURCE_CXX/SOURCE_C options. +# +# License: +# +# Copyright (C) 2009-2017 Lars Christensen +# +# Permission is hereby granted, free of charge, to any person +# obtaining a copy of this software and associated documentation files +# (the 'Software') deal in the Software without restriction, +# including without limitation the rights to use, copy, modify, merge, +# publish, distribute, sublicense, and/or sell copies of the Software, +# and to permit persons to whom the Software is furnished to do so, +# subject to the following conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +include(CMakeParseArguments) + +macro(combine_arguments _variable) + set(_result "") + foreach(_element ${${_variable}}) + set(_result "${_result} \"${_element}\"") + endforeach() + string(STRIP "${_result}" _result) + set(${_variable} "${_result}") +endmacro() + +function(export_all_flags _filename) + set(_include_directories "$") + set(_compile_definitions "$") + set(_compile_flags "$") + set(_compile_options "$") + set(_include_directories "$<$:-I$\n>") + set(_compile_definitions "$<$:-D$\n>") + set(_compile_flags "$<$:$\n>") + set(_compile_options "$<$:$\n>") + file(GENERATE OUTPUT "${_filename}" CONTENT "${_compile_definitions}${_include_directories}${_compile_flags}${_compile_options}\n") +endfunction() + +function(add_precompiled_header _target _input) + cmake_parse_arguments(_PCH "FORCEINCLUDE" "SOURCE_CXX;SOURCE_C" "" ${ARGN}) + + get_filename_component(_input_we ${_input} NAME_WE) + if(NOT _PCH_SOURCE_CXX) + set(_PCH_SOURCE_CXX "${_input_we}.cpp") + endif() + if(NOT _PCH_SOURCE_C) + set(_PCH_SOURCE_C "${_input_we}.c") + endif() + + if(MSVC) + set(_pch_cxx_pch "${CMAKE_CFG_INTDIR}/cxx_${_input_we}.pch") + set(_pch_c_pch "${CMAKE_CFG_INTDIR}/c_${_input_we}.pch") + + get_target_property(sources ${_target} SOURCES) + foreach(_source ${sources}) + set(_pch_compile_flags "") + if(_source MATCHES \\.\(cc|cxx|cpp|c\)$) + if(_source MATCHES \\.\(cpp|cxx|cc\)$) + set(_pch_header "${_input}") + set(_pch "${_pch_cxx_pch}") + else() + set(_pch_header "${_input}") + set(_pch "${_pch_c_pch}") + endif() + + if(_source STREQUAL "${_PCH_SOURCE_CXX}") + set(_pch_compile_flags "${_pch_compile_flags} \"/Fp${_pch_cxx_pch}\" \"/Yc${_input}\"") + set(_pch_source_cxx_found TRUE) + set_source_files_properties("${_source}" PROPERTIES OBJECT_OUTPUTS "${_pch_cxx_pch}") + elseif(_source STREQUAL "${_PCH_SOURCE_C}") + set(_pch_compile_flags "${_pch_compile_flags} \"/Fp${_pch_c_pch}\" \"/Yc${_input}\"") + set(_pch_source_c_found TRUE) + set_source_files_properties("${_source}" PROPERTIES OBJECT_OUTPUTS "${_pch_c_pch}") + else() + if(_source MATCHES \\.\(cpp|cxx|cc\)$) + set(_pch_compile_flags "${_pch_compile_flags} \"/Fp${_pch_cxx_pch}\" \"/Yu${_input}\"") + set(_pch_source_cxx_needed TRUE) + set_source_files_properties("${_source}" PROPERTIES OBJECT_DEPENDS "${_pch_cxx_pch}") + else() + set(_pch_compile_flags "${_pch_compile_flags} \"/Fp${_pch_c_pch}\" \"/Yu${_input}\"") + set(_pch_source_c_needed TRUE) + set_source_files_properties("${_source}" PROPERTIES OBJECT_DEPENDS "${_pch_c_pch}") + endif() + if(_PCH_FORCEINCLUDE) + set(_pch_compile_flags "${_pch_compile_flags} /FI${_input}") + endif(_PCH_FORCEINCLUDE) + endif() + + get_source_file_property(_object_depends "${_source}" OBJECT_DEPENDS) + if(NOT _object_depends) + set(_object_depends) + endif() + if(_PCH_FORCEINCLUDE) + list(APPEND _object_depends "${CMAKE_CURRENT_SOURCE_DIR}/${_pch_header}") + endif() + + set_source_files_properties(${_source} PROPERTIES + COMPILE_FLAGS "${_pch_compile_flags}" + OBJECT_DEPENDS "${_object_depends}") + endif() + endforeach() + + if(_pch_source_cxx_needed AND NOT _pch_source_cxx_found) + message(FATAL_ERROR "A source file ${_PCH_SOURCE_CXX} for ${_input} is required for MSVC builds. Can be set with the SOURCE_CXX option.") + endif() + if(_pch_source_c_needed AND NOT _pch_source_c_found) + message(FATAL_ERROR "A source file ${_PCH_SOURCE_C} for ${_input} is required for MSVC builds. Can be set with the SOURCE_C option.") + endif() + endif(MSVC) + + if(CMAKE_COMPILER_IS_GNUCXX) + get_filename_component(_name ${_input} NAME) + set(_pch_header "${CMAKE_CURRENT_SOURCE_DIR}/${_input}") + set(_pch_binary_dir "${CMAKE_CURRENT_BINARY_DIR}/${_target}_pch") + set(_pchfile "${_pch_binary_dir}/${_input}") + set(_outdir "${CMAKE_CURRENT_BINARY_DIR}/${_target}_pch/${_name}.gch") + file(MAKE_DIRECTORY "${_outdir}") + set(_output_cxx "${_outdir}/.c++") + set(_output_c "${_outdir}/.c") + + set(_pch_flags_file "${_pch_binary_dir}/compile_flags.rsp") + export_all_flags("${_pch_flags_file}") + set(_compiler_FLAGS "@${_pch_flags_file}") + add_custom_command( + OUTPUT "${_pchfile}" + COMMAND "${CMAKE_COMMAND}" -E copy "${_pch_header}" "${_pchfile}" + DEPENDS "${_pch_header}" + COMMENT "Updating ${_name}") + add_custom_command( + OUTPUT "${_output_cxx}" + COMMAND "${CMAKE_CXX_COMPILER}" ${_compiler_FLAGS} -x c++-header -o "${_output_cxx}" "${_pchfile}" + DEPENDS "${_pchfile}" "${_pch_flags_file}" + COMMENT "Precompiling ${_name} for ${_target} (C++)") + add_custom_command( + OUTPUT "${_output_c}" + COMMAND "${CMAKE_C_COMPILER}" ${_compiler_FLAGS} -x c-header -o "${_output_c}" "${_pchfile}" + DEPENDS "${_pchfile}" "${_pch_flags_file}" + COMMENT "Precompiling ${_name} for ${_target} (C)") + + get_property(_sources TARGET ${_target} PROPERTY SOURCES) + foreach(_source ${_sources}) + set(_pch_compile_flags "") + + if(_source MATCHES \\.\(cc|cxx|cpp|c\)$) + get_source_file_property(_pch_compile_flags "${_source}" COMPILE_FLAGS) + if(NOT _pch_compile_flags) + set(_pch_compile_flags) + endif() + separate_arguments(_pch_compile_flags) + list(APPEND _pch_compile_flags -Winvalid-pch) + if(_PCH_FORCEINCLUDE) + list(APPEND _pch_compile_flags -include "${_pchfile}") + else(_PCH_FORCEINCLUDE) + list(APPEND _pch_compile_flags "-I${_pch_binary_dir}") + endif(_PCH_FORCEINCLUDE) + + get_source_file_property(_object_depends "${_source}" OBJECT_DEPENDS) + if(NOT _object_depends) + set(_object_depends) + endif() + list(APPEND _object_depends "${_pchfile}") + if(_source MATCHES \\.\(cc|cxx|cpp\)$) + list(APPEND _object_depends "${_output_cxx}") + else() + list(APPEND _object_depends "${_output_c}") + endif() + + combine_arguments(_pch_compile_flags) + set_source_files_properties(${_source} PROPERTIES + COMPILE_FLAGS "${_pch_compile_flags}" + OBJECT_DEPENDS "${_object_depends}") + endif() + endforeach() + endif(CMAKE_COMPILER_IS_GNUCXX) +endfunction() diff --git a/source/build-cmake/cmake/single-build/SetMSVCDebugPath.cmake b/source/build-cmake/cmake/single-build/SetMSVCDebugPath.cmake new file mode 120000 index 000000000..41e40942f --- /dev/null +++ b/source/build-cmake/cmake/single-build/SetMSVCDebugPath.cmake @@ -0,0 +1 @@ +../../3rdparty/SetMSVCDebugPath.cmake \ No newline at end of file diff --git a/source/build-cmake/cmake/single-build/SplitDebugInformation.cmake b/source/build-cmake/cmake/single-build/SplitDebugInformation.cmake new file mode 120000 index 000000000..350f3083c --- /dev/null +++ b/source/build-cmake/cmake/single-build/SplitDebugInformation.cmake @@ -0,0 +1 @@ +../../3rdparty/SplitDebugInformation.cmake \ No newline at end of file diff --git a/source/build-cmake/cmake/single-build/compile_gettext_catalogue.cmake b/source/build-cmake/cmake/single-build/compile_gettext_catalogue.cmake new file mode 100644 index 000000000..6ff0225f1 --- /dev/null +++ b/source/build-cmake/cmake/single-build/compile_gettext_catalogue.cmake @@ -0,0 +1,29 @@ +## +## Compile Gettext's I18N catalogue (foo.po to out.mo) +## And install to dest. +## (C) 2014 K.Ohta +## requires find_package(Gettext) befor define this. +## License: Apache 2 +## +cmake_minimum_required (VERSION 2.6) + +function(compile_i18n_po_to_mo in target) + if(GETTEXT_FOUND) + add_custom_target(${target} ALL + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${in} + COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} + ${CMAKE_CURRENT_SOURCE_DIR}/${in} + -o ${CMAKE_CURRENT_BINARY_DIR}/messages.mo + ) + endif() +endfunction(compile_i18n_po_to_mo) + + +function(install_i18n_catalogue in dest) + if(GETTEXT_FOUND) + install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${in} + ${CMAKE_CURRENT_BINARY_DIR}/messages.mo + DESTINATION ${dest}/LC_MESSAGES) + endif() +endfunction(install_i18n_catalogue) + diff --git a/source/build-cmake/cmake/single-build/config.cmake b/source/build-cmake/cmake/single-build/config.cmake new file mode 100644 index 000000000..dc9a6d623 --- /dev/null +++ b/source/build-cmake/cmake/single-build/config.cmake @@ -0,0 +1,424 @@ + + +include(CheckFunctionExists) + +# Still not as one shared lib with win32 +if(WIN32) + set(USE_DEVICES_SHARED_LIB OFF) +endif() + +if(USE_DEVICES_SHARED_LIB) + add_definitions(-DUSE_SHARED_DLL) + add_definitions(-DUSE_SHARED_UI_DLL) + add_definitions(-DUSE_SHARED_DEVICES_DLL) +endif() + + +#ccache +find_program(USE_CCACHE ccache) +if(USE_CCACHE) + SET_PROPERTY(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache) +endif() + +if(WIN32) + FIND_PACKAGE(Qt5Core REQUIRED) +else() + FIND_PACKAGE(Qt5Widgets REQUIRED) +endif() + FIND_PACKAGE(Qt5Gui REQUIRED) + FIND_PACKAGE(Qt5OpenGL REQUIRED) + include_directories(${Qt5Widgets_INCLUDE_DIRS}) + include_directories(${Qt5Core_INCLUDE_DIRS}) + include_directories(${Qt5Gui_INCLUDE_DIRS}) + include_directories(${Qt5OpenGL_INCLUDE_DIRS}) + add_definitions(-D_USE_OPENGL -DUSE_OPENGL) +if(DEFINED QT5_ROOT_PATH) + SET(CMAKE_FIND_ROOT_PATH ${QT5_ROOT_PATH} ${CMAKE_FIND_ROOT_PATH}) +endif() + +#socket +function(APPEND_SOCKET_FEATURE) + if(USE_SOCKET) + FIND_PACKAGE(Qt5Network REQUIRED) + include_directories(${Qt5Network_INCLUDE_DIRS}) + endif() +endfunction(APPEND_SOCKET_FEATURE) + +SET(USE_QT_5 ON) +set(USE_QT5_4_APIS OFF CACHE BOOL "Build with Qt5.4 (or later) APIs if you can.") +set(USE_GCC_OLD_ABI ON CACHE BOOL "Build with older GCC ABIs if you can.") +set(USE_SDL2 ON CACHE BOOL "Build with libSDL2. DIsable is building with libSDL1.") +set(USE_MOVIE_SAVER OFF CACHE BOOL "Save screen/audio as MP4 MOVIE. Needs libav .") +set(USE_MOVIE_LOADER OFF CACHE BOOL "Load movie from screen for some VMs. Needs libav .") +set(USE_LTO ON CACHE BOOL "Use link-time-optimization to build.") + +if(USE_LTO) + # set_property(DIRECTORY PROPERTY INTERPROCEDURAL_OPTIMIZATION true) +else() + # set_property(DIRECTORY PROPERTY INTERPROCEDURAL_OPTIMIZATION false) +endif() + +add_definitions(-D_USE_QT5) + +if(USE_QT5_4_APIS) + add_definitions(-D_USE_QT_5_4) +else() + #add_definitions(-DQT_NO_VERSION_TAGGING) +endif() + +if(USE_GCC_OLD_ABI) + add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0) +else() + add_definitions(-D_GLIBCXX_USE_CXX11_ABI=1) +endif() + +SET(CMAKE_AUTOMOC OFF) +SET(CMAKE_AUTORCC ON) +SET(CMAKE_INCLUDE_CURRENT_DIR ON) + +add_definitions(-D_USE_QT) +add_definitions(-DUSE_QT) +add_definitions(-DQT_MAJOR_VERSION=${Qt5Widgets_VERSION_MAJOR}) +add_definitions(-DQT_MINOR_VERSION=${Qt5Widgets_VERSION_MINOR}) + +if(USE_OPENMP) + find_package(OpenMP) + include_directories(${OPENMP_INCLUDE_PATH}) + if(OPENMP_FOUND) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") + endif() +endif() + +find_package(Threads) +include_directories(${THREADS_INCLUDE_PATH}) + +include(FindPkgConfig) + +find_package(Git) +if(GIT_FOUND) + execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse HEAD OUTPUT_VARIABLE __tstr) + string(FIND ${__tstr} "fatal" __notfound) + string(REPLACE "\n" "" __tstr2 ${__tstr}) + if(${__notfound} EQUAL -1) + add_definitions(-D__GIT_REPO_VERSION=\"${__tstr2}\") + else() + add_definitions(-U__GIT_REPO_VERSION) + endif() +endif() + +string(TIMESTAMP __build_date "%b %d,%Y %H:%M:%S UTC" UTC) +add_definitions(-D__BUILD_DATE=\"${__build_date}\") + +include(FindLibAV) + if(LIBAV_FOUND) + add_definitions(-DUSE_LIBAV) + if(USE_MOVIE_SAVER) + add_definitions(-DUSE_MOVIE_SAVER) + endif() + if(USE_MOVIE_LOADER) + add_definitions(-DUSE_MOVIE_LOADER) + endif() + add_definitions(-D__STDC_CONSTANT_MACROS) + add_definitions(-D__STDC_FORMAT_MACROS) + else() + set(USE_MOVIE_SAVER OFF) + set(USE_MOVIE_LOADER OFF) + set(LIBAV_LIBRARIES "") + endif() + +if(USE_SDL2) + if(CMAKE_CROSSCOMPILING) + include_directories(${SDL2_INCLUDE_DIRS}) + else() + pkg_search_module(SDL2 REQUIRED sdl2) + include_directories(${SDL2_INCLUDE_DIRS}) + endif() + set(SDL_LIBS ${SDL2_LIBRARIES}) + add_definitions(-DUSE_SDL2) +else() + if(CMAKE_CROSSCOMPILING) + include_directories(${SDL_INCLUDE_DIRS}) + set(SDL_LIBS ${SDL_LIBRARIES}) + else() + include(FindSDL) + #pkg_search_module(SDL REQUIRED sdl) + #include_directories(${SDL_INCLUDE_DIRS}) + include_directories(${SDL_INCLUDE_DIR}) + set(SDL_LIBS ${SDL_LIBRARY}) + endif() +endif() + +include(FindZLIB) +if(ZLIB_FOUND) + add_definitions(-DUSE_ZLIB) + include_directories(${ZLIB_INCLUDE_DIRS}) +endif() + +# GCC Only? +if(CMAKE_COMPILER_IS_GNUCC) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -flax-vector-conversions") +endif() + +if(CMAKE_COMPILER_IS_GNUCXX) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive -flax-vector-conversions") +endif() + + +check_function_exists("nanosleep" HAVE_NANOSLEEP) +if(NOT HAVE_NANOSLEEP) + check_library_exists("rt" "nanosleep" "" LIB_RT_HAS_NANOSLEEP) +endif(NOT HAVE_NANOSLEEP) + +if(LIB_RT_HAS_NANOSLEEP) + add_target_library(${EXEC_TARGET} rt) +endif(LIB_RT_HAS_NANOSLEEP) + +if(HAVE_NANOSLEEP OR LIB_RT_HAS_NANOSLEEP) + add_definitions(-DHAVE_NANOSLEEP) +endif(HAVE_NANOSLEEP OR LIB_RT_HAS_NANOSLEEP) + + +set(SRC_BASE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../src) + +if(USE_QT_5) + if(NOT WIN32) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC") + endif() +endif() + +#include(simd-x86) + +if(LIBAV_FOUND) + include_directories(${LIBAV_INCLUDE_DIRS}) +endif() + +# Now make DLLs +include_directories( + "${PROJECT_SOURCE_DIR}/src" + "${PROJECT_SOURCE_DIR}/src/vm" + "${PROJECT_SOURCE_DIR}/src/qt/common" + "${PROJECT_SOURCE_DIR}/src/qt/gui" + "${PROJECT_SOURCE_DIR}/src/qt/debugger" + "${PROJECT_SOURCE_DIR}/src/qt" +) + +#find_library(AVCODEC_LIBRARY avcodec) +add_subdirectory("${PROJECT_SOURCE_DIR}/src/qt" osd) +add_subdirectory("${PROJECT_SOURCE_DIR}/src/qt/avio" qt/avio) +add_subdirectory("${PROJECT_SOURCE_DIR}/src/qt/gui" qt/gui) +add_subdirectory("${PROJECT_SOURCE_DIR}/src/qt/emuutils" emu_utils) +if(USE_DEVICES_SHARED_LIB) + add_subdirectory("${PROJECT_SOURCE_DIR}/src/vm/common_vm" vm/) + add_subdirectory("${PROJECT_SOURCE_DIR}/src/vm/fmgen" vm/fmgen) +else() + add_subdirectory("${PROJECT_SOURCE_DIR}/src" common) + add_subdirectory("${PROJECT_SOURCE_DIR}/src/vm" vm) +endif() + +function(ADD_VM VM_NAME EXE_NAME VMDEF) + set(COMMON_DIRECTORY ${PROJECT_SOURCE_DIR}/src/qt/common) + set(s_qt_common_headers + ${COMMON_DIRECTORY}/emu_thread.h + ${COMMON_DIRECTORY}/mainwidget.h + ${COMMON_DIRECTORY}/../osd.h + ) + if(USE_SOCKET) + set(s_qt_common_headers ${s_qt_common_headers} ${COMMON_DIRECTORY}/../osd_socket.h) + endif() + QT5_WRAP_CPP(s_qt_common_headers_MOC ${s_qt_common_headers}) + set(QT_COMMON_BASE + ${COMMON_DIRECTORY}/main.cpp + ${COMMON_DIRECTORY}/qt_utils.cpp + ${COMMON_DIRECTORY}/menu_flags.cpp + ${COMMON_DIRECTORY}/emu_thread.cpp + ${COMMON_DIRECTORY}/emu_thread_slots.cpp + ${COMMON_DIRECTORY}/util_bubble2.cpp + ${COMMON_DIRECTORY}/util_main.cpp + ${COMMON_DIRECTORY}/../osd.cpp + ${COMMON_DIRECTORY}/../osd_wrapper.cpp + ) + + if(WIN32) + add_executable(${EXE_NAME} WIN32 + ${PROJECT_SOURCE_DIR}/src/vm/event.cpp + ${VMFILES} + ${PROJECT_SOURCE_DIR}/src/emu.cpp + ${COMMON_DIRECTORY}/../gui/qt_main.cpp + ${QT_COMMON_BASE} + ${s_qt_common_headers_MOC} + ) + else() + add_executable(${EXE_NAME} + ${PROJECT_SOURCE_DIR}/src/vm/event.cpp + ${VMFILES} + ${PROJECT_SOURCE_DIR}/src/emu.cpp + ${QT_COMMON_BASE} + ${s_qt_common_headers_MOC} + ) + endif() + if(USE_SOCKET) + QT5_USE_MODULES(${EXE_NAME} Widgets Core Gui OpenGL Network) + else() + QT5_USE_MODULES(${EXE_NAME} Widgets Core Gui OpenGL) + endif() + target_include_directories(${EXE_NAME} + PRIVATE "${PROJECT_SOURCE_DIR}/src/qt/machines/${VM_NAME}" + PRIVATE "${PROJECT_SOURCE_DIR}/src/vm/${VM_NAME}" + ) + if(LIBAV_FOUND) + target_include_directories(${EXE_NAME} PUBLIC + "${PROJECT_SOURCE_DIR}/src/qt/avio" + ) + endif() +# if(WITH_DEBUGGER) + set(DEBUG_LIBS qt_debugger_${EXE_NAME}) +# target_include_directories(${EXE_NAME} PUBLIC +# PUBLIC "${PROJECT_SOURCE_DIR}/src/qt/debugger" +# ) +# else() +# set(DEBUG_LIBS) +# endif() + if(NOT USE_DEVICES_SHARED_LIB) + if(USE_FMGEN) + set(VM_APPEND_LIBS fmgen) + else() + set(VM_APPEND_LIBS) + endif() + endif() + if(WIN32) + set(LOCAL_LIBS + common_emu + qt_${EXE_NAME} + vm_${EXE_NAME} + vm_vm + ${VM_APPEND_LIBS} + ${DEBUG_LIBS} + common_${EXE_NAME} + ) + else() + set(LOCAL_LIBS + qt_${EXE_NAME} + vm_${EXE_NAME} + vm_vm + ${VM_APPEND_LIBS} + ${DEBUG_LIBS} + common_${EXE_NAME} + ) + endif() + if(WIN32) + set(BUNDLE_LIBS + ${OPENGL_LIBRARY} + ${OPENCL_LIBRARY} + ${GETTEXT_LIBRARY} + ${OPENMP_LIBRARY} + ${LIBAV_LIBRARIES} + ${SDL_LIBS} + ${LIBAV_LIBRARIES} + ${ADDITIONAL_LIBRARIES} + ${ZLIB_LIBRARIES} + ) + else() + add_definitions(-D_UNICODE) + set(BUNDLE_LIBS + ${OPENMP_LIBRARY} + ${SDL_LIBS} + ${ADDITIONAL_LIBRARIES} + ${BUNDLE_LIBS} + ${QT_LIBRARIES} + ${ZLIB_LIBRARIES} + ${THREADS_LIBRARY} + ) + endif() + if(WIN32) + set(LOCAL_LIBS + qt_${EXE_NAME} + vm_${EXE_NAME} + vm_vm + ${VM_APPEND_LIBS} + ${DEBUG_LIBS} + common_${EXE_NAME} + ) + else() + set(LOCAL_LIBS + qt_${EXE_NAME} + vm_${EXE_NAME} + ${VM_APPEND_LIBS} + ${DEBUG_LIBS} + common_${EXE_NAME} + ) + endif() + if(USE_DEVICES_SHARED_LIB) + set(BUNDLE_LIBS + ${BUNDLE_LIBS} + -lCSPosd + -lCSPcommon_vm + -lCSPfmgen + -lCSPgui + -lCSPemu_utils + -lCSPavio) + else() + set(BUNDLE_LIBS + ${BUNDLE_LIBS} + -lCSPosd + -lCSPgui + -lCSPavio) + endif() + + # Subdirectories + add_subdirectory("${PROJECT_SOURCE_DIR}/src" common/${EXE_NAME} EXCLUDE_FROM_ALL) + add_subdirectory("${PROJECT_SOURCE_DIR}/src/vm/${VM_NAME}" vm/${EXE_NAME} EXCLUDE_FROM_ALL) + if(NOT USE_DEVICES_SHARED_LIB) + if(USE_FMGEN) + add_subdirectory("${PROJECT_SOURCE_DIR}/src/vm/fmgen" vm/fmgen_${EXE_NAME} EXCLUDE_FROM_ALL) + endif() + endif() + add_subdirectory("${PROJECT_SOURCE_DIR}/src/qt/machines/${VM_NAME}" qt/${EXE_NAME} EXCLUDE_FROM_ALL) +# if(WITH_DEBUGGER) + add_subdirectory("${PROJECT_SOURCE_DIR}/src/qt/debugger" qt/debugger_${EXE_NAME} EXCLUDE_FROM_ALL) +# endif() +# add_subdirectory("${PROJECT_SOURCE_DIR}/src/qt/common" qt/common EXCLUDE_FROM_ALL) + add_dependencies(${EXE_NAME} + CSPosd + CSPcommon_vm + CSPfmgen + common_${EXE_NAME} + CSPemu_utils + CSPgui + CSPavio + qt_debugger_${EXE_NAME} + qt_${EXE_NAME} + ) + target_compile_definitions(${EXE_NAME} + PRIVATE ${VMDEF} + ) + target_compile_definitions(vm_${EXE_NAME} + PRIVATE ${VMDEF} + ) + target_compile_definitions(qt_${EXE_NAME} + PUBLIC ${VMDEF} + ) + target_compile_definitions(qt_debugger_${EXE_NAME} + PRIVATE ${VMDEF} + ) + target_compile_definitions(common_${EXE_NAME} + PRIVATE ${VMDEF} + ) + + if(WIN32) + target_link_libraries(${EXE_NAME} + ${LOCAL_LIBS} + ${BUNDLE_LIBS} + -lpthread + ) + else() + target_link_libraries(${EXE_NAME} + ${LOCAL_LIBS} + ${BUNDLE_LIBS} + -lpthread) + endif() + install(TARGETS ${EXE_NAME} DESTINATION bin) +endfunction() + + diff --git a/source/build-cmake/cmake/single-build/config_emufm7.cmake b/source/build-cmake/cmake/single-build/config_emufm7.cmake new file mode 100644 index 000000000..f6422017c --- /dev/null +++ b/source/build-cmake/cmake/single-build/config_emufm7.cmake @@ -0,0 +1,133 @@ +# Build Common Sourcecode Project, Qt. +# (C) 2014 K.Ohta +# This is part of , but license is apache 2.2, +# this part was written only me. + +message("") +message("** Start of configure CommonSourceProject,FM-8/7/77/AV, Qt **") +message("") + +set(USE_FMGEN ON) +set(WITH_DEBUGGER ON) +set(WITH_MOUSE ON) +set(WITH_JOYSTICK ON) + +#set(VMFILES_FM7 +# event.cpp +#) + +set(VMFILES_LIB_FM7 + and.cpp + datarec.cpp + ym2203.cpp + pcm1bit.cpp + disk.cpp + mb8877.cpp + prnfile.cpp + or.cpp + noise.cpp + i8251.cpp +) + +set(BUILD_FM7 ON CACHE BOOL "Build for FM7") +set(BUILD_FMNEW7 ON CACHE BOOL "Build for FM7") +set(BUILD_FM8 ON CACHE BOOL "Build for FM8") +set(BUILD_FM77 ON CACHE BOOL "Build for FM77") +set(BUILD_FM77L2 ON CACHE BOOL "Build for FM77L2") +set(BUILD_FM77L4 ON CACHE BOOL "Build for FM77L4") +set(BUILD_FM77AV ON CACHE BOOL "Build for FM77AV") +set(BUILD_FM77AV20 ON CACHE BOOL "Build for FM77AV20") +set(BUILD_FM77AV40 ON CACHE BOOL "Build for FM77AV40") +set(BUILD_FM77AV40SX ON CACHE BOOL "Build for FM77AV40SX") +set(BUILD_FM77AV40EX ON CACHE BOOL "Build for FM77AV40EX") +set(FM77_EXTRAM_PAGES "12" CACHE STRING "Set banks of EXTRAM of FM77/FM77AV40, bank = 64Kbytes") + +set(FM7_DEBUG_FDC OFF CACHE BOOL "With debug FDC") +set(USE_OPENMP ON CACHE BOOL "Build using OpenMP") +set(USE_OPENGL ON CACHE BOOL "Build using OpenGL") + +include(detect_target_cpu) +# set entry + +add_definitions(-D_CONFIGURE_WITH_CMAKE) + +if(FM7_DEBUG_FDC) + add_definitions(-D_FM7_FDC_DEBUG) + add_definitions(-D_DEBUG_LOG) +endif() + +if(BUILD_FM7) + set(RESOURCE ${CMAKE_CURRENT_SOURCE_DIR}/../../../src/qt/common/qrc/fm7.qrc) + ADD_VM(fm7 emufm7 _FM7) +endif() +if(BUILD_FM8) + #set(VMFILES_LIB_FM7 ${VMFILES_LIB_FM7} ay_3_891x.cpp) + #set(FLAG_USE_Z80 ON) + #add_definitions(-DBUILD_Z80) + set(RESOURCE ${CMAKE_CURRENT_SOURCE_DIR}/../../../src/qt/common/qrc/fm8.qrc) + ADD_VM(fm7 emufm8 _FM8) +endif() +if(BUILD_FM77) + #set(VMFILES_LIB_FM7 ${VMFILES_LIB_FM7} ay_3_891x.cpp) + #set(FLAG_USE_Z80 ON) + #add_definitions(-DBUILD_Z80) + set(RESOURCE ${CMAKE_CURRENT_SOURCE_DIR}/../../../src/qt/common/qrc/fm77.qrc) + ADD_VM(fm7 emufm77 _FM77) + target_compile_definitions(emufm77 + PRIVATE -DFM77_EXRAM_BANKS=${FM77_EXTRAM_PAGES} + ) +endif() +if(BUILD_FM77L4) + #set(VMFILES_LIB_FM7 ${VMFILES_LIB_FM7} ay_3_891x.cpp) + #set(FLAG_USE_Z80 ON) + set(RESOURCE ${CMAKE_CURRENT_SOURCE_DIR}/../../../src/qt/common/qrc/fm77l4.qrc) + ADD_VM(fm7 emufm77l4 _FM77L4) + target_compile_definitions(emufm77l4 + PRIVATE -DFM77_EXRAM_BANKS=${FM77_EXTRAM_PAGES} + ) +endif() +if(BUILD_FM77AV) + #set(VMFILES_LIB_FM7 ${VMFILES_LIB_FM7} beep.cpp) + set(RESOURCE ${CMAKE_CURRENT_SOURCE_DIR}/../../../src/qt/common/qrc/fm77av.qrc) + ADD_VM(fm7 emufm77av _FM77AV) +endif() +if(BUILD_FM77AV20) + #set(VMFILES_LIB_FM7 ${VMFILES_LIB_FM7} beep.cpp) + set(RESOURCE ${CMAKE_CURRENT_SOURCE_DIR}/../../../src/qt/common/qrc/fm77av20.qrc) + ADD_VM(fm7 emufm77av20 _FM77AV20) +endif() +if(BUILD_FM77AV20EX) + #set(VMFILES_LIB_FM7 ${VMFILES_LIB_FM7} beep.cpp) + set(RESOURCE ${CMAKE_CURRENT_SOURCE_DIR}/../../../src/qt/common/qrc/fm77av20ex.qrc) + ADD_VM(fm7 emufm77av20ex _FM77AV20EX) +endif() +if(BUILD_FM77AV40) + #set(VMFILES_LIB_FM7 ${VMFILES_LIB_FM7} beep.cpp) + set(RESOURCE ${CMAKE_CURRENT_SOURCE_DIR}/../../../src/qt/common/qrc/fm77av40.qrc) + ADD_VM(fm7 emufm77av40 _FM77AV40) + target_compile_definitions(emufm77av40 + PRIVATE -DFM77_EXRAM_BANKS=${FM77_EXTRAM_PAGES} + ) +endif() +if(BUILD_FM77AV40SX) + #set(VMFILES_LIB_FM7 ${VMFILES_LIB_FM7} beep.cpp) + set(RESOURCE ${CMAKE_CURRENT_SOURCE_DIR}/../../../src/qt/common/qrc/fm77av40sx.qrc) + ADD_VM(fm7 emufm77av40sx _FM77AV40SX) + target_compile_definitions(emufm77av40sx + PRIVATE -DFM77_EXRAM_BANKS=${FM77_EXTRAM_PAGES} + ) +endif() +if(BUILD_FM77AV40EX) + #set(VMFILES_LIB_FM7 ${VMFILES_LIB_FM7} beep.cpp) + set(RESOURCE ${CMAKE_CURRENT_SOURCE_DIR}/../../../src/qt/common/qrc/fm77av40ex.qrc) + ADD_VM(fm7 emufm77av40ex _FM77AV40EX) + target_compile_definitions(emufm77av40ex + PRIVATE -DFM77_EXRAM_BANKS=${FM77_EXTRAM_PAGES} + ) +endif() + + + + + + diff --git a/source/build-cmake/cmake/single-build/config_fmtowns.cmake b/source/build-cmake/cmake/single-build/config_fmtowns.cmake new file mode 100644 index 000000000..8653db214 --- /dev/null +++ b/source/build-cmake/cmake/single-build/config_fmtowns.cmake @@ -0,0 +1,140 @@ +set(VMFILES_LIB + i386.cpp + noise.cpp + pcm1bit.cpp + i8251.cpp + i8253.cpp + i8259.cpp + io.cpp + upd71071.cpp + mb8877.cpp + + scsi_dev.cpp + scsi_hdd.cpp + scsi_cdrom.cpp + + disk.cpp + prnfile.cpp + harddisk.cpp +) +set(VMFILES + ${PROJECT_SOURCE_DIR}/src/vm/scsi_host.cpp + ${PROJECT_SOURCE_DIR}/src/vm/msm58321.cpp +) + +set(BUILD_FMTOWNS_1 ON CACHE BOOL "Build for FM-Towns Model 1") +#set(BUILD_FMTOWNS_2 ON CACHE BOOL "Build for FM-Towns Model 2") +#set(BUILD_FMTOWNS_2F ON CACHE BOOL "Build for FM-Towns 2F") +set(BUILD_FMTOWNS_2H ON CACHE BOOL "Build for FM-Towns 2H") +#set(BUILD_FMTOWNS_20F ON CACHE BOOL "Build for FM-Towns 20F") +set(BUILD_FMTOWNS_20H ON CACHE BOOL "Build for FM-Towns 20H") +#set(BUILD_FMTOWNS2_UX20 ON CACHE BOOL "Build for FM-Towns2 UX20") +#set(BUILD_FMTOWNS2_UX40 ON CACHE BOOL "Build for FM-Towns2 UX40") +set(BUILD_FMTOWNS2_CX20 ON CACHE BOOL "Build for FM-Towns2 CX20") +set(BUILD_FMTOWNS2_CX40 ON CACHE BOOL "Build for FM-Towns2 CX40") +#set(BUILD_FMTOWNS2_CX100 ON CACHE BOOL "Build for FM-Towns2 CX100") +#set(BUILD_FMTOWNS2_UG10 ON CACHE BOOL "Build for FM-Towns2 UG10") +#set(BUILD_FMTOWNS2_UG20 ON CACHE BOOL "Build for FM-Towns2 UG20") +#set(BUILD_FMTOWNS2_UG40 ON CACHE BOOL "Build for FM-Towns2 UG40") +#set(BUILD_FMTOWNS2_UG80 ON CACHE BOOL "Build for FM-Towns2 UG80") +#set(BUILD_FMTOWNS2_HG20 ON CACHE BOOL "Build for FM-Towns2 HG20") +#set(BUILD_FMTOWNS2_HG40 ON CACHE BOOL "Build for FM-Towns2 HG40") +#set(BUILD_FMTOWNS2_HG100 ON CACHE BOOL "Build for FM-Towns2 HG100") +#set(BUILD_FMTOWNS2_HR20 ON CACHE BOOL "Build for FM-Towns2 HR20") +set(BUILD_FMTOWNS2_HR100 ON CACHE BOOL "Build for FM-Towns2 HR100") +#set(BUILD_FMTOWNS2_HR200 ON CACHE BOOL "Build for FM-Towns2 HR200") + +if(BUILD_FMTOWNS_1) + set(RESOURCE ${CMAKE_SOURCE_DIR}/../../src/qt/common/qrc/fmtowns.qrc) + ADD_VM(fmtowns emufmtowns _FMTOWNS_1) + ## ToDo +endif() + +if(BUILD_FMTOWNS_2) + set(RESOURCE ${CMAKE_SOURCE_DIR}/../../src/qt/common/qrc/fmtowns.qrc) + ADD_VM(fmtowns emufmtowns2 _FMTOWNS_2) + ## ToDo +endif() +if(BUILD_FMTOWNS_1F) + set(RESOURCE ${CMAKE_SOURCE_DIR}/../../src/qt/common/qrc/fmtowns.qrc) + ADD_VM(fmtowns emufmtowns1F _FMTOWNS_1F) + ## ToDo +endif() +if(BUILD_FMTOWNS_2F) + set(RESOURCE ${CMAKE_SOURCE_DIR}/../../src/qt/common/qrc/fmtowns.qrc) + ADD_VM(fmtowns emufmtowns2F _FMTOWNS_2F) + ## ToDo +endif() +if(BUILD_FMTOWNS_1H) + set(RESOURCE ${CMAKE_SOURCE_DIR}/../../src/qt/common/qrc/fmtowns.qrc) + ADD_VM(fmtowns emufmtowns1H _FMTOWNS_1H) + ## ToDo +endif() +if(BUILD_FMTOWNS_2H) + set(RESOURCE ${CMAKE_SOURCE_DIR}/../../src/qt/common/qrc/fmtowns.qrc) + ADD_VM(fmtowns emufmtowns2H _FMTOWNS_2H) + ## ToDo +endif() + +if(BUILD_FMTOWNS_10F) + set(RESOURCE ${CMAKE_SOURCE_DIR}/../../src/qt/common/qrc/fmtowns.qrc) + ADD_VM(fmtowns emufmtowns10F _FMTOWNS_10F) + ## ToDo +endif() +if(BUILD_FMTOWNS_20F) + set(RESOURCE ${CMAKE_SOURCE_DIR}/../../src/qt/common/qrc/fmtowns.qrc) + ADD_VM(fmtowns emufmtowns20F _FMTOWNS_20F) + ## ToDo +endif() +if(BUILD_FMTOWNS_10H) + set(RESOURCE ${CMAKE_SOURCE_DIR}/../../src/qt/common/qrc/fmtowns.qrc) + ADD_VM(fmtowns emufmtowns10H _FMTOWNS_10H) + ## ToDo +endif() +if(BUILD_FMTOWNS_20H) + set(RESOURCE ${CMAKE_SOURCE_DIR}/../../src/qt/common/qrc/fmtowns.qrc) + ADD_VM(fmtowns emufmtowns20H _FMTOWNS_20H) + ## ToDo +endif() + +if(BUILD_FMTOWNS2_UX20) + set(RESOURCE ${CMAKE_SOURCE_DIR}/../../src/qt/common/qrc/fmtowns.qrc) + ADD_VM(fmtowns emufmtowns2UX20 _FMTOWNS2_UX20) + ## ToDo +endif() +if(BUILD_FMTOWNS2_UX40) + set(RESOURCE ${CMAKE_SOURCE_DIR}/../../src/qt/common/qrc/fmtowns.qrc) + ADD_VM(fmtowns emufmtowns2UX40 _FMTOWNS2_UX40) + ## ToDo +endif() +if(BUILD_FMTOWNS2_CX20) + set(RESOURCE ${CMAKE_SOURCE_DIR}/../../src/qt/common/qrc/fmtowns.qrc) + ADD_VM(fmtowns emufmtowns2CX20 _FMTOWNS2_CX20) + ## ToDo +endif() +if(BUILD_FMTOWNS2_CX40) + set(RESOURCE ${CMAKE_SOURCE_DIR}/../../src/qt/common/qrc/fmtowns.qrc) + ADD_VM(fmtowns emufmtowns2CX40 _FMTOWNS2_CX40) + ## ToDo +endif() +if(BUILD_FMTOWNS2_CX100) + set(RESOURCE ${CMAKE_SOURCE_DIR}/../../src/qt/common/qrc/fmtowns.qrc) + ADD_VM(fmtowns emufmtowns2CX100 _FMTOWNS2_CX100) + ## ToDo +endif() + +if(BUILD_FMTOWNS2_HR20) + set(RESOURCE ${CMAKE_SOURCE_DIR}/../../src/qt/common/qrc/fmtowns.qrc) + ADD_VM(fmtowns emufmtowns2HR20 _FMTOWNS2_HR20) + ## ToDo +endif() +if(BUILD_FMTOWNS2_HR100) + set(RESOURCE ${CMAKE_SOURCE_DIR}/../../src/qt/common/qrc/fmtowns.qrc) + ADD_VM(fmtowns emufmtowns2HR100 _FMTOWNS2_HR100) + ## ToDo +endif() +if(BUILD_FMTOWNS2_HR200) + set(RESOURCE ${CMAKE_SOURCE_DIR}/../../src/qt/common/qrc/fmtowns.qrc) + ADD_VM(fmtowns emufmtowns2HR200 _FMTOWNS2_HR200) + ## ToDo +endif() diff --git a/source/build-cmake/cmake/single-build/detect_target_cpu.cmake b/source/build-cmake/cmake/single-build/detect_target_cpu.cmake new file mode 100644 index 000000000..4b964c7e8 --- /dev/null +++ b/source/build-cmake/cmake/single-build/detect_target_cpu.cmake @@ -0,0 +1,14 @@ +# Set simd X86. +# (C) 2014 K.Ohta + +# Detect host CPU +if(UNIX) + # See http://stackoverflow.com/questions/11944060/how-to-detect-target-architecture-using-cmake + EXECUTE_PROCESS( COMMAND uname -m COMMAND tr -d '\n' OUTPUT_VARIABLE ARCHITECTURE ) +elseif(WIN32) + set(ARCHITECTURE "ia32") +else() + # Assume Unix. + # See http://stackoverflow.com/questions/11944060/how-to-detect-target-architecture-using-cmake + EXECUTE_PROCESS( COMMAND uname -m COMMAND tr -d '\n' OUTPUT_VARIABLE ARCHITECTURE ) +endif() diff --git a/source/build-cmake/cmake/single-build/simd-x86.cmake b/source/build-cmake/cmake/single-build/simd-x86.cmake new file mode 100644 index 000000000..98c5b32d3 --- /dev/null +++ b/source/build-cmake/cmake/single-build/simd-x86.cmake @@ -0,0 +1,31 @@ +# Set simd X86. +# (C) 2014 K.Ohta +# This is part of XM7/SDL, but license is apache 2.2, +# this part was written only me. + +if((CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64") OR + (CMAKE_SYSTEM_PROCESSOR STREQUAL "x86") OR + (CMAKE_SYSTEM_PROCESSOR STREQUAL "ia32") OR + (CMAKE_SYSTEM_PROCESSOR STREQUAL "amd64")) + set(USE_SSE2 ON CACHE BOOL "Using SSE2 SIMD instructions, sometimes faster if enabled.") +# set(USE_MMX ON CACHE BOOL "Using MMX SIMD instructions, sometimes faster if enabled.") +endif() + + +if(USE_SSE2) +# set(LOCAL_LIBS ${LOCAL_LIBS} common_scaler-sse2) + add_definitions(-DUSE_SSE2) +# add_subdirectory(sdl/vram/sse2) +# add_subdirectory(../../src/agar/common/scaler/sse2 agar/common/scaler/sse2) +endif() + +#if(USE_SSE) +# add_definitions(-DUSE_SSE) +#endif() + +#if(USE_MMX) +# add_definitions(-DUSE_MMX) +# set(LOCAL_LIBS ${LOCAL_LIBS} xm7_soundbuffer-mmx) +# add_subdirectory(sdl/soundbuffer/mmx) +#endif() + diff --git a/source/src/CMakeLists.txt b/source/src/CMakeLists.txt index b18c09d5f..996fc7647 100644 --- a/source/src/CMakeLists.txt +++ b/source/src/CMakeLists.txt @@ -2,16 +2,16 @@ message("* common/common") #set(CMAKE_BUILD_SETTING_C_FLAGS "${CMAKE_C_FLAGS} -msse2 -msse -mmmx") -add_library(common_emu - emu.cpp -) +#add_library(common_emu +# emu.cpp +#) if(USE_DEVICES_SHARED_LIB) - add_library(common_common + add_library(common_${EXE_NAME} config.cpp debugger.cpp ) else() - add_library(common_common + add_library(common_${EXE_NAME} common.cpp config.cpp debugger.cpp diff --git a/source/src/qt/CMakeLists.txt b/source/src/qt/CMakeLists.txt index 1ca0fde1b..503b01df0 100644 --- a/source/src/qt/CMakeLists.txt +++ b/source/src/qt/CMakeLists.txt @@ -1,5 +1,5 @@ message("* qt/osd") -SET(THIS_LIB_VERSION 3.0.1) +SET(THIS_LIB_VERSION 3.0.2) set(s_qt_osd_headers osd_base.h diff --git a/source/src/qt/avio/CMakeLists.txt b/source/src/qt/avio/CMakeLists.txt index adfc539c0..ca50f6c99 100644 --- a/source/src/qt/avio/CMakeLists.txt +++ b/source/src/qt/avio/CMakeLists.txt @@ -1,6 +1,6 @@ message("* qt/avio") -SET(THIS_LIB_VERSION 3.0.1) +SET(THIS_LIB_VERSION 3.0.2) set(s_qt_avio_headers movie_saver.h movie_loader.h diff --git a/source/src/qt/common/CMakeLists.txt b/source/src/qt/common/CMakeLists.txt index 7112566a7..a712682dc 100644 --- a/source/src/qt/common/CMakeLists.txt +++ b/source/src/qt/common/CMakeLists.txt @@ -1,8 +1,4 @@ message("* qt/common") - -#include(cotire) -#include(PrecompiledHeader) - set(s_qt_common_headers emu_thread.h mainwidget.h @@ -19,7 +15,7 @@ else() endif() set(QT_COMMON_BASE - main.cpp +# main.cpp qt_utils.cpp menu_flags.cpp @@ -33,11 +29,16 @@ set(QT_COMMON_BASE ../osd_wrapper.cpp ) +if(0) + if(WIN32) + set(QT_COMMON_BASE ../gui/qt_main.cpp ${QT_COMMON_BASE} ) + endif() + add_library(common + ${QT_COMMON_BASE} + ${s_qt_common_headers_MOC} + ) -# QT5_ADD_RESOURCES(s_qt_common_RCC ${RESOURCE} -# ${CMAKE_CURRENT_SOURCE_DIR}/qrc/i18n_global.qrc -# ${CMAKE_CURRENT_SOURCE_DIR}/qrc/icons.qrc) - +else() if(WIN32) set(QT_COMMON_BASE ../gui/qt_main.cpp ${QT_COMMON_BASE} ) @@ -45,17 +46,12 @@ if(WIN32) WIN32 ${QT_COMMON_BASE} ${s_qt_common_headers_MOC} -# ${s_qt_common_RCC} ) else() - add_executable(${EXEC_TARGET} + add_executable(${EXEC_TARGET} ${QT_COMMON_BASE} ${s_qt_common_headers_MOC} -# ${s_qt_common_RCC} ) -# add_precompiled_header(${EXEC_TARGET} pch_list -# SOURCE_CXX pch.cpp FORCEINCLUDE -# ) endif() #cotire(${EXEC_TARGET}) @@ -88,4 +84,4 @@ else() target_link_libraries(${EXEC_TARGET} ${LOCAL_LIBS} ${BUNDLE_LIBS} -lpthread) endif() install(TARGETS ${EXEC_TARGET} DESTINATION bin) - +endif() diff --git a/source/src/qt/debugger/CMakeLists.txt b/source/src/qt/debugger/CMakeLists.txt index d87848a25..a8d60ee16 100644 --- a/source/src/qt/debugger/CMakeLists.txt +++ b/source/src/qt/debugger/CMakeLists.txt @@ -10,7 +10,7 @@ else() QT4_WRAP_CPP(s_qt_debugger_headers_MOC ${s_qt_debugger_headers}) endif() -add_library(qt_debugger +add_library(qt_debugger_${EXE_NAME} qt_debugger.cpp ${s_qt_debugger_headers_MOC} ) diff --git a/source/src/qt/emuutils/CMakeLists.txt b/source/src/qt/emuutils/CMakeLists.txt index 62b2d0922..ed2ebd65e 100644 --- a/source/src/qt/emuutils/CMakeLists.txt +++ b/source/src/qt/emuutils/CMakeLists.txt @@ -1,6 +1,6 @@ message("* qt/emuutils") -SET(THIS_LIB_VERSION 2.20.1) +SET(THIS_LIB_VERSION 2.20.2) set(s_qt_emuutils_headers ../gui/csp_logger.h diff --git a/source/src/qt/gui/CMakeLists.txt b/source/src/qt/gui/CMakeLists.txt index 5f3730509..1d6433129 100644 --- a/source/src/qt/gui/CMakeLists.txt +++ b/source/src/qt/gui/CMakeLists.txt @@ -1,6 +1,6 @@ message("* qt/gui") -set(THIS_LIB_VERSION 3.1.0) +set(THIS_LIB_VERSION 3.1.1) #include(cotire) #include(PrecompiledHeader) diff --git a/source/src/qt/machines/fm7/CMakeLists.txt b/source/src/qt/machines/fm7/CMakeLists.txt index 71835c3f2..017ceb570 100644 --- a/source/src/qt/machines/fm7/CMakeLists.txt +++ b/source/src/qt/machines/fm7/CMakeLists.txt @@ -4,16 +4,11 @@ set(s_qt_fm7_headers menuclasses.h ) -if(USE_QT_5) - QT5_WRAP_CPP(s_qt_fm7_headers_MOC ${s_qt_fm7_headers}) -# QT5_ADD_RESOURCES(s_qt_fm7_headers_RCC ${RESOURCE}) -else() - QT4_WRAP_CPP(s_qt_fm7_headers_MOC ${s_qt_fm7_headers}) -endif() + QT5_WRAP_CPP(s_qt_fm7_headers_${EXE_NAME}_MOC ${s_qt_fm7_headers}) -add_library(qt_fm7 +add_library(qt_${EXE_NAME} MainWindow.cpp - ${s_qt_fm7_headers_MOC} + ${s_qt_fm7_headers_${EXE_NAME}_MOC} ) diff --git a/source/src/qt/machines/fm7/MainWindow.cpp b/source/src/qt/machines/fm7/MainWindow.cpp index f3b0d0a21..76c33c432 100644 --- a/source/src/qt/machines/fm7/MainWindow.cpp +++ b/source/src/qt/machines/fm7/MainWindow.cpp @@ -32,7 +32,6 @@ Object_Menu_Control_7::~Object_Menu_Control_7() { } -#if defined(WITH_Z80) void Object_Menu_Control_7::do_set_z80card_on(bool flag) { if(flag) { @@ -71,7 +70,7 @@ void Object_Menu_Control_7::do_set_z80_nmi(bool flag) } emit sig_emu_update_config(); } -#endif + void Object_Menu_Control_7::do_set_uart(bool flag) { uint32_t nval; @@ -98,7 +97,6 @@ void Object_Menu_Control_7::do_set_uart(bool flag) } } -#if defined(CAPABLE_JCOMMCARD) void Object_Menu_Control_7::do_set_jcommcard(bool flag) { if(flag) { @@ -107,9 +105,7 @@ void Object_Menu_Control_7::do_set_jcommcard(bool flag) config.dipswitch = config.dipswitch & ~FM7_DIPSW_JSUBCARD_ON; } } -#endif -#if defined(_FM8) || defined(_FM7) || defined(_FMNEW7) void Object_Menu_Control_7::do_set_kanji_rom(bool flag) { if(flag) { @@ -118,9 +114,7 @@ void Object_Menu_Control_7::do_set_kanji_rom(bool flag) config.dipswitch = config.dipswitch & ~FM7_DIPSW_CONNECT_KANJIROM; } } -#endif -#if defined(_FM8) || defined(_FM7) || defined(_FMNEW7) void Object_Menu_Control_7::do_set_320kFloppy(bool flag) { if(flag) { @@ -129,9 +123,7 @@ void Object_Menu_Control_7::do_set_320kFloppy(bool flag) config.dipswitch = config.dipswitch & ~FM7_DIPSW_CONNECT_320KFDC; } } -#endif -#if defined(HAS_2HD) void Object_Menu_Control_7::do_set_1MFloppy(bool flag) { if(flag) { @@ -140,7 +132,6 @@ void Object_Menu_Control_7::do_set_1MFloppy(bool flag) config.dipswitch = config.dipswitch & ~FM7_DIPSW_CONNECT_1MFDC; } } -#endif void Object_Menu_Control_7::do_set_autokey_5_8(void) @@ -162,10 +153,6 @@ void Object_Menu_Control_7::do_set_autokey_5_8(void) } } - - - -#if defined(_FM8) void Object_Menu_Control_7::do_set_protect_ram(bool flag) { if(flag) { @@ -175,7 +162,7 @@ void Object_Menu_Control_7::do_set_protect_ram(bool flag) } emit sig_emu_update_config(); } -#else + void Object_Menu_Control_7::do_set_cyclesteal(bool flag) { if(flag) { @@ -185,7 +172,7 @@ void Object_Menu_Control_7::do_set_cyclesteal(bool flag) } emit sig_emu_update_config(); } -#endif + void Object_Menu_Control_7::do_set_hsync(bool flag) { if(flag) { @@ -230,6 +217,7 @@ void META_MainWindow::do_set_extram(bool flag) } #endif } + #if defined(CAPABLE_DICTROM) && !defined(_FM77AV40EX) && !defined(_FM77AV40SX) void META_MainWindow::do_set_use_dictcard(bool flag) { diff --git a/source/src/qt/machines/fm7/menuclasses.h b/source/src/qt/machines/fm7/menuclasses.h index a6430eacb..e00134e85 100644 --- a/source/src/qt/machines/fm7/menuclasses.h +++ b/source/src/qt/machines/fm7/menuclasses.h @@ -4,6 +4,7 @@ #include "commonclasses.h" #include "mainwidget.h" +#include "vm.h" // This extends class CSP_MainWindow as Ui_MainWindow. // You may use this as QT_BEGIN_NAMESPACE @@ -20,30 +21,22 @@ signals: // int sig_sound_device(int); int sig_emu_update_config(void); public slots: -# if defined(WITH_Z80) + void do_set_z80card_on(bool flag); void do_set_z80_irq(bool flag); void do_set_z80_firq(bool flag); void do_set_z80_nmi(bool flag); -# endif - void do_set_hsync(bool flag); -# if defined(_FM8) || defined(_FM7) || defined(_FMNEW7) void do_set_kanji_rom(bool flag); void do_set_320kFloppy(bool flag); -# endif -# if defined(HAS_2HD) + void do_set_1MFloppy(bool flag); -# endif -# if defined(_FM8) void do_set_protect_ram(bool flag); -# else + void do_set_cyclesteal(bool flag); -# endif -#if defined(CAPABLE_JCOMMCARD) void do_set_jcommcard(bool flag); -#endif + void do_set_uart(bool flag); void do_set_autokey_5_8(void); }; diff --git a/source/src/qt/machines/fmtowns/CMakeLists.txt b/source/src/qt/machines/fmtowns/CMakeLists.txt index 7f636a10a..ae86230eb 100644 --- a/source/src/qt/machines/fmtowns/CMakeLists.txt +++ b/source/src/qt/machines/fmtowns/CMakeLists.txt @@ -5,15 +5,15 @@ set(s_qt_fmtowns_headers ) if(USE_QT_5) - QT5_WRAP_CPP(s_qt_fmtowns_headers_MOC ${s_qt_fmtowns_headers}) + QT5_WRAP_CPP(s_qt_${EXE_NAME}_headers_MOC ${s_qt_fmtowns_headers}) # QT5_ADD_RESOURCES(s_qt_fmtowns_headers_RCC ${RESOURCE}) else() - QT4_WRAP_CPP(s_qt_fmtowns_headers_MOC ${s_qt_fmtowns_headers}) + QT4_WRAP_CPP(s_qt_${EXE_NAME}_headers_MOC ${s_qt_fmtowns_headers}) endif() -add_library(qt_fmtowns +add_library(qt_${EXE_NAME} MainWindow.cpp - ${s_qt_fmtowns_headers_MOC} + ${s_qt_${EXE_NAME}_headers_MOC} ) diff --git a/source/src/vm/common_vm/CMakeLists.txt b/source/src/vm/common_vm/CMakeLists.txt index 678193ab6..27f9a46ea 100644 --- a/source/src/vm/common_vm/CMakeLists.txt +++ b/source/src/vm/common_vm/CMakeLists.txt @@ -1,6 +1,6 @@ message("* vm/common_vm") -SET(THIS_LIB_VERSION 3.0.1) +SET(THIS_LIB_VERSION 3.0.2) #include(cotire) set(s_vm_common_vm_srcs diff --git a/source/src/vm/fm7/CMakeLists.txt b/source/src/vm/fm7/CMakeLists.txt index cbe1b4cbf..2b635fe3a 100644 --- a/source/src/vm/fm7/CMakeLists.txt +++ b/source/src/vm/fm7/CMakeLists.txt @@ -1,8 +1,6 @@ cmake_minimum_required (VERSION 2.6) message("* vm/fm7") -#include(cotire) - set(VM_FM7_LIB_SRCS display.cpp vram.cpp @@ -22,41 +20,65 @@ set(VM_FM7_LIB_SRCS fm7.cpp ) -if(BUILD_FM8) - set(VM_FM7_LIB_SRCS ${VM_FM7_LIB_SRCS} fm_bubblecasette.cpp fm8_mainio.cpp) -elseif(BUILD_FM7) - set(VM_FM7_LIB_SRCS ${VM_FM7_LIB_SRCS} jcommcard.cpp) -elseif(BUILD_FMNEW7) - set(VM_FM7_LIB_SRCS ${VM_FM7_LIB_SRCS} jcommcard.cpp) -elseif(BUILD_FM77) - set(VM_FM7_LIB_SRCS ${VM_FM7_LIB_SRCS} jcommcard.cpp floppy_2HD.cpp) -elseif(BUILD_FM77L2) - set(VM_FM7_LIB_SRCS ${VM_FM7_LIB_SRCS} jcommcard.cpp floppy_2HD.cpp) -elseif(BUILD_FM77L4) - set(VM_FM7_LIB_SRCS ${VM_FM7_LIB_SRCS} jcommcard.cpp floppy_2HD.cpp) -elseif(BUILD_FM77AV) - set(VM_FM7_LIB_SRCS ${VM_FM7_LIB_SRCS} jcommcard.cpp) +if(${EXE_NAME} STREQUAL emufm8) + add_library(vm_emufm8 + ${VM_FM7_LIB_SRCS} + fm_bubblecasette.cpp + fm8_mainio.cpp + ) +elseif(${EXE_NAME} STREQUAL emufm7) + add_library(vm_emufm7 + ${VM_FM7_LIB_SRCS} + jcommcard.cpp + ) +elseif(${EXE_NAME} STREQUAL emufm77) + add_library(vm_emufm77 + ${VM_FM7_LIB_SRCS} + jcommcard.cpp + floppy_2HD.cpp + ) +elseif(${EXE_NAME} STREQUAL emufm77l2) + add_library(vm_emufm77l2 + ${VM_FM7_LIB_SRCS} + jcommcard.cpp + floppy_2HD.cpp + ) +elseif(${EXE_NAME} STREQUAL emufm77l4) + add_library(vm_emufm77l4 + ${VM_FM7_LIB_SRCS} + jcommcard.cpp + floppy_2HD.cpp + ) +elseif(${EXE_NAME} STREQUAL emufm77av) + add_library(vm_emufm77av + ${VM_FM7_LIB_SRCS} + jcommcard.cpp + ) +else() + add_library(vm_${EXE_NAME} + ${VM_FM7_LIB_SRCS} + ) endif() -if(USE_DEVICES_SHARED_LIB) -else() +if(NOT USE_DEVICES_SHARED_LIB) set(VM_FM7_LIB_SRCS ${VM_FM7_LIB_SRCS} dummydevice.cpp) - if(FM77AV_VARIANTS) + if(${EXE_NAME} STREQUAL emufm77av) set(VM_FM7_LIB_SRCS ${VM_FM7_LIB_SRCS} mb61vh010.cpp) endif() - - if(BUILD_FM77AV20EX) - set(VM_FM7_LIB_SRCS ${VM_FM7_LIB_SRCS} hd6844.cpp) - elseif(BUILD_FM77AV40) - set(VM_FM7_LIB_SRCS ${VM_FM7_LIB_SRCS} hd6844.cpp) - elseif(BUILD_FM77AV40EX) - set(VM_FM7_LIB_SRCS ${VM_FM7_LIB_SRCS} hd6844.cpp) - elseif(BUILD_FM77AV40SX) - set(VM_FM7_LIB_SRCS ${VM_FM7_LIB_SRCS} hd6844.cpp) + if(${EXE_NAME} STREQUAL emufm77av20) + set(VM_FM7_LIB_SRCS ${VM_FM7_LIB_SRCS} mb61vh010.cpp) + endif() + if(${EXE_NAME} STREQUAL emufm77av20ex) + set(VM_FM7_LIB_SRCS ${VM_FM7_LIB_SRCS} mb61vh010.cpp hd6844.cpp) + endif() + if(${EXE_NAME} STREQUAL emufm77av40) + set(VM_FM7_LIB_SRCS ${VM_FM7_LIB_SRCS} mb61vh010.cpp hd6844.cpp) + endif() + if(${EXE_NAME} STREQUAL emufm77av40ex) + set(VM_FM7_LIB_SRCS ${VM_FM7_LIB_SRCS} mb61vh010.cpp hd6844.cpp) + endif() + if(${EXE_NAME} STREQUAL emufm77av40sx) + set(VM_FM7_LIB_SRCS ${VM_FM7_LIB_SRCS} mb61vh010.cpp hd6844.cpp) endif() - set(VM_FM7_LIB_SRCS ${VM_FM7_LIB_SRCS} dummydevice.cpp) endif() -add_library(vm_fm7 - ${VM_FM7_LIB_SRCS} -) -#cotire(vm_fm7) \ No newline at end of file + diff --git a/source/src/vm/fm7/fm7.h b/source/src/vm/fm7/fm7.h index a13a19586..a1170a195 100644 --- a/source/src/vm/fm7/fm7.h +++ b/source/src/vm/fm7/fm7.h @@ -302,10 +302,8 @@ #endif #define BASE_FLOPPY_DISK_NUM 0 -#ifdef BUILD_Z80 -# ifdef CAPABLE_Z80 +#ifdef CAPABLE_Z80 # define WITH_Z80 -# endif #endif // DIP Switch description diff --git a/source/src/vm/fmgen/CMakeLists.txt b/source/src/vm/fmgen/CMakeLists.txt index b4d201a4d..0b275818f 100644 --- a/source/src/vm/fmgen/CMakeLists.txt +++ b/source/src/vm/fmgen/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required (VERSION 2.6) message("* vm/fmgen") -SET(THIS_LIB_VERSION 1.9.0) +SET(THIS_LIB_VERSION 1.9.1) add_definitions(-D__LIBFMGEN_VERSION=\"libCSPfmgen.${THIS_LIB_VERSION}\") SET(s_vm_fmgen_srcs diff --git a/source/src/vm/fmtowns/CMakeLists.txt b/source/src/vm/fmtowns/CMakeLists.txt index e5b745f1e..5b55a38aa 100644 --- a/source/src/vm/fmtowns/CMakeLists.txt +++ b/source/src/vm/fmtowns/CMakeLists.txt @@ -35,10 +35,11 @@ set(VM_FMTOWNS_DEV_SRCS fmtowns.cpp ) +#ToDo if(BUILD_WITH_20PIX) set(VM_FMTOWNS_DEV_SRCS ${VM_FMTOWNS_DEV_SRCS} fontrom_20pix.cpp) endif() -add_library(vm_fmtowns +add_library(vm_${EXE_NAME} ${VM_FMTOWNS_DEV_SRCS} )