QTfrontend/CMakeLists.txt
author unC0Rr
Wed, 01 May 2024 16:49:16 +0200
changeset 16041 caba603f461f
parent 16013 bb847fe6d51c
child 16051 2003b466b279
permissions -rw-r--r--
Allow to move camera by dragging mouse cursor over game field
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
13299
6fda879d5052 CMake: Make sure Qt5 is also found on OS X after installing it via Homebrew
Wuzzy <Wuzzy2@mail.ru>
parents: 13222
diff changeset
     1
if(APPLE AND EXISTS /usr/local/opt/qt5)
6fda879d5052 CMake: Make sure Qt5 is also found on OS X after installing it via Homebrew
Wuzzy <Wuzzy2@mail.ru>
parents: 13222
diff changeset
     2
	# Special treatment for OS X users who
6fda879d5052 CMake: Make sure Qt5 is also found on OS X after installing it via Homebrew
Wuzzy <Wuzzy2@mail.ru>
parents: 13222
diff changeset
     3
	# install Qt5 via Homebrew.
6fda879d5052 CMake: Make sure Qt5 is also found on OS X after installing it via Homebrew
Wuzzy <Wuzzy2@mail.ru>
parents: 13222
diff changeset
     4
	# Homebrew installs Qt5 (up to at least 5.9.1) in
6fda879d5052 CMake: Make sure Qt5 is also found on OS X after installing it via Homebrew
Wuzzy <Wuzzy2@mail.ru>
parents: 13222
diff changeset
     5
	# /usr/local/qt5, ensure it can be found by CMake since
6fda879d5052 CMake: Make sure Qt5 is also found on OS X after installing it via Homebrew
Wuzzy <Wuzzy2@mail.ru>
parents: 13222
diff changeset
     6
	# it is not in the default /usr/local prefix.
6fda879d5052 CMake: Make sure Qt5 is also found on OS X after installing it via Homebrew
Wuzzy <Wuzzy2@mail.ru>
parents: 13222
diff changeset
     7
	list(APPEND CMAKE_PREFIX_PATH "/usr/local/opt/qt5")
6fda879d5052 CMake: Make sure Qt5 is also found on OS X after installing it via Homebrew
Wuzzy <Wuzzy2@mail.ru>
parents: 13222
diff changeset
     8
endif()
6fda879d5052 CMake: Make sure Qt5 is also found on OS X after installing it via Homebrew
Wuzzy <Wuzzy2@mail.ru>
parents: 13222
diff changeset
     9
13222
d6364e31f9c9 Drop Qt XML from dependencies. QXmlStreamReader is part of QtCore
Wuzzy <Wuzzy2@mail.ru>
parents: 13221
diff changeset
    10
find_package(Qt5 COMPONENTS Core Widgets Gui Network)
260
2208405af6c6 Minimal QT 4 version supported is 4.2.0
unc0rr
parents: 241
diff changeset
    11
12897
fc47fc4af6bd Finish porting. Seems to work, but no thorough testing has been performed
unc0rr
parents: 12896
diff changeset
    12
include_directories(${Qt5Core_PRIVATE_INCLUDE_DIRS})
fc47fc4af6bd Finish porting. Seems to work, but no thorough testing has been performed
unc0rr
parents: 12896
diff changeset
    13
12896
8869b5256720 Configure for Qt5
unc0rr
parents: 12386
diff changeset
    14
include(CheckLibraryExists)
9519
b8b5c82eb61b fail early when an incompatible qt version is found
koda
parents: 9225
diff changeset
    15
15577
107170c05bac Add patch to correctly handle libsdl2 from system/cmake
LocutusOfBorg
parents: 15476
diff changeset
    16
find_package(SDL2 REQUIRED CONFIG)
16013
bb847fe6d51c fix for Arch package
alfadur
parents: 15992
diff changeset
    17
if(WIN32 AND VCPKG_TOOLCHAIN)
bb847fe6d51c fix for Arch package
alfadur
parents: 15992
diff changeset
    18
	find_package(SDL2_mixer REQUIRED CONFIG) #audio in SDLInteraction
bb847fe6d51c fix for Arch package
alfadur
parents: 15992
diff changeset
    19
else()
bb847fe6d51c fix for Arch package
alfadur
parents: 15992
diff changeset
    20
	find_package(SDL2_mixer 2 REQUIRED) #audio in SDLInteraction
bb847fe6d51c fix for Arch package
alfadur
parents: 15992
diff changeset
    21
endif()
15577
107170c05bac Add patch to correctly handle libsdl2 from system/cmake
LocutusOfBorg
parents: 15476
diff changeset
    22
include_directories(${SDL2_INCLUDE_DIRS})
12386
e4f8bf43224d fix build. sorry 'bout that.
sheepluva
parents: 11851
diff changeset
    23
include_directories(${SDL2_MIXER_INCLUDE_DIRS})
8666
1652c1d9adc8 rework ffmpeg/libav/videorec linking and their cmake discovery
koda
parents: 8659
diff changeset
    24
9959
1a42d36f346a use mainstream project name
koda
parents: 9801
diff changeset
    25
if(LIBAV_FOUND)
8666
1652c1d9adc8 rework ffmpeg/libav/videorec linking and their cmake discovery
koda
parents: 8659
diff changeset
    26
    add_definitions(-DVIDEOREC -D__STDC_CONSTANT_MACROS)
9959
1a42d36f346a use mainstream project name
koda
parents: 9801
diff changeset
    27
    include_directories(${LIBAV_INCLUDE_DIR})
1a42d36f346a use mainstream project name
koda
parents: 9801
diff changeset
    28
    list(APPEND HW_LINK_LIBS ${LIBAV_LIBRARIES})
7817
6cc558a69b58 countless small optimisation for cmake, output messages are now coherent (mostly) and the options get fully respected (eg. skipping library search if not activated)
koda
parents: 7813
diff changeset
    29
endif()
555
0376fdcc6322 Get possible screen resolutions from SDL library
unc0rr
parents: 539
diff changeset
    30
8401
87410ae372f6 Server messages localization using Qt's l10n subsystem:
unc0rr
parents: 8383
diff changeset
    31
# server messages localization
87410ae372f6 Server messages localization using Qt's l10n subsystem:
unc0rr
parents: 8383
diff changeset
    32
file(GLOB ServerSources ${CMAKE_SOURCE_DIR}/gameServer/*.hs)
87410ae372f6 Server messages localization using Qt's l10n subsystem:
unc0rr
parents: 8383
diff changeset
    33
foreach(hsfile ${ServerSources})
87410ae372f6 Server messages localization using Qt's l10n subsystem:
unc0rr
parents: 8383
diff changeset
    34
    file(READ ${hsfile} hs)
87410ae372f6 Server messages localization using Qt's l10n subsystem:
unc0rr
parents: 8383
diff changeset
    35
    string(REGEX MATCHALL "loc *\"[^\n\"]+\"" locs ${hs})
87410ae372f6 Server messages localization using Qt's l10n subsystem:
unc0rr
parents: 8383
diff changeset
    36
    foreach(str ${locs})
87410ae372f6 Server messages localization using Qt's l10n subsystem:
unc0rr
parents: 8383
diff changeset
    37
        string(REGEX REPLACE "loc *\"([^\n\"]+)\"" "QT_TRANSLATE_NOOP(\"server\", \"\\1\")" s ${str})
87410ae372f6 Server messages localization using Qt's l10n subsystem:
unc0rr
parents: 8383
diff changeset
    38
        list(APPEND serverlocs ${s})
87410ae372f6 Server messages localization using Qt's l10n subsystem:
unc0rr
parents: 8383
diff changeset
    39
    endforeach(str)
87410ae372f6 Server messages localization using Qt's l10n subsystem:
unc0rr
parents: 8383
diff changeset
    40
endforeach(hsfile)
87410ae372f6 Server messages localization using Qt's l10n subsystem:
unc0rr
parents: 8383
diff changeset
    41
87410ae372f6 Server messages localization using Qt's l10n subsystem:
unc0rr
parents: 8383
diff changeset
    42
list(REMOVE_DUPLICATES serverlocs)
87410ae372f6 Server messages localization using Qt's l10n subsystem:
unc0rr
parents: 8383
diff changeset
    43
list(GET serverlocs 0 firstline)
87410ae372f6 Server messages localization using Qt's l10n subsystem:
unc0rr
parents: 8383
diff changeset
    44
list(REMOVE_AT serverlocs 0)
87410ae372f6 Server messages localization using Qt's l10n subsystem:
unc0rr
parents: 8383
diff changeset
    45
set(locsout "const char * serverMessages[] = {\n")
87410ae372f6 Server messages localization using Qt's l10n subsystem:
unc0rr
parents: 8383
diff changeset
    46
foreach(l ${serverlocs})
87410ae372f6 Server messages localization using Qt's l10n subsystem:
unc0rr
parents: 8383
diff changeset
    47
    list(APPEND locsout ${l} ",\n")
87410ae372f6 Server messages localization using Qt's l10n subsystem:
unc0rr
parents: 8383
diff changeset
    48
endforeach(l)
87410ae372f6 Server messages localization using Qt's l10n subsystem:
unc0rr
parents: 8383
diff changeset
    49
list(APPEND locsout ${firstline} "\n}\\;\n")
87410ae372f6 Server messages localization using Qt's l10n subsystem:
unc0rr
parents: 8383
diff changeset
    50
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/servermessages.h ${locsout})
87410ae372f6 Server messages localization using Qt's l10n subsystem:
unc0rr
parents: 8383
diff changeset
    51
14449
fbe5e49462aa Make about dialog in frontend translatable
Wuzzy <Wuzzy2@mail.ru>
parents: 14291
diff changeset
    52
fbe5e49462aa Make about dialog in frontend translatable
Wuzzy <Wuzzy2@mail.ru>
parents: 14291
diff changeset
    53
# Credits localization
fbe5e49462aa Make about dialog in frontend translatable
Wuzzy <Wuzzy2@mail.ru>
parents: 14291
diff changeset
    54
file(GLOB CreditsCSV ${CMAKE_SOURCE_DIR}/QTfrontend/res/credits.csv)
fbe5e49462aa Make about dialog in frontend translatable
Wuzzy <Wuzzy2@mail.ru>
parents: 14291
diff changeset
    55
foreach(csvfile ${CreditsCSV})
14518
34fd1f32f440 Localization: Also collect first line of credits.csv
Wuzzy <Wuzzy2@mail.ru>
parents: 14483
diff changeset
    56
    # Load credits.csv
14449
fbe5e49462aa Make about dialog in frontend translatable
Wuzzy <Wuzzy2@mail.ru>
parents: 14291
diff changeset
    57
    file(READ ${csvfile} csv)
14518
34fd1f32f440 Localization: Also collect first line of credits.csv
Wuzzy <Wuzzy2@mail.ru>
parents: 14483
diff changeset
    58
34fd1f32f440 Localization: Also collect first line of credits.csv
Wuzzy <Wuzzy2@mail.ru>
parents: 14483
diff changeset
    59
    # Match first line of CSV file
34fd1f32f440 Localization: Also collect first line of credits.csv
Wuzzy <Wuzzy2@mail.ru>
parents: 14483
diff changeset
    60
    string(REGEX MATCH "(E|S|U),\"[^\n\"]+\"" loc_top ${csv})
34fd1f32f440 Localization: Also collect first line of credits.csv
Wuzzy <Wuzzy2@mail.ru>
parents: 14483
diff changeset
    61
    string(REGEX REPLACE "(E|S|U),\"([^\n\"]+)\"" "\nQT_TRANSLATE_NOOP(\"credits\", \"\\2\")" s ${loc_top})
34fd1f32f440 Localization: Also collect first line of credits.csv
Wuzzy <Wuzzy2@mail.ru>
parents: 14483
diff changeset
    62
    list(APPEND csvlocs ${s})
34fd1f32f440 Localization: Also collect first line of credits.csv
Wuzzy <Wuzzy2@mail.ru>
parents: 14483
diff changeset
    63
34fd1f32f440 Localization: Also collect first line of credits.csv
Wuzzy <Wuzzy2@mail.ru>
parents: 14483
diff changeset
    64
    # Match remaining lines of CSV file
14450
e64b9ea24cd8 Add row type column in credits.csv
Wuzzy <Wuzzy2@mail.ru>
parents: 14449
diff changeset
    65
    string(REGEX MATCHALL "\n(E|S|U),\"[^\n\"]+\"" locs ${csv})
14449
fbe5e49462aa Make about dialog in frontend translatable
Wuzzy <Wuzzy2@mail.ru>
parents: 14291
diff changeset
    66
    foreach(str ${locs})
14450
e64b9ea24cd8 Add row type column in credits.csv
Wuzzy <Wuzzy2@mail.ru>
parents: 14449
diff changeset
    67
        string(REGEX REPLACE "(E|S|U),\"([^\n\"]+)\"" "QT_TRANSLATE_NOOP(\"credits\", \"\\2\")" s ${str})
14449
fbe5e49462aa Make about dialog in frontend translatable
Wuzzy <Wuzzy2@mail.ru>
parents: 14291
diff changeset
    68
        list(APPEND csvlocs ${s})
fbe5e49462aa Make about dialog in frontend translatable
Wuzzy <Wuzzy2@mail.ru>
parents: 14291
diff changeset
    69
    endforeach(str)
fbe5e49462aa Make about dialog in frontend translatable
Wuzzy <Wuzzy2@mail.ru>
parents: 14291
diff changeset
    70
endforeach(csvfile)
fbe5e49462aa Make about dialog in frontend translatable
Wuzzy <Wuzzy2@mail.ru>
parents: 14291
diff changeset
    71
fbe5e49462aa Make about dialog in frontend translatable
Wuzzy <Wuzzy2@mail.ru>
parents: 14291
diff changeset
    72
list(REMOVE_DUPLICATES csvlocs)
fbe5e49462aa Make about dialog in frontend translatable
Wuzzy <Wuzzy2@mail.ru>
parents: 14291
diff changeset
    73
list(GET csvlocs 0 firstline)
fbe5e49462aa Make about dialog in frontend translatable
Wuzzy <Wuzzy2@mail.ru>
parents: 14291
diff changeset
    74
list(REMOVE_AT csvlocs 0)
fbe5e49462aa Make about dialog in frontend translatable
Wuzzy <Wuzzy2@mail.ru>
parents: 14291
diff changeset
    75
set(locsout "const char * creditsMessages[] = {")
fbe5e49462aa Make about dialog in frontend translatable
Wuzzy <Wuzzy2@mail.ru>
parents: 14291
diff changeset
    76
foreach(l ${csvlocs})
fbe5e49462aa Make about dialog in frontend translatable
Wuzzy <Wuzzy2@mail.ru>
parents: 14291
diff changeset
    77
    list(APPEND locsout ${l} ",")
fbe5e49462aa Make about dialog in frontend translatable
Wuzzy <Wuzzy2@mail.ru>
parents: 14291
diff changeset
    78
endforeach(l)
fbe5e49462aa Make about dialog in frontend translatable
Wuzzy <Wuzzy2@mail.ru>
parents: 14291
diff changeset
    79
list(APPEND locsout ${firstline} "\n}\\;\n")
fbe5e49462aa Make about dialog in frontend translatable
Wuzzy <Wuzzy2@mail.ru>
parents: 14291
diff changeset
    80
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/creditsmessages.h ${locsout})
fbe5e49462aa Make about dialog in frontend translatable
Wuzzy <Wuzzy2@mail.ru>
parents: 14291
diff changeset
    81
fbe5e49462aa Make about dialog in frontend translatable
Wuzzy <Wuzzy2@mail.ru>
parents: 14291
diff changeset
    82
8410
48a7986e46f8 fix out of source build
koda
parents: 8401
diff changeset
    83
include_directories(${CMAKE_CURRENT_BINARY_DIR})
48a7986e46f8 fix out of source build
koda
parents: 8401
diff changeset
    84
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
6061
15b4b485a1c5 this makes more sense
sheepluva
parents: 6060
diff changeset
    85
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/model)
6060
fdfc01419815 I started to move stuff around, c'mon, hate on meee. PS: if your (clean) build is broken - let me know)
sheepluva
parents: 6038
diff changeset
    86
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/net)
fdfc01419815 I started to move stuff around, c'mon, hate on meee. PS: if your (clean) build is broken - let me know)
sheepluva
parents: 6038
diff changeset
    87
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/ui)
fdfc01419815 I started to move stuff around, c'mon, hate on meee. PS: if your (clean) build is broken - let me know)
sheepluva
parents: 6038
diff changeset
    88
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/ui/dialog)
fdfc01419815 I started to move stuff around, c'mon, hate on meee. PS: if your (clean) build is broken - let me know)
sheepluva
parents: 6038
diff changeset
    89
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/ui/page)
fdfc01419815 I started to move stuff around, c'mon, hate on meee. PS: if your (clean) build is broken - let me know)
sheepluva
parents: 6038
diff changeset
    90
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/ui/widget)
fdfc01419815 I started to move stuff around, c'mon, hate on meee. PS: if your (clean) build is broken - let me know)
sheepluva
parents: 6038
diff changeset
    91
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/util)
8381
588a8e6e2041 move platform code around, based off a gci task by dag10
koda
parents: 8347
diff changeset
    92
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/util/platform)
9801
8fb7737fbd31 Move physfs includes before all others
Dmitry Marakasov <amdmi3@amdmi3.ru>
parents: 9650
diff changeset
    93
include_directories(BEFORE ${PHYSFS_INCLUDE_DIR})
8fb7737fbd31 Move physfs includes before all others
Dmitry Marakasov <amdmi3@amdmi3.ru>
parents: 9650
diff changeset
    94
include_directories(BEFORE ${PHYSLAYER_INCLUDE_DIR})
9952
32f5982604f4 Fix build (no idea what's going on in this branch btw)
unc0rr
parents: 9950
diff changeset
    95
include_directories(${LUA_INCLUDE_DIR}) #brought by physlayer hwpacksmounter.h
8522
1853628ae285 use standard library prefix
koda
parents: 8475
diff changeset
    96
1159
49c88f620e51 Various build system improvements
unc0rr
parents: 1043
diff changeset
    97
if(UNIX)
4520
e7882bd1a894 Allow to draw maps in frontend and play them (only locally, some bugs to fix)
unc0rr
parents: 4410
diff changeset
    98
    # HACK: in freebsd cannot find iconv.h included via SDL.h
e7882bd1a894 Allow to draw maps in frontend and play them (only locally, some bugs to fix)
unc0rr
parents: 4410
diff changeset
    99
    include_directories("/usr/local/include")
1159
49c88f620e51 Various build system improvements
unc0rr
parents: 1043
diff changeset
   100
endif(UNIX)
555
0376fdcc6322 Get possible screen resolutions from SDL library
unc0rr
parents: 539
diff changeset
   101
8316
89232b2fa1d6 cmake rework, cleanup a lot of redundant sections, separate library and binary install location, unify osx and win handling of the data directory (tested on win, lin and mac)
koda
parents: 8315
diff changeset
   102
#only the cocoa version of qt supports building 64 bit apps
89232b2fa1d6 cmake rework, cleanup a lot of redundant sections, separate library and binary install location, unify osx and win handling of the data directory (tested on win, lin and mac)
koda
parents: 8315
diff changeset
   103
if(APPLE AND (CMAKE_OSX_ARCHITECTURES MATCHES "x86_64*") AND (NOT QT_MAC_USE_COCOA))
89232b2fa1d6 cmake rework, cleanup a lot of redundant sections, separate library and binary install location, unify osx and win handling of the data directory (tested on win, lin and mac)
koda
parents: 8315
diff changeset
   104
    message(FATAL_ERROR "Building the 64 bit version of Hedgewars *requires* the Cocoa variant of QT on Mac OS X")
89232b2fa1d6 cmake rework, cleanup a lot of redundant sections, separate library and binary install location, unify osx and win handling of the data directory (tested on win, lin and mac)
koda
parents: 8315
diff changeset
   105
endif()
89232b2fa1d6 cmake rework, cleanup a lot of redundant sections, separate library and binary install location, unify osx and win handling of the data directory (tested on win, lin and mac)
koda
parents: 8315
diff changeset
   106
#endif()
89232b2fa1d6 cmake rework, cleanup a lot of redundant sections, separate library and binary install location, unify osx and win handling of the data directory (tested on win, lin and mac)
koda
parents: 8315
diff changeset
   107
2219
07f5345ecae7 additional variable (BUNDLE) to make a standalone Mac application
koda
parents: 2218
diff changeset
   108
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/hwconsts.cpp.in ${CMAKE_CURRENT_BINARY_DIR}/hwconsts.cpp)
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 177
diff changeset
   109
6061
15b4b485a1c5 this makes more sense
sheepluva
parents: 6060
diff changeset
   110
file(GLOB NetCpp net/*.cpp)
15b4b485a1c5 this makes more sense
sheepluva
parents: 6060
diff changeset
   111
file(GLOB ModelCpp model/*.cpp)
15b4b485a1c5 this makes more sense
sheepluva
parents: 6060
diff changeset
   112
file(GLOB_RECURSE UIcpp ui/*.cpp)
15b4b485a1c5 this makes more sense
sheepluva
parents: 6060
diff changeset
   113
file(GLOB UtilCpp util/*.cpp)
6060
fdfc01419815 I started to move stuff around, c'mon, hate on meee. PS: if your (clean) build is broken - let me know)
sheepluva
parents: 6038
diff changeset
   114
8347
716c05f19401 GCI2012: CMake List Append
Willie Zhu
parents: 8342
diff changeset
   115
list(APPEND hwfr_src
6061
15b4b485a1c5 this makes more sense
sheepluva
parents: 6060
diff changeset
   116
    ${ModelCpp}
6060
fdfc01419815 I started to move stuff around, c'mon, hate on meee. PS: if your (clean) build is broken - let me know)
sheepluva
parents: 6038
diff changeset
   117
    ${NetCpp}
fdfc01419815 I started to move stuff around, c'mon, hate on meee. PS: if your (clean) build is broken - let me know)
sheepluva
parents: 6038
diff changeset
   118
    ${UIcpp}
fdfc01419815 I started to move stuff around, c'mon, hate on meee. PS: if your (clean) build is broken - let me know)
sheepluva
parents: 6038
diff changeset
   119
    ${UtilCpp}
fdfc01419815 I started to move stuff around, c'mon, hate on meee. PS: if your (clean) build is broken - let me know)
sheepluva
parents: 6038
diff changeset
   120
    achievements.cpp
fdfc01419815 I started to move stuff around, c'mon, hate on meee. PS: if your (clean) build is broken - let me know)
sheepluva
parents: 6038
diff changeset
   121
    binds.cpp
fdfc01419815 I started to move stuff around, c'mon, hate on meee. PS: if your (clean) build is broken - let me know)
sheepluva
parents: 6038
diff changeset
   122
    drawmapscene.cpp
fdfc01419815 I started to move stuff around, c'mon, hate on meee. PS: if your (clean) build is broken - let me know)
sheepluva
parents: 6038
diff changeset
   123
    game.cpp
fdfc01419815 I started to move stuff around, c'mon, hate on meee. PS: if your (clean) build is broken - let me know)
sheepluva
parents: 6038
diff changeset
   124
    gameuiconfig.cpp
fdfc01419815 I started to move stuff around, c'mon, hate on meee. PS: if your (clean) build is broken - let me know)
sheepluva
parents: 6038
diff changeset
   125
    HWApplication.cpp
fdfc01419815 I started to move stuff around, c'mon, hate on meee. PS: if your (clean) build is broken - let me know)
sheepluva
parents: 6038
diff changeset
   126
    hwform.cpp
fdfc01419815 I started to move stuff around, c'mon, hate on meee. PS: if your (clean) build is broken - let me know)
sheepluva
parents: 6038
diff changeset
   127
    main.cpp
fdfc01419815 I started to move stuff around, c'mon, hate on meee. PS: if your (clean) build is broken - let me know)
sheepluva
parents: 6038
diff changeset
   128
    team.cpp
7201
dc17ffdf0702 The first campaign commit with a lot of changes...
belphegorr <szabibibi@gmail.com>
parents: 6931
diff changeset
   129
    campaign.cpp
14483
4c743ef80b1b Add team selection in training page and basic check mark support
Wuzzy <Wuzzy2@mail.ru>
parents: 14450
diff changeset
   130
    mission.cpp
6060
fdfc01419815 I started to move stuff around, c'mon, hate on meee. PS: if your (clean) build is broken - let me know)
sheepluva
parents: 6038
diff changeset
   131
    ui_hwform.cpp
4520
e7882bd1a894 Allow to draw maps in frontend and play them (only locally, some bugs to fix)
unc0rr
parents: 4410
diff changeset
   132
    ${CMAKE_CURRENT_BINARY_DIR}/hwconsts.cpp
13565
730e7837d9df sdlkeys is in source not binary, no .in folder. Locutus brought to our attention.
nemo
parents: 13542
diff changeset
   133
    ${CMAKE_CURRENT_SOURCE_DIR}/sdlkeys.cpp
4520
e7882bd1a894 Allow to draw maps in frontend and play them (only locally, some bugs to fix)
unc0rr
parents: 4410
diff changeset
   134
    )
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 177
diff changeset
   135
880
f9efe907828f Add win32 resource compilation under mingw (used sim-im srcs as example)
unc0rr
parents: 781
diff changeset
   136
if(MINGW)
4520
e7882bd1a894 Allow to draw maps in frontend and play them (only locally, some bugs to fix)
unc0rr
parents: 4410
diff changeset
   137
    # resource compilation for mingw
e7882bd1a894 Allow to draw maps in frontend and play them (only locally, some bugs to fix)
unc0rr
parents: 4410
diff changeset
   138
    add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/hedgewars_rc.o
8283
af97cdbb7713 cmake verbosity/documentation/cleanup/formatting
koda
parents: 8279
diff changeset
   139
                       COMMAND windres -I ${CMAKE_CURRENT_SOURCE_DIR}
af97cdbb7713 cmake verbosity/documentation/cleanup/formatting
koda
parents: 8279
diff changeset
   140
                               -i ${CMAKE_CURRENT_SOURCE_DIR}/hedgewars.rc
af97cdbb7713 cmake verbosity/documentation/cleanup/formatting
koda
parents: 8279
diff changeset
   141
                               -o ${CMAKE_CURRENT_BINARY_DIR}/hedgewars_rc.o)
8347
716c05f19401 GCI2012: CMake List Append
Willie Zhu
parents: 8342
diff changeset
   142
    list(APPEND hwfr_src ${CMAKE_CURRENT_BINARY_DIR}/hedgewars_rc.o)
880
f9efe907828f Add win32 resource compilation under mingw (used sim-im srcs as example)
unc0rr
parents: 781
diff changeset
   143
else(MINGW)
8347
716c05f19401 GCI2012: CMake List Append
Willie Zhu
parents: 8342
diff changeset
   144
    list(APPEND hwfr_src hedgewars.rc)
880
f9efe907828f Add win32 resource compilation under mingw (used sim-im srcs as example)
unc0rr
parents: 781
diff changeset
   145
endif(MINGW)
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 177
diff changeset
   146
6061
15b4b485a1c5 this makes more sense
sheepluva
parents: 6060
diff changeset
   147
file(GLOB ModelHdr model/*.h)
15b4b485a1c5 this makes more sense
sheepluva
parents: 6060
diff changeset
   148
file(GLOB NetHdr net/*.h)
15b4b485a1c5 this makes more sense
sheepluva
parents: 6060
diff changeset
   149
file(GLOB_RECURSE UIhdr ui/*.h)
15b4b485a1c5 this makes more sense
sheepluva
parents: 6060
diff changeset
   150
file(GLOB UtilHdr util/*.h)
6060
fdfc01419815 I started to move stuff around, c'mon, hate on meee. PS: if your (clean) build is broken - let me know)
sheepluva
parents: 6038
diff changeset
   151
fdfc01419815 I started to move stuff around, c'mon, hate on meee. PS: if your (clean) build is broken - let me know)
sheepluva
parents: 6038
diff changeset
   152
4520
e7882bd1a894 Allow to draw maps in frontend and play them (only locally, some bugs to fix)
unc0rr
parents: 4410
diff changeset
   153
set(hwfr_moc_hdrs
6061
15b4b485a1c5 this makes more sense
sheepluva
parents: 6060
diff changeset
   154
    ${ModelHdr}
6060
fdfc01419815 I started to move stuff around, c'mon, hate on meee. PS: if your (clean) build is broken - let me know)
sheepluva
parents: 6038
diff changeset
   155
    ${NetHdr}
fdfc01419815 I started to move stuff around, c'mon, hate on meee. PS: if your (clean) build is broken - let me know)
sheepluva
parents: 6038
diff changeset
   156
    ${UIhdr}
fdfc01419815 I started to move stuff around, c'mon, hate on meee. PS: if your (clean) build is broken - let me know)
sheepluva
parents: 6038
diff changeset
   157
    drawmapscene.h
fdfc01419815 I started to move stuff around, c'mon, hate on meee. PS: if your (clean) build is broken - let me know)
sheepluva
parents: 6038
diff changeset
   158
    game.h
fdfc01419815 I started to move stuff around, c'mon, hate on meee. PS: if your (clean) build is broken - let me know)
sheepluva
parents: 6038
diff changeset
   159
    gameuiconfig.h
fdfc01419815 I started to move stuff around, c'mon, hate on meee. PS: if your (clean) build is broken - let me know)
sheepluva
parents: 6038
diff changeset
   160
    HWApplication.h
fdfc01419815 I started to move stuff around, c'mon, hate on meee. PS: if your (clean) build is broken - let me know)
sheepluva
parents: 6038
diff changeset
   161
    hwform.h
6223
cc3eb9b7230f It doesn't make much sense to make checks like 'if(game)' if you never set game to 0. Using smart pointers instead. Does it fix segfaults? Probably.
unc0rr
parents: 6204
diff changeset
   162
    team.h
6931
86c951cd0f3f make DataManager a QObject with reload() slot that emits signal updated()
sheepluva
parents: 6604
diff changeset
   163
    util/DataManager.h
7897
5e7c0810f365 libav name refactor
koda
parents: 7817
diff changeset
   164
    util/LibavInteraction.h
4520
e7882bd1a894 Allow to draw maps in frontend and play them (only locally, some bugs to fix)
unc0rr
parents: 4410
diff changeset
   165
    )
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 177
diff changeset
   166
4520
e7882bd1a894 Allow to draw maps in frontend and play them (only locally, some bugs to fix)
unc0rr
parents: 4410
diff changeset
   167
set(hwfr_hdrs
6060
fdfc01419815 I started to move stuff around, c'mon, hate on meee. PS: if your (clean) build is broken - let me know)
sheepluva
parents: 6038
diff changeset
   168
    ${UtilHdr}
fdfc01419815 I started to move stuff around, c'mon, hate on meee. PS: if your (clean) build is broken - let me know)
sheepluva
parents: 6038
diff changeset
   169
    team.h
fdfc01419815 I started to move stuff around, c'mon, hate on meee. PS: if your (clean) build is broken - let me know)
sheepluva
parents: 6038
diff changeset
   170
    achievements.h
4520
e7882bd1a894 Allow to draw maps in frontend and play them (only locally, some bugs to fix)
unc0rr
parents: 4410
diff changeset
   171
    binds.h
e7882bd1a894 Allow to draw maps in frontend and play them (only locally, some bugs to fix)
unc0rr
parents: 4410
diff changeset
   172
    ui_hwform.h
e7882bd1a894 Allow to draw maps in frontend and play them (only locally, some bugs to fix)
unc0rr
parents: 4410
diff changeset
   173
    hwconsts.h
6060
fdfc01419815 I started to move stuff around, c'mon, hate on meee. PS: if your (clean) build is broken - let me know)
sheepluva
parents: 6038
diff changeset
   174
    sdlkeys.h
7639
41e6de947531 * don't build moc for campaign.h
sheepluva
parents: 7628
diff changeset
   175
    campaign.h
14483
4c743ef80b1b Add team selection in training page and basic check mark support
Wuzzy <Wuzzy2@mail.ru>
parents: 14450
diff changeset
   176
    mission.h
8401
87410ae372f6 Server messages localization using Qt's l10n subsystem:
unc0rr
parents: 8383
diff changeset
   177
    ${CMAKE_CURRENT_BINARY_DIR}/servermessages.h
14483
4c743ef80b1b Add team selection in training page and basic check mark support
Wuzzy <Wuzzy2@mail.ru>
parents: 14450
diff changeset
   178
    ${CMAKE_CURRENT_BINARY_DIR}/creditsmessages.h
4520
e7882bd1a894 Allow to draw maps in frontend and play them (only locally, some bugs to fix)
unc0rr
parents: 4410
diff changeset
   179
    )
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 177
diff changeset
   180
2218
59a9bebc4988 -Smaxx' solution for compiling frontend with static libs in windows
koda
parents: 2212
diff changeset
   181
set(hwfr_rez hedgewars.qrc)
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 177
diff changeset
   182
9961
c18c66d621e5 consistent cmake checks
koda
parents: 9959
diff changeset
   183
if(BUILD_ENGINE_LIBRARY)
8314
7faceaca67d4 can change library name and compile it on windows again
koda
parents: 8312
diff changeset
   184
    add_definitions(-DHWLIBRARY=1)
7faceaca67d4 can change library name and compile it on windows again
koda
parents: 8312
diff changeset
   185
    set(hwlibname "${EXECUTABLE_OUTPUT_PATH}/${CMAKE_SHARED_LIBRARY_PREFIX}hwengine${CMAKE_SHARED_LIBRARY_SUFFIX}")
8347
716c05f19401 GCI2012: CMake List Append
Willie Zhu
parents: 8342
diff changeset
   186
    list(APPEND HW_LINK_LIBS ${hwlibname})
10173
fff5e4b0dfcb Make it build as library
unc0rr
parents: 10109
diff changeset
   187
fff5e4b0dfcb Make it build as library
unc0rr
parents: 10109
diff changeset
   188
    if(LIBAV_FOUND)
fff5e4b0dfcb Make it build as library
unc0rr
parents: 10109
diff changeset
   189
#        add_subdirectory(avwrapper)
fff5e4b0dfcb Make it build as library
unc0rr
parents: 10109
diff changeset
   190
        list(APPEND HW_LINK_LIBS avwrapper)
fff5e4b0dfcb Make it build as library
unc0rr
parents: 10109
diff changeset
   191
    endif()
8310
a98c349bc06b minor adjustments to libengine, moc is correctly created as definitions are set before calling it, params are better numbered and we don't subclass qthread but rather use moveToThread()
koda
parents: 8283
diff changeset
   192
endif()
a98c349bc06b minor adjustments to libengine, moc is correctly created as definitions are set before calling it, params are better numbered and we don't subclass qthread but rather use moveToThread()
koda
parents: 8283
diff changeset
   193
12896
8869b5256720 Configure for Qt5
unc0rr
parents: 12386
diff changeset
   194
qt5_add_resources(hwfr_rez_src ${hwfr_rez})
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 177
diff changeset
   195
12896
8869b5256720 Configure for Qt5
unc0rr
parents: 12386
diff changeset
   196
qt5_wrap_cpp(hwfr_moc_srcs ${hwfr_moc_hdrs})
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 177
diff changeset
   197
2652
67d0344aea9f still updates for mac compilation
koda
parents: 2641
diff changeset
   198
8317
ec9f94ab2737 remove the CROSSAPPLE option until a better solution is found
koda
parents: 8316
diff changeset
   199
if(APPLE)
8279
c03d64969112 less linking needed, raise minimum_osx_version when videorec is enabled
koda
parents: 8223
diff changeset
   200
    find_library(iokit_framework NAMES IOKit)
8347
716c05f19401 GCI2012: CMake List Append
Willie Zhu
parents: 8342
diff changeset
   201
    list(APPEND HW_LINK_LIBS ${iokit_framework})
8381
588a8e6e2041 move platform code around, based off a gci task by dag10
koda
parents: 8347
diff changeset
   202
    list(APPEND hwfr_src util/platform/CocoaInitializer.mm
588a8e6e2041 move platform code around, based off a gci task by dag10
koda
parents: 8347
diff changeset
   203
                         util/platform/InstallController.cpp
588a8e6e2041 move platform code around, based off a gci task by dag10
koda
parents: 8347
diff changeset
   204
                         util/platform/M3Panel.mm
588a8e6e2041 move platform code around, based off a gci task by dag10
koda
parents: 8347
diff changeset
   205
                         util/platform/M3InstallController.m
588a8e6e2041 move platform code around, based off a gci task by dag10
koda
parents: 8347
diff changeset
   206
                         util/platform/NSWorkspace_RBAdditions.m
588a8e6e2041 move platform code around, based off a gci task by dag10
koda
parents: 8347
diff changeset
   207
                         )
8688
88a6114a318c even more wrapping with find_package_or_disable_msg
koda
parents: 8686
diff changeset
   208
    include(${CMAKE_MODULE_PATH}/utils.cmake)
88a6114a318c even more wrapping with find_package_or_disable_msg
koda
parents: 8686
diff changeset
   209
    find_package_or_disable_msg(Sparkle NOAUTOUPDATE "Autoupdater will not be built.")
88a6114a318c even more wrapping with find_package_or_disable_msg
koda
parents: 8686
diff changeset
   210
    if(SPARKLE_FOUND)
8686
d303da4568b7 introduce find_package_or_fail/disable to group together similar cmake code
koda
parents: 8666
diff changeset
   211
        add_definitions(-DSPARKLE_ENABLED)
d303da4568b7 introduce find_package_or_fail/disable to group together similar cmake code
koda
parents: 8666
diff changeset
   212
        list(APPEND hwfr_src util/platform/AutoUpdater.cpp
d303da4568b7 introduce find_package_or_fail/disable to group together similar cmake code
koda
parents: 8666
diff changeset
   213
                             util/platform/SparkleAutoUpdater.mm)
d303da4568b7 introduce find_package_or_fail/disable to group together similar cmake code
koda
parents: 8666
diff changeset
   214
        list(APPEND HW_LINK_LIBS ${SPARKLE_LIBRARY})
4520
e7882bd1a894 Allow to draw maps in frontend and play them (only locally, some bugs to fix)
unc0rr
parents: 4410
diff changeset
   215
    endif()
2652
67d0344aea9f still updates for mac compilation
koda
parents: 2641
diff changeset
   216
endif()
67d0344aea9f still updates for mac compilation
koda
parents: 2641
diff changeset
   217
8104
09c38cdf380d show console on win when debugging to see frontend messages
koda
parents: 8083
diff changeset
   218
#when debugging, always prompt a console to see fronted messages
09c38cdf380d show console on win when debugging to see frontend messages
koda
parents: 8083
diff changeset
   219
#TODO: check it doesn't interfere on UNIX
15476
3102d95a870e CMAKE_BUILD_TYPE: Replace MATCHES with STREQUAL
Wuzzy <Wuzzy2@mail.ru>
parents: 15474
diff changeset
   220
if(CMAKE_BUILD_TYPE STREQUAL "Release" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
8104
09c38cdf380d show console on win when debugging to see frontend messages
koda
parents: 8083
diff changeset
   221
    set(console_access "WIN32")
15476
3102d95a870e CMAKE_BUILD_TYPE: Replace MATCHES with STREQUAL
Wuzzy <Wuzzy2@mail.ru>
parents: 15474
diff changeset
   222
endif(CMAKE_BUILD_TYPE STREQUAL "Release" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
2652
67d0344aea9f still updates for mac compilation
koda
parents: 2641
diff changeset
   223
8104
09c38cdf380d show console on win when debugging to see frontend messages
koda
parents: 8083
diff changeset
   224
add_executable(hedgewars ${console_access}
4520
e7882bd1a894 Allow to draw maps in frontend and play them (only locally, some bugs to fix)
unc0rr
parents: 4410
diff changeset
   225
    ${hwfr_src}
e7882bd1a894 Allow to draw maps in frontend and play them (only locally, some bugs to fix)
unc0rr
parents: 4410
diff changeset
   226
    ${hwfr_moc_srcs}
e7882bd1a894 Allow to draw maps in frontend and play them (only locally, some bugs to fix)
unc0rr
parents: 4410
diff changeset
   227
    ${hwfr_hdrs}
e7882bd1a894 Allow to draw maps in frontend and play them (only locally, some bugs to fix)
unc0rr
parents: 4410
diff changeset
   228
    ${hwfr_rez_src}
e7882bd1a894 Allow to draw maps in frontend and play them (only locally, some bugs to fix)
unc0rr
parents: 4410
diff changeset
   229
    )
2191
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents: 2015
diff changeset
   230
8347
716c05f19401 GCI2012: CMake List Append
Willie Zhu
parents: 8342
diff changeset
   231
list(APPEND HW_LINK_LIBS
9225
d8d929f92633 use target name instead of the resulting library, use more macros around
koda
parents: 9198
diff changeset
   232
    physfs physlayer
13222
d6364e31f9c9 Drop Qt XML from dependencies. QXmlStreamReader is part of QtCore
Wuzzy <Wuzzy2@mail.ru>
parents: 13221
diff changeset
   233
    Qt5::Core Qt5::Widgets Qt5::Gui Qt5::Network
4520
e7882bd1a894 Allow to draw maps in frontend and play them (only locally, some bugs to fix)
unc0rr
parents: 4410
diff changeset
   234
    )
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 177
diff changeset
   235
15977
3199bbfeba31 fix vcpkg build
alfadur
parents: 15760
diff changeset
   236
if(WIN32 AND VCPKG_TOOLCHAIN)
3199bbfeba31 fix vcpkg build
alfadur
parents: 15760
diff changeset
   237
    list(APPEND HW_LINK_LIBS SDL2::SDL2 SDL2_mixer::SDL2_mixer)
3199bbfeba31 fix vcpkg build
alfadur
parents: 15760
diff changeset
   238
else()  
15992
4013354585be Fix linking against sdl2-mixer
unC0Rr
parents: 15977
diff changeset
   239
    list(APPEND HW_LINK_LIBS ${SDL2_LIBRARIES} ${SDL2_MIXER_LIBRARY})
15977
3199bbfeba31 fix vcpkg build
alfadur
parents: 15760
diff changeset
   240
endif() 
12896
8869b5256720 Configure for Qt5
unc0rr
parents: 12386
diff changeset
   241
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 177
diff changeset
   242
if(WIN32 AND NOT UNIX)
8347
716c05f19401 GCI2012: CMake List Append
Willie Zhu
parents: 8342
diff changeset
   243
    list(APPEND HW_LINK_LIBS
4520
e7882bd1a894 Allow to draw maps in frontend and play them (only locally, some bugs to fix)
unc0rr
parents: 4410
diff changeset
   244
        ole32
e7882bd1a894 Allow to draw maps in frontend and play them (only locally, some bugs to fix)
unc0rr
parents: 4410
diff changeset
   245
        oleaut32
e7882bd1a894 Allow to draw maps in frontend and play them (only locally, some bugs to fix)
unc0rr
parents: 4410
diff changeset
   246
        winspool
e7882bd1a894 Allow to draw maps in frontend and play them (only locally, some bugs to fix)
unc0rr
parents: 4410
diff changeset
   247
        uuid
e7882bd1a894 Allow to draw maps in frontend and play them (only locally, some bugs to fix)
unc0rr
parents: 4410
diff changeset
   248
        )
2663
d53918cd22bb random updates for 10.6 and iphone builds
koda
parents: 2652
diff changeset
   249
endif()
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 177
diff changeset
   250
9270
a9b9ebd3d3be frontend compiles
koda
parents: 9244
diff changeset
   251
if(CMAKE_CXX_COMPILER MATCHES "clang*")
14980
5cd4edd71d22 Update CMakeLists.txt
Anton Malmygin <antonc27@mail.ru>
parents: 14578
diff changeset
   252
    list(APPEND HW_LINK_LIBS stdc++ m)
5cd4edd71d22 Update CMakeLists.txt
Anton Malmygin <antonc27@mail.ru>
parents: 14578
diff changeset
   253
    if(NOT APPLE)
5cd4edd71d22 Update CMakeLists.txt
Anton Malmygin <antonc27@mail.ru>
parents: 14578
diff changeset
   254
        list(APPEND HW_LINK_LIBS atomic)
5cd4edd71d22 Update CMakeLists.txt
Anton Malmygin <antonc27@mail.ru>
parents: 14578
diff changeset
   255
    endif()
9270
a9b9ebd3d3be frontend compiles
koda
parents: 9244
diff changeset
   256
endif()
a9b9ebd3d3be frontend compiles
koda
parents: 9244
diff changeset
   257
14291
efa901b04bad prevent qtmain from not being linked in on windows
alfadur
parents: 13565
diff changeset
   258
if(WIN32 AND VCPKG_TOOLCHAIN)
efa901b04bad prevent qtmain from not being linked in on windows
alfadur
parents: 13565
diff changeset
   259
    list(APPEND HW_LINK_LIBS Qt5::WinMain)
efa901b04bad prevent qtmain from not being linked in on windows
alfadur
parents: 13565
diff changeset
   260
endif()
efa901b04bad prevent qtmain from not being linked in on windows
alfadur
parents: 13565
diff changeset
   261
8317
ec9f94ab2737 remove the CROSSAPPLE option until a better solution is found
koda
parents: 8316
diff changeset
   262
target_link_libraries(hedgewars ${HW_LINK_LIBS})
2218
59a9bebc4988 -Smaxx' solution for compiling frontend with static libs in windows
koda
parents: 2212
diff changeset
   263
495
62c1c2b4414c - Fix most of the warnings in hwengine
unc0rr
parents: 494
diff changeset
   264
8316
89232b2fa1d6 cmake rework, cleanup a lot of redundant sections, separate library and binary install location, unify osx and win handling of the data directory (tested on win, lin and mac)
koda
parents: 8315
diff changeset
   265
install(PROGRAMS "${EXECUTABLE_OUTPUT_PATH}/hedgewars${CMAKE_EXECUTABLE_SUFFIX}" DESTINATION ${target_binary_install_dir})
2218
59a9bebc4988 -Smaxx' solution for compiling frontend with static libs in windows
koda
parents: 2212
diff changeset
   266