* gnu/packages/music.scm (extempore): Update to 0.8.6. [source]: Portaudio is no more in-tree. [arguments]: Load external libraries through patched CMakeLists.txt. [phases]: Symlink assets. * gnu/packages/patches/extempore-unbundle-external-dependencies.patch: Update accordingly. Signed-off-by: Ricardo Wurmus <rekado@elephly.net>
		
			
				
	
	
		
			282 lines
		
	
	
	
		
			11 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			282 lines
		
	
	
	
		
			11 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
From b48ef9af13a154939acc245c32d72358001d00f1 Mon Sep 17 00:00:00 2001
 | 
						|
From: Giacomo Leidi <goodoldpaul@autistici.org>
 | 
						|
Date: Sun, 20 Jun 2021 12:53:27 +0200
 | 
						|
Subject: [PATCH] Remove build machinery for bundled dependencies.
 | 
						|
 | 
						|
---
 | 
						|
 CMakeLists.txt | 192 +------------------------------------------------
 | 
						|
 1 file changed, 1 insertion(+), 191 deletions(-)
 | 
						|
 | 
						|
diff --git a/CMakeLists.txt b/CMakeLists.txt
 | 
						|
index 17d13d7c..2a7206ed 100644
 | 
						|
--- a/CMakeLists.txt
 | 
						|
+++ b/CMakeLists.txt
 | 
						|
@@ -1,9 +1,6 @@
 | 
						|
 cmake_minimum_required(VERSION 3.1) # we use target_sources()
 | 
						|
 project(Extempore VERSION 0.8.9)
 | 
						|
 
 | 
						|
-# for backwards compatibility with CMake older than 3.19
 | 
						|
-cmake_policy(SET CMP0114 OLD)
 | 
						|
-
 | 
						|
 option(ASSETS "download multimedia assets (approx 500MB)" OFF)
 | 
						|
 option(BUILD_TESTS "build test targets (including examples)" ON)
 | 
						|
 option(PACKAGE "set up install targets for packaging" OFF)
 | 
						|
@@ -142,55 +139,6 @@ else()
 | 
						|
   message(FATAL_ERROR "Sorry, Extempore isn't supported on this platform - macOS, Linux & Windows only.")
 | 
						|
 endif()
 | 
						|
 
 | 
						|
-########
 | 
						|
-# PCRE #
 | 
						|
-########
 | 
						|
-
 | 
						|
-# current in-tree PCRE version: 8.38
 | 
						|
-
 | 
						|
-add_library(pcre STATIC
 | 
						|
-  # headers
 | 
						|
-  src/pcre/config.h
 | 
						|
-  src/pcre/pcre.h
 | 
						|
-  src/pcre/ucp.h
 | 
						|
-  # source files
 | 
						|
-  src/pcre/pcre_chartables.c
 | 
						|
-  src/pcre/pcre_compile.c
 | 
						|
-  src/pcre/pcre_exec.c
 | 
						|
-  src/pcre/pcre_globals.c
 | 
						|
-  src/pcre/pcre_internal.h
 | 
						|
-  src/pcre/pcre_newline.c
 | 
						|
-  src/pcre/pcre_tables.c
 | 
						|
-  )
 | 
						|
-
 | 
						|
-target_compile_definitions(pcre
 | 
						|
-  PRIVATE -DHAVE_CONFIG_H
 | 
						|
-  )
 | 
						|
-
 | 
						|
-if(PACKAGE)
 | 
						|
-  target_compile_options(pcre
 | 
						|
-    PRIVATE -mtune=generic)
 | 
						|
-endif()
 | 
						|
-
 | 
						|
-#############
 | 
						|
-# portaudio #
 | 
						|
-#############
 | 
						|
-
 | 
						|
-include(ExternalProject)
 | 
						|
-
 | 
						|
-ExternalProject_Add(portaudio_static
 | 
						|
-  PREFIX portaudio
 | 
						|
-  URL https://github.com/PortAudio/portaudio/archive/3f7bee79a65327d2e0965e8a74299723ed6f072d.zip
 | 
						|
-  URL_MD5 182b76e05f6ef21d9f5716da7489905d
 | 
						|
-  CMAKE_ARGS
 | 
						|
-  -DPA_BUILD_STATIC=ON
 | 
						|
-  -DPA_BUILD_SHARED=OFF
 | 
						|
-  -DPA_LIBNAME_ADD_SUFFIX=OFF
 | 
						|
-  -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
 | 
						|
-  -DCMAKE_C_FLAGS=${EXT_DEPS_C_FLAGS}
 | 
						|
-  -DCMAKE_CXX_FLAGS=${EXT_DEPS_CXX_FLAGS}
 | 
						|
-  -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/portaudio)
 | 
						|
-
 | 
						|
 ##############
 | 
						|
 # LLVM 3.8.0 #
 | 
						|
 ##############
 | 
						|
@@ -323,11 +271,6 @@ if(UNIX)
 | 
						|
   set_source_files_properties(src/Scheme.cpp PROPERTIES COMPILE_FLAGS -Wno-switch)
 | 
						|
 endif()
 | 
						|
 
 | 
						|
-# static extempore build dependencies
 | 
						|
-
 | 
						|
-add_dependencies(extempore pcre)
 | 
						|
-add_dependencies(extempore portaudio_static)
 | 
						|
-
 | 
						|
 if(BUILD_LLVM)
 | 
						|
   if(WIN32)
 | 
						|
     add_dependencies(extempore LLVM-install)
 | 
						|
@@ -342,12 +285,9 @@ endif()
 | 
						|
 
 | 
						|
 target_include_directories(extempore
 | 
						|
   PRIVATE
 | 
						|
-  src/pcre
 | 
						|
-  ${CMAKE_BINARY_DIR}/portaudio/include # installed by ExternalProject
 | 
						|
   ${EXT_LLVM_DIR}/include)
 | 
						|
 
 | 
						|
-target_link_directories(extempore PRIVATE ${CMAKE_BINARY_DIR}/portaudio/lib)
 | 
						|
-target_link_libraries(extempore PRIVATE pcre portaudio${CMAKE_STATIC_LIBRARY_SUFFIX} ${LLVM_LIBRARIES})
 | 
						|
+target_link_libraries(extempore PRIVATE pcre portaudio ${LLVM_LIBRARIES})
 | 
						|
 if(UNIX AND NOT APPLE)
 | 
						|
   target_link_libraries(extempore PRIVATE asound)
 | 
						|
 endif()
 | 
						|
@@ -425,7 +365,6 @@ elseif(APPLE) # macOS
 | 
						|
     PRIVATE "-framework AudioToolbox")
 | 
						|
 
 | 
						|
 elseif(UNIX AND NOT APPLE) # Linux
 | 
						|
-  set_property(TARGET pcre PROPERTY POSITION_INDEPENDENT_CODE ON)
 | 
						|
   set_property(TARGET extempore PROPERTY POSITION_INDEPENDENT_CODE ON)
 | 
						|
   # target_link_libraries(extempore PRIVATE --export-dynamic)
 | 
						|
   target_link_libraries(extempore PRIVATE dl)
 | 
						|
@@ -529,7 +468,6 @@ else(WIN32)
 | 
						|
       DEPENDS ${filename} extempore)
 | 
						|
     set_target_properties(${targetname} PROPERTIES FOLDER AOT)
 | 
						|
     if(NOT ${group} STREQUAL "core")
 | 
						|
-      add_dependencies(${targetname} external_shlibs_${group})
 | 
						|
       add_dependencies(aot_external_${group} ${targetname})
 | 
						|
     endif()
 | 
						|
     foreach(dep ${ARGN})
 | 
						|
@@ -568,59 +506,6 @@ add_custom_target(clean_aot
 | 
						|
 if(UNIX)
 | 
						|
   if(EXTERNAL_SHLIBS_AUDIO)
 | 
						|
 
 | 
						|
-    # first, download & build the shared libraries themselves (these are all external to Extempore)
 | 
						|
-
 | 
						|
-    ExternalProject_Add(portmidi
 | 
						|
-      PREFIX portmidi
 | 
						|
-      URL https://github.com/extemporelang/portmidi/archive/8602f548f71daf5ef638b2f7d224753400cb2158.zip
 | 
						|
-      CMAKE_ARGS
 | 
						|
-      -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
 | 
						|
-      -DCMAKE_C_FLAGS=${EXT_DEPS_C_FLAGS}
 | 
						|
-      -DCMAKE_CXX_FLAGS=${EXT_DEPS_CXX_FLAGS}
 | 
						|
-      -DCMAKE_INSTALL_PREFIX=${EXT_DEPS_INSTALL_DIR})
 | 
						|
-    set_target_properties(portmidi PROPERTIES FOLDER EXTERNAL_SHLIBS)
 | 
						|
-
 | 
						|
-    ExternalProject_Add(rtmidi
 | 
						|
-      PREFIX rtmidi
 | 
						|
-      URL https://github.com/thestk/rtmidi/archive/84d130bf22d878ff1b0e224346e2e0f9e3ba8099.zip
 | 
						|
-      URL_MD5 d932b9fef01b859a1b8b86a3c8dc6621
 | 
						|
-      CMAKE_ARGS
 | 
						|
-      -DRTMIDI_BUILD_TESTING=OFF
 | 
						|
-      -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
 | 
						|
-      -DCMAKE_C_FLAGS=${EXT_DEPS_C_FLAGS}
 | 
						|
-      -DCMAKE_CXX_FLAGS=${EXT_DEPS_CXX_FLAGS}
 | 
						|
-      -DCMAKE_INSTALL_PREFIX=${EXT_DEPS_INSTALL_DIR})
 | 
						|
-    set_target_properties(rtmidi PROPERTIES FOLDER EXTERNAL_SHLIBS)
 | 
						|
-
 | 
						|
-    ExternalProject_Add(kiss_fft
 | 
						|
-      PREFIX kiss_fft
 | 
						|
-      URL https://github.com/extemporelang/kiss_fft/archive/1.3.0.zip
 | 
						|
-      CMAKE_ARGS
 | 
						|
-      -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
 | 
						|
-      -DCMAKE_C_FLAGS=${EXT_DEPS_C_FLAGS}
 | 
						|
-      -DCMAKE_CXX_FLAGS=${EXT_DEPS_CXX_FLAGS}
 | 
						|
-      -DCMAKE_INSTALL_PREFIX=${EXT_DEPS_INSTALL_DIR})
 | 
						|
-    set_target_properties(kiss_fft PROPERTIES FOLDER EXTERNAL_SHLIBS)
 | 
						|
-
 | 
						|
-    # build with as few deps as we can get away with
 | 
						|
-
 | 
						|
-    ExternalProject_Add(sndfile
 | 
						|
-    PREFIX libsndfile
 | 
						|
-    URL https://github.com/erikd/libsndfile/archive/ae64caf9b5946d365971c550875000342e763de6.zip
 | 
						|
-    CMAKE_ARGS
 | 
						|
-    -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
 | 
						|
-    -DCMAKE_C_FLAGS=${EXT_DEPS_C_FLAGS}
 | 
						|
-    -DCMAKE_CXX_FLAGS=${EXT_DEPS_CXX_FLAGS}
 | 
						|
-    -DCMAKE_INSTALL_PREFIX=${EXT_DEPS_INSTALL_DIR}
 | 
						|
-    -DBUILD_SHARED_LIBS=ON
 | 
						|
-    -DBUILD_PROGRAMS=OFF
 | 
						|
-    -DBUILD_EXAMPLES=OFF
 | 
						|
-	-DENABLE_EXTERNAL_LIBS=OFF
 | 
						|
-    -DBUILD_TESTING=OFF
 | 
						|
-    -DENABLE_CPACK=OFF
 | 
						|
-    -DENABLE_PACKAGE_CONFIG=OFF)
 | 
						|
-    set_target_properties(sndfile PROPERTIES FOLDER EXTERNAL_SHLIBS)
 | 
						|
-
 | 
						|
     add_custom_target(aot_external_audio ALL)
 | 
						|
     set_target_properties(aot_external_audio PROPERTIES FOLDER AOT)
 | 
						|
     aotcompile_lib(libs/external/fft.xtm audio base math)
 | 
						|
@@ -629,76 +514,13 @@ if(UNIX)
 | 
						|
     aotcompile_lib(libs/external/instruments_ext.xtm audio base sndfile instruments)
 | 
						|
     aotcompile_lib(libs/external/portmidi.xtm audio base)
 | 
						|
 
 | 
						|
-    add_custom_target(external_shlibs_audio
 | 
						|
-      COMMENT "moving shared libs into ${EXT_PLATFORM_SHLIBS_DIR}"
 | 
						|
-      DEPENDS LLVM sndfile kiss_fft portmidi rtmidi
 | 
						|
-      COMMAND ${CMAKE_COMMAND} -E make_directory ${EXT_PLATFORM_SHLIBS_DIR}
 | 
						|
-      COMMAND ${CMAKE_COMMAND} -E copy libkiss_fft${CMAKE_SHARED_LIBRARY_SUFFIX} ${EXT_PLATFORM_SHLIBS_DIR}
 | 
						|
-      COMMAND ${CMAKE_COMMAND} -E copy libportmidi${CMAKE_SHARED_LIBRARY_SUFFIX} ${EXT_PLATFORM_SHLIBS_DIR}
 | 
						|
-      COMMAND ${CMAKE_COMMAND} -E copy librtmidi${CMAKE_SHARED_LIBRARY_SUFFIX} ${EXT_PLATFORM_SHLIBS_DIR}
 | 
						|
-      COMMAND ${CMAKE_COMMAND} -E copy libsndfile${CMAKE_SHARED_LIBRARY_SUFFIX} ${EXT_PLATFORM_SHLIBS_DIR}
 | 
						|
-      WORKING_DIRECTORY ${EXT_DEPS_INSTALL_DIR}/lib)
 | 
						|
-    set_target_properties(external_shlibs_audio PROPERTIES FOLDER EXTERNAL_SHLIBS)
 | 
						|
-
 | 
						|
     add_dependencies(aot_external_audio extempore)
 | 
						|
-    add_dependencies(aot_external_audio external_shlibs_audio)
 | 
						|
 
 | 
						|
   endif(EXTERNAL_SHLIBS_AUDIO)
 | 
						|
 
 | 
						|
   if(EXTERNAL_SHLIBS_GRAPHICS)
 | 
						|
 
 | 
						|
-    ExternalProject_Add(nanovg
 | 
						|
-      PREFIX nanovg
 | 
						|
-      URL https://github.com/extemporelang/nanovg/archive/3c60175fcc2e5fe305b04355cdce35d499c80310.tar.gz
 | 
						|
-      CMAKE_ARGS
 | 
						|
-      -DEXTEMPORE_LIB_PATH=${CMAKE_SOURCE_DIR}/libs/platform-shlibs/extempore.lib
 | 
						|
-      -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
 | 
						|
-      -DCMAKE_C_FLAGS=${EXT_DEPS_C_FLAGS}
 | 
						|
-      -DCMAKE_CXX_FLAGS=${EXT_DEPS_CXX_FLAGS}
 | 
						|
-      -DCMAKE_INSTALL_PREFIX=${EXT_DEPS_INSTALL_DIR})
 | 
						|
-    set_target_properties(nanovg PROPERTIES FOLDER EXTERNAL_SHLIBS)
 | 
						|
-
 | 
						|
-    add_dependencies(nanovg extempore)
 | 
						|
-
 | 
						|
-    ExternalProject_Add(stb_image
 | 
						|
-      PREFIX stb_image
 | 
						|
-      URL https://github.com/extemporelang/stb/archive/152a250a702bf28951bb0220d63bc0c99830c498.zip
 | 
						|
-      CMAKE_ARGS
 | 
						|
-      -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
 | 
						|
-      -DCMAKE_C_FLAGS=${EXT_DEPS_C_FLAGS}
 | 
						|
-      -DCMAKE_CXX_FLAGS=${EXT_DEPS_CXX_FLAGS}
 | 
						|
-      -DCMAKE_INSTALL_PREFIX=${EXT_DEPS_INSTALL_DIR})
 | 
						|
-    set_target_properties(nanovg PROPERTIES FOLDER EXTERNAL_SHLIBS)
 | 
						|
-
 | 
						|
-    ExternalProject_Add(glfw3
 | 
						|
-      PREFIX glfw3
 | 
						|
-      URL https://github.com/glfw/glfw/releases/download/3.2.1/glfw-3.2.1.zip
 | 
						|
-      CMAKE_ARGS
 | 
						|
-      -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
 | 
						|
-      -DCMAKE_C_FLAGS=${EXT_DEPS_C_FLAGS}
 | 
						|
-      -DCMAKE_CXX_FLAGS=${EXT_DEPS_CXX_FLAGS}
 | 
						|
-      -DBUILD_SHARED_LIBS=ON
 | 
						|
-      -DGLFW_BUILD_EXAMPLES=OFF
 | 
						|
-      -DGLFW_BUILD_TESTS=OFF
 | 
						|
-      -DCMAKE_INSTALL_PREFIX=${EXT_DEPS_INSTALL_DIR})
 | 
						|
-    set_target_properties(glfw3 PROPERTIES FOLDER EXTERNAL_SHLIBS)
 | 
						|
-
 | 
						|
-    ExternalProject_Add(assimp
 | 
						|
-      PREFIX assimp
 | 
						|
-      URL https://github.com/assimp/assimp/archive/v3.2.zip
 | 
						|
-      CMAKE_ARGS
 | 
						|
-      -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
 | 
						|
-      -DCMAKE_C_FLAGS=${EXT_DEPS_C_FLAGS}
 | 
						|
-      -DCMAKE_CXX_FLAGS=${EXT_DEPS_CXX_FLAGS}
 | 
						|
-      -DCMAKE_DEBUG_POSTFIX=
 | 
						|
-      -DASSIMP_BUILD_ASSIMP_TOOLS=OFF
 | 
						|
-      -DASSIMP_BUILD_SAMPLES=OFF
 | 
						|
-      -DASSIMP_BUILD_TESTS=OFF
 | 
						|
-      -DCMAKE_INSTALL_PREFIX=${EXT_DEPS_INSTALL_DIR})
 | 
						|
-    set_target_properties(assimp PROPERTIES FOLDER EXTERNAL_SHLIBS)
 | 
						|
-
 | 
						|
     add_custom_target(aot_external_graphics ALL)
 | 
						|
-    set_target_properties(assimp PROPERTIES FOLDER AOT)
 | 
						|
 
 | 
						|
     aotcompile_lib(libs/external/stb_image.xtm graphics base)
 | 
						|
     aotcompile_lib(libs/external/glfw3.xtm graphics base)
 | 
						|
@@ -715,20 +537,8 @@ if(UNIX)
 | 
						|
     aotcompile_lib(libs/external/assimp.xtm graphics base stb_image graphics-pipeline)
 | 
						|
     aotcompile_lib(libs/external/gl/glcompat-${GL_BIND_METHOD}.xtm graphics base)
 | 
						|
 
 | 
						|
-    add_custom_target(external_shlibs_graphics
 | 
						|
-      COMMENT "moving shared libs into ${EXT_PLATFORM_SHLIBS_DIR}"
 | 
						|
-      DEPENDS LLVM assimp glfw3 stb_image nanovg
 | 
						|
-      COMMAND ${CMAKE_COMMAND} -E make_directory ${EXT_PLATFORM_SHLIBS_DIR}
 | 
						|
-      COMMAND ${CMAKE_COMMAND} -E copy libassimp${CMAKE_SHARED_LIBRARY_SUFFIX} ${EXT_PLATFORM_SHLIBS_DIR}
 | 
						|
-      COMMAND ${CMAKE_COMMAND} -E copy libglfw${CMAKE_SHARED_LIBRARY_SUFFIX} ${EXT_PLATFORM_SHLIBS_DIR}
 | 
						|
-      COMMAND ${CMAKE_COMMAND} -E copy libnanovg${CMAKE_SHARED_LIBRARY_SUFFIX} ${EXT_PLATFORM_SHLIBS_DIR}
 | 
						|
-      COMMAND ${CMAKE_COMMAND} -E copy libstb_image${CMAKE_SHARED_LIBRARY_SUFFIX} ${EXT_PLATFORM_SHLIBS_DIR}
 | 
						|
-      WORKING_DIRECTORY ${EXT_DEPS_INSTALL_DIR}/lib)
 | 
						|
-    set_target_properties(external_shlibs_graphics PROPERTIES FOLDER EXTERNAL_SHLIBS)
 | 
						|
-
 | 
						|
     # set up these libs for AOT compilation
 | 
						|
     add_dependencies(aot_external_graphics extempore)
 | 
						|
-    add_dependencies(aot_external_graphics external_shlibs_graphics)
 | 
						|
 
 | 
						|
   endif(EXTERNAL_SHLIBS_GRAPHICS)
 | 
						|
 endif(UNIX)
 | 
						|
-- 
 | 
						|
2.32.0
 | 
						|
 |