1 /* Operating system specific defines to be used when targeting GCC for 2 hosting on Windows 32/64 via mingw-w64 runtime, using GNU tools and 3 the Windows API Library. 4 Copyright (C) 2009, 5 2009 Free Software Foundation, Inc. 6 7 This file is part of GCC. 8 9 GCC is free software; you can redistribute it and/or modify 10 it under the terms of the GNU General Public License as published by 11 the Free Software Foundation; either version 3, or (at your option) 12 any later version. 13 14 GCC is distributed in the hope that it will be useful, 15 but WITHOUT ANY WARRANTY; without even the implied warranty of 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 GNU General Public License for more details. 18 19 You should have received a copy of the GNU General Public License 20 along with GCC; see the file COPYING3. If not see 21 <http://www.gnu.org/licenses/>. */ 22 23 /* Enable -municode feature. */ 24 25 #undef CPP_SPEC 26 #define CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{mthreads:-D_MT} \ 27 %{municode:-DUNICODE}" 28 29 #undef STARTFILE_SPEC 30 #define STARTFILE_SPEC "%{shared|mdll:dllcrt2%O%s} \ 31 %{!shared:%{!mdll:%{!municode:crt2%O%s}}} \ 32 %{!shared:%{!mdll:%{municode:crt2u%O%s}}} \ 33 %{pg:gcrt2%O%s} \ 34 crtbegin.o%s" 35 36 /* Enable multilib. */ 37 38 #undef ASM_SPEC 39 #define ASM_SPEC "%{v:-v} %{n} %{T} %{Ym,*} %{Yd,*} \ 40 %{Wa,*:%*} %{m32:--32} %{m64:--64}" 41 42 #undef SPEC_32 43 #undef SPEC_64 44 #if TARGET_64BIT_DEFAULT 45 #define SPEC_32 "m32" 46 #define SPEC_64 "!m32" 47 #else 48 #define SPEC_32 "!m64" 49 #define SPEC_64 "m64" 50 #endif 51 52 #undef SUB_LINK_ENTRY32 53 #undef SUB_LINK_ENTRY64 54 #define SUB_LINK_ENTRY32 "-e _DllMainCRTStartup@12" 55 #if defined(USE_MINGW64_LEADING_UNDERSCORES) 56 #define SUB_LINK_ENTRY64 "-e _DllMainCRTStartup" 57 #else 58 #define SUB_LINK_ENTRY64 "-e DllMainCRTStartup" 59 #endif 60 61 #undef SUB_LINK_SPEC 62 #undef SUB_LINK_ENTRY 63 #define SUB_LINK_SPEC "%{" SPEC_64 ":-m i386pep} %{" SPEC_32 ":-m i386pe}" 64 #define SUB_LINK_ENTRY "%{" SPEC_64 ":" SUB_LINK_ENTRY64 "} %{" SPEC_32 ":" SUB_LINK_ENTRY32 "}" 65 66 #undef MULTILIB_DEFAULTS 67 #if TARGET_64BIT_DEFAULT 68 #define MULTILIB_DEFAULTS { "m64" } 69 #else 70 #define MULTILIB_DEFAULTS { "m32" } 71 #endif 72 73 #undef LINK_SPEC 74 #define LINK_SPEC SUB_LINK_SPEC " %{mwindows:--subsystem windows} \ 75 %{mconsole:--subsystem console} \ 76 %{shared: %{mdll: %eshared and mdll are not compatible}} \ 77 %{shared: --shared} %{mdll:--dll} \ 78 %{static:-Bstatic} %{!static:-Bdynamic} \ 79 %{shared|mdll: " SUB_LINK_ENTRY " --enable-auto-image-base} \ 80 %(shared_libgcc_undefs)" 81