From 444b12a670dc89be802533d85561fa6747095be4 Mon Sep 17 00:00:00 2001 From: Thomas Fischer Date: Tue, 18 Mar 2014 13:27:25 +0100 Subject: [PATCH 01/10] cmake, better isolated :) --- CMakeLists.txt | 5 + Tools/CMake/CMakeLists.txt | 24 ++ Tools/CMake/basics.cmake | 98 +++++++ Tools/CMake/collada.cmake | 6 + Tools/CMake/convexDecomp.cmake | 3 + Tools/CMake/libogg.cmake | 5 + Tools/CMake/libtheora.cmake | 6 + Tools/CMake/libvorbis.cmake | 6 + Tools/CMake/ljpeg.cmake | 3 + Tools/CMake/lmng.cmake | 6 + Tools/CMake/lpng.cmake | 6 + Tools/CMake/lungif.cmake | 5 + Tools/CMake/opcode.cmake | 5 + Tools/CMake/pcre.cmake | 7 + Tools/CMake/squish.cmake | 3 + Tools/CMake/tinyxml.cmake | 3 + Tools/CMake/torque-win.rc.in | 85 ++++++ Tools/CMake/torque.ico | Bin 0 -> 25214 bytes Tools/CMake/torque3d.cmake | 476 +++++++++++++++++++++++++++++++++ Tools/CMake/torqueConfig.h.in | 202 ++++++++++++++ Tools/CMake/zlib.cmake | 3 + 21 files changed, 957 insertions(+) create mode 100644 CMakeLists.txt create mode 100644 Tools/CMake/CMakeLists.txt create mode 100644 Tools/CMake/basics.cmake create mode 100644 Tools/CMake/collada.cmake create mode 100644 Tools/CMake/convexDecomp.cmake create mode 100644 Tools/CMake/libogg.cmake create mode 100644 Tools/CMake/libtheora.cmake create mode 100644 Tools/CMake/libvorbis.cmake create mode 100644 Tools/CMake/ljpeg.cmake create mode 100644 Tools/CMake/lmng.cmake create mode 100644 Tools/CMake/lpng.cmake create mode 100644 Tools/CMake/lungif.cmake create mode 100644 Tools/CMake/opcode.cmake create mode 100644 Tools/CMake/pcre.cmake create mode 100644 Tools/CMake/squish.cmake create mode 100644 Tools/CMake/tinyxml.cmake create mode 100644 Tools/CMake/torque-win.rc.in create mode 100644 Tools/CMake/torque.ico create mode 100644 Tools/CMake/torque3d.cmake create mode 100644 Tools/CMake/torqueConfig.h.in create mode 100644 Tools/CMake/zlib.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 000000000..a5b48f94c --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,5 @@ +cmake_minimum_required (VERSION 2.8) + +project("Torque3D") + +add_subdirectory(Tools/CMake) \ No newline at end of file diff --git a/Tools/CMake/CMakeLists.txt b/Tools/CMake/CMakeLists.txt new file mode 100644 index 000000000..7631aae01 --- /dev/null +++ b/Tools/CMake/CMakeLists.txt @@ -0,0 +1,24 @@ +include(basics.cmake) + +#the libs +include(lmng.cmake) +include(lpng.cmake) +include(lungif.cmake) +include(zlib.cmake) +include(ljpeg.cmake) +include(tinyxml.cmake) +include(opcode.cmake) +include(squish.cmake) +include(collada.cmake) +include(pcre.cmake) +include(convexDecomp.cmake) +if(TORQUE_SFX_VORBIS) + include(libvorbis.cmake) + include(libogg.cmake) +endif() +if(TORQUE_THEORA) + include(libtheora.cmake) +endif() + +# the main engine, should come last +include(torque3d.cmake) diff --git a/Tools/CMake/basics.cmake b/Tools/CMake/basics.cmake new file mode 100644 index 000000000..2c710432c --- /dev/null +++ b/Tools/CMake/basics.cmake @@ -0,0 +1,98 @@ +project("Torque3DEngine") + +set(TORQUE_TEMPLATE "Empty" CACHE STRING "the template to use") + +set(projectOutDir "${CMAKE_SOURCE_DIR}/My Projects/${TORQUE_TEMPLATE}") +set(projectSrcDir "${CMAKE_SOURCE_DIR}/My Projects/${TORQUE_TEMPLATE}/source") +set(libDir "${CMAKE_SOURCE_DIR}/Engine/lib") +set(srcDir "${CMAKE_SOURCE_DIR}/Engine/source") +set(cmakeDir "${CMAKE_SOURCE_DIR}/Tools/CMake") + +# output folders +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${projectOutDir}/bin) +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${projectOutDir}/bin) +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${projectOutDir}/bin) + +SET(CMAKE_INSTALL_PREFIX "${projectOutDir}" CACHE INTERNAL "Prefix prepended to install directories" FORCE) + + +function(addLibPath varname dir mode) + set(tmpa "") + file(${mode} tmpa + ${dir}/*.cpp + ${dir}/*.c + ${dir}/*.cc + ${dir}/*.h) + set("${varname}" "${${varname}};${tmpa}" PARENT_SCOPE) +endfunction() + +function(addLibraryFinal paths libName relDir) + foreach(f ${paths}) + # Get the path of the file relative to ${DIRECTORY}, + # then alter it (not compulsory) + file(RELATIVE_PATH SRCGR ${relDir} ${f}) + set(SRCGR "${libName}/${SRCGR}") + # Extract the folder, ie remove the filename part + string(REGEX REPLACE "(.*)(/[^/]*)$" "\\1" SRCGR ${SRCGR}) + # Source_group expects \\ (double antislash), not / (slash) + string(REPLACE / \\ SRCGR ${SRCGR}) + source_group("${SRCGR}" FILES ${f}) + endforeach() + add_library("${libName}" STATIC ${paths}) +endfunction() + +function(addExecutableFinal paths exeName relDir) + foreach(f ${paths}) + # Get the path of the file relative to ${DIRECTORY}, + # then alter it (not compulsory) + file(RELATIVE_PATH SRCGR ${relDir} ${f}) + set(SRCGR "${exeName}/${SRCGR}") + # Extract the folder, ie remove the filename part + string(REGEX REPLACE "(.*)(/[^/]*)$" "\\1" SRCGR ${SRCGR}) + # Source_group expects \\ (double antislash), not / (slash) + string(REPLACE / \\ SRCGR ${SRCGR}) + source_group("${SRCGR}" FILES ${f}) + endforeach() + add_executable("${exeName}" WIN32 ${paths}) +endfunction() + +function(addLibrary dirs libName mode) + set(tmp "") + set(firstDir "") + #message(STATUS "${libName}") + foreach(dir ${dirs}) + if("${firstDir}" STREQUAL "") + set(firstDir "${dir}") + endif() + addLibPath(tmp "${dir}" ${mode}) + endforeach() + addLibraryFinal("${tmp}" "${libName}" "${firstDir}") + foreach(dir ${dirs}) + set_property(TARGET "${libName}" PROPERTY INCLUDE_DIRECTORIES "${dir}") + endforeach() +endfunction() + +if(WIN32) + # default disabled warnings: 4018;4100;4121;4127;4130;4244;4245;4389;4511;4512;4800; + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP /O2 /Ob2 /Oi /Ot /Oy /GT /Zi /W2 /nologo /GF /EHsc /GS- /Gy- /Qpar- /arch:SSE2 /fp:fast /fp:except- /GR /Zc:wchar_t-") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_CXX_FLAGS}") + #set(CMAKE_EXE_LINKER_FLAGS "/OPT:NOREF") + #set(STATIC_LIBRARY_FLAGS "/OPT:NOREF") + + # Force static runtime libraries + FOREACH(flag + CMAKE_C_FLAGS_RELEASE + CMAKE_C_FLAGS_RELWITHDEBINFO + CMAKE_C_FLAGS_DEBUG + CMAKE_C_FLAGS_DEBUG_INIT + CMAKE_CXX_FLAGS_RELEASE + CMAKE_CXX_FLAGS_RELWITHDEBINFO + CMAKE_CXX_FLAGS_DEBUG + CMAKE_CXX_FLAGS_DEBUG_INIT) + STRING(REPLACE "/MD" "/MT" "${flag}" "${${flag}}") + SET("${flag}" "${${flag}} /EHsc") + ENDFOREACH() +endif() + + + diff --git a/Tools/CMake/collada.cmake b/Tools/CMake/collada.cmake new file mode 100644 index 000000000..8f6b899b0 --- /dev/null +++ b/Tools/CMake/collada.cmake @@ -0,0 +1,6 @@ +project(collada) + +addLibrary("${libDir}/collada/src/1.4/dom;${libDir}/collada/src/dae;${libDir}/collada/src/modules/LIBXMLPlugin;${libDir}/collada/src/modules/stdErrPlugin;${libDir}/collada/src/modules/STLDatabase" collada GLOB) + +set_property(TARGET collada PROPERTY COMPILE_DEFINITIONS DOM_INCLUDE_TINYXML PCRE_STATIC) +set_property(TARGET collada PROPERTY INCLUDE_DIRECTORIES ${libDir}/collada/include ${libDir}/collada/include/1.4 ${libDir}/pcre ${libDir}/tinyxml) diff --git a/Tools/CMake/convexDecomp.cmake b/Tools/CMake/convexDecomp.cmake new file mode 100644 index 000000000..c19f7a0ca --- /dev/null +++ b/Tools/CMake/convexDecomp.cmake @@ -0,0 +1,3 @@ +project(convexDecomp) + +addLibrary("${libDir}/convexDecomp" convexDecomp GLOB) diff --git a/Tools/CMake/libogg.cmake b/Tools/CMake/libogg.cmake new file mode 100644 index 000000000..bef661868 --- /dev/null +++ b/Tools/CMake/libogg.cmake @@ -0,0 +1,5 @@ +project(libogg) + +addLibrary("${libDir}/libogg" libogg GLOB_RECURSE) + +set_property(TARGET libogg PROPERTY INCLUDE_DIRECTORIES ${libDir}/libogg/include ) diff --git a/Tools/CMake/libtheora.cmake b/Tools/CMake/libtheora.cmake new file mode 100644 index 000000000..61179d4c7 --- /dev/null +++ b/Tools/CMake/libtheora.cmake @@ -0,0 +1,6 @@ +project(libtheora) + +addLibrary("${libDir}/libtheora" libtheora GLOB_RECURSE) + +set_property(TARGET libtheora PROPERTY COMPILE_DEFINITIONS TORQUE_OGGTHEORA TORQUE_OGGVORIBS) +set_property(TARGET libtheora PROPERTY INCLUDE_DIRECTORIES ${libDir}/libtheora/include ${libDir}/libogg/include) diff --git a/Tools/CMake/libvorbis.cmake b/Tools/CMake/libvorbis.cmake new file mode 100644 index 000000000..087d0b505 --- /dev/null +++ b/Tools/CMake/libvorbis.cmake @@ -0,0 +1,6 @@ +project(libvorbis) + +addLibrary("${libDir}/libvorbis" libvorbis GLOB_RECURSE) + +set_property(TARGET libvorbis PROPERTY COMPILE_DEFINITIONS TORQUE_OGGVORBIS) +set_property(TARGET libvorbis PROPERTY INCLUDE_DIRECTORIES ${libDir}/libvorbis/include ${libDir}/libogg/include ) diff --git a/Tools/CMake/ljpeg.cmake b/Tools/CMake/ljpeg.cmake new file mode 100644 index 000000000..2210e73a3 --- /dev/null +++ b/Tools/CMake/ljpeg.cmake @@ -0,0 +1,3 @@ +project(ljpeg) + +addLibrary("${libDir}/ljpeg" ljpeg GLOB) diff --git a/Tools/CMake/lmng.cmake b/Tools/CMake/lmng.cmake new file mode 100644 index 000000000..98261254a --- /dev/null +++ b/Tools/CMake/lmng.cmake @@ -0,0 +1,6 @@ +project(lmng) + +addLibrary("${libDir}/lmng" lmng GLOB) + +set_property(TARGET lmng PROPERTY COMPILE_DEFINITIONS MNG_OPTIMIZE_OBJCLEANUP) +set_property(TARGET lmng PROPERTY INCLUDE_DIRECTORIES ${libDir}/lpng ${libDir}/zlib ${libDir}/ljpeg) diff --git a/Tools/CMake/lpng.cmake b/Tools/CMake/lpng.cmake new file mode 100644 index 000000000..e50a3651b --- /dev/null +++ b/Tools/CMake/lpng.cmake @@ -0,0 +1,6 @@ +project(lpng) + +addLibrary("${libDir}/lpng" lpng GLOB) + +#set_property(TARGET lpng PROPERTY COMPILE_DEFINITIONS PNG_NO_ASSEMBLER_CODE) +set_property(TARGET lpng PROPERTY INCLUDE_DIRECTORIES ${libDir}/zlib) diff --git a/Tools/CMake/lungif.cmake b/Tools/CMake/lungif.cmake new file mode 100644 index 000000000..1f4831bdc --- /dev/null +++ b/Tools/CMake/lungif.cmake @@ -0,0 +1,5 @@ +project(lungif) + +addLibrary("${libDir}/lungif" lungif GLOB) + +set_property(TARGET lungif PROPERTY COMPILE_DEFINITIONS _GBA_NO_FILEIO) diff --git a/Tools/CMake/opcode.cmake b/Tools/CMake/opcode.cmake new file mode 100644 index 000000000..a03187277 --- /dev/null +++ b/Tools/CMake/opcode.cmake @@ -0,0 +1,5 @@ +project(opcode) + +addLibrary("${libDir}/opcode;${libDir}/opcode/Ice" opcode GLOB) + +set_property(TARGET opcode PROPERTY COMPILE_DEFINITIONS TORQUE_OPCODE ICE_NO_DLL) diff --git a/Tools/CMake/pcre.cmake b/Tools/CMake/pcre.cmake new file mode 100644 index 000000000..2315d6c4c --- /dev/null +++ b/Tools/CMake/pcre.cmake @@ -0,0 +1,7 @@ +project(pcre) + +addLibrary("${libDir}/pcre" pcre GLOB) + +set_property(TARGET pcre PROPERTY COMPILE_DEFINITIONS PCRE_STATIC HAVE_CONFIG_H) +set_property(TARGET pcre PROPERTY COMPILE_FLAGS /TP) #/TP = compile as C++ +set_property(TARGET pcre PROPERTY INCLUDE_DIRECTORIES ${libDir}/pcre) diff --git a/Tools/CMake/squish.cmake b/Tools/CMake/squish.cmake new file mode 100644 index 000000000..284cc46b7 --- /dev/null +++ b/Tools/CMake/squish.cmake @@ -0,0 +1,3 @@ +project(squish) + +addLibrary("${libDir}/squish" squish GLOB) diff --git a/Tools/CMake/tinyxml.cmake b/Tools/CMake/tinyxml.cmake new file mode 100644 index 000000000..4aaa29714 --- /dev/null +++ b/Tools/CMake/tinyxml.cmake @@ -0,0 +1,3 @@ +project(tinyxml) + +addLibrary("${libDir}/tinyxml" tinyxml GLOB) diff --git a/Tools/CMake/torque-win.rc.in b/Tools/CMake/torque-win.rc.in new file mode 100644 index 000000000..cf88543da --- /dev/null +++ b/Tools/CMake/torque-win.rc.in @@ -0,0 +1,85 @@ +//Microsoft Developer Studio generated resource script. +// +#define IDI_ICON1 103 +#define IDI_ICON2 107 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 108 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1000 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "windows.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) +#endif //_WIN32 + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDI_ICON1 ICON DISCARDABLE "torque.ico" +IDI_ICON2 ICON DISCARDABLE "torque.ico" + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE DISCARDABLE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE DISCARDABLE +BEGIN + "#include ""windows.h""\r\n" + "\0" +END + +3 TEXTINCLUDE DISCARDABLE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/Tools/CMake/torque.ico b/Tools/CMake/torque.ico new file mode 100644 index 0000000000000000000000000000000000000000..22ac1a3d1a51d356e778e4ff39b6bb91eebe00be GIT binary patch literal 25214 zcmeHPYiwl6RX*)@KiqD2x9#@Zp6+?=BRjkCu6MJ$&Lr0gN&-lPB}9u@iIoxiWB(9M z#1F&|G`;Mu2ro?{1;md9ORP3TCc=P301?TZ5Ums;?eK_%#Ar32x}>wzj57`70|ctDBo3V}$_TTd{|V&CSg%3*A30I2m%$ z58&*>g})cE=76jDC!F)*z+VN4fV{sMtuXKj4?_$G2`8Kw8r$DnRdmqt2OLEVXKMu^ zJeG?+4QHJN4<;fB=Rg8Ngh%9&F)K{?o>5`Kl`JZjl62G>llbPQm%wL*8}0|-cvQMw z3S3Q%-7DGz=!sD&NTqet_J!Mm%mE;?O zw?|!Jm#N^e4@g&as1+wfQI(<4f&c`yW5S}BQr@ESL}2}%+DIR)tZcol6l+{YCBoZL zy(;dJl`ZJXa2u$yQUj`*{3KNrx>0~=QUD;n7vSS>fDo5IQ1wx@t(XI?6OqFRNX{&? zz0n+7*(w8I)?+%2=BTmDd*P82HQLiTTb|CkOgV?CrDR>pdDp=N_&t%FYpuE$&RifR zN_wC{G5agZAn}k=2P560C?F#Bh_~v$jZ}%Jnrti*id@`a?)4Jxh59?1b2ZnFAsq>n zv^&eHZKu*pVtnG$^3b{ekb3=D85?^@rl&qHi?d&mTJ1?Wzwr06IQ@rmY3W~OX7X2L zZss+)y!3C<82>T3u=pKm&Hts$&-^yZo-9m%SuQTUCrdMbA`_E8Bkj4rmS*!Mxv=oA zEY1C~Of_GTdgG%qKlNLn{e+B;o|AL)e=2j$>*)7UY0YlRx!JFx?!!_YZAp9nZvlTy zW~YBuDwS!_`zvY9{kcqx|FkqGUXt#(C zv7eCd{m!%U#wUXGD`5&Z>OuG+o&nFRlo2joc=}SYSj^|Wfng%2f_7yG;(Gx;{AY%x z!T2MpK|R198jRmm`0(EuGT<);3}wa-2QaT1j1A_;n^hg)GJ(PK@=HUqFf^1twT~(M zaDv8yW+LN5SdqMIMcN9#q!C3*xoW92R~Q`*7iDN@wOBkKcc}2ICcc8GKebZ5P#7Mb zL2a})52>1|s6i=4k8{=1NAz4=P|&b*w5rEgW^PgAR}_@Tcn}IER-D)9Ua$f!jV^Bd zi!uH*i9{1L^hEh$AXG7Jk z{v<)UoNEKYkC63&Xh1V81y6i6ewMBEm(+HC)dNR0?KjG~NV3t7wl{ zy(o!87u7BqybnY^W?`Ad#Xzs*lo$ovj6QB6^yF74cA*|p4Qh|};3NU% zk$9J3a*{%pL=8$$1&joLQwJNhd@fRNXfYmvQ!^&I3?_fYtS!tr& zaIEH1@FMU8yBHq4R#5}*qq$rLQHb%q+_^zX{t^lvEtnPYwTn>*6MVf)VS{X2^f!h;$3k)MIpRjC(?AF0e2 z3ajqGDZ0$#(_Otv6LGjtJvC9D^+Rp~G&Y|P>)~Ma2Gk4d3(E2?6^1OVMbwWHA(zWb zHJ=|Io*u0=DwRSZphi>bQC&}BK^V!8Eve3EK`S$y?GvFGFawwxKu>+h>q9_L^k+U) zKNnlfvKZD+puP-~K42&AVIr(w1qcHuMZL*$@H6Y8t69$(R%KQ!qK3whLBQn`$FjQ=1@h0b=l20%8@OlxHo7U0k*S-Ini15f(|e z>cf=D)11lc2wSYAVyRo&uYaq)Uw_TtMcgSN0(Uoz2g=kb`F;m+hr~dv_eaIcM3tEF0{9*1hRC?j#Pp05teNM)ol8o~-y zIz82DzFaOAO8{1RxL1RaM>$_DNo6dj00oqD)ggE}bdr(@;a=^gYYqD8Ag)20d}%oD7S%Y+b3~sZ zJV!7GFCcQw80jJ$E8shr8!rBF*Ex_!%`0(919zW3^NjfRM(JU$BhQn5XNq1kd@BR} z9Gsc>HfM|D9CTjRs!zV);-9=|{syI*e-|AWjQWjjsHeHkjCzc?4^H$u=)B?D;V##? z2k<>pf>zo%j>^AlOg2ofCBA36Gf1#t^K9GgS?;&y=2$q7uJ)$^qmCcMKWw>v0!x#~uUa+LRMlUg`e&CvVUWXMbrn zl}$TK88mNb{syIK_Oy#WzE#MZ`u5Hq0x!L%I7y8*IS$O9>fY!1}yI(%do_5(0 zJZC9${pev&Ib|{n@5G^P*^jL1?*_soS}+br^zg>T~2s!v=~ zIuJaOFY>GV(Wy%Z+3RoiR~eajfqR_iH|;o+CUr7xQWO6qdC1#3Z4JsfZ6}^tns1%D z>)%}J!aD8c~049yOZ#2wncvp(}$sLsQK1uKRbfH0Qsf-QKs9Vg{Fxa>GR2BvziA9oz|fseym);8SFJOi_gqu;)E z%|G6M_?3~ydRAUef=8L64Qc8oa~+s>*+wqD38U=c{Yz$h{v^DcZPhrMZ*JSR9r;P) z)di;xz9c2u}<$dc}oLBn2PFlKyS1){T5~t6FWoZ$<3tsuH5>vj{vD5t!o=EHF`yDh= z<(7KCgXb{eJDyf|vBh^gEqqnV_c=kjD=qb2XBVA$VZTgC-%hUseh4^I{0q`<_+AH$ z`h?>lkxJutJHh*%11Tx^ewfDZb_TuU@j`lG+PNN-cfwS^-#PFJ=l8H}#5Kg6%Hcb$ z1`3XVcP{)!Xj|EC_%4gzX5rmS&+qEcN6U`pCk9bJnCA=gE}t9yubsFv2LYbhwvKiE zo^ZGNCrkEO<@!wzI=|y!|5QMDTXn-+1KKLuM%1b9pYy;xBfl>>jd{TxOpo2C`_(CJ zRoYCttW%yRsN2>&F(pr7%p|kGP25j&F0`Ga`!Q4fErI_1pJmDnBkx?;mUcINGxE$x z{zE=DT#IIZBh%0S(EXch)-O*#fNglEf_HONTRj2$KH)p`yU#vq|0Zv|NAKwz0O)}= z6OVnEb8hBO(m(Z$tAE1m-zUvJbsp~#Z{r;y?>;y1{_v))JIpcIdHM#FwY2{6{xR`; znCVAT&MDh=TiUvIKWSysx7(X#+^_R2h<=+f_dsa3wM~5Hf#1_V-b?zNXUY`UTi+A+ zn|so-$71VY?rGwg0W>=%&&=ZuXwMxi+P3@6J-?yC+t1skY}vody86c((hceXlLzi| zlgB}M@`ZP*N_TL~nwI^W4BoYF^LIy05Av|C@4KjPxM#V?U2>w^q@`N+?6GLMH&eX9 zy@NhB=tr4woi}+*>(7Q$HuSj7)RaL@zh9arr*?mKnQMSI#OnUX?4Nngsks;X_0PGn zX&>g+B(|F>VaDU^i_8s=^ zx&zWYaNT)-mqzO(@M`t^wL$BD)IFb-AKY=R={>H;>PiQF1Ddrz8xL>cw+D_LXQJKi zw92$i_3xpsaT9j8#?CQtALuS8t zgN|K3wJm#o7grjH`5hzfBEMVel!Ex$fAY<4H=px&@ZXaJG4Jo=#^zAJ-6b(axD~$L zW$Fd*cX?&Ox4XEiNWR-`3&Yy5N)mryKmMkc{i(@cRQ?p?KJz(?b!zGM`Zsaa^f0*&AO%8hOJ+`;~8qF7dZq_l*Pk+&$ zn|gzGtgq?7j#jogb)l&Tb$eHOY4M+bpxZOmdziX|X9~XY`ab9O;^IHvamSE>-Kr^Ne$VGwhJ_qwBMz zTwksS=Mnp$o28A7Lz!Nhd23+bybEUR;99qXH>-?Y#BU+0cdK>4!2J#)->mA$x2p$; F{|~!ycEJDu literal 0 HcmV?d00001 diff --git a/Tools/CMake/torque3d.cmake b/Tools/CMake/torque3d.cmake new file mode 100644 index 000000000..3a47a751a --- /dev/null +++ b/Tools/CMake/torque3d.cmake @@ -0,0 +1,476 @@ +# TODO: fmod support + +# Prefs +add_definitions(-DTORQUE_SHADERGEN) +add_definitions(-DINITGUID) +add_definitions(-DNTORQUE_SHARED) + +# flags found in the code: +# TORQUE_TGB_ONLY +# TORQUE_PLAYER +# TORQUE_DEMO_PURCHASE +# TORQUE_ENABLE_VFS +# TORQUE_DEBUG +# TORQUE_MINIDUMP +# TORQUE_RELEASE +# TORQUE_DEBUG_GUARD +# _XBOX +# TORQUE_OS_MAC +# TORQUE_TOOLS +# TORQUE_SHIPPING +# TORQUE_DEBUG_NET +# TORQUE_OS_LINUX +# TORQUE_OS_OPENBSD +# TORQUE_OS_XENON +# TORQUE_OS_PS3 +# TORQUE_OS_MAC +# TORQUE_OS_WIN32 +# TORQUE_ENGINE_PRODUCT +# DEBUG_AST_NODES +# TORQUE_ENABLE_SCRIPTASSERTS +# TORQUE_NO_DSO_GENERATION +# DOXYGENIZING +# TORQUE2D_TOOLS_FIXME +# DEBUG_SPEW +# DISABLE_DEBUG_SPEW +# TORQUE_NET_STATS +# TORQUE_DEBUG_NET +# TORQUE_LOCBUILD +# USE_UNDOCUMENTED_GROUP +# _PACK_BUG_WORKAROUNDS +# PLATFORM_LITTLE_ENDIAN +# TORQUE_BIG_ENDIAN +# NO_BLUR +# FRAMEALLOCATOR_DEBUG_GUARD +# TORQUE_DEBUG_RES_MANAGER +# TORQUE_ENABLE_UTF16_CACHE +# TORQUE_ENABLE_THREAD_STATIC_METRICS +# TORQUE_ENABLE_THREAD_STATICS +# WANT_TO_SIMULATE_UI_ON_360 +# TORQUE_GATHER_METRICS +# D3DXSHADER_USE_LEGACY_D3DX9_31_DLL +# TORQUE_ENABLE_CSF_GENERATION +# TORQUE_DEBUG_RENDER +# TORQUE_ENABLE_PROFILER +# TORQUE_ENABLE_PROFILE_PATH +# DOXYGEN +# TORQUE_COLLADA +# TORQUE_COMPILER_GCC +# LOG_INPUT +# TORQUE_SUPPORTS_GCC_INLINE_X86_ASM +# TORQUE_ENABLE_ASSERTS +# DLL_CODE +# TORQUE_USE_WINSOCK +# TORQUE_DISABLE_PC_CONNECTIVITY +# TORQUE_SUPPORTS_VC_INLINE_X86_ASM +# TORQUE_64BITS +# APSTUDIO_INVOKED +# APSTUDIO_READONLY_SYMBOLS +# INITGUID +# LOG_MOUSEMOVE +# TORQUE_COMPILER_MINGW +# TORQUE_LIB +# TORQUE_SHARED +# TORQUE_DEDICATED +# TORQUE_ENGINE +# TORQUE_OGGVORBIS +# TORQUE_EXTENDED_MOVE +# DECALMANAGER_DEBUG +# TORQUE_DEBUG_NET_MOVES +# TORQUE_DEMO_WATERMARK +# TORQUE_CPU_X86 +# USE_MEM_VERTEX_BUFFERS +# TORQUE_MAX_LIB +# TORQUE_ENABLE_SAMPLING +#TORQUE_DISABLE_FIND_ROOT_WITHIN_ZIP + +option(TORQUE_MULTITHREAD "Multi Threading" ON) +option(TORQUE_DISABLE_MEMORY_MANAGER "Disable memory manager" OFF) +option(TORQUE_DISABLE_VIRTUAL_MOUNT_SYSTEM "Disable virtual mount system" OFF) +option(TORQUE_PLAYER "Playback only?" OFF) +option(TORQUE_TOOLS "Enable or disable the tools" ON) +option(TORQUE_ENABLE_PROFILER "Enable or disable the profiler" OFF) +option(TORQUE_DEBUG "T3D Debug mode" OFF) +option(TORQUE_SHIPPING "T3D Shipping build?" OFF) +option(TORQUE_DEBUG_NET "debug network" OFF) +option(TORQUE_DEBUG_NET_MOVES "debug network moves" OFF) +#option(DEBUG_SPEW "more debug" OFF) + +set(TORQUE_APP_NAME "Default" CACHE STRING "the app name") +set(TORQUE_APP_VERSION "1000" CACHE STRING "the app version: major * 1000 + minor * 100 + revision * 10.") +set(TORQUE_APP_VERSION_STRING "1.0" CACHE STRING "the app version string") + +# MAXPACKETSIZE +# TORQUE_GATHER_METRICS +# TORQUE_DEBUG_GUARD +# TORQUE_ENABLE_THREAD_STATICS +# TORQUE_ENABLE_THREAD_STATIC_METRICS +# FRAMEALLOCATOR_DEBUG_GUARD + +set(TORQUE_NO_DSO_GENERATION ON) + + +add_definitions(-DUNICODE) +add_definitions(-D_UNICODE) # for VS +add_definitions(-DTORQUE_UNICODE) +#add_definitions(-DTORQUE_SHARED) + +# for libTomCrypt +add_definitions(-DLTC_NO_PROTOTYPES) + + +add_definitions(-D_CRT_SECURE_NO_WARNINGS) +add_definitions(-D_CRT_SECURE_NO_DEPRECATE) + +# warning C4800: 'XXX' : forcing value to bool 'true' or 'false' (performance warning) +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -wd4800") + +# warning C4018: '<' : signed/unsigned mismatch +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -wd4018") + +# warning C4244: 'initializing' : conversion from 'XXX' to 'XXX', possible loss of data +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -wd4244") + +include_directories(${projectSrcDir}) +include_directories(${srcDir}/) +include_directories(${libDir}/lmpg) +include_directories(${libDir}/lpng) +include_directories(${libDir}/ljpeg) +include_directories(${libDir}/lungif) +include_directories(${libDir}/zlib) +include_directories(${libDir}/) # for tinyxml +include_directories(${libDir}/tinyxml) +include_directories(${libDir}/squish) +include_directories(${libDir}/convexDecomp) +include_directories(${libDir}/libogg/include) + +set(t3dLibs "") +set(t3dLibDirs "") + +# external things +include_directories($ENV{DXSDK_DIR}/Include) +set(t3dLibDirs "${t3dLibs};$ENV{DXSDK_DIR}/Lib/x86") + +# module helper + +set(t "") +addLibPath(t "${srcDir}/app" GLOB_RECURSE) + +# lighting +option(TORQUE_ADVANCED_LIGHTING "Advanced Lighting" ON) +if(TORQUE_ADVANCED_LIGHTING) + add_definitions(-DTORQUE_ADVANCED_LIGHTING) + addLibPath(t "${srcDir}/lighting/advanced" GLOB) + addLibPath(t "${srcDir}/lighting/shadowMap" GLOB_RECURSE) + addLibPath(t "${srcDir}/lighting/advanced/hlsl" GLOB_RECURSE) + #addLibPath(t "${srcDir}/lighting/advanced/glsl" GLOB_RECURSE) +endif() +option(TORQUE_BASIC_LIGHTING "Basic Lighting" ON) +if(TORQUE_BASIC_LIGHTING) + add_definitions(-DTORQUE_BASIC_LIGHTING) + addLibPath(t "${srcDir}/lighting/basic" GLOB_RECURSE) + addLibPath(t "${srcDir}/lighting/shadowMap" GLOB_RECURSE) +endif() + +# opcode +include_directories(${libDir}/opcode) +add_definitions(-DBAN_OPCODE_AUTOLINK) +add_definitions(-DICE_NO_DLL) +add_definitions(-DTORQUE_OPCODE) + + +# collada +add_definitions(-DTORQUE_COLLADA) +add_definitions(-DDOM_INCLUDE_TINYXML) +add_definitions(-DPCRE_STATIC) +addLibPath(t "${srcDir}/ts/collada" GLOB_RECURSE) +addLibPath(t "${srcDir}/ts/loader" GLOB_RECURSE) +include_directories(${libDir}/collada/include) +include_directories(${libDir}/collada/include/1.4) + +# DirectX Sound +option(TORQUE_SFX_DirectX "DirectX Sound" ON) +if(TORQUE_SFX_DirectX) + addLibPath(t "${srcDir}/sfx/dsound" GLOB_RECURSE) + addLibPath(t "${srcDir}/sfx/xaudio" GLOB_RECURSE) + set(t3dLibs "${t3dLibs};x3daudio.lib") +endif() + +# OpenAL +option(TORQUE_SFX_OPENAL "OpenAL Sound" ON) +if(TORQUE_SFX_OPENAL) + addLibPath(t "${srcDir}/sfx/openal" GLOB) + #addLibPath(t "${srcDir}/sfx/openal/mac" GLOB) + addLibPath(t "${srcDir}/sfx/openal/win32" GLOB) + include_directories(${libDir}/openal/win32) +endif() + +# vorbis +option(TORQUE_SFX_VORBIS "Vorbis Sound" ON) +if(TORQUE_SFX_VORBIS) + add_definitions(-DTORQUE_OGGVORBIS) + include_directories(${libDir}/libvorbis/include) + set(t3dLibs "${t3dLibs};libvorbis;libogg") +endif() + +# Theora +option(TORQUE_THEORA "Theora Video Support" ON) +if(TORQUE_THEORA) + add_definitions(-DTORQUE_OGGTHEORA) + add_definitions(-DTORQUE_OGGVORIBS) + addLibPath(t "${srcDir}/core/ogg" GLOB) + addLibPath(t "${srcDir}/gfx/video" GLOB) + addLibPath(t "${srcDir}/gui/theora" GLOB) + include_directories(${libDir}/libtheora/include) + set(t3dLibs "${t3dLibs};libtheora") +endif() + +# Always on things +addLibPath(t "${srcDir}/sfx/media" GLOB) +addLibPath(t "${srcDir}/sfx/null" GLOB) +addLibPath(t "${srcDir}/sfx" GLOB) + +# Components +addLibPath(t "${srcDir}/component" GLOB) +addLibPath(t "${srcDir}/component/interfaces" GLOB) + + +addLibPath(t "${srcDir}/console" GLOB) +addLibPath(t "${srcDir}/core" GLOB) +addLibPath(t "${srcDir}/core/stream" GLOB) +addLibPath(t "${srcDir}/core/strings" GLOB) +addLibPath(t "${srcDir}/core/util" GLOB) +addLibPath(t "${srcDir}/core/util/test" GLOB) +addLibPath(t "${srcDir}/core/util/journal" GLOB) +addLibPath(t "${srcDir}/core/util/journal/test" GLOB) +addLibPath(t "${srcDir}/core/util/zip" GLOB) +addLibPath(t "${srcDir}/core/util/zip/unitTests" GLOB) +addLibPath(t "${srcDir}/core/util/zip/compressors" GLOB) +addLibPath(t "${srcDir}/i18n" GLOB) +addLibPath(t "${srcDir}/sim" GLOB) +#addLibPath(t "${srcDir}/unit/tests" GLOB) +addLibPath(t "${srcDir}/unit" GLOB) +addLibPath(t "${srcDir}/util" GLOB) +addLibPath(t "${srcDir}/windowManager" GLOB) +addLibPath(t "${srcDir}/windowManager/torque" GLOB) +addLibPath(t "${srcDir}/windowManager/test" GLOB) +addLibPath(t "${srcDir}/math" GLOB) +addLibPath(t "${srcDir}/math/util" GLOB) +addLibPath(t "${srcDir}/math/test" GLOB) +addLibPath(t "${srcDir}/platform" GLOB) +addLibPath(t "${srcDir}/cinterface" GLOB) + +addLibPath(t "${srcDir}/platform/nativeDialogs" GLOB) +addLibPath(t "${srcDir}/platform/menus" GLOB) +addLibPath(t "${srcDir}/platform/test" GLOB) + +addLibPath(t "${srcDir}/platform/threads" GLOB) +addLibPath(t "${srcDir}/platform/async" GLOB) +addLibPath(t "${srcDir}/platform/input" GLOB) +addLibPath(t "${srcDir}/platform/output" GLOB) +addLibPath(t "${srcDir}/app" GLOB) +addLibPath(t "${srcDir}/app/net" GLOB) + +addLibPath(t "${srcDir}/util/messaging" GLOB) + +# win32 +if(WIN32) + #add_definitions(-DTORQUE_OS_WIN32) + addLibPath(t "${srcDir}/platformWin32" GLOB) + addLibPath(t "${srcDir}/platformWin32/nativeDialogs" GLOB) + addLibPath(t "${srcDir}/platformWin32/menus" GLOB) + addLibPath(t "${srcDir}/platformWin32/threads" GLOB) + addLibPath(t "${srcDir}/platformWin32/videoInfo" GLOB) + addLibPath(t "${srcDir}/platformWin32/minidump" GLOB) + addLibPath(t "${srcDir}/windowManager/win32" GLOB) + #addLibPath(t "${srcDir}/gfx/D3D8" GLOB) + addLibPath(t "${srcDir}/gfx/D3D" GLOB) + addLibPath(t "${srcDir}/gfx/D3D9" GLOB) + addLibPath(t "${srcDir}/gfx/D3D9/pc" GLOB) + addLibPath(t "${srcDir}/shaderGen/HLSL" GLOB) + addLibPath(t "${srcDir}/terrain/hlsl" GLOB) + addLibPath(t "${srcDir}/forest/hlsl" GLOB) +endif() + +# mac +if(APPLE) + #add_definitions(-DTORQUE_OS_MAC) + addLibPath(t "${srcDir}/platformMac" GLOB) + addLibPath(t "${srcDir}/platformMac/menus" GLOB) + addLibPath(t "${srcDir}/platformPOSIX" GLOB) + addLibPath(t "${srcDir}/windowManager/mac" GLOB) + addLibPath(t "${srcDir}/gfx/gl" GLOB) + addLibPath(t "${srcDir}/gfx/gl/ggl" GLOB) + addLibPath(t "${srcDir}/gfx/gl/ggl/mac" GLOB) + addLibPath(t "${srcDir}/gfx/gl/ggl/generated" GLOB) + addLibPath(t "${srcDir}/shaderGen/GLSL" GLOB) + addLibPath(t "${srcDir}/terrain/glsl" GLOB) + addLibPath(t "${srcDir}/forest/glsl" GLOB) +endif() + +# xbox360 +if(XBOX360) + #add_definitions(-D_XBOX) + #add_definitions(-DTORQUE_OS_XENON) + addLibPath(t "${srcDir}/platformXbox" GLOB) + addLibPath(t "${srcDir}/platformXbox/threads" GLOB) + addLibPath(t "${srcDir}/windowManager/360" GLOB) + addLibPath(t "${srcDir}/gfx/D3D9" GLOB) + addLibPath(t "${srcDir}/gfx/D3D9/360" GLOB) + addLibPath(t "${srcDir}/shaderGen/HLSL" GLOB) + addLibPath(t "${srcDir}/shaderGen/360" GLOB) + addLibPath(t "${srcDir}/ts/arch/360" GLOB) + addLibPath(t "${srcDir}/terrain/hlsl" GLOB) + addLibPath(t "${srcDir}/forest/hlsl" GLOB) +endif() + +# ps3 +if(PS3) + #add_definitions(-DTORQUE_OS_PS3) + addLibPath(t "${srcDir}/platformPS3" GLOB) + addLibPath(t "${srcDir}/platformPS3/threads" GLOB) + addLibPath(t "${srcDir}/windowManager/ps3" GLOB) + # GFX - GGL + addLibPath(t "${srcDir}/gfx/gl" GLOB) + addLibPath(t "${srcDir}/gfx/gl/ggl" GLOB) + addLibPath(t "${srcDir}/gfx/gl/ggl/ps3" GLOB) + addLibPath(t "${srcDir}/gfx/gl/ggl/generated" GLOB) + addLibPath(t "${srcDir}/shaderGen/GLSL" GLOB) + addLibPath(t "${srcDir}/ts/arch/ps3" GLOB) + addLibPath(t "${srcDir}/terrain/glsl" GLOB) + addLibPath(t "${srcDir}/forest/glsl" GLOB) +endif() + +if(UNIX) + #add_definitions(-DTORQUE_OS_LINUX) + # linux_dedicated + addLibPath(t "${srcDir}/windowManager/dedicated" GLOB) + # linux + addLibPath(t "${srcDir}/platformX86UNIX" GLOB) + addLibPath(t "${srcDir}/platformX86UNIX/threads" GLOB) + addLibPath(t "${srcDir}/platformPOSIX" GLOB) + # GFX - GGL + addLibPath(t "${srcDir}/gfx/gl" GLOB) + addLibPath(t "${srcDir}/gfx/gl/ggl" GLOB) + addLibPath(t "${srcDir}/gfx/gl/ggl/x11" GLOB) # This one is not yet implemented! + addLibPath(t "${srcDir}/gfx/gl/ggl/generated" GLOB) + addLibPath(t "${srcDir}/shaderGen/GLSL" GLOB) + addLibPath(t "${srcDir}/terrain/glsl" GLOB) + addLibPath(t "${srcDir}/forest/glsl" GLOB) +endif() + +# GFX +addLibPath(t "${srcDir}/gfx/Null" GLOB) +addLibPath(t "${srcDir}/gfx/test" GLOB) +addLibPath(t "${srcDir}/gfx/bitmap" GLOB) +addLibPath(t "${srcDir}/gfx/bitmap/loaders" GLOB) +addLibPath(t "${srcDir}/gfx/util" GLOB) +addLibPath(t "${srcDir}/gfx/video" GLOB) +addLibPath(t "${srcDir}/gfx" GLOB) +addLibPath(t "${srcDir}/shaderGen" GLOB) + +# GFX - Sim dependent +addLibPath(t "${srcDir}/gfx/sim" GLOB) + +# GUI +addLibPath(t "${srcDir}/gui/buttons" GLOB) +addLibPath(t "${srcDir}/gui/containers" GLOB) +addLibPath(t "${srcDir}/gui/controls" GLOB) + +addLibPath(t "${srcDir}/gui/core" GLOB) +addLibPath(t "${srcDir}/gui/game" GLOB) +addLibPath(t "${srcDir}/gui/shiny" GLOB) +addLibPath(t "${srcDir}/gui/utility" GLOB) +addLibPath(t "${srcDir}/gui" GLOB) + +# Include tools for non-tool builds (or define player if a tool build) +addLibPath(t "${srcDir}/gui/worldEditor" GLOB) +addLibPath(t "${srcDir}/environment/editors" GLOB) +addLibPath(t "${srcDir}/forest/editor" GLOB) +addLibPath(t "${srcDir}/gui/editor" GLOB) +addLibPath(t "${srcDir}/gui/editor/inspector" GLOB) + +# T3D +# 3D +addLibPath(t "${srcDir}/collision" GLOB) +addLibPath(t "${srcDir}/materials" GLOB) +addLibPath(t "${srcDir}/lighting" GLOB) +addLibPath(t "${srcDir}/lighting/common" GLOB) +addLibPath(t "${srcDir}/renderInstance" GLOB) +addLibPath(t "${srcDir}/scene" GLOB) +addLibPath(t "${srcDir}/scene/culling" GLOB) +addLibPath(t "${srcDir}/scene/zones" GLOB) +addLibPath(t "${srcDir}/scene/mixin" GLOB) +addLibPath(t "${srcDir}/shaderGen" GLOB) +addLibPath(t "${srcDir}/terrain" GLOB) +addLibPath(t "${srcDir}/environment" GLOB) + +addLibPath(t "${srcDir}/forest" GLOB) +addLibPath(t "${srcDir}/forest/ts" GLOB) + +addLibPath(t "${srcDir}/ts" GLOB) +addLibPath(t "${srcDir}/ts/arch" GLOB) +addLibPath(t "${srcDir}/physics" GLOB) +addLibPath(t "${srcDir}/gui/3d" GLOB) +addLibPath(t "${srcDir}/postFx" GLOB) + +# 3D game +addLibPath(t "${srcDir}/T3D" GLOB) +addLibPath(t "${srcDir}/T3D/examples" GLOB) +addLibPath(t "${srcDir}/T3D/fps" GLOB) +addLibPath(t "${srcDir}/T3D/fx" GLOB) +addLibPath(t "${srcDir}/T3D/vehicles" GLOB) +addLibPath(t "${srcDir}/T3D/physics" GLOB) +addLibPath(t "${srcDir}/T3D/decal" GLOB) +addLibPath(t "${srcDir}/T3D/sfx" GLOB) +addLibPath(t "${srcDir}/T3D/gameBase" GLOB) +addLibPath(t "${srcDir}/T3D/turret" GLOB) + +# HIFI NET +option(TORQUE_HIFI "HIFI? support" OFF) +if(TORQUE_HIFI) + add_definitions(-DTORQUE_HIFI_NET) + addLibPath(t "${srcDir}/T3D/gameBase/hifi" GLOB) +endif() + +# extended move +option(TORQUE_EXTENDED_MOVE "Extended move support" OFF) +if(TORQUE_EXTENDED_MOVE) + add_definitions(-DTORQUE_EXTENDED_MOVE) + addLibPath(t "${srcDir}/T3D/gameBase/extended" GLOB) +else() + addLibPath(t "${srcDir}/T3D/gameBase/std" GLOB) +endif() + +if(WIN32) + # copy pasted from T3D build system, some might not be needed + set(t3dLibs "${t3dLibs};COMCTL32.LIB;COMDLG32.LIB;USER32.LIB;ADVAPI32.LIB;GDI32.LIB;WINMM.LIB;WSOCK32.LIB;vfw32.lib;Imm32.lib;d3d9.lib;d3dx9.lib;DxErr.lib;ole32.lib;shell32.lib;oleaut32.lib;version.lib") + + # add windows rc file for the icon + set(t "${t};${projectSrcDir}/torque-win.rc") +endif() + +# add main/main.cpp +set(t "${t};${srcDir}/main/main.cpp;") + +# configure only once +if(NOT EXISTS ${projectSrcDir}/torqueConfig.h) + message(STATUS "writing ${projectSrcDir}/torqueConfig.h") + CONFIGURE_FILE(${cmakeDir}/torqueConfig.h.in ${projectSrcDir}/torqueConfig.h) + CONFIGURE_FILE(${cmakeDir}/torque-win.rc.in ${projectSrcDir}/torque-win.rc) + CONFIGURE_FILE(${cmakeDir}/torque.ico ${projectSrcDir}/torque.ico COPYONLY) +endif() + + +# internal libs +set(t3dLibs "${t3dLibs};lmng;lpng;lungif;ljpeg;zlib;tinyxml;opcode;squish;collada;pcre;convexDecomp") +#set(t3dLibs "${t3dLibs};libtorque3d") +link_directories(${t3dLibDirs}) + +#addLibraryFinal("${t}" "libtorque3d") +addExecutableFinal("${t}" "torque3d" "${srcDir}") + +target_link_libraries(torque3d ${t3dLibs}) + +INSTALL_TARGETS(/ torque3d) +INSTALL_FILES(/ FILES ${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game/) diff --git a/Tools/CMake/torqueConfig.h.in b/Tools/CMake/torqueConfig.h.in new file mode 100644 index 000000000..38dab6c70 --- /dev/null +++ b/Tools/CMake/torqueConfig.h.in @@ -0,0 +1,202 @@ +//----------------------------------------------------------------------------- +// Copyright (c) 2012 GarageGames, LLC +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to +// deal in the Software without restriction, including without limitation the +// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +// sell copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +// IN THE SOFTWARE. +//----------------------------------------------------------------------------- + +#pragma once + +//----------------------------------------------------------------------------- +//Hi, and welcome to the Torque Config file. +// +//This file is a central reference for the various configuration flags that +//you'll be using when controlling what sort of a Torque build you have. In +//general, the information here is global for your entire codebase, applying +//not only to your game proper, but also to all of your tools. + +/// What's the name of your application? Used in a variety of places. +#define TORQUE_APP_NAME "Empty" + +/// What version of the application specific source code is this? +/// +/// Version number is major * 1000 + minor * 100 + revision * 10. +#define TORQUE_APP_VERSION @TORQUE_APP_VERSION@ + +/// Human readable application version string. +#define TORQUE_APP_VERSION_STRING "@TORQUE_APP_VERSION_STRING@" + +/// Define me if you want to enable multithreading support. +#cmakedefine TORQUE_MULTITHREAD + +/// Define me if you want to disable Torque memory manager. +#cmakedefine TORQUE_DISABLE_MEMORY_MANAGER + +/// Define me if you want to disable the virtual mount system. +#cmakedefine TORQUE_DISABLE_VIRTUAL_MOUNT_SYSTEM + +/// Define me if you want to disable looking for the root of a given path +/// within a zip file. This means that the zip file name itself must be +/// the root of the path. Requires the virtual mount system to be active. +#cmakedefine TORQUE_DISABLE_FIND_ROOT_WITHIN_ZIP + +//Uncomment this define if you want to use the alternative zip support where you can +//define your directories and files inside the zip just like you would on disk +//instead of the default zip support that treats the zip as an extra directory. +#cmakedefine TORQUE_ZIP_DISK_LAYOUT + +/// Define me if you don't want Torque to compile dso's +#cmakedefine TORQUE_NO_DSO_GENERATION + +// Define me if this build is a tools build +#cmakedefine TORQUE_PLAYER +#cmakedefine TORQUE_TOOLS + +/// Define me if you want to enable the profiler. +/// See also the TORQUE_SHIPPING block below +#cmakedefine TORQUE_ENABLE_PROFILER + +/// Define me to enable debug mode; enables a great number of additional +/// sanity checks, as well as making AssertFatal and AssertWarn do something. +/// This is usually defined by the build target. +#cmakedefine TORQUE_DEBUG +#cmakedefine DEBUG_SPEW + +/// Define me if this is a shipping build; if defined I will instruct Torque +/// to batten down some hatches and generally be more "final game" oriented. +/// Notably this disables a liberal resource manager file searching, and +/// console help strings. +#cmakedefine TORQUE_SHIPPING + +/// Define me to enable a variety of network debugging aids. +/// +/// - NetConnection packet logging. +/// - DebugChecksum guards to detect mismatched pack/unpacks. +/// - Detection of invalid destination ghosts. +/// +#cmakedefine TORQUE_DEBUG_NET + +/// Define me to enable detailed console logging of net moves. +#cmakedefine TORQUE_DEBUG_NET_MOVES + +/// Enable this define to change the default Net::MaxPacketDataSize +/// Do this at your own risk since it has the potential to cause packets +/// to be split up by old routers and Torque does not have a mechanism to +/// stitch split packets back together. Using this define can be very useful +/// in controlled network hardware environments (like a LAN) or for singleplayer +/// games (like BArricade and its large paths) +//#define MAXPACKETSIZE 1500 + +/// Modify me to enable metric gathering code in the renderers. +/// +/// 0 does nothing; higher numbers enable higher levels of metric gathering. +//#define TORQUE_GATHER_METRICS 0 + +/// Define me if you want to enable debug guards in the memory manager. +/// +/// Debug guards are known values placed before and after every block of +/// allocated memory. They are checked periodically by Memory::validate(), +/// and if they are modified (indicating an access to memory the app doesn't +/// "own"), an error is flagged (ie, you'll see a crash in the memory +/// manager's validate code). Using this and a debugger, you can track down +/// memory corruption issues quickly. +//#define TORQUE_DEBUG_GUARD + +/// Define me if you want to enable instanced-static behavior +//#define TORQUE_ENABLE_THREAD_STATICS + +/// Define me if you want to gather static-usage metrics +//#define TORQUE_ENABLE_THREAD_STATIC_METRICS + +/// Define me if you want to enable debug guards on the FrameAllocator. +/// +/// This is similar to the above memory manager guards, but applies only to the +/// fast FrameAllocator temporary pool memory allocations. The guards are only +/// checked when the FrameAllocator frees memory (when it's water mark changes). +/// This is most useful for detecting buffer overruns when using FrameTemp<> . +/// A buffer overrun in the FrameAllocator is unlikely to cause a crash, but may +/// still result in unexpected behavior, if other FrameTemp's are stomped. +//#define FRAMEALLOCATOR_DEBUG_GUARD + +/// This #define is used by the FrameAllocator to set the size of the frame. +/// +/// It was previously set to 3MB but I've increased it to 16MB due to the +/// FrameAllocator being used as temporary storage for bitmaps in the D3D9 +/// texture manager. +#define TORQUE_FRAME_SIZE 16 << 20 + +// Finally, we define some dependent #defines. This enables some subsidiary +// functionality to get automatically turned on in certain configurations. + +#ifdef TORQUE_DEBUG + + #define TORQUE_GATHER_METRICS 0 + #define TORQUE_ENABLE_PROFILE_PATH + #ifndef TORQUE_DEBUG_GUARD + #define TORQUE_DEBUG_GUARD + #endif + #ifndef TORQUE_NET_STATS + #define TORQUE_NET_STATS + #endif + + // Enables the C++ assert macros AssertFatal, AssertWarn, etc. + #define TORQUE_ENABLE_ASSERTS + +#endif + +#ifdef TORQUE_RELEASE + // If it's not DEBUG, it's a RELEASE build, put appropriate things here. +#endif + +#ifdef TORQUE_SHIPPING + + // TORQUE_SHIPPING flags here. + +#else + + // Enable the profiler by default, if we're not doing a shipping build. + #define TORQUE_ENABLE_PROFILER + + // Enable the TorqueScript assert() instruction if not shipping. + #define TORQUE_ENABLE_SCRIPTASSERTS + + // We also enable GFX debug events for use in Pix and other graphics + // debugging tools. + #define TORQUE_ENABLE_GFXDEBUGEVENTS + +#endif + +#ifdef TORQUE_TOOLS +# define TORQUE_INSTANCE_EXCLUSION "TorqueToolsTest" +#else +# define TORQUE_INSTANCE_EXCLUSION "TorqueTest" +#endif + +// Someday, it might make sense to do some pragma magic here so we error +// on inconsistent flags. + +// The Xbox360 has it's own profiling tools, the Torque Profiler should not be used +#ifdef TORQUE_OS_XENON +# ifdef TORQUE_ENABLE_PROFILER +# undef TORQUE_ENABLE_PROFILER +# endif +# +# ifdef TORQUE_ENABLE_PROFILE_PATH +# undef TORQUE_ENABLE_PROFILE_PATH +#endif +#endif diff --git a/Tools/CMake/zlib.cmake b/Tools/CMake/zlib.cmake new file mode 100644 index 000000000..808d41d34 --- /dev/null +++ b/Tools/CMake/zlib.cmake @@ -0,0 +1,3 @@ +project(zlib) + +addLibrary("${libDir}/zlib" zlib GLOB) From 0dc0e701145440f0bf85b6a258e4a4c6b858706f Mon Sep 17 00:00:00 2001 From: Thomas Fischer Date: Tue, 18 Mar 2014 20:12:13 +0100 Subject: [PATCH 02/10] improved config format, eaiser to be used now --- Tools/CMake/basics.cmake | 129 ++++-- Tools/CMake/collada.cmake | 17 +- Tools/CMake/convexDecomp.cmake | 2 +- Tools/CMake/libogg.cmake | 6 +- Tools/CMake/libtheora.cmake | 10 +- Tools/CMake/libvorbis.cmake | 9 +- Tools/CMake/ljpeg.cmake | 2 +- Tools/CMake/lmng.cmake | 9 +- Tools/CMake/lpng.cmake | 7 +- Tools/CMake/lungif.cmake | 4 +- Tools/CMake/opcode.cmake | 8 +- Tools/CMake/pcre.cmake | 7 +- Tools/CMake/squish.cmake | 2 +- Tools/CMake/tinyxml.cmake | 2 +- Tools/CMake/torque3d.cmake | 704 +++++++++++++++------------------ Tools/CMake/torqueConfig.h.in | 2 +- Tools/CMake/zlib.cmake | 2 +- 17 files changed, 462 insertions(+), 460 deletions(-) diff --git a/Tools/CMake/basics.cmake b/Tools/CMake/basics.cmake index 2c710432c..b09d6845c 100644 --- a/Tools/CMake/basics.cmake +++ b/Tools/CMake/basics.cmake @@ -15,62 +15,123 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${projectOutDir}/bin) SET(CMAKE_INSTALL_PREFIX "${projectOutDir}" CACHE INTERNAL "Prefix prepended to install directories" FORCE) - -function(addLibPath varname dir mode) +# finds and adds sources files in a folder +macro(addPath dir) set(tmpa "") - file(${mode} tmpa + file(GLOB tmpa ${dir}/*.cpp ${dir}/*.c ${dir}/*.cc ${dir}/*.h) - set("${varname}" "${${varname}};${tmpa}" PARENT_SCOPE) -endfunction() + LIST(APPEND ${PROJECT_NAME}_files "${tmpa}") + LIST(APPEND ${PROJECT_NAME}_paths "${dir}") + #set(t "${${t}};${tmpa}") +endmacro() -function(addLibraryFinal paths libName relDir) - foreach(f ${paths}) +# adds a file to the sources +macro(addFile filename) + LIST(APPEND ${PROJECT_NAME}_files "${filename}") +endmacro() + +# finds and adds sources files in a folder recursively +macro(addPathRec dir) + set(tmpa "") + file(GLOB_RECURSE tmpa + ${dir}/*.cpp + ${dir}/*.c + ${dir}/*.cc + ${dir}/*.h) + LIST(APPEND ${PROJECT_NAME}_files "${tmpa}") + LIST(APPEND ${PROJECT_NAME}_paths "${dir}") +endmacro() + +# adds a definition +macro(addDef def) + set_property(TARGET ${PROJECT_NAME} APPEND PROPERTY COMPILE_DEFINITIONS "${def}") +endmacro() + +# adds an include path +macro(addInclude incPath) + #message(STATUS "${PROJECT_NAME} : add include path : ${incPath}") + set_property(TARGET ${PROJECT_NAME} APPEND PROPERTY INCLUDE_DIRECTORIES "${incPath}") +endmacro() + +# adds a library to link against +macro(addLib lib) + #message(STATUS "${PROJECT_NAME} : add lib : ${lib}") + target_link_libraries(${PROJECT_NAME} "${lib}") +endmacro() + +# adds a path to search for libs +macro(addLibPath dir) + link_directories(${dir}) +endmacro() + +# creates a proper filter for VS +macro(generateFilters relDir) + foreach(f ${${PROJECT_NAME}_files}) # Get the path of the file relative to ${DIRECTORY}, # then alter it (not compulsory) file(RELATIVE_PATH SRCGR ${relDir} ${f}) - set(SRCGR "${libName}/${SRCGR}") + set(SRCGR "${PROJECT_NAME}/${SRCGR}") # Extract the folder, ie remove the filename part string(REGEX REPLACE "(.*)(/[^/]*)$" "\\1" SRCGR ${SRCGR}) + # do not have any ../ dirs + string(REPLACE "../" "" SRCGR ${SRCGR}) # Source_group expects \\ (double antislash), not / (slash) string(REPLACE / \\ SRCGR ${SRCGR}) + #STRING(REPLACE "//" "/" SRCGR ${SRCGR}) + #message(STATUS "FILE: ${f} -> ${SRCGR}") source_group("${SRCGR}" FILES ${f}) endforeach() - add_library("${libName}" STATIC ${paths}) -endfunction() +endmacro() -function(addExecutableFinal paths exeName relDir) - foreach(f ${paths}) - # Get the path of the file relative to ${DIRECTORY}, - # then alter it (not compulsory) - file(RELATIVE_PATH SRCGR ${relDir} ${f}) - set(SRCGR "${exeName}/${SRCGR}") - # Extract the folder, ie remove the filename part - string(REGEX REPLACE "(.*)(/[^/]*)$" "\\1" SRCGR ${SRCGR}) - # Source_group expects \\ (double antislash), not / (slash) - string(REPLACE / \\ SRCGR ${SRCGR}) - source_group("${SRCGR}" FILES ${f}) - endforeach() - add_executable("${exeName}" WIN32 ${paths}) -endfunction() - -function(addLibrary dirs libName mode) - set(tmp "") +# macro to add a static library +macro(addStaticLib) + # more paths? + if(${ARGC} GREATER 0) + foreach(dir ${ARGV0}) + addPath("${dir}") + endforeach() + endif() + # now inspect the paths we got set(firstDir "") - #message(STATUS "${libName}") - foreach(dir ${dirs}) + foreach(dir ${${PROJECT_NAME}_paths}) if("${firstDir}" STREQUAL "") set(firstDir "${dir}") endif() - addLibPath(tmp "${dir}" ${mode}) endforeach() - addLibraryFinal("${tmp}" "${libName}" "${firstDir}") - foreach(dir ${dirs}) - set_property(TARGET "${libName}" PROPERTY INCLUDE_DIRECTORIES "${dir}") + generateFilters("${firstDir}") + add_library("${PROJECT_NAME}" STATIC ${${PROJECT_NAME}_files}) + # omg - only use the first folder ... otehrwise we get lots of header name collisions + #foreach(dir ${${PROJECT_NAME}_paths}) + addInclude("${firstDir}") + #endforeach() +endmacro() + +# macro to add an executable +macro(addExecutable) + # more paths? + if(${ARGC} GREATER 0) + foreach(dir ${ARGV0}) + addPath("${dir}") + endforeach() + endif() + # now inspect the paths we got + set(firstDir "") + foreach(dir ${${PROJECT_NAME}_paths}) + if("${firstDir}" STREQUAL "") + set(firstDir "${dir}") + endif() endforeach() -endfunction() + generateFilters("${firstDir}") + add_executable("${PROJECT_NAME}" WIN32 ${${PROJECT_NAME}_files}) + # omg - only use the first folder ... otehrwise we get lots of header name collisions + #foreach(dir ${${PROJECT_NAME}_paths}) + addInclude("${firstDir}") + #endforeach() +endmacro() + if(WIN32) # default disabled warnings: 4018;4100;4121;4127;4130;4244;4245;4389;4511;4512;4800; diff --git a/Tools/CMake/collada.cmake b/Tools/CMake/collada.cmake index 8f6b899b0..a875643d8 100644 --- a/Tools/CMake/collada.cmake +++ b/Tools/CMake/collada.cmake @@ -1,6 +1,17 @@ project(collada) -addLibrary("${libDir}/collada/src/1.4/dom;${libDir}/collada/src/dae;${libDir}/collada/src/modules/LIBXMLPlugin;${libDir}/collada/src/modules/stdErrPlugin;${libDir}/collada/src/modules/STLDatabase" collada GLOB) +addPath("${libDir}/collada/src/1.4/dom") +addPath("${libDir}/collada/src/dae") +addPath("${libDir}/collada/src/modules/LIBXMLPlugin") +addPath("${libDir}/collada/src/modules/stdErrPlugin") +addPath("${libDir}/collada/src/modules/STLDatabase") -set_property(TARGET collada PROPERTY COMPILE_DEFINITIONS DOM_INCLUDE_TINYXML PCRE_STATIC) -set_property(TARGET collada PROPERTY INCLUDE_DIRECTORIES ${libDir}/collada/include ${libDir}/collada/include/1.4 ${libDir}/pcre ${libDir}/tinyxml) +addStaticLib() + +addDef(DOM_INCLUDE_TINYXML) +addDef(PCRE_STATIC) + +addInclude(${libDir}/collada/include) +addInclude(${libDir}/collada/include/1.4) +addInclude(${libDir}/pcre) +addInclude(${libDir}/tinyxml) diff --git a/Tools/CMake/convexDecomp.cmake b/Tools/CMake/convexDecomp.cmake index c19f7a0ca..eb98a6144 100644 --- a/Tools/CMake/convexDecomp.cmake +++ b/Tools/CMake/convexDecomp.cmake @@ -1,3 +1,3 @@ project(convexDecomp) -addLibrary("${libDir}/convexDecomp" convexDecomp GLOB) +addStaticLib("${libDir}/convexDecomp") diff --git a/Tools/CMake/libogg.cmake b/Tools/CMake/libogg.cmake index bef661868..fc83fd957 100644 --- a/Tools/CMake/libogg.cmake +++ b/Tools/CMake/libogg.cmake @@ -1,5 +1,7 @@ project(libogg) -addLibrary("${libDir}/libogg" libogg GLOB_RECURSE) +addPathRec("${libDir}/libogg") -set_property(TARGET libogg PROPERTY INCLUDE_DIRECTORIES ${libDir}/libogg/include ) +addStaticLib() + +addInclude(${libDir}/libogg/include) diff --git a/Tools/CMake/libtheora.cmake b/Tools/CMake/libtheora.cmake index 61179d4c7..0e6dda65d 100644 --- a/Tools/CMake/libtheora.cmake +++ b/Tools/CMake/libtheora.cmake @@ -1,6 +1,10 @@ project(libtheora) -addLibrary("${libDir}/libtheora" libtheora GLOB_RECURSE) +addPathRec("${libDir}/libtheora") -set_property(TARGET libtheora PROPERTY COMPILE_DEFINITIONS TORQUE_OGGTHEORA TORQUE_OGGVORIBS) -set_property(TARGET libtheora PROPERTY INCLUDE_DIRECTORIES ${libDir}/libtheora/include ${libDir}/libogg/include) +addStaticLib() + +addDef(TORQUE_OGGTHEORA) +addDef(TORQUE_OGGVORIBS) +addInclude(${libDir}/libogg/include) +addInclude(${libDir}/libtheora/include) diff --git a/Tools/CMake/libvorbis.cmake b/Tools/CMake/libvorbis.cmake index 087d0b505..9f1e2eb4a 100644 --- a/Tools/CMake/libvorbis.cmake +++ b/Tools/CMake/libvorbis.cmake @@ -1,6 +1,9 @@ project(libvorbis) -addLibrary("${libDir}/libvorbis" libvorbis GLOB_RECURSE) +addPathRec("${libDir}/libvorbis") -set_property(TARGET libvorbis PROPERTY COMPILE_DEFINITIONS TORQUE_OGGVORBIS) -set_property(TARGET libvorbis PROPERTY INCLUDE_DIRECTORIES ${libDir}/libvorbis/include ${libDir}/libogg/include ) +addStaticLib() + +addDef(TORQUE_OGGVORBIS) +addInclude(${libDir}/libvorbis/include) +addInclude(${libDir}/libogg/include) diff --git a/Tools/CMake/ljpeg.cmake b/Tools/CMake/ljpeg.cmake index 2210e73a3..d518cb504 100644 --- a/Tools/CMake/ljpeg.cmake +++ b/Tools/CMake/ljpeg.cmake @@ -1,3 +1,3 @@ project(ljpeg) -addLibrary("${libDir}/ljpeg" ljpeg GLOB) +addStaticLib("${libDir}/ljpeg") diff --git a/Tools/CMake/lmng.cmake b/Tools/CMake/lmng.cmake index 98261254a..27da5444f 100644 --- a/Tools/CMake/lmng.cmake +++ b/Tools/CMake/lmng.cmake @@ -1,6 +1,9 @@ project(lmng) -addLibrary("${libDir}/lmng" lmng GLOB) +addStaticLib("${libDir}/${PROJECT_NAME}") -set_property(TARGET lmng PROPERTY COMPILE_DEFINITIONS MNG_OPTIMIZE_OBJCLEANUP) -set_property(TARGET lmng PROPERTY INCLUDE_DIRECTORIES ${libDir}/lpng ${libDir}/zlib ${libDir}/ljpeg) +addDef(MNG_OPTIMIZE_OBJCLEANUP) + +addInclude(${libDir}/lpng) +addInclude(${libDir}/zlib) +addInclude(${libDir}/ljpeg) diff --git a/Tools/CMake/lpng.cmake b/Tools/CMake/lpng.cmake index e50a3651b..0dbb15501 100644 --- a/Tools/CMake/lpng.cmake +++ b/Tools/CMake/lpng.cmake @@ -1,6 +1,7 @@ project(lpng) -addLibrary("${libDir}/lpng" lpng GLOB) +addStaticLib("${libDir}/${PROJECT_NAME}") -#set_property(TARGET lpng PROPERTY COMPILE_DEFINITIONS PNG_NO_ASSEMBLER_CODE) -set_property(TARGET lpng PROPERTY INCLUDE_DIRECTORIES ${libDir}/zlib) +# addDef(PNG_NO_ASSEMBLER_CODE) + +addInclude(${libDir}/zlib) diff --git a/Tools/CMake/lungif.cmake b/Tools/CMake/lungif.cmake index 1f4831bdc..2ede4dd3a 100644 --- a/Tools/CMake/lungif.cmake +++ b/Tools/CMake/lungif.cmake @@ -1,5 +1,5 @@ project(lungif) -addLibrary("${libDir}/lungif" lungif GLOB) +addStaticLib("${libDir}/${PROJECT_NAME}") -set_property(TARGET lungif PROPERTY COMPILE_DEFINITIONS _GBA_NO_FILEIO) +addDef(_GBA_NO_FILEIO) diff --git a/Tools/CMake/opcode.cmake b/Tools/CMake/opcode.cmake index a03187277..df94b0c7f 100644 --- a/Tools/CMake/opcode.cmake +++ b/Tools/CMake/opcode.cmake @@ -1,5 +1,9 @@ project(opcode) -addLibrary("${libDir}/opcode;${libDir}/opcode/Ice" opcode GLOB) +addPath("${libDir}/${PROJECT_NAME}") +addPath("${libDir}/${PROJECT_NAME}/Ice") -set_property(TARGET opcode PROPERTY COMPILE_DEFINITIONS TORQUE_OPCODE ICE_NO_DLL) +addStaticLib() + +addDef(TORQUE_OPCODE) +addDef(ICE_NO_DLL) diff --git a/Tools/CMake/pcre.cmake b/Tools/CMake/pcre.cmake index 2315d6c4c..0f86b50b2 100644 --- a/Tools/CMake/pcre.cmake +++ b/Tools/CMake/pcre.cmake @@ -1,7 +1,8 @@ project(pcre) -addLibrary("${libDir}/pcre" pcre GLOB) +addStaticLib("${libDir}/pcre") + +addDef(PCRE_STATIC) +addDef(HAVE_CONFIG_H) -set_property(TARGET pcre PROPERTY COMPILE_DEFINITIONS PCRE_STATIC HAVE_CONFIG_H) set_property(TARGET pcre PROPERTY COMPILE_FLAGS /TP) #/TP = compile as C++ -set_property(TARGET pcre PROPERTY INCLUDE_DIRECTORIES ${libDir}/pcre) diff --git a/Tools/CMake/squish.cmake b/Tools/CMake/squish.cmake index 284cc46b7..acc3332bc 100644 --- a/Tools/CMake/squish.cmake +++ b/Tools/CMake/squish.cmake @@ -1,3 +1,3 @@ project(squish) -addLibrary("${libDir}/squish" squish GLOB) +addStaticLib("${libDir}/${PROJECT_NAME}") diff --git a/Tools/CMake/tinyxml.cmake b/Tools/CMake/tinyxml.cmake index 4aaa29714..c17dfbba1 100644 --- a/Tools/CMake/tinyxml.cmake +++ b/Tools/CMake/tinyxml.cmake @@ -1,3 +1,3 @@ project(tinyxml) -addLibrary("${libDir}/tinyxml" tinyxml GLOB) +addStaticLib("${libDir}/${PROJECT_NAME}") diff --git a/Tools/CMake/torque3d.cmake b/Tools/CMake/torque3d.cmake index 3a47a751a..62f413a80 100644 --- a/Tools/CMake/torque3d.cmake +++ b/Tools/CMake/torque3d.cmake @@ -1,89 +1,22 @@ +project(torque3d) + # TODO: fmod support -# Prefs -add_definitions(-DTORQUE_SHADERGEN) -add_definitions(-DINITGUID) -add_definitions(-DNTORQUE_SHARED) - -# flags found in the code: -# TORQUE_TGB_ONLY -# TORQUE_PLAYER -# TORQUE_DEMO_PURCHASE -# TORQUE_ENABLE_VFS -# TORQUE_DEBUG -# TORQUE_MINIDUMP -# TORQUE_RELEASE -# TORQUE_DEBUG_GUARD -# _XBOX -# TORQUE_OS_MAC -# TORQUE_TOOLS -# TORQUE_SHIPPING -# TORQUE_DEBUG_NET -# TORQUE_OS_LINUX -# TORQUE_OS_OPENBSD -# TORQUE_OS_XENON -# TORQUE_OS_PS3 -# TORQUE_OS_MAC -# TORQUE_OS_WIN32 -# TORQUE_ENGINE_PRODUCT -# DEBUG_AST_NODES -# TORQUE_ENABLE_SCRIPTASSERTS -# TORQUE_NO_DSO_GENERATION -# DOXYGENIZING -# TORQUE2D_TOOLS_FIXME -# DEBUG_SPEW -# DISABLE_DEBUG_SPEW -# TORQUE_NET_STATS -# TORQUE_DEBUG_NET -# TORQUE_LOCBUILD -# USE_UNDOCUMENTED_GROUP -# _PACK_BUG_WORKAROUNDS -# PLATFORM_LITTLE_ENDIAN -# TORQUE_BIG_ENDIAN -# NO_BLUR -# FRAMEALLOCATOR_DEBUG_GUARD -# TORQUE_DEBUG_RES_MANAGER -# TORQUE_ENABLE_UTF16_CACHE -# TORQUE_ENABLE_THREAD_STATIC_METRICS -# TORQUE_ENABLE_THREAD_STATICS -# WANT_TO_SIMULATE_UI_ON_360 -# TORQUE_GATHER_METRICS -# D3DXSHADER_USE_LEGACY_D3DX9_31_DLL -# TORQUE_ENABLE_CSF_GENERATION -# TORQUE_DEBUG_RENDER -# TORQUE_ENABLE_PROFILER -# TORQUE_ENABLE_PROFILE_PATH -# DOXYGEN -# TORQUE_COLLADA -# TORQUE_COMPILER_GCC -# LOG_INPUT -# TORQUE_SUPPORTS_GCC_INLINE_X86_ASM -# TORQUE_ENABLE_ASSERTS -# DLL_CODE -# TORQUE_USE_WINSOCK -# TORQUE_DISABLE_PC_CONNECTIVITY -# TORQUE_SUPPORTS_VC_INLINE_X86_ASM -# TORQUE_64BITS -# APSTUDIO_INVOKED -# APSTUDIO_READONLY_SYMBOLS -# INITGUID -# LOG_MOUSEMOVE -# TORQUE_COMPILER_MINGW -# TORQUE_LIB -# TORQUE_SHARED -# TORQUE_DEDICATED -# TORQUE_ENGINE -# TORQUE_OGGVORBIS -# TORQUE_EXTENDED_MOVE -# DECALMANAGER_DEBUG -# TORQUE_DEBUG_NET_MOVES -# TORQUE_DEMO_WATERMARK -# TORQUE_CPU_X86 -# USE_MEM_VERTEX_BUFFERS -# TORQUE_MAX_LIB -# TORQUE_ENABLE_SAMPLING -#TORQUE_DISABLE_FIND_ROOT_WITHIN_ZIP +############################################################################### +# modules +############################################################################### +option(TORQUE_SFX_VORBIS "Vorbis Sound" ON) +option(TORQUE_ADVANCED_LIGHTING "Advanced Lighting" ON) +option(TORQUE_BASIC_LIGHTING "Basic Lighting" ON) +option(TORQUE_THEORA "Theora Video Support" ON) +option(TORQUE_SFX_DirectX "DirectX Sound" ON) +option(TORQUE_SFX_OPENAL "OpenAL Sound" ON) +option(TORQUE_HIFI "HIFI? support" OFF) +option(TORQUE_EXTENDED_MOVE "Extended move support" OFF) +############################################################################### +# options +############################################################################### option(TORQUE_MULTITHREAD "Multi Threading" ON) option(TORQUE_DISABLE_MEMORY_MANAGER "Disable memory manager" OFF) option(TORQUE_DISABLE_VIRTUAL_MOUNT_SYSTEM "Disable virtual mount system" OFF) @@ -94,364 +27,257 @@ option(TORQUE_DEBUG "T3D Debug mode" OFF) option(TORQUE_SHIPPING "T3D Shipping build?" OFF) option(TORQUE_DEBUG_NET "debug network" OFF) option(TORQUE_DEBUG_NET_MOVES "debug network moves" OFF) -#option(DEBUG_SPEW "more debug" OFF) +option(TORQUE_ENABLE_ASSERTS "enables or disable asserts" OFF) +#option(DEBUG_SPEW "more debug" OFF) set(TORQUE_APP_NAME "Default" CACHE STRING "the app name") set(TORQUE_APP_VERSION "1000" CACHE STRING "the app version: major * 1000 + minor * 100 + revision * 10.") set(TORQUE_APP_VERSION_STRING "1.0" CACHE STRING "the app version string") - -# MAXPACKETSIZE -# TORQUE_GATHER_METRICS -# TORQUE_DEBUG_GUARD -# TORQUE_ENABLE_THREAD_STATICS -# TORQUE_ENABLE_THREAD_STATIC_METRICS -# FRAMEALLOCATOR_DEBUG_GUARD - set(TORQUE_NO_DSO_GENERATION ON) - -add_definitions(-DUNICODE) -add_definitions(-D_UNICODE) # for VS -add_definitions(-DTORQUE_UNICODE) -#add_definitions(-DTORQUE_SHARED) - -# for libTomCrypt -add_definitions(-DLTC_NO_PROTOTYPES) - - -add_definitions(-D_CRT_SECURE_NO_WARNINGS) -add_definitions(-D_CRT_SECURE_NO_DEPRECATE) - # warning C4800: 'XXX' : forcing value to bool 'true' or 'false' (performance warning) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -wd4800") - # warning C4018: '<' : signed/unsigned mismatch set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -wd4018") - # warning C4244: 'initializing' : conversion from 'XXX' to 'XXX', possible loss of data set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -wd4244") -include_directories(${projectSrcDir}) -include_directories(${srcDir}/) -include_directories(${libDir}/lmpg) -include_directories(${libDir}/lpng) -include_directories(${libDir}/ljpeg) -include_directories(${libDir}/lungif) -include_directories(${libDir}/zlib) -include_directories(${libDir}/) # for tinyxml -include_directories(${libDir}/tinyxml) -include_directories(${libDir}/squish) -include_directories(${libDir}/convexDecomp) -include_directories(${libDir}/libogg/include) +if(WIN32) + link_directories($ENV{DXSDK_DIR}/Lib/x86) +endif() -set(t3dLibs "") -set(t3dLibDirs "") - -# external things -include_directories($ENV{DXSDK_DIR}/Include) -set(t3dLibDirs "${t3dLibs};$ENV{DXSDK_DIR}/Lib/x86") - -# module helper - -set(t "") -addLibPath(t "${srcDir}/app" GLOB_RECURSE) +############################################################################### +# Always enabled paths first +############################################################################### +addPath("${srcDir}/") # must come first :) +addPathRec("${srcDir}/app") +addPath("${srcDir}/sfx/media") +addPath("${srcDir}/sfx/null") +addPath("${srcDir}/sfx") +addPath("${srcDir}/component") +addPath("${srcDir}/component/interfaces") +addPath("${srcDir}/console") +addPath("${srcDir}/core") +addPath("${srcDir}/core/stream") +addPath("${srcDir}/core/strings") +addPath("${srcDir}/core/util") +addPath("${srcDir}/core/util/test") +addPath("${srcDir}/core/util/journal") +addPath("${srcDir}/core/util/journal/test") +addPath("${srcDir}/core/util/zip") +addPath("${srcDir}/core/util/zip/unitTests") +addPath("${srcDir}/core/util/zip/compressors") +addPath("${srcDir}/i18n") +addPath("${srcDir}/sim") +#addPath("${srcDir}/unit/tests") +addPath("${srcDir}/unit") +addPath("${srcDir}/util") +addPath("${srcDir}/windowManager") +addPath("${srcDir}/windowManager/torque") +addPath("${srcDir}/windowManager/test") +addPath("${srcDir}/math") +addPath("${srcDir}/math/util") +addPath("${srcDir}/math/test") +addPath("${srcDir}/platform") +addPath("${srcDir}/cinterface") +addPath("${srcDir}/platform/nativeDialogs") +addPath("${srcDir}/platform/menus") +addPath("${srcDir}/platform/test") +addPath("${srcDir}/platform/threads") +addPath("${srcDir}/platform/async") +addPath("${srcDir}/platform/input") +addPath("${srcDir}/platform/output") +addPath("${srcDir}/app") +addPath("${srcDir}/app/net") +addPath("${srcDir}/util/messaging") +addPath("${srcDir}/gfx/Null") +addPath("${srcDir}/gfx/test") +addPath("${srcDir}/gfx/bitmap") +addPath("${srcDir}/gfx/bitmap/loaders") +addPath("${srcDir}/gfx/util") +addPath("${srcDir}/gfx/video") +addPath("${srcDir}/gfx") +addPath("${srcDir}/shaderGen") +addPath("${srcDir}/gfx/sim") +addPath("${srcDir}/gui/buttons") +addPath("${srcDir}/gui/containers") +addPath("${srcDir}/gui/controls") +addPath("${srcDir}/gui/core") +addPath("${srcDir}/gui/game") +addPath("${srcDir}/gui/shiny") +addPath("${srcDir}/gui/utility") +addPath("${srcDir}/gui") +addPath("${srcDir}/collision") +addPath("${srcDir}/materials") +addPath("${srcDir}/lighting") +addPath("${srcDir}/lighting/common") +addPath("${srcDir}/renderInstance") +addPath("${srcDir}/scene") +addPath("${srcDir}/scene/culling") +addPath("${srcDir}/scene/zones") +addPath("${srcDir}/scene/mixin") +addPath("${srcDir}/shaderGen") +addPath("${srcDir}/terrain") +addPath("${srcDir}/environment") +addPath("${srcDir}/forest") +addPath("${srcDir}/forest/ts") +addPath("${srcDir}/ts") +addPath("${srcDir}/ts/arch") +addPath("${srcDir}/physics") +addPath("${srcDir}/gui/3d") +addPath("${srcDir}/postFx") +addPath("${srcDir}/T3D") +addPath("${srcDir}/T3D/examples") +addPath("${srcDir}/T3D/fps") +addPath("${srcDir}/T3D/fx") +addPath("${srcDir}/T3D/vehicles") +addPath("${srcDir}/T3D/physics") +addPath("${srcDir}/T3D/decal") +addPath("${srcDir}/T3D/sfx") +addPath("${srcDir}/T3D/gameBase") +addPath("${srcDir}/T3D/turret") +addPath("${srcDir}/main/") +addPathRec("${srcDir}/ts/collada") +addPathRec("${srcDir}/ts/loader") +############################################################################### +# modular paths +############################################################################### # lighting -option(TORQUE_ADVANCED_LIGHTING "Advanced Lighting" ON) if(TORQUE_ADVANCED_LIGHTING) - add_definitions(-DTORQUE_ADVANCED_LIGHTING) - addLibPath(t "${srcDir}/lighting/advanced" GLOB) - addLibPath(t "${srcDir}/lighting/shadowMap" GLOB_RECURSE) - addLibPath(t "${srcDir}/lighting/advanced/hlsl" GLOB_RECURSE) - #addLibPath(t "${srcDir}/lighting/advanced/glsl" GLOB_RECURSE) + addPath("${srcDir}/lighting/advanced") + addPathRec("${srcDir}/lighting/shadowMap") + addPathRec("${srcDir}/lighting/advanced/hlsl") + #addPathRec("${srcDir}/lighting/advanced/glsl") endif() -option(TORQUE_BASIC_LIGHTING "Basic Lighting" ON) if(TORQUE_BASIC_LIGHTING) - add_definitions(-DTORQUE_BASIC_LIGHTING) - addLibPath(t "${srcDir}/lighting/basic" GLOB_RECURSE) - addLibPath(t "${srcDir}/lighting/shadowMap" GLOB_RECURSE) + addPathRec("${srcDir}/lighting/basic") + addPathRec("${srcDir}/lighting/shadowMap") endif() -# opcode -include_directories(${libDir}/opcode) -add_definitions(-DBAN_OPCODE_AUTOLINK) -add_definitions(-DICE_NO_DLL) -add_definitions(-DTORQUE_OPCODE) - - -# collada -add_definitions(-DTORQUE_COLLADA) -add_definitions(-DDOM_INCLUDE_TINYXML) -add_definitions(-DPCRE_STATIC) -addLibPath(t "${srcDir}/ts/collada" GLOB_RECURSE) -addLibPath(t "${srcDir}/ts/loader" GLOB_RECURSE) -include_directories(${libDir}/collada/include) -include_directories(${libDir}/collada/include/1.4) - # DirectX Sound -option(TORQUE_SFX_DirectX "DirectX Sound" ON) if(TORQUE_SFX_DirectX) - addLibPath(t "${srcDir}/sfx/dsound" GLOB_RECURSE) - addLibPath(t "${srcDir}/sfx/xaudio" GLOB_RECURSE) - set(t3dLibs "${t3dLibs};x3daudio.lib") + addPathRec("${srcDir}/sfx/dsound") + addPathRec("${srcDir}/sfx/xaudio") endif() # OpenAL -option(TORQUE_SFX_OPENAL "OpenAL Sound" ON) if(TORQUE_SFX_OPENAL) - addLibPath(t "${srcDir}/sfx/openal" GLOB) - #addLibPath(t "${srcDir}/sfx/openal/mac" GLOB) - addLibPath(t "${srcDir}/sfx/openal/win32" GLOB) - include_directories(${libDir}/openal/win32) -endif() - -# vorbis -option(TORQUE_SFX_VORBIS "Vorbis Sound" ON) -if(TORQUE_SFX_VORBIS) - add_definitions(-DTORQUE_OGGVORBIS) - include_directories(${libDir}/libvorbis/include) - set(t3dLibs "${t3dLibs};libvorbis;libogg") + addPath("${srcDir}/sfx/openal") + #addPath("${srcDir}/sfx/openal/mac") + addPath("${srcDir}/sfx/openal/win32") endif() # Theora -option(TORQUE_THEORA "Theora Video Support" ON) if(TORQUE_THEORA) - add_definitions(-DTORQUE_OGGTHEORA) - add_definitions(-DTORQUE_OGGVORIBS) - addLibPath(t "${srcDir}/core/ogg" GLOB) - addLibPath(t "${srcDir}/gfx/video" GLOB) - addLibPath(t "${srcDir}/gui/theora" GLOB) - include_directories(${libDir}/libtheora/include) - set(t3dLibs "${t3dLibs};libtheora") + addPath("${srcDir}/core/ogg") + addPath("${srcDir}/gfx/video") + addPath("${srcDir}/gui/theora") endif() -# Always on things -addLibPath(t "${srcDir}/sfx/media" GLOB) -addLibPath(t "${srcDir}/sfx/null" GLOB) -addLibPath(t "${srcDir}/sfx" GLOB) +# Include tools for non-tool builds (or define player if a tool build) +if(TORQUE_TOOLS) + addPath("${srcDir}/gui/worldEditor") + addPath("${srcDir}/environment/editors") + addPath("${srcDir}/forest/editor") + addPath("${srcDir}/gui/editor") + addPath("${srcDir}/gui/editor/inspector") +endif() -# Components -addLibPath(t "${srcDir}/component" GLOB) -addLibPath(t "${srcDir}/component/interfaces" GLOB) +if(TORQUE_HIFI) + addPath("${srcDir}/T3D/gameBase/hifi") +endif() + +if(TORQUE_EXTENDED_MOVE) + addPath("${srcDir}/T3D/gameBase/extended") +else() + addPath("${srcDir}/T3D/gameBase/std") +endif() - -addLibPath(t "${srcDir}/console" GLOB) -addLibPath(t "${srcDir}/core" GLOB) -addLibPath(t "${srcDir}/core/stream" GLOB) -addLibPath(t "${srcDir}/core/strings" GLOB) -addLibPath(t "${srcDir}/core/util" GLOB) -addLibPath(t "${srcDir}/core/util/test" GLOB) -addLibPath(t "${srcDir}/core/util/journal" GLOB) -addLibPath(t "${srcDir}/core/util/journal/test" GLOB) -addLibPath(t "${srcDir}/core/util/zip" GLOB) -addLibPath(t "${srcDir}/core/util/zip/unitTests" GLOB) -addLibPath(t "${srcDir}/core/util/zip/compressors" GLOB) -addLibPath(t "${srcDir}/i18n" GLOB) -addLibPath(t "${srcDir}/sim" GLOB) -#addLibPath(t "${srcDir}/unit/tests" GLOB) -addLibPath(t "${srcDir}/unit" GLOB) -addLibPath(t "${srcDir}/util" GLOB) -addLibPath(t "${srcDir}/windowManager" GLOB) -addLibPath(t "${srcDir}/windowManager/torque" GLOB) -addLibPath(t "${srcDir}/windowManager/test" GLOB) -addLibPath(t "${srcDir}/math" GLOB) -addLibPath(t "${srcDir}/math/util" GLOB) -addLibPath(t "${srcDir}/math/test" GLOB) -addLibPath(t "${srcDir}/platform" GLOB) -addLibPath(t "${srcDir}/cinterface" GLOB) - -addLibPath(t "${srcDir}/platform/nativeDialogs" GLOB) -addLibPath(t "${srcDir}/platform/menus" GLOB) -addLibPath(t "${srcDir}/platform/test" GLOB) - -addLibPath(t "${srcDir}/platform/threads" GLOB) -addLibPath(t "${srcDir}/platform/async" GLOB) -addLibPath(t "${srcDir}/platform/input" GLOB) -addLibPath(t "${srcDir}/platform/output" GLOB) -addLibPath(t "${srcDir}/app" GLOB) -addLibPath(t "${srcDir}/app/net" GLOB) - -addLibPath(t "${srcDir}/util/messaging" GLOB) - -# win32 +############################################################################### +# platform specific things +############################################################################### if(WIN32) - #add_definitions(-DTORQUE_OS_WIN32) - addLibPath(t "${srcDir}/platformWin32" GLOB) - addLibPath(t "${srcDir}/platformWin32/nativeDialogs" GLOB) - addLibPath(t "${srcDir}/platformWin32/menus" GLOB) - addLibPath(t "${srcDir}/platformWin32/threads" GLOB) - addLibPath(t "${srcDir}/platformWin32/videoInfo" GLOB) - addLibPath(t "${srcDir}/platformWin32/minidump" GLOB) - addLibPath(t "${srcDir}/windowManager/win32" GLOB) - #addLibPath(t "${srcDir}/gfx/D3D8" GLOB) - addLibPath(t "${srcDir}/gfx/D3D" GLOB) - addLibPath(t "${srcDir}/gfx/D3D9" GLOB) - addLibPath(t "${srcDir}/gfx/D3D9/pc" GLOB) - addLibPath(t "${srcDir}/shaderGen/HLSL" GLOB) - addLibPath(t "${srcDir}/terrain/hlsl" GLOB) - addLibPath(t "${srcDir}/forest/hlsl" GLOB) + addPath("${srcDir}/platformWin32") + addPath("${srcDir}/platformWin32/nativeDialogs") + addPath("${srcDir}/platformWin32/menus") + addPath("${srcDir}/platformWin32/threads") + addPath("${srcDir}/platformWin32/videoInfo") + addPath("${srcDir}/platformWin32/minidump") + addPath("${srcDir}/windowManager/win32") + #addPath("${srcDir}/gfx/D3D8") + addPath("${srcDir}/gfx/D3D") + addPath("${srcDir}/gfx/D3D9") + addPath("${srcDir}/gfx/D3D9/pc") + addPath("${srcDir}/shaderGen/HLSL") + addPath("${srcDir}/terrain/hlsl") + addPath("${srcDir}/forest/hlsl") + # add windows rc file for the icon + addFile("${projectSrcDir}/torque-win.rc") endif() -# mac if(APPLE) - #add_definitions(-DTORQUE_OS_MAC) - addLibPath(t "${srcDir}/platformMac" GLOB) - addLibPath(t "${srcDir}/platformMac/menus" GLOB) - addLibPath(t "${srcDir}/platformPOSIX" GLOB) - addLibPath(t "${srcDir}/windowManager/mac" GLOB) - addLibPath(t "${srcDir}/gfx/gl" GLOB) - addLibPath(t "${srcDir}/gfx/gl/ggl" GLOB) - addLibPath(t "${srcDir}/gfx/gl/ggl/mac" GLOB) - addLibPath(t "${srcDir}/gfx/gl/ggl/generated" GLOB) - addLibPath(t "${srcDir}/shaderGen/GLSL" GLOB) - addLibPath(t "${srcDir}/terrain/glsl" GLOB) - addLibPath(t "${srcDir}/forest/glsl" GLOB) + addPath("${srcDir}/platformMac") + addPath("${srcDir}/platformMac/menus") + addPath("${srcDir}/platformPOSIX") + addPath("${srcDir}/windowManager/mac") + addPath("${srcDir}/gfx/gl") + addPath("${srcDir}/gfx/gl/ggl") + addPath("${srcDir}/gfx/gl/ggl/mac") + addPath("${srcDir}/gfx/gl/ggl/generated") + addPath("${srcDir}/shaderGen/GLSL") + addPath("${srcDir}/terrain/glsl") + addPath("${srcDir}/forest/glsl") endif() -# xbox360 if(XBOX360) - #add_definitions(-D_XBOX) - #add_definitions(-DTORQUE_OS_XENON) - addLibPath(t "${srcDir}/platformXbox" GLOB) - addLibPath(t "${srcDir}/platformXbox/threads" GLOB) - addLibPath(t "${srcDir}/windowManager/360" GLOB) - addLibPath(t "${srcDir}/gfx/D3D9" GLOB) - addLibPath(t "${srcDir}/gfx/D3D9/360" GLOB) - addLibPath(t "${srcDir}/shaderGen/HLSL" GLOB) - addLibPath(t "${srcDir}/shaderGen/360" GLOB) - addLibPath(t "${srcDir}/ts/arch/360" GLOB) - addLibPath(t "${srcDir}/terrain/hlsl" GLOB) - addLibPath(t "${srcDir}/forest/hlsl" GLOB) + addPath("${srcDir}/platformXbox") + addPath("${srcDir}/platformXbox/threads") + addPath("${srcDir}/windowManager/360") + addPath("${srcDir}/gfx/D3D9") + addPath("${srcDir}/gfx/D3D9/360") + addPath("${srcDir}/shaderGen/HLSL") + addPath("${srcDir}/shaderGen/360") + addPath("${srcDir}/ts/arch/360") + addPath("${srcDir}/terrain/hlsl") + addPath("${srcDir}/forest/hlsl") endif() -# ps3 if(PS3) - #add_definitions(-DTORQUE_OS_PS3) - addLibPath(t "${srcDir}/platformPS3" GLOB) - addLibPath(t "${srcDir}/platformPS3/threads" GLOB) - addLibPath(t "${srcDir}/windowManager/ps3" GLOB) - # GFX - GGL - addLibPath(t "${srcDir}/gfx/gl" GLOB) - addLibPath(t "${srcDir}/gfx/gl/ggl" GLOB) - addLibPath(t "${srcDir}/gfx/gl/ggl/ps3" GLOB) - addLibPath(t "${srcDir}/gfx/gl/ggl/generated" GLOB) - addLibPath(t "${srcDir}/shaderGen/GLSL" GLOB) - addLibPath(t "${srcDir}/ts/arch/ps3" GLOB) - addLibPath(t "${srcDir}/terrain/glsl" GLOB) - addLibPath(t "${srcDir}/forest/glsl" GLOB) + addPath("${srcDir}/platformPS3") + addPath("${srcDir}/platformPS3/threads") + addPath("${srcDir}/windowManager/ps3") + addPath("${srcDir}/gfx/gl") + addPath("${srcDir}/gfx/gl/ggl") + addPath("${srcDir}/gfx/gl/ggl/ps3") + addPath("${srcDir}/gfx/gl/ggl/generated") + addPath("${srcDir}/shaderGen/GLSL") + addPath("${srcDir}/ts/arch/ps3") + addPath("${srcDir}/terrain/glsl") + addPath("${srcDir}/forest/glsl") endif() if(UNIX) - #add_definitions(-DTORQUE_OS_LINUX) # linux_dedicated - addLibPath(t "${srcDir}/windowManager/dedicated" GLOB) + addPath("${srcDir}/windowManager/dedicated") # linux - addLibPath(t "${srcDir}/platformX86UNIX" GLOB) - addLibPath(t "${srcDir}/platformX86UNIX/threads" GLOB) - addLibPath(t "${srcDir}/platformPOSIX" GLOB) - # GFX - GGL - addLibPath(t "${srcDir}/gfx/gl" GLOB) - addLibPath(t "${srcDir}/gfx/gl/ggl" GLOB) - addLibPath(t "${srcDir}/gfx/gl/ggl/x11" GLOB) # This one is not yet implemented! - addLibPath(t "${srcDir}/gfx/gl/ggl/generated" GLOB) - addLibPath(t "${srcDir}/shaderGen/GLSL" GLOB) - addLibPath(t "${srcDir}/terrain/glsl" GLOB) - addLibPath(t "${srcDir}/forest/glsl" GLOB) + addPath("${srcDir}/platformX86UNIX") + addPath("${srcDir}/platformX86UNIX/threads") + addPath("${srcDir}/platformPOSIX") + addPath("${srcDir}/gfx/gl") + addPath("${srcDir}/gfx/gl/ggl") + addPath("${srcDir}/gfx/gl/ggl/x11") # This one is not yet implemented! + addPath("${srcDir}/gfx/gl/ggl/generated") + addPath("${srcDir}/shaderGen/GLSL") + addPath("${srcDir}/terrain/glsl") + addPath("${srcDir}/forest/glsl") endif() -# GFX -addLibPath(t "${srcDir}/gfx/Null" GLOB) -addLibPath(t "${srcDir}/gfx/test" GLOB) -addLibPath(t "${srcDir}/gfx/bitmap" GLOB) -addLibPath(t "${srcDir}/gfx/bitmap/loaders" GLOB) -addLibPath(t "${srcDir}/gfx/util" GLOB) -addLibPath(t "${srcDir}/gfx/video" GLOB) -addLibPath(t "${srcDir}/gfx" GLOB) -addLibPath(t "${srcDir}/shaderGen" GLOB) - -# GFX - Sim dependent -addLibPath(t "${srcDir}/gfx/sim" GLOB) - -# GUI -addLibPath(t "${srcDir}/gui/buttons" GLOB) -addLibPath(t "${srcDir}/gui/containers" GLOB) -addLibPath(t "${srcDir}/gui/controls" GLOB) - -addLibPath(t "${srcDir}/gui/core" GLOB) -addLibPath(t "${srcDir}/gui/game" GLOB) -addLibPath(t "${srcDir}/gui/shiny" GLOB) -addLibPath(t "${srcDir}/gui/utility" GLOB) -addLibPath(t "${srcDir}/gui" GLOB) - -# Include tools for non-tool builds (or define player if a tool build) -addLibPath(t "${srcDir}/gui/worldEditor" GLOB) -addLibPath(t "${srcDir}/environment/editors" GLOB) -addLibPath(t "${srcDir}/forest/editor" GLOB) -addLibPath(t "${srcDir}/gui/editor" GLOB) -addLibPath(t "${srcDir}/gui/editor/inspector" GLOB) - -# T3D -# 3D -addLibPath(t "${srcDir}/collision" GLOB) -addLibPath(t "${srcDir}/materials" GLOB) -addLibPath(t "${srcDir}/lighting" GLOB) -addLibPath(t "${srcDir}/lighting/common" GLOB) -addLibPath(t "${srcDir}/renderInstance" GLOB) -addLibPath(t "${srcDir}/scene" GLOB) -addLibPath(t "${srcDir}/scene/culling" GLOB) -addLibPath(t "${srcDir}/scene/zones" GLOB) -addLibPath(t "${srcDir}/scene/mixin" GLOB) -addLibPath(t "${srcDir}/shaderGen" GLOB) -addLibPath(t "${srcDir}/terrain" GLOB) -addLibPath(t "${srcDir}/environment" GLOB) - -addLibPath(t "${srcDir}/forest" GLOB) -addLibPath(t "${srcDir}/forest/ts" GLOB) - -addLibPath(t "${srcDir}/ts" GLOB) -addLibPath(t "${srcDir}/ts/arch" GLOB) -addLibPath(t "${srcDir}/physics" GLOB) -addLibPath(t "${srcDir}/gui/3d" GLOB) -addLibPath(t "${srcDir}/postFx" GLOB) - -# 3D game -addLibPath(t "${srcDir}/T3D" GLOB) -addLibPath(t "${srcDir}/T3D/examples" GLOB) -addLibPath(t "${srcDir}/T3D/fps" GLOB) -addLibPath(t "${srcDir}/T3D/fx" GLOB) -addLibPath(t "${srcDir}/T3D/vehicles" GLOB) -addLibPath(t "${srcDir}/T3D/physics" GLOB) -addLibPath(t "${srcDir}/T3D/decal" GLOB) -addLibPath(t "${srcDir}/T3D/sfx" GLOB) -addLibPath(t "${srcDir}/T3D/gameBase" GLOB) -addLibPath(t "${srcDir}/T3D/turret" GLOB) - -# HIFI NET -option(TORQUE_HIFI "HIFI? support" OFF) -if(TORQUE_HIFI) - add_definitions(-DTORQUE_HIFI_NET) - addLibPath(t "${srcDir}/T3D/gameBase/hifi" GLOB) -endif() - -# extended move -option(TORQUE_EXTENDED_MOVE "Extended move support" OFF) -if(TORQUE_EXTENDED_MOVE) - add_definitions(-DTORQUE_EXTENDED_MOVE) - addLibPath(t "${srcDir}/T3D/gameBase/extended" GLOB) -else() - addLibPath(t "${srcDir}/T3D/gameBase/std" GLOB) -endif() - -if(WIN32) - # copy pasted from T3D build system, some might not be needed - set(t3dLibs "${t3dLibs};COMCTL32.LIB;COMDLG32.LIB;USER32.LIB;ADVAPI32.LIB;GDI32.LIB;WINMM.LIB;WSOCK32.LIB;vfw32.lib;Imm32.lib;d3d9.lib;d3dx9.lib;DxErr.lib;ole32.lib;shell32.lib;oleaut32.lib;version.lib") - - # add windows rc file for the icon - set(t "${t};${projectSrcDir}/torque-win.rc") -endif() - -# add main/main.cpp -set(t "${t};${srcDir}/main/main.cpp;") +############################################################################### +############################################################################### +addExecutable() +############################################################################### +############################################################################### # configure only once if(NOT EXISTS ${projectSrcDir}/torqueConfig.h) @@ -461,16 +287,102 @@ if(NOT EXISTS ${projectSrcDir}/torqueConfig.h) CONFIGURE_FILE(${cmakeDir}/torque.ico ${projectSrcDir}/torque.ico COPYONLY) endif() +############################################################################### +# Common Libraries +############################################################################### +addLib("lmng;lpng;lungif;ljpeg;zlib;tinyxml;opcode;squish;collada;pcre;convexDecomp") -# internal libs -set(t3dLibs "${t3dLibs};lmng;lpng;lungif;ljpeg;zlib;tinyxml;opcode;squish;collada;pcre;convexDecomp") -#set(t3dLibs "${t3dLibs};libtorque3d") -link_directories(${t3dLibDirs}) +if(WIN32) + # copy pasted from T3D build system, some might not be needed + addLib("COMCTL32.LIB;COMDLG32.LIB;USER32.LIB;ADVAPI32.LIB;GDI32.LIB;WINMM.LIB;WSOCK32.LIB;vfw32.lib;Imm32.lib;d3d9.lib;d3dx9.lib;DxErr.lib;ole32.lib;shell32.lib;oleaut32.lib;version.lib") +endif() -#addLibraryFinal("${t}" "libtorque3d") -addExecutableFinal("${t}" "torque3d" "${srcDir}") +############################################################################### +# Always enabled Definitions +############################################################################### +addDef(TORQUE_SHADERGEN) +addDef(INITGUID) +addDef(NTORQUE_SHARED) +addDef(UNICODE) +addDef(_UNICODE) # for VS +addDef(TORQUE_UNICODE) +#addDef(TORQUE_SHARED) +addDef(LTC_NO_PROTOTYPES) # for libTomCrypt +addDef(BAN_OPCODE_AUTOLINK) +addDef(ICE_NO_DLL) +addDef(TORQUE_OPCODE) +addDef(TORQUE_COLLADA) +addDef(DOM_INCLUDE_TINYXML) +addDef(PCRE_STATIC) +addDef(_CRT_SECURE_NO_WARNINGS) +addDef(_CRT_SECURE_NO_DEPRECATE) -target_link_libraries(torque3d ${t3dLibs}) +############################################################################### +# Modules +############################################################################### +if(TORQUE_SFX_DirectX) + addLib(x3daudio.lib) +endif() + +if(TORQUE_ADVANCED_LIGHTING) + addDef(TORQUE_ADVANCED_LIGHTING) +endif() +if(TORQUE_BASIC_LIGHTING) + addDef(TORQUE_BASIC_LIGHTING) +endif() + +if(TORQUE_SFX_OPENAL) + addInclude("${libDir}/openal/win32") +endif() + +if(TORQUE_SFX_VORBIS) + addInclude(${libDir}/libvorbis/include) + addDef(TORQUE_OGGVORBIS) + addLib(libvorbis) + addLib(libogg) +endif() + +if(TORQUE_THEORA) + addDef(TORQUE_OGGTHEORA) + addDef(TORQUE_OGGVORIBS) + addInclude(${libDir}/libtheora/include) + addLib(libtheora) +endif() + +if(TORQUE_HIFI) + addDef(TORQUE_HIFI_NET) +endif() +if(TORQUE_EXTENDED_MOVE) + addDef(TORQUE_EXTENDED_MOVE) +endif() + +############################################################################### +# Include Paths +############################################################################### +addInclude("${projectSrcDir}") +addInclude("${srcDir}/") +addInclude("${libDir}/lmpg") +addInclude("${libDir}/lpng") +addInclude("${libDir}/ljpeg") +addInclude("${libDir}/lungif") +addInclude("${libDir}/zlib") +addInclude("${libDir}/") # for tinyxml +addInclude("${libDir}/tinyxml") +addInclude("${libDir}/squish") +addInclude("${libDir}/convexDecomp") +addInclude("${libDir}/libogg/include") +addInclude("${libDir}/opcode") +addInclude("${libDir}/collada/include") +addInclude("${libDir}/collada/include/1.4") + +# external things +if(WIN32) + set_property(TARGET ${PROJECT_NAME} APPEND PROPERTY INCLUDE_DIRECTORIES $ENV{DXSDK_DIR}/Include) +endif() + +############################################################################### +# Installation +############################################################################### INSTALL_TARGETS(/ torque3d) INSTALL_FILES(/ FILES ${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game/) diff --git a/Tools/CMake/torqueConfig.h.in b/Tools/CMake/torqueConfig.h.in index 38dab6c70..a41002240 100644 --- a/Tools/CMake/torqueConfig.h.in +++ b/Tools/CMake/torqueConfig.h.in @@ -31,7 +31,7 @@ //not only to your game proper, but also to all of your tools. /// What's the name of your application? Used in a variety of places. -#define TORQUE_APP_NAME "Empty" +#define TORQUE_APP_NAME "@TORQUE_APP_NAME@" /// What version of the application specific source code is this? /// diff --git a/Tools/CMake/zlib.cmake b/Tools/CMake/zlib.cmake index 808d41d34..6df47de04 100644 --- a/Tools/CMake/zlib.cmake +++ b/Tools/CMake/zlib.cmake @@ -1,3 +1,3 @@ project(zlib) -addLibrary("${libDir}/zlib" zlib GLOB) +addStaticLib("${libDir}/${PROJECT_NAME}") From 5ffe7abee91753b0c3511061f71b8cf7d26a76dd Mon Sep 17 00:00:00 2001 From: Thomas Fischer Date: Wed, 19 Mar 2014 02:03:45 +0100 Subject: [PATCH 03/10] cmake improvements: correct build folder without installing, merged luis resource copy fix. fixed usage of the app name. added source folder to build configuration --- Tools/CMake/basics.cmake | 27 ++++++++++++++++++--------- Tools/CMake/torque3d.cmake | 27 ++++++++++++++++++++++----- 2 files changed, 40 insertions(+), 14 deletions(-) diff --git a/Tools/CMake/basics.cmake b/Tools/CMake/basics.cmake index b09d6845c..dd5749874 100644 --- a/Tools/CMake/basics.cmake +++ b/Tools/CMake/basics.cmake @@ -2,17 +2,18 @@ project("Torque3DEngine") set(TORQUE_TEMPLATE "Empty" CACHE STRING "the template to use") -set(projectOutDir "${CMAKE_SOURCE_DIR}/My Projects/${TORQUE_TEMPLATE}") -set(projectSrcDir "${CMAKE_SOURCE_DIR}/My Projects/${TORQUE_TEMPLATE}/source") -set(libDir "${CMAKE_SOURCE_DIR}/Engine/lib") -set(srcDir "${CMAKE_SOURCE_DIR}/Engine/source") -set(cmakeDir "${CMAKE_SOURCE_DIR}/Tools/CMake") +set(projectOutDir "${CMAKE_SOURCE_DIR}/My Projects/${TORQUE_APP_NAME}") +set(projectSrcDir "${CMAKE_SOURCE_DIR}/My Projects/${TORQUE_APP_NAME}/source") +set(libDir "${CMAKE_SOURCE_DIR}/Engine/lib") +set(srcDir "${CMAKE_SOURCE_DIR}/Engine/source") +set(cmakeDir "${CMAKE_SOURCE_DIR}/Tools/CMake") # output folders -set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${projectOutDir}/bin) -set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${projectOutDir}/bin) -set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${projectOutDir}/bin) +#set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${projectOutDir}/bin) +#set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${projectOutDir}/bin) +#set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${projectOutDir}/bin) +# change the default installation path to My Projects/app name SET(CMAKE_INSTALL_PREFIX "${projectOutDir}" CACHE INTERNAL "Prefix prepended to install directories" FORCE) # finds and adds sources files in a folder @@ -156,4 +157,12 @@ if(WIN32) endif() - +# fix the debug/release subfolders on windows +if(MSVC) + FOREACH(CONF ${CMAKE_CONFIGURATION_TYPES}) + # Go uppercase (DEBUG, RELEASE...) + STRING(TOUPPER "${CONF}" CONF) + #SET("CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${CONF}" "${projectOutDir}") + SET("CMAKE_RUNTIME_OUTPUT_DIRECTORY_${CONF}" "${projectOutDir}") + ENDFOREACH() +endif() diff --git a/Tools/CMake/torque3d.cmake b/Tools/CMake/torque3d.cmake index 62f413a80..db280c172 100644 --- a/Tools/CMake/torque3d.cmake +++ b/Tools/CMake/torque3d.cmake @@ -139,6 +139,7 @@ addPath("${srcDir}/T3D/turret") addPath("${srcDir}/main/") addPathRec("${srcDir}/ts/collada") addPathRec("${srcDir}/ts/loader") +addFile("${projectSrcDir}") ############################################################################### # modular paths @@ -213,7 +214,7 @@ if(WIN32) addPath("${srcDir}/terrain/hlsl") addPath("${srcDir}/forest/hlsl") # add windows rc file for the icon - addFile("${projectSrcDir}/torque-win.rc") + addFile("${projectSrcDir}/torque.rc") endif() if(APPLE) @@ -279,18 +280,34 @@ addExecutable() ############################################################################### ############################################################################### -# configure only once +# configure file relevant files only once if(NOT EXISTS ${projectSrcDir}/torqueConfig.h) message(STATUS "writing ${projectSrcDir}/torqueConfig.h") CONFIGURE_FILE(${cmakeDir}/torqueConfig.h.in ${projectSrcDir}/torqueConfig.h) - CONFIGURE_FILE(${cmakeDir}/torque-win.rc.in ${projectSrcDir}/torque-win.rc) +endif() +if(NOT EXISTS ${projectSrcDir}/torque.ico) CONFIGURE_FILE(${cmakeDir}/torque.ico ${projectSrcDir}/torque.ico COPYONLY) endif() +if(WIN32) + if(NOT EXISTS ${projectSrcDir}/torque.rc) + CONFIGURE_FILE(${cmakeDir}/torque-win.rc.in ${projectSrcDir}/torque.rc) + endif() +endif() ############################################################################### # Common Libraries ############################################################################### -addLib("lmng;lpng;lungif;ljpeg;zlib;tinyxml;opcode;squish;collada;pcre;convexDecomp") +addLib(lmng) +addLib(lpng) +addLib(lungif) +addLib(ljpeg) +addLib(zlib) +addLib(tinyxml) +addLib(opcode) +addLib(squish) +addLib(collada) +addLib(pcre) +addLib(convexDecomp) if(WIN32) # copy pasted from T3D build system, some might not be needed @@ -384,5 +401,5 @@ endif() ############################################################################### # Installation ############################################################################### -INSTALL_TARGETS(/ torque3d) +#INSTALL_TARGETS(/ torque3d) # not needed anymore as we should directly build in there INSTALL_FILES(/ FILES ${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game/) From c5e41a61cb31fc62ae38672cceffc7990dcf24b8 Mon Sep 17 00:00:00 2001 From: Thomas Fischer Date: Wed, 19 Mar 2014 02:15:00 +0100 Subject: [PATCH 04/10] fixed projects with space in name --- My Projects/readme.txt | 1 - Tools/CMake/torque3d.cmake | 12 ++++++------ 2 files changed, 6 insertions(+), 7 deletions(-) delete mode 100644 My Projects/readme.txt diff --git a/My Projects/readme.txt b/My Projects/readme.txt deleted file mode 100644 index 299a8f786..000000000 --- a/My Projects/readme.txt +++ /dev/null @@ -1 +0,0 @@ -The Torque Toolbox places your projects here. diff --git a/Tools/CMake/torque3d.cmake b/Tools/CMake/torque3d.cmake index db280c172..26b48d6f5 100644 --- a/Tools/CMake/torque3d.cmake +++ b/Tools/CMake/torque3d.cmake @@ -281,16 +281,16 @@ addExecutable() ############################################################################### # configure file relevant files only once -if(NOT EXISTS ${projectSrcDir}/torqueConfig.h) +if(NOT EXISTS "${projectSrcDir}/torqueConfig.h") message(STATUS "writing ${projectSrcDir}/torqueConfig.h") - CONFIGURE_FILE(${cmakeDir}/torqueConfig.h.in ${projectSrcDir}/torqueConfig.h) + CONFIGURE_FILE("${cmakeDir}/torqueConfig.h.in" "${projectSrcDir}/torqueConfig.h") endif() -if(NOT EXISTS ${projectSrcDir}/torque.ico) - CONFIGURE_FILE(${cmakeDir}/torque.ico ${projectSrcDir}/torque.ico COPYONLY) +if(NOT EXISTS "${projectSrcDir}/torque.ico") + CONFIGURE_FILE("${cmakeDir}/torque.ico" "${projectSrcDir}/torque.ico" COPYONLY) endif() if(WIN32) - if(NOT EXISTS ${projectSrcDir}/torque.rc) - CONFIGURE_FILE(${cmakeDir}/torque-win.rc.in ${projectSrcDir}/torque.rc) + if(NOT EXISTS "${projectSrcDir}/torque.rc") + CONFIGURE_FILE("${cmakeDir}/torque-win.rc.in" "${projectSrcDir}/torque.rc") endif() endif() From 27bbf4758e4fab668cacc1bf732be7cf23697ade Mon Sep 17 00:00:00 2001 From: Thomas Fischer Date: Wed, 19 Mar 2014 02:20:35 +0100 Subject: [PATCH 05/10] changed readme --- My Projects/readme.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 My Projects/readme.txt diff --git a/My Projects/readme.txt b/My Projects/readme.txt new file mode 100644 index 000000000..9663bd6e3 --- /dev/null +++ b/My Projects/readme.txt @@ -0,0 +1 @@ +your projects will go in this folder \ No newline at end of file From 30717006903bc2462487e45055f26592ba7d8f88 Mon Sep 17 00:00:00 2001 From: Thomas Fischer Date: Wed, 19 Mar 2014 02:41:06 +0100 Subject: [PATCH 06/10] added more options, moved some to advanced --- Tools/CMake/basics.cmake | 42 ++++++++++++++++++++++------------- Tools/CMake/torque3d.cmake | 38 +++++++++++++++++++++++++++++-- Tools/CMake/torqueConfig.h.in | 1 + 3 files changed, 64 insertions(+), 17 deletions(-) diff --git a/Tools/CMake/basics.cmake b/Tools/CMake/basics.cmake index dd5749874..dc0d7b339 100644 --- a/Tools/CMake/basics.cmake +++ b/Tools/CMake/basics.cmake @@ -103,7 +103,11 @@ macro(addStaticLib) endif() endforeach() generateFilters("${firstDir}") - add_library("${PROJECT_NAME}" STATIC ${${PROJECT_NAME}_files}) + if(TORQUE_STATIC) + add_library("${PROJECT_NAME}" STATIC ${${PROJECT_NAME}_files}) + else() + add_library("${PROJECT_NAME}" SHARED ${${PROJECT_NAME}_files}) + endif() # omg - only use the first folder ... otehrwise we get lots of header name collisions #foreach(dir ${${PROJECT_NAME}_paths}) addInclude("${firstDir}") @@ -134,26 +138,34 @@ macro(addExecutable) endmacro() +# always static for now +set(TORQUE_STATIC ON) +#option(TORQUE_STATIC "enables or disable static" OFF) + if(WIN32) # default disabled warnings: 4018;4100;4121;4127;4130;4244;4245;4389;4511;4512;4800; - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP /O2 /Ob2 /Oi /Ot /Oy /GT /Zi /W2 /nologo /GF /EHsc /GS- /Gy- /Qpar- /arch:SSE2 /fp:fast /fp:except- /GR /Zc:wchar_t-") + set(TORQUE_CXX_FLAGS "/MP /O2 /Ob2 /Oi /Ot /Oy /GT /Zi /W2 /nologo /GF /EHsc /GS- /Gy- /Qpar- /arch:SSE2 /fp:fast /fp:except- /GR /Zc:wchar_t-" CACHE TYPE STRING) + mark_as_advanced(TORQUE_CXX_FLAGS) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${TORQUE_CXX_FLAGS}") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_CXX_FLAGS}") #set(CMAKE_EXE_LINKER_FLAGS "/OPT:NOREF") #set(STATIC_LIBRARY_FLAGS "/OPT:NOREF") # Force static runtime libraries - FOREACH(flag - CMAKE_C_FLAGS_RELEASE - CMAKE_C_FLAGS_RELWITHDEBINFO - CMAKE_C_FLAGS_DEBUG - CMAKE_C_FLAGS_DEBUG_INIT - CMAKE_CXX_FLAGS_RELEASE - CMAKE_CXX_FLAGS_RELWITHDEBINFO - CMAKE_CXX_FLAGS_DEBUG - CMAKE_CXX_FLAGS_DEBUG_INIT) - STRING(REPLACE "/MD" "/MT" "${flag}" "${${flag}}") - SET("${flag}" "${${flag}} /EHsc") - ENDFOREACH() + if(TORQUE_STATIC) + FOREACH(flag + CMAKE_C_FLAGS_RELEASE + CMAKE_C_FLAGS_RELWITHDEBINFO + CMAKE_C_FLAGS_DEBUG + CMAKE_C_FLAGS_DEBUG_INIT + CMAKE_CXX_FLAGS_RELEASE + CMAKE_CXX_FLAGS_RELWITHDEBINFO + CMAKE_CXX_FLAGS_DEBUG + CMAKE_CXX_FLAGS_DEBUG_INIT) + STRING(REPLACE "/MD" "/MT" "${flag}" "${${flag}}") + SET("${flag}" "${${flag}} /EHsc") + ENDFOREACH() + endif() endif() @@ -162,7 +174,7 @@ if(MSVC) FOREACH(CONF ${CMAKE_CONFIGURATION_TYPES}) # Go uppercase (DEBUG, RELEASE...) STRING(TOUPPER "${CONF}" CONF) - #SET("CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${CONF}" "${projectOutDir}") + SET("CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${CONF}" "${projectOutDir}") SET("CMAKE_RUNTIME_OUTPUT_DIRECTORY_${CONF}" "${projectOutDir}") ENDFOREACH() endif() diff --git a/Tools/CMake/torque3d.cmake b/Tools/CMake/torque3d.cmake index 26b48d6f5..af224fe9f 100644 --- a/Tools/CMake/torque3d.cmake +++ b/Tools/CMake/torque3d.cmake @@ -6,28 +6,60 @@ project(torque3d) # modules ############################################################################### option(TORQUE_SFX_VORBIS "Vorbis Sound" ON) +mark_as_advanced(TORQUE_SFX_VORBIS) option(TORQUE_ADVANCED_LIGHTING "Advanced Lighting" ON) +mark_as_advanced(TORQUE_ADVANCED_LIGHTING) option(TORQUE_BASIC_LIGHTING "Basic Lighting" ON) +mark_as_advanced(TORQUE_BASIC_LIGHTING) option(TORQUE_THEORA "Theora Video Support" ON) +mark_as_advanced(TORQUE_THEORA) option(TORQUE_SFX_DirectX "DirectX Sound" ON) +mark_as_advanced(TORQUE_SFX_DirectX) option(TORQUE_SFX_OPENAL "OpenAL Sound" ON) +mark_as_advanced(TORQUE_SFX_OPENAL) option(TORQUE_HIFI "HIFI? support" OFF) +mark_as_advanced(TORQUE_HIFI) option(TORQUE_EXTENDED_MOVE "Extended move support" OFF) +mark_as_advanced(TORQUE_EXTENDED_MOVE) ############################################################################### # options ############################################################################### option(TORQUE_MULTITHREAD "Multi Threading" ON) +mark_as_advanced(TORQUE_MULTITHREAD) + option(TORQUE_DISABLE_MEMORY_MANAGER "Disable memory manager" OFF) +mark_as_advanced(TORQUE_DISABLE_MEMORY_MANAGER) + option(TORQUE_DISABLE_VIRTUAL_MOUNT_SYSTEM "Disable virtual mount system" OFF) +mark_as_advanced(TORQUE_DISABLE_VIRTUAL_MOUNT_SYSTEM) + option(TORQUE_PLAYER "Playback only?" OFF) +mark_as_advanced(TORQUE_PLAYER) + option(TORQUE_TOOLS "Enable or disable the tools" ON) +mark_as_advanced(TORQUE_TOOLS) + option(TORQUE_ENABLE_PROFILER "Enable or disable the profiler" OFF) +mark_as_advanced(TORQUE_ENABLE_PROFILER) + option(TORQUE_DEBUG "T3D Debug mode" OFF) +mark_as_advanced(TORQUE_DEBUG) + option(TORQUE_SHIPPING "T3D Shipping build?" OFF) +mark_as_advanced(TORQUE_SHIPPING) + option(TORQUE_DEBUG_NET "debug network" OFF) +mark_as_advanced(TORQUE_DEBUG_NET) + option(TORQUE_DEBUG_NET_MOVES "debug network moves" OFF) +mark_as_advanced(TORQUE_DEBUG_NET_MOVES) + option(TORQUE_ENABLE_ASSERTS "enables or disable asserts" OFF) +mark_as_advanced(TORQUE_ENABLE_ASSERTS) + +option(TORQUE_DEBUG_GFX_MODE "triggers graphics debug mode" OFF) +mark_as_advanced(TORQUE_DEBUG_GFX_MODE) #option(DEBUG_SPEW "more debug" OFF) set(TORQUE_APP_NAME "Default" CACHE STRING "the app name") @@ -311,7 +343,9 @@ addLib(convexDecomp) if(WIN32) # copy pasted from T3D build system, some might not be needed - addLib("COMCTL32.LIB;COMDLG32.LIB;USER32.LIB;ADVAPI32.LIB;GDI32.LIB;WINMM.LIB;WSOCK32.LIB;vfw32.lib;Imm32.lib;d3d9.lib;d3dx9.lib;DxErr.lib;ole32.lib;shell32.lib;oleaut32.lib;version.lib") + set(TORQUE_EXTERNAL_LIBS "COMCTL32.LIB;COMDLG32.LIB;USER32.LIB;ADVAPI32.LIB;GDI32.LIB;WINMM.LIB;WSOCK32.LIB;vfw32.lib;Imm32.lib;d3d9.lib;d3dx9.lib;DxErr.lib;ole32.lib;shell32.lib;oleaut32.lib;version.lib" CACHE STRING "external libs to link against") + mark_as_advanced(TORQUE_EXTERNAL_LIBS) + addLib("${TORQUE_EXTERNAL_LIBS}") endif() ############################################################################### @@ -323,7 +357,7 @@ addDef(NTORQUE_SHARED) addDef(UNICODE) addDef(_UNICODE) # for VS addDef(TORQUE_UNICODE) -#addDef(TORQUE_SHARED) +#addDef(TORQUE_SHARED) # not used anymore as the game is the executable directly addDef(LTC_NO_PROTOTYPES) # for libTomCrypt addDef(BAN_OPCODE_AUTOLINK) addDef(ICE_NO_DLL) diff --git a/Tools/CMake/torqueConfig.h.in b/Tools/CMake/torqueConfig.h.in index a41002240..b15c5defe 100644 --- a/Tools/CMake/torqueConfig.h.in +++ b/Tools/CMake/torqueConfig.h.in @@ -76,6 +76,7 @@ /// This is usually defined by the build target. #cmakedefine TORQUE_DEBUG #cmakedefine DEBUG_SPEW +#cmakedefine TORQUE_DEBUG_GFX_MODE /// Define me if this is a shipping build; if defined I will instruct Torque /// to batten down some hatches and generally be more "final game" oriented. From e93a5d9d744ceaa2e06d024fa239c77dd747fd02 Mon Sep 17 00:00:00 2001 From: Thomas Fischer Date: Wed, 19 Mar 2014 02:43:52 +0100 Subject: [PATCH 07/10] little documentation fix --- Tools/CMake/torque3d.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Tools/CMake/torque3d.cmake b/Tools/CMake/torque3d.cmake index af224fe9f..36531530b 100644 --- a/Tools/CMake/torque3d.cmake +++ b/Tools/CMake/torque3d.cmake @@ -312,7 +312,7 @@ addExecutable() ############################################################################### ############################################################################### -# configure file relevant files only once +# configure the relevant files only once if(NOT EXISTS "${projectSrcDir}/torqueConfig.h") message(STATUS "writing ${projectSrcDir}/torqueConfig.h") CONFIGURE_FILE("${cmakeDir}/torqueConfig.h.in" "${projectSrcDir}/torqueConfig.h") From cd727f771164369db5060bbef21e0a0cacf3d3da Mon Sep 17 00:00:00 2001 From: Thomas Fischer Date: Wed, 19 Mar 2014 03:23:51 +0100 Subject: [PATCH 08/10] added lib template; added cleanup batch file; added game folder --- CMakeLists.txt | 6 ++++- Tools/CMake/basics.cmake | 15 ++++++----- Tools/CMake/cleanup-win.bat.in | 47 ++++++++++++++++++++++++++++++++++ Tools/CMake/template.cmake | 21 +++++++++++++++ Tools/CMake/torque3d.cmake | 17 ++++++++---- 5 files changed, 93 insertions(+), 13 deletions(-) create mode 100644 Tools/CMake/cleanup-win.bat.in create mode 100644 Tools/CMake/template.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index a5b48f94c..c5cb63b34 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,9 @@ cmake_minimum_required (VERSION 2.8) -project("Torque3D") +set(TORQUE_APP_NAME "My Project" CACHE STRING "the app name") +set(TORQUE_APP_VERSION "1000" CACHE STRING "the app version: major * 1000 + minor * 100 + revision * 10.") +set(TORQUE_APP_VERSION_STRING "1.0" CACHE STRING "the app version string") + +project(${TORQUE_APP_NAME}) add_subdirectory(Tools/CMake) \ No newline at end of file diff --git a/Tools/CMake/basics.cmake b/Tools/CMake/basics.cmake index dc0d7b339..ead6ccc62 100644 --- a/Tools/CMake/basics.cmake +++ b/Tools/CMake/basics.cmake @@ -2,19 +2,20 @@ project("Torque3DEngine") set(TORQUE_TEMPLATE "Empty" CACHE STRING "the template to use") -set(projectOutDir "${CMAKE_SOURCE_DIR}/My Projects/${TORQUE_APP_NAME}") -set(projectSrcDir "${CMAKE_SOURCE_DIR}/My Projects/${TORQUE_APP_NAME}/source") +set(projectDir "${CMAKE_SOURCE_DIR}/My Projects/${TORQUE_APP_NAME}") +set(projectOutDir "${projectDir}/game") +set(projectSrcDir "${projectDir}/source") set(libDir "${CMAKE_SOURCE_DIR}/Engine/lib") set(srcDir "${CMAKE_SOURCE_DIR}/Engine/source") set(cmakeDir "${CMAKE_SOURCE_DIR}/Tools/CMake") # output folders -#set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${projectOutDir}/bin) -#set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${projectOutDir}/bin) -#set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${projectOutDir}/bin) +#set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${projectOutDir}/game) +#set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${projectOutDir}/game) +#set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${projectOutDir}/game) # change the default installation path to My Projects/app name -SET(CMAKE_INSTALL_PREFIX "${projectOutDir}" CACHE INTERNAL "Prefix prepended to install directories" FORCE) +SET(CMAKE_INSTALL_PREFIX "${projectDir}" CACHE INTERNAL "Prefix prepended to install directories" FORCE) # finds and adds sources files in a folder macro(addPath dir) @@ -174,7 +175,7 @@ if(MSVC) FOREACH(CONF ${CMAKE_CONFIGURATION_TYPES}) # Go uppercase (DEBUG, RELEASE...) STRING(TOUPPER "${CONF}" CONF) - SET("CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${CONF}" "${projectOutDir}") + #SET("CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${CONF}" "${projectOutDir}") SET("CMAKE_RUNTIME_OUTPUT_DIRECTORY_${CONF}" "${projectOutDir}") ENDFOREACH() endif() diff --git a/Tools/CMake/cleanup-win.bat.in b/Tools/CMake/cleanup-win.bat.in new file mode 100644 index 000000000..0e9906dd8 --- /dev/null +++ b/Tools/CMake/cleanup-win.bat.in @@ -0,0 +1,47 @@ +@ECHO off + +:: Delete procedural shaders +echo shaders +del /q /a:-R shaders\procedural\*.* +:: Delete dumped shader disassembly files +for /R %%a IN (*._dis.txt) do IF EXIST "%%a._dis.txt" del "%%a._dis.txt" + +:: Delete fonts +echo fonts +del /q /a:-R core\fonts\*.* + +:: CEF cache +echo browser cache +del /q /a:-R cache + + +:: the cached meshes and alike +echo meshes and alike +for /R %%a IN (*.dae) do IF EXIST "%%~pna.cached.dts" del "%%~pna.cached.dts" +for /R %%a IN (*.imposter*.dds) do del "%%a" + +:: the torque script compilations +echo compiled script +for /R %%a IN (*.cs) do IF EXIST "%%a.dso" del "%%a.dso" +for /R %%a IN (*.cs) do IF EXIST "%%a.edso" del "%%a.edso" +for /R %%a IN (*.gui) do IF EXIST "%%a.dso" del "%%a.dso" +for /R %%a IN (*.gui) do IF EXIST "%%a.edso" del "%%a.edso" +for /R %%a IN (*.ts) do IF EXIST "%%a.dso" del "%%a.dso" +for /R %%a IN (*.ts) do IF EXIST "%%a.edso" del "%%a.edso" + +:: the user settings and alike +echo settings +IF EXIST "prefs.cs" del /s prefs.cs +IF EXIST "core\prefs.cs" del /s core\prefs.cs +::IF EXIST "scripts\client\prefs.cs" del /s scripts\client\prefs.cs +IF EXIST "scripts\server\banlist.cs" del /s scripts\server\banlist.cs +IF EXIST "scripts\server\prefs.cs" del /s scripts\server\prefs.cs +IF EXIST "client\config.cs" del /s client\config.cs +IF EXIST "config.cs" del /s config.cs +IF EXIST "tools\settings.xml" del /s tools\settings.xml +IF EXIST "banlist.cs" del /s banlist.cs + +:: logs +echo logs +IF EXIST "torque3d.log" del /s torque3d.log +echo DONE! \ No newline at end of file diff --git a/Tools/CMake/template.cmake b/Tools/CMake/template.cmake new file mode 100644 index 000000000..8040cddb0 --- /dev/null +++ b/Tools/CMake/template.cmake @@ -0,0 +1,21 @@ +# this is a template file that should help you write a new cmake build script for a new library + + +# 1st thing: the project name +project(pcre) + +# 2nd: add the paths where the source code is + +addPath("${libDir}/pcre") +addPathRec("${libDir}/pcre") + +# 3rd: add addStaticLib() +addStaticLib() + +# then add definitions +addDef(PCRE_STATIC) +addDef(HAVE_CONFIG_H) + +# and maybe more include paths +addInclude(${libDir}/libvorbis/include) +addInclude(${libDir}/libogg/include) diff --git a/Tools/CMake/torque3d.cmake b/Tools/CMake/torque3d.cmake index 36531530b..99dec40b4 100644 --- a/Tools/CMake/torque3d.cmake +++ b/Tools/CMake/torque3d.cmake @@ -62,9 +62,6 @@ option(TORQUE_DEBUG_GFX_MODE "triggers graphics debug mode" OFF) mark_as_advanced(TORQUE_DEBUG_GFX_MODE) #option(DEBUG_SPEW "more debug" OFF) -set(TORQUE_APP_NAME "Default" CACHE STRING "the app name") -set(TORQUE_APP_VERSION "1000" CACHE STRING "the app version: major * 1000 + minor * 100 + revision * 10.") -set(TORQUE_APP_VERSION_STRING "1.0" CACHE STRING "the app version string") set(TORQUE_NO_DSO_GENERATION ON) # warning C4800: 'XXX' : forcing value to bool 'true' or 'false' (performance warning) @@ -324,6 +321,9 @@ if(WIN32) if(NOT EXISTS "${projectSrcDir}/torque.rc") CONFIGURE_FILE("${cmakeDir}/torque-win.rc.in" "${projectSrcDir}/torque.rc") endif() + if(NOT EXISTS "${projectDir}/cleanup.bat") + CONFIGURE_FILE("${cmakeDir}/cleanup-win.bat.in" "${projectDir}/cleanup.bat") + endif() endif() ############################################################################### @@ -435,5 +435,12 @@ endif() ############################################################################### # Installation ############################################################################### -#INSTALL_TARGETS(/ torque3d) # not needed anymore as we should directly build in there -INSTALL_FILES(/ FILES ${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game/) +INSTALL_FILES(/ FILES ${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game) +if(WIN32) + INSTALL_FILES(/ FILES "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/cleanShaders.bat") + INSTALL_FILES(/ FILES "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/DeleteCachedDTSs.bat") + INSTALL_FILES(/ FILES "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/DeleteDSOs.bat") + INSTALL_FILES(/ FILES "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/DeletePrefs.bat") +endif() + +INCLUDE(CPack) \ No newline at end of file From f3dbe07b9a6ec0e26d24c1fb7ae89d1f68e81107 Mon Sep 17 00:00:00 2001 From: Thomas Fischer Date: Wed, 19 Mar 2014 18:17:35 +0100 Subject: [PATCH 09/10] main.cs configuring now (optional), fixed installation up, fixed application name up, fixed executable name, added configured torsion template --- Templates/Empty/game/main.cs.in | 280 ++++++++++++++++++++++++++++++++ Templates/Full/game/main.cs.in | 280 ++++++++++++++++++++++++++++++++ Tools/CMake/basics.cmake | 13 +- Tools/CMake/template.torsion.in | 39 +++++ Tools/CMake/torque3d.cmake | 22 ++- 5 files changed, 614 insertions(+), 20 deletions(-) create mode 100644 Templates/Empty/game/main.cs.in create mode 100644 Templates/Full/game/main.cs.in create mode 100644 Tools/CMake/template.torsion.in diff --git a/Templates/Empty/game/main.cs.in b/Templates/Empty/game/main.cs.in new file mode 100644 index 000000000..db8436e7d --- /dev/null +++ b/Templates/Empty/game/main.cs.in @@ -0,0 +1,280 @@ +//----------------------------------------------------------------------------- +// Copyright (c) 2012 GarageGames, LLC +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to +// deal in the Software without restriction, including without limitation the +// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +// sell copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +// IN THE SOFTWARE. +//----------------------------------------------------------------------------- + +// Set the name of our application +$appName = "@TORQUE_APP_NAME@"; + +// The directory it is run from +$defaultGame = "scripts"; + +// Set profile directory +$Pref::Video::ProfilePath = "core/profile"; + +function createCanvas(%windowTitle) +{ + if ($isDedicated) + { + GFXInit::createNullDevice(); + return true; + } + + // Create the Canvas + %foo = new GuiCanvas(Canvas); + + // Set the window title + if (isObject(Canvas)) + Canvas.setWindowTitle(getEngineName() @ " - " @ $appName); + + return true; +} + +// Display the optional commandline arguements +$displayHelp = false; + +// Use these to record and play back crashes +//saveJournal("editorOnFileQuitCrash.jrn"); +//playJournal("editorOnFileQuitCrash.jrn", false); + +//------------------------------------------------------------------------------ +// Check if a script file exists, compiled or not. +function isScriptFile(%path) +{ + if( isFile(%path @ ".dso") || isFile(%path) ) + return true; + + return false; +} + +//------------------------------------------------------------------------------ +// Process command line arguments +exec("core/parseArgs.cs"); + +$isDedicated = false; +$dirCount = 2; +$userDirs = $defaultGame @ ";art;levels"; + +// load tools scripts if we're a tool build +if (isToolBuild()) + $userDirs = "tools;" @ $userDirs; + + +// Parse the executable arguments with the standard +// function from core/main.cs +defaultParseArgs(); + + +if($dirCount == 0) { + $userDirs = $defaultGame; + $dirCount = 1; +} + +//----------------------------------------------------------------------------- +// Display a splash window immediately to improve app responsiveness before +// engine is initialized and main window created +if (!$isDedicated) + displaySplashWindow(); + + +//----------------------------------------------------------------------------- +// The displayHelp, onStart, onExit and parseArgs function are overriden +// by mod packages to get hooked into initialization and cleanup. + +function onStart() +{ + // Default startup function +} + +function onExit() +{ + // OnExit is called directly from C++ code, whereas onStart is + // invoked at the end of this file. +} + +function parseArgs() +{ + // Here for mod override, the arguments have already + // been parsed. +} + +function compileFiles(%pattern) +{ + %path = filePath(%pattern); + + %saveDSO = $Scripts::OverrideDSOPath; + %saveIgnore = $Scripts::ignoreDSOs; + + $Scripts::OverrideDSOPath = %path; + $Scripts::ignoreDSOs = false; + %mainCsFile = makeFullPath("main.cs"); + + for (%file = findFirstFileMultiExpr(%pattern); %file !$= ""; %file = findNextFileMultiExpr(%pattern)) + { + // we don't want to try and compile the primary main.cs + if(%mainCsFile !$= %file) + compile(%file, true); + } + + $Scripts::OverrideDSOPath = %saveDSO; + $Scripts::ignoreDSOs = %saveIgnore; + +} + +if($compileAll) +{ + echo(" --- Compiling all files ---"); + compileFiles("*.cs"); + compileFiles("*.gui"); + compileFiles("*.ts"); + echo(" --- Exiting after compile ---"); + quit(); +} + +if($compileTools) +{ + echo(" --- Compiling tools scritps ---"); + compileFiles("tools/*.cs"); + compileFiles("tools/*.gui"); + compileFiles("tools/*.ts"); + echo(" --- Exiting after compile ---"); + quit(); +} + +package Help { + function onExit() { + // Override onExit when displaying help + } +}; + +function displayHelp() { + activatePackage(Help); + + // Notes on logmode: console logging is written to console.log. + // -log 0 disables console logging. + // -log 1 appends to existing logfile; it also closes the file + // (flushing the write buffer) after every write. + // -log 2 overwrites any existing logfile; it also only closes + // the logfile when the application shuts down. (default) + + error( + "Torque Demo command line options:\n"@ + " -log Logging behavior; see main.cs comments for details\n"@ + " -game Reset list of mods to only contain \n"@ + " Works like the -game argument\n"@ + " -dir Add to list of directories\n"@ + " -console Open a separate console\n"@ + " -show Deprecated\n"@ + " -jSave Record a journal\n"@ + " -jPlay Play back a journal\n"@ + " -jDebug Play back a journal and issue an int3 at the end\n"@ + " -help Display this help message\n" + ); +} + + +//-------------------------------------------------------------------------- + +// Default to a new logfile each session. +if( !$logModeSpecified ) +{ + if( $platform !$= "xbox" && $platform !$= "xenon" ) + setLogMode(6); +} + +// Get the first dir on the list, which will be the last to be applied... this +// does not modify the list. +nextToken($userDirs, currentMod, ";"); + +// Execute startup scripts for each mod, starting at base and working up +function loadDir(%dir) +{ + pushback($userDirs, %dir, ";"); + + if (isScriptFile(%dir @ "/main.cs")) + exec(%dir @ "/main.cs"); +} + +echo("--------- Loading DIRS ---------"); +function loadDirs(%dirPath) +{ + %dirPath = nextToken(%dirPath, token, ";"); + if (%dirPath !$= "") + loadDirs(%dirPath); + + if(exec(%token @ "/main.cs") != true) + { + error("Error: Unable to find specified directory: " @ %token ); + $dirCount--; + } +} +loadDirs($userDirs); +echo(""); + +if($dirCount == 0) { + enableWinConsole(true); + error("Error: Unable to load any specified directories"); + quit(); +} +// Parse the command line arguments +echo("--------- Parsing Arguments ---------"); +parseArgs(); + +// Either display the help message or startup the app. +if ($displayHelp) { + enableWinConsole(true); + displayHelp(); + quit(); +} +else { + onStart(); + echo("Engine initialized..."); + + // Auto-load on the 360 + if( $platform $= "xenon" ) + { + %mission = "levels/Empty Terrain.mis"; + + echo("Xbox360 Autoloading level: '" @ %mission @ "'"); + + + if ($pref::HostMultiPlayer) + %serverType = "MultiPlayer"; + else + %serverType = "SinglePlayer"; + + createAndConnectToLocalServer( %serverType, %mission ); + } +} + +// Display an error message for unused arguments +for ($i = 1; $i < $Game::argc; $i++) { + if (!$argUsed[$i]) + error("Error: Unknown command line argument: " @ $Game::argv[$i]); +} + +// Automatically start up the appropriate eidtor, if any +if ($startWorldEditor) { + Canvas.setCursor("DefaultCursor"); + Canvas.setContent(EditorChooseLevelGui); +} else if ($startGUIEditor) { + Canvas.setCursor("DefaultCursor"); + Canvas.setContent(EditorChooseGUI); +} diff --git a/Templates/Full/game/main.cs.in b/Templates/Full/game/main.cs.in new file mode 100644 index 000000000..db8436e7d --- /dev/null +++ b/Templates/Full/game/main.cs.in @@ -0,0 +1,280 @@ +//----------------------------------------------------------------------------- +// Copyright (c) 2012 GarageGames, LLC +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to +// deal in the Software without restriction, including without limitation the +// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +// sell copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +// IN THE SOFTWARE. +//----------------------------------------------------------------------------- + +// Set the name of our application +$appName = "@TORQUE_APP_NAME@"; + +// The directory it is run from +$defaultGame = "scripts"; + +// Set profile directory +$Pref::Video::ProfilePath = "core/profile"; + +function createCanvas(%windowTitle) +{ + if ($isDedicated) + { + GFXInit::createNullDevice(); + return true; + } + + // Create the Canvas + %foo = new GuiCanvas(Canvas); + + // Set the window title + if (isObject(Canvas)) + Canvas.setWindowTitle(getEngineName() @ " - " @ $appName); + + return true; +} + +// Display the optional commandline arguements +$displayHelp = false; + +// Use these to record and play back crashes +//saveJournal("editorOnFileQuitCrash.jrn"); +//playJournal("editorOnFileQuitCrash.jrn", false); + +//------------------------------------------------------------------------------ +// Check if a script file exists, compiled or not. +function isScriptFile(%path) +{ + if( isFile(%path @ ".dso") || isFile(%path) ) + return true; + + return false; +} + +//------------------------------------------------------------------------------ +// Process command line arguments +exec("core/parseArgs.cs"); + +$isDedicated = false; +$dirCount = 2; +$userDirs = $defaultGame @ ";art;levels"; + +// load tools scripts if we're a tool build +if (isToolBuild()) + $userDirs = "tools;" @ $userDirs; + + +// Parse the executable arguments with the standard +// function from core/main.cs +defaultParseArgs(); + + +if($dirCount == 0) { + $userDirs = $defaultGame; + $dirCount = 1; +} + +//----------------------------------------------------------------------------- +// Display a splash window immediately to improve app responsiveness before +// engine is initialized and main window created +if (!$isDedicated) + displaySplashWindow(); + + +//----------------------------------------------------------------------------- +// The displayHelp, onStart, onExit and parseArgs function are overriden +// by mod packages to get hooked into initialization and cleanup. + +function onStart() +{ + // Default startup function +} + +function onExit() +{ + // OnExit is called directly from C++ code, whereas onStart is + // invoked at the end of this file. +} + +function parseArgs() +{ + // Here for mod override, the arguments have already + // been parsed. +} + +function compileFiles(%pattern) +{ + %path = filePath(%pattern); + + %saveDSO = $Scripts::OverrideDSOPath; + %saveIgnore = $Scripts::ignoreDSOs; + + $Scripts::OverrideDSOPath = %path; + $Scripts::ignoreDSOs = false; + %mainCsFile = makeFullPath("main.cs"); + + for (%file = findFirstFileMultiExpr(%pattern); %file !$= ""; %file = findNextFileMultiExpr(%pattern)) + { + // we don't want to try and compile the primary main.cs + if(%mainCsFile !$= %file) + compile(%file, true); + } + + $Scripts::OverrideDSOPath = %saveDSO; + $Scripts::ignoreDSOs = %saveIgnore; + +} + +if($compileAll) +{ + echo(" --- Compiling all files ---"); + compileFiles("*.cs"); + compileFiles("*.gui"); + compileFiles("*.ts"); + echo(" --- Exiting after compile ---"); + quit(); +} + +if($compileTools) +{ + echo(" --- Compiling tools scritps ---"); + compileFiles("tools/*.cs"); + compileFiles("tools/*.gui"); + compileFiles("tools/*.ts"); + echo(" --- Exiting after compile ---"); + quit(); +} + +package Help { + function onExit() { + // Override onExit when displaying help + } +}; + +function displayHelp() { + activatePackage(Help); + + // Notes on logmode: console logging is written to console.log. + // -log 0 disables console logging. + // -log 1 appends to existing logfile; it also closes the file + // (flushing the write buffer) after every write. + // -log 2 overwrites any existing logfile; it also only closes + // the logfile when the application shuts down. (default) + + error( + "Torque Demo command line options:\n"@ + " -log Logging behavior; see main.cs comments for details\n"@ + " -game Reset list of mods to only contain \n"@ + " Works like the -game argument\n"@ + " -dir Add to list of directories\n"@ + " -console Open a separate console\n"@ + " -show Deprecated\n"@ + " -jSave Record a journal\n"@ + " -jPlay Play back a journal\n"@ + " -jDebug Play back a journal and issue an int3 at the end\n"@ + " -help Display this help message\n" + ); +} + + +//-------------------------------------------------------------------------- + +// Default to a new logfile each session. +if( !$logModeSpecified ) +{ + if( $platform !$= "xbox" && $platform !$= "xenon" ) + setLogMode(6); +} + +// Get the first dir on the list, which will be the last to be applied... this +// does not modify the list. +nextToken($userDirs, currentMod, ";"); + +// Execute startup scripts for each mod, starting at base and working up +function loadDir(%dir) +{ + pushback($userDirs, %dir, ";"); + + if (isScriptFile(%dir @ "/main.cs")) + exec(%dir @ "/main.cs"); +} + +echo("--------- Loading DIRS ---------"); +function loadDirs(%dirPath) +{ + %dirPath = nextToken(%dirPath, token, ";"); + if (%dirPath !$= "") + loadDirs(%dirPath); + + if(exec(%token @ "/main.cs") != true) + { + error("Error: Unable to find specified directory: " @ %token ); + $dirCount--; + } +} +loadDirs($userDirs); +echo(""); + +if($dirCount == 0) { + enableWinConsole(true); + error("Error: Unable to load any specified directories"); + quit(); +} +// Parse the command line arguments +echo("--------- Parsing Arguments ---------"); +parseArgs(); + +// Either display the help message or startup the app. +if ($displayHelp) { + enableWinConsole(true); + displayHelp(); + quit(); +} +else { + onStart(); + echo("Engine initialized..."); + + // Auto-load on the 360 + if( $platform $= "xenon" ) + { + %mission = "levels/Empty Terrain.mis"; + + echo("Xbox360 Autoloading level: '" @ %mission @ "'"); + + + if ($pref::HostMultiPlayer) + %serverType = "MultiPlayer"; + else + %serverType = "SinglePlayer"; + + createAndConnectToLocalServer( %serverType, %mission ); + } +} + +// Display an error message for unused arguments +for ($i = 1; $i < $Game::argc; $i++) { + if (!$argUsed[$i]) + error("Error: Unknown command line argument: " @ $Game::argv[$i]); +} + +// Automatically start up the appropriate eidtor, if any +if ($startWorldEditor) { + Canvas.setCursor("DefaultCursor"); + Canvas.setContent(EditorChooseLevelGui); +} else if ($startGUIEditor) { + Canvas.setCursor("DefaultCursor"); + Canvas.setContent(EditorChooseGUI); +} diff --git a/Tools/CMake/basics.cmake b/Tools/CMake/basics.cmake index ead6ccc62..e69bb2330 100644 --- a/Tools/CMake/basics.cmake +++ b/Tools/CMake/basics.cmake @@ -1,6 +1,6 @@ project("Torque3DEngine") -set(TORQUE_TEMPLATE "Empty" CACHE STRING "the template to use") +set(TORQUE_TEMPLATE "Full" CACHE STRING "the template to use") set(projectDir "${CMAKE_SOURCE_DIR}/My Projects/${TORQUE_APP_NAME}") set(projectOutDir "${projectDir}/game") @@ -14,9 +14,6 @@ set(cmakeDir "${CMAKE_SOURCE_DIR}/Tools/CMake") #set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${projectOutDir}/game) #set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${projectOutDir}/game) -# change the default installation path to My Projects/app name -SET(CMAKE_INSTALL_PREFIX "${projectDir}" CACHE INTERNAL "Prefix prepended to install directories" FORCE) - # finds and adds sources files in a folder macro(addPath dir) set(tmpa "") @@ -117,12 +114,6 @@ endmacro() # macro to add an executable macro(addExecutable) - # more paths? - if(${ARGC} GREATER 0) - foreach(dir ${ARGV0}) - addPath("${dir}") - endforeach() - endif() # now inspect the paths we got set(firstDir "") foreach(dir ${${PROJECT_NAME}_paths}) @@ -133,9 +124,7 @@ macro(addExecutable) generateFilters("${firstDir}") add_executable("${PROJECT_NAME}" WIN32 ${${PROJECT_NAME}_files}) # omg - only use the first folder ... otehrwise we get lots of header name collisions - #foreach(dir ${${PROJECT_NAME}_paths}) addInclude("${firstDir}") - #endforeach() endmacro() diff --git a/Tools/CMake/template.torsion.in b/Tools/CMake/template.torsion.in new file mode 100644 index 000000000..f832ad13b --- /dev/null +++ b/Tools/CMake/template.torsion.in @@ -0,0 +1,39 @@ + +@TORQUE_APP_NAME@ + +main.cs +dbgSetParameters( #port#, "#password#", true ); + +core +scripts +art +levels +shaders +tools + +cs; gui + + +Release +@TORQUE_APP_NAME@.exe + +true +true +true +false + + +Debug +@TORQUE_APP_NAME@.exe + +true +true +true +false + + + +@TORQUE_APP_NAME@ +HEAD +true + diff --git a/Tools/CMake/torque3d.cmake b/Tools/CMake/torque3d.cmake index 99dec40b4..e31eeb92f 100644 --- a/Tools/CMake/torque3d.cmake +++ b/Tools/CMake/torque3d.cmake @@ -1,4 +1,4 @@ -project(torque3d) +project(${TORQUE_APP_NAME}) # TODO: fmod support @@ -317,12 +317,18 @@ endif() if(NOT EXISTS "${projectSrcDir}/torque.ico") CONFIGURE_FILE("${cmakeDir}/torque.ico" "${projectSrcDir}/torque.ico" COPYONLY) endif() +if(NOT EXISTS "${projectOutDir}/${PROJECT_NAME}.torsion") + CONFIGURE_FILE("${cmakeDir}/template.torsion.in" "${projectOutDir}/${PROJECT_NAME}.torsion") +endif() +if(EXISTS "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game/main.cs.in" AND NOT EXISTS "${projectOutDir}/main.cs") + CONFIGURE_FILE("${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game/main.cs.in" "${projectOutDir}/main.cs") +endif() if(WIN32) if(NOT EXISTS "${projectSrcDir}/torque.rc") CONFIGURE_FILE("${cmakeDir}/torque-win.rc.in" "${projectSrcDir}/torque.rc") endif() - if(NOT EXISTS "${projectDir}/cleanup.bat") - CONFIGURE_FILE("${cmakeDir}/cleanup-win.bat.in" "${projectDir}/cleanup.bat") + if(NOT EXISTS "${projectOutDir}/cleanup.bat") + CONFIGURE_FILE("${cmakeDir}/cleanup-win.bat.in" "${projectOutDir}/cleanup.bat") endif() endif() @@ -435,12 +441,12 @@ endif() ############################################################################### # Installation ############################################################################### -INSTALL_FILES(/ FILES ${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game) +INSTALL(DIRECTORY "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game" DESTINATION "${projectDir}") if(WIN32) - INSTALL_FILES(/ FILES "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/cleanShaders.bat") - INSTALL_FILES(/ FILES "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/DeleteCachedDTSs.bat") - INSTALL_FILES(/ FILES "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/DeleteDSOs.bat") - INSTALL_FILES(/ FILES "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/DeletePrefs.bat") + INSTALL(FILES "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/cleanShaders.bat" DESTINATION "${projectDir}") + INSTALL(FILES "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/DeleteCachedDTSs.bat" DESTINATION "${projectDir}") + INSTALL(FILES "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/DeleteDSOs.bat" DESTINATION "${projectDir}") + INSTALL(FILES "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/DeletePrefs.bat" DESTINATION "${projectDir}") endif() INCLUDE(CPack) \ No newline at end of file From 36cc041254b99a7b10b002e6903164174acce933 Mon Sep 17 00:00:00 2001 From: Thomas Fischer Date: Thu, 20 Mar 2014 05:34:45 +0100 Subject: [PATCH 10/10] enforced setting the app name and fixed default-appname bugs added debug batch file for windows improved project filters for executable: separated into engine and user sources refactored version numbers, added them to the .rc file changed /W2 to /W4 TORQUE_DEBUG,TORQUE_ENABLE_ASSERTS and TORQUE_DEBUG_GFX_MODE now automatically defined in debug mode --- CMakeLists.txt | 10 +++-- Tools/CMake/CMakeLists.txt | 4 ++ Tools/CMake/app-debug-win.bat.in | 15 +++++++ Tools/CMake/basics.cmake | 71 +++++++++++++++++++++++++++++++- Tools/CMake/torque-win.rc.in | 42 ++++++++++++++++++- Tools/CMake/torque3d.cmake | 11 +++-- Tools/CMake/torqueConfig.h.in | 7 +++- 7 files changed, 148 insertions(+), 12 deletions(-) create mode 100644 Tools/CMake/app-debug-win.bat.in diff --git a/CMakeLists.txt b/CMakeLists.txt index c5cb63b34..77057ec73 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,8 +1,10 @@ -cmake_minimum_required (VERSION 2.8) +cmake_minimum_required (VERSION 2.8.3) -set(TORQUE_APP_NAME "My Project" CACHE STRING "the app name") -set(TORQUE_APP_VERSION "1000" CACHE STRING "the app version: major * 1000 + minor * 100 + revision * 10.") -set(TORQUE_APP_VERSION_STRING "1.0" CACHE STRING "the app version string") +set(TORQUE_APP_NAME "" CACHE STRING "the app name") + +if("${TORQUE_APP_NAME}" STREQUAL "") + message(FATAL_ERROR "Please set TORQUE_APP_NAME first") +endif() project(${TORQUE_APP_NAME}) diff --git a/Tools/CMake/CMakeLists.txt b/Tools/CMake/CMakeLists.txt index 7631aae01..950d8cf99 100644 --- a/Tools/CMake/CMakeLists.txt +++ b/Tools/CMake/CMakeLists.txt @@ -1,5 +1,7 @@ include(basics.cmake) +setupVersionNumbers() + #the libs include(lmng.cmake) include(lpng.cmake) @@ -22,3 +24,5 @@ endif() # the main engine, should come last include(torque3d.cmake) + +#setupPackaging() \ No newline at end of file diff --git a/Tools/CMake/app-debug-win.bat.in b/Tools/CMake/app-debug-win.bat.in new file mode 100644 index 000000000..8885f2e5b --- /dev/null +++ b/Tools/CMake/app-debug-win.bat.in @@ -0,0 +1,15 @@ +:: little debug helper script that helps you starting Torque3D with command line arguments. + +:: possible args: +:: -log +:: -console +:: -level +:: -worldeditor +:: -guieditor +:: -help + +:: as example, we just show the console +"@PROJECT_NAME@.exe" -console + +:: or load a level and open the editor: +:: "@PROJECT_NAME@.exe" -console -level mylevel.mis -worldeditor diff --git a/Tools/CMake/basics.cmake b/Tools/CMake/basics.cmake index e69bb2330..3faf03e6c 100644 --- a/Tools/CMake/basics.cmake +++ b/Tools/CMake/basics.cmake @@ -9,6 +9,11 @@ set(libDir "${CMAKE_SOURCE_DIR}/Engine/lib") set(srcDir "${CMAKE_SOURCE_DIR}/Engine/source") set(cmakeDir "${CMAKE_SOURCE_DIR}/Tools/CMake") + +# hide some things +mark_as_advanced(CMAKE_INSTALL_PREFIX) +mark_as_advanced(CMAKE_CONFIGURATION_TYPES) + # output folders #set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${projectOutDir}/game) #set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${projectOutDir}/game) @@ -24,12 +29,14 @@ macro(addPath dir) ${dir}/*.h) LIST(APPEND ${PROJECT_NAME}_files "${tmpa}") LIST(APPEND ${PROJECT_NAME}_paths "${dir}") + #message(STATUS "addPath ${PROJECT_NAME} : ${tmpa}") #set(t "${${t}};${tmpa}") endmacro() # adds a file to the sources macro(addFile filename) LIST(APPEND ${PROJECT_NAME}_files "${filename}") + #message(STATUS "addFile ${PROJECT_NAME} : ${filename}") endmacro() # finds and adds sources files in a folder recursively @@ -42,12 +49,17 @@ macro(addPathRec dir) ${dir}/*.h) LIST(APPEND ${PROJECT_NAME}_files "${tmpa}") LIST(APPEND ${PROJECT_NAME}_paths "${dir}") + #message(STATUS "addPathRec ${PROJECT_NAME} : ${tmpa}") endmacro() # adds a definition macro(addDef def) set_property(TARGET ${PROJECT_NAME} APPEND PROPERTY COMPILE_DEFINITIONS "${def}") endmacro() +# adds a definition +macro(addDebugDef def) + set_property(TARGET ${PROJECT_NAME} APPEND PROPERTY COMPILE_DEFINITIONS_DEBUG "${def}") +endmacro() # adds an include path macro(addInclude incPath) @@ -85,6 +97,30 @@ macro(generateFilters relDir) endforeach() endmacro() +# creates a proper filter for VS +macro(generateFiltersSpecial relDir) + foreach(f ${${PROJECT_NAME}_files}) + # Get the path of the file relative to ${DIRECTORY}, + # then alter it (not compulsory) + file(RELATIVE_PATH SRCGR ${relDir} ${f}) + set(SRCGR "torque3d/${SRCGR}") + # Extract the folder, ie remove the filename part + string(REGEX REPLACE "(.*)(/[^/]*)$" "\\1" SRCGR ${SRCGR}) + # do not have any ../ dirs + string(REPLACE "../" "" SRCGR ${SRCGR}) + IF("${SRCGR}" MATCHES "^torque3d/My Projects/.*$") + string(REPLACE "torque3d/My Projects/${PROJECT_NAME}/" "" SRCGR ${SRCGR}) + string(REPLACE "/source" "" SRCGR ${SRCGR}) + endif() + # Source_group expects \\ (double antislash), not / (slash) + string(REPLACE / \\ SRCGR ${SRCGR}) + #STRING(REPLACE "//" "/" SRCGR ${SRCGR}) + IF(EXISTS "${f}" AND NOT IS_DIRECTORY "${f}") + #message(STATUS "FILE: ${f} -> ${SRCGR}") + source_group("${SRCGR}" FILES ${f}) + endif() + endforeach() +endmacro() # macro to add a static library macro(addStaticLib) # more paths? @@ -121,20 +157,51 @@ macro(addExecutable) set(firstDir "${dir}") endif() endforeach() - generateFilters("${firstDir}") + generateFiltersSpecial("${firstDir}") add_executable("${PROJECT_NAME}" WIN32 ${${PROJECT_NAME}_files}) # omg - only use the first folder ... otehrwise we get lots of header name collisions addInclude("${firstDir}") endmacro() +macro(setupVersionNumbers) + set(TORQUE_APP_VERSION_MAYOR 1 CACHE INTEGER "") + set(TORQUE_APP_VERSION_MINOR 0 CACHE INTEGER "") + set(TORQUE_APP_VERSION_PATCH 0 CACHE INTEGER "") + set(TORQUE_APP_VERSION_TWEAK 0 CACHE INTEGER "") + mark_as_advanced(TORQUE_APP_VERSION_TWEAK) + MATH(EXPR TORQUE_APP_VERSION "${TORQUE_APP_VERSION_MAYOR} * 1000 + ${TORQUE_APP_VERSION_MINOR} * 100 + ${TORQUE_APP_VERSION_PATCH} * 10 + ${TORQUE_APP_VERSION_TWEAK}") + set(TORQUE_APP_VERSION_STRING "${TORQUE_APP_VERSION_MAYOR}.${TORQUE_APP_VERSION_MINOR}.${TORQUE_APP_VERSION_PATCH}.${TORQUE_APP_VERSION_TWEAK}") + #message(STATUS "version numbers: ${TORQUE_APP_VERSION} / ${TORQUE_APP_VERSION_STRING}") +endmacro() +macro(setupPackaging) + INCLUDE(CPack) + # only enable zips for now + set(CPACK_BINARY_NSIS OFF CACHE INTERNAL "" FORCE) + set(CPACK_BINARY_ZIP ON CACHE INTERNAL "" FORCE) + set(CPACK_SOURCE_ZIP OFF CACHE INTERNAL "" FORCE) + SET(CPACK_GENERATOR "ZIP") + SET(CPACK_PACKAGE_VENDOR "${PROJECT_NAME}") + SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PROJECT_NAME}") + SET(CPACK_INCLUDE_TOPLEVEL_DIRECTORY 1) + SET(CPACK_OUTPUT_FILE_PREFIX "${projectDir}/packages/${PROJECT_NAME}") + SET(CPACK_PACKAGE_INSTALL_DIRECTORY "") + #SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/ReadMe.txt") + #SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/Copyright.txt") + SET(CPACK_PACKAGE_VERSION_MAJOR "${TORQUE_APP_VERSION_MAYOR}") + SET(CPACK_PACKAGE_VERSION_MINOR "${TORQUE_APP_VERSION_MINOR}") + SET(CPACK_PACKAGE_VERSION_PATCH "${TORQUE_APP_VERSION_PATCH}") + #SET(CPACK_PACKAGE_EXECUTABLES "${PROJECT_NAME}" "${PROJECT_NAME}") + SET(CPACK_SOURCE_PACKAGE_FILE_NAME "${PROJECT_NAME}-${TORQUE_APP_VERSION_STRING}") + #SET(CPACK_SOURCE_STRIP_FILES "") +endmacro() # always static for now set(TORQUE_STATIC ON) #option(TORQUE_STATIC "enables or disable static" OFF) if(WIN32) # default disabled warnings: 4018;4100;4121;4127;4130;4244;4245;4389;4511;4512;4800; - set(TORQUE_CXX_FLAGS "/MP /O2 /Ob2 /Oi /Ot /Oy /GT /Zi /W2 /nologo /GF /EHsc /GS- /Gy- /Qpar- /arch:SSE2 /fp:fast /fp:except- /GR /Zc:wchar_t-" CACHE TYPE STRING) + set(TORQUE_CXX_FLAGS "/MP /O2 /Ob2 /Oi /Ot /Oy /GT /Zi /W4 /nologo /GF /EHsc /GS- /Gy- /Qpar- /arch:SSE2 /fp:fast /fp:except- /GR /Zc:wchar_t-" CACHE TYPE STRING) mark_as_advanced(TORQUE_CXX_FLAGS) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${TORQUE_CXX_FLAGS}") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_CXX_FLAGS}") diff --git a/Tools/CMake/torque-win.rc.in b/Tools/CMake/torque-win.rc.in index cf88543da..c73a0aaac 100644 --- a/Tools/CMake/torque-win.rc.in +++ b/Tools/CMake/torque-win.rc.in @@ -68,9 +68,48 @@ END #endif // APSTUDIO_INVOKED -#endif // English (U.S.) resources ///////////////////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION @TORQUE_APP_VERSION_MAYOR@,@TORQUE_APP_VERSION_MINOR@,@TORQUE_APP_VERSION_PATCH@,@TORQUE_APP_VERSION_TWEAK@ + PRODUCTVERSION @TORQUE_APP_VERSION_MAYOR@,@TORQUE_APP_VERSION_MINOR@,@TORQUE_APP_VERSION_PATCH@,@TORQUE_APP_VERSION_TWEAK@ + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x40004L + FILETYPE 0x1L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "CompanyName", "@PROJECT_NAME@" + VALUE "FileDescription", "@PROJECT_NAME@" + VALUE "FileVersion", "@TORQUE_APP_VERSION_STRING@" + VALUE "InternalName", "@PROJECT_NAME@" + VALUE "LegalCopyright", "Copyright (C) 2014" + VALUE "OriginalFilename", "@PROJECT_NAME@" + VALUE "ProductName", "@PROJECT_NAME@" + VALUE "ProductVersion", "@TORQUE_APP_VERSION_STRING@" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END + +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// #ifndef APSTUDIO_INVOKED @@ -82,4 +121,3 @@ END ///////////////////////////////////////////////////////////////////////////// #endif // not APSTUDIO_INVOKED - diff --git a/Tools/CMake/torque3d.cmake b/Tools/CMake/torque3d.cmake index e31eeb92f..06845ee22 100644 --- a/Tools/CMake/torque3d.cmake +++ b/Tools/CMake/torque3d.cmake @@ -168,7 +168,7 @@ addPath("${srcDir}/T3D/turret") addPath("${srcDir}/main/") addPathRec("${srcDir}/ts/collada") addPathRec("${srcDir}/ts/loader") -addFile("${projectSrcDir}") +addPathRec("${projectSrcDir}") ############################################################################### # modular paths @@ -327,6 +327,9 @@ if(WIN32) if(NOT EXISTS "${projectSrcDir}/torque.rc") CONFIGURE_FILE("${cmakeDir}/torque-win.rc.in" "${projectSrcDir}/torque.rc") endif() + if(NOT EXISTS "${projectOutDir}/${PROJECT_NAME}-debug.bat") + CONFIGURE_FILE("${cmakeDir}/app-debug-win.bat.in" "${projectOutDir}/${PROJECT_NAME}-debug.bat") + endif() if(NOT EXISTS "${projectOutDir}/cleanup.bat") CONFIGURE_FILE("${cmakeDir}/cleanup-win.bat.in" "${projectOutDir}/cleanup.bat") endif() @@ -357,6 +360,10 @@ endif() ############################################################################### # Always enabled Definitions ############################################################################### +addDebugDef(TORQUE_DEBUG) +addDebugDef(TORQUE_ENABLE_ASSERTS) +addDebugDef(TORQUE_DEBUG_GFX_MODE) + addDef(TORQUE_SHADERGEN) addDef(INITGUID) addDef(NTORQUE_SHARED) @@ -448,5 +455,3 @@ if(WIN32) INSTALL(FILES "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/DeleteDSOs.bat" DESTINATION "${projectDir}") INSTALL(FILES "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/DeletePrefs.bat" DESTINATION "${projectDir}") endif() - -INCLUDE(CPack) \ No newline at end of file diff --git a/Tools/CMake/torqueConfig.h.in b/Tools/CMake/torqueConfig.h.in index b15c5defe..9acb419df 100644 --- a/Tools/CMake/torqueConfig.h.in +++ b/Tools/CMake/torqueConfig.h.in @@ -74,7 +74,10 @@ /// Define me to enable debug mode; enables a great number of additional /// sanity checks, as well as making AssertFatal and AssertWarn do something. /// This is usually defined by the build target. -#cmakedefine TORQUE_DEBUG + +// TORQUE_DEBUG is now set dynamically and not here anymore +// #cmakedefine TORQUE_DEBUG + #cmakedefine DEBUG_SPEW #cmakedefine TORQUE_DEBUG_GFX_MODE @@ -156,7 +159,9 @@ #endif // Enables the C++ assert macros AssertFatal, AssertWarn, etc. + #ifndef TORQUE_ENABLE_ASSERTS #define TORQUE_ENABLE_ASSERTS + #endif #endif