summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2014-04-06 20:56:40 +0200
committerPetr Mrázek <peterix@gmail.com>2014-04-06 20:56:40 +0200
commit17d4947b30f00a347d7fb8648040271e4b65f966 (patch)
tree2a67eb53d6a72a39119adec905db5b899f691e3e
parent6ef38d0873bc424ff72d0eb5363924b00b0cadc2 (diff)
parenteb246c4fa744bd50e008455f5f8363114b4de3eb (diff)
downloadMultiMC-17d4947b30f00a347d7fb8648040271e4b65f966.tar
MultiMC-17d4947b30f00a347d7fb8648040271e4b65f966.tar.gz
MultiMC-17d4947b30f00a347d7fb8648040271e4b65f966.tar.lz
MultiMC-17d4947b30f00a347d7fb8648040271e4b65f966.tar.xz
MultiMC-17d4947b30f00a347d7fb8648040271e4b65f966.zip
Merge remote-tracking branch 'origin/feature_dotcmake' into develop
-rw-r--r--CMakeLists.txt30
-rw-r--r--cmake/Coverage.cmake13
-rw-r--r--cmake/QMakeQuery.cmake14
-rw-r--r--cmake/UseCXX11.cmake13
-rw-r--r--depends/settings/CMakeLists.txt10
-rw-r--r--depends/util/CMakeLists.txt24
6 files changed, 53 insertions, 51 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 15f9a13d..ef81c53a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,5 +1,10 @@
cmake_minimum_required(VERSION 2.8.9)
+string(COMPARE EQUAL "${CMAKE_SOURCE_DIR}" "${CMAKE_BUILD_DIR}" IS_IN_SOURCE_BUILD)
+if(IS_IN_SOURCE_BUILD)
+ message(AUTHOR_WARNING "You are building MultiMC in-source. This is NOT recommended!")
+endif()
+
IF(WIN32)
# In Qt 5.1+ we have our own main() function, don't autolink to qtmain on Windows
cmake_policy(SET CMP0020 OLD)
@@ -28,19 +33,10 @@ ENDIF()
set(CMAKE_JAVA_TARGET_OUTPUT_DIR ${PROJECT_BINARY_DIR}/jars)
######## Set compiler flags ########
-IF(APPLE)
- message(STATUS "Using APPLE CMAKE_CXX_FLAGS")
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall")
-ELSEIF(UNIX)
- # assume GCC, add C++0x/C++11 stuff
- MESSAGE(STATUS "Using UNIX CMAKE_CXX_FLAGS")
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall")
-ELSEIF(MINGW)
- MESSAGE(STATUS "Using MINGW CMAKE_CXX_FLAGS")
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11 -Wall")
-ENDIF()
+include(UseCXX11)
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
+set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Werror=return-type")
-SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Werror=return-type")
################################ 3rd Party Libs ################################
# Find the required Qt parts
@@ -60,15 +56,7 @@ include_directories(
)
# The Qt5 cmake files don't provide its install paths, so ask qmake.
-get_target_property(QMAKE_EXECUTABLE Qt5::qmake LOCATION)
-function(QUERY_QMAKE VAR RESULT)
- exec_program(${QMAKE_EXECUTABLE} ARGS "-query ${VAR}" RETURN_VALUE return_code OUTPUT_VARIABLE output )
- if(NOT return_code)
- file(TO_CMAKE_PATH "${output}" output)
- set(${RESULT} ${output} PARENT_SCOPE)
- endif(NOT return_code)
-endfunction(QUERY_QMAKE)
-
+include(QMakeQuery)
query_qmake(QT_INSTALL_PLUGINS QT_PLUGINS_DIR)
query_qmake(QT_INSTALL_IMPORTS QT_IMPORTS_DIR)
query_qmake(QT_INSTALL_LIBS QT_LIBS_DIR)
diff --git a/cmake/Coverage.cmake b/cmake/Coverage.cmake
new file mode 100644
index 00000000..28efbf1c
--- /dev/null
+++ b/cmake/Coverage.cmake
@@ -0,0 +1,13 @@
+if(__COVERAGE_CMAKE__)
+ return()
+endif()
+set(__COVERAGE_CMAKE__ TRUE)
+
+if(MultiMC_CODE_COVERAGE)
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0 --coverage")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O0 --coverage")
+ set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 --coverage")
+ set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O0 --coverage")
+ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -O0 --coverage")
+ set(CMAKE_BUILD_TYPE "Debug")
+endif(MultiMC_CODE_COVERAGE)
diff --git a/cmake/QMakeQuery.cmake b/cmake/QMakeQuery.cmake
new file mode 100644
index 00000000..bf0fe967
--- /dev/null
+++ b/cmake/QMakeQuery.cmake
@@ -0,0 +1,14 @@
+if(__QMAKEQUERY_CMAKE__)
+ return()
+endif()
+set(__QMAKEQUERY_CMAKE__ TRUE)
+
+get_target_property(QMAKE_EXECUTABLE Qt5::qmake LOCATION)
+
+function(QUERY_QMAKE VAR RESULT)
+ exec_program(${QMAKE_EXECUTABLE} ARGS "-query ${VAR}" RETURN_VALUE return_code OUTPUT_VARIABLE output )
+ if(NOT return_code)
+ file(TO_CMAKE_PATH "${output}" output)
+ set(${RESULT} ${output} PARENT_SCOPE)
+ endif(NOT return_code)
+endfunction(QUERY_QMAKE)
diff --git a/cmake/UseCXX11.cmake b/cmake/UseCXX11.cmake
new file mode 100644
index 00000000..e94de2bb
--- /dev/null
+++ b/cmake/UseCXX11.cmake
@@ -0,0 +1,13 @@
+if(__USECXX11_CMAKE__)
+ return()
+endif()
+set(__USECXX11_CMAKE__ TRUE)
+
+if(APPLE)
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
+elseif(UNIX)
+ # assume GCC, add C++0x/C++11 stuff
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
+elseif(MINGW)
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")
+endif()
diff --git a/depends/settings/CMakeLists.txt b/depends/settings/CMakeLists.txt
index da853a73..3b71f997 100644
--- a/depends/settings/CMakeLists.txt
+++ b/depends/settings/CMakeLists.txt
@@ -6,6 +6,8 @@ find_package(Qt5Core REQUIRED)
# Include Qt headers.
include_directories(${Qt5Base_INCLUDE_DIRS})
+include(UseCXX11)
+include(Coverage)
SET(LIBSETTINGS_SOURCES
libsettings_config.h
@@ -34,14 +36,6 @@ add_definitions(-DLIBSETTINGS_LIBRARY)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
-IF(MultiMC_CODE_COVERAGE)
- SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -O0 --coverage")
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O0 --coverage")
- SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g -O0 --coverage")
- SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -g -O0 --coverage")
- SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -O0 --coverage")
-ENDIF(MultiMC_CODE_COVERAGE)
-
add_library(libSettings STATIC ${LIBSETTINGS_SOURCES})
qt5_use_modules(libSettings Core)
target_link_libraries(libSettings)
diff --git a/depends/util/CMakeLists.txt b/depends/util/CMakeLists.txt
index 7f6573bd..eb50277b 100644
--- a/depends/util/CMakeLists.txt
+++ b/depends/util/CMakeLists.txt
@@ -1,19 +1,7 @@
project(libUtil)
-######## Set compiler flags ########
-IF(APPLE)
- # assume clang 4.1.0+, add C++0x/C++11 stuff
- message(STATUS "Using APPLE CMAKE_CXX_FLAGS")
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
-ELSEIF(UNIX)
- # assume GCC, add C++0x/C++11 stuff
- MESSAGE(STATUS "Using UNIX CMAKE_CXX_FLAGS")
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
-ELSEIF(MINGW)
- MESSAGE(STATUS "Using MINGW CMAKE_CXX_FLAGS")
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++0x")
-ENDIF()
-
+include(UseCXX11)
+include(Coverage)
# Find Qt
find_package(Qt5Core REQUIRED)
@@ -50,14 +38,6 @@ add_definitions(-DLIBUTIL_LIBRARY)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
-IF(MultiMC_CODE_COVERAGE)
- SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -O0 --coverage")
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O0 --coverage")
- SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g -O0 --coverage")
- SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -g -O0 --coverage")
- SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -O0 --coverage")
-ENDIF(MultiMC_CODE_COVERAGE)
-
add_library(libUtil STATIC ${LIBUTIL_SOURCES})
# qt5_use_modules(libUtil Core Network)
qt5_use_modules(libUtil Core)