forked from Mirrors/openclonk
CMake: add C4GROUP_TOOL_ONLY
When cross-compiling c4group should be build for the host machine before building OpenClonk for the target. Without C4GROUP_TOOL_ONLY option, we have to build OpenClonk for the host. C4GROUP_TOOL_ONLY allow to build only c4group tool for the host. Signed-off-by: Romain Naour <romain.naour@gmail.com> --- With this patch I can build OpenClonk with Buildroot.stable-8
parent
54d2ce7e07
commit
f8136fcbc5
|
@ -48,6 +48,7 @@ CMAKE_DEPENDENT_OPTION(USE_WIN32_WINDOWS "Use Microsoft Desktop App User Interfa
|
|||
CMAKE_DEPENDENT_OPTION(USE_SDL_MAINLOOP "Use SDL to create windows etc. Qt editor." ON "NOT USE_COCOA AND NOT USE_WIN32_WINDOWS AND NOT HEADLESS_ONLY" OFF)
|
||||
option(WITH_AUTOMATIC_UPDATE "Automatic updates are downloaded from the project website." OFF)
|
||||
option(HEADLESS_ONLY "Only build headless parts. Somewhat reduces dependencies. (still needs libpng because that one's small and hard to remove.) Only tested with make/gcc/linux." OFF)
|
||||
option(C4GROUP_TOOL_ONLY "Only build c4group binary." OFF)
|
||||
|
||||
set_property(GLOBAL PROPERTY USE_FOLDERS ${PROJECT_FOLDERS})
|
||||
|
||||
|
@ -230,16 +231,20 @@ CHECK_CXX_SOURCE_COMPILES("#include <getopt.h>\nint main(int argc, char * argv[]
|
|||
# Locate libraries
|
||||
############################################################################
|
||||
SET(JPEG_NAMES ${JPEG_NAMES} libjpeg jpeg-static)
|
||||
if(NOT HEADLESS_ONLY)
|
||||
if(NOT HEADLESS_ONLY AND NOT C4GROUP_TOOL_ONLY)
|
||||
find_package(Freetype REQUIRED)
|
||||
include_directories(
|
||||
${FREETYPE_INCLUDE_DIRS})
|
||||
link_directories(
|
||||
${FREETYPE_LIBRARY_DIRS})
|
||||
endif()
|
||||
|
||||
# Needed for c4group
|
||||
find_package(ZLIB REQUIRED)
|
||||
|
||||
if (NOT C4GROUP_TOOL_ONLY)
|
||||
find_package(JPEG REQUIRED)
|
||||
find_package(PNG REQUIRED)
|
||||
find_package(ZLIB REQUIRED)
|
||||
include_directories(
|
||||
${JPEG_INCLUDE_DIR}
|
||||
${PNG_INCLUDE_DIR}
|
||||
|
@ -250,6 +255,7 @@ else()
|
|||
find_package("Threads" REQUIRED)
|
||||
SET(HAVE_PTHREAD ${CMAKE_USE_PTHREADS_INIT} CACHE INTERNAL "libpthread available")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# FINDLIB works the same as find_library, but also marks the resulting var as
|
||||
# advanced so it doesn't show in GUIs by default
|
||||
|
@ -273,6 +279,7 @@ if(NOT HAVE_GETOPT_H)
|
|||
set(GETOPT_LIBRARIES getopt)
|
||||
endif()
|
||||
|
||||
if (NOT C4GROUP_TOOL_ONLY)
|
||||
# TinyXML
|
||||
find_package(TinyXML)
|
||||
if(NOT TinyXML_FOUND)
|
||||
|
@ -282,10 +289,10 @@ if(NOT TinyXML_FOUND)
|
|||
set(TinyXML_LIBRARIES tinyxml)
|
||||
set(TinyXML_FOUND TRUE)
|
||||
endif()
|
||||
|
||||
include_directories(SYSTEM ${TinyXML_INCLUDE_DIRS})
|
||||
endif()
|
||||
|
||||
if(NOT HEADLESS_ONLY)
|
||||
if(NOT HEADLESS_ONLY AND NOT C4GROUP_TOOL_ONLY)
|
||||
find_package(OpenGL)
|
||||
find_package(GLEW REQUIRED)
|
||||
include_directories(${GLEW_INCLUDE_DIRS})
|
||||
|
@ -297,6 +304,7 @@ if(NOT HEADLESS_ONLY)
|
|||
CHECK_CXX_SOURCE_COMPILES("#include <GL/glew.h>\nvoid GLAPIENTRY OpenGLDebugProc(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const char* message, const void* userParam) {}\nint main() { GLDEBUGPROCARB proc = &OpenGLDebugProc; }" GLDEBUGPROCARB_USERPARAM_IS_CONST)
|
||||
endif()
|
||||
|
||||
if(NOT C4GROUP_TOOL_ONLY)
|
||||
if(UNIX AND NOT APPLE)
|
||||
FINDLIB(X11_LIBRARIES X11)
|
||||
|
||||
|
@ -317,6 +325,7 @@ if(UNIX AND NOT APPLE)
|
|||
FIND_PROC_SELF_EXE(/proc/curproc/exe) # NetBSD
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (WIN32)
|
||||
find_package(DbgHelp)
|
||||
|
@ -326,6 +335,7 @@ if (WIN32)
|
|||
set(HAVE_DBGHELP ${DBGHELP_FOUND})
|
||||
endif()
|
||||
|
||||
if(NOT C4GROUP_TOOL_ONLY)
|
||||
find_package(Upnp)
|
||||
if(UPNP_FOUND)
|
||||
include_directories(SYSTEM ${UPNP_INCLUDE_DIR})
|
||||
|
@ -369,10 +379,12 @@ else()
|
|||
message("Qt5Widgets not found. Building openclonk without editor.")
|
||||
UNSET(WITH_QT_EDITOR)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
############################################################################
|
||||
# generated source files
|
||||
############################################################################
|
||||
if(NOT C4GROUP_TOOL_ONLY)
|
||||
find_program(GLIB_COMPILE_RESOURCES glib-compile-resources)
|
||||
|
||||
add_custom_command(
|
||||
|
@ -391,6 +403,7 @@ add_custom_command(
|
|||
${CMAKE_CURRENT_SOURCE_DIR}/src/res/ocs.ico
|
||||
VERBATIM
|
||||
)
|
||||
endif()
|
||||
|
||||
############################################################################
|
||||
# Mac OS bundle setup
|
||||
|
@ -1174,7 +1187,7 @@ target_link_libraries(c4script
|
|||
${GETOPT_LIBRARIES}
|
||||
)
|
||||
|
||||
if(NOT HEADLESS_ONLY)
|
||||
if(NOT HEADLESS_ONLY AND NOT C4GROUP_TOOL_ONLY)
|
||||
add_executable(openclonk WIN32 MACOSX_BUNDLE
|
||||
${OC_SYSTEM_SOURCES}
|
||||
${OC_GUI_SOURCES}
|
||||
|
@ -1214,6 +1227,7 @@ if(NOT HEADLESS_ONLY)
|
|||
endif()
|
||||
endif()
|
||||
|
||||
if(NOT C4GROUP_TOOL_ONLY)
|
||||
add_executable(openclonk-server
|
||||
${OC_SYSTEM_SOURCES}
|
||||
${OC_CLONK_SOURCES}
|
||||
|
@ -1246,8 +1260,9 @@ endif()
|
|||
if(HAVE_BACKWARD)
|
||||
target_link_libraries(openclonk-server Backward::Backward)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(GTK3_FOUND AND GTK3_gtksourceview_FOUND AND NOT HEADLESS_ONLY)
|
||||
if(GTK3_FOUND AND GTK3_gtksourceview_FOUND AND NOT HEADLESS_ONLY AND NOT C4GROUP_TOOL_ONLY)
|
||||
add_executable(mape ${MAPE_BASE_SOURCES} ${MAPE_SOURCES})
|
||||
target_compile_options(mape PRIVATE ${GTK3_COMPILE_DEFINITIONS} ${GTK3_gtksourceview_COMPILE_DEFINITIONS})
|
||||
set_property(TARGET mape PROPERTY FOLDER "Utilities")
|
||||
|
@ -1274,6 +1289,7 @@ target_link_libraries(c4group
|
|||
libmisc
|
||||
)
|
||||
|
||||
if(NOT C4GROUP_TOOL_ONLY)
|
||||
add_executable(netpuncher EXCLUDE_FROM_ALL
|
||||
src/netpuncher/C4PuncherHash.h
|
||||
src/netpuncher/main.cpp
|
||||
|
@ -1286,6 +1302,7 @@ target_link_libraries(netpuncher
|
|||
if(WIN32)
|
||||
target_link_libraries(libmisc iphlpapi ws2_32)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS $<$<CONFIG:Debug>:_DEBUG>)
|
||||
set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS $<$<NOT:$<CONFIG:Debug>>:NDEBUG>)
|
||||
|
@ -1301,7 +1318,7 @@ if (APPLE AND NOT CMAKE_GENERATOR STREQUAL "Xcode")
|
|||
set(EXECUTABLE_NAME openclonk)
|
||||
endif()
|
||||
|
||||
if(NOT HEADLESS_ONLY)
|
||||
if(NOT HEADLESS_ONLY AND NOT C4GROUP_TOOL_ONLY)
|
||||
set_target_properties(openclonk PROPERTIES MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/src/res/Info.plist")
|
||||
endif()
|
||||
|
||||
|
@ -1387,7 +1404,9 @@ endif()
|
|||
############################################################################
|
||||
# Miscellaneous
|
||||
############################################################################
|
||||
if(NOT C4GROUP_TOOL_ONLY)
|
||||
add_subdirectory(tests)
|
||||
endif()
|
||||
|
||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h)
|
||||
|
||||
|
@ -1435,6 +1454,7 @@ IF(WITH_AUTOMATIC_UPDATE)
|
|||
INSTALL(CODE "MESSAGE(SEND_ERROR \"Installation is only supported for WITH_AUTOMATIC_UPDATE disabled\")")
|
||||
ENDIF()
|
||||
|
||||
if(NOT C4GROUP_TOOL_ONLY)
|
||||
# hack to build the data on install, see
|
||||
# http://public.kitware.com/Bug/view.php?id=8438
|
||||
add_custom_target(data)
|
||||
|
@ -1445,8 +1465,9 @@ install(
|
|||
COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target data
|
||||
)"
|
||||
)
|
||||
endif()
|
||||
|
||||
if (NOT APPLE)
|
||||
if (NOT APPLE AND NOT C4GROUP_TOOL_ONLY)
|
||||
install(
|
||||
FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/res/oc32.png
|
||||
DESTINATION share/icons/hicolor/32x32/apps
|
||||
|
@ -1494,6 +1515,7 @@ ELSE()
|
|||
SET(native_c4group c4group)
|
||||
ENDIF()
|
||||
|
||||
if(NOT C4GROUP_TOOL_ONLY)
|
||||
# NOTE: The scripts that does the autobuilds and ultimately the automated
|
||||
# releases as well do keep their own list of group files around currently.
|
||||
# So if you change anything here, change it in the release scripts as well.
|
||||
|
@ -1546,19 +1568,22 @@ foreach(group ${OC_C4GROUPS})
|
|||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${group} DESTINATION share/games/openclonk)
|
||||
endif()
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
if(NOT APPLE)
|
||||
if(NOT HEADLESS_ONLY)
|
||||
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/planet/Music.ocg DESTINATION share/games/openclonk)
|
||||
endif()
|
||||
if(NOT C4GROUP_TOOL_ONLY)
|
||||
# group files (game data)
|
||||
add_custom_target(groups DEPENDS ${OC_C4GROUPS})
|
||||
set_property(TARGET groups PROPERTY FOLDER "Setup")
|
||||
add_dependencies(data groups)
|
||||
endif()
|
||||
# Install binaries
|
||||
install(TARGETS c4group DESTINATION bin)
|
||||
endif()
|
||||
if(NOT HEADLESS_ONLY)
|
||||
if(NOT HEADLESS_ONLY AND NOT C4GROUP_TOOL_ONLY)
|
||||
if(NOT APPLE)
|
||||
# Install new files
|
||||
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/openclonk.desktop DESTINATION share/applications)
|
||||
|
@ -1584,6 +1609,7 @@ endif()
|
|||
# setup_openclonk.exe
|
||||
############################################################################
|
||||
|
||||
if(NOT C4GROUP_TOOL_ONLY)
|
||||
find_program(MAKENSIS makensis PATHS [HKEY_LOCAL_MACHINE\\SOFTWARE\\NSIS])
|
||||
|
||||
if(NOT HEADLESS_ONLY)
|
||||
|
@ -1605,6 +1631,7 @@ if(NOT HEADLESS_ONLY)
|
|||
)
|
||||
set_property(TARGET setup PROPERTY FOLDER "Setup")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
############################################################################
|
||||
# CPack support
|
||||
|
|
Loading…
Reference in New Issue