10 enable_language(Pascal) |
10 enable_language(Pascal) |
11 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.inc.in ${CMAKE_CURRENT_BINARY_DIR}/config.inc) |
11 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.inc.in ${CMAKE_CURRENT_BINARY_DIR}/config.inc) |
12 include_directories(${CMAKE_CURRENT_BINARY_DIR}) |
12 include_directories(${CMAKE_CURRENT_BINARY_DIR}) |
13 |
13 |
14 |
14 |
|
15 #set the sources with the correct order of dependencies so that cmake won't be confused |
15 set(engine_sources |
16 set(engine_sources |
16 SDLh.pas |
17 SDLh.pas |
17 uSinTable.pas |
18 uSinTable.pas |
18 uFloat.pas |
19 uFloat.pas |
19 uConsts.pas |
20 uConsts.pas |
20 LuaPas.pas |
21 LuaPas.pas |
21 uTypes.pas |
22 uTypes.pas |
|
23 uVariables.pas |
22 uUtils.pas |
24 uUtils.pas |
23 uVariables.pas |
|
24 uMisc.pas |
25 uMisc.pas |
25 uConsole.pas |
26 uConsole.pas |
|
27 uCommands.pas |
26 uDebug.pas |
28 uDebug.pas |
27 uCommands.pas |
|
28 uInputHandler.pas |
29 uInputHandler.pas |
29 uTextures.pas |
30 uTextures.pas |
30 uRenderUtils.pas |
31 uRenderUtils.pas |
31 uRender.pas |
32 uRender.pas |
32 uCaptions.pas |
33 uCaptions.pas |
33 uLandTexture.pas |
|
34 uIO.pas |
34 uIO.pas |
35 uChat.pas |
35 uChat.pas |
36 uPhysFSLayer.pas |
36 uPhysFSLayer.pas |
37 uStore.pas |
|
38 uSound.pas |
37 uSound.pas |
|
38 ArgParsers.pas |
39 uRandom.pas |
39 uRandom.pas |
40 uLocale.pas |
40 uLocale.pas |
41 uStats.pas |
41 uStats.pas |
42 uCursor.pas |
42 uCursor.pas |
43 uVideoRec.pas |
43 uVideoRec.pas |
44 uAILandMarks.pas |
44 uAILandMarks.pas |
45 adler32.pas |
45 adler32.pas |
46 uLandTemplates.pas |
46 uLandTemplates.pas |
|
47 uLandTexture.pas |
47 uLandGraphics.pas |
48 uLandGraphics.pas |
48 uLandPainted.pas |
49 uLandPainted.pas |
49 uLandOutline.pas |
50 uLandOutline.pas |
50 uLandGenMaze.pas |
51 uLandGenMaze.pas |
|
52 |
|
53 #this is where dependency tracking becomes hard |
|
54 uStore.pas |
|
55 uAmmos.pas |
51 uLandObjects.pas |
56 uLandObjects.pas |
52 uLand.pas |
57 uLand.pas |
53 uAmmos.pas |
58 uGearsList.pas |
54 |
59 uCollisions.pas |
55 uAIMisc.pas |
60 uAIMisc.pas |
56 uAIActions.pas |
61 uAIActions.pas |
|
62 uAIAmmoTests.pas |
57 uAI.pas |
63 uAI.pas |
58 uWorld.pas |
64 uWorld.pas |
|
65 uVisualGearsList.pas |
|
66 uVisualGearsHandlers.pas |
59 uVisualGears.pas |
67 uVisualGears.pas |
60 uTeams.pas |
|
61 |
68 |
62 uGearsList.pas |
|
63 uCollisions.pas |
|
64 uAIAmmoTests.pas |
|
65 uGears.pas |
69 uGears.pas |
66 uGame.pas |
70 uGame.pas |
67 uCommandHandlers.pas |
71 uCommandHandlers.pas |
|
72 uGearsRender.pas |
|
73 uGearsHedgehog.pas |
68 uGearsHandlers.pas |
74 uGearsHandlers.pas |
69 uGearsHandlersRope.pas |
75 uGearsHandlersRope.pas |
70 uGearsHedgehog.pas |
76 uGearsHandlersMess.pas |
71 uGearsRender.pas |
|
72 uGearsUtils.pas |
77 uGearsUtils.pas |
|
78 uTeams.pas |
|
79 |
|
80 #these interact with everything, so compile last |
73 uScript.pas |
81 uScript.pas |
74 hwengine.pas |
82 hwengine.pas |
75 |
83 |
76 GSHandlers.inc |
84 #we also have uTouch.pas |
77 VGSHandlers.inc |
|
78 ArgParsers.inc |
|
79 options.inc |
85 options.inc |
80 ${CMAKE_CURRENT_BINARY_DIR}/config.inc |
86 ${CMAKE_CURRENT_BINARY_DIR}/config.inc |
81 ) |
87 ) |
82 |
88 |
83 |
89 |
91 add_flag_prepend(CMAKE_Pascal_FLAGS_RELEASE -Si) |
97 add_flag_prepend(CMAKE_Pascal_FLAGS_RELEASE -Si) |
92 endif() |
98 endif() |
93 |
99 |
94 |
100 |
95 #DEPENDECIES AND EXECUTABLES SECTION |
101 #DEPENDECIES AND EXECUTABLES SECTION |
96 if(APPLE) |
102 if(NOT ${BUILD_ENGINE_LIBRARY} AND APPLE) |
97 if(CMAKE_OSX_ARCHITECTURES) |
|
98 #parse this system variable and adjust only the powerpc syntax to be compatible with -P |
|
99 string(REGEX MATCH "[pP][pP][cC]+" powerpc_build "${CMAKE_OSX_ARCHITECTURES}") |
|
100 string(REGEX MATCH "[iI]386+" i386_build "${CMAKE_OSX_ARCHITECTURES}") |
|
101 string(REGEX MATCH "[xX]86_64+" x86_64_build "${CMAKE_OSX_ARCHITECTURES}") |
|
102 if(x86_64_build) |
|
103 add_flag_prepend(CMAKE_Pascal_FLAGS -Px86_64) |
|
104 elseif(i386_build) |
|
105 add_flag_prepend(CMAKE_Pascal_FLAGS -Pi386) |
|
106 elseif(powerpc_build) |
|
107 add_flag_prepend(CMAKE_Pascal_FLAGS -Ppowerpc) |
|
108 else() |
|
109 message(FATAL_ERROR "Unknown architecture present in CMAKE_OSX_ARCHITECTURES (${CMAKE_OSX_ARCHITECTURES})") |
|
110 endif() |
|
111 list(LENGTH CMAKE_OSX_ARCHITECTURES num_of_archs) |
|
112 if(num_of_archs GREATER 1) |
|
113 message(${WARNING} "Only one architecture in CMAKE_OSX_ARCHITECTURES is currently supported, picking the first one") |
|
114 endif() |
|
115 elseif(CMAKE_SIZEOF_VOID_P MATCHES "8") |
|
116 #if that variable is not set check if we are on x86_64 and if so force it, else use default |
|
117 add_flag_prepend(CMAKE_Pascal_FLAGS -Px86_64) |
|
118 endif() |
|
119 |
|
120 #on OSX we need to provide the SDL_main() function when building as executable |
103 #on OSX we need to provide the SDL_main() function when building as executable |
121 if(NOT BUILD_ENGINE_LIBRARY) |
104 add_subdirectory(sdlmain) |
122 add_subdirectory(sdlmain) |
105 list(APPEND HW_LINK_LIBS SDLmain) |
123 list(APPEND HW_LINK_LIBS SDLmain) |
106 add_flag_append(CMAKE_Pascal_FLAGS -Fl${LIBRARY_OUTPUT_PATH}) |
124 add_flag_append(CMAKE_Pascal_FLAGS -Fl${LIBRARY_OUTPUT_PATH}) |
107 endif() |
125 endif() |
|
126 |
|
127 #when sysroot is set, make sure that fpc picks it |
|
128 if(CMAKE_OSX_SYSROOT) |
|
129 set(add_flag_append "-XD${CMAKE_OSX_SYSROOT}") |
|
130 endif(CMAKE_OSX_SYSROOT) |
|
131 endif(APPLE) |
|
132 |
108 |
133 if(FFMPEG_FOUND) |
109 if(FFMPEG_FOUND) |
134 add_subdirectory(avwrapper) |
110 add_subdirectory(avwrapper) |
135 list(APPEND HW_LINK_LIBS avwrapper) |
111 list(APPEND HW_LINK_LIBS avwrapper) |
136 add_definitions(-dUSE_VIDEO_RECORDING) |
112 add_definitions(-dUSE_VIDEO_RECORDING) |
137 add_flag_append(CMAKE_Pascal_FLAGS -Fl${LIBRARY_OUTPUT_PATH}) |
113 add_flag_append(CMAKE_Pascal_FLAGS -Fl${LIBRARY_OUTPUT_PATH}) |
|
114 #only for SDL < 2, linking carried out by fpc |
|
115 find_package_or_disable_msg(GLUT NOVIDEOREC "Video recording will not be built") |
138 endif() |
116 endif() |
139 |
117 |
140 find_package_or_disable_msg(PNG NOPNG "Screenshots will be saved in BMP") |
118 find_package_or_disable_msg(PNG NOPNG "Screenshots will be saved in BMP") |
141 if(PNG_FOUND) |
119 if(PNG_FOUND) |
142 list(APPEND engine_sources PNGh.pas) |
120 list(INSERT engine_sources 0 PNGh.pas) |
143 list(REMOVE_AT PNG_LIBRARIES 1) #removing the zlib library path |
121 list(REMOVE_AT PNG_LIBRARIES 1) #removing the zlib library path |
144 get_filename_component(PNG_LIBRARY_DIR ${PNG_LIBRARIES} PATH) |
122 get_filename_component(PNG_LIBRARY_DIR ${PNG_LIBRARIES} PATH) |
145 add_flag_append(CMAKE_Pascal_FLAGS -Fl${PNG_LIBRARY_DIR}) |
123 add_flag_append(CMAKE_Pascal_FLAGS -Fl${PNG_LIBRARY_DIR}) |
146 endif() |
124 endif() |
147 |
125 |