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) string(COMPARE EQUAL "${CMAKE_SOURCE_DIR}" "${CMAKE_BUILD_DIR}" IS_IN_SOURCE_BUILD)
if(IS_IN_SOURCE_BUILD) if(IS_IN_SOURCE_BUILD)
@ -10,7 +10,7 @@ if(WIN32)
cmake_policy(SET CMP0020 OLD) cmake_policy(SET CMP0020 OLD)
endif() endif()
project(Megatron) project(MultiMC)
enable_testing() enable_testing()
######## Set CMake options ######## ######## Set CMake options ########
@ -19,12 +19,13 @@ set(CMAKE_INCLUDE_CURRENT_DIR ON)
######## Set module path ######## ######## Set module path ########
set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake/") set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake/")
# Only used for test coverage
set(MMC_SRC "${PROJECT_SOURCE_DIR}") set(MMC_SRC "${PROJECT_SOURCE_DIR}")
set(MMC_BIN "${PROJECT_BINARY_DIR}") set(MMC_BIN "${PROJECT_BINARY_DIR}")
# Output all executables and shared libs in the main build folder, not in subfolders. # Output all executables and shared libs in the main build folder, not in subfolders.
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
if(UNIX) if(UNIX)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
endif() endif()
@ -32,7 +33,10 @@ endif()
set(CMAKE_JAVA_TARGET_OUTPUT_DIR ${PROJECT_BINARY_DIR}/jars) set(CMAKE_JAVA_TARGET_OUTPUT_DIR ${PROJECT_BINARY_DIR}/jars)
######## Set compiler flags ######## ######## 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(Coverage)
include(GenerateExportHeader) include(GenerateExportHeader)
set(CMAKE_CXX_FLAGS " -Wall ${CMAKE_CXX_FLAGS}") set(CMAKE_CXX_FLAGS " -Wall ${CMAKE_CXX_FLAGS}")
@ -44,21 +48,7 @@ include(Coverity)
################################ 3rd Party Libs ################################ ################################ 3rd Party Libs ################################
# Find the required Qt parts # Find the required Qt parts
find_package(Qt5Core REQUIRED) find_package(Qt5 COMPONENTS Core Widgets Concurrent Network Test Xml)
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}
)
# The Qt5 cmake files don't provide its install paths, so ask qmake. # The Qt5 cmake files don't provide its install paths, so ask qmake.
include(QMakeQuery) include(QMakeQuery)
@ -97,27 +87,13 @@ else()
set(QUAZIP_LIBRARIES -L"${CMAKE_BINARY_DIR}/External/Install/QuaZIP/lib" quazip) set(QUAZIP_LIBRARIES -L"${CMAKE_BINARY_DIR}/External/Install/QuaZIP/lib" quazip)
endif() endif()
# Add the markdown parser thing add_subdirectory(depends/hoedown) # markdown parser
add_subdirectory(depends/hoedown) add_subdirectory(depends/launcher) # java based launcher part for Minecraft
include_directories(${HOEDOWN_INCLUDE_DIR}) 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_BUILD_SHARED ON CACHE BOOL "Build NBT shared library")
set(NBT_USE_ZLIB OFF CACHE BOOL "Build NBT library with zlib support") 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. 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 ######## ######## MultiMC Libs ########
# Add the util library. add_subdirectory(depends/util) # various utility functions
add_definitions(-DLIBUTIL_STATIC) add_subdirectory(depends/LogicalGui) # GUI -> Logic connection
add_subdirectory(depends/util) add_subdirectory(depends/iconfix) # fork of Qt's QIcon loader
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})
include(Coverity) include(Coverity)
############################### Built Artifacts ############################### ############################### Built Artifacts ###############################
add_subdirectory(tests) add_subdirectory(tests)
add_subdirectory(logic) add_subdirectory(logic)
add_subdirectory(application) add_subdirectory(application)

View File

@ -1,4 +1,4 @@
project(MultiMC-Application) project(application)
######## Set URLs ######## ######## Set URLs ########
set(MultiMC_NEWS_RSS_URL "http://multimc.org/rss.xml" CACHE STRING "URL to fetch MultiMC's news RSS feed from.") 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) set(MULTIMC_RCS resources/multimc.rc)
endif() 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 # Qt 5 stuff
qt5_wrap_ui(MULTIMC_UI ${MULTIMC_UIS}) qt5_wrap_ui(MULTIMC_UI ${MULTIMC_UIS})
qt5_add_resources(MULTIMC_RESOURCES ${MULTIMC_QRCS}) qt5_add_resources(MULTIMC_RESOURCES ${MULTIMC_QRCS})
# Add executable # Add executable
add_executable(MultiMC MACOSX_BUNDLE WIN32 ${MULTIMC_SOURCES} ${MULTIMC_UI} ${MULTIMC_RESOURCES} ${MULTIMC_RCS}) 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 target_link_libraries(MultiMC MultiMC_logic xz-embedded unpack200 iconfix MultiMC_util ${QUAZIP_LIBRARIES} hoedown rainbow)
${QUAZIP_LIBRARIES} Qt5::Core Qt5::Xml Qt5::Widgets Qt5::Network Qt5::Concurrent
hoedown rainbow if(WIN32)
${MultiMC_LINK_ADDITIONAL_LIBS}) qt5_use_modules(MultiMC WinMain)
endif(WIN32)
################################ INSTALLATION AND PACKAGING ################################ ################################ 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) project(LogicalGui)
# Set the include dir path.
set(LOGICALGUI_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}" PARENT_SCOPE)
add_library(LogicalGui STATIC LogicalGui.h) add_library(LogicalGui STATIC LogicalGui.h)
target_include_directories(LogicalGui PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}")
qt5_use_modules(LogicalGui Core) qt5_use_modules(LogicalGui Core)

View File

@ -16,9 +16,8 @@ find_package(Qt5Core REQUIRED)
include_directories(${Qt5Base_INCLUDE_DIRS}) include_directories(${Qt5Base_INCLUDE_DIRS})
set(CLASSPARSER_HEADERS set(CLASSPARSER_HEADERS
include/classparser_config.h
# Public headers # Public headers
include/classparser_config.h
include/javautils.h include/javautils.h
# Private headers # Private headers
@ -35,14 +34,8 @@ src/javautils.cpp
src/annotations.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_definitions(-DCLASSPARSER_LIBRARY)
add_library(classparser SHARED ${CLASSPARSER_SOURCES} ${CLASSPARSER_HEADERS}) add_library(classparser SHARED ${CLASSPARSER_SOURCES} ${CLASSPARSER_HEADERS})
target_include_directories(classparser PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include")
qt5_use_modules(classparser Core) 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 # 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 set(HOEDOWN_SOURCES
hoedown/autolink.h include/hoedown/autolink.h
hoedown/buffer.h include/hoedown/buffer.h
hoedown/document.h include/hoedown/document.h
hoedown/escape.h include/hoedown/escape.h
hoedown/html.h include/hoedown/html.h
hoedown/stack.h include/hoedown/stack.h
hoedown/version.h include/hoedown/version.h
src/autolink.c src/autolink.c
src/buffer.c src/buffer.c
src/document.c src/document.c
@ -20,10 +20,7 @@ src/stack.c
src/version.c src/version.c
) )
# Set the include dir path.
set(HOEDOWN_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}" PARENT_SCOPE)
# Include self. # Include self.
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
add_library(hoedown STATIC ${HOEDOWN_SOURCES}) 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) project(iconfix)
find_package(Qt5Core REQUIRED QUIET) find_package(Qt5Core REQUIRED QUIET)
find_package(Qt5Widgets REQUIRED QUIET) find_package(Qt5Widgets REQUIRED QUIET)
include_directories(${Qt5Core_INCLUDE_DIRS})
include_directories(${Qt5Widgets_INCLUDE_DIRS})
set(ICONFIX_SOURCES set(ICONFIX_SOURCES
xdgicon.h xdgicon.h
xdgicon.cpp xdgicon.cpp
@ -15,6 +12,7 @@ internal/qiconloader.cpp
internal/qiconloader_p.h internal/qiconloader_p.h
) )
set(ICONFIX_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}" PARENT_SCOPE)
add_library(iconfix STATIC ${ICONFIX_SOURCES}) add_library(iconfix STATIC ${ICONFIX_SOURCES})
target_include_directories(iconfix PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
qt5_use_modules(iconfix Core Widgets) 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) project(launcher Java)
find_package(Java 1.6 REQUIRED COMPONENTS Development) 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) project(launcher Java)
find_package(Java 1.6 REQUIRED COMPONENTS Development) 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) cmake_minimum_required(VERSION 3.1)
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()
project(unpack200) project(unpack200)
option(PACK200_BUILD_BINARY "Build a tiny utility that decompresses pack200 streams" OFF)
# Find ZLIB for quazip # Find ZLIB for quazip
# Use system zlib on unix and Qt ZLIB on Windows find_package(ZLIB REQUIRED)
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)
set(PACK200_SRC set(PACK200_SRC
include/unpack200.h include/unpack200.h
@ -41,19 +28,14 @@ set(PACK200_SRC
set(CMAKE_POSITION_INDEPENDENT_CODE ON) 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}) 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})
target_link_libraries(unpack200 ${ZLIB_LIBRARIES})
else() if(PACK200_BUILD_BINARY)
# zlib is part of Qt on windows. use it. add_executable(anti200 anti200.cpp)
qt5_use_modules(unpack200 Core) target_link_libraries(anti200 unpack200)
endif() 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) project(rainbow)
find_package(Qt5Core REQUIRED QUIET) find_package(Qt5Core REQUIRED QUIET)
find_package(Qt5Gui REQUIRED QUIET) find_package(Qt5Gui REQUIRED QUIET)
include_directories(${Qt5Core_INCLUDE_DIRS})
include_directories(${Qt5Gui_INCLUDE_DIRS})
set(RAINBOW_SOURCES set(RAINBOW_SOURCES
include/rainbow_config.h
include/rainbow.h
src/rainbow.cpp src/rainbow.cpp
) )
add_definitions(-DRAINBOW_LIBRARY) add_definitions(-DRAINBOW_LIBRARY)
set(RAINBOW_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/include" PARENT_SCOPE)
add_library(rainbow SHARED ${RAINBOW_SOURCES}) add_library(rainbow SHARED ${RAINBOW_SOURCES})
target_include_directories(rainbow PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include")
qt5_use_modules(rainbow Core Gui) qt5_use_modules(rainbow Core Gui)

View File

@ -1,42 +1,28 @@
project(libUtil) project(MultiMC_util)
include(UseCXX14)
include(Coverage) include(Coverage)
# Find Qt # Find Qt
find_package(Qt5Core REQUIRED) find_package(Qt5Core REQUIRED)
find_package(Qt5Gui REQUIRED)
# Include Qt headers.
include_directories(${Qt5Base_INCLUDE_DIRS})
set(LIBUTIL_SOURCES set(LIBUTIL_SOURCES
include/libutil_config.h
include/pathutils.h
src/pathutils.cpp src/pathutils.cpp
include/osutils.h
include/userutils.h
src/userutils.cpp src/userutils.cpp
include/cmdutils.h
src/cmdutils.cpp src/cmdutils.cpp
include/modutils.h
src/modutils.cpp 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) set(CMAKE_POSITION_INDEPENDENT_CODE ON)
add_library(libUtil STATIC ${LIBUTIL_SOURCES}) add_library(MultiMC_util STATIC ${LIBUTIL_SOURCES})
qt5_use_modules(libUtil Core)
target_link_libraries(libUtil) 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 <QHash>
#include <QStringList> #include <QStringList>
#include "libutil_config.h" #include "multimc_util_export.h"
/** /**
* @file libutil/include/cmdutils.h * @file libutil/include/cmdutils.h
@ -42,7 +42,7 @@ namespace Commandline
* @param args the argument string * @param args the argument string
* @return a QStringList containing all arguments * @return a QStringList containing all arguments
*/ */
LIBUTIL_EXPORT QStringList splitArgs(QString args); MULTIMC_UTIL_EXPORT QStringList splitArgs(QString args);
/** /**
* @brief The FlagStyle enum * @brief The FlagStyle enum
@ -85,7 +85,7 @@ enum Enum
/** /**
* @brief The ParsingError class * @brief The ParsingError class
*/ */
class LIBUTIL_EXPORT ParsingError : public std::runtime_error class MULTIMC_UTIL_EXPORT ParsingError : public std::runtime_error
{ {
public: public:
ParsingError(const QString &what); ParsingError(const QString &what);
@ -94,7 +94,7 @@ public:
/** /**
* @brief The Parser class * @brief The Parser class
*/ */
class LIBUTIL_EXPORT Parser class MULTIMC_UTIL_EXPORT Parser
{ {
public: 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 <QString>
#include <QList> #include <QList>
#include "libutil_config.h" #include "multimc_util_export.h"
class QUrl; class QUrl;
@ -107,7 +107,7 @@ private:
void parse(); void parse();
}; };
LIBUTIL_EXPORT bool versionIsInInterval(const QString &version, const QString &interval); MULTIMC_UTIL_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 Version &version, const QString &interval);
} }

View File

@ -18,12 +18,12 @@
#include <QString> #include <QString>
#include <QDir> #include <QDir>
#include "libutil_config.h" #include "multimc_util_export.h"
LIBUTIL_EXPORT QString PathCombine(QString path1, QString path2); MULTIMC_UTIL_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, QString path3);
LIBUTIL_EXPORT QString AbsolutePath(QString path); MULTIMC_UTIL_EXPORT QString AbsolutePath(QString path);
/** /**
* Normalize path * Normalize path
@ -35,37 +35,37 @@ LIBUTIL_EXPORT QString AbsolutePath(QString path);
*/ */
QString NormalizePath(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 * 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! * 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 * 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! * 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 * 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 * 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. /// 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. /// 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 "!" /// 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 <QString>
#include "libutil_config.h" #include "multimc_util_export.h"
namespace Util namespace Util
{ {
// Get the Directory representing the User's Desktop // 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* // Create a shortcut at *location*, pointing to *dest* called with the arguments *args*
// call it *name* and assign it the icon *icon* // call it *name* and assign it the icon *icon*
// return true if operation succeeded // 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); QString name, QString iconLocation);
} }

View File

@ -1,32 +1,26 @@
cmake_minimum_required(VERSION 2.6) cmake_minimum_required(VERSION 3.1)
project(xz-embedded) project(xz-embedded LANGUAGES C)
option(XZ_BUILD_BCJ "Build xz-embedded with BCJ support (native binary optimization)" OFF) 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_CRC64 "Build xz-embedded with CRC64 checksum support" ON)
option(XZ_BUILD_MINIDEC "Build a tiny utility that decompresses xz streams" OFF) 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 # See include/xz.h for manual feature configuration
# tweak this list and xz.h to fit your needs # tweak this list and xz.h to fit your needs
set(XZ_SOURCES set(XZ_SOURCES
include/xz.h
src/xz_config.h
src/xz_crc32.c src/xz_crc32.c
src/xz_crc64.c src/xz_crc64.c
src/xz_dec_lzma2.c src/xz_dec_lzma2.c
src/xz_dec_stream.c src/xz_dec_stream.c
src/xz_lzma2.h
src/xz_private.h
src/xz_stream.h
# src/xz_dec_bcj.c # src/xz_dec_bcj.c
) )
# TODO: look into what would be needed for plain old lzma
add_library(xz-embedded STATIC ${XZ_SOURCES}) add_library(xz-embedded STATIC ${XZ_SOURCES})
add_executable(xzminidec xzminidec.c) target_include_directories(xz-embedded PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include")
target_link_libraries(xzminidec xz-embedded) 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 set(LOGIC_SOURCES
# LOGIC - Base classes and infrastructure # LOGIC - Base classes and infrastructure
@ -303,36 +303,18 @@ set(LOGIC_SOURCES
) )
################################ COMPILE ################################ ################################ COMPILE ################################
if(WIN32) # we need zlib
add_definitions(-DZ_PREFIX) find_package(ZLIB REQUIRED)
endif()
# Add common library
add_library(MultiMC_logic SHARED ${LOGIC_SOURCES}) 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) 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 # Link
target_link_libraries(MultiMC_logic xz-embedded unpack200 iconfix libUtil LogicalGui ${QUAZIP_LIBRARIES} nbt++ target_link_libraries(MultiMC_logic xz-embedded unpack200 iconfix MultiMC_util LogicalGui ${QUAZIP_LIBRARIES} nbt++ ${ZLIB_LIBRARIES})
Qt5::Core Qt5::Xml Qt5::Widgets Qt5::Network Qt5::Concurrent qt5_use_modules(MultiMC_logic Core Xml Widgets Network Concurrent)
${ZLIB_LIBRARIES} ${MultiMC_LINK_ADDITIONAL_LIBS})
add_dependencies(MultiMC_logic QuaZIP) 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,9 +1,6 @@
# run the unit tests with `make test` # run the unit tests with `make test`
find_package(Qt5 COMPONENTS Test Core Network) find_package(Qt5 COMPONENTS Test Core Network)
include_directories(../logic ${CMAKE_CURRENT_BINARY_DIR}/../logic)
include_directories(../depends/util/include/)
unset(MultiMC_TESTS) unset(MultiMC_TESTS)
macro(add_unit_test name) macro(add_unit_test name)
unset(srcs) unset(srcs)
@ -14,8 +11,8 @@ macro(add_unit_test name)
endif() endif()
endforeach() endforeach()
add_executable(tst_${name} ${srcs}) add_executable(tst_${name} ${srcs})
qt5_use_modules(tst_${name} Test Core Network)
target_link_libraries(tst_${name} MultiMC_logic) target_link_libraries(tst_${name} MultiMC_logic)
qt5_use_modules(tst_${name} Test Core Network)
list(APPEND MultiMC_TESTS tst_${name}) list(APPEND MultiMC_TESTS tst_${name})
add_test(NAME ${name} COMMAND tst_${name}) add_test(NAME ${name} COMMAND tst_${name})
endmacro() endmacro()