-if(EMBED_DATA)
- message(STATUS "Embedding data files into the binary")
-else(EMBED_DATA)
- message(STATUS "Installing data files separately")
-endif(EMBED_DATA)
-
-# RPATH needs to be set correctly
-# Do this down here, since otherwise KDE wants to handle it itself, and fails
-set(CMAKE_INSTALL_RPATH_USE_LINK_PATH 1)
-set(CMAKE_BUILD_WITH_INSTALL_RPATH 1)
-
-# Set global buildflags
-# This is very much non-portable, so don't use -DSTATIC until you know what
-# you do.
-if(STATIC AND CMAKE_COMPILER_IS_GNUCXX)
- set(CMAKE_CXX_FLAGS "-static-libgcc ${CMAKE_CXX_FLAGS}")
- link_directories(${CMAKE_BINARY_DIR}/staticlibs) # override dynamic libs
- if(HAVE_SSL)
- set(QUASSEL_SSL_LIBRARIES ssl crypto) # these miss in static builds
- endif(HAVE_SSL)
-endif(STATIC AND CMAKE_COMPILER_IS_GNUCXX)
-
-if(WIN32)
- link_libraries(imm32 winmm dbghelp Secur32) # missing by default :/
- if(MSVC)
- set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBUGINFO "/debug /INCREMENTAL:YES /NODEFAULTLIB:libcmt /DEFAULTLIB:msvcrt")
- set(CMAKE_EXE_LINKER_FLAGS_DEBUG "/debug /INCREMENTAL:YES /NODEFAULTLIB:libcmt")
- set(CMAKE_EXE_LINKER_FLAGS_DEBUGFULL "${CMAKE_EXE_LINKER_FLAGS_DEBUG}")
- link_libraries(Version dwmapi shlwapi)
- endif(MSVC)
- if(HAVE_SSL AND STATIC)
- find_package(OpenSSL REQUIRED)
- link_libraries(${OPENSSL_LIBRARIES} ${OPENSSL_EAY_LIBRARIES})
- endif(HAVE_SSL AND STATIC)
-endif(WIN32)
-
-if(INDICATEQT_FOUND)
- add_definitions(-DXDG_APPS_INSTALL_DIR=${XDG_APPS_INSTALL_DIR})
+# This needs to come after setting up KDE integration, so we can use KDE-specific paths
+include(QuasselInstallDirs)
+
+# RPATH and output settings
+#####################################################################
+
+# Build artifacts in a well-known location; especially important for Windows DLLs
+# (which go into RUNTIME_OUTPUT_DIRECTORY and can thus be found by executables)
+set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
+set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib")
+set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib")
+
+# These RPATH settings allow for running directly from the build dir
+set(CMAKE_SKIP_BUILD_RPATH FALSE)
+set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
+set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE )
+
+# Set install RPATH only if libdir isn't a system directory
+if (IS_ABSOLUTE "${CMAKE_INSTALL_LIBDIR}")
+ set(libdir "${CMAKE_INSTALL_LIBDIR}")
+else()
+ set(libdir "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
+endif()
+list(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${libdir}" is_systemdir)
+if ("${is_systemdir}" STREQUAL "-1")
+ set(CMAKE_INSTALL_RPATH "${libdir}")
+endif()
+
+# Various config-dependent checks and settings
+#####################################################################
+
+# Check for syslog support
+if (NOT WIN32)
+ check_include_file_cxx(syslog.h HAVE_SYSLOG)
+ add_feature_info("syslog.h" HAVE_SYSLOG "Provide support for logging to the syslog")
+endif()
+
+if (NOT WIN32)
+ check_function_exists(umask HAVE_UMASK)
+endif()
+
+if (EMBED_DATA)
+ message(STATUS "Embedding data files into the binary")
+else()
+ message(STATUS "Installing data files separately")
+endif()
+
+# Windows-specific stuff
+#####################################################################
+
+if (WIN32)
+ link_libraries(imm32 winmm dbghelp Secur32) # missing by default :/
+ if (MSVC)
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /DNOMINMAX")
+ set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBUGINFO "/debug /INCREMENTAL:YES /NODEFAULTLIB:libcmt /DEFAULTLIB:msvcrt")
+ set(CMAKE_EXE_LINKER_FLAGS_DEBUG "/debug /INCREMENTAL:YES /NODEFAULTLIB:libcmt")
+ set(CMAKE_EXE_LINKER_FLAGS_DEBUGFULL "${CMAKE_EXE_LINKER_FLAGS_DEBUG}")
+ link_libraries(Version dwmapi shlwapi)
+ endif()