# for debug: scons -Q debug=1
# for release: scons
import platform as plt
Import("env")
# узнать архитектуру машины
arch = plt.architecture()
sys_arhc = arch[0] # разрядность системы
exe_format = arch[1] # формат экзешника
libdir = "../lib/"
compiler = "g++"
inc_path = [
  ".",
  libdir,
  libdir + "zip",
  libdir + "vector",
  libdir + "OpenAL-soft",
  libdir + "freetype2"
]
lib_path = []
used_libs = ["pthread", "m", "freetype", "yaml-cpp"]
ld_flags = ["-fopenmp", "-static-libgcc", "-static-libstdc++"]
cpp_flags = ["-std=c++2a"]
defines = []
sources = ["main.cpp", libdir + "zip/zip/zip.c"]
if (exe_format == "ELF64"): # linux
  defines.append("-DLINUX")
  compiler = "clang++"
  used_libs.extend(["GL", "glfw"])
else: # windows
  defines.extend(["-DWINDOWS", "-DGLFW_DLL"])
  inc_path.extend([
    libdir + "yaml-cpp",
    libdir + "GLFW",
  ])
  used_libs.extend(["glfw3", "opengl32"])
  lib_path.extend([
    libdir + "freetype2",
    libdir + "yaml-cpp",
    libdir + "GLFW",
  ])
  ld_flags.append("-mwindows")
# правила для debug/release
debug = ARGUMENTS.get("debug", 0)
if int(debug):
  defines.append("-DDEBUG")
  cpp_flags.extend(["-O0", "-ggdb3"])
else: # release
  defines.extend(["-DRELEASE", "-DNDEBUG"])
  cpp_flags.extend(["-s", "-Ofast"])
  if (sys_arhc == "64bit"):
    cpp_flags.extend(["-m64", "-march=x86-64"])
  else: # 32bit
    cpp_flags.extend(["-m32", "-march=pentium2"])
# билд игры
env.Append(CPPDEFINES = defines)
env.Append(CXXFLAGS = cpp_flags)
env.Program(
  target = "../build/HPW",
  source = sources,
  CXX = compiler,
  CXXFLAGS = cpp_flags,
  LIBPATH = lib_path,
  CPPPATH = inc_path,
  LINKFLAGS = ld_flags,
  LIBS = used_libs
) # env.Program