From 02ff428d54386735419407031afa787b80d00bd1 Mon Sep 17 00:00:00 2001 From: Braden Obrzut Date: Mon, 1 Jul 2013 16:57:46 -0400 Subject: [PATCH 1/5] - Allow generator expressions to be turned off during pk3 building with CMake. - On Mac OS X, ensure assembly code is disabled by default (since it won't work). --- CMakeLists.txt | 33 +++++++++++++++++++++++++++++++++ src/CMakeLists.txt | 7 ++++++- wadsrc/CMakeLists.txt | 10 +--------- 3 files changed, 40 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 22bc0e7cc5..0858ecab55 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,39 @@ cmake_minimum_required( VERSION 2.4 ) project(ZDoom) +# Generator expression are available some time in CMake 2.8. Due to +# cmake_minimum_required, we can assume a minor version of > 7 implies major >= 2 +if(${CMAKE_MAJOR_VERSION} GREATER 2 OR ${CMAKE_MINOR_VERSION} GREATER 7) + option( NO_GENERATOR_EXPRESSIONS "Disable generator expressions (for building pk3s with IDEs)." OFF ) +else(${CMAKE_MAJOR_VERSION} GREATER 2 OR ${CMAKE_MINOR_VERSION} GREATER 7) + set( NO_GENERATOR_EXPRESSIONS ON ) +endif(${CMAKE_MAJOR_VERSION} GREATER 2 OR ${CMAKE_MINOR_VERSION} GREATER 7) + +# Simplify pk3 building, add_pk3(filename srcdirectory) +function( add_pk3 PK3_NAME PK3_DIR ) + get_target_property(ZIPDIR_EXE zipdir LOCATION) + + # Generate target name. Just use "pk3" for main pk3 target. + string( REPLACE "." "_" PK3_TARGET ${PK3_NAME} ) + if( ${PK3_TARGET} STREQUAL "zdoom_pk3" ) + set( PK3_TARGET "pk3" ) + endif( ${PK3_TARGET} STREQUAL "zdoom_pk3" ) + + if( NO_GENERATOR_EXPRESSIONS ) + add_custom_command( OUTPUT ${ZDOOM_OUTPUT_DIR}/${PK3_NAME} + COMMAND ${ZIPDIR_EXE} -udf ${ZDOOM_OUTPUT_DIR}/${PK3_NAME} ${PK3_DIR} + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${ZDOOM_OUTPUT_DIR}/${PK3_NAME} $ + DEPENDS zipdir ${PK3_DIR} ) + else( NO_GENERATOR_EXPRESSIONS ) + add_custom_command( OUTPUT ${ZDOOM_OUTPUT_DIR}/${PK3_NAME} + COMMAND ${ZIPDIR_EXE} -udf ${ZDOOM_OUTPUT_DIR}/${PK3_NAME} ${PK3_DIR} + DEPENDS zipdir ${PK3_DIR} ) + endif( NO_GENERATOR_EXPRESSIONS ) + + add_custom_target( ${PK3_TARGET} ALL + DEPENDS ${ZDOOM_OUTPUT_DIR}/${PK3_NAME} ) +endfunction( add_pk3 ) + IF( NOT CMAKE_BUILD_TYPE ) SET( CMAKE_BUILD_TYPE Debug CACHE STRING "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel." diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index a8abc70c82..82f347fd82 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -9,7 +9,12 @@ include( CheckFunctionExists ) include( CheckCXXCompilerFlag ) include( FindPkgConfig ) -option( NO_ASM "Disable assembly code" ) +if( NOT APPLE ) + option( NO_ASM "Disable assembly code" OFF ) +else( NOT APPLE ) + # At the moment asm code doesn't work with OS X, so disable by default + option( NO_ASM "Disable assembly code" ON ) +endif( NOT APPLE ) if( "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" ) option( NO_STRIP "Do not strip Release or MinSizeRel builds" ) # At least some versions of Xcode fail if you strip with the linker diff --git a/wadsrc/CMakeLists.txt b/wadsrc/CMakeLists.txt index 4220525116..83dc8292d8 100644 --- a/wadsrc/CMakeLists.txt +++ b/wadsrc/CMakeLists.txt @@ -1,11 +1,3 @@ cmake_minimum_required( VERSION 2.4 ) -get_target_property(ZIPDIR_EXE zipdir LOCATION) - -add_custom_command( OUTPUT ${ZDOOM_OUTPUT_DIR}/zdoom.pk3 - COMMAND ${ZIPDIR_EXE} -udf ${ZDOOM_OUTPUT_DIR}/zdoom.pk3 ${CMAKE_CURRENT_SOURCE_DIR}/static - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${ZDOOM_OUTPUT_DIR}/zdoom.pk3 $ - DEPENDS zipdir ${CMAKE_CURRENT_SOURCE_DIR}/static ) - -add_custom_target( pk3 ALL - DEPENDS ${ZDOOM_OUTPUT_DIR}/zdoom.pk3 ) +add_pk3(zdoom.pk3 ${CMAKE_CURRENT_SOURCE_DIR}/static) From e9425b356b568d51d80bbcc37f145c363dbcb503 Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Mon, 1 Jul 2013 21:40:09 -0500 Subject: [PATCH 2/5] - Fixed: Verbose user info strings were written with an extra backslash character between the key and value. --- src/d_netinfo.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/d_netinfo.cpp b/src/d_netinfo.cpp index 7f94ef686e..92c8abc3ee 100644 --- a/src/d_netinfo.cpp +++ b/src/d_netinfo.cpp @@ -713,7 +713,7 @@ void D_WriteUserInfoStrings (int pnum, BYTE **stream, bool compact) if (!compact) { // In verbose mode, prepend the cvar's name - *stream += sprintf(*((char **)stream), "\\%s\\", pair->Key.GetChars()); + *stream += sprintf(*((char **)stream), "\\%s", pair->Key.GetChars()); } // A few of these need special handling for compatibility reasons. switch (pair->Key.GetIndex()) From 2717ed703d0f877a18498ebaf83bf6e0a32d6b86 Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Mon, 1 Jul 2013 21:51:12 -0500 Subject: [PATCH 3/5] Shuffle FActionMap for better 64-bit alignment. --- src/c_dispatch.cpp | 66 +++++++++++++++++++++++----------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/src/c_dispatch.cpp b/src/c_dispatch.cpp index 7b701bd534..d253549868 100644 --- a/src/c_dispatch.cpp +++ b/src/c_dispatch.cpp @@ -92,8 +92,8 @@ private: struct FActionMap { - unsigned int Key; // value from passing Name to MakeKey() FButtonStatus *Button; + unsigned int Key; // value from passing Name to MakeKey() char Name[12]; }; @@ -134,38 +134,38 @@ bool ParsingKeyConf; FActionMap ActionMaps[] = { - { 0x0d52d67b, &Button_AM_PanLeft, "am_panleft"}, - { 0x125f5226, &Button_User2, "user2" }, - { 0x1eefa611, &Button_Jump, "jump" }, - { 0x201f1c55, &Button_Right, "right" }, - { 0x20ccc4d5, &Button_Zoom, "zoom" }, - { 0x23a99cd7, &Button_Back, "back" }, - { 0x41df90c2, &Button_AM_ZoomIn, "am_zoomin"}, - { 0x426b69e7, &Button_Reload, "reload" }, - { 0x4463f43a, &Button_LookDown, "lookdown" }, - { 0x51f7a334, &Button_AM_ZoomOut, "am_zoomout"}, - { 0x534c30ee, &Button_User4, "user4" }, - { 0x5622bf42, &Button_Attack, "attack" }, - { 0x577712d0, &Button_User1, "user1" }, - { 0x57c25cb2, &Button_Klook, "klook" }, - { 0x59f3e907, &Button_Forward, "forward" }, - { 0x6167ce99, &Button_MoveDown, "movedown" }, - { 0x676885b8, &Button_AltAttack, "altattack" }, - { 0x6fa41b84, &Button_MoveLeft, "moveleft" }, - { 0x818f08e6, &Button_MoveRight, "moveright" }, - { 0x8197097b, &Button_AM_PanRight, "am_panright"}, - { 0x8d89955e, &Button_AM_PanUp, "am_panup"} , - { 0xa2b62d8b, &Button_Mlook, "mlook" }, - { 0xab2c3e71, &Button_Crouch, "crouch" }, - { 0xb000b483, &Button_Left, "left" }, - { 0xb62b1e49, &Button_LookUp, "lookup" }, - { 0xb6f8fe92, &Button_User3, "user3" }, - { 0xb7e6a54b, &Button_Strafe, "strafe" }, - { 0xce301c81, &Button_AM_PanDown, "am_pandown"}, - { 0xd5897c73, &Button_ShowScores, "showscores" }, - { 0xe0ccb317, &Button_Speed, "speed" }, - { 0xe0cfc260, &Button_Use, "use" }, - { 0xfdd701c7, &Button_MoveUp, "moveup" }, + { &Button_AM_PanLeft, 0x0d52d67b, "am_panleft"}, + { &Button_User2, 0x125f5226, "user2" }, + { &Button_Jump, 0x1eefa611, "jump" }, + { &Button_Right, 0x201f1c55, "right" }, + { &Button_Zoom, 0x20ccc4d5, "zoom" }, + { &Button_Back, 0x23a99cd7, "back" }, + { &Button_AM_ZoomIn, 0x41df90c2, "am_zoomin"}, + { &Button_Reload, 0x426b69e7, "reload" }, + { &Button_LookDown, 0x4463f43a, "lookdown" }, + { &Button_AM_ZoomOut, 0x51f7a334, "am_zoomout"}, + { &Button_User4, 0x534c30ee, "user4" }, + { &Button_Attack, 0x5622bf42, "attack" }, + { &Button_User1, 0x577712d0, "user1" }, + { &Button_Klook, 0x57c25cb2, "klook" }, + { &Button_Forward, 0x59f3e907, "forward" }, + { &Button_MoveDown, 0x6167ce99, "movedown" }, + { &Button_AltAttack, 0x676885b8, "altattack" }, + { &Button_MoveLeft, 0x6fa41b84, "moveleft" }, + { &Button_MoveRight, 0x818f08e6, "moveright" }, + { &Button_AM_PanRight, 0x8197097b, "am_panright"}, + { &Button_AM_PanUp, 0x8d89955e, "am_panup"} , + { &Button_Mlook, 0xa2b62d8b, "mlook" }, + { &Button_Crouch, 0xab2c3e71, "crouch" }, + { &Button_Left, 0xb000b483, "left" }, + { &Button_LookUp, 0xb62b1e49, "lookup" }, + { &Button_User3, 0xb6f8fe92, "user3" }, + { &Button_Strafe, 0xb7e6a54b, "strafe" }, + { &Button_AM_PanDown, 0xce301c81, "am_pandown"}, + { &Button_ShowScores, 0xd5897c73, "showscores" }, + { &Button_Speed, 0xe0ccb317, "speed" }, + { &Button_Use, 0xe0cfc260, "use" }, + { &Button_MoveUp, 0xfdd701c7, "moveup" }, }; #define NUM_ACTIONS countof(ActionMaps) From 001ed91fd484c56c2d8217b6d15a08ecf17252ef Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Mon, 1 Jul 2013 22:01:26 -0500 Subject: [PATCH 4/5] - Fixed: ACS's PlaySound should mask off the flag bits from the channel before passing it to S_IsActorPlayingSomething(). --- src/p_acs.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/p_acs.cpp b/src/p_acs.cpp index cd55caefb3..f57846b3c9 100644 --- a/src/p_acs.cpp +++ b/src/p_acs.cpp @@ -5025,7 +5025,7 @@ doplaysound: if (funcIndex == ACSF_PlayActorSound) { S_Sound(spot, chan, sid, vol, atten); } - else if (!S_IsActorPlayingSomething(spot, chan, sid)) + else if (!S_IsActorPlayingSomething(spot, chan & 7, sid)) { S_Sound(spot, chan | CHAN_LOOP, sid, vol, atten); } From 23e21cc85e9fbc378ec2cb00ed30ddf37c15c36b Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Mon, 1 Jul 2013 22:02:46 -0500 Subject: [PATCH 5/5] - Fixed: S_IsChannelUsed() is declared as static, so it should be defined as such, too. --- src/s_sound.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/s_sound.cpp b/src/s_sound.cpp index 2626c2b825..d1c3139672 100644 --- a/src/s_sound.cpp +++ b/src/s_sound.cpp @@ -1683,7 +1683,7 @@ bool S_GetSoundPlayingInfo (const FPolyObj *poly, int sound_id) // //========================================================================== -bool S_IsChannelUsed(AActor *actor, int channel, int *seen) +static bool S_IsChannelUsed(AActor *actor, int channel, int *seen) { if (*seen & (1 << channel)) {