list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")
project(NetRadiant C CXX)
+if (EXISTS "${PROJECT_SOURCE_DIR}/libs/crunch/inc/crn_decomp.h")
+ set(DEFAULT_BUILD_CRUNCH ON CACHE INTERNAL "...")
+else ()
+ set(DEFAULT_BUILD_CRUNCH OFF CACHE INTERNAL "...")
+endif ()
+
option(BUILD_RADIANT "Build the GUI" ON)
option(BUILD_TOOLS "Build the tools" ON)
-option(BUILD_CRUNCH "Build Crunch image support" OFF)
+option(BUILD_CRUNCH "Build Crunch image support" ${DEFAULT_BUILD_CRUNCH})
option(DOWNLOAD_GAMEPACKS "Download game packs" ON)
option(USE_WERROR "Build with -Werror -pedantic-errors" OFF)
option(FHS_INSTALL "Install according to Filesystem Hierarchy Standard" OFF)
set(RADIANT_BIN_DIR ${CMAKE_INSTALL_PREFIX} CACHE INTERNAL "...")
set(RADIANT_DATA_DIR ${CMAKE_INSTALL_PREFIX} CACHE INTERNAL "...")
-if (FHS_INSTALL)
+if (FHS_INSTALL AND NOT BUNDLE_LIBRARIES)
set(RADIANT_LIB_DIR ${CMAKE_INSTALL_PREFIX}/lib/${RADIANT_BASENAME})
set(RADIANT_BIN_DIR ${CMAKE_INSTALL_PREFIX}/bin)
set(RADIANT_DATA_DIR ${CMAKE_INSTALL_PREFIX}/share/${RADIANT_BASENAME})
if (BUILD_RADIANT)
set(GTK_TARGET 2 CACHE STRING "GTK target")
add_definitions(-DGTK_TARGET=${GTK_TARGET})
+
+ if (WIN32)
+ add_definitions(-DWORKAROUND_WINDOWS_FLOATING_WINDOW=1)
+
+ if (GTK_TARGET EQUAL 2)
+ add_definitions(-DWORKAROUND_WINDOWS_GTK2_GLWIDGET=1)
+ endif ()
+ endif ()
endif ()
#-----------------------------------------------------------------------
endif ()
if (BUILD_BINARIES)
+ add_custom_target(binaries ALL)
+
if(APPLE OR ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD")
link_directories(
/usr/local/lib
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 ()
+ if (WIN32 OR "${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
+ set(BUNDLING_SUPPORTED ON)
+ endif()
- option(BUNDLE_LIBRARIES "Bundle libraries" ${BUNDLE_LIBRARIES_DEFAULT})
-
- macro (copy_dlls target)
- if (BUNDLE_LIBRARIES AND WIN32)
- add_custom_command(TARGET ${target} POST_BUILD
- COMMAND bash
- ARGS -c "ldd '$<TARGET_FILE:${target}>' | egrep -i '\\.dll ' | grep -iv '/c/Windows' | awk '{ print $1 }' | while read dll; do dllbasename=\"$(which \"$dll\")\"; [ -f \"${PROJECT_BINARY_DIR}/$dllbasename\" ] || cp --preserve=timestamps \"$dllbasename\" '${PROJECT_BINARY_DIR}'; done"
- VERBATIM
- )
+ if (BUNDLING_SUPPORTED)
+ if(WIN32 AND NOT CMAKE_CROSSCOMPILING)
+ set(BUNDLE_LIBRARIES_DEFAULT ON)
+ else ()
+ set(BUNDLE_LIBRARIES_DEFAULT OFF)
endif ()
- endmacro ()
- macro (bundle_stuff target)
- if (BUNDLE_LIBRARIES AND WIN32)
- add_custom_command(TARGET ${target} POST_BUILD
- COMMAND bash
- ARGS -c "mkdir -p '${PROJECT_BINARY_DIR}/share/themes'; mkdir -p '${PROJECT_BINARY_DIR}/lib'; mingw=\"$(echo '${CMAKE_C_COMPILER}' | sed -e 's|/bin/.*||')\"; [ -d '${PROJECT_BINARY_DIR}/share/themes/MS-Windows' ] || cp -r --preserve=timestamps \"$mingw/share/themes/MS-Windows\" '${PROJECT_BINARY_DIR}/share/themes/'; [ -d '${PROJECT_BINARY_DIR}/lib/gdk-pixbuf-2.0' ] || cp -r --preserve=timestamps \"$mingw/lib/gdk-pixbuf-2.0\" '${PROJECT_BINARY_DIR}/lib/'; [ -d '${PROJECT_BINARY_DIR}/lib/gtk-2.0' ] || cp -r --preserve=timestamps \"$mingw/lib/gtk-2.0\" '${PROJECT_BINARY_DIR}/lib/'"
- VERBATIM
- )
+ option(BUNDLE_LIBRARIES "Bundle libraries" ${BUNDLE_LIBRARIES_DEFAULT})
+ endif ()
- file(GLOB DLL_FILES ${PROJECT_BINARY_DIR}/*.dll)
+ if (BUNDLE_LIBRARIES AND BUNDLING_SUPPORTED)
+ add_subdirectory(bundle)
- install(FILES
- ${DLL_FILES}
- DESTINATION ${CMAKE_INSTALL_PREFIX}
- )
+ set(FHS_INSTALL OFF CACHE PATH "Disabled because of BUNDLE_LIBRARIES" FORCE)
+ endif ()
- install(DIRECTORY
- ${PROJECT_BINARY_DIR}/lib
- ${PROJECT_BINARY_DIR}/share
- DESTINATION ${CMAKE_INSTALL_PREFIX}
- )
+ macro (copy_dlls target)
+ if (BUNDLE_LIBRARIES AND BUNDLING_SUPPORTED)
+ add_custom_command(TARGET ${target} POST_BUILD
+ COMMAND "${PROJECT_SOURCE_DIR}/library-bundler"
+ "register" "${PROJECT_BINARY_DIR}" "$<TARGET_FILE:${target}>"
+ VERBATIM
+ )
+ add_dependencies(bundle ${target})
endif ()
endmacro ()
endif ()
endif ()
macro (radiant_tool name)
- add_executable(${name} ${ARGN})
+ add_dependencies(binaries ${name})
+
+ if (WIN32)
+ add_executable(${name} ${ARGN} ${PROJECT_SOURCE_DIR}/include/lib.rc)
+ else ()
+ add_executable(${name} ${ARGN})
+ endif()
copy_dlls(${name})
set(GAMEPACKS_NAME_LIST none CACHE STRING "Download game packs by name")
if (DOWNLOAD_GAMEPACKS)
- add_custom_target(game_packs ALL
- COMMAND "${PROJECT_SOURCE_DIR}/gamepack-manager" --license ${GAMEPACKS_LICENSE_LIST} --name ${GAMEPACKS_NAME_LIST} --download-dir "${GAMEPACKS_DOWNLOAD_DIR}" --install-dir "${PROJECT_BINARY_DIR}" --download --install
+ add_custom_target(gamepacks ALL
+ COMMAND "${PROJECT_SOURCE_DIR}/gamepack-manager" --license ${GAMEPACKS_LICENSE_LIST} --name ${GAMEPACKS_NAME_LIST} --download-dir "${GAMEPACKS_DOWNLOAD_DIR}" --install-dir "${PROJECT_BINARY_DIR}/gamepacks" --download --install
COMMENT "Downloading game packs"
)
endif ()
set(GAME_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
endif ()
- file(GLOB GAME_DIRS ${PROJECT_BINARY_DIR}/*.game)
-
install(DIRECTORY
- ${PROJECT_BINARY_DIR}/games
- ${GAME_DIRS}
+ ${PROJECT_BINARY_DIR}/gamepacks
DESTINATION ${RADIANT_DATA_DIR}
)
endif ()