diff -r 92af50454cf2 -r 8054d9d775fd hedgewars/CMakeLists.txt --- a/hedgewars/CMakeLists.txt Fri Oct 11 11:55:31 2013 +0200 +++ b/hedgewars/CMakeLists.txt Fri Oct 11 17:43:13 2013 +0200 @@ -12,31 +12,30 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR}) +#set the sources with the correct order of dependencies so that cmake won't be confused set(engine_sources SDLh.pas uSinTable.pas uFloat.pas uConsts.pas LuaPas.pas - PNGh.pas uTypes.pas + uVariables.pas uUtils.pas - uVariables.pas uMisc.pas uConsole.pas + uCommands.pas uDebug.pas - uCommands.pas uInputHandler.pas uTextures.pas uRenderUtils.pas uRender.pas uCaptions.pas - uLandTexture.pas uIO.pas uChat.pas uPhysFSLayer.pas - uStore.pas uSound.pas + ArgParsers.pas uRandom.pas uLocale.pas uStats.pas @@ -45,38 +44,44 @@ uAILandMarks.pas adler32.pas uLandTemplates.pas + uLandTexture.pas uLandGraphics.pas uLandPainted.pas uLandOutline.pas uLandGenMaze.pas + + #this is where dependency tracking becomes hard + uStore.pas + uAmmos.pas uLandObjects.pas uLand.pas - uAmmos.pas - + uGearsList.pas + uCollisions.pas uAIMisc.pas uAIActions.pas + uAIAmmoTests.pas uAI.pas uWorld.pas + uVisualGearsList.pas + uVisualGearsHandlers.pas uVisualGears.pas - uTeams.pas - uGearsList.pas - uCollisions.pas - uAIAmmoTests.pas uGears.pas uGame.pas uCommandHandlers.pas + uGearsRender.pas + uGearsHedgehog.pas uGearsHandlers.pas uGearsHandlersRope.pas - uGearsHedgehog.pas - uGearsRender.pas + uGearsHandlersMess.pas uGearsUtils.pas + uTeams.pas + + #these interact with everything, so compile last uScript.pas hwengine.pas - GSHandlers.inc - VGSHandlers.inc - ArgParsers.inc + #we also have uTouch.pas options.inc ${CMAKE_CURRENT_BINARY_DIR}/config.inc ) @@ -99,51 +104,25 @@ #DEPENDECIES AND EXECUTABLES SECTION -if(APPLE) - if(CMAKE_OSX_ARCHITECTURES) - #parse this system variable and adjust only the powerpc syntax to be compatible with -P - string(REGEX MATCH "[pP][pP][cC]+" powerpc_build "${CMAKE_OSX_ARCHITECTURES}") - string(REGEX MATCH "[iI]386+" i386_build "${CMAKE_OSX_ARCHITECTURES}") - string(REGEX MATCH "[xX]86_64+" x86_64_build "${CMAKE_OSX_ARCHITECTURES}") - if(x86_64_build) - add_flag_prepend(CMAKE_Pascal_FLAGS -Px86_64) - elseif(i386_build) - add_flag_prepend(CMAKE_Pascal_FLAGS -Pi386) - elseif(powerpc_build) - add_flag_prepend(CMAKE_Pascal_FLAGS -Ppowerpc) - else() - message(FATAL_ERROR "Unknown architecture present in CMAKE_OSX_ARCHITECTURES (${CMAKE_OSX_ARCHITECTURES})") - endif() - list(LENGTH CMAKE_OSX_ARCHITECTURES num_of_archs) - if(num_of_archs GREATER 1) - message("*** Only one architecture in CMAKE_OSX_ARCHITECTURES is currently supported, picking the first one ***") - endif() - elseif(CMAKE_SIZEOF_VOID_P MATCHES "8") - #if that variable is not set check if we are on x86_64 and if so force it, else use default - add_flag_prepend(CMAKE_Pascal_FLAGS -Px86_64) - endif() - +if(NOT ${BUILD_ENGINE_LIBRARY} AND APPLE) #on OSX we need to provide the SDL_main() function when building as executable - if(NOT BUILD_ENGINE_LIBRARY) - list(APPEND HW_LINK_LIBS SDLmain) - add_flag_append(CMAKE_Pascal_FLAGS -Fl${LIBRARY_OUTPUT_PATH}) - endif() - - #when sysroot is set, make sure that fpc picks it - if(CMAKE_OSX_SYSROOT) - set(add_flag_append "-XD${CMAKE_OSX_SYSROOT}") - endif(CMAKE_OSX_SYSROOT) -endif(APPLE) + add_subdirectory(sdlmain) + list(APPEND HW_LINK_LIBS SDLmain) + add_flag_append(CMAKE_Pascal_FLAGS -Fl${LIBRARY_OUTPUT_PATH}) +endif() if(FFMPEG_FOUND) add_subdirectory(avwrapper) list(APPEND HW_LINK_LIBS avwrapper) add_definitions(-dUSE_VIDEO_RECORDING) add_flag_append(CMAKE_Pascal_FLAGS -Fl${LIBRARY_OUTPUT_PATH}) + #only for SDL < 2, linking carried out by fpc + find_package_or_disable_msg(GLUT NOVIDEOREC "Video recording will not be built") endif() find_package_or_disable_msg(PNG NOPNG "Screenshots will be saved in BMP") if(PNG_FOUND) + list(INSERT engine_sources 0 PNGh.pas) list(REMOVE_AT PNG_LIBRARIES 1) #removing the zlib library path get_filename_component(PNG_LIBRARY_DIR ${PNG_LIBRARIES} PATH) add_flag_append(CMAKE_Pascal_FLAGS -Fl${PNG_LIBRARY_DIR}) @@ -189,7 +168,7 @@ #SOURCE AND PROGRAMS SECTION if(BUILD_ENGINE_LIBRARY) - message(${WARNING} "Engine will be built as library (experimental)") + message("***Engine will be built as library (experimental)***") if(APPLE AND current_macosx_version VERSION_GREATER "10.5") # due to compiler/linker issues on Max OS X 10.6 -k-no_order_inits is needed to avoid linking fail add_flag_prepend(CMAKE_Pascal_FLAGS "-k-no_order_inits")