1CORE_DIR = . 2BUILD_DIR = build 3 4ifeq ($(platform),android_arm64-v8a) 5include $(BUILD_DIR)/Makefile.android_arm64-v8a 6else ifeq ($(platform),android_armeabi) 7include $(BUILD_DIR)/Makefile.android_armeabi 8else ifeq ($(platform),android_armeabi-v7a) 9include $(BUILD_DIR)/Makefile.android_armeabi-v7a 10else ifeq ($(platform),android_mips) 11include $(BUILD_DIR)/Makefile.android_mips 12else ifeq ($(platform),android_mips64) 13include $(BUILD_DIR)/Makefile.android_mips64 14else ifeq ($(platform),android_x86) 15include $(BUILD_DIR)/Makefile.android_x86 16else ifeq ($(platform),android_x86_64) 17include $(BUILD_DIR)/Makefile.android_x86_64 18else ifeq ($(platform),linux-portable_x86) 19include $(BUILD_DIR)/Makefile.linux-portable_x86 20else ifeq ($(platform),linux-portable_x86_64) 21include $(BUILD_DIR)/Makefile.linux-portable_x86_64 22else ifeq ($(platform),linux_x86) 23include $(BUILD_DIR)/Makefile.linux_x86 24else ifeq ($(platform),linux_x86_64) 25include $(BUILD_DIR)/Makefile.linux_x86_64 26else ifeq ($(platform),mingw_x86) 27include $(BUILD_DIR)/Makefile.mingw_x86 28else ifeq ($(platform),mingw_x86_64) 29include $(BUILD_DIR)/Makefile.mingw_x86_64 30else ifeq ($(platform),osx_x86) 31include $(BUILD_DIR)/Makefile.osx_x86 32else ifeq ($(platform),osx_x86_64) 33include $(BUILD_DIR)/Makefile.osx_x86_64 34else ifeq ($(platform),ps3_ppc) 35include $(BUILD_DIR)/Makefile.ps3_ppc 36else ifeq ($(platform),wii_ppc) 37include $(BUILD_DIR)/Makefile.wii_ppc 38else ifeq ($(platform),windows_x86) 39include $(BUILD_DIR)/Makefile.windows_x86 40else ifeq ($(platform),windows_x86_64) 41include $(BUILD_DIR)/Makefile.windows_x86_64 42else 43 44TARGET_NAME := fuse 45 46LOG_PERFORMANCE = 0 47HAVE_COMPAT = 0 48 49SOURCES_C := 50SOURCES_CXX := 51LIBS := 52 53ifeq ($(platform),) 54 platform = unix 55 ifeq ($(shell uname -a),) 56 platform = win 57 else ifneq ($(findstring MINGW,$(shell uname -a)),) 58 platform = win 59 else ifneq ($(findstring Darwin,$(shell uname -a)),) 60 platform = osx 61 else ifneq ($(findstring win,$(shell uname -a)),) 62 platform = win 63 endif 64endif 65 66# system platform 67system_platform = unix 68ifeq ($(shell uname -a),) 69 EXE_EXT = .exe 70 system_platform = win 71else ifneq ($(findstring Darwin,$(shell uname -a)),) 72 system_platform = osx 73 arch = intel 74ifeq ($(shell uname -p),arm64) 75 arch = arm 76endif 77ifeq ($(shell uname -p),powerpc) 78 arch = ppc 79endif 80else ifneq ($(findstring MINGW,$(shell uname -a)),) 81 system_platform = win 82endif 83 84CC_AS ?= $(CC) 85LIBM := -lm 86 87# Unix 88ifneq (,$(findstring unix,$(platform))) 89 TARGET := $(TARGET_NAME)_libretro.so 90 fpic := -fPIC 91 SHARED := -shared -Wl,-version-script=build/link.T -Wl,-no-undefined 92 93else ifneq (,$(findstring linux-portable,$(platform))) 94 TARGET := $(TARGET_NAME)_libretro.so 95 fpic := -fPIC -nostdlib 96 LIBM := 97 SHARED := -shared -Wl,-version-script=build/link.T 98 99# Raspberry Pi 1 100else ifeq ($(platform), rpi1) 101 TARGET := $(TARGET_NAME)_libretro.so 102 fpic = -fPIC 103 SHARED := -shared -Wl,-version-script=build/link.T -Wl,-no-undefined 104 PLATFORM_DEFINES += -marm -mfpu=vfp -mfloat-abi=hard -march=armv6j 105 PLATFORM_DEFINES += -fomit-frame-pointer -ffast-math 106 PLATFORM_DEFINES += -DARM 107 108# Raspberry Pi 2 109else ifeq ($(platform), rpi2) 110 TARGET := $(TARGET_NAME)_libretro.so 111 fpic = -fPIC 112 SHARED := -shared -Wl,-version-script=build/link.T -Wl,-no-undefined 113 PLATFORM_DEFINES += -marm -mcpu=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard 114 PLATFORM_DEFINES += -fomit-frame-pointer -ffast-math 115 PLATFORM_DEFINES += -DARM 116 HAVE_NEON = 1 117 118# Raspberry Pi 3 119else ifeq ($(platform), rpi3) 120 TARGET := $(TARGET_NAME)_libretro.so 121 fpic = -fPIC 122 SHARED := -shared -Wl,-version-script=build/link.T -Wl,-no-undefined 123 PLATFORM_DEFINES += -marm -mcpu=cortex-a53 -mfpu=neon-fp-armv8 -mfloat-abi=hard 124 PLATFORM_DEFINES += -fomit-frame-pointer -ffast-math 125 PLATFORM_DEFINES += -DARM 126 HAVE_NEON = 1 127 128# Classic Platforms #################### 129# Platform affix = classic_<ISA>_<µARCH> 130# Help at https://modmyclassic.com/comp 131 132# (armv7 a7, hard point, neon based) ### 133# NESC, SNESC, C64 mini 134else ifeq ($(platform), classic_armv7_a7) 135 TARGET := $(TARGET_NAME)_libretro.so 136 fpic := -fPIC 137 SHARED :=-shared -Wl,--version-script=build/link.T -Wl,--no-undefined 138 PLATFORM_DEFINES += -DARM -Ofast \ 139 -flto=4 -fwhole-program -fuse-linker-plugin \ 140 -fdata-sections -ffunction-sections -Wl,--gc-sections \ 141 -fno-stack-protector -fno-ident -fomit-frame-pointer \ 142 -falign-functions=1 -falign-jumps=1 -falign-loops=1 \ 143 -fno-unwind-tables -fno-asynchronous-unwind-tables -fno-unroll-loops \ 144 -fmerge-all-constants -fno-math-errno \ 145 -marm -mtune=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard 146 CXXFLAGS += $(PLATFORM_DEFINES) 147 CPPFLAGS += $(PLATFORM_DEFINES) 148 ASFLAGS += $(PLATFORM_DEFINES) 149 HAVE_NEON = 1 150 ifeq ($(shell echo `$(CC) -dumpversion` "< 4.9" | bc -l), 1) 151 CFLAGS += -march=armv7-a 152 else 153 CFLAGS += -march=armv7ve 154 # If gcc is 5.0 or later 155 ifeq ($(shell echo `$(CC) -dumpversion` ">= 5" | bc -l), 1) 156 LDFLAGS += -static-libgcc -static-libstdc++ 157 endif 158 endif 159####################################### 160 161# (armv8 a35, hard point, neon based) ### 162# PlayStation Classic 163else ifeq ($(platform), classic_armv8_a35) 164 TARGET := $(TARGET_NAME)_libretro.so 165 fpic := -fPIC 166 SHARED := -shared -Wl,--version-script=build/link.T -Wl,--no-undefined 167 CFLAGS += -DARM -Ofast \ 168 -fuse-linker-plugin \ 169 -fno-stack-protector -fno-ident -fomit-frame-pointer \ 170 -fmerge-all-constants -ffast-math -funroll-all-loops \ 171 -marm -mcpu=cortex-a35 -mfpu=neon-fp-armv8 -mfloat-abi=hard 172 CXXFLAGS += $(CFLAGS) 173 CPPFLAGS += $(CFLAGS) 174 HAVE_NEON = 1 175 ARCH = arm 176 LDFLAGS += -lrt 177 LDFLAGS += -marm -mcpu=cortex-a35 -mfpu=neon-fp-armv8 -mfloat-abi=hard -Ofast -flto -fuse-linker-plugin 178####################################### 179 180# OS X 181else ifeq ($(platform), osx) 182 TARGET := $(TARGET_NAME)_libretro.dylib 183 fpic := -fPIC 184 SHARED := -dynamiclib 185 OSXVER = `sw_vers -productVersion | cut -d. -f 2` 186 OSX_LT_MAVERICKS = `(( $(OSXVER) <= 9)) && echo "YES"` 187 ifeq ($(OSX_LT_MAVERICKS),YES) 188 fpic += -mmacosx-version-min=10.2 189 endif 190ifeq ($(arch),ppc) 191 CFLAGS += -DWORDS_BIGENDIAN -DMSB_FIRST 192endif 193 ifeq ($(CROSS_COMPILE),1) 194 TARGET_RULE = -target $(LIBRETRO_APPLE_PLATFORM) -isysroot $(LIBRETRO_APPLE_ISYSROOT) 195 CFLAGS += $(TARGET_RULE) 196 LDFLAGS += $(TARGET_RULE) 197 endif 198 199# iOS 200else ifneq (,$(findstring ios,$(platform))) 201 202 TARGET := $(TARGET_NAME)_libretro_ios.dylib 203 fpic := -fPIC 204 SHARED := -dynamiclib 205 206 ifeq ($(IOSSDK),) 207 IOSSDK := $(shell xcodebuild -version -sdk iphoneos Path) 208 endif 209 210ifeq ($(platform),ios-arm64) 211 CC = cc -arch arm64 -isysroot $(IOSSDK) 212 CXX = c++ -arch arm64 -isysroot $(IOSSDK) 213else 214 CC = cc -arch armv7 -isysroot $(IOSSDK) 215 CXX = c++ -arch armv7 -isysroot $(IOSSDK) 216endif 217 CC_AS = perl ./tools/gas-preprocessor.pl $(CC) 218 219ifeq ($(platform),$(filter $(platform),ios9 ios-arm64)) 220 CC += -miphoneos-version-min=8.0 221 CXX += -miphoneos-version-min=8.0 222 CC_AS += -miphoneos-version-min=8.0 223 PLATFORM_DEFINES := -miphoneos-version-min=8.0 224else 225 CC += -miphoneos-version-min=5.0 226 CXX += -miphoneos-version-min=5.0 227 CC_AS += -miphoneos-version-min=5.0 228 PLATFORM_DEFINES := -miphoneos-version-min=5.0 229endif 230 231ifeq ($(platform),ios-arm64) 232 PLATFORM_DEFINES += -D_IOS_ARM64 233endif 234 235else ifeq ($(platform), tvos-arm64) 236 TARGET := $(TARGET_NAME)_libretro_tvos.dylib 237 fpic := -fPIC 238 SHARED := -dynamiclib 239 ifeq ($(IOSSDK),) 240 IOSSDK := $(shell xcodebuild -version -sdk appletvos Path) 241 endif 242 PLATFORM_DEFINES += -D_IOS_ARM64 243 244# Theos 245else ifeq ($(platform), theos_ios) 246 DEPLOYMENT_IOSVERSION = 5.0 247 TARGET = iphone:latest:$(DEPLOYMENT_IOSVERSION) 248 ARCHS = armv7 armv7s 249 TARGET_IPHONEOS_DEPLOYMENT_VERSION=$(DEPLOYMENT_IOSVERSION) 250 THEOS_BUILD_DIR := objs 251 include $(THEOS)/makefiles/common.mk 252 253 LIBRARY_NAME = $(TARGET_NAME)_libretro_ios 254 255# QNX 256else ifeq ($(platform), qnx) 257 TARGET := $(TARGET_NAME)_libretro_qnx.so 258 fpic := -fPIC 259 SHARED := -lcpp -lm -shared -Wl,-version-script=build/link.T 260 CC = qcc -Vgcc_ntoarmv7le 261 CC_AS = qcc -Vgcc_ntoarmv7le 262 CXX = QCC -Vgcc_ntoarmv7le_cpp 263 AR = QCC -Vgcc_ntoarmv7le 264 PLATFORM_DEFINES := -D__BLACKBERRY_QNX__ -fexceptions -marm -mcpu=cortex-a9 -mfpu=neon -mfloat-abi=softfp 265 266# PS3 267else ifeq ($(platform), ps3) 268 TARGET := $(TARGET_NAME)_libretro_$(platform).a 269 CC = $(CELL_SDK)/host-win32/ppu/bin/ppu-lv2-gcc.exe 270 CC_AS = $(CELL_SDK)/host-win32/ppu/bin/ppu-lv2-gcc.exe 271 CXX = $(CELL_SDK)/host-win32/ppu/bin/ppu-lv2-g++.exe 272 AR = $(CELL_SDK)/host-win32/ppu/bin/ppu-lv2-ar.exe 273 PLATFORM_DEFINES := -D__CELLOS_LV2__ 274 STATIC_LINKING = 1 275 HAVE_COMPAT = 1 276 CFLAGS += -DWORDS_BIGENDIAN -DMSB_FIRST 277 278# sncps3 279else ifeq ($(platform), sncps3) 280 TARGET := $(TARGET_NAME)_libretro_ps3.a 281 CC = $(CELL_SDK)/host-win32/sn/bin/ps3ppusnc.exe 282 CC_AS = $(CELL_SDK)/host-win32/sn/bin/ps3ppusnc.exe 283 CXX = $(CELL_SDK)/host-win32/sn/bin/ps3ppusnc.exe 284 AR = $(CELL_SDK)/host-win32/sn/bin/ps3snarl.exe 285 PLATFORM_DEFINES := -D__CELLOS_LV2__ 286 STATIC_LINKING = 1 287 HAVE_COMPAT = 1 288 CFLAGS += -DWORDS_BIGENDIAN -DMSB_FIRST 289 290# Lightweight PS3 Homebrew SDK 291else ifeq ($(platform), psl1ght) 292 TARGET := $(TARGET_NAME)_libretro_$(platform).a 293 CC = $(PS3DEV)/ppu/bin/ppu-gcc$(EXE_EXT) 294 CC_AS = $(PS3DEV)/ppu/bin/ppu-gcc$(EXE_EXT) 295 CXX = $(PS3DEV)/ppu/bin/ppu-g++$(EXE_EXT) 296 AR = $(PS3DEV)/ppu/bin/ppu-ar$(EXE_EXT) 297 PLATFORM_DEFINES := -D__CELLOS_LV2__ 298 STATIC_LINKING = 1 299 HAVE_COMPAT = 1 300 CFLAGS += -DWORDS_BIGENDIAN -DMSB_FIRST 301 302# PSP 303else ifeq ($(platform), psp1) 304 TARGET := $(TARGET_NAME)_libretro_$(platform).a 305 CC = psp-gcc$(EXE_EXT) 306 CC_AS = psp-gcc$(EXE_EXT) 307 CXX = psp-g++$(EXE_EXT) 308 AR = psp-ar$(EXE_EXT) 309 PLATFORM_DEFINES := -DPSP 310 CFLAGS += -G0 311 CXXFLAGS += -G0 312 STATIC_LINKING = 1 313 HAVE_COMPAT = 1 314 EXTRA_INCLUDES := -I$(shell psp-config --pspsdk-path)/include 315 316# Xbox 360 317else ifeq ($(platform), xenon) 318 TARGET := $(TARGET_NAME)_libretro_xenon360.a 319 CC = xenon-gcc$(EXE_EXT) 320 CC_AS = xenon-gcc$(EXE_EXT) 321 CXX = xenon-g++$(EXE_EXT) 322 AR = xenon-ar$(EXE_EXT) 323 PLATFORM_DEFINES := -D__LIBXENON__ 324 STATIC_LINKING = 1 325 326# Nintendo Game Cube 327else ifeq ($(platform), ngc) 328 TARGET := $(TARGET_NAME)_libretro_$(platform).a 329 CC = $(DEVKITPPC)/bin/powerpc-eabi-gcc$(EXE_EXT) 330 CC_AS = $(DEVKITPPC)/bin/powerpc-eabi-gcc$(EXE_EXT) 331 CXX = $(DEVKITPPC)/bin/powerpc-eabi-g++$(EXE_EXT) 332 AR = $(DEVKITPPC)/bin/powerpc-eabi-ar$(EXE_EXT) 333 PLATFORM_DEFINES += -DGEKKO -DHW_DOL -mrvl -mcpu=750 -meabi -mhard-float 334 PLATFORM_DEFINES += -U__INT32_TYPE__ -U __UINT32_TYPE__ -D__INT32_TYPE__=int 335 STATIC_LINKING = 1 336 HAVE_COMPAT = 1 337 CFLAGS += -DWORDS_BIGENDIAN -DMSB_FIRST 338 339# Nintendo Wii 340else ifeq ($(platform), wii) 341 TARGET := $(TARGET_NAME)_libretro_$(platform).a 342 CC = $(DEVKITPPC)/bin/powerpc-eabi-gcc$(EXE_EXT) 343 CC_AS = $(DEVKITPPC)/bin/powerpc-eabi-gcc$(EXE_EXT) 344 CXX = $(DEVKITPPC)/bin/powerpc-eabi-g++$(EXE_EXT) 345 AR = $(DEVKITPPC)/bin/powerpc-eabi-ar$(EXE_EXT) 346 PLATFORM_DEFINES += -DGEKKO -DHW_RVL -mrvl -mcpu=750 -meabi -mhard-float 347 PLATFORM_DEFINES += -U__INT32_TYPE__ -U __UINT32_TYPE__ -D__INT32_TYPE__=int 348 STATIC_LINKING = 1 349 HAVE_COMPAT = 1 350 CFLAGS += -DWORDS_BIGENDIAN -DMSB_FIRST 351 352# Nintendo WiiU 353else ifeq ($(platform), wiiu) 354 TARGET := $(TARGET_NAME)_libretro_$(platform).a 355 CC = $(DEVKITPPC)/bin/powerpc-eabi-gcc$(EXE_EXT) 356 CC_AS = $(DEVKITPPC)/bin/powerpc-eabi-gcc$(EXE_EXT) 357 CXX = $(DEVKITPPC)/bin/powerpc-eabi-g++$(EXE_EXT) 358 AR = $(DEVKITPPC)/bin/powerpc-eabi-ar$(EXE_EXT) 359 PLATFORM_DEFINES += -DGEKKO -DWIIU -DHW_RVL -mcpu=750 -meabi -mhard-float 360 PLATFORM_DEFINES += -U__INT32_TYPE__ -U __UINT32_TYPE__ -D__INT32_TYPE__=int 361 STATIC_LINKING = 1 362 HAVE_COMPAT = 1 363 CFLAGS += -DWORDS_BIGENDIAN -DMSB_FIRST 364 365# ARM 366else ifneq (,$(findstring armv,$(platform))) 367 TARGET := $(TARGET_NAME)_libretro.so 368 fpic := -fPIC 369 SHARED := -shared -Wl,-version-script=build/link.T 370 CC = gcc 371 CC_AS = gcc 372 CXX = g++ 373 ifneq (,$(findstring cortexa8,$(platform))) 374 PLATFORM_DEFINES += -marm -mcpu=cortex-a8 375 else ifneq (,$(findstring cortexa9,$(platform))) 376 PLATFORM_DEFINES += -marm -mcpu=cortex-a9 377 endif 378 PLATFORM_DEFINES += -marm 379 ifneq (,$(findstring neon,$(platform))) 380 PLATFORM_DEFINES += -mfpu=neon 381 HAVE_NEON = 1 382 endif 383 ifneq (,$(findstring softfloat,$(platform))) 384 PLATFORM_DEFINES += -mfloat-abi=softfp 385 else ifneq (,$(findstring hardfloat,$(platform))) 386 PLATFORM_DEFINES += -mfloat-abi=hard 387 endif 388 PLATFORM_DEFINES += -DARM 389 390# Nintendo Switch (libnx) 391else ifeq ($(platform), libnx) 392 include $(DEVKITPRO)/libnx/switch_rules 393 TARGET := $(TARGET_NAME)_libretro_$(platform).a 394 DEFINES := -DSWITCH=1 -U__linux__ -U__linux -DRARCH_INTERNAL 395 CFLAGS := $(DEFINES) -g \ 396 -O3 \ 397 -fPIE -I$(LIBNX)/include/ -ffunction-sections -fdata-sections -ftls-model=local-exec -Wl,--allow-multiple-definition -specs=$(LIBNX)/switch.specs 398 CFLAGS += $(INCDIRS) 399 CFLAGS += $(INCLUDE) -D__SWITCH__ -DHAVE_LIBNX -DARM -march=armv8-a -mtune=cortex-a57 -mtp=soft -fomit-frame-pointer -ffast-math 400 CXXFLAGS := $(ASFLAGS) $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++11 401 CFLAGS += -std=gnu11 402 STATIC_LINKING = 1 403 404# emscripten 405else ifeq ($(platform), emscripten) 406 TARGET := $(TARGET_NAME)_libretro_emscripten.bc 407 408# CTR (3DS) 409else ifeq ($(platform), ctr) 410 TARGET := $(TARGET_NAME)_libretro_$(platform).a 411 CC = $(DEVKITARM)/bin/arm-none-eabi-gcc$(EXE_EXT) 412 CXX = $(DEVKITARM)/bin/arm-none-eabi-g++$(EXE_EXT) 413 AR = $(DEVKITARM)/bin/arm-none-eabi-ar$(EXE_EXT) 414 STATIC_LINKING = 1 415 CFLAGS += -D_3DS 416 CXXFLAGS += -D_3DS 417 418 CFLAGS += -DARM11 419 CFLAGS += -march=armv6k -mtune=mpcore -mfloat-abi=hard 420 CFLAGS += -Wall -mword-relocations 421 CFLAGS += -fomit-frame-pointer -ffast-math 422 423 CXXFLAGS += -DARM11 424 CXXFLAGS += -march=armv6k -mtune=mpcore -mfloat-abi=hard 425 CXXFLAGS += -Wall -mword-relocations 426 CXXFLAGS += -fomit-frame-pointer -ffast-math 427 428# Vita 429else ifeq ($(platform), vita) 430 TARGET := $(TARGET_NAME)_libretro_$(platform).a 431 CC = arm-vita-eabi-gcc$(EXE_EXT) 432 CXX = arm-vita-eabi-g++$(EXE_EXT) 433 AR = arm-vita-eabi-ar$(EXE_EXT) 434 STATIC_LINKING = 1 435 CFLAGS += -DVITA -ftree-vectorize -mfloat-abi=hard -ffast-math -fsingle-precision-constant -funroll-loops -fno-short-enums 436 CXXFLAGS += -DVITA -ftree-vectorize -mfloat-abi=hard -ffast-math -fsingle-precision-constant -funroll-loops -fno-short-enums 437 438# Windows 439else 440 TARGET := $(TARGET_NAME)_libretro.dll 441 CC ?= gcc 442 CC_AS ?= gcc 443 CXX ?= g++ 444 SHARED := -shared -static-libgcc -static-libstdc++ -Wl,-no-undefined -Wl,-version-script=build/link.T 445 446endif 447 448 449ifeq ($(HAVE_COMPAT), 1) 450 PLATFORM_DEFINES += -DHAVE_COMPAT 451endif 452 453ifeq ($(DEBUG), 1) 454 CFLAGS += -O0 -g 455 CXXFLAGS += -O0 -g 456else ifeq ($(platform), emscripten) 457 CFLAGS += -O2 458 CXXFLAGS += -O2 -fno-exceptions -fno-rtti -DHAVE_STDINT_H 459else 460 CFLAGS += -O3 461 CXXFLAGS += -O3 -fno-exceptions -fno-rtti -DHAVE_STDINT_H 462endif 463 464ifeq ($(LOG_PERFORMANCE), 1) 465 CFLAGS += -DLOG_PERFORMANCE 466 CXXFLAGS += -DLOG_PERFORMANCE 467endif 468 469 470DEFINES := -D__LIBRETRO__ $(PLATFORM_DEFINES) 471DEFINES += -DHAVE_CONFIG_H 472 473CFLAGS += $(fpic) $(DEFINES) 474CFLAGS += -Wall 475 476CXXFLAGS += $(fpic) $(DEFINES) 477CXXFLAGS += -Wall 478 479LDFLAGS += $(LIBM) 480 481ROMS = 482SNAPS = 483 484include build/Makefile.common 485 486HEADERS += $(ROMS:.rom=.h) $(SNAPS:.szx=.h) $(CORE_DIR)/fuse/config.h $(CORE_DIR)/libspectrum/config.h 487OBJS += $(SOURCES_C:.c=.o) $(SOURCES_CXX:.cpp=.o) 488 489INCDIRS := $(EXTRA_INCLUDES) $(INCLUDES) 490 491%.o: %.cpp 492 $(CXX) -c -o $@ $< $(CXXFLAGS) $(INCDIRS) 493 494%.o: %.c 495 $(CC) -c -o $@ $< $(CFLAGS) $(INCDIRS) 496 497%.o: %.S 498 $(CC_AS) -c -o $@ $< $(CFLAGS) $(INCDIRS) 499 500ifeq ($(platform), theos_ios) 501COMMON_FLAGS := -DIOS $(COMMON_DEFINES) $(INCFLAGS) -I$(THEOS_INCLUDE_PATH) -Wno-error 502$(LIBRARY_NAME)_CFLAGS += $(CFLAGS) $(COMMON_FLAGS) 503$(LIBRARY_NAME)_CXXFLAGS += $(CXXFLAGS) $(COMMON_FLAGS) 504${LIBRARY_NAME}_FILES = $(SOURCES_CXX) $(SOURCES_C) 505${LIBRARY_NAME}_LIBRARIES = z 506include $(THEOS_MAKE_PATH)/library.mk 507else 508all: $(TARGET) 509 510$(TARGET): $(HEADERS) $(OBJS) 511ifeq ($(STATIC_LINKING), 1) 512 $(AR) rcs $@ $(OBJS) 513else 514 $(CC) -o $@ $(SHARED) $(OBJS) $(LDFLAGS) $(LIBS) 515endif 516 517$(CORE_DIR)/fuse/config.h: 518 cp $(CORE_DIR)/src/config_fuse.h $(CORE_DIR)/fuse/config.h 519 520$(CORE_DIR)/libspectrum/config.h: 521 cp $(CORE_DIR)/src/config_libspectrum.h $(CORE_DIR)/libspectrum/config.h 522 523$(CORE_DIR)/src/version.c: FORCE 524 cat $(CORE_DIR)/etc/version.c.templ | sed s/HASH/`git rev-parse HEAD | tr -d "\n"`/g > $@ 525 526clean-objs: 527 rm -f $(OBJS) 528 529clean: 530 rm -f $(OBJS) 531 rm -f $(TARGET) 532 533.PHONY: clean clean-objs FORCE 534 535# Remove all built-in implicit rules 536.SUFFIXES: 537endif 538 539endif 540