project(BWAPI-Client CXX)

# Define this variable BWAPI_CUSTOM_COMPILE_FLAGS to set your compile flags
IF(BWAPI_CUSTOM_COMPILE_FLAGS)
    ADD_DEFINITIONS(${BWAPI_CUSTOM_COMPILE_FLAGS})
ENDIF(BWAPI_CUSTOM_COMPILE_FLAGS)

IF (CMAKE_BUILD_TYPE STREQUAL "Debug")
    SET(BWAPICLIENT_LIB_NAME BWAPIClientd)
    SET(CMAKE_CONFIGURATION_TYPES "Debug" CACHE STRING "" FORCE)
ELSE ()
    SET(BWAPICLIENT_LIB_NAME BWAPIClient)
    SET(CMAKE_CONFIGURATION_TYPES "Release" CACHE STRING "" FORCE)
ENDIF ()

ADD_DEFINITIONS(/DNOMINMAX=1)

GET_FILENAME_COMPONENT(BWAPI_ROOT ../../bwapi ABSOLUTE)

set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${BWAPI_ROOT}/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${BWAPI_ROOT}/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${BWAPI_ROOT}/lib)

SET(BWAPI_INCL_DIR ${BWAPI_ROOT}/include)
INCLUDE_DIRECTORIES(
        ${BWAPI_INCL_DIR}
        ${BWAPI_INCL_DIR}/BWAPI/Client
        ${BWAPI_ROOT}/Storm
        )

SET(BWAPI_CLIENT_DIR ${BWAPI_ROOT}/BWAPIClient/Source)
INCLUDE_DIRECTORIES(${BWAPI_CLIENT_DIR})
SET(BWAPI_CLIENT_SRC
        ${BWAPI_CLIENT_DIR}/BulletImpl.cpp
        ${BWAPI_CLIENT_DIR}/Client.cpp
        ${BWAPI_CLIENT_DIR}/Command.h
        ${BWAPI_CLIENT_DIR}/Convenience.h
        ${BWAPI_CLIENT_DIR}/ForceImpl.cpp
        ${BWAPI_CLIENT_DIR}/GameImpl.cpp
        ${BWAPI_CLIENT_DIR}/PlayerImpl.cpp
        ${BWAPI_CLIENT_DIR}/RegionImpl.cpp
        ${BWAPI_CLIENT_DIR}/UnitImpl.cpp
        )
SOURCE_GROUP("BWAPI/Client" FILES ${BWAPI_CLIENT_SRC})

SET(BWAPI_UTIL_DIR ${BWAPI_ROOT}/Util/Source)
INCLUDE_DIRECTORIES(${BWAPI_UTIL_DIR})
SET(BWAPI_UTIL_SRC
        ${BWAPI_ROOT}/Storm/storm.cpp
        ${BWAPI_ROOT}/Storm/storm.h
        ${BWAPI_UTIL_DIR}/Util/Clamp.h
        ${BWAPI_UTIL_DIR}/Util/Convenience.h
        ${BWAPI_UTIL_DIR}/Util/Exceptions.cpp
        ${BWAPI_UTIL_DIR}/Util/Exceptions.h
        ${BWAPI_UTIL_DIR}/Util/MemoryFrame.cpp
        ${BWAPI_UTIL_DIR}/Util/MemoryFrame.h
        ${BWAPI_UTIL_DIR}/Util/Mutex.cpp
        ${BWAPI_UTIL_DIR}/Util/Mutex.h
        ${BWAPI_UTIL_DIR}/Util/Path.h
        ${BWAPI_UTIL_DIR}/Util/RemoteProcess.cpp
        ${BWAPI_UTIL_DIR}/Util/RemoteProcess.h
        ${BWAPI_UTIL_DIR}/Util/RemoteProcessID.h
        ${BWAPI_UTIL_DIR}/Util/sha1.cpp
        ${BWAPI_UTIL_DIR}/Util/sha1.h
        ${BWAPI_UTIL_DIR}/Util/SharedMemory.cpp
        ${BWAPI_UTIL_DIR}/Util/SharedMemory.h
        ${BWAPI_UTIL_DIR}/Util/SharedStructure.h
        ${BWAPI_UTIL_DIR}/Util/StringUtil.h
        ${BWAPI_UTIL_DIR}/Util/Types.h
        )
SOURCE_GROUP("BWAPI/Util" FILES ${BWAPI_UTIL_SRC})

SET(BWAPI_SHARED_DIR ${BWAPI_ROOT}/Shared)
INCLUDE_DIRECTORIES(${BWAPI_SHARED_DIR})
SET(BWAPI_SHARED_SRC
        ${BWAPI_SHARED_DIR}/BulletShared.cpp
        ${BWAPI_SHARED_DIR}/ForceShared.cpp
        ${BWAPI_SHARED_DIR}/GameShared.cpp
        ${BWAPI_SHARED_DIR}/PlayerShared.cpp
        ${BWAPI_SHARED_DIR}/RegionShared.cpp
        ${BWAPI_SHARED_DIR}/Templates.h
        ${BWAPI_SHARED_DIR}/UnitShared.cpp
        )
SOURCE_GROUP("BWAPI/Shared" FILES ${BWAPI_SHARED_SRC})

ADD_LIBRARY(${BWAPICLIENT_LIB_NAME} STATIC
        ${BWAPI_CLIENT_SRC}
        ${BWAPI_UTIL_SRC}
        ${BWAPI_SHARED_SRC}
        )
SET_TARGET_PROPERTIES(${BWAPICLIENT_LIB_NAME} PROPERTIES LINKER_LANGUAGE CXX)
