Skip to content

Commit f954404

Browse files
committed
Merge branch 'develop'
2 parents 951cb63 + c8f4f97 commit f954404

File tree

721 files changed

+11217
-8709
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

721 files changed

+11217
-8709
lines changed

.travis.yml

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,20 @@ compiler:
33
# - clang
44
- gcc
55
before_script:
6+
# sdl2
67
- sudo add-apt-repository ppa:bartbes/love-stable --yes
8+
# gcc 4.7
9+
- sudo add-apt-repository ppa:ubuntu-toolchain-r/test --yes
710
- sudo apt-get update -qq
11+
- sudo apt-get install gcc-4.7 g++-4.7
812
- sudo apt-get install libglew-dev libsdl2-dev libdevil-dev libopenal-dev libogg-dev libvorbis-dev libfreetype6-dev p7zip-full libxcursor-dev
9-
- sudo apt-get install libboost-thread1.48-dev libboost-regex1.48-dev libboost-system1.48-dev libboost-program-options1.48-dev libboost-signals1.48-dev libboost-chrono1.48-dev libboost-filesystem1.48-dev libboost-test1.48-dev
13+
- sudo apt-get install libboost-thread1.48-dev libboost-regex1.48-dev libboost-system1.48-dev libboost-program-options1.48-dev libboost-signals1.48-dev libboost-chrono1.48-dev libboost-filesystem1.48-dev libboost-test1.48-dev binutils-gold
14+
env:
15+
- TARGET=spring-headless
16+
- TARGET=tests
1017
script:
11-
- cmake .
12-
- make spring-headless pr-downloader tests -k
13-
- tools/pr-downloader/src/pr-downloader DownCount_v2
18+
- cmake -DCMAKE_CXX_COMPILER=g++-4.7 -DCMAKE_C_COMPILER=gcc-4.7 .
19+
- make $TARGET -k
1420
# disabled because "make check" needs installed spring and gcc 4.6 fails
1521
# with creg it seems: https://travis-ci.org/spring/spring/builds/17682923#L2664
1622
# - make check

AI/CMakeLists.txt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,9 +70,7 @@ endmacro (AIMessage type msg)
7070
find_package(AWK)
7171

7272
# CUtils has to come first, because the Interfaces use it too
73-
if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Wrappers/CUtils)
74-
Add_Subdirectory(Wrappers/CUtils)
75-
endif (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Wrappers/CUtils)
73+
Add_Subdirectory(Wrappers/CUtils)
7674
Add_Subdirectory(Interfaces)
7775
Add_Subdirectory(Wrappers)
7876
Add_Subdirectory(Skirmish)

AI/Interfaces/C/CMakeLists.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,10 @@ if (BUILD_${myName}_AIINTERFACE)
107107
set(mySources
108108
"${mySourceDir}/Interface.cpp"
109109
"${mySourceDir}/InterfaceExport.cpp"
110+
"${mySourceDir}/SSkirmishAISpecifier.cpp"
110111
)
111-
add_library(${myTarget} MODULE ${mySources} ${ai_common_SRC} ${CUtils_SRC} ${myVersionDepFile})
112+
add_library(${myTarget} MODULE ${mySources} ${ai_common_SRC} ${myVersionDepFile})
113+
target_link_libraries(${myTarget} CUtils)
112114
FixLibName(${myTarget})
113115

114116
Add_Dependencies(${myTarget} generateVersionFiles)

AI/Interfaces/C/src/Interface.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
#define _INTERFACE_H
55

66
#include "ExternalAI/Interface/SSkirmishAILibrary.h"
7-
#include "CUtils/SSkirmishAISpecifier.h"
7+
#include "SSkirmishAISpecifier.h"
88
#include "CUtils/SharedLibrary.h"
99

1010
#include <map>

AI/Wrappers/CUtils/SSkirmishAISpecifier.cpp renamed to AI/Interfaces/C/src/SSkirmishAISpecifier.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020

2121
#include "SSkirmishAISpecifier.h"
2222

23-
#include "Util.h"
23+
#include "CUtils/Util.h"
2424

2525
#include "System/maindefines.h"
2626
#include "System/SafeCStrings.h"

AI/Wrappers/CUtils/SSkirmishAISpecifier.h renamed to AI/Interfaces/C/src/SSkirmishAISpecifier.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
* as key type for C++ maps or C hash maps (eg. to cache loaded Skirmish AIs).
2222
* Engine side, we are using the C++ class SkirmishAIKey for the same purposes.
2323
*/
24-
#if defined BUILDING_AI_INTERFACE
2524

2625
#ifndef _SSKIRMISHAISPECIFIER_H
2726
#define _SSKIRMISHAISPECIFIER_H
@@ -75,4 +74,3 @@ struct SSkirmishAISpecifier_Comparator {
7574

7675
#endif // _SSKIRMISHAISPECIFIER_H
7776

78-
#endif // defined BUILDING_AI_INTERFACE

AI/Interfaces/Java/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -615,9 +615,9 @@ if (BUILD_${myName}_AIINTERFACE)
615615
include_directories(BEFORE ${MINGWLIBS}/include/java)
616616
endif (MINGW)
617617
include_directories(BEFORE "${rts}/lib/streflop" "${myNativeSourceDir}" "${myNativeGeneratedSourceDir}")
618-
add_library(${myNativeTarget} MODULE ${myNativeSources} ${myNativeGeneratedSources} ${ai_common_SRC} ${CUtils_SRC} ${myVersionDepFile})
618+
add_library(${myNativeTarget} MODULE ${myNativeSources} ${myNativeGeneratedSources} ${ai_common_SRC} ${myVersionDepFile})
619619
Add_Dependencies(${myNativeTarget} generateVersionFiles)
620-
target_link_libraries(${myNativeTarget} streflop)
620+
target_link_libraries(${myNativeTarget} CUtils streflop)
621621
set_target_properties(${myNativeTarget} PROPERTIES COMPILE_FLAGS "-DUSING_STREFLOP")
622622
set_target_properties(${myNativeTarget} PROPERTIES OUTPUT_NAME "AIInterface")
623623
FixLibName(${myNativeTarget})

AI/Interfaces/Java/bin/jni_wrappCallback.awk

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -201,13 +201,7 @@ function printNativeJNI() {
201201
print("\t\t" c_paramNames[p] " = (" c_paramTypes[p] ") (*__env)->Get" capArrType "ArrayElements(__env, " jni_paramNames[p] ", NULL);") >> outFile_nc;
202202
} else if (_isString) {
203203
print("\t\t" "const int " c_paramNames[p] "_size = (int) (*__env)->GetArrayLength(__env, " jni_paramNames[p] ");") >> outFile_nc;
204-
print("\t\t" c_paramNames[p] " = (" c_paramTypes[p] ") calloc(sizeof(char*), " c_paramNames[p] "_size);") >> outFile_nc;
205-
print("\t\t" "int " c_paramNames[p] "_i;") >> outFile_nc;
206-
print("\t\t" "jstring " c_paramNames[p] "_jStr;") >> outFile_nc;
207-
print("\t\t" "for (" c_paramNames[p] "_i=0; " c_paramNames[p] "_i < " c_paramNames[p] "_size; ++" c_paramNames[p] "_i) {") >> outFile_nc;
208-
print("\t\t\t" c_paramNames[p] "_jStr = (jstring) (*__env)->GetObjectArrayElement(__env, " jni_paramNames[p] ", " c_paramNames[p] "_i);") >> outFile_nc;
209-
print("\t\t\t" c_paramNames[p] "[" c_paramNames[p] "_i] = (const char*) (*__env)->GetStringUTFChars(__env, " c_paramNames[p] "_jStr, NULL);") >> outFile_nc;
210-
print("\t\t" "}") >> outFile_nc;
204+
print("\t\t" c_paramNames[p] " = (" c_paramTypes[p] ") malloc(sizeof(char*) * " c_paramNames[p] "_size);") >> outFile_nc;
211205
} else {
212206
print("ERROR: do not know how to convert parameter type: " pType_jni);
213207
exit(1);
@@ -247,7 +241,7 @@ function printNativeJNI() {
247241
capArrType = capitalize(capArrType);
248242

249243
_isPrimitive = (capArrType != "Object");
250-
_isString = !_isPrimitive && (c_paramTypes[p] == "char**");
244+
_isString = !_isPrimitive && match(c_paramTypes[p], /(const )?char\*\*/);
251245

252246
print("\t" "if (" jni_paramNames[p] " != NULL) {") >> outFile_nc;
253247
if (_isPrimitive) {
@@ -256,15 +250,14 @@ function printNativeJNI() {
256250
print("\t\t" "(*__env)->Release" capArrType "ArrayElements(__env, " jni_paramNames[p] ", (" _elementJNativeType "*) " c_paramNames[p] ", 0 /* copy back changes and release */);") >> outFile_nc;
257251
} else if (_isString) {
258252
print("\t\t" "const int " c_paramNames[p] "_size = (int) (*__env)->GetArrayLength(__env, " jni_paramNames[p] ");") >> outFile_nc;
259-
print("\t\t" c_paramNames[p] " = (" c_paramTypes[p] ") calloc(sizeof(char*), " c_paramNames[p] "_size);") >> outFile_nc;
260253
print("\t\t" "int " c_paramNames[p] "_i;") >> outFile_nc;
261254
print("\t\t" "jstring " c_paramNames[p] "_jStr;") >> outFile_nc;
262255
print("\t\t" "for (" c_paramNames[p] "_i=0; " c_paramNames[p] "_i < " c_paramNames[p] "_size; ++" c_paramNames[p] "_i) {") >> outFile_nc;
263-
print("\t\t\t" c_paramNames[p] "_jStr = (jstring) (*__env)->GetObjectArrayElement(__env, " jni_paramNames[p] ", " c_paramNames[p] "_i);") >> outFile_nc;
264-
print("\t\t\t" "(*__env)->ReleaseStringUTFChars(__env, " c_paramNames[p] "_jStr, " c_paramNames[p] "[" c_paramNames[p] "_i]);") >> outFile_nc;
256+
print("\t\t\t" c_paramNames[p] "_jStr = (jstring) (*__env)->NewStringUTF(__env, " c_paramNames[p] "[" c_paramNames[p] "_i]);") >> outFile_nc;
257+
print("\t\t\t" "(*__env)->SetObjectArrayElement(__env, " jni_paramNames[p] ", " c_paramNames[p] "_i, " c_paramNames[p] "_jStr);") >> outFile_nc;
258+
print("\t\t\t" "(*__env)->DeleteLocalRef(__env, " c_paramNames[p] "_jStr);") >> outFile_nc;
265259
print("\t\t" "}") >> outFile_nc;
266260
print("\t\t" "free(" c_paramNames[p] ");") >> outFile_nc;
267-
print("\t\t" c_paramNames[p] " = NULL;") >> outFile_nc;
268261
}
269262
print("\t" "}") >> outFile_nc;
270263
}

AI/Interfaces/Java/src/main/native/JavaBridge.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
#include "ExternalAI/Interface/SSkirmishAILibrary.h"
1717
#include "ExternalAI/Interface/SSkirmishAICallback.h"
1818
#include "System/SafeCStrings.h"
19+
#include "lib/streflop/streflopC.h"
1920

2021
#include <jni.h>
2122

@@ -72,7 +73,7 @@ static jclass g_cls_ai_int = NULL;
7273
inline void java_establishSpringEnv() {
7374

7475
//(*g_jvm)->DetachCurrentThread(g_jvm);
75-
util_resetEngineEnv();
76+
streflop_init_Simple();
7677
}
7778
/// The JVM sets the environment it wants automatically, so this is a no-op
7879
inline void java_establishJavaEnv() {}
@@ -1154,8 +1155,6 @@ bool java_initSkirmishAIClass(
11541155
for (sai = 0; sai < skirmishAiImpl_size; ++sai) {
11551156
if (skirmishAiImpl_className[sai] == NULL) {
11561157
firstFree = sai;
1157-
} else if (strcmp(skirmishAiImpl_className[sai], className) == 0) {
1158-
break;
11591158
}
11601159
}
11611160
// sai is now either the instantiated one, or a free one

AI/Skirmish/AAI/AAI.cpp

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,33 @@
77
// Released under GPL license: see LICENSE.html for more information.
88
// -------------------------------------------------------------------------
99

10-
#include <set>
1110
#include <math.h>
12-
#include <stdio.h>
1311
#include <stdarg.h>
12+
#include <time.h>
1413

1514
#include "AAI.h"
15+
#include "AAIBuildTable.h"
16+
#include "AAIAirForceManager.h"
17+
#include "AAIExecute.h"
18+
#include "AAIUnitTable.h"
19+
#include "AAIBuildTask.h"
20+
#include "AAIBrain.h"
21+
#include "AAIConstructor.h"
22+
#include "AAIAttackManager.h"
23+
#include "AIExport.h"
24+
#include "AAIConfig.h"
25+
#include "AAIMap.h"
26+
#include "AAIGroup.h"
27+
#include "AAISector.h"
28+
29+
30+
#include "System/Util.h"
31+
32+
#include "LegacyCpp/IGlobalAICallback.h"
33+
#include "LegacyCpp/UnitDef.h"
34+
using namespace springLegacyAI;
35+
36+
1637

1738
#include "CUtils/SimpleProfiler.h"
1839
#define AAI_SCOPED_TIMER(part) SCOPED_TIMER(part, profiler);
@@ -146,7 +167,7 @@ void AAI::InitAI(IGlobalAICallback* callback, int team)
146167

147168
SNPRINTF(team_number, 3, "%d", team);
148169

149-
STRCPY(buffer, MAIN_PATH);
170+
STRCPY(buffer, "");
150171
STRCAT(buffer, AILOG_PATH);
151172
STRCAT(buffer, "AAI_log_team_");
152173
STRCAT(buffer, team_number);

0 commit comments

Comments
 (0)