NOISSUE clean up some old cmake messes

This commit is contained in:
Petr Mrázek 2015-09-28 20:53:46 +02:00
parent 33c3850b40
commit 143e24fa04
29 changed files with 116 additions and 290 deletions

View File

@ -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_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 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 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)

View File

@ -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 ################################

View File

@ -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()

View File

@ -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()

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

@ -1 +1 @@
Subproject commit 9d17b0a9b93e684a5ac6cac8f70d9a7909a877cf
Subproject commit 5d0ffb50a526173ce58ae57136bf5d79a7e1920d

View File

@ -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)
target_link_libraries(unpack200 ${ZLIB_LIBRARIES})
if(PACK200_BUILD_BINARY)
add_executable(anti200 anti200.cpp)
target_link_libraries(anti200 unpack200)
endif()
add_executable(anti200 anti200.cpp)
target_link_libraries(anti200 unpack200)

View File

@ -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)

View File

@ -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)

View File

@ -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:
/**

View File

@ -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

View File

@ -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);
}

View File

@ -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);

View File

@ -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);
}

View File

@ -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()

View File

@ -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}")

View File

@ -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()