/* This file is part of Sanmill. Copyright (C) 2019-2021 The Sanmill developers (see AUTHORS file) Sanmill is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Sanmill is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #ifndef CONFIG_H #define CONFIG_H #include "debug.h" #if _MSC_VER >= 1600 #pragma execution_character_set("utf-8") #endif /// If qmake is used and QT + = GUI is included in the configuration, QT_GUI_LIB will be defined automatically. /// If qmake is not used, QT_GUI_LIB is defined by Visual C++ .vcxproj file. //#undef QT_GUI_LIB /// In UCI, do move when the opponent has done moving, usually for the test. //#define UCI_AUTO_RE_GO /// In UCI, restart the game when the game is over, usually for the test. //#define UCI_AUTO_RESTART /// In UCI, AI will do the best move when the best move is searched. //#define UCI_DO_BEST_MOVE /// Print position analysis information. #define ANALYZE_POSITION /// FLUTTER_UI is defined by CMakeList.txt of flutter_app. #ifdef FLUTTER_UI #undef QT_GUI_LIB #undef ANALYZE_POSITION #endif #ifdef UCI_AUTO_RESTART #define UCI_AUTO_RE_GO #endif #define NET_FIGHT_SUPPORT /// Qt simple GUI like a mobile app (WIP) //#define QT_MOBILE_APP_UI //#define QT_UI_TEST_MODE //#define UCT_DEMO /// Principal Variation Search //#define PVS_AI /// MTD(f) #define MTDF_AI #ifndef DISABLE_PERFECT_AI #ifdef _MSC_VER #ifndef __clang__ //#define MADWEASEL_MUEHLE_PERFECT_AI #endif #ifdef MADWEASEL_MUEHLE_PERFECT_AI #define MADWEASEL_MUEHLE_RULE #endif #endif #endif //#define MADWEASEL_MUEHLE_PERFECT_AI_TEST //#define DEBUG_MODE #define DEFAULT_RULE_NUMBER 2 #define DEPTH_ADJUST (0) //#define TIME_STAT //#define CYCLE_STAT //#define SORT_MOVE_WITHOUT_HUMAN_KNOWLEDGES #define TRANSPOSITION_TABLE_ENABLE #ifdef TRANSPOSITION_TABLE_ENABLE #define CLEAR_TRANSPOSITION_TABLE #define TRANSPOSITION_TABLE_FAKE_CLEAN //#define TRANSPOSITION_TABLE_FAKE_CLEAN_NOT_EXACT_ONLY //#define TRANSPOSITION_TABLE_64BIT_KEY //#define TT_MOVE_ENABLE //#define TRANSPOSITION_TABLE_DEBUG #endif //#define DISABLE_PREFETCH //#define BITBOARD_DEBUG #ifndef USE_POPCNT #define USE_POPCNT #endif #ifndef USE_POPCNT #define DONOT_USE_POPCNT #endif /// Opening book (WIP) //#define OPENING_BOOK /// Endgame learning (WIP) //#define ENDGAME_LEARNING //#define ENDGAME_LEARNING_FORCE /// The threefold repetition rule (also known as repetition of position) states that /// the game is drawn if the same position occurs three times. #define THREEFOLD_REPETITION /// The game is drawn if there has been no removal in a specific number of moves. #define RULE_50 //#define MESSAGEBOX_ENABLE #ifdef DEBUG_MODE #define DONOT_PLAY_SOUND #endif //#define DONOT_PLAY_SOUND #ifdef DEBUG_MODE #define PLAYER_DRAW_SEAT_NUMBER #endif #ifndef QT_MOBILE_APP_UI #define SAVE_GAMEBOOK_WHEN_ACTION_NEW_TRIGGERED #endif //#define DONOT_PLAY_WIN_SOUND //#define GAME_PLACING_SHOW_REMOVED_PIECES //#define SHOW_MAXIMIZED_ON_LOAD #define DISABLE_HASHBUCKET #define HASHMAP_NOLOCK //#define ALIGNED_LARGE_PAGES #ifdef WIN32 #pragma warning(disable: 4996) #endif #ifndef __GNUC__ #define __builtin_expect(expr, n) (expr) #endif #define likely(expr) (__builtin_expect(!!(expr), 1)) #define unlikely(expr) (__builtin_expect(!!(expr), 0)) #ifdef FLUTTER_UI #include "base.h" #endif // FLUTTER_UI #endif // CONFIG_H