You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

160 lines
4.5KB

  1. #!/usr/bin/make -f
  2. # Makefile for Cardinal #
  3. # --------------------- #
  4. # Created by falkTX
  5. #
  6. DEP_PATH = $(abspath ../src/Rack/dep)
  7. # --------------------------------------------------------------
  8. # Import base definitions
  9. USE_NANOVG_FBO = true
  10. USE_RGBA = true
  11. include ../dpf/Makefile.base.mk
  12. # --------------------------------------------------------------
  13. # override VCV arch.mk stuff so we can build more architectures
  14. ifeq ($(CPU_AARCH64),true)
  15. ARCH_NAME = aarch64
  16. MACHINE = x86_64-bring-forth-the-rack
  17. else ifeq ($(CPU_ARM64),true)
  18. ARCH_NAME = arm64
  19. MACHINE = x86_64-bring-forth-the-rack
  20. else ifeq ($(CPU_ARM),true)
  21. ARCH_NAME = arm
  22. MACHINE = i686-bring-forth-the-rack
  23. else
  24. MACHINE = $(TARGET_MACHINE)
  25. endif
  26. ifeq ($(MACOS),true)
  27. MACHINE_SUFFIX = -darwin
  28. else ifeq ($(WINDOWS),true)
  29. MACHINE_SUFFIX = -mingw32
  30. else
  31. MACHINE_SUFFIX = -linux
  32. endif
  33. # --------------------------------------------------------------
  34. # Fix up cmake
  35. SPACE =
  36. SPACE +=
  37. CMAKE = cmake
  38. CMAKE += -DCMAKE_INSTALL_LIBDIR=lib
  39. CMAKE += -DCMAKE_INSTALL_PREFIX='$(DEP_PATH)'
  40. CMAKE += -DBUILD_SHARED_LIBS=OFF
  41. # make sure macOS target matches ours
  42. ifneq (,$(findstring -arch$(SPACE),$(CXXFLAGS)))
  43. CMAKE += -DCMAKE_OSX_ARCHITECTURES='$(subst $(SPACE),;,$(subst -arch=,,$(filter -arch=%,$(subst -arch$(SPACE),-arch=,$(CXXFLAGS)))))'
  44. endif
  45. ifneq (,$(findstring -mmacosx-version-min=,$(CXXFLAGS)))
  46. CMAKE += -DCMAKE_OSX_DEPLOYMENT_TARGET=$(subst -mmacosx-version-min=,,$(filter -mmacosx-version-min=%,$(CXXFLAGS)))
  47. endif
  48. # make sure debug/release matches
  49. ifeq ($(DEBUG),true)
  50. CMAKE += -DCMAKE_BUILD_TYPE=Debug
  51. else
  52. CMAKE += -DCMAKE_BUILD_TYPE=Release
  53. endif
  54. # fix cross-compilation for windows
  55. ifeq ($(WINDOWS),true)
  56. CMAKE += -G 'Unix Makefiles'
  57. CMAKE += -DCMAKE_RC_COMPILER=$(subst gcc,windres,$(CC))
  58. CMAKE += -DCMAKE_SYSTEM_NAME=Windows
  59. endif
  60. # --------------------------------------------------------------
  61. # Fix up configure
  62. CONFIGURE = ./configure
  63. CONFIGURE += --prefix="$(DEP_PATH)"
  64. CONFIGURE += --host=$(TARGET_MACHINE)
  65. CONFIGURE += --enable-static
  66. CONFIGURE += --disable-shared
  67. # NOTE libsamplerate wants to link against alsa, so we disable that
  68. CONFIGURE += --disable-alsa
  69. # NOTE speex fails to build when neon is enabled, so we disable that
  70. CONFIGURE += --disable-neon
  71. # NOTE libsamplerate fails with invalid host, so we force ac_cv_host
  72. CONFIGURE += ac_cv_host=$(TARGET_MACHINE)
  73. # --------------------------------------------------------------
  74. # Fix up make
  75. DEP_MAKE = $(MAKE)
  76. DEP_MAKE += ARCH_NAME=$(ARCH_NAME)
  77. DEP_MAKE += CFLAGS="$(BUILD_C_FLAGS)"
  78. DEP_MAKE += CXXFLAGS="$(BUILD_CXX_FLAGS)"
  79. DEP_MAKE += LDFLAGS="$(LINK_FLAGS)"
  80. DEP_MAKE += CMAKE="$(CMAKE)"
  81. DEP_MAKE += CONFIGURE="$(CONFIGURE)"
  82. DEP_MAKE += DEP_FLAGS="$(BASE_FLAGS)"
  83. DEP_MAKE += DEP_MAC_SDK_FLAGS=
  84. DEP_MAKE += MACHINE=$(MACHINE)$(MACHINE_SUFFIX)
  85. # --------------------------------------------------------------
  86. # VCV internal dependencies target
  87. $(DEP_PATH)/lib/%.a:
  88. $(DEP_MAKE) -C $(DEP_PATH) lib/$*.a
  89. # skip libarchive shared lib
  90. $(DEP_PATH)/lib/libarchive.a: $(DEP_PATH)/lib/libzstd.a $(DEP_PATH)/libarchive-3.4.3/.stamp-patched
  91. $(DEP_PATH)/lib/libarchive_static.a: $(DEP_PATH)/lib/libzstd.a $(DEP_PATH)/libarchive-3.4.3/.stamp-patched
  92. $(DEP_PATH)/libarchive-3.4.3/.stamp-patched:
  93. $(DEP_MAKE) -C $(DEP_PATH) libarchive-3.4.3
  94. sed -i -e "238,243d" $(DEP_PATH)/libarchive-3.4.3/libarchive/CMakeLists.txt
  95. sed -i -e "s/TARGETS archive archive_static/TARGETS archive_static/" $(DEP_PATH)/libarchive-3.4.3/libarchive/CMakeLists.txt
  96. touch $@
  97. ifeq ($(MACOS),true)
  98. # zstd cmake is borked, see https://github.com/facebook/zstd/issues/1401
  99. $(DEP_PATH)/lib/libzstd.a: $(DEP_PATH)/zstd-1.4.5/.stamp-patched
  100. $(DEP_PATH)/zstd-1.4.5/.stamp-patched:
  101. $(DEP_MAKE) -C $(DEP_PATH) zstd-1.4.5
  102. sed -i -e "56,66d" $(DEP_PATH)/zstd-1.4.5/build/cmake/CMakeModules/AddZstdCompilationFlags.cmake
  103. touch $@
  104. endif
  105. # --------------------------------------------------------------
  106. # Build targets
  107. TARGETS += $(DEP_PATH)/lib/libjansson.a
  108. TARGETS += $(DEP_PATH)/lib/libsamplerate.a
  109. TARGETS += $(DEP_PATH)/lib/libspeexdsp.a
  110. ifeq ($(WINDOWS),true)
  111. TARGETS += $(DEP_PATH)/lib/libarchive_static.a
  112. else
  113. TARGETS += $(DEP_PATH)/lib/libarchive.a
  114. endif
  115. TARGETS += $(DEP_PATH)/lib/libzstd.a
  116. all: $(TARGETS)
  117. clean:
  118. rm -f $(TARGETS)
  119. rm -rf $(DEP_PATH)/bin
  120. rm -rf $(DEP_PATH)/include
  121. rm -rf $(DEP_PATH)/lib
  122. rm -rf $(DEP_PATH)/share
  123. rm -rf $(DEP_PATH)/jansson-2.12
  124. rm -rf $(DEP_PATH)/libarchive-3.4.3
  125. rm -rf $(DEP_PATH)/libsamplerate-0.1.9
  126. rm -rf $(DEP_PATH)/speexdsp-SpeexDSP-1.2rc3
  127. rm -rf $(DEP_PATH)/zstd-1.4.5
  128. # --------------------------------------------------------------