1LEGACY = -D_MACH_I386_THREAD_STATUS_FPSTATE_LEGACY_FIELD_NAMES_ \ 2 -D_ARCHITECTURE_I386_FPU_FPSTATE_LEGACY_FIELD_NAMES_ 3 4KERN = -fno-builtin -finline -fno-keep-inline-functions -fsigned-bitfields \ 5 -msoft-float -nostdinc \ 6-I$(NEXT_ROOT)/System/Library/Frameworks/Kernel.framework/PrivateHeaders/libsa \ 7-I$(NEXT_ROOT)/System/Library/Frameworks/Kernel.framework/PrivateHeaders \ 8 -I$(NEXT_ROOT)/System/Library/Frameworks/Kernel.framework/Headers/libsa \ 9 -I$(NEXT_ROOT)/System/Library/Frameworks/Kernel.framework/Headers/bsd \ 10 -I$(NEXT_ROOT)/System/Library/Frameworks/Kernel.framework/Headers \ 11 -DKERNEL -DKERNEL_PRIVATE -DAPPLE -DNeXT -DLIBSA_PRIVATE 12 13ifeq "cctools_ofiles_Sim" "$(RC_ProjectName)" 14 S = _sim 15endif 16 17DEPENDENT_LIBS = -nodefaultlibs -umbrella System -L/usr/lib/system \ 18 -ldyld -lsystem_malloc -lsystem_c -lsystem_kernel -lcompiler_rt 19 20ifneq "" "$(SDKROOT)" 21 SDK = -isysroot $(SDKROOT) 22 CC = $(shell xcrun -find -sdk $(SDKROOT) cc) 23 STRIP = $(shell xcrun -find -sdk ${SDKROOT} strip) 24 DSYMUTIL = $(shell xcrun -find -sdk ${SDKROOT} dsymutil) 25else 26 STRIP = strip 27 DSYMUTIL = dsymutil 28endif 29 30OFLAG = -Os 31CFLAGS = $(OFLAG) -g -Wall $(LEGACY) \ 32 -I$(SRCROOT) -I$(SRCROOT)/../include -I$(OFILE_DIR) $(SDK) 33PG = -pg 34 35MKDIRS = /bin/mkdir -p 36SRCROOT = . 37SYMROOT = . 38OBJROOT = . 39OFILE_DIRS = $(OBJROOT)/shlib_obj $(OBJROOT)/profile_obj \ 40 $(OBJROOT)/optimized_obj $(OBJROOT)/dynamic_obj \ 41 $(OBJROOT)/ptmp_obj $(OBJROOT)/otmp_obj $(OBJROOT)/dtmp_obj \ 42 $(OBJROOT)/kld_obj $(OBJROOT)/ktmp_obj 43OFILE_DIR = $(OBJROOT) 44VPATH = $(OFILE_DIR) 45 46ARCHIVEDIR = /usr/local/lib/system 47DYLIBDIR = /usr/lib/system 48 49CFILES = arch.c getsecbyname.c getsegbyname.c get_end.c \ 50 swap.c hppa_swap.c i386_swap.c m68k_swap.c sparc_swap.c \ 51 ppc_swap.c i860_swap.c m88k_swap.c slot_name.c 52 53INSTALL_FILES = $(CFILES) $(HFILES) shlib.ofileList dylib.ofileList Makefile \ 54 notes 55 56OBJS = arch.o getsecbyname.o getsegbyname.o get_end.o swap.o \ 57 hppa_swap.o i386_swap.o m68k_swap.o sparc_swap.o ppc_swap.o \ 58 i860_swap.o m88k_swap.o slot_name.o 59 60ifeq "$(OLD_LIBKLD)" "YES" 61 KLD_OFILES = kld_ofiles 62else 63 KLD_OFILES = 64endif 65 66all: lib_ofiles 67 68lib_ofiles: $(OFILE_DIRS) $(SYMROOT) optimized_ofiles $(KLD_OFILES) \ 69 dynamic_ofiles profile_ofiles 70 71shlib_ofiles: $(OBJROOT)/shlib_obj 72 @if [ $(SRCROOT) = . ]; \ 73 then \ 74 (cd shlib_obj; \ 75 $(MAKE) -f ../Makefile $(OBJS) \ 76 VPATH=.. \ 77 OFILE_DIR=. \ 78 SRCROOT=.. \ 79 COPTS="-static -DSHLIB -I/LocalDeveloper/Headers/libsys" \ 80 LIBSTUFF="-L../../libstuff -lstuff_s" \ 81 OFLAG="$(OFLAG)" \ 82 RC_CFLAGS="$(RC_CFLAGS)" \ 83 RC_ARCHS="$(RC_ARCHS)"); \ 84 rm -f shlib_obj/libmacho.ofileList; \ 85 cp shlib.ofileList shlib_obj/libmacho.ofileList; \ 86 else \ 87 (cd $(OBJROOT)/shlib_obj; \ 88 $(MAKE) -f $(SRCROOT)/Makefile $(OBJS) \ 89 VPATH=$(SRCROOT) \ 90 OFILE_DIR=$(OBJROOT)/shlib_obj \ 91 SRCROOT=$(SRCROOT) \ 92 SYMROOT=$(SYMROOT) \ 93 COPTS="-static -DSHLIB -I/LocalDeveloper/Headers/libsys" \ 94 LIBSTUFF="-L$(SYMROOT)/../libstuff -lstuff_s" \ 95 OFLAG="$(OFLAG)" \ 96 RC_CFLAGS="$(RC_CFLAGS)" \ 97 RC_ARCHS="$(RC_ARCHS)"); \ 98 rm -f $(OBJROOT)/shlib_obj/libmacho.ofileList; \ 99 cp shlib.ofileList $(OBJROOT)/shlib_obj/libmacho.ofileList; \ 100 fi 101 102profile_ofiles: $(OBJROOT)/profile_obj $(OBJROOT)/ptmp_obj 103 @if [ $(SRCROOT) = . ]; \ 104 then \ 105 (cd ptmp_obj; \ 106 $(MAKE) -f ../Makefile libmacho_pg.a libmacho$S_profile.dylib \ 107 INSTALL_NAME=/usr/lib/system/libmacho$S_profile.dylib \ 108 VPATH=.. \ 109 OFILE_DIR=. \ 110 SRCROOT=.. \ 111 COPTS="-dynamic $(PG)" \ 112 LIBSTUFF="-L../../libstuff -lstuff_p" \ 113 OFLAG="$(OFLAG)" \ 114 RC_CFLAGS="$(RC_CFLAGS)" \ 115 RC_ARCHS="$(RC_ARCHS)"); \ 116 (cd profile_obj; rm -f $(OBJS)); \ 117 (cd ptmp_obj; cp $(OBJS) ../profile_obj); \ 118 rm -f dynamic_profile_obj; \ 119 ln -s ./profile_obj dynamic_profile_obj; \ 120 rm -f profile_obj/libmacho.ofileList; \ 121 cp dylib.ofileList profile_obj/libmacho.ofileList; \ 122 else \ 123 (cd $(OBJROOT)/ptmp_obj; \ 124 $(MAKE) -f $(SRCROOT)/Makefile libmacho_pg.a \ 125 libmacho$S_profile.dylib \ 126 INSTALL_NAME=/usr/lib/system/libmacho$S_profile.dylib \ 127 VPATH=$(SRCROOT) \ 128 OFILE_DIR=$(OBJROOT)/ptmp_obj \ 129 SRCROOT=$(SRCROOT) \ 130 SYMROOT=$(SYMROOT) \ 131 LIBSTUFF="-L$(SYMROOT)/../libstuff -lstuff_p" \ 132 COPTS="-dynamic $(PG)" \ 133 OFLAG="$(OFLAG)" \ 134 RC_CFLAGS="$(RC_CFLAGS)" \ 135 RC_ARCHS="$(RC_ARCHS)"); \ 136 (cd $(OBJROOT)/profile_obj; rm -f $(OBJS)); \ 137 (cd $(OBJROOT)/ptmp_obj; \ 138 cp $(OBJS) $(OBJROOT)/profile_obj); \ 139 rm -f $(OBJROOT)/dynamic_profile_obj; \ 140 ln -s ./profile_obj $(OBJROOT)/dynamic_profile_obj; \ 141 rm -f $(OBJROOT)/profile_obj/libmacho.ofileList; \ 142 cp dylib.ofileList $(OBJROOT)/profile_obj/libmacho.ofileList; \ 143 fi 144 145optimized_ofiles: $(OBJROOT)/optimized_obj $(OBJROOT)/otmp_obj 146 @if [ $(SRCROOT) = . ]; \ 147 then \ 148 (cd otmp_obj; \ 149 $(MAKE) -f ../Makefile libmacho_static.a \ 150 VPATH=.. \ 151 OFILE_DIR=. \ 152 SRCROOT=.. \ 153 COPTS="-static" \ 154 LIBSTUFF="-L../../libstuff -lstuff" \ 155 OFLAG="$(OFLAG)" \ 156 RC_CFLAGS="$(RC_CFLAGS)" \ 157 RC_ARCHS="$(RC_ARCHS)"); \ 158 (cd optimized_obj; rm -f $(OBJS)); \ 159 (cd otmp_obj; cp $(OBJS) ../optimized_obj); \ 160 rm -f static_obj; \ 161 ln -s ./optimized_obj static_obj; \ 162 rm -f optimized_obj/libmacho.ofileList; \ 163 cp dylib.ofileList optimized_obj/libmacho.ofileList; \ 164 else \ 165 (cd $(OBJROOT)/otmp_obj; \ 166 $(MAKE) -f $(SRCROOT)/Makefile libmacho_static.a \ 167 VPATH=$(SRCROOT) \ 168 OFILE_DIR=$(OBJROOT)/otmp_obj \ 169 SRCROOT=$(SRCROOT) \ 170 SYMROOT=$(SYMROOT) \ 171 COPTS="-static" \ 172 LIBSTUFF="-L$(SYMROOT)/../libstuff -lstuff" \ 173 OFLAG="$(OFLAG)" \ 174 RC_CFLAGS="$(RC_CFLAGS)" \ 175 RC_ARCHS="$(RC_ARCHS)"); \ 176 (cd $(OBJROOT)/optimized_obj; rm -f $(OBJS)); \ 177 (cd $(OBJROOT)/otmp_obj; \ 178 cp $(OBJS) $(OBJROOT)/optimized_obj); \ 179 rm -f $(OBJROOT)/static_obj; \ 180 ln -s ./optimized_obj $(OBJROOT)/static_obj; \ 181 rm -f $(OBJROOT)/optimized_obj/libmacho.ofileList; \ 182 cp dylib.ofileList $(OBJROOT)/optimized_obj/libmacho.ofileList; \ 183 fi 184 185kld_ofiles: $(OBJROOT)/kld_obj $(OBJROOT)/ktmp_obj 186 @if [ $(SRCROOT) = . ]; \ 187 then \ 188 (cd ktmp_obj; \ 189 $(MAKE) -f ../Makefile libmacho_kld.a \ 190 VPATH=.. \ 191 OFILE_DIR=. \ 192 SRCROOT=.. \ 193 COPTS="-static -DRLD -DSA_RLD $(KERN)" \ 194 LIBSTUFF="-L../../libstuff -lstuff_kld" \ 195 OFLAG="$(OFLAG)" \ 196 RC_CFLAGS="$(RC_CFLAGS)" \ 197 RC_ARCHS="$(RC_ARCHS)"); \ 198 (cd kld_obj; rm -f $(OBJS)); \ 199 (cd ktmp_obj; cp $(OBJS) ../kld_obj); \ 200 else \ 201 (cd $(OBJROOT)/ktmp_obj; \ 202 $(MAKE) -f $(SRCROOT)/Makefile libmacho_kld.a \ 203 VPATH=$(SRCROOT) \ 204 OFILE_DIR=$(OBJROOT)/ktmp_obj \ 205 SRCROOT=$(SRCROOT) \ 206 SYMROOT=$(SYMROOT) \ 207 COPTS="-static -DRLD -DSA_RLD $(KERN)" \ 208 LIBSTUFF="-L$(SYMROOT)/../libstuff -lstuff_kld" \ 209 OFLAG="$(OFLAG)" \ 210 RC_CFLAGS="$(RC_CFLAGS)" \ 211 RC_ARCHS="$(RC_ARCHS)"); \ 212 (cd $(OBJROOT)/kld_obj; rm -f $(OBJS)); \ 213 (cd $(OBJROOT)/ktmp_obj; \ 214 cp $(OBJS) $(OBJROOT)/kld_obj); \ 215 fi 216 217dynamic_ofiles: $(OBJROOT)/dynamic_obj $(OBJROOT)/dtmp_obj 218 @if [ $(SRCROOT) = . ]; \ 219 then \ 220 (cd dtmp_obj; \ 221 $(MAKE) -f ../Makefile libmacho.a libmacho$S.dylib \ 222 INSTALL_NAME=/usr/lib/system/libmacho$S.dylib \ 223 VPATH=.. \ 224 OFILE_DIR=. \ 225 SRCROOT=.. \ 226 COPTS="-dynamic" \ 227 LIBSTUFF="-L../../libstuff -lstuff" \ 228 OFLAG="$(OFLAG)" \ 229 RC_CFLAGS="$(RC_CFLAGS)" \ 230 RC_ARCHS="$(RC_ARCHS)"); \ 231 (cd dtmp_obj; \ 232 $(MAKE) -f ../Makefile libmacho$S_debug.dylib \ 233 INSTALL_NAME=/usr/lib/system/libmacho$S_debug.dylib \ 234 VPATH=.. \ 235 OFILE_DIR=. \ 236 SRCROOT=.. \ 237 COPTS="-dynamic" \ 238 LIBSTUFF="-L../../libstuff -lstuff" \ 239 OFLAG="$(OFLAG)" \ 240 RC_CFLAGS="$(RC_CFLAGS)" \ 241 RC_ARCHS="$(RC_ARCHS)"); \ 242 (cd dynamic_obj; rm -f $(OBJS)); \ 243 (cd dtmp_obj; cp $(OBJS) ../dynamic_obj); \ 244 rm -f dynamic_obj/libmacho.ofileList; \ 245 cp dylib.ofileList dynamic_obj/libmacho.ofileList; \ 246 else \ 247 (cd $(OBJROOT)/dtmp_obj; \ 248 $(MAKE) -f $(SRCROOT)/Makefile libmacho.a libmacho$S.dylib \ 249 INSTALL_NAME=/usr/lib/system/libmacho$S.dylib \ 250 VPATH=$(SRCROOT) \ 251 OFILE_DIR=$(OBJROOT)/dtmp_obj \ 252 SRCROOT=$(SRCROOT) \ 253 SYMROOT=$(SYMROOT) \ 254 LIBSTUFF="-L$(SYMROOT)/../libstuff -lstuff" \ 255 COPTS="-dynamic" \ 256 OFLAG="$(OFLAG)" \ 257 RC_CFLAGS="$(RC_CFLAGS)" \ 258 RC_ARCHS="$(RC_ARCHS)"); \ 259 (cd $(OBJROOT)/dtmp_obj; \ 260 $(MAKE) -f $(SRCROOT)/Makefile libmacho$S_debug.dylib \ 261 INSTALL_NAME=/usr/lib/system/libmacho$S_debug.dylib \ 262 VPATH=$(SRCROOT) \ 263 OFILE_DIR=$(OBJROOT)/dtmp_obj \ 264 SRCROOT=$(SRCROOT) \ 265 SYMROOT=$(SYMROOT) \ 266 LIBSTUFF="-L$(SYMROOT)/../libstuff -lstuff" \ 267 COPTS="-dynamic" \ 268 OFLAG="$(OFLAG)" \ 269 RC_CFLAGS="$(RC_CFLAGS)" \ 270 RC_ARCHS="$(RC_ARCHS)"); \ 271 (cd $(OBJROOT)/dynamic_obj; rm -f $(OBJS)); \ 272 (cd $(OBJROOT)/dtmp_obj; \ 273 cp $(OBJS) $(OBJROOT)/dynamic_obj); \ 274 rm -f $(OBJROOT)/dynamic_obj/libmacho.ofileList; \ 275 cp dylib.ofileList $(OBJROOT)/dynamic_obj/libmacho.ofileList; \ 276 fi 277 278.c.o: 279 $(CC) $(CFLAGS) $(RC_CFLAGS) $(COPTS) -c -o $(OFILE_DIR)/$*.o $< 280 281clean: 282 -rm -r -f $(OFILE_DIRS) $(OBJROOT)/static_obj 283 284shlib_clean: 285 -rm -r -f $(OBJROOT)/ptmp_obj $(OBJROOT)/otmp_obj $(OBJROOT)/dtmp_obj 286 287libmacho.a libmacho_pg.a libmacho_static.a libmacho_kld.a: $(OBJS) 288 libtool -static -o $(SYMROOT)/$@ $(OBJS) 289 290libmacho$S.dylib libmacho$S_profile.dylib libmacho$S_debug.dylib: $(OBJS) 291 $(CC) $(CFLAGS) $(RC_CFLAGS) -dynamiclib \ 292 -o $(SYMROOT)/$@ $(OBJS) \ 293 -install_name $(INSTALL_NAME) \ 294 -compatibility_version 1 \ 295 -current_version $(RC_ProjectSourceVersion) \ 296 $(DEPENDENT_LIBS) 297 $(DSYMUTIL) $(SYMROOT)/$@ 298 299install: 300 301lib_ofiles_install: all 302 $(MKDIRS) $(DSTROOT)$(ARCHIVEDIR) $(DSTROOT)$(DYLIBDIR) 303 @if [ $(SRCROOT) = . ]; \ 304 then \ 305 install -c -m 444 dtmp_obj/libmacho.a \ 306 $(DSTROOT)$(ARCHIVEDIR)/libmacho.a; \ 307 ranlib $(DSTROOT)$(ARCHIVEDIR)/libmacho.a; \ 308 (cd $(DSTROOT)$(ARCHIVEDIR) ; \ 309 rm -f libmacho_debug.a ; ln -s libmacho.a libmacho_debug.a); \ 310 install -c -m 444 ptmp_obj/libmacho_pg.a \ 311 $(DSTROOT)$(ARCHIVEDIR)/libmacho_profile.a; \ 312 ranlib $(DSTROOT)$(ARCHIVEDIR)/libmacho_profile.a; \ 313 install -c -m 444 otmp_obj/libmacho_static.a \ 314 $(DSTROOT)$(ARCHIVEDIR)/libmacho_static.a; \ 315 ranlib $(DSTROOT)$(ARCHIVEDIR)/libmacho_static.a; \ 316 install -c -m 555 dtmp_obj/libmacho$S.dylib \ 317 $(DSTROOT)$(DYLIBDIR)/libmacho$S.dylib; \ 318 $(STRIP) -S $(DSTROOT)$(DYLIBDIR)/libmacho$S.dylib; \ 319 install -c -m 555 dtmp_obj/libmacho$S_profile.dylib \ 320 $(DSTROOT)$(DYLIBDIR)/libmacho$S_profile.dylib; \ 321 $(STRIP) -S $(DSTROOT)$(DYLIBDIR)/libmacho$S_profile.dylib; \ 322 install -c -m 555 dtmp_obj/libmacho$S_debug.dylib \ 323 $(DSTROOT)$(DYLIBDIR)/libmacho$S_debug.dylib; \ 324 $(STRIP) -S $(DSTROOT)$(DYLIBDIR)/libmacho$S_debug.dylib; \ 325 else \ 326 install -c -m 444 $(SYMROOT)/libmacho.a \ 327 $(DSTROOT)$(ARCHIVEDIR)/libmacho.a; \ 328 ranlib $(DSTROOT)$(ARCHIVEDIR)/libmacho.a; \ 329 (cd $(DSTROOT)$(ARCHIVEDIR) ; \ 330 rm -f libmacho_debug.a ; ln -s libmacho.a libmacho_debug.a); \ 331 install -c -m 444 $(SYMROOT)/libmacho_pg.a \ 332 $(DSTROOT)$(ARCHIVEDIR)/libmacho_profile.a; \ 333 ranlib $(DSTROOT)$(ARCHIVEDIR)/libmacho_profile.a; \ 334 install -c -m 444 $(SYMROOT)/libmacho_static.a \ 335 $(DSTROOT)$(ARCHIVEDIR)/libmacho_static.a; \ 336 ranlib $(DSTROOT)$(ARCHIVEDIR)/libmacho_static.a; \ 337 install -c -m 555 $(SYMROOT)/libmacho$S.dylib \ 338 $(DSTROOT)$(DYLIBDIR)/libmacho$S.dylib; \ 339 $(STRIP) -S $(DSTROOT)$(DYLIBDIR)/libmacho$S.dylib; \ 340 install -c -m 555 $(SYMROOT)/libmacho$S_profile.dylib \ 341 $(DSTROOT)$(DYLIBDIR)/libmacho$S_profile.dylib; \ 342 $(STRIP) -S $(DSTROOT)$(DYLIBDIR)/libmacho$S_profile.dylib; \ 343 install -c -m 555 $(SYMROOT)/libmacho$S_debug.dylib \ 344 $(DSTROOT)$(DYLIBDIR)/libmacho$S_debug.dylib; \ 345 $(STRIP) -S $(DSTROOT)$(DYLIBDIR)/libmacho$S_debug.dylib; \ 346 fi 347 348installsrc: 349 $(MKDIRS) $(SRCROOT) 350 chmod 755 $(SRCROOT) 351 gnutar cf - $(INSTALL_FILES) | (cd $(SRCROOT); gnutar xf -) 352 chmod 444 $(SRCROOT)/* 353 354$(OFILE_DIRS) $(SYMROOT): 355 $(MKDIRS) $@ 356