Changeset - r19073:8fe02d56e14c
[Not reviewed]
master
0 7 0
smatz - 13 years ago 2012-02-12 21:17:32
smatz@openttd.org
(svn r23941) -Add: support for clang
7 files changed with 78 insertions and 12 deletions:
0 comments (0 inline, 0 general)
config.lib
Show inline comments
 
@@ -1159,11 +1159,11 @@ make_compiler_cflags() {
 
		if [ -z "$first_time_icc_check" ]; then
 
			first_time_icc_check=no
 
			if [ $cc_version -lt 90 ]; then
 
				log 1 "WARNING: you seem to be using very old version of ICC"
 
				log 1 "WARNING: you seem to be using a very old version of ICC"
 
				log 1 "WARNING: OpenTTD hasn't been tested with this version"
 
				sleep 5
 
			elif [ $cc_version -lt 120 ]; then
 
				log 1 "WARNING: you seem to be using unsupported ICC version"
 
				log 1 "WARNING: you seem to be using an unsupported ICC version"
 
				log 1 "WARNING: ICC older than 12.0 is known to fail to compile OpenTTD"
 
				sleep 5
 
			fi
 
@@ -1236,6 +1236,58 @@ make_compiler_cflags() {
 
				features="$features lto"
 
			fi
 
		fi
 
	elif [ `basename $1 | grep 'clang'` ]; then
 
		# Enable some things only for certain clang versions
 
		cc_version="`$1 -v 2>&1 | head -n 1 | sed s@[^0-9]@@g | cut -c 1-2`"
 

	
 
		# aliasing rules are not held in openttd code
 
		flags="$flags -fno-strict-aliasing"
 

	
 
		# -W alone doesn't enable all warnings enabled by -Wall; on the other hand,
 
		# -Weverything enables too many useless warnings that can't be disabled (as of 3.0)
 
		flags="$flags -Wall -W"
 

	
 
		# warning: unused parameter '...'
 
		flags="$flags -Wno-unused-parameter"
 

	
 
		# warning: expression result unused
 
		flags="$flags -Wno-unused-value"
 

	
 
		# warning: multi-character character constant
 
		flags="$flags -Wno-multichar"
 

	
 
		# warning: explicitly assigning a variable of type '...' to itself
 
		# it happens when using the FOR_ALL_WINDOWS_FROM_BACK_FROM macro
 
		flags="$flags -Wno-self-assign"
 

	
 
		if [ "$cc_version" -lt "30" ]; then
 
			# warning: equality comparison with extraneous parentheses
 
			flags="$flags -Wno-parentheses"
 
			# warning: operands of ? are integers of different signs: 'unsigned int' and 'int'
 
			flags="$flags -Wno-sign-compare"
 
		fi
 

	
 
		if [ "$cc_version" -ge "30" ]; then
 
			# warning: equality comparison with extraneous parentheses
 
			# this warning could be useful, but it warns about code in squirrel
 
			flags="$flags -Wno-parentheses-equality"
 
		fi
 

	
 
		if [ "$with_ccache" != "0" -o "$with_distcc" != "0" ]; then
 
			# ccache and distcc run separate preprocess and compile passes,
 
			# both are fed with the same CFLAGS. Unfortunately, clang
 
			# complains about -I when compiling preprocessed files:
 
			# "clang: warning: argument unused during compilation: '-I /usr/include'"
 
			flags="$flags -Qunused-arguments"
 
		fi
 

	
 
		if [ "$enable_assert" -eq "0" ]; then
 
			# do not warn about unused variables when building without asserts
 
			flags="$flags -Wno-unused-variable"
 
		fi
 

	
 
		# rdynamic is used to get useful stack traces from crash reports.
 
		ldflags="$ldflags -rdynamic"
 
	else
 
		# Enable some things only for certain GCC versions
 
		cc_version=`$1 -dumpversion | cut -c 1,3`
readme.txt
Show inline comments
 
OpenTTD readme
 
Last updated:    2012-02-04
 
Last updated:    2012-02-12
 
Release version: 1.2.0-beta4
 
------------------------------------------------------------------------
 

	
 
@@ -501,6 +501,8 @@ The following compilers are known to com
 
    Versions 4.4 - 4.6 give bogus warnings about freeing non-heap objects.
 
    Versions 4.5 and later give invalid warnings when lto is enabled.
 
  - Intel C++ Compiler (ICC) 12.0.
 
  - Clang/LLVM 2.9 - 3.0
 
    Version 2.9 gives bogus warnings about code nonconformity.
 

	
 
The following compilers are known not to compile OpenTTD:
 
  - Microsoft Visual C++ (MSVC) 2003 and earlier.
 
@@ -510,7 +512,7 @@ The following compilers are known not to
 
    Version 10.0 and earlier fail a configure check and fail with recent system
 
        headers.
 
    Version 10.1 fails to compile station_gui.cpp.
 
    Version 11.1 fails with internal error when compiling network.cpp.
 
    Version 11.1 fails with an internal error when compiling network.cpp.
 
  - Clang/LLVM 2.8 and earlier.
 
  - (Open) Watcom.
 

	
src/core/pool_func.hpp
Show inline comments
 
@@ -107,7 +107,11 @@ DEFINE_POOL_METHOD(inline void *)::Alloc
 
		assert(sizeof(Titem) == size);
 
		item = (Titem *)this->alloc_cache;
 
		this->alloc_cache = this->alloc_cache->next;
 
		if (Tzero) MemSetT(item, 0);
 
		if (Tzero) {
 
			/* Explicitly casting to (void *) prevets a clang warning -
 
			 * we are actually memsetting a (not-yet-constructed) object */
 
			memset((void *)item, 0, sizeof(Titem));
 
		}
 
	} else if (Tzero) {
 
		item = (Titem *)CallocT<byte>(size);
 
	} else {
src/network/network_server.cpp
Show inline comments
 
@@ -2100,11 +2100,18 @@ void NetworkPrintClients()
 
{
 
	NetworkClientInfo *ci;
 
	FOR_ALL_CLIENT_INFOS(ci) {
 
		IConsolePrintF(CC_INFO, _network_server ? "Client #%1d  name: '%s'  company: %1d  IP: %s" : "Client #%1d  name: '%s'  company: %1d",
 
				ci->client_id,
 
				ci->client_name,
 
				ci->client_playas + (Company::IsValidID(ci->client_playas) ? 1 : 0),
 
				_network_server ? (ci->client_id == CLIENT_ID_SERVER ? "server" : NetworkClientSocket::GetByClientID(ci->client_id)->GetClientIP()) : "");
 
		if (_network_server) {
 
			IConsolePrintF(CC_INFO, "Client #%1d  name: '%s'  company: %1d  IP: %s",
 
					ci->client_id,
 
					ci->client_name,
 
					ci->client_playas + (Company::IsValidID(ci->client_playas) ? 1 : 0),
 
					ci->client_id == CLIENT_ID_SERVER ? "server" : NetworkClientSocket::GetByClientID(ci->client_id)->GetClientIP());
 
		} else {
 
			IConsolePrintF(CC_INFO, "Client #%1d  name: '%s'  company: %1d",
 
					ci->client_id,
 
					ci->client_name,
 
					ci->client_playas + (Company::IsValidID(ci->client_playas) ? 1 : 0));
 
		}
 
	}
 
}
 

	
src/script/api/script_object.hpp
Show inline comments
 
@@ -33,6 +33,7 @@ typedef bool (ScriptModeProc)();
 
 */
 
class ScriptObject : public SimpleCountedObject {
 
friend class ScriptInstance;
 
friend class ScriptController;
 
protected:
 
	/**
 
	 * A class that handles the current active instance. By instantiating it at
src/script/api/script_vehiclelist.cpp
Show inline comments
 
@@ -123,7 +123,7 @@ ScriptVehicleList_DefaultGroup::ScriptVe
 
	const Vehicle *v;
 
	FOR_ALL_VEHICLES(v) {
 
		if (v->owner == ScriptObject::GetCompany() && v->IsPrimaryVehicle()) {
 
			if (v->type == vehicle_type && v->group_id == ScriptGroup::GROUP_DEFAULT) this->AddItem(v->index);
 
			if (v->type == (::VehicleType)vehicle_type && v->group_id == ScriptGroup::GROUP_DEFAULT) this->AddItem(v->index);
 
		}
 
	}
 
}
src/strings.cpp
Show inline comments
 
@@ -288,7 +288,7 @@ static char *FormatNumber(char *buff, in
 
			quot = num / divisor;
 
			num = num % divisor;
 
		}
 
		if (tot |= quot || i >= max_digits - zerofill) {
 
		if ((tot |= quot) || i >= max_digits - zerofill) {
 
			buff += seprintf(buff, last, "%i", (int)quot);
 
			if ((i % 3) == thousands_offset && i < max_digits - 1 - fractional_digits) buff = strecpy(buff, separator, last);
 
		}
0 comments (0 inline, 0 general)