mirror of
https://github.com/loot/libloot.git
synced 2026-07-27 14:16:01 -07:00
Build stuff. Improved Windows support, tidied up.
This commit is contained in:
+70
-45
@@ -11,73 +11,98 @@
|
||||
cmake_minimum_required (VERSION 2.8.9)
|
||||
project (boss)
|
||||
|
||||
set (BOSS_SRC "${CMAKE_SOURCE_DIR}/src/backend/metadata.cpp" "${CMAKE_SOURCE_DIR}/src/backend/game.cpp" "${CMAKE_SOURCE_DIR}/src/backend/helpers.cpp" "${CMAKE_SOURCE_DIR}/src/backend/network.cpp" "${CMAKE_SOURCE_DIR}/src/backend/globals.cpp" "${CMAKE_SOURCE_DIR}/src/backend/graph.cpp")
|
||||
set (BOSS_SRC "${CMAKE_SOURCE_DIR}/src/backend/metadata.cpp"
|
||||
"${CMAKE_SOURCE_DIR}/src/backend/game.cpp"
|
||||
"${CMAKE_SOURCE_DIR}/src/backend/helpers.cpp"
|
||||
"${CMAKE_SOURCE_DIR}/src/backend/network.cpp"
|
||||
"${CMAKE_SOURCE_DIR}/src/backend/globals.cpp"
|
||||
"${CMAKE_SOURCE_DIR}/src/backend/graph.cpp"
|
||||
"${PROJECT_LIBS_DIR}/pugixml/src/pugixml.cpp"
|
||||
"${PROJECT_LIBS_DIR}/boost/libs/iostreams/src/file_descriptor.cpp")
|
||||
|
||||
set (BOSS_SRC ${BOSS_SRC} "${PROJECT_LIBS_DIR}/pugixml/src/pugixml.cpp" "${PROJECT_LIBS_DIR}/boost/libs/iostreams/src/file_descriptor.cpp")
|
||||
set (BOSS_GUI_SRC ${BOSS_SRC}
|
||||
"${CMAKE_SOURCE_DIR}/src/gui/ids.cpp"
|
||||
"${CMAKE_SOURCE_DIR}/src/gui/main.cpp"
|
||||
"${CMAKE_SOURCE_DIR}/src/gui/settings.cpp"
|
||||
"${CMAKE_SOURCE_DIR}/src/gui/editor.cpp"
|
||||
"${CMAKE_SOURCE_DIR}/src/gui/viewer.cpp"
|
||||
"${CMAKE_SOURCE_DIR}/src/resource.rc")
|
||||
|
||||
set (BOSS_API_SRC ${BOSS_SRC}
|
||||
"${CMAKE_SOURCE_DIR}/src/api/api.cpp")
|
||||
|
||||
# Include source and library directories.
|
||||
include_directories ("${PROJECT_LIBS_DIR}/alphanum" "${PROJECT_LIBS_DIR}/boost" "${PROJECT_LIBS_DIR}/yaml-cpp/include" "${CMAKE_SOURCE_DIR}/src" "${PROJECT_LIBS_DIR}/libloadorder/src" "${PROJECT_LIBS_DIR}/libespm" "${PROJECT_LIBS_DIR}/zlib" "${PROJECT_LIBS_DIR}/pugixml/src" "${PROJECT_LIBS_DIR}/wxWidgets/include" "${PROJECT_LIBS_DIR}/libgit2/include")
|
||||
include_directories ("${CMAKE_SOURCE_DIR}/src"
|
||||
"${PROJECT_LIBS_DIR}/alphanum"
|
||||
"${PROJECT_LIBS_DIR}/boost"
|
||||
"${PROJECT_LIBS_DIR}/yaml-cpp/include"
|
||||
"${PROJECT_LIBS_DIR}/libloadorder/src"
|
||||
"${PROJECT_LIBS_DIR}/libespm"
|
||||
"${PROJECT_LIBS_DIR}/zlib"
|
||||
"${PROJECT_LIBS_DIR}/pugixml/src"
|
||||
"${PROJECT_LIBS_DIR}/libgit2/include"
|
||||
"${PROJECT_LIBS_DIR}/wxWidgets/include"
|
||||
"${PROJECT_LIBS_DIR}/wxWidgets/lib/wx/include/${COMPILER_PREFIX}-msw-unicode-static-2.9")
|
||||
|
||||
link_directories ("${PROJECT_LIBS_DIR}/yaml-cpp/build"
|
||||
"${PROJECT_LIBS_DIR}/libloadorder/build"
|
||||
"${PROJECT_LIBS_DIR}/zlib/build"
|
||||
"${PROJECT_LIBS_DIR}/libgit2/build"
|
||||
"${PROJECT_LIBS_DIR}/wxWidgets/lib"
|
||||
"${PROJECT_LIBS_DIR}/boost/stage-${PROJECT_ARCH}/lib")
|
||||
|
||||
|
||||
##############################
|
||||
# Platform-Specific Settings
|
||||
# System-Specific Settings
|
||||
##############################
|
||||
|
||||
# Settings when compiling for Windows.
|
||||
# Settings when compiling for Windows. Since it's a Windows-only app this is always true, but useful to check for copy/paste into other projects.
|
||||
IF (CMAKE_SYSTEM_NAME MATCHES "Windows")
|
||||
add_definitions (-DUNICODE -D_UNICODE)
|
||||
set (BOSS_SRC ${BOSS_SRC} "${CMAKE_SOURCE_DIR}/src/resource.rc")
|
||||
add_definitions (-DUNICODE -D_UNICODE -DLIBLO_STATIC)
|
||||
IF (${PROJECT_LINK} MATCHES "STATIC")
|
||||
add_definitions (-DLIBLO_STATIC)
|
||||
add_definitions (-DBOSS_STATIC)
|
||||
ELSE ()
|
||||
add_definitions (-DLIBLO_STATIC)
|
||||
add_definitions (-DBOSS_EXPORT)
|
||||
ENDIF ()
|
||||
ENDIF ()
|
||||
|
||||
# Settings when not cross-compiling.
|
||||
IF (CMAKE_SYSTEM_NAME MATCHES CMAKE_HOST_SYSTEM_NAME)
|
||||
link_directories ("${PROJECT_LIBS_DIR}/boost/stage-${PROJECT_ARCH}/lib")
|
||||
ENDIF ()
|
||||
|
||||
link_directories ("${PROJECT_LIBS_DIR}/yaml-cpp/build")
|
||||
link_directories ("${PROJECT_LIBS_DIR}/libloadorder/build")
|
||||
link_directories ("${PROJECT_LIBS_DIR}/zlib/build")
|
||||
link_directories ("${PROJECT_LIBS_DIR}/libgit2/build")
|
||||
link_directories ("${PROJECT_LIBS_DIR}/wxWidgets/lib")
|
||||
|
||||
# Settings when compiling and cross-compiling on Linux.
|
||||
IF (CMAKE_HOST_SYSTEM_NAME MATCHES "Linux")
|
||||
# MinGW settings.
|
||||
IF (MINGW)
|
||||
set (CMAKE_C_FLAGS "-m${PROJECT_ARCH} -O3")
|
||||
set (CMAKE_CXX_FLAGS "-m${PROJECT_ARCH} -O3")
|
||||
set (CMAKE_EXE_LINKER_FLAGS "-static-libstdc++ -static-libgcc")
|
||||
set (CMAKE_SHARED_LINKER_FLAGS "-static-libstdc++ -static-libgcc")
|
||||
set (CMAKE_MODULE_LINKER_FLAGS "-static-libstdc++ -static-libgcc")
|
||||
|
||||
IF (CMAKE_SYSTEM_NAME MATCHES "Windows")
|
||||
link_directories ("${PROJECT_LIBS_DIR}/boost/stage-mingw-${PROJECT_ARCH}/lib")
|
||||
include_directories ("${PROJECT_LIBS_DIR}/wxWidgets/lib/wx/include/i686-w64-mingw32-msw-unicode-static-2.9")
|
||||
set (BOSS_LIBS ${BOSS_LIBS} version wx_mswu_webview-2.9-i686-w64-mingw32 wx_mswu_core-2.9-i686-w64-mingw32 wx_baseu-2.9-i686-w64-mingw32 wx_mswu_adv-2.9-i686-w64-mingw32 wxpng-2.9-i686-w64-mingw32 wxzlib-2.9-i686-w64-mingw32 comctl32)
|
||||
set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--subsystem,windows")
|
||||
ENDIF ()
|
||||
|
||||
set (BOSS_LIBS ${BOSS_LIBS} git2 ws2_32 zlibstatic loadorder${PROJECT_ARCH} yaml-cpp boost_log_setup boost_log boost_locale boost_thread_win32 boost_chrono boost_date_time boost_filesystem boost_system boost_regex)
|
||||
set (CMAKE_EXE_LINKER_FLAGS "-static-libstdc++ -static-libgcc -Wl,--subsystem,windows")
|
||||
set (CMAKE_SHARED_LINKER_FLAGS "-static-libstdc++ -static-libgcc -Wl,--subsystem,windows")
|
||||
set (CMAKE_MODULE_LINKER_FLAGS "-static-libstdc++ -static-libgcc -Wl,--subsystem,windows")
|
||||
ENDIF ()
|
||||
|
||||
# Settings when compiling on Windows.
|
||||
IF (CMAKE_HOST_SYSTEM_NAME MATCHES "Windows")
|
||||
set (BOSS_LIBS zlibstatic loadorder yaml-cpp boost_locale-vc110-mt-1_52 libboost_filesystem-vc110-mt-1_52 libboost_system-vc110-mt-1_52)
|
||||
set (CMAKE_CXX_FLAGS "/EHsc")
|
||||
# MSVC settings.
|
||||
IF (MSVC)
|
||||
set (CMAKE_CXX_FLAGS "/EHsc")
|
||||
set (BOOST_SUFFIX "-vc110-mt-1_52")
|
||||
ENDIF ()
|
||||
|
||||
##############################
|
||||
# More General Settings
|
||||
##############################
|
||||
|
||||
set (BOSS_GUI_SRC ${BOSS_SRC} "${CMAKE_SOURCE_DIR}/src/gui/ids.cpp" "${CMAKE_SOURCE_DIR}/src/gui/main.cpp" "${CMAKE_SOURCE_DIR}/src/gui/settings.cpp" "${CMAKE_SOURCE_DIR}/src/gui/editor.cpp" "${CMAKE_SOURCE_DIR}/src/gui/viewer.cpp")
|
||||
|
||||
set (BOSS_API_SRC ${BOSS_SRC} "${CMAKE_SOURCE_DIR}/src/api/api.cpp")
|
||||
set (BOSS_LIBS version
|
||||
git2
|
||||
ws2_32
|
||||
zlibstatic
|
||||
loadorder${PROJECT_ARCH}
|
||||
yaml-cpp
|
||||
boost_log_setup${BOOST_SUFFIX}
|
||||
boost_log${BOOST_SUFFIX}
|
||||
boost_locale${BOOST_SUFFIX}
|
||||
boost_thread_win32${BOOST_SUFFIX}
|
||||
boost_chrono${BOOST_SUFFIX}
|
||||
boost_date_time${BOOST_SUFFIX}
|
||||
boost_filesystem${BOOST_SUFFIX}
|
||||
boost_system${BOOST_SUFFIX}
|
||||
boost_regex${BOOST_SUFFIX}
|
||||
wx_mswu_webview-2.9-${COMPILER_PREFIX}
|
||||
wx_mswu_core-2.9-${COMPILER_PREFIX}
|
||||
wx_baseu-2.9-${COMPILER_PREFIX}
|
||||
wx_mswu_adv-2.9-${COMPILER_PREFIX}
|
||||
wxpng-2.9-${COMPILER_PREFIX}
|
||||
wxzlib-2.9-${COMPILER_PREFIX}
|
||||
comctl32)
|
||||
|
||||
|
||||
##############################
|
||||
|
||||
@@ -113,7 +113,7 @@ echo "using gcc : 4.6.3 : i686-w64-mingw32-g++ : <rc>i686-w64-mingw32-windres <a
|
||||
### wxWidgets
|
||||
|
||||
```
|
||||
./configure --prefix=/usr/local/i686-w64-mingw32 --host=i686-w64-mingw32 --disable-shared --enable-stl
|
||||
./configure --host=i686-w64-mingw32 --disable-shared --enable-stl
|
||||
```
|
||||
|
||||
### zlib
|
||||
@@ -147,6 +147,6 @@ cmake .. -DBUILD_SHARED_LIBS=OFF -DCMAKE_C_FLAGS=-m32 -DPROJECT_ARCH=32 -DCMAKE_
|
||||
|
||||
```
|
||||
mkdir build && cd build
|
||||
cmake .. -DPROJECT_LIBS_DIR=.. -DPROJECT_ARCH=32 -DPROJECT_LINK=STATIC -DCMAKE_TOOLCHAIN_FILE=mingw-toolchain.cmake
|
||||
cmake .. -DPROJECT_LIBS_DIR=".." -DPROJECT_ARCH=32 -DPROJECT_LINK=STATIC -DCMAKE_TOOLCHAIN_FILE="mingw-toolchain.cmake"
|
||||
make
|
||||
```
|
||||
|
||||
+11
-6
@@ -4,12 +4,17 @@
|
||||
set (CMAKE_SYSTEM_NAME Windows)
|
||||
|
||||
IF (PROJECT_ARCH MATCHES "32")
|
||||
set (MINGW i686-w64-mingw32)
|
||||
set (COMPILER_PREFIX i686-w64-mingw32)
|
||||
ELSE ()
|
||||
set (MINGW x86_64-w64-mingw32)
|
||||
set (COMPILER_PREFIX x86_64-w64-mingw32)
|
||||
ENDIF ()
|
||||
|
||||
set (CMAKE_C_COMPILER ${MINGW}-gcc)
|
||||
set (CMAKE_CXX_COMPILER ${MINGW}-g++)
|
||||
set (CMAKE_RC_COMPILER ${MINGW}-windres)
|
||||
set (CMAKE_RANLIB ${MINGW}-ranlib)
|
||||
set (CMAKE_C_COMPILER ${COMPILER_PREFIX}-gcc)
|
||||
set (CMAKE_CXX_COMPILER ${COMPILER_PREFIX}-g++)
|
||||
IF (CMAKE_HOST_SYSTEM_NAME MATCHES "Windows")
|
||||
set (CMAKE_RC_COMPILER windres)
|
||||
set (CMAKE_RANLIB ${COMPILER_PREFIX}-gcc-ranlib)
|
||||
ELSE ()
|
||||
set (CMAKE_RC_COMPILER ${COMPILER_PREFIX}-windres)
|
||||
set (CMAKE_RANLIB ${COMPILER_PREFIX}-ranlib)
|
||||
ENDIF ()
|
||||
|
||||
Reference in New Issue
Block a user