diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..b18d13e --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,224 @@ +cmake_minimum_required(VERSION 3.10) +project(ogre-base) +include(ExternalProject) +include(ProcessorCount) + +set(CUSTOM_OPTS -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_PREFIX_PATH=${CMAKE_CURRENT_SOURCE_DIR}/ogre-sdk -DCMAKE_INSTALL_PREFIX=${CMAKE_CURRENT_SOURCE_DIR}/ogre-sdk -DBUILD_SHARED_LIBS=ON) +set(CUSTOM_OPTS_STATIC -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_PREFIX_PATH=${CMAKE_CURRENT_SOURCE_DIR}/ogre-sdk-static -DCMAKE_INSTALL_PREFIX=${CMAKE_CURRENT_SOURCE_DIR}/ogre-sdk-static -DBUILD_SHARED_LIBS=OFF) + +ProcessorCount(numCores) + +find_program (MAKE_EXECUTABLE make DOC make REQUIRED) +find_package (PkgConfig) +pkg_check_modules(GFX_LIBS REQUIRED wayland-client wayland-protocols x11 libdrm) + + +ExternalProject_Add(zlib + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/zlib + CMAKE_ARGS -DZLIB_BUILD_STATIC=OFF -DZLIB_BUILD_SHARED=ON -DZLIB_BUILD_MINIZIP=ON -DMINIZIP_BUILD_SHARED=ON -DMINIZIP_BUILD_STATIC=OFF -DMINIZIP_ENABLE_BZIP2=OFF ${CUSTOM_OPTS} +) + +ExternalProject_Add(zlib-static-nominizip + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/zlib + CMAKE_ARGS -DZLIB_BUILD_STATIC=ON -DZLIB_BUILD_SHARED=OFF -DZLIB_BUILD_MINIZIP=OFF -DMINIZIP_BUILD_SHARED=OFF -DMINIZIP_BUILD_STATIC=ON -DMINIZIP_ENABLE_BZIP2=OFF ${CUSTOM_OPTS_STATIC} +) + +ExternalProject_Add(zlib-static + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/zlib + CMAKE_ARGS -DZLIB_BUILD_STATIC=ON -DZLIB_BUILD_SHARED=OFF -DZLIB_BUILD_MINIZIP=ON -DMINIZIP_BUILD_SHARED=OFF -DMINIZIP_BUILD_STATIC=ON -DMINIZIP_ENABLE_BZIP2=OFF ${CUSTOM_OPTS_STATIC} + DEPENDS zlib-static-nominizip +) + +ExternalProject_Add(jpeg-turbo + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/libjpeg-turbo + CMAKE_ARGS -DENABLE_SHARED=TRUE -DENABLE_STATIC=FALSE + -DCMAKE_POSITION_INDEPENDENT_CODE=TRUE + ${CUSTOM_OPTS} +) + +ExternalProject_Add(jpeg-turbo-static + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/libjpeg-turbo + CMAKE_ARGS -DENABLE_SHARED=FALSE -DENABLE_STATIC=TRUE + -DCMAKE_POSITION_INDEPENDENT_CODE=TRUE + ${CUSTOM_OPTS_STATIC} +) + +ExternalProject_Add(libpng + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/libpng + CMAKE_ARGS -DPNG_SHARED=ON ${CUSTOM_OPTS} + DEPENDS zlib +) + +ExternalProject_Add(libpng-static + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/libpng + CMAKE_ARGS -DPNG_SHARED=OFF + -DCMAKE_POSITION_INDEPENDENT_CODE=TRUE + ${CUSTOM_OPTS_STATIC} + DEPENDS zlib-static +) + +ExternalProject_Add(pugixml + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/pugixml + CMAKE_ARGS ${CUSTOM_OPTS} +) + +ExternalProject_Add(pugixml-static + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/pugixml + CMAKE_ARGS ${CUSTOM_OPTS_STATIC} +) + +set(FFMPEG_EXTRA_LIBS "'${GFX_LIBS_LDFLAGS}'") +ExternalProject_Add(ffmpeg + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/ffmpeg + CONFIGURE_COMMAND env PKG_CONFIG_PATH=${CMAKE_CURRENT_SOURCE_DIR}/ogre-sdk/lib/pkgconfig + "/configure" --prefix=${CMAKE_CURRENT_SOURCE_DIR}/ogre-sdk --enable-shared --disable-static --disable-programs +# --extra-libs=${FFMPEG_EXTRA_LIBS} + BUILD_COMMAND "${MAKE_EXECUTABLE}" -j${numCores} all + INSTALL_COMMAND "${MAKE_EXECUTABLE}" -j${numCores} all + DEPENDS libpng jpeg-turbo +) + +ExternalProject_Add(ffmpeg-static + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/ffmpeg + CONFIGURE_COMMAND env PKG_CONFIG_PATH=${CMAKE_CURRENT_SOURCE_DIR}/ogre-sdk-static/lib/pkgconfig + "/configure" --prefix=${CMAKE_CURRENT_SOURCE_DIR}/ogre-sdk-static --disable-shared --enable-static --disable-programs +# --extra-libs=${FFMPEG_EXTRA_LIBS} + BUILD_COMMAND "${MAKE_EXECUTABLE}" -j${numCores} all + INSTALL_COMMAND "${MAKE_EXECUTABLE}" -j${numCores} all + DEPENDS libpng-static jpeg-turbo-static +) + +ExternalProject_Add(assimp + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/assimp + CMAKE_ARGS -DASSIMP_BUILD_ZLIB=ON -DBUILD_SHARED_LIBS=OFF ${CUSTOM_OPTS} + DEPENDS zlib jpeg-turbo pugixml +) + +ExternalProject_Add(assimp-static + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/assimp + CMAKE_ARGS -DASSIMP_BUILD_ZLIB=ON -DBUILD_SHARED_LIBS=OFF ${CUSTOM_OPTS_STATIC} + DEPENDS zlib-static jpeg-turbo-static pugixml-static +) + +ExternalProject_Add(SDL + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/SDL + CMAKE_ARGS -DSDL_SHARED=OFF -DSDL_STATIC=ON -DSDL_STATIC_PIC=ON -DSDL_X11=ON + -DSDL_X11_SHARED=OFF -DSDL_X11_XCURSOR=ON -DSDL_X11_XDBE=ON + -DSDL_X11_XINPUT=ON -DSDL_X11_XRANDR=ON -DSDL_X11_XSCRNSAVER=ON -DSDL_X11_XSHAPE=ON -DSDL_WAYLAND=ON + -DSDL_WAYLAND_SHARED=OFF -DSDL_WAYLAND_LIBDECOR=ON -DSDL_WAYLAND_LIBDECOR_SHARED=OFF -DSDL_KMSDRM=ON -DSDL_KMSDRM_SHARED=OFF -DSDL_OPENGL=ON + -DSDL_OPENGLES=ON -DSDL_VULKAN=ON-DSDL_ALSA=ON -DSDL_ALSA_SHARED=OFF -DSDL_PIPEWIRE=ON -DSDL_PIPEWIRE_SHARED=OFF + -DSDL_PULSEAUDIO=ON -DSDL_PULSEAUDIO_SHARED=OFF -DSDL_RPATH=OFF -DSDL_HIDAPI=ON -DSDL_HIDAPI_JOYSTICK=ON + ${CUSTOM_OPTS} + DEPENDS libpng jpeg-turbo +) + +ExternalProject_Add(SDL-static + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/SDL + CMAKE_ARGS -DSDL_SHARED=OFF -DSDL_STATIC=ON -DSDL_STATIC_PIC=ON -DSDL_X11=ON + -DSDL_X11_SHARED=OFF -DSDL_X11_XCURSOR=ON -DSDL_X11_XDBE=ON + -DSDL_X11_XINPUT=ON -DSDL_X11_XRANDR=ON -DSDL_X11_XSCRNSAVER=ON -DSDL_X11_XSHAPE=ON -DSDL_WAYLAND=ON + -DSDL_WAYLAND_SHARED=OFF -DSDL_WAYLAND_LIBDECOR=ON -DSDL_WAYLAND_LIBDECOR_SHARED=OFF -DSDL_KMSDRM=ON -DSDL_KMSDRM_SHARED=OFF -DSDL_OPENGL=ON + -DSDL_OPENGLES=ON -DSDL_VULKAN=ON-DSDL_ALSA=ON -DSDL_ALSA_SHARED=OFF -DSDL_PIPEWIRE=ON -DSDL_PIPEWIRE_SHARED=OFF + -DSDL_PULSEAUDIO=ON -DSDL_PULSEAUDIO_SHARED=OFF -DSDL_RPATH=OFF -DSDL_HIDAPI=ON -DSDL_HIDAPI_JOYSTICK=ON + ${CUSTOM_OPTS_STATIC} + DEPENDS libpng-static jpeg-turbo-static +) + +ExternalProject_Add(SPIRV-Headers + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/SPIRV-Headers + CMAKE_ARGS ${CUSTOM_OPTS} +) + +#ExternalProject_Add(SPIRV-Tools +# SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/SPIRV-Tools +# CMAKE_ARGS -DBUILD_SHARED_LIBS=OFF -DSPIRV_TOOLS_BUILD_STATIC=ON -DSPIRV_TOOLS_LIBRARY_TYPE=STATIC ${CUSTOM_OPTS} +#) + +ExternalProject_Add(ogre + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/ogre + CMAKE_ARGS -DOGRE_GLSUPPORT_USE_EGL:BOOL=FALSE -DOGRE_BUILD_RENDERSYSTEM_VULKAN:BOOL=TRUE -DOGRE_INSTALL_DEPENDENCIES:BOOL=TRUE + -DASSIMP_BUILD_ASSIMP_TOOLS=ON + -DOGRE_STATIC=FALSE + ${CUSTOM_OPTS} + DEPENDS ffmpeg jpeg-turbo libpng SDL assimp +) + +ExternalProject_Add(ogre-static + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/ogre + CMAKE_ARGS -DOGRE_GLSUPPORT_USE_EGL:BOOL=FALSE -DOGRE_BUILD_RENDERSYSTEM_VULKAN:BOOL=TRUE -DOGRE_INSTALL_DEPENDENCIES:BOOL=TRUE + -DASSIMP_BUILD_ASSIMP_TOOLS=ON + -DOGRE_STATIC=TRUE + ${CUSTOM_OPTS_STATIC} + DEPENDS ffmpeg-static jpeg-turbo-static libpng-static SDL-static assimp-static +) + +ExternalProject_Add(ogre-procedural + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/ogre-procedural + CMAKE_ARGS -DOgreProcedural_BUILD_DOCS:BOOL=FALSE + -DOgreProcedural_STATIC=FALSE -DOgreProcedural_BUILD_SAMPLES=TRUE + ${CUSTOM_OPTS} -DCMAKE_BUILD_TYPE=Debug + DEPENDS ogre +) + +ExternalProject_Add(ogre-procedural-static + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/ogre-procedural + CMAKE_ARGS -DOgreProcedural_BUILD_DOCS:BOOL=FALSE + -DOgreProcedural_STATIC=TRUE -DOgreProcedural_BUILD_SAMPLES=TRUE + ${CUSTOM_OPTS_STATIC} -DCMAKE_BUILD_TYPE=Release + DEPENDS ogre-static +) + +ExternalProject_Add(ogre-pagedgeometry + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/ogre-pagedgeometry + CMAKE_ARGS + ${CUSTOM_OPTS} + DEPENDS ogre +) + +ExternalProject_Add(ogre-pagedgeometry-static + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/ogre-pagedgeometry + CMAKE_ARGS + ${CUSTOM_OPTS_STATIC} + DEPENDS ogre-static +) + +ExternalProject_Add(ogrewater + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/ogrewater + CMAKE_ARGS + ${CUSTOM_OPTS} + INSTALL_COMMAND "" + DEPENDS SDL zlib ogre +) + +ExternalProject_Add(ogrewater-static + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/ogrewater + CMAKE_ARGS + ${CUSTOM_OPTS_STATIC} + INSTALL_COMMAND "" + DEPENDS SDL-static zlib-static ogre-static +) + +ExternalProject_Add(flecs + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/flecs + CMAKE_ARGS -DFLECS_STATIC=ON -DFLECS_SHARED=OFF -DFLECS_PIC=ON -DFLECS_TESTS=OFF + ${CUSTOM_OPTS} +) + +ExternalProject_Add(flecs-static + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/flecs + CMAKE_ARGS -DFLECS_STATIC=ON -DFLECS_SHARED=OFF -DFLECS_PIC=ON -DFLECS_TESTS=OFF + ${CUSTOM_OPTS_STATIC} +) + +ExternalProject_Add(world2 + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/ogre-projects/world2 + CMAKE_ARGS ${CUSTOM_OPTS} + DEPENDS ogre ogre-procedural ogre-pagedgeometry flecs SDL +) + +ExternalProject_Add(world2-static + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/ogre-projects/world2 + CMAKE_ARGS ${CUSTOM_OPTS_STATIC} + DEPENDS ogre-static ogre-procedural-static ogre-pagedgeometry-static flecs-static SDL-static +) +