]> Repos - portaudio/commitdiff
change the compiler flags into a compiler definitions list as we never modify the...
authorNicholas Appleton <nick@appletonaudio.com>
Sat, 27 Aug 2016 00:43:42 +0000 (10:43 +1000)
committerNicholas Appleton <nick@appletonaudio.com>
Sat, 27 Aug 2016 00:43:42 +0000 (10:43 +1000)
CMakeLists.txt

index 71b75c3c302b00ca59cd8b60026bae6eb89bee3b..3604c6e1498c734fd5f320b0d170af435bc13f97 100644 (file)
@@ -37,6 +37,37 @@ IF(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_LIST_DIR})
   ENDIF(WIN32 AND MSVC)
 ENDIF()
 
+# Most of the code from this point onwards is related to populating the
+# following variables:
+#   PA_PUBLIC_INCLUDES - This contains the list of public PortAudio header
+#       files. These files will be copied into /include paths on Unix'y
+#       systems when "make install" is invoked.
+#   PA_PRIVATE_INCLUDES - This contains the list of header files which
+#       are not part of PortAudio, but are required by the various hostapis.
+#       It is only used by CMake IDE generators (like Visual Studio) to
+#       provide quick-links to useful headers. It has no impact on build
+#       output.
+#   PA_PRIVATE_INCLUDE_PATHS - This contains the list of include paths which
+#       will be passed to the compiler while PortAudio is being built which
+#       are not required by applications using the PortAudio API.
+#   PA_PRIVATE_COMPILE_DEFINITIONS - This contains a list of preprocessor
+#       macro definitions which will be set when compiling PortAudio source
+#       files.
+#   PA_SOURCES - This contains the list of source files which will be built
+#       into the static and shared PortAudio libraries.
+#   PA_NON_UNICODE_SOURCES - This also contains a list of source files which
+#       will be build into the static and shared PortAudio libraries. However,
+#       these sources will not have any unicode compiler definitions added
+#       to them. This list should only contain external source dependencies.
+#   PA_EXTRA_SHARED_SOURCES - Contains a list of extra files which will be
+#       associated only with the shared PortAudio library. This only seems
+#       relevant for Windows shared libraries which require a list of export
+#       symbols.
+# Where other PA_* variables are set, these are almost always only used to
+# preserve the historic SOURCE_GROUP behavior (which again only has an impact
+# on IDE-style generators for visual appearance) or store the output of
+# find_library() calls.
+
 SET(PA_COMMON_INCLUDES
   src/common/pa_allocation.h
   src/common/pa_converters.h
@@ -80,7 +111,7 @@ SET(PA_PRIVATE_INCLUDE_PATHS src/common ${CMAKE_CURRENT_BINARY_DIR})
 
 IF(WIN32)
   IF(MSVC)
-    SET(PA_PRIVATE_COMPILE_FLAGS "${PA_PRIVATE_COMPILE_FLAGS} -D_CRT_SECURE_NO_WARNINGS")
+    SET(PA_PRIVATE_COMPILE_DEFINITIONS ${PA_PRIVATE_COMPILE_DEFINITIONS} _CRT_SECURE_NO_WARNINGS)
   ENDIF(MSVC)
 
   SET(PA_PLATFORM_SOURCES 
@@ -117,7 +148,7 @@ IF(WIN32)
     SOURCE_GROUP("hostapi\\ASIO\\ASIOSDK" FILES ${PA_ASIOSDK_SOURCES})
     SET(PA_PUBLIC_INCLUDES ${PA_PUBLIC_INCLUDES} include/pa_asio.h)
     SET(PA_SOURCES ${PA_SOURCES} ${PA_ASIO_SOURCES})
-    SET(PA_EXTERN_SOURCES ${PA_EXTERN_SOURCES} ${PA_ASIOSDK_SOURCES})
+    SET(PA_NON_UNICODE_SOURCES ${PA_NON_UNICODE_SOURCES} ${PA_ASIOSDK_SOURCES})
   ELSE()
     # Set variables for DEF file expansion
     SET(DEF_EXCLUDE_ASIO_SYMBOLS ";")
@@ -134,7 +165,7 @@ IF(WIN32)
     OPTION(PA_USE_DIRECTSOUNDFULLDUPLEXCREATE "Use DirectSound full duplex create" ON)
     MARK_AS_ADVANCED(PA_USE_DIRECTSOUNDFULLDUPLEXCREATE)
     IF(PA_USE_DIRECTSOUNDFULLDUPLEXCREATE)
-      SET(PA_PRIVATE_COMPILE_FLAGS "${PA_PRIVATE_COMPILE_FLAGS} -DPAWIN_USE_DIRECTSOUNDFULLDUPLEXCREATE")
+      SET(PA_PRIVATE_COMPILE_DEFINITIONS ${PA_PRIVATE_COMPILE_DEFINITIONS} PAWIN_USE_DIRECTSOUNDFULLDUPLEXCREATE)
     ENDIF(PA_USE_DIRECTSOUNDFULLDUPLEXCREATE)
     SET(PA_PRIVATE_INCLUDE_PATHS ${PA_PRIVATE_INCLUDE_PATHS} ${DXSDK_INCLUDE_DIR})
     SET(PA_DS_INCLUDES src/hostapi/dsound/pa_win_ds_dynlink.h)
@@ -181,21 +212,16 @@ IF(WIN32)
   OPTION(PA_USE_WDMKS_DEVICE_INFO "Use WDM/KS API for device info" ON)
   MARK_AS_ADVANCED(PA_USE_WDMKS_DEVICE_INFO)
   IF(PA_USE_WDMKS_DEVICE_INFO)
-    SET(PA_PRIVATE_COMPILE_FLAGS "${PA_PRIVATE_COMPILE_FLAGS} -DPAWIN_USE_WDMKS_DEVICE_INFO")
+    SET(PA_PRIVATE_COMPILE_DEFINITIONS ${PA_PRIVATE_COMPILE_DEFINITIONS} PAWIN_USE_WDMKS_DEVICE_INFO)
   ENDIF(PA_USE_WDMKS_DEVICE_INFO)
 
   SET(GENERATED_MESSAGE "CMake generated file, do NOT edit! Use CMake-GUI to change configuration instead.")
-  CONFIGURE_FILE( cmake_support/template_portaudio.def ${CMAKE_CURRENT_BINARY_DIR}/portaudio_cmake.def @ONLY )
-  CONFIGURE_FILE( cmake_support/options_cmake.h.in ${CMAKE_CURRENT_BINARY_DIR}/options_cmake.h @ONLY )
-  SET(PA_EXTERN_SOURCES ${PA_EXTERN_SOURCES} ${CMAKE_CURRENT_BINARY_DIR}/options_cmake.h)
-  SET(PA_PRIVATE_COMPILE_FLAGS "${PA_PRIVATE_COMPILE_FLAGS} -DPORTAUDIO_CMAKE_GENERATED")
+  CONFIGURE_FILE(cmake_support/template_portaudio.def ${CMAKE_CURRENT_BINARY_DIR}/portaudio_cmake.def @ONLY)
+  CONFIGURE_FILE(cmake_support/options_cmake.h.in ${CMAKE_CURRENT_BINARY_DIR}/options_cmake.h @ONLY)
+  SET(PA_PRIVATE_INCLUDES ${PA_PRIVATE_INCLUDES} ${CMAKE_CURRENT_BINARY_DIR}/options_cmake.h)
+  SET(PA_PRIVATE_COMPILE_DEFINITIONS ${PA_PRIVATE_COMPILE_DEFINITIONS} PORTAUDIO_CMAKE_GENERATED)
   SOURCE_GROUP("cmake_generated" FILES ${CMAKE_CURRENT_BINARY_DIR}/portaudio_cmake.def ${CMAKE_CURRENT_BINARY_DIR}/options_cmake.h)
 
-  OPTION(PA_UNICODE_BUILD "Enable Portaudio Unicode build" ON)
-  IF(PA_UNICODE_BUILD)
-    SET_SOURCE_FILES_PROPERTIES(${PA_SOURCES} PROPERTIES COMPILE_DEFINITIONS "UNICODE;_UNICODE")
-  ENDIF(PA_UNICODE_BUILD)
-
   SET(PA_EXTRA_SHARED_SOURCES ${CMAKE_CURRENT_BINARY_DIR}/portaudio_cmake.def)
 
 ELSE()
@@ -228,7 +254,7 @@ ELSE()
       FIND_LIBRARY(CARBON_LIBRARY Carbon REQUIRED)
       MARK_AS_ADVANCED(COREAUDIO_LIBRARY AUDIOTOOLBOX_LIBRARY AUDIOUNIT_LIBRARY CARBON_LIBRARY)
       SET(PA_LIBRARY_DEPENDENCIES ${PA_LIBRARY_DEPENDENCIES} ${COREAUDIO_LIBRARY} ${AUDIOTOOLBOX_LIBRARY} ${AUDIOUNIT_LIBRARY} ${CARBON_LIBRARY})
-      SET(PA_PRIVATE_COMPILE_FLAGS "${PA_PRIVATE_COMPILE_FLAGS} -DPA_USE_COREAUDIO")
+      SET(PA_PRIVATE_COMPILE_DEFINITIONS ${PA_PRIVATE_COMPILE_DEFINITIONS} PA_USE_COREAUDIO)
       SET(PA_PKGCONFIG_LDFLAGS "${PA_PKGCONFIG_LDFLAGS} -framework CoreAudio -framework AudioToolbox -framework AudioUnit -framework Carbon")
     ENDIF()
 
@@ -246,7 +272,7 @@ ELSE()
       SOURCE_GROUP("hostapi\\JACK" FILES ${PA_JACK_SOURCES})
       SET(PA_PUBLIC_INCLUDES ${PA_PUBLIC_INCLUDES} include/pa_jack.h)
       SET(PA_SOURCES ${PA_SOURCES} ${PA_JACK_SOURCES})
-      SET(PA_PRIVATE_COMPILE_FLAGS "${PA_PRIVATE_COMPILE_FLAGS} -DPA_USE_JACK")
+      SET(PA_PRIVATE_COMPILE_DEFINITIONS ${PA_PRIVATE_COMPILE_DEFINITIONS} PA_USE_JACK)
       SET(PA_LIBRARY_DEPENDENCIES ${PA_LIBRARY_DEPENDENCIES} ${JACK_LIBRARIES})
       SET(PA_PKGCONFIG_LDFLAGS "${PA_PKGCONFIG_LDFLAGS} -ljack")
     ENDIF(PA_USE_JACK)
@@ -263,7 +289,7 @@ ELSE()
       SOURCE_GROUP("hostapi\\ALSA" FILES ${PA_ALSA_SOURCES})
       SET(PA_PUBLIC_INCLUDES ${PA_PUBLIC_INCLUDES} include/pa_linux_alsa.h)
       SET(PA_SOURCES ${PA_SOURCES} ${PA_ALSA_SOURCES})
-      SET(PA_PRIVATE_COMPILE_FLAGS "${PA_PRIVATE_COMPILE_FLAGS} -DPA_USE_ALSA")
+      SET(PA_PRIVATE_COMPILE_DEFINITIONS ${PA_PRIVATE_COMPILE_DEFINITIONS} PA_USE_ALSA)
       SET(PA_LIBRARY_DEPENDENCIES ${PA_LIBRARY_DEPENDENCIES} ${ALSA_LIBRARIES})
       SET(PA_PKGCONFIG_LDFLAGS "${PA_PKGCONFIG_LDFLAGS} -lasound")
     ENDIF(PA_USE_ALSA)
@@ -279,28 +305,34 @@ SOURCE_GROUP("include" FILES ${PA_PUBLIC_INCLUDES})
 
 SET(PA_INCLUDES ${PA_PRIVATE_INCLUDES} ${PA_PUBLIC_INCLUDES})
 
-ADD_LIBRARY(portaudio SHARED ${PA_INCLUDES} ${PA_COMMON_INCLUDES} ${PA_SOURCES} ${PA_EXTERN_SOURCES} ${PA_EXTRA_SHARED_SOURCES})
-ADD_LIBRARY(portaudio_static STATIC ${PA_INCLUDES} ${PA_COMMON_INCLUDES} ${PA_SOURCES} ${PA_EXTERN_SOURCES})
+IF(WIN32)
+  OPTION(PA_UNICODE_BUILD "Enable Portaudio Unicode build" ON)
+  IF(PA_UNICODE_BUILD)
+    SET_SOURCE_FILES_PROPERTIES(${PA_SOURCES} PROPERTIES COMPILE_DEFINITIONS "UNICODE;_UNICODE")
+  ENDIF(PA_UNICODE_BUILD)
+ENDIF()
 
 OPTION(PA_ENABLE_DEBUG_OUTPUT "Enable debug output for Portaudio" OFF)
 IF(PA_ENABLE_DEBUG_OUTPUT)
-  SET(PA_PRIVATE_COMPILE_FLAGS "${PA_PRIVATE_COMPILE_FLAGS} -DPA_ENABLE_DEBUG_OUTPUT")
+  SET(PA_PRIVATE_COMPILE_DEFINITIONS ${PA_PRIVATE_COMPILE_DEFINITIONS} PA_ENABLE_DEBUG_OUTPUT)
 ENDIF()
 
 INCLUDE(TestBigEndian)
 TEST_BIG_ENDIAN(IS_BIG_ENDIAN)
 IF(IS_BIG_ENDIAN)
-  SET(PA_PRIVATE_COMPILE_FLAGS "${PA_PRIVATE_COMPILE_FLAGS} -DPA_BIG_ENDIAN")
+  SET(PA_PRIVATE_COMPILE_DEFINITIONS ${PA_PRIVATE_COMPILE_DEFINITIONS} PA_BIG_ENDIAN)
 ELSE()
-  SET(PA_PRIVATE_COMPILE_FLAGS "${PA_PRIVATE_COMPILE_FLAGS} -DPA_LITTLE_ENDIAN")
+  SET(PA_PRIVATE_COMPILE_DEFINITIONS ${PA_PRIVATE_COMPILE_DEFINITIONS} PA_LITTLE_ENDIAN)
 ENDIF()
 
-SET_PROPERTY(TARGET portaudio APPEND_STRING PROPERTY COMPILE_FLAGS ${PA_PRIVATE_COMPILE_FLAGS})
+ADD_LIBRARY(portaudio SHARED ${PA_INCLUDES} ${PA_COMMON_INCLUDES} ${PA_SOURCES} ${PA_NON_UNICODE_SOURCES} ${PA_EXTRA_SHARED_SOURCES})
+SET_PROPERTY(TARGET portaudio APPEND_STRING PROPERTY COMPILE_DEFINITIONS ${PA_PRIVATE_COMPILE_DEFINITIONS})
 TARGET_INCLUDE_DIRECTORIES(portaudio PRIVATE ${PA_PRIVATE_INCLUDE_PATHS})
 TARGET_INCLUDE_DIRECTORIES(portaudio PUBLIC include)
 TARGET_LINK_LIBRARIES(portaudio ${PA_LIBRARY_DEPENDENCIES})
 
-SET_PROPERTY(TARGET portaudio_static APPEND_STRING PROPERTY COMPILE_FLAGS ${PA_PRIVATE_COMPILE_FLAGS})
+ADD_LIBRARY(portaudio_static STATIC ${PA_INCLUDES} ${PA_COMMON_INCLUDES} ${PA_SOURCES} ${PA_NON_UNICODE_SOURCES})
+SET_PROPERTY(TARGET portaudio_static APPEND_STRING PROPERTY COMPILE_DEFINITIONS ${PA_PRIVATE_COMPILE_DEFINITIONS})
 TARGET_INCLUDE_DIRECTORIES(portaudio_static PRIVATE ${PA_PRIVATE_INCLUDE_PATHS})
 TARGET_INCLUDE_DIRECTORIES(portaudio_static PUBLIC include)
 TARGET_LINK_LIBRARIES(portaudio_static ${PA_LIBRARY_DEPENDENCIES})