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.

180 lines
5.1KB

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