summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt72
-rw-r--r--application/CMakeLists.txt19
-rw-r--r--cmake/UseCXX11.cmake13
-rw-r--r--cmake/UseCXX14.cmake13
-rw-r--r--depends/LogicalGui/CMakeLists.txt5
-rw-r--r--depends/classparser/CMakeLists.txt11
-rw-r--r--depends/hoedown/CMakeLists.txt23
-rw-r--r--depends/hoedown/include/hoedown/autolink.h (renamed from depends/hoedown/hoedown/autolink.h)0
-rw-r--r--depends/hoedown/include/hoedown/buffer.h (renamed from depends/hoedown/hoedown/buffer.h)0
-rw-r--r--depends/hoedown/include/hoedown/document.h (renamed from depends/hoedown/hoedown/document.h)0
-rw-r--r--depends/hoedown/include/hoedown/escape.h (renamed from depends/hoedown/hoedown/escape.h)0
-rw-r--r--depends/hoedown/include/hoedown/html.h (renamed from depends/hoedown/hoedown/html.h)0
-rw-r--r--depends/hoedown/include/hoedown/stack.h (renamed from depends/hoedown/hoedown/stack.h)0
-rw-r--r--depends/hoedown/include/hoedown/version.h (renamed from depends/hoedown/hoedown/version.h)0
-rw-r--r--depends/iconfix/CMakeLists.txt8
-rw-r--r--depends/javacheck/CMakeLists.txt2
-rw-r--r--depends/launcher/CMakeLists.txt2
m---------depends/libnbtplusplus0
-rw-r--r--depends/pack200/CMakeLists.txt42
-rw-r--r--depends/rainbow/CMakeLists.txt9
-rw-r--r--depends/util/CMakeLists.txt40
-rw-r--r--depends/util/include/cmdutils.h8
-rw-r--r--depends/util/include/libutil_config.h28
-rw-r--r--depends/util/include/modutils.h6
-rw-r--r--depends/util/include/pathutils.h26
-rw-r--r--depends/util/include/userutils.h6
-rw-r--r--depends/xz-embedded/CMakeLists.txt26
-rw-r--r--logic/CMakeLists.txt34
-rw-r--r--tests/CMakeLists.txt11
29 files changed, 115 insertions, 289 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1c40a71e..37e5314e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.2.0)
+cmake_minimum_required(VERSION 3.1)
string(COMPARE EQUAL "${CMAKE_SOURCE_DIR}" "${CMAKE_BUILD_DIR}" IS_IN_SOURCE_BUILD)
if(IS_IN_SOURCE_BUILD)
@@ -10,7 +10,7 @@ if(WIN32)
cmake_policy(SET CMP0020 OLD)
endif()
-project(Megatron)
+project(MultiMC)
enable_testing()
######## Set CMake options ########
@@ -19,12 +19,13 @@ set(CMAKE_INCLUDE_CURRENT_DIR ON)
######## Set module path ########
set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake/")
+
+# Only used for test coverage
set(MMC_SRC "${PROJECT_SOURCE_DIR}")
set(MMC_BIN "${PROJECT_BINARY_DIR}")
# Output all executables and shared libs in the main build folder, not in subfolders.
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
-
if(UNIX)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
endif()
@@ -32,7 +33,10 @@ endif()
set(CMAKE_JAVA_TARGET_OUTPUT_DIR ${PROJECT_BINARY_DIR}/jars)
######## Set compiler flags ########
-include(UseCXX14)
+set(CMAKE_CXX_STANDARD_REQUIRED true)
+set(CMAKE_C_STANDARD_REQUIRED true)
+set(CMAKE_CXX_STANDARD 14)
+set(CMAKE_C_STANDARD 11)
include(Coverage)
include(GenerateExportHeader)
set(CMAKE_CXX_FLAGS " -Wall ${CMAKE_CXX_FLAGS}")
@@ -44,21 +48,7 @@ include(Coverity)
################################ 3rd Party Libs ################################
# Find the required Qt parts
-find_package(Qt5Core REQUIRED)
-find_package(Qt5Widgets REQUIRED)
-find_package(Qt5Concurrent REQUIRED)
-find_package(Qt5Network REQUIRED)
-find_package(Qt5Test REQUIRED)
-find_package(Qt5Xml REQUIRED)
-
-include_directories(
- ${Qt5Core_INCLUDE_DIRS}
- ${Qt5Widgets_INCLUDE_DIRS}
- ${Qt5Concurrent_INCLUDE_DIRS}
- ${Qt5Test_INCLUDE_DIRS}
- ${Qt5Network_INCLUDE_DIRS}
- ${Qt5Xml_INCLUDE_DIRS}
-)
+find_package(Qt5 COMPONENTS Core Widgets Concurrent Network Test Xml)
# The Qt5 cmake files don't provide its install paths, so ask qmake.
include(QMakeQuery)
@@ -97,27 +87,13 @@ else()
set(QUAZIP_LIBRARIES -L"${CMAKE_BINARY_DIR}/External/Install/QuaZIP/lib" quazip)
endif()
-# Add the markdown parser thing
-add_subdirectory(depends/hoedown)
-include_directories(${HOEDOWN_INCLUDE_DIR})
-
-# Add the java launcher and checker
-add_subdirectory(depends/launcher)
-add_subdirectory(depends/javacheck)
-
-# Add xz decompression
-add_subdirectory(depends/xz-embedded)
-include_directories(${XZ_INCLUDE_DIR})
-
-# Add pack200 decompression
-add_subdirectory(depends/pack200)
-include_directories(${PACK200_INCLUDE_DIR})
+add_subdirectory(depends/hoedown) # markdown parser
+add_subdirectory(depends/launcher) # java based launcher part for Minecraft
+add_subdirectory(depends/javacheck) # java compatibility checker
+add_subdirectory(depends/xz-embedded) # xz compression
+add_subdirectory(depends/pack200) # java pack200 compression
+add_subdirectory(depends/rainbow) # Qt extension for colors
-# Add color thingy
-add_subdirectory(depends/rainbow)
-include_directories(${RAINBOW_INCLUDE_DIR})
-
-# Add NBT library - with our preferred options
set(NBT_BUILD_SHARED ON CACHE BOOL "Build NBT shared library")
set(NBT_USE_ZLIB OFF CACHE BOOL "Build NBT library with zlib support")
set(NBT_BUILD_TESTS OFF CACHE BOOL "Build NBT library tests") #FIXME: fix unit tests.
@@ -125,26 +101,14 @@ add_subdirectory(depends/libnbtplusplus)
######## MultiMC Libs ########
-# Add the util library.
-add_definitions(-DLIBUTIL_STATIC)
-add_subdirectory(depends/util)
-include_directories(${LIBUTIL_INCLUDE_DIR})
-
-# Add the GUI -> Logic connection header
-add_subdirectory(depends/LogicalGui)
-include_directories(${LOGICALGUI_INCLUDE_DIR})
-
-# Add the GUI -> Logic connection header
-add_subdirectory(depends/iconfix)
-include_directories(${ICONFIX_INCLUDE_DIR})
+add_subdirectory(depends/util) # various utility functions
+add_subdirectory(depends/LogicalGui) # GUI -> Logic connection
+add_subdirectory(depends/iconfix) # fork of Qt's QIcon loader
include(Coverity)
############################### Built Artifacts ###############################
add_subdirectory(tests)
-
add_subdirectory(logic)
-
add_subdirectory(application)
-
diff --git a/application/CMakeLists.txt b/application/CMakeLists.txt
index 47563693..ea5c9c06 100644
--- a/application/CMakeLists.txt
+++ b/application/CMakeLists.txt
@@ -1,4 +1,4 @@
-project(MultiMC-Application)
+project(application)
######## Set URLs ########
set(MultiMC_NEWS_RSS_URL "http://multimc.org/rss.xml" CACHE STRING "URL to fetch MultiMC's news RSS feed from.")
@@ -327,23 +327,18 @@ if(WIN32)
set(MULTIMC_RCS resources/multimc.rc)
endif()
-# Link additional libraries
-if(WIN32)
- set(MultiMC_LINK_ADDITIONAL_LIBS ${MultiMC_LINK_ADDITIONAL_LIBS} Qt5::WinMain)
-endif(WIN32)
-
-include_directories(../logic ${CMAKE_CURRENT_BINARY_DIR}/../logic)
-
# Qt 5 stuff
qt5_wrap_ui(MULTIMC_UI ${MULTIMC_UIS})
qt5_add_resources(MULTIMC_RESOURCES ${MULTIMC_QRCS})
# Add executable
add_executable(MultiMC MACOSX_BUNDLE WIN32 ${MULTIMC_SOURCES} ${MULTIMC_UI} ${MULTIMC_RESOURCES} ${MULTIMC_RCS})
-target_link_libraries(MultiMC MultiMC_logic xz-embedded unpack200 iconfix libUtil LogicalGui
- ${QUAZIP_LIBRARIES} Qt5::Core Qt5::Xml Qt5::Widgets Qt5::Network Qt5::Concurrent
- hoedown rainbow
- ${MultiMC_LINK_ADDITIONAL_LIBS})
+target_link_libraries(MultiMC MultiMC_logic xz-embedded unpack200 iconfix MultiMC_util ${QUAZIP_LIBRARIES} hoedown rainbow)
+
+if(WIN32)
+ qt5_use_modules(MultiMC WinMain)
+endif(WIN32)
+
################################ INSTALLATION AND PACKAGING ################################
diff --git a/cmake/UseCXX11.cmake b/cmake/UseCXX11.cmake
deleted file mode 100644
index f8afaa6e..00000000
--- a/cmake/UseCXX11.cmake
+++ /dev/null
@@ -1,13 +0,0 @@
-if(__USECXX11_CMAKE__)
- return()
-endif()
-set(__USECXX11_CMAKE__ TRUE)
-
-if(APPLE)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++ -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/cmake/UseCXX14.cmake b/cmake/UseCXX14.cmake
deleted file mode 100644
index 95c3dd2d..00000000
--- a/cmake/UseCXX14.cmake
+++ /dev/null
@@ -1,13 +0,0 @@
-if(__USECXX14_CMAKE__)
- return()
-endif()
-set(__USECXX14_CMAKE__ TRUE)
-
-if(APPLE)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++ -std=c++1y")
-elseif(UNIX)
- # assume GCC, add C++0x/C++11 stuff
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
-elseif(MINGW)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++14")
-endif()
diff --git a/depends/LogicalGui/CMakeLists.txt b/depends/LogicalGui/CMakeLists.txt
index 9fb03a03..12665738 100644
--- a/depends/LogicalGui/CMakeLists.txt
+++ b/depends/LogicalGui/CMakeLists.txt
@@ -1,7 +1,4 @@
project(LogicalGui)
-
-# Set the include dir path.
-set(LOGICALGUI_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}" PARENT_SCOPE)
-
add_library(LogicalGui STATIC LogicalGui.h)
+target_include_directories(LogicalGui PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}")
qt5_use_modules(LogicalGui Core)
diff --git a/depends/classparser/CMakeLists.txt b/depends/classparser/CMakeLists.txt
index 68ae7b73..a6c3fa14 100644
--- a/depends/classparser/CMakeLists.txt
+++ b/depends/classparser/CMakeLists.txt
@@ -16,9 +16,8 @@ find_package(Qt5Core REQUIRED)
include_directories(${Qt5Base_INCLUDE_DIRS})
set(CLASSPARSER_HEADERS
-include/classparser_config.h
-
# Public headers
+include/classparser_config.h
include/javautils.h
# Private headers
@@ -35,14 +34,8 @@ src/javautils.cpp
src/annotations.cpp
)
-# Set the include dir path.
-set(LIBGROUPVIEW_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/include" PARENT_SCOPE)
-
-# Include self.
-include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
-include_directories(${CMAKE_BINARY_DIR}/include)
-
add_definitions(-DCLASSPARSER_LIBRARY)
add_library(classparser SHARED ${CLASSPARSER_SOURCES} ${CLASSPARSER_HEADERS})
+target_include_directories(classparser PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include")
qt5_use_modules(classparser Core)
diff --git a/depends/hoedown/CMakeLists.txt b/depends/hoedown/CMakeLists.txt
index b4ef8ef9..7902e734 100644
--- a/depends/hoedown/CMakeLists.txt
+++ b/depends/hoedown/CMakeLists.txt
@@ -1,14 +1,14 @@
# hoedown 3.0.2 - https://github.com/hoedown/hoedown/archive/3.0.2.tar.gz
-project(hoedown)
+project(hoedown LANGUAGES C VERSION 3.0.2)
set(HOEDOWN_SOURCES
-hoedown/autolink.h
-hoedown/buffer.h
-hoedown/document.h
-hoedown/escape.h
-hoedown/html.h
-hoedown/stack.h
-hoedown/version.h
+include/hoedown/autolink.h
+include/hoedown/buffer.h
+include/hoedown/document.h
+include/hoedown/escape.h
+include/hoedown/html.h
+include/hoedown/stack.h
+include/hoedown/version.h
src/autolink.c
src/buffer.c
src/document.c
@@ -20,10 +20,7 @@ src/stack.c
src/version.c
)
-# Set the include dir path.
-set(HOEDOWN_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}" PARENT_SCOPE)
-
# Include self.
-include_directories(${CMAKE_CURRENT_SOURCE_DIR})
-
add_library(hoedown STATIC ${HOEDOWN_SOURCES})
+
+target_include_directories(hoedown PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)
diff --git a/depends/hoedown/hoedown/autolink.h b/depends/hoedown/include/hoedown/autolink.h
index 528885c9..528885c9 100644
--- a/depends/hoedown/hoedown/autolink.h
+++ b/depends/hoedown/include/hoedown/autolink.h
diff --git a/depends/hoedown/hoedown/buffer.h b/depends/hoedown/include/hoedown/buffer.h
index d7703f8d..d7703f8d 100644
--- a/depends/hoedown/hoedown/buffer.h
+++ b/depends/hoedown/include/hoedown/buffer.h
diff --git a/depends/hoedown/hoedown/document.h b/depends/hoedown/include/hoedown/document.h
index a8178fec..a8178fec 100644
--- a/depends/hoedown/hoedown/document.h
+++ b/depends/hoedown/include/hoedown/document.h
diff --git a/depends/hoedown/hoedown/escape.h b/depends/hoedown/include/hoedown/escape.h
index d7659c27..d7659c27 100644
--- a/depends/hoedown/hoedown/escape.h
+++ b/depends/hoedown/include/hoedown/escape.h
diff --git a/depends/hoedown/hoedown/html.h b/depends/hoedown/include/hoedown/html.h
index e46e7fd6..e46e7fd6 100644
--- a/depends/hoedown/hoedown/html.h
+++ b/depends/hoedown/include/hoedown/html.h
diff --git a/depends/hoedown/hoedown/stack.h b/depends/hoedown/include/hoedown/stack.h
index bf9b439b..bf9b439b 100644
--- a/depends/hoedown/hoedown/stack.h
+++ b/depends/hoedown/include/hoedown/stack.h
diff --git a/depends/hoedown/hoedown/version.h b/depends/hoedown/include/hoedown/version.h
index 4938cae5..4938cae5 100644
--- a/depends/hoedown/hoedown/version.h
+++ b/depends/hoedown/include/hoedown/version.h
diff --git a/depends/iconfix/CMakeLists.txt b/depends/iconfix/CMakeLists.txt
index 53d8c28e..4dfc39a9 100644
--- a/depends/iconfix/CMakeLists.txt
+++ b/depends/iconfix/CMakeLists.txt
@@ -1,12 +1,9 @@
-cmake_minimum_required(VERSION 2.8.11)
+cmake_minimum_required(VERSION 3.1)
project(iconfix)
find_package(Qt5Core REQUIRED QUIET)
find_package(Qt5Widgets REQUIRED QUIET)
-include_directories(${Qt5Core_INCLUDE_DIRS})
-include_directories(${Qt5Widgets_INCLUDE_DIRS})
-
set(ICONFIX_SOURCES
xdgicon.h
xdgicon.cpp
@@ -15,6 +12,7 @@ internal/qiconloader.cpp
internal/qiconloader_p.h
)
-set(ICONFIX_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}" PARENT_SCOPE)
add_library(iconfix STATIC ${ICONFIX_SOURCES})
+target_include_directories(iconfix PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
+
qt5_use_modules(iconfix Core Widgets)
diff --git a/depends/javacheck/CMakeLists.txt b/depends/javacheck/CMakeLists.txt
index d4f29ff7..9768650e 100644
--- a/depends/javacheck/CMakeLists.txt
+++ b/depends/javacheck/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 2.8.6)
+cmake_minimum_required(VERSION 3.1)
project(launcher Java)
find_package(Java 1.6 REQUIRED COMPONENTS Development)
diff --git a/depends/launcher/CMakeLists.txt b/depends/launcher/CMakeLists.txt
index 7564161d..b62805e0 100644
--- a/depends/launcher/CMakeLists.txt
+++ b/depends/launcher/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 2.8.6)
+cmake_minimum_required(VERSION 3.1)
project(launcher Java)
find_package(Java 1.6 REQUIRED COMPONENTS Development)
diff --git a/depends/libnbtplusplus b/depends/libnbtplusplus
-Subproject 9d17b0a9b93e684a5ac6cac8f70d9a7909a877c
+Subproject 5d0ffb50a526173ce58ae57136bf5d79a7e1920
diff --git a/depends/pack200/CMakeLists.txt b/depends/pack200/CMakeLists.txt
index 4624b483..19a7643c 100644
--- a/depends/pack200/CMakeLists.txt
+++ b/depends/pack200/CMakeLists.txt
@@ -1,24 +1,11 @@
-cmake_minimum_required(VERSION 2.6)
-
-if(WIN32)
- # In Qt 5.1+ we have our own main() function, don't autolink to qtmain on Windows
- cmake_policy(SET CMP0020 OLD)
-endif()
+cmake_minimum_required(VERSION 3.1)
project(unpack200)
+option(PACK200_BUILD_BINARY "Build a tiny utility that decompresses pack200 streams" OFF)
+
# Find ZLIB for quazip
-# Use system zlib on unix and Qt ZLIB on Windows
-if(UNIX)
- find_package(ZLIB REQUIRED)
-else(UNIX)
- get_filename_component(ZLIB_FOUND_DIR "${Qt5Core_DIR}/../../../include/QtZlib" ABSOLUTE)
- set(ZLIB_INCLUDE_DIRS ${ZLIB_FOUND_DIR} CACHE PATH "Path to ZLIB headers of Qt")
- set(ZLIB_LIBRARIES "")
- if(NOT EXISTS "${ZLIB_INCLUDE_DIRS}/zlib.h")
- message("Please specify a valid zlib include dir")
- endif(NOT EXISTS "${ZLIB_INCLUDE_DIRS}/zlib.h")
-endif(UNIX)
+find_package(ZLIB REQUIRED)
set(PACK200_SRC
include/unpack200.h
@@ -41,19 +28,14 @@ set(PACK200_SRC
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
-set(PACK200_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/include" PARENT_SCOPE)
-include_directories(
- include
- ${ZLIB_INCLUDE_DIRS}
-)
add_library(unpack200 STATIC ${PACK200_SRC})
+target_include_directories(unpack200
+ PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include"
+ PRIVATE ${ZLIB_INCLUDE_DIRS})
-if(UNIX)
- target_link_libraries(unpack200 ${ZLIB_LIBRARIES})
-else()
- # zlib is part of Qt on windows. use it.
- qt5_use_modules(unpack200 Core)
-endif()
+target_link_libraries(unpack200 ${ZLIB_LIBRARIES})
-add_executable(anti200 anti200.cpp)
-target_link_libraries(anti200 unpack200)
+if(PACK200_BUILD_BINARY)
+ add_executable(anti200 anti200.cpp)
+ target_link_libraries(anti200 unpack200)
+endif()
diff --git a/depends/rainbow/CMakeLists.txt b/depends/rainbow/CMakeLists.txt
index 6eeb2adc..01342d1b 100644
--- a/depends/rainbow/CMakeLists.txt
+++ b/depends/rainbow/CMakeLists.txt
@@ -1,20 +1,15 @@
-cmake_minimum_required(VERSION 2.8.11)
+cmake_minimum_required(VERSION 3.1)
project(rainbow)
find_package(Qt5Core REQUIRED QUIET)
find_package(Qt5Gui REQUIRED QUIET)
-include_directories(${Qt5Core_INCLUDE_DIRS})
-include_directories(${Qt5Gui_INCLUDE_DIRS})
-
set(RAINBOW_SOURCES
-include/rainbow_config.h
-include/rainbow.h
src/rainbow.cpp
)
add_definitions(-DRAINBOW_LIBRARY)
-set(RAINBOW_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/include" PARENT_SCOPE)
add_library(rainbow SHARED ${RAINBOW_SOURCES})
+target_include_directories(rainbow PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include")
qt5_use_modules(rainbow Core Gui)
diff --git a/depends/util/CMakeLists.txt b/depends/util/CMakeLists.txt
index 40adae7e..e8646e1c 100644
--- a/depends/util/CMakeLists.txt
+++ b/depends/util/CMakeLists.txt
@@ -1,42 +1,28 @@
-project(libUtil)
+project(MultiMC_util)
-include(UseCXX14)
include(Coverage)
# Find Qt
find_package(Qt5Core REQUIRED)
-
-# Include Qt headers.
-include_directories(${Qt5Base_INCLUDE_DIRS})
+find_package(Qt5Gui REQUIRED)
set(LIBUTIL_SOURCES
- include/libutil_config.h
-
- include/pathutils.h
src/pathutils.cpp
-
- include/osutils.h
-
- include/userutils.h
src/userutils.cpp
-
- include/cmdutils.h
src/cmdutils.cpp
-
- include/modutils.h
src/modutils.cpp
+ include/cmdutils.h
+ include/modutils.h
+ include/osutils.h
+ include/pathutils.h
+ include/userutils.h
)
-# Set the include dir path.
-set(LIBUTIL_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/include" PARENT_SCOPE)
-
-# Static link!
-add_definitions(-DLIBUTIL_STATIC)
-
-add_definitions(-DLIBUTIL_LIBRARY)
-
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
-add_library(libUtil STATIC ${LIBUTIL_SOURCES})
-qt5_use_modules(libUtil Core)
-target_link_libraries(libUtil)
+add_library(MultiMC_util STATIC ${LIBUTIL_SOURCES})
+
+qt5_use_modules(MultiMC_util Core Gui)
+generate_export_header(MultiMC_util)
+target_include_directories(MultiMC_util PUBLIC ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/include)
+set_property(TARGET MultiMC_util PROPERTY CXX_STANDARD 14)
diff --git a/depends/util/include/cmdutils.h b/depends/util/include/cmdutils.h
index 56ae4edb..8bf39eaa 100644
--- a/depends/util/include/cmdutils.h
+++ b/depends/util/include/cmdutils.h
@@ -25,7 +25,7 @@
#include <QHash>
#include <QStringList>
-#include "libutil_config.h"
+#include "multimc_util_export.h"
/**
* @file libutil/include/cmdutils.h
@@ -42,7 +42,7 @@ namespace Commandline
* @param args the argument string
* @return a QStringList containing all arguments
*/
-LIBUTIL_EXPORT QStringList splitArgs(QString args);
+MULTIMC_UTIL_EXPORT QStringList splitArgs(QString args);
/**
* @brief The FlagStyle enum
@@ -85,7 +85,7 @@ enum Enum
/**
* @brief The ParsingError class
*/
-class LIBUTIL_EXPORT ParsingError : public std::runtime_error
+class MULTIMC_UTIL_EXPORT ParsingError : public std::runtime_error
{
public:
ParsingError(const QString &what);
@@ -94,7 +94,7 @@ public:
/**
* @brief The Parser class
*/
-class LIBUTIL_EXPORT Parser
+class MULTIMC_UTIL_EXPORT Parser
{
public:
/**
diff --git a/depends/util/include/libutil_config.h b/depends/util/include/libutil_config.h
deleted file mode 100644
index 422001b8..00000000
--- a/depends/util/include/libutil_config.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Copyright 2013-2015 MultiMC Contributors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#pragma once
-
-#include <QtCore/QtGlobal>
-
-#ifdef LIBUTIL_STATIC
-#define LIBUTIL_EXPORT
-#else
-#ifdef LIBUTIL_LIBRARY
-#define LIBUTIL_EXPORT Q_DECL_EXPORT
-#else
-#define LIBUTIL_EXPORT Q_DECL_IMPORT
-#endif
-#endif
diff --git a/depends/util/include/modutils.h b/depends/util/include/modutils.h
index bc608f96..fde51881 100644
--- a/depends/util/include/modutils.h
+++ b/depends/util/include/modutils.h
@@ -3,7 +3,7 @@
#include <QString>
#include <QList>
-#include "libutil_config.h"
+#include "multimc_util_export.h"
class QUrl;
@@ -107,7 +107,7 @@ private:
void parse();
};
-LIBUTIL_EXPORT bool versionIsInInterval(const QString &version, const QString &interval);
-LIBUTIL_EXPORT bool versionIsInInterval(const Version &version, const QString &interval);
+MULTIMC_UTIL_EXPORT bool versionIsInInterval(const QString &version, const QString &interval);
+MULTIMC_UTIL_EXPORT bool versionIsInInterval(const Version &version, const QString &interval);
}
diff --git a/depends/util/include/pathutils.h b/depends/util/include/pathutils.h
index 82d55cd7..6d52097f 100644
--- a/depends/util/include/pathutils.h
+++ b/depends/util/include/pathutils.h
@@ -18,12 +18,12 @@
#include <QString>
#include <QDir>
-#include "libutil_config.h"
+#include "multimc_util_export.h"
-LIBUTIL_EXPORT QString PathCombine(QString path1, QString path2);
-LIBUTIL_EXPORT QString PathCombine(QString path1, QString path2, QString path3);
+MULTIMC_UTIL_EXPORT QString PathCombine(QString path1, QString path2);
+MULTIMC_UTIL_EXPORT QString PathCombine(QString path1, QString path2, QString path3);
-LIBUTIL_EXPORT QString AbsolutePath(QString path);
+MULTIMC_UTIL_EXPORT QString AbsolutePath(QString path);
/**
* Normalize path
@@ -35,37 +35,37 @@ LIBUTIL_EXPORT QString AbsolutePath(QString path);
*/
QString NormalizePath(QString path);
-LIBUTIL_EXPORT QString RemoveInvalidFilenameChars(QString string, QChar replaceWith = '-');
+MULTIMC_UTIL_EXPORT QString RemoveInvalidFilenameChars(QString string, QChar replaceWith = '-');
-LIBUTIL_EXPORT QString DirNameFromString(QString string, QString inDir = ".");
+MULTIMC_UTIL_EXPORT QString DirNameFromString(QString string, QString inDir = ".");
/**
* Creates all the folders in a path for the specified path
* last segment of the path is treated as a file name and is ignored!
*/
-LIBUTIL_EXPORT bool ensureFilePathExists(QString filenamepath);
+MULTIMC_UTIL_EXPORT bool ensureFilePathExists(QString filenamepath);
/**
* Creates all the folders in a path for the specified path
* last segment of the path is treated as a folder name and is created!
*/
-LIBUTIL_EXPORT bool ensureFolderPathExists(QString filenamepath);
+MULTIMC_UTIL_EXPORT bool ensureFolderPathExists(QString filenamepath);
/**
* Copy a folder recursively
*/
-LIBUTIL_EXPORT bool copyPath(const QString &src, const QString &dst, bool follow_symlinks = true);
+MULTIMC_UTIL_EXPORT bool copyPath(const QString &src, const QString &dst, bool follow_symlinks = true);
/**
* Delete a folder recursively
*/
-LIBUTIL_EXPORT bool deletePath(QString path);
+MULTIMC_UTIL_EXPORT bool deletePath(QString path);
/// Opens the given file in the default application.
-LIBUTIL_EXPORT void openFileInDefaultProgram(QString filename);
+MULTIMC_UTIL_EXPORT void openFileInDefaultProgram(QString filename);
/// Opens the given directory in the default application.
-LIBUTIL_EXPORT void openDirInDefaultProgram(QString dirpath, bool ensureExists = false);
+MULTIMC_UTIL_EXPORT void openDirInDefaultProgram(QString dirpath, bool ensureExists = false);
/// Checks if the a given Path contains "!"
-LIBUTIL_EXPORT bool checkProblemticPathJava(QDir folder);
+MULTIMC_UTIL_EXPORT bool checkProblemticPathJava(QDir folder);
diff --git a/depends/util/include/userutils.h b/depends/util/include/userutils.h
index 6ce08bce..aadc112e 100644
--- a/depends/util/include/userutils.h
+++ b/depends/util/include/userutils.h
@@ -2,16 +2,16 @@
#include <QString>
-#include "libutil_config.h"
+#include "multimc_util_export.h"
namespace Util
{
// Get the Directory representing the User's Desktop
-LIBUTIL_EXPORT QString getDesktopDir();
+MULTIMC_UTIL_EXPORT QString getDesktopDir();
// Create a shortcut at *location*, pointing to *dest* called with the arguments *args*
// call it *name* and assign it the icon *icon*
// return true if operation succeeded
-LIBUTIL_EXPORT bool createShortCut(QString location, QString dest, QStringList args,
+MULTIMC_UTIL_EXPORT bool createShortCut(QString location, QString dest, QStringList args,
QString name, QString iconLocation);
}
diff --git a/depends/xz-embedded/CMakeLists.txt b/depends/xz-embedded/CMakeLists.txt
index bc1759dc..5f744671 100644
--- a/depends/xz-embedded/CMakeLists.txt
+++ b/depends/xz-embedded/CMakeLists.txt
@@ -1,32 +1,26 @@
-cmake_minimum_required(VERSION 2.6)
-project(xz-embedded)
+cmake_minimum_required(VERSION 3.1)
+project(xz-embedded LANGUAGES C)
option(XZ_BUILD_BCJ "Build xz-embedded with BCJ support (native binary optimization)" OFF)
option(XZ_BUILD_CRC64 "Build xz-embedded with CRC64 checksum support" ON)
option(XZ_BUILD_MINIDEC "Build a tiny utility that decompresses xz streams" OFF)
-set(CMAKE_C_FLAGS "-std=c99")
-
-include_directories(include)
-set(XZ_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/include" PARENT_SCOPE)
-
# See include/xz.h for manual feature configuration
# tweak this list and xz.h to fit your needs
set(XZ_SOURCES
- include/xz.h
- src/xz_config.h
src/xz_crc32.c
src/xz_crc64.c
src/xz_dec_lzma2.c
src/xz_dec_stream.c
- src/xz_lzma2.h
- src/xz_private.h
- src/xz_stream.h
# src/xz_dec_bcj.c
)
-# TODO: look into what would be needed for plain old lzma
-
add_library(xz-embedded STATIC ${XZ_SOURCES})
-add_executable(xzminidec xzminidec.c)
-target_link_libraries(xzminidec xz-embedded)
+target_include_directories(xz-embedded PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include")
+set_property(TARGET xz-embedded PROPERTY C_STANDARD 99)
+
+if(${XZ_BUILD_MINIDEC})
+ add_executable(xzminidec xzminidec.c)
+ target_link_libraries(xzminidec xz-embedded)
+ set_property(TARGET xzminidec PROPERTY C_STANDARD 99)
+endif()
diff --git a/logic/CMakeLists.txt b/logic/CMakeLists.txt
index 457e97f3..7e9ee1d1 100644
--- a/logic/CMakeLists.txt
+++ b/logic/CMakeLists.txt
@@ -1,4 +1,4 @@
-project(MultiMC-Logic)
+project(MultiMC_logic)
set(LOGIC_SOURCES
# LOGIC - Base classes and infrastructure
@@ -303,36 +303,18 @@ set(LOGIC_SOURCES
)
################################ COMPILE ################################
-if(WIN32)
- add_definitions(-DZ_PREFIX)
-endif()
+# we need zlib
+find_package(ZLIB REQUIRED)
-# Add common library
add_library(MultiMC_logic SHARED ${LOGIC_SOURCES})
-
-set_target_properties(MultiMC_logic PROPERTIES
- CXX_VISIBILITY_PRESET hidden
- VISIBILITY_INLINES_HIDDEN 1)
+set_target_properties(MultiMC_logic PROPERTIES CXX_VISIBILITY_PRESET hidden VISIBILITY_INLINES_HIDDEN 1)
generate_export_header(MultiMC_logic)
-# Use system zlib on unix and Qt ZLIB on Windows
-if(UNIX)
- find_package(ZLIB REQUIRED)
-else(UNIX)
- get_filename_component(ZLIB_FOUND_DIR "${Qt5Core_DIR}/../../../include/QtZlib" ABSOLUTE)
- set(ZLIB_INCLUDE_DIRS ${ZLIB_FOUND_DIR} CACHE PATH "Path to ZLIB headers of Qt")
- set(ZLIB_LIBRARIES "")
- if(NOT EXISTS "${ZLIB_INCLUDE_DIRS}/zlib.h")
- message("Please specify a valid zlib include dir")
- endif(NOT EXISTS "${ZLIB_INCLUDE_DIRS}/zlib.h")
-endif(UNIX)
-
# Link
-target_link_libraries(MultiMC_logic xz-embedded unpack200 iconfix libUtil LogicalGui ${QUAZIP_LIBRARIES} nbt++
- Qt5::Core Qt5::Xml Qt5::Widgets Qt5::Network Qt5::Concurrent
- ${ZLIB_LIBRARIES} ${MultiMC_LINK_ADDITIONAL_LIBS})
-
+target_link_libraries(MultiMC_logic xz-embedded unpack200 iconfix MultiMC_util LogicalGui ${QUAZIP_LIBRARIES} nbt++ ${ZLIB_LIBRARIES})
+qt5_use_modules(MultiMC_logic Core Xml Widgets Network Concurrent)
add_dependencies(MultiMC_logic QuaZIP)
-include_directories(${CMAKE_CURRENT_BINARY_DIR})
+# Mark and export headers
+target_include_directories(MultiMC_logic PUBLIC "${CMAKE_CURRENT_BINARY_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}" PRIVATE "${ZLIB_INCLUDE_DIRS}")
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 31537c75..a09eb66a 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -1,21 +1,18 @@
# run the unit tests with `make test`
find_package(Qt5 COMPONENTS Test Core Network)
-include_directories(../logic ${CMAKE_CURRENT_BINARY_DIR}/../logic)
-include_directories(../depends/util/include/)
-
unset(MultiMC_TESTS)
macro(add_unit_test name)
unset(srcs)
foreach(arg ${testname} ${ARGN})
list(APPEND srcs ${CMAKE_CURRENT_SOURCE_DIR}/${arg})
- if(WIN32)
- list(APPEND srcs ${CMAKE_CURRENT_SOURCE_DIR}/test.rc)
- endif()
+ if(WIN32)
+ list(APPEND srcs ${CMAKE_CURRENT_SOURCE_DIR}/test.rc)
+ endif()
endforeach()
add_executable(tst_${name} ${srcs})
- qt5_use_modules(tst_${name} Test Core Network)
target_link_libraries(tst_${name} MultiMC_logic)
+ qt5_use_modules(tst_${name} Test Core Network)
list(APPEND MultiMC_TESTS tst_${name})
add_test(NAME ${name} COMMAND tst_${name})
endmacro()