| 11 | | IF(CMAKE_HOST_WIN32) |
|---|
| 12 | | INCLUDE(${CMAKE_CURRENT_SOURCE_DIR}/cpp/qt_core/local.cmake) |
|---|
| 13 | | INCLUDE(${CMAKE_CURRENT_SOURCE_DIR}/cpp/qt_gui/local.cmake) |
|---|
| 14 | | INCLUDE(${CMAKE_CURRENT_SOURCE_DIR}/cpp/qt_opengl/local.cmake) |
|---|
| 15 | | # INCLUDE(${CMAKE_CURRENT_SOURCE_DIR}/cpp/qt_qtd/local.cmake) |
|---|
| 16 | | ADD_LIBRARY(qtd_cpp SHARED ${QT_QTD_SRCS} ${QT_CORE_SRCS} ${QT_GUI_SRCS}) |
|---|
| 17 | | TARGET_LINK_LIBRARIES( qtd_cpp ${QT_LIBRARIES} ) |
|---|
| 18 | | ELSE(CMAKE_HOST_WIN32) |
|---|
| 19 | | ADD_SUBDIRECTORY(cpp/qt_core bin) |
|---|
| 20 | | ADD_SUBDIRECTORY(cpp/qt_gui bin) |
|---|
| 21 | | ADD_SUBDIRECTORY(cpp/qt_opengl bin) |
|---|
| 22 | | ADD_SUBDIRECTORY(cpp/qt_qtd bin) |
|---|
| 23 | | ENDIF(CMAKE_HOST_WIN32) |
|---|
| 24 | | |
|---|
| 25 | | #ADD_SUBDIRECTORY(qt bin) |
|---|
| 26 | | |
|---|
| | 7 | option(BUILD_QT_OPENGL "Build QtOpenGL" "ON") |
|---|
| | 8 | option(BUILD_EXAMPLES "Build examples" "ON") |
|---|
| | 9 | |
|---|
| | 10 | set(PACKAGES Core Gui) |
|---|
| | 11 | if(BUILD_QT_OPENGL) |
|---|
| | 12 | set(PACKAGES ${PACKAGES} OpenGL) |
|---|
| | 13 | endif(BUILD_QT_OPENGL) |
|---|
| | 14 | |
|---|
| | 15 | set(packages_big ${PACKAGES}) |
|---|
| | 16 | set(packages) |
|---|
| | 17 | foreach(package ${packages_big}) |
|---|
| | 18 | string(TOLOWER ${package} package) |
|---|
| | 19 | set(packages ${packages} ${package}) |
|---|
| | 20 | endforeach(package ${packages_big}) |
|---|
| | 21 | |
|---|
| | 22 | #set(CMAKE_LIBRARY_OUTPUT_DIRECTORY CMakeFiles) |
|---|
| | 23 | |
|---|
| | 24 | find_program(DC dmd ldc) |
|---|
| | 25 | ## Parsing D compiler version. |
|---|
| | 26 | if (DC) |
|---|
| | 27 | exec_program(${DC} ARGS "" OUTPUT_VARIABLE d_output) |
|---|
| | 28 | string(REGEX MATCH "Digital Mars D Compiler v[0-9]\\.[0-9]+" dmd_version "${d_output}") |
|---|
| | 29 | if (dmd_version) |
|---|
| | 30 | set(D_IS_MARS true) |
|---|
| | 31 | set(D_COMPILER_NAME "Digital Mars D Compiler") |
|---|
| | 32 | string(REGEX REPLACE "Digital Mars D Compiler v([0-9])\\.[0-9]+" "\\1" D_VERSION "${dmd_version}") |
|---|
| | 33 | string(REGEX REPLACE "Digital Mars D Compiler v[0-9]\\.([0-9]+)" "\\1" D_FRONTEND "${dmd_version}") |
|---|
| | 34 | else (dmd_version) |
|---|
| | 35 | string(REGEX MATCH "LLVM-based D Compiler" is_ldc "${d_output}") |
|---|
| | 36 | if (is_ldc) |
|---|
| | 37 | exec_program(${DC} ARGS "--version" OUTPUT_VARIABLE d_output) |
|---|
| | 38 | string(REGEX MATCH "based on DMD v[0-9]\\.[0-9]+ and llvm [0-9]\\.[0-9]+" ldc_version "${d_output}") |
|---|
| | 39 | set(D_IS_LLVM true) |
|---|
| | 40 | if(ldc_version) |
|---|
| | 41 | set(D_IS_LLVM true) |
|---|
| | 42 | set(D_COMPILER_NAME "LLVM-based D Compiler") |
|---|
| | 43 | string(REGEX REPLACE "based on DMD v([0-9])\\.[0-9]+ and llvm [0-9]\\.[0-9]+" "\\1" D_VERSION "${ldc_version}") |
|---|
| | 44 | string(REGEX REPLACE "based on DMD v[0-9]\\.([0-9]+) and llvm [0-9]\\.[0-9]+" "\\1" D_FRONTEND "${ldc_version}") |
|---|
| | 45 | else(ldc_version) |
|---|
| | 46 | message(FATAL_ERROR "LDC compiler was found, but the version can not be processed") |
|---|
| | 47 | endif(ldc_version) |
|---|
| | 48 | else (is_ldc) |
|---|
| | 49 | message(FATAL_ERROR "D compliler not founded") |
|---|
| | 50 | endif(is_ldc) |
|---|
| | 51 | endif(dmd_version) |
|---|
| | 52 | message(STATUS "D compiler founded -- ${D_COMPILER_NAME} v${D_VERSION}.${D_FRONTEND}") |
|---|
| | 53 | else (DC) |
|---|
| | 54 | message(FATAL_ERROR "D compliler not founded") |
|---|
| | 55 | endif (DC) |
|---|
| | 56 | |
|---|
| | 57 | # Check D compiler version |
|---|
| | 58 | if(D_VERSION EQUAL "1") |
|---|
| | 59 | if (D_FRONTEND LESS "041") |
|---|
| | 60 | message(STATUS "Minimum required version of D compiler is 1.041 (or compiler based on this version)") |
|---|
| | 61 | endif(D_FRONTEND LESS "041") |
|---|
| | 62 | set(D_TARGET d1-tango) |
|---|
| | 63 | elseif(D_VERSION EQUAL "2") |
|---|
| | 64 | set(D_TARGET ) ## TODO: hm... I don`t known this parameter for D2 ^( |
|---|
| | 65 | endif(D_VERSION EQUAL "1") |
|---|
| | 66 | |
|---|
| | 67 | if(D_IS_MARS) |
|---|
| | 68 | set(SEPARETLY_D_OBJECTS true) |
|---|
| | 69 | elseif(D_IS_LLVM) |
|---|
| | 70 | set(SEPARETLY_D_OBJECTS true) |
|---|
| | 71 | endif(D_IS_MARS) |
|---|
| | 72 | |
|---|
| | 73 | # Debug and release flags. |
|---|
| | 74 | if (${CMAKE_BUILD_TYPE} MATCHES [dD][eE][bB][uU][gG]) |
|---|
| | 75 | #set(CMAKE_BUILD_TYPE Debug) |
|---|
| | 76 | #set( SUFFIXLIB "${SUFFIXLIB}-debug" ) |
|---|
| | 77 | #set( SUFFIXBIN "${SUFFIXBIN}-debug" ) |
|---|
| | 78 | add_definitions(-DDEBUG) |
|---|
| | 79 | set(D_FLAGS -g -gc -debug) |
|---|
| | 80 | else (${CMAKE_BUILD_TYPE} MATCHES [dD][eE][bB][uU][gG]) |
|---|
| | 81 | #set(CMAKE_BUILD_TYPE Release) |
|---|
| | 82 | add_definitions(-UNO_DEBUG) |
|---|
| | 83 | set(D_FLAGS -O -release -inline) |
|---|
| | 84 | if(${CMAKE_SYSTEM_NAME} STREQUAL Windows) |
|---|
| | 85 | set(D_FLAGS ${D_FLAGS} -L/subsystem:windows) |
|---|
| | 86 | endif(${CMAKE_SYSTEM_NAME} STREQUAL Windows) |
|---|
| | 87 | endif (${CMAKE_BUILD_TYPE} MATCHES [dD][eE][bB][uU][gG]) |
|---|
| | 88 | set(D_FLAGS ${D_FLAGS} -I${CMAKE_BINARY_DIR} -I${CMAKE_SOURCE_DIR}) |
|---|
| | 89 | |
|---|
| | 90 | MACRO(MAKE_WINDOWS_PATH pathname) |
|---|
| | 91 | if(${CMAKE_SYSTEM_NAME} STREQUAL Windows) |
|---|
| | 92 | # An extra \\ escape is necessary to get a \ through CMake's processing. |
|---|
| | 93 | STRING(REPLACE "/" "\\" ${pathname} "${${pathname}}") |
|---|
| | 94 | # Enclose with UNESCAPED quotes. This means we need to escape our |
|---|
| | 95 | # quotes once here, i.e. with \" |
|---|
| | 96 | SET(${pathname} \"${${pathname}}\") |
|---|
| | 97 | endif(${CMAKE_SYSTEM_NAME} STREQUAL Windows) |
|---|
| | 98 | ENDMACRO(MAKE_WINDOWS_PATH) |
|---|
| | 99 | |
|---|
| | 100 | if(${CMAKE_SYSTEM_NAME} STREQUAL Windows) |
|---|
| | 101 | set(implib implib) |
|---|
| | 102 | find_program(IMPLIB ${implib}) |
|---|
| | 103 | if (NOT IMPLIB) |
|---|
| | 104 | message(FATAL_ERROR "implib not found. You can donwload it from http://ftp.digitalmars.com/bup.zip") |
|---|
| | 105 | endif (NOT IMPLIB) |
|---|
| | 106 | set(D_OBJECT_SUFFIX .obj) |
|---|
| | 107 | if(D_IS_MARS) |
|---|
| | 108 | set(D_LIB_SUFFIX .lib) |
|---|
| | 109 | set(D_LIB_PREFIX ) |
|---|
| | 110 | elseif(D_IS_LDC) |
|---|
| | 111 | set(D_LIB_SUFFIX .a) |
|---|
| | 112 | set(D_LIB_PREFIX lib) |
|---|
| | 113 | endif(D_IS_MARS) |
|---|
| | 114 | set(GEN_OPT ${GEN_OPT} --cpp_shared) |
|---|
| | 115 | add_definitions(-DCPP_SHARED) |
|---|
| | 116 | elseif(${CMAKE_SYSTEM_NAME} STREQUAL Linux) |
|---|
| | 117 | set(D_LIB_SUFFIX .a) |
|---|
| | 118 | set(D_LIB_PREFIX lib) |
|---|
| | 119 | set(D_OBJECT_SUFFIX .o) |
|---|
| | 120 | endif(${CMAKE_SYSTEM_NAME} STREQUAL Windows) |
|---|
| | 121 | |
|---|
| | 122 | set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} ./) |
|---|
| | 123 | set(GEN_OPT ${GEN_OPT} --d-target=${D_TARGET}) |
|---|
| | 124 | |
|---|
| | 125 | add_subdirectory(generator) |
|---|
| | 126 | |
|---|
| | 127 | macro(OBJ_PATH path) |
|---|
| | 128 | unset(test) |
|---|
| | 129 | string(REGEX MATCH "${CMAKE_CURRENT_BINARY_DIR}/.*" test "${${path}}") |
|---|
| | 130 | if(NOT ${test} EQUAL "") |
|---|
| | 131 | string(LENGTH "${CMAKE_CURRENT_BINARY_DIR}" first) |
|---|
| | 132 | string(LENGTH "${${path}}" last) |
|---|
| | 133 | math(EXPR first "${first} + 1") |
|---|
| | 134 | math(EXPR len "${last} - ${first}") |
|---|
| | 135 | string(SUBSTRING "${${path}}" ${first} ${len} ${path}) |
|---|
| | 136 | else(NOT ${test} EQUAL "") |
|---|
| | 137 | string(REGEX MATCH "${CMAKE_CURRENT_SOURCE_DIR}/.*" test "${${path}}") |
|---|
| | 138 | if(NOT ${test} EQUAL "") |
|---|
| | 139 | string(LENGTH "${CMAKE_CURRENT_SOURCE_DIR}" first) |
|---|
| | 140 | string(LENGTH "${${path}}" last) |
|---|
| | 141 | math(EXPR first "${first} + 1") |
|---|
| | 142 | math(EXPR len "${last} - ${first}") |
|---|
| | 143 | string(SUBSTRING "${${path}}" ${first} ${len} ${path}) |
|---|
| | 144 | endif(NOT ${test} EQUAL "") |
|---|
| | 145 | endif(NOT ${test} EQUAL "") |
|---|
| | 146 | endmacro(OBJ_PATH) |
|---|
| | 147 | |
|---|
| | 148 | macro(compile_d_files target objects_list) |
|---|
| | 149 | unset(${objects_list}) |
|---|
| | 150 | set(tmp_dir ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${target}.dir) |
|---|
| | 151 | file(MAKE_DIRECTORY ${tmp_dir}) |
|---|
| | 152 | if(${SEPARETLY_D_OBJECTS}) |
|---|
| | 153 | foreach (d_source ${ARGN}) |
|---|
| | 154 | OBJ_PATH(d_source) |
|---|
| | 155 | set(d_obj ${tmp_dir}/${d_source}${D_OBJECT_SUFFIX}) |
|---|
| | 156 | set(${objects_list} ${${objects_list} ${d_obj}) |
|---|
| | 157 | get_filename_component(path ${d_obj} PATH) |
|---|
| | 158 | file(MAKE_DIRECTORY ${path}) |
|---|
| | 159 | set(d_obj_out ${d_obj}) |
|---|
| | 160 | OBJ_PATH(d_obj_out) |
|---|
| | 161 | add_custom_command(OUTPUT "${d_obj}" |
|---|
| | 162 | COMMAND "${DC}" |
|---|
| | 163 | ARGS ${D_FLAGS} -c ${d_source} -of${d_obj} |
|---|
| | 164 | COMMENT "Building ${d_obj_out}" |
|---|
| | 165 | DEPENDS ${d_source} |
|---|
| | 166 | ) |
|---|
| | 167 | endforeach(d_source) |
|---|
| | 168 | else(${SEPARETLY_D_OBJECTS}) |
|---|
| | 169 | set(${objects_list} ${tmp_dir}/${target}${D_OBJECT_SUFFIX}) |
|---|
| | 170 | set(d_obj_out ${${objects_list}}) |
|---|
| | 171 | OBJ_PATH(d_obj_out) |
|---|
| | 172 | set(parameters_list_file ${tmp_dir}/parameters) |
|---|
| | 173 | SET (parameters ${D_FLAGS} -c ${ARGN} -of${${objects_list}}) |
|---|
| | 174 | FILE (REMOVE ${parameters_list_file}) |
|---|
| | 175 | FOREACH(arg ${parameters}) |
|---|
| | 176 | FILE (APPEND ${parameters_list_file} "${arg}\n") |
|---|
| | 177 | ENDFOREACH(arg) |
|---|
| | 178 | add_custom_command(OUTPUT "${${objects_list}}" |
|---|
| | 179 | COMMAND "${DC}" |
|---|
| | 180 | ARGS @${parameters_list_file} |
|---|
| | 181 | WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} |
|---|
| | 182 | DEPENDS ${ARGN} |
|---|
| | 183 | COMMENT "" |
|---|
| | 184 | ) |
|---|
| | 185 | endif(${SEPARETLY_D_OBJECTS}) |
|---|
| | 186 | endmacro(compile_d_files objects_list) |
|---|
| | 187 | |
|---|
| | 188 | file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/lib) |
|---|
| | 189 | add_custom_target(allpackages ALL) |
|---|
| | 190 | |
|---|
| | 191 | link_directories(${CMAKE_BINARY_DIR}/CMakeFiles) |
|---|
| | 192 | |
|---|
| | 193 | foreach(package ${packages}) |
|---|
| | 194 | unset(d_objs) |
|---|
| | 195 | unset(cpp_objs) |
|---|
| | 196 | unset(d_sources) |
|---|
| | 197 | unset(cpp_sources) |
|---|
| | 198 | unset(lib_name) |
|---|
| | 199 | unset(link_cpp) |
|---|
| | 200 | unset(link_d) |
|---|
| | 201 | unset(cpp_files) |
|---|
| | 202 | unset(d_files) |
|---|
| | 203 | unset(classes) |
|---|
| | 204 | unset(d_generated_files) |
|---|
| | 205 | |
|---|
| | 206 | include (${CMAKE_SOURCE_DIR}/build/${package}.txt) |
|---|
| | 207 | |
|---|
| | 208 | set(${package}_link_example "${link_example}") |
|---|
| | 209 | set(${link_example} "") |
|---|
| | 210 | |
|---|
| | 211 | set(CUR_TMP_PATH CMakeFiles/${package}.dir) |
|---|
| | 212 | |
|---|
| | 213 | set(classes ArrayOps ${classes}) |
|---|
| | 214 | foreach(class ${classes}) |
|---|
| | 215 | set(d_sources ${d_sources} ${CMAKE_BINARY_DIR}/qt/${package}/${class}.d) |
|---|
| | 216 | set(cpp_sources ${cpp_sources} ${CMAKE_BINARY_DIR}/cpp/qt_${package}/${class}_shell.cpp) |
|---|
| | 217 | endforeach(class) |
|---|
| | 218 | add_sources_for_generating(${cpp_sources}) |
|---|
| | 219 | |
|---|
| | 220 | foreach(d_source ${d_files}) |
|---|
| | 221 | set(d_sources ${d_sources} ${CMAKE_SOURCE_DIR}/qt/${d_source}.d) |
|---|
| | 222 | endforeach(d_source) |
|---|
| | 223 | foreach(d_source ${d_generated_files}) |
|---|
| | 224 | set(d_sources ${d_sources} ${CMAKE_BINARY_DIR}/qt/${d_source}.d) |
|---|
| | 225 | endforeach(d_source) |
|---|
| | 226 | foreach (cpp_source ${cpp_files}) |
|---|
| | 227 | set(cpp_sources ${cpp_sources} ${CMAKE_SOURCE_DIR}/cpp/${cpp_source}.cpp) |
|---|
| | 228 | endforeach(cpp_source) |
|---|
| | 229 | |
|---|
| | 230 | compile_d_files(${package}_dobjs objects ${d_sources}) |
|---|
| | 231 | set(d_objs ${d_objs} ${objects}) |
|---|
| | 232 | |
|---|
| | 233 | set(lib_name ${D_LIB_PREFIX}qtd${package}${D_LIB_SUFFIX}) |
|---|
| | 234 | |
|---|
| | 235 | add_library(cpp_${package} SHARED ${cpp_sources}) |
|---|
| | 236 | add_dependencies(cpp_${package} dgen) |
|---|
| | 237 | if(${CMAKE_SYSTEM_NAME} STREQUAL Windows) |
|---|
| | 238 | set_property(TARGET cpp_${package} PROPERTY RUNTIME_OUTPUT_DIRECTORY lib) |
|---|
| | 239 | set_property(TARGET cpp_${package} PROPERTY ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/CMakeFiles) |
|---|
| | 240 | ADD_CUSTOM_COMMAND( |
|---|
| | 241 | TARGET cpp_${package} |
|---|
| | 242 | POST_BUILD |
|---|
| | 243 | COMMAND ${CMAKE_COMMAND} -E remove |
|---|
| | 244 | ${CMAKE_BINARY_DIR}/CMakeFiles/${CMAKE_IMPORT_LIBRARY_PREFIX}cpp${package}${CMAKE_IMPORT_LIBRARY_SUFFIX} |
|---|
| | 245 | COMMAND ${CMAKE_COMMAND} -E copy |
|---|
| | 246 | ${CMAKE_BINARY_DIR}/CMakeFiles/${CMAKE_IMPORT_LIBRARY_PREFIX}cpp_${package}.dll${CMAKE_IMPORT_LIBRARY_SUFFIX} |
|---|
| | 247 | ${CMAKE_BINARY_DIR}/CMakeFiles/${CMAKE_IMPORT_LIBRARY_PREFIX}cpp${package}${CMAKE_IMPORT_LIBRARY_SUFFIX} |
|---|
| | 248 | ) |
|---|
| | 249 | |
|---|
| | 250 | target_link_libraries(cpp_${package} ${link_cpp} ) |
|---|
| | 251 | set(cpp_lib ${CMAKE_BINARY_DIR}/lib/libcpp_${package}.dll) |
|---|
| | 252 | set(cpp_lib_native ${cpp_lib}) |
|---|
| | 253 | MAKE_WINDOWS_PATH(cpp_lib_native) |
|---|
| | 254 | set(d_implib ${CMAKE_BINARY_DIR}/CMakeFiles/${package}.dir/cpp_${package}.lib) |
|---|
| | 255 | set(d_implib_native ${d_implib}) |
|---|
| | 256 | MAKE_WINDOWS_PATH(d_implib_native) |
|---|
| | 257 | set(cpp_${package}_implib cpp${package}) |
|---|
| | 258 | add_custom_command( |
|---|
| | 259 | OUTPUT "${d_implib}" |
|---|
| | 260 | COMMAND "${IMPLIB}" |
|---|
| | 261 | ARGS /system /PAGESIZE:32 ${d_implib_native} ${cpp_lib_native} |
|---|
| | 262 | DEPENDS "cpp_${package}" |
|---|
| | 263 | COMMENT "Creating implib ${lib_name}" |
|---|
| | 264 | ) |
|---|
| | 265 | add_custom_command( |
|---|
| | 266 | OUTPUT "${lib_name}" |
|---|
| | 267 | COMMAND "${DC}" |
|---|
| | 268 | ARGS -lib ${d_objs} ${d_implib} -oflib/${lib_name} |
|---|
| | 269 | DEPENDS ${d_objs} ${d_implib} |
|---|
| | 270 | COMMENT "Linking ${lib_name}" |
|---|
| | 271 | ) |
|---|
| | 272 | else(${CMAKE_SYSTEM_NAME} STREQUAL Linux) |
|---|
| | 273 | set_property(TARGET cpp_${package} PROPERTY LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/CMakeFiles) |
|---|
| | 274 | foreach(cpp_source ${cpp_sources}) |
|---|
| | 275 | set(cpp_source ${cpp_source}) |
|---|
| | 276 | OBJ_PATH(cpp_source) |
|---|
| | 277 | set(cpp_objs ${cpp_objs} CMakeFiles/cpp_${package}.dir/${cpp_source}.o) |
|---|
| | 278 | endforeach(cpp_source) |
|---|
| | 279 | |
|---|
| | 280 | add_custom_command( |
|---|
| | 281 | OUTPUT "${lib_name}" |
|---|
| | 282 | COMMAND "${CMAKE_AR}" |
|---|
| | 283 | ARGS rcs lib/${lib_name} ${d_objs} ${cpp_objs} |
|---|
| | 284 | DEPENDS ${d_objs} cpp_${package} |
|---|
| | 285 | COMMENT "Linking ${lib_name}" |
|---|
| | 286 | ) |
|---|
| | 287 | endif(${CMAKE_SYSTEM_NAME} STREQUAL Windows) |
|---|
| | 288 | add_custom_target(${package} DEPENDS ${lib_name}) |
|---|
| | 289 | foreach(depend ${depends}) |
|---|
| | 290 | add_dependencies(cpp_${package} cpp_${depend}) |
|---|
| | 291 | add_dependencies(${package} ${depend}) |
|---|
| | 292 | endforeach(depend ${depends}) |
|---|
| | 293 | add_dependencies(allpackages ${package}) |
|---|
| | 294 | set(depends ${depends} ${package}) |
|---|
| | 295 | endforeach(package) |
|---|
| | 296 | |
|---|
| | 297 | foreach(package_big ${packages_big}) |
|---|
| | 298 | string(TOLOWER ${package_big} package) |
|---|
| | 299 | if(${CMAKE_SYSTEM_NAME} STREQUAL Windows AND D_IS_MARS) |
|---|
| | 300 | set(libs_path ${CMAKE_BINARY_DIR}/lib/qtd${package}.lib) |
|---|
| | 301 | MAKE_WINDOWS_PATH(libs_path) |
|---|
| | 302 | set(${package}_lib_param -L+${libs_path}) |
|---|
| | 303 | foreach(link ${${package}_link_example}) |
|---|
| | 304 | set(link ${CMAKE_SOURCE_DIR}/lib/${link}.lib) |
|---|
| | 305 | MAKE_WINDOWS_PATH(link) |
|---|
| | 306 | set(link -L+${link}) |
|---|
| | 307 | set(${package}_lib_param ${${package}_lib_param} ${link}) |
|---|
| | 308 | endforeach(link ${link_example}) |
|---|
| | 309 | else (${CMAKE_SYSTEM_NAME} STREQUAL Windows AND D_IS_MARS) |
|---|
| | 310 | set(${package}_lib_param -L-lqtd${package} -L-lQt${package_big}) |
|---|
| | 311 | foreach(link ${link_example}) |
|---|
| | 312 | set(${package}_lib_param ${${package}_lib_param} ${link}) |
|---|
| | 313 | endforeach(link ${link_example}) |
|---|
| | 314 | endif(${CMAKE_SYSTEM_NAME} STREQUAL Windows AND D_IS_MARS) |
|---|
| | 315 | endforeach(package_big ${packages_big}) |
|---|
| | 316 | |
|---|
| | 317 | macro(build_example name) |
|---|
| | 318 | unset(is_sources) |
|---|
| | 319 | unset(is_libs) |
|---|
| | 320 | set(qtd_libs ${core_lib_param} ${gui_lib_param}) |
|---|
| | 321 | foreach(param ${ARGN}) |
|---|
| | 322 | if(is_libs) |
|---|
| | 323 | string(REGEX REPLACE "Qt([A-Za-z0-9])" "\\1" param_package "${param}") |
|---|
| | 324 | if(${param_package} STREQUAL ${param}) |
|---|
| | 325 | unset(is_libs) |
|---|
| | 326 | set(is_sources 1) |
|---|
| | 327 | else(${param_package} STREQUAL ${param}) |
|---|
| | 328 | unset(is_founded) |
|---|
| | 329 | foreach(package_big ${packages_big}) |
|---|
| | 330 | string(TOLOWER ${package_big} package) |
|---|
| | 331 | if(${param_package} STREQUAL ${package_big}) |
|---|
| | 332 | set(qtd_libs ${qtd_libs} ${${package}_lib_param}) |
|---|
| | 333 | set(is_founded 1) |
|---|
| | 334 | break(package_big ${packages_big}) |
|---|
| | 335 | endif(${param_package} STREQUAL ${package_big}) |
|---|
| | 336 | endforeach(package_big ${packages_big}) |
|---|
| | 337 | if(NOT is_founded) |
|---|
| | 338 | message(STATUS "Module ${param_package} not founded for example ${name}") |
|---|
| | 339 | return(build_example name) |
|---|
| | 340 | endif(NOT is_founded) |
|---|
| | 341 | endif(${param_package} STREQUAL ${param}) |
|---|
| | 342 | endif(is_libs) |
|---|
| | 343 | if(NOT is_libs) |
|---|
| | 344 | if(NOT is_sources) |
|---|
| | 345 | if(${param} STREQUAL PACKAGES) |
|---|
| | 346 | set(is_libs 1) |
|---|
| | 347 | set(qtd_libs) |
|---|
| | 348 | else(${param} STREQUAL PACKAGES) |
|---|
| | 349 | set(is_sources 1) |
|---|
| | 350 | endif(${param} STREQUAL PACKAGES) |
|---|
| | 351 | endif(NOT is_sources) |
|---|
| | 352 | if(is_sources) |
|---|
| | 353 | set(sources ${sources} ${param}) |
|---|
| | 354 | endif(is_sources) |
|---|
| | 355 | endif(NOT is_libs) |
|---|
| | 356 | endforeach(param ${ARGN}) |
|---|
| | 357 | if(${CMAKE_SYSTEM_NAME} STREQUAL Windows AND D_IS_MARS) |
|---|
| | 358 | set(libs_path ) |
|---|
| | 359 | else(${CMAKE_SYSTEM_NAME} STREQUAL Windows AND D_IS_MARS) |
|---|
| | 360 | set(libs_path -L-L${CMAKE_BINARY_DIR}/lib) |
|---|
| | 361 | endif(${CMAKE_SYSTEM_NAME} STREQUAL Windows AND D_IS_MARS) |
|---|
| | 362 | compile_d_files(${name}_dobjs objects ${sources} ) |
|---|
| | 363 | set(output ${CMAKE_CURRENT_BINARY_DIR}/${name}${CMAKE_EXECUTABLE_SUFFIX}) |
|---|
| | 364 | set(output_native ${output}) |
|---|
| | 365 | make_windows_path(output_native) |
|---|
| | 366 | add_custom_command(OUTPUT "${output}" |
|---|
| | 367 | COMMAND "${DC}" |
|---|
| | 368 | ARGS ${D_FLAGS} ${libs_path} ${qtd_libs} ${objects} |
|---|
| | 369 | -of${output_native} |
|---|
| | 370 | DEPENDS ${objects} |
|---|
| | 371 | WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} |
|---|
| | 372 | COMMENT "Building example ${name}" |
|---|
| | 373 | ) |
|---|
| | 374 | add_custom_target(example_${name} ALL DEPENDS "${output}") |
|---|
| | 375 | add_dependencies(example_${name} allpackages) |
|---|
| | 376 | endmacro(build_example sources) |
|---|
| | 377 | |
|---|
| | 378 | if(BUILD_QT_OPENGL) |
|---|
| | 379 | add_subdirectory(demos) |
|---|
| | 380 | add_subdirectory(examples) |
|---|
| | 381 | endif(BUILD_QT_OPENGL) |
|---|