khanat-opennel-code/code/ryzom/client/src/CMakeLists.txt

220 lines
9 KiB
CMake

IF(WITH_RYZOM_TOOLS OR WITH_RYZOM_CLIENT)
# Need clientsheets lib for sheets packer tool
ADD_SUBDIRECTORY(client_sheets)
ENDIF()
IF(WITH_RYZOM_TOOLS OR WITH_RYZOM_CLIENT OR WITH_RYZOM_INSTALLER)
# Need seven_zip lib for patch_gen tool
ADD_SUBDIRECTORY(seven_zip)
ENDIF()
IF(WITH_RYZOM_CLIENT)
IF(NOT WITH_GUI)
MESSAGE(FATAL_ERROR "The client cannot be built without the NeL GUI Library (WITH_GUI)")
ENDIF()
# Patch should never be enabled on Steam
IF(WITH_RYZOM_STEAM)
ADD_DEFINITIONS(-DRZ_USE_STEAM)
FIND_PACKAGE(Steam)
ELSEIF(WITH_RYZOM_PATCH)
ADD_DEFINITIONS(-DRZ_USE_PATCH)
IF(WITH_RYZOM_CUSTOM_PATCH_SERVER)
ADD_DEFINITIONS(-DRZ_USE_CUSTOM_PATCH_SERVER)
ENDIF()
ENDIF()
FILE(GLOB CFG ../*.cfg)
FILE(GLOB SRC *.cpp *.h motion/*.cpp motion/*.h client.rc)
FILE(GLOB SRC_INTERFACE interface_v3/*.h interface_v3/*.cpp)
FILE(GLOB SRC_MODE motion/modes/*.cpp motion/modes/*.h)
FILE(GLOB SRC_R2 r2/*.h r2/*.cpp r2/dmc/*.h r2/dmc/*.cpp)
# Filter out the source files not actually compiled.
LIST(REMOVE_ITEM SRC
${CMAKE_CURRENT_SOURCE_DIR}/animated_scene_object.cpp
${CMAKE_CURRENT_SOURCE_DIR}/animated_scene_object.h
${CMAKE_CURRENT_SOURCE_DIR}/animation_fx_sheet.h
${CMAKE_CURRENT_SOURCE_DIR}/animation_fx_sheet.cpp
${CMAKE_CURRENT_SOURCE_DIR}/3d_notes.cpp
${CMAKE_CURRENT_SOURCE_DIR}/3d_notes.h
${CMAKE_CURRENT_SOURCE_DIR}/rosace_functions.cpp
${CMAKE_CURRENT_SOURCE_DIR}/rosace_functions.h
${CMAKE_CURRENT_SOURCE_DIR}/scene_parser.cpp
${CMAKE_CURRENT_SOURCE_DIR}/scene_parser.h)
LIST(REMOVE_ITEM SRC_MODE
${CMAKE_CURRENT_SOURCE_DIR}/motion/modes/free_head.cpp
${CMAKE_CURRENT_SOURCE_DIR}/motion/modes/free_head.h)
LIST(REMOVE_ITEM SRC_INTERFACE
${CMAKE_CURRENT_SOURCE_DIR}/interface_v3/lua_dll.cpp
${CMAKE_CURRENT_SOURCE_DIR}/interface_v3/lua_dll.h
${CMAKE_CURRENT_SOURCE_DIR}/interface_v3/view_bitmap_progress.cpp
${CMAKE_CURRENT_SOURCE_DIR}/interface_v3/view_bitmap_progress.h)
SOURCE_GROUP("" FILES ${SRC})
SOURCE_GROUP("cfg" FILES ${CFG})
SOURCE_GROUP("interface_v3" FILES ${SRC_INTERFACE})
SOURCE_GROUP("mode" FILES ${SRC_MODE})
SOURCE_GROUP("r2" FILES ${SRC_R2})
# on Mac, create a .App Bundle
if(APPLE)
# We could force another build version for the bundle
IF(NOT RYZOM_BUILD)
SET(RYZOM_BUILD ${RYZOM_VERSION_SHORT})
ENDIF()
SET(MACOSX_BUNDLE_INFO_STRING "Khanat")
SET(MACOSX_BUNDLE_ICON_FILE "khanat.icns")
SET(MACOSX_BUNDLE_GUI_IDENTIFIER "")
SET(MACOSX_BUNDLE_LONG_VERSION_STRING ${RYZOM_VERSION})
SET(MACOSX_BUNDLE_BUNDLE_NAME "Khanat")
SET(MACOSX_BUNDLE_SHORT_VERSION_STRING ${RYZOM_VERSION_SHORT})
SET(MACOSX_BUNDLE_BUNDLE_VERSION ${RYZOM_BUILD})
SET(MACOSX_BUNDLE_COPYRIGHT ${COPYRIGHT})
SET(RYZOM_OUTPUT_DIR ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${MACOSX_BUNDLE_BUNDLE_NAME}.app)
SET(RYZOM_CONTENTS_DIR ${RYZOM_OUTPUT_DIR}/Contents)
SET(RYZOM_RESOURCES_DIR ${RYZOM_CONTENTS_DIR}/Resources)
SET(MAC_RESOURCES_DIR ${CMAKE_SOURCE_DIR}/ryzom/client/macosx)
ENDIF()
ADD_EXECUTABLE(khanat_client WIN32 MACOSX_BUNDLE ${SRC} ${SRC_INTERFACE} ${SRC_MODE} ${SRC_R2})
IF(APPLE)
SET_TARGET_PROPERTIES(khanat_client PROPERTIES OUTPUT_NAME ${MACOSX_BUNDLE_BUNDLE_NAME})
SET_TARGET_PROPERTIES(khanat_client PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${MAC_RESOURCES_DIR}/Info.plist)
ADD_CUSTOM_COMMAND(TARGET khanat_client PRE_BUILD COMMAND mkdir -p ${RYZOM_RESOURCES_DIR})
ADD_CUSTOM_COMMAND(TARGET khanat_client POST_BUILD COMMAND cp ARGS -p ${MAC_RESOURCES_DIR}/PkgInfo ${RYZOM_CONTENTS_DIR})
ADD_CUSTOM_COMMAND(TARGET khanat_client POST_BUILD COMMAND cp ARGS -p ${MAC_RESOURCES_DIR}/khanat.icns ${RYZOM_RESOURCES_DIR})
ADD_CUSTOM_COMMAND(TARGET khanat_client POST_BUILD COMMAND cp ARGS -p ${CMAKE_SOURCE_DIR}/ryzom/client/client_default.cfg ${RYZOM_RESOURCES_DIR})
# remove any present installscript_osx.vdf before signing
ADD_CUSTOM_COMMAND(TARGET khanat_client POST_BUILD COMMAND rm -f ${RYZOM_OUTPUT_DIR}/installscript_osx.vdf)
IF(RYZOM_DATA_DIR)
ADD_CUSTOM_COMMAND(TARGET khanat_client POST_BUILD COMMAND cp ARGS -RpX ${RYZOM_DATA_DIR} ${RYZOM_RESOURCES_DIR})
ENDIF()
IF(WITH_RYZOM_SANDBOX)
SET(ENTITLEMENTS --entitlements ${MAC_RESOURCES_DIR}/ryzom.entitlements)
ELSE()
SET(ENTITLEMENTS)
ENDIF()
IF(TARGET crash_report)
ADD_DEPENDENCIES(khanat_client crash_report)
# copy crash_report to bundle
ADD_CUSTOM_COMMAND(TARGET khanat_client POST_BUILD COMMAND cp -p ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/crash_report ${RYZOM_CONTENTS_DIR}/MacOS/CrashReport)
IF(CODESIGN_ALLOCATE AND APPLE_CERTIFICATE)
ADD_CUSTOM_COMMAND(TARGET khanat_client POST_BUILD COMMAND CODESIGN_ALLOCATE=${CODESIGN_ALLOCATE} codesign -fs ${ENTITLEMENTS} "${APPLE_CERTIFICATE}" "${RYZOM_CONTENTS_DIR}/MacOS/CrashReport" COMMENT "Signing CrashReport executable...")
ENDIF()
ENDIF()
IF(TARGET khanat_client_patcher)
ADD_DEPENDENCIES(khanat_client khanat_client_patcher)
# copy khanat_client_patcher to bundle
ADD_CUSTOM_COMMAND(TARGET khanat_client POST_BUILD COMMAND cp -p ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/khanat_client_patcher ${RYZOM_CONTENTS_DIR}/MacOS/KhanatClientPatcher)
IF(CODESIGN_ALLOCATE AND APPLE_CERTIFICATE)
ADD_CUSTOM_COMMAND(TARGET khanat_client POST_BUILD COMMAND CODESIGN_ALLOCATE=${CODESIGN_ALLOCATE} codesign ${ENTITLEMENTS} -fs "${APPLE_CERTIFICATE}" "${RYZOM_CONTENTS_DIR}/MacOS/KhanatClientPatcher" COMMENT "Signing KhanatClientPatcher executable...")
ENDIF()
ENDIF()
IF(TARGET ryzom_configuration_qt)
ADD_DEPENDENCIES(khanat_client ryzom_configuration_qt)
# copy ryzom_configuration_qt to bundle
ADD_CUSTOM_COMMAND(TARGET khanat_client POST_BUILD COMMAND cp -p ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ryzom_configuration_qt ${RYZOM_CONTENTS_DIR}/MacOS/RyzomConfiguration)
IF(CODESIGN_ALLOCATE AND APPLE_CERTIFICATE)
ADD_CUSTOM_COMMAND(TARGET khanat_client POST_BUILD COMMAND CODESIGN_ALLOCATE=${CODESIGN_ALLOCATE} codesign ${ENTITLEMENTS} -fs "${APPLE_CERTIFICATE}" "${RYZOM_CONTENTS_DIR}/MacOS/RyzomConfiguration" COMMENT "Signing RyzomConfiguration executable...")
ENDIF()
ENDIF()
IF(WITH_RYZOM_STEAM AND STEAM_RUNTIME)
ADD_CUSTOM_COMMAND(TARGET Khanat_client POST_BUILD COMMAND cp -p ${STEAM_RUNTIME} ${RYZOM_CONTENTS_DIR}/MacOS)
IF(CODESIGN_ALLOCATE AND APPLE_CERTIFICATE)
ADD_CUSTOM_COMMAND(TARGET Khanat_client POST_BUILD COMMAND CODESIGN_ALLOCATE=${CODESIGN_ALLOCATE} codesign --no-strict -fs "${APPLE_CERTIFICATE}" "${RYZOM_CONTENTS_DIR}/MacOS/${STEAM_RUNTIMENAME}" COMMENT "Signing Steam client runtime...")
ENDIF()
ENDIF()
IF(CODESIGN_ALLOCATE AND APPLE_CERTIFICATE)
ADD_CUSTOM_COMMAND(TARGET khanat_client POST_BUILD COMMAND CODESIGN_ALLOCATE=${CODESIGN_ALLOCATE} codesign ${ENTITLEMENTS} -fs "${APPLE_CERTIFICATE}" "${RYZOM_OUTPUT_DIR}" COMMENT "Signing Ryzom bundle...")
ENDIF()
ENDIF()
INCLUDE_DIRECTORIES(
${CMAKE_CURRENT_SOURCE_DIR}
${LIBXML2_INCLUDE_DIR}
${LUA_INCLUDE_DIR}
${LUABIND_INCLUDE_DIR}
${CURL_INCLUDE_DIRS}
${ZLIB_INCLUDE_DIR}
${OPENSSL_INCLUDE_DIR}
)
IF(STEAM_FOUND)
INCLUDE_DIRECTORIES(${STEAM_INCLUDE_DIRS})
ENDIF()
TARGET_LINK_LIBRARIES(khanat_client
nelmisc
nelnet
nelligo
nelgeorges
nel3d
nelgui
nelsound
ryzom_sevenzip
ryzom_clientsheets
ryzom_gameshare
nelpacs
${LUA_LIBRARIES}
${LUABIND_LIBRARIES}
${CURL_LIBRARIES}
${OPENSSL_LIBRARIES}
)
IF(NOT APPLE AND NOT WIN32)
TARGET_LINK_LIBRARIES(khanat_client ${X11_LIBRARIES})
ENDIF()
IF(APPLE)
FIND_LIBRARY(FOUNDATION_LIBRARY Foundation)
TARGET_LINK_LIBRARIES(khanat_client ${FOUNDATION_LIBRARY})
ENDIF()
ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} ${CURL_DEFINITIONS} ${LUABIND_DEFINITIONS})
NL_DEFAULT_PROPS(khanat_client "Khanat, Client: Khanat Client")
NL_ADD_RUNTIME_FLAGS(khanat_client)
IF(FINAL_VERSION)
NL_ADD_LIB_SUFFIX(khanat_client)
ELSE()
IF(WIN32)
SET_TARGET_PROPERTIES(khanat_client PROPERTIES DEBUG_POSTFIX "_dev_d" RELEASE_POSTFIX "_dev_r")
ELSE()
SET_TARGET_PROPERTIES(khanat_client PROPERTIES POSTFIX "_dev")
ENDIF()
ENDIF()
IF(WITH_RYZOM_CLIENT_UAC)
IF(CMAKE_GENERATOR MATCHES "Visual Studio")
SET_PROPERTY(TARGET khanat_client PROPERTY LINK_FLAGS_RELEASE "/level='requireAdministrator'")
ELSEIF(CMAKE_GENERATOR MATCHES "NMake Makefiles")
SET_PROPERTY(TARGET khanat_client PROPERTY LINK_FLAGS_RELEASE "/MANIFESTUAC:\"level='requireAdministrator' uiAccess='false'\"")
ENDIF()
ENDIF()
IF(WITH_PCH AND (NOT MINGW OR NOT WITH_SYMBOLS))
ADD_NATIVE_PRECOMPILED_HEADER(khanat_client ${CMAKE_CURRENT_SOURCE_DIR}/stdpch.h ${CMAKE_CURRENT_SOURCE_DIR}/stdpch.cpp)
ENDIF()
INSTALL(TARGETS khanat_client RUNTIME DESTINATION ${RYZOM_GAMES_PREFIX} COMPONENT client BUNDLE DESTINATION /Applications)
ENDIF()