Implemented %copy_dir_recursive with a Python script
[aros:aros.git] / AROS / config / make.cfg.in
1 # Copyright © 1995-2011, The AROS Development Team. All rights reserved.
2 # $Id$
3 #
4 # Static makefile rule file for AROS.
5
6 ifneq ($(AROS_TARGET_VARIANT),)
7 AROS_TARGET_SUFFIX=-$(AROS_TARGET_VARIANT)
8 ifeq ($(AROS_TARGET_ARCH),pc)
9 # 'pc' target has 'tiny' variant for boot floppy, which affects only GRUB options.
10 # It should not affect AROS_TARGET_PLATFORM
11 AROS_TARGET_PLATFORM := $(AROS_TARGET_ARCH)-$(AROS_TARGET_CPU)
12 else
13 AROS_TARGET_PLATFORM := $(AROS_TARGET_VARIANT)-$(AROS_TARGET_CPU)
14 endif
15 else
16 AROS_TARGET_SUFFIX=
17 AROS_TARGET_PLATFORM := $(AROS_TARGET_ARCH)-$(AROS_TARGET_CPU)
18 endif
19
20 # All files corresponding to a specific host go here.
21 HOSTDIR     := $(TOP)/bin/$(AROS_HOST_ARCH)-$(AROS_HOST_CPU)
22 TOOLDIR     := $(HOSTDIR)/tools
23
24 HOSTGENDIR  := $(HOSTDIR)/gen
25
26 # All files corresponding to a specific target go here.
27 TARGETDIR   := $(TOP)/bin/$(AROS_TARGET_ARCH)-$(AROS_TARGET_CPU)$(AROS_TARGET_SUFFIX)
28
29 GENDIR      := $(TARGETDIR)/gen
30
31 -include $(GENDIR)/config/make.defaults
32 -include $(GENDIR)/config/make.opts
33
34 # target.cfg *must* come before host.cfg
35 include $(GENDIR)/config/target.cfg
36 include $(HOSTGENDIR)/config/host.cfg
37
38 # Cross tools installation directory.
39 CROSSTOOLSDIR        := @AROS_CROSSTOOLSDIR@
40
41 # Files downloaded from the net are put here
42 PORTSSOURCEDIR       := @AROS_PORTSSRCDIR@
43 PORTSDIR             := $(TARGETDIR)/Ports
44
45 # Distributable Files we generate are put here
46 DISTDIR              := @AROS_BUILDDIR_UNIX@/distfiles
47
48 # File for AROS gcc cross compiler spec file
49 SPECS                := $(GENDIR)/config/specs
50
51 # This is the directory structure for an AROS system.
52 AROSDIR              := $(TARGETDIR)/AROS
53
54 # Relative paths for standard directories
55 AROS_DIR_C           := C
56 AROS_DIR_CLASSES     := Classes
57 AROS_DIR_DATATYPES   := $(AROS_DIR_CLASSES)/Datatypes
58 AROS_DIR_GADGETS     := $(AROS_DIR_CLASSES)/Gadgets
59 AROS_DIR_DEVS        := Devs
60 AROS_DIR_EXPANSION   := Expansion
61 AROS_DIR_FS          := L
62 AROS_DIR_LIBS        := Libs
63 AROS_DIR_LOCALE      := Locale
64 AROS_DIR_S           := S
65 AROS_DIR_DEVELOPMENT := Development
66 AROS_DIR_INCLUDE     := $(AROS_DIR_DEVELOPMENT)/include
67 AROS_DIR_LIB         := $(AROS_DIR_DEVELOPMENT)/lib
68 AROS_DIR_CONTRIB     := Extras
69
70 # Absolute paths for standard directories
71 AROS_C               := $(AROSDIR)/$(AROS_DIR_C)
72 AROS_CLASSES         := $(AROSDIR)/$(AROS_DIR_CLASSES)
73 AROS_DATATYPES       := $(AROSDIR)/$(AROS_DIR_DATATYPES)
74 AROS_GADGETS         := $(AROSDIR)/$(AROS_DIR_GADGETS)
75 AROS_DEVS            := $(AROSDIR)/$(AROS_DIR_DEVS)
76 AROS_EXPANSION       := $(AROSDIR)/$(AROS_DIR_EXPANSION)
77 AROS_FS              := $(AROSDIR)/$(AROS_DIR_FS)
78 AROS_RESOURCES       := $(AROS_DEVS)
79 AROS_DRIVERS         := $(AROS_DEVS)/Drivers
80 AROS_LIBS            := $(AROSDIR)/$(AROS_DIR_LIBS)
81 AROS_LOCALE          := $(AROSDIR)/$(AROS_DIR_LOCALE)
82 AROS_CATALOGS        := $(AROS_LOCALE)/Catalogs
83 AROS_HELP            := $(AROS_LOCALE)/Help
84 AROS_PREFS           := $(AROSDIR)/Prefs
85 AROS_ENVARC          := $(AROS_PREFS)/Env-Archive
86 AROS_PACKAGES        := $(AROS_ENVARC)/SYS/Packages
87 AROS_PRINTERS        := $(AROS_DEVS)/Printers
88 AROS_S               := $(AROSDIR)/$(AROS_DIR_S)
89 AROS_SYSTEM          := $(AROSDIR)/System
90 AROS_WANDERER        := $(AROS_SYSTEM)/Wanderer
91 AROS_THEMES          := $(AROS_PREFS)/Presets/Themes
92 AROS_IMAGES          := $(AROS_SYSTEM)/Images
93 AROS_TOOLS           := $(AROSDIR)/Tools
94 AROS_UTILITIES       := $(AROSDIR)/Utilities
95 AROS_TESTS           := $(AROSDIR)/Tests
96
97 AROS_DEVELOPMENT     := $(AROSDIR)/$(AROS_DIR_DEVELOPMENT)
98 AROS_INCLUDES        := $(AROSDIR)/$(AROS_DIR_INCLUDE)
99 AROS_LIB             := $(AROSDIR)/$(AROS_DIR_LIB)
100
101 AROS_CONTRIB         := $(AROSDIR)/$(AROS_DIR_CONTRIB)
102
103 # The generated files all go under the GENDIR path
104 SCRIPTDIR            := $(GENDIR)/scripts
105
106 MKDEPEND             := $(SRCDIR)/scripts/mkdep
107 FETCH                := $(SRCDIR)/scripts/fetch.sh
108 CPYDIRREC            := @PYTHON@ $(SRCDIR)/scripts/cpy-dir-rec.py
109
110 # The paths to the generated tools
111 TOOLDIR         := $(HOSTDIR)/tools
112 TOOLLIB         := $(TOOLDIR)/libtool.a
113 MMAKE           := $(TOOLDIR)/mmake$(HOST_EXE_SUFFIX)
114 ARCHTOOL        := $(TOOLDIR)/archtool$(HOST_EXE_SUFFIX)
115 ELF2HUNK        := $(TOOLDIR)/elf2hunk$(HOST_EXE_SUFFIX)
116 GENMF           := $(TOOLDIR)/genmf.py
117 FLEXCAT         := $(TOOLDIR)/flexcat$(HOST_EXE_SUFFIX)
118 FD2INLINE       := $(TOOLDIR)/fd2inline$(HOST_EXE_SUFFIX)
119 FD2PRAGMA       := $(TOOLDIR)/fd2pragma$(HOST_EXE_SUFFIX)
120 SFDC            := $(TOOLDIR)/sfdc
121 MODTOOL         := $(TOOLDIR)/modtool$(HOST_EXE_SUFFIX)
122 CREATEDTDESC    := $(TOOLDIR)/createdtdesc$(HOST_EXE_SUFFIX)
123 AFSLIB          := $(TOOLDIR)/libafs.a
124 COPYTOAFS       := $(TOOLDIR)/copytoafs$(HOST_EXE_SUFFIX)
125 ILBMTOC         := $(TOOLDIR)/ilbmtoc$(HOST_EXE_SUFFIX)
126 ILBMTOICON      := $(TOOLDIR)/ilbmtoicon$(HOST_EXE_SUFFIX)
127 INFOINFO        := $(TOOLDIR)/infoinfo$(HOST_EXE_SUFFIX)
128 GENSETS         := $(TOOLDIR)/gensets$(HOST_EXE_SUFFIX)
129 COLLECT-AROS    := $(TOOLDIR)/collect-aros$(HOST_EXE_SUFFIX)
130 GENMODULE       := $(TOOLDIR)/genmodule$(HOST_EXE_SUFFIX)
131 CXREF           := $(TOOLDIR)/cxref$(HOST_EXE_SUFFIX)
132 SETREV          := $(TOOLDIR)/setrev$(HOST_EXE_SUFFIX)
133 MKSUNXIBOOT     := $(TOOLDIR)/mksunxiboot$(HOST_EXE_SUFFIX)
134
135 RESIDENT_BEGIN  := compiler/libinit/libentry
136
137 AROS_CC         := $(TARGET_CC)
138 ifneq ($(TARGET_CXX),)
139 AROS_CXX        := $(TARGET_CXX)
140 else
141 AROS_CXX        := $(CROSSTOOLSDIR)/$(AROS_TARGET_CPU)-aros-g++
142 endif
143 AROS_CXXEXTS    := cpp cxx cc c++
144 AROS_AS         := $(TARGET_AS)
145 AROS_LD         := $(TARGET_LD)
146
147 STRIP           := $(TARGET_STRIP)
148
149 CALL            := env AROS_HOST_ARCH=$(AROS_HOST_ARCH) AROS_HOST_CPU=$(AROS_HOST_CPU) \
150                        AROS_TARGET_ARCH=$(AROS_TARGET_ARCH) AROS_TARGET_CPU=$(AROS_TARGET_CPU) \
151                        AROS_TARGET_VARIANT=$(AROS_TARGET_VARIANT) AROS_TARGET_SUFFIX=$(AROS_TARGET_SUFFIX)
152
153 # At the moment we have two copies of the includes...
154 # This is the AROS includes, minus clib/mlib.
155 GENINCDIR       := $(GENDIR)/include
156
157 # Basic make configuration. No need to edit anything else under here.
158
159 .SUFFIXES :
160 .SUFFIXES : .c .h .d .s .S
161
162 .PHONY : all clean setup subdirs
163
164 # Was debugging enabled? Better set up the options.
165 ifeq ($(DEBUG),yes)
166 CONFIG_CFLAGS += $(DEBUG_CFLAGS)
167 CONFIG_AFLAGS += $(DEBUG_AFLAGS)
168 CONFIG_LDFLAGS += $(DEBUG_LDFLAGS)
169 HOST_CFLAGS += $(DEBUG_CFLAGS)
170 HOST_CXXFLAGS += $(DEBUG_CFLAGS) $(DEBUG_CXXFLAGS)
171 HOST_AFLAGS += $(DEBUG_AFLAGS)
172 HOST_LDFLAGS += $(DEBUG_LDFLAGS)
173 MECHO   := $(ECHO)
174 else
175 MECHO   := $(NOP)
176 endif
177
178 # C and assembly flags are set depending upon the directory
179 CFLAGS      = $(USER_INCLUDES) $(CONFIG_CFLAGS) $(USER_CFLAGS)
180 AFLAGS      = $(USER_AFLAGS) $(CONFIG_AFLAGS)
181 LDFLAGS     = $(USER_LDFLAGS) $(CONFIG_LDFLAGS)
182
183 # Apple iOS stuff for gcc
184 IOS_LDFLAGS  := -F$(IOS_SDK_PATH)/System/Library/Frameworks
185
186 # Compatibility with old variables
187
188
189 OBJDIR          :=      $(GENDIR)/$(CURDIR)
190 BINDIR          :=      $(AROSDIR)
191 EXEDIR          :=      $(AROSDIR)/C
192 LIBDIR          :=      $(AROS_LIB)
193 CONTRIBDIR      :=      $(AROS_CONTRIB)
194 OSGENDIR        :=      $(GENDIR)/rom
195 KOBJSDIR        :=      $(GENDIR)/kobjs
196 PKGDIR          :=      $(GENDIR)/pkg
197
198 # the build system needs to have some tools in the PATH
199
200 ifeq ($(AROS_PATH_SET),)
201     TMP_TOOLDIR       := $(shell echo $(TOOLDIR) | sed 's/^\(.\):\//\/\1\//')
202     TMP_CROSSTOOLSDIR := $(shell echo $(CROSSTOOLSDIR) | sed 's/^\(.\):\//\/\1\//')
203     PATH := $(TMP_CROSSTOOLSDIR):$(TMP_TOOLDIR):$(TMP_TOOLDIR)/$(AROS_TARGET_CPU)-$(AROS_TARGET_ARCH)$(AROS_TARGET_SUFFIX):$(PATH)
204     AROS_PATH_SET := yes
205     export PATH AROS_PATH_SET
206 endif
207
208 # Here follow some global variables that can get values through the makefile
209 # and will be handled in make.tail
210
211 # Dirs to create a makedir rule for
212 GLOB_MKDIRS :=
213
214 # Source directory is added to the target search path
215 VPATH := $(shell echo $(SRCDIR)/$(CURDIR) | sed 's/^\(.\):\//\/\1\//')
216
217 # Macro for expanding wildcards in source directory
218 # We use shell script here in order to avoid Unicode file names that are listed by pattern expansion but can't be accessed
219 # because of failing Unicode->ACP conversion under Windows
220 WILDCARD = $(shell cd $(SRCDIR)/$(CURDIR); for file in $(1); do if [ -f $$file ]; then printf "%s" "$$file "; fi; done)