Index: CMakeLists.txt =================================================================== --- CMakeLists.txt (revision 9866) +++ CMakeLists.txt (working copy) @@ -51,7 +51,7 @@ find_package(PkgConfig MODULE REQUIRED) pkg_check_modules(SDL2 IMPORTED_TARGET sdl2) pkg_check_modules(Freetype IMPORTED_TARGET freetype2) -pkg_check_modules(FluidSynth IMPORTED_TARGET fluidsynth) +pkg_check_modules(FluidSynth IMPORTED_TARGET fluidsynth>=2.1.0) endif () set(CMAKE_THREAD_PREFER_PTHREAD ON) @@ -80,20 +80,18 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/simutrans) # -# sources +# target & sources # +if (CMAKE_BUILD_TYPE STREQUAL "Release" OR CMAKE_BUILD_TYPE STREQUAL "MinSizeRel") + add_executable(simutrans WIN32 MACOSX_BUNDLE) +else () + add_executable(simutrans) +endif () include(SimutransSourceList) # # Generate revision on compile time (so only if needed) # -string(FIND ${CMAKE_GENERATOR} "Visual Studio" VS ) -if (${VS} EQUAL 0) - # using a script for MSVC project files - file(WRITE ${CMAKE_SOURCE_DIR}/revision.h "#define REVISION \n") - add_custom_command(TARGET simutrans PRE_BUILD WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} COMMAND cscript.exe /Nologo revision.jse COMMENT "Find SVN revision") - -else () # using custom target svnhear that is always built to update the revision.h file using cmake script add_custom_target(svnheader ALL DEPENDS svn_header) add_custom_command(OUTPUT svn_header ${CMAKE_SOURCE_DIR}/revision.h COMMAND ${CMAKE_COMMAND} -DSOURCE_DIR=${CMAKE_SOURCE_DIR} -P ${CMAKE_MODULE_PATH}/SimutransRevision.cmake) @@ -101,8 +99,6 @@ add_dependencies(simutrans svnheader) target_compile_definitions(simutrans PRIVATE REVISION_FROM_FILE) -endif () - # # Libaries # @@ -205,13 +201,6 @@ endif (SIMUTRANS_USE_FLUIDSYNTH_MIDI) endif ((SIMUTRANS_BACKEND STREQUAL "sdl2") OR (SIMUTRANS_BACKEND STREQUAL "gdi")) -if (WIN32) - if($) - add_executable(simutrans WIN32) - endif () -endif () - - # # compile options # @@ -233,7 +222,12 @@ target_compile_options(simutrans PRIVATE ${SIMUTRANS_COMMON_COMPILE_OPTIONS}) -target_compile_definitions(simutrans PRIVATE $,DEBUG=1,NDEBUG>) +if (CMAKE_BUILD_TYPE STREQUAL "Release" OR CMAKE_BUILD_TYPE STREQUAL "MinSizeRel") + target_compile_definitions(simutrans PRIVATE DEBUG=0) +else () + target_compile_definitions(simutrans PRIVATE $,DEBUG=1,NDEBUG>) +endif () + target_compile_definitions(simutrans PRIVATE MSG_LEVEL=${SIMUTRANS_MSG_LEVEL}) if (SIMUTRANS_AUTOJOIN_PUBLIC) Index: cmake/SimutransRevision.cmake =================================================================== --- cmake/SimutransRevision.cmake (revision 9866) +++ cmake/SimutransRevision.cmake (working copy) @@ -14,34 +14,34 @@ # We have to try Git first because Subversion_WC_INFO does not fail silently if # this repository is not a Subversion repository if (GIT_FOUND) - execute_process(WORKING_DIRECTORY ${SOURCE_DIR} COMMAND ${GIT_EXECUTABLE} svn info RESULT_VARIABLE res_var OUTPUT_VARIABLE SIMUTRANS_GIT_WC_REVISION) + execute_process(WORKING_DIRECTORY ${SOURCE_DIR} COMMAND ${GIT_EXECUTABLE} git describe --tags --always HEAD RESULT_VARIABLE res_var OUTPUT_VARIABLE SIMUTRANS_GIT_WC_REVISION) if ( ${res_var} EQUAL 0 ) message( "git svn ok:" ${SIMUTRANS_GIT_WC_REVISION}) string( REGEX REPLACE "\n" " " TEMP1 ${SIMUTRANS_GIT_WC_REVISION}) string( REGEX REPLACE "^.*Revision: " "" TEMP2 ${TEMP1}) - string( REGEX REPLACE " Node.*$" "" SIMUTRANS_WC_REVISION ${TEMP2}) + string( REGEX REPLACE " Node.*$" "" SIMUTRANS_GIT_WC_REVISION ${TEMP2}) endif() endif () -if ( NOT SIMUTRANS_WC_REVISION AND Subversion_FOUND ) +if ( NOT SIMUTRANS_GIT_WC_REVISION AND Subversion_FOUND ) execute_process(WORKING_DIRECTORY ${SOURCE_DIR} COMMAND ${SVN_EXECUTABLE} svn info RESULT_VARIABLE res_var OUTPUT_VARIABLE SIMUTRANS_GIT_WC_REVISION) if ( ${res_var} EQUAL 0 ) message( "svn ok:" ${SIMUTRANS_GIT_WC_REVISION}) string( REGEX REPLACE "\n" " " TEMP1 ${SIMUTRANS_GIT_WC_REVISION}) string( REGEX REPLACE "^.*Revision: " "" TEMP2 ${TEMP1}) - string( REGEX REPLACE " .*$" "" SIMUTRANS_WC_REVISION ${TEMP2}) + string( REGEX REPLACE " .*$" "" SIMUTRANS_GIT_WC_REVISION ${TEMP2}) endif() # Subversion_WC_INFO(.. simutrans) endif () -if (SIMUTRANS_WC_REVISION) +if (SIMUTRANS_GIT_WC_REVISION) # write a file with the SVNVERSION define - file(WRITE revision.h.txt "#define REVISION ${SIMUTRANS_WC_REVISION}\n") + file(WRITE revision.h.txt "#define REVISION ${SIMUTRANS_GIT_WC_REVISION}\n") # copy the file to the final header only if the version changes # reduces needless rebuilds execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different revision.h.txt ${SOURCE_DIR}/revision.h) - message(STATUS "Compiling Simutrans revision ${SIMUTRANS_WC_REVISION} ...") + message(STATUS "Compiling Simutrans revision ${SIMUTRANS_GIT_WC_REVISION} ...") else () message(WARNING "Could not find revision information because this repository " "is neither a Subversion nor a Git repository. Revision information " Index: cmake/SimutransSourceList.cmake =================================================================== --- cmake/SimutransSourceList.cmake (revision 9866) +++ cmake/SimutransSourceList.cmake (working copy) @@ -1,5 +1,5 @@ -add_executable(simutrans - ${CMAKE_SOURCE_DIR}/revision.h +target_sources(simutrans PRIVATE + revision.h bauer/brueckenbauer.cc bauer/fabrikbauer.cc bauer/goods_manager.cc