X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fnetradiant.git;a=blobdiff_plain;f=CMakeLists.txt;h=928461deec0b3468815218cf8a50a72e00b1ad88;hp=6abed33cbb4a8c1367753bfdeb0f2afccbdd1f19;hb=826fce3cdc0bce78d15c04a2eb0a373dc1b251a3;hpb=87520e8a7dc01698e70687a5a813a9bf65ff7310 diff --git a/CMakeLists.txt b/CMakeLists.txt index 6abed33c..928461de 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,6 +4,10 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake") project(NetRadiant C CXX) option(BUILD_RADIANT "Build the gui" ON) +if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + set(CMAKE_INSTALL_PREFIX "${PROJECT_SOURCE_DIR}/install" CACHE PATH "..." FORCE) +endif () + #----------------------------------------------------------------------- # Version #----------------------------------------------------------------------- @@ -16,6 +20,7 @@ set(NetRadiant_VERSION "${NetRadiant_VERSION_MAJOR}.${NetRadiant_VERSION_MINOR}. file(WRITE "${PROJECT_BINARY_DIR}/RADIANT_MAJOR" ${NetRadiant_VERSION_MAJOR}) file(WRITE "${PROJECT_BINARY_DIR}/RADIANT_MINOR" ${NetRadiant_VERSION_MINOR}) +file(WRITE "${PROJECT_BINARY_DIR}/RADIANT_PATCH" ${NetRadiant_VERSION_PATCH}) set(RADIANT_ABOUTMSG "Custom build" CACHE STRING "About message") @@ -56,8 +61,16 @@ endif () # Flags #----------------------------------------------------------------------- -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-strict-aliasing") -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-strict-aliasing -fno-exceptions -fno-rtti") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions -fno-rtti") +macro(addflags args) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${args}") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${args}") +endmacro() +addflags("-fno-strict-aliasing") +if (NOT WIN32) + addflags("-fvisibility=hidden") +endif () + set(CMAKE_POSITION_INDEPENDENT_CODE 1) set(GTK_NS "GTK2" CACHE STRING "GTK variable prefix") @@ -68,6 +81,7 @@ set(GTK_NS "GTK2" CACHE STRING "GTK variable prefix") add_definitions(-DRADIANT_VERSION="${NetRadiant_VERSION}") add_definitions(-DRADIANT_MAJOR_VERSION="${NetRadiant_VERSION_MAJOR}") add_definitions(-DRADIANT_MINOR_VERSION="${NetRadiant_VERSION_MINOR}") +add_definitions(-DRADIANT_PATCH_VERSION="${NetRadiant_VERSION_PATCH}") add_definitions(-DRADIANT_ABOUTMSG="${NetRadiant_ABOUT}") @@ -101,13 +115,20 @@ endif () include_directories("${PROJECT_SOURCE_DIR}/include") include_directories("${PROJECT_SOURCE_DIR}/libs") +if (WIN32 AND NOT CMAKE_CROSSCOMPILING) + set(BUNDLE_LIBRARIES_DEFAULT ON) +else () + set(BUNDLE_LIBRARIES_DEFAULT OFF) +endif () +option(BUNDLE_LIBRARIES "Bundle libraries" ${BUNDLE_LIBRARIES_DEFAULT}) + macro(copy_dlls target) - if (WIN32) + if (BUNDLE_LIBRARIES) add_custom_command(TARGET ${target} POST_BUILD - COMMAND bash - ARGS -c "ldd '$' | grep -v /c/Windows | awk '{ print $1 }' | while read dll; do cp \"$(which $dll)\" '${PROJECT_BINARY_DIR}'; done" - VERBATIM - ) + COMMAND bash + ARGS -c "ldd '$' | grep -v /c/Windows | awk '{ print $1 }' | while read dll; do cp \"$(which $dll)\" '${PROJECT_BINARY_DIR}'; done" + VERBATIM + ) endif () endmacro() @@ -138,12 +159,8 @@ endif () # Radiant #----------------------------------------------------------------------- -if (BUILD_RADIANT) - add_subdirectory(radiant build) -endif () - if (CMAKE_EXECUTABLE_SUFFIX) - set(RADIANT_EXECUTABLE ${CMAKE_EXECUTABLE_SUFFIX}) + string(REGEX REPLACE "^[.]" "" RADIANT_EXECUTABLE ${CMAKE_EXECUTABLE_SUFFIX}) else () execute_process( COMMAND uname -m @@ -152,7 +169,26 @@ else () ) endif () +macro(radiant_tool name) + add_executable(${name} ${ARGN}) + install( + TARGETS ${name} + RUNTIME DESTINATION . + ) + if (NOT (CMAKE_EXECUTABLE_SUFFIX STREQUAL ".${RADIANT_EXECUTABLE}")) + add_custom_command(TARGET ${name} POST_BUILD + COMMAND ln -f -s "$" "${PROJECT_BINARY_DIR}/${name}.${RADIANT_EXECUTABLE}" + VERBATIM + ) + install(CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink \ + ${name}${CMAKE_EXECUTABLE_SUFFIX} \ + ${CMAKE_INSTALL_PREFIX}/${name}.${RADIANT_EXECUTABLE} \ + )") + endif () +endmacro() + if (BUILD_RADIANT) + add_subdirectory(radiant build) set_target_properties(radiant PROPERTIES COMPILE_DEFINITIONS RADIANT_EXECUTABLE="${RADIANT_EXECUTABLE}" ) @@ -164,13 +200,12 @@ endif () add_subdirectory(tools) +file(GLOB DATA_FILES "${PROJECT_SOURCE_DIR}/setup/data/tools/*") + if (NOT (PROJECT_SOURCE_DIR STREQUAL PROJECT_BINARY_DIR)) # Copy data files from sources to the build directory message(STATUS "Copying data files") - file(GLOB DATA_FILES "${PROJECT_SOURCE_DIR}/setup/data/tools/*") file(COPY ${DATA_FILES} DESTINATION "${PROJECT_BINARY_DIR}") - file(GLOB DATA_FILES "${PROJECT_SOURCE_DIR}/docs/*") - file(COPY ${DATA_FILES} DESTINATION "${PROJECT_BINARY_DIR}/docs") endif () #----------------------------------------------------------------------- @@ -186,3 +221,53 @@ add_custom_target(game_packs if (DOWNLOAD_GAMEPACKS) add_custom_target(game_packs_all ALL DEPENDS game_packs) endif () + +#----------------------------------------------------------------------- +# Install +#----------------------------------------------------------------------- + +install( + FILES + "${PROJECT_BINARY_DIR}/RADIANT_MAJOR" + "${PROJECT_BINARY_DIR}/RADIANT_MINOR" + "${PROJECT_BINARY_DIR}/RADIANT_PATCH" + DESTINATION ${CMAKE_INSTALL_PREFIX} +) + +install( + DIRECTORY + ${PROJECT_SOURCE_DIR}/setup/data/tools/ + ${PROJECT_SOURCE_DIR}/docs + DESTINATION ${CMAKE_INSTALL_PREFIX} +) + +set(GAME_FILES + DarkPlacesPack + NexuizPack + OpenArenaPack + OsirionPack + Q3Pack + Quake2Pack + QuakePack + QuetooPack + TremulousPack + UFOAIPack + UnvanquishedPack + WarsowPack + XonoticPack + ) +unset(_tmp) +foreach (it ${GAME_FILES}) + set(it "${PROJECT_BINARY_DIR}/games/${it}") + list(APPEND _tmp "${it}/games") + file(GLOB GAME_DIR "${it}/*.game") + list(APPEND _tmp "${GAME_DIR}") +endforeach () +set(GAME_FILES ${_tmp}) + +install( + DIRECTORY + ${GAME_FILES} + DESTINATION ${CMAKE_INSTALL_PREFIX} + OPTIONAL +)