--add the 0 so the solution comes first in the directory (when sorted on name)
--print "uncomment this hello premake4 world for debugging the script"

solution "0BulletSolution"

	 newoption {
    trigger     = "ios",
    description = "Enable iOS target (requires xcode4)"
  }
  
	newoption {
		trigger = "without-demos",
	  description = "Disable demos and extras"	
	}

	newoption {
    trigger     = "with-double-precision",
    description = "Enable double precision build"
  }


	newoption {
    trigger     = "with-nacl",
    description = "Enable Native Client build"
  }
  
  newoption {
    trigger     = "with-dx11",
    description = "Enable DirectX11 build"
  }
  
   newoption {
    trigger     = "with-opencl",
    description = "Enable OpenCL builds (various SDKs)"
  }

   newoption {
    trigger     = "with-opencl-amd",
    description = "Enable OpenCL builds (AMD SDK)"
  }

   newoption {
    trigger     = "with-opencl-intel",
    description = "Enable OpenCL builds (Intel SDK)"
  }
   newoption {
    trigger     = "with-opencl-nvidia",
    description = "Enable OpenCL builds (NVIDIA SDK)"
  }

  
	configurations {"Release", "Debug"}
	configuration "Release"
		flags { "Optimize", "EnableSSE", "StaticRuntime", "NoMinimalRebuild", "FloatFast"}
	configuration "Debug"
		flags { "Symbols", "StaticRuntime" , "NoMinimalRebuild", "NoEditAndContinue" ,"FloatFast"}
		
 if os.is("Linux") then
                if os.is64bit() then
                        platforms {"x64"}
                else
                        platforms {"x32"}
                end
        else
                platforms {"x32", "x64"}
        end

	--platforms {"x32"}

  configuration {"Windows"}
  	defines { "_CRT_SECURE_NO_WARNINGS","_CRT_SECURE_NO_DEPRECATE"}
  
	configuration{}

	postfix="";

  if _OPTIONS["with-double-precision"] then
  	defines {"BT_USE_DOUBLE_PRECISION"}
  end
  
	if _ACTION == "xcode4" then
		if _OPTIONS["ios"] then
			postfix = "ios";
			xcodebuildsettings
			{
				'INFOPLIST_FILE = "../../Test/Info.plist"',
				'CODE_SIGN_IDENTITY = "iPhone Developer"',
				"SDKROOT = iphoneos",
				'ARCHS = "armv7"',
				'TARGETED_DEVICE_FAMILY = "1,2"',
				'VALID_ARCHS = "armv7"',
			}	
			else
			xcodebuildsettings
			{
				'ARCHS = "$(ARCHS_STANDARD_32_BIT) $(ARCHS_STANDARD_64_BIT)"',
				'CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"',
				'VALID_ARCHS = "x86_64 i386"',
			}
		end
	else
	
	end

    act = ""
    
    if _ACTION then
        act = _ACTION
    end
	configuration {"x32"}
		targetsuffix ("_" .. act)
	configuration "x64"		
		targetsuffix ("_" .. act .. "_64" )
	configuration {"x64", "debug"}
		targetsuffix ("_" .. act .. "_x64_debug")
	configuration {"x64", "release"}
		targetsuffix ("_" .. act .. "_x64_release" )
	configuration {"x32", "debug"}
		targetsuffix ("_" .. act .. "_debug" )
	
	configuration{}



if not _OPTIONS["with-nacl"] then

	flags { "NoRTTI"}
	targetdir "../bin"

	-- Disable exception handling on MSVC 2008 and higher. MSVC 2005 without service pack has some linker issue (ConvexDecompositionDemo uses STL through HACD library)	
	if _ACTION == "vs2010" or _ACTION=="vs2008" then
		flags { "NoExceptions"}
		defines { "_HAS_EXCEPTIONS=0" }
	end

	-- Multithreaded compiling
	if _ACTION == "vs2010" then
		buildoptions { "/MP"  }
	end 


else
	targetdir "../bin_html"
end


	dofile ("findOpenCL.lua")
	dofile ("findDirectX11.lua")
	
	language "C++"
	
	location("./" .. act .. postfix)

	
	if _OPTIONS["with-dx11"] then
		include "../Demos/DX11ClothDemo"
		include "../src/BulletMultiThreaded/GpuSoftBodySolvers/DX11"
	end

--choose any OpenCL sdk that is installed on the system
	if _OPTIONS["with-opencl"] then
		include "../Demos/OpenCLClothDemo/AMD"
		include "../src/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/AMD"
		include "../Demos/OpenCLClothDemo/NVidia"
		include "../src/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/NVidia"
		include "../Demos/OpenCLClothDemo/Intel"
		include "../src/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/Intel"
	end

--choose a particular OpenCL sdk, this is useful for distributing project files that just work for one OpenCL SDK	
	if _OPTIONS["with-opencl-amd"] then
		include "../Demos/OpenCLClothDemo/AMD"
		include "../Demos/OpenGL"
		include "../Demos/SoftDemo/AMD"
		include "../src/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/AMD"
	end
  
  if _OPTIONS["with-opencl-intel"] then
		include "../Demos/OpenCLClothDemo/Intel"
		include "../src/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/Intel"
	end

  if _OPTIONS["with-opencl-nvidia"] then
		include "../Demos/OpenCLClothDemo/NVidia"
		include "../src/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/NVidia"
	end

	if not _OPTIONS["without-demos"] then
		if not _OPTIONS["ios"] then
		include "../Demos"
		end
  	include "../Extras"
  end
  
  
   if _OPTIONS["with-nacl"] then
  	include "../Demos/NativeClient"
  else
  	include "../src/LinearMath"	
		include "../src/BulletCollision"	
		include "../src/BulletDynamics"	
		include "../src/BulletSoftBody"	
	end
	
	include "../Test"
	include "../Demos/HelloWorld"
	include "../Demos/Benchmarks"
	
