aboutsummaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorWohlstand <admin@wohlnet.ru>2019-09-23 17:57:11 +0300
committerWohlstand <admin@wohlnet.ru>2019-09-23 17:57:11 +0300
commit7e01feebae9bcf2e37b7d560a0308fb0a28aa89d (patch)
treee96afcb4114f341d8dbee3580778d17a03b07c3d /CMakeLists.txt
parenta17c7f12953e89c311736181807e988f570a5ac5 (diff)
parent4f121a22cc72ef8e092d234a2fe78aeb4369d0da (diff)
downloadlibADLMIDI-7e01feebae9bcf2e37b7d560a0308fb0a28aa89d.tar.gz
libADLMIDI-7e01feebae9bcf2e37b7d560a0308fb0a28aa89d.tar.bz2
libADLMIDI-7e01feebae9bcf2e37b7d560a0308fb0a28aa89d.zip
MidiPlay: Move Audio Output into separate module
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt35
1 files changed, 28 insertions, 7 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8a2773f..d643072 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2,6 +2,7 @@ cmake_minimum_required (VERSION 3.2)
project (libADLMIDI VERSION 1.4.1 LANGUAGES C CXX)
include(GNUInstallDirs)
+include(CheckCCompilerFlag)
# Prefer C90 standard
set(CMAKE_C_STANDARD 90)
@@ -63,17 +64,21 @@ if(MSVC)
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
endif()
-# -fPIC thing
-if(NOT WIN32 AND NOT ADLMIDI_DOS)
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
-endif()
-
if(OPENBSD_LOCALBASE)
message("OpenBSD Detected!")
include_directories(${OPENBSD_LOCALBASE}/include)
endif()
+if(NOT WIN32 AND CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
+ check_c_compiler_flag("-no-pie" HAS_NO_PIE)
+endif()
+
+function(set_nopie _target)
+ if(NOT WIN32 AND HAS_NO_PIE AND CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
+ set_property(TARGET ${_target} APPEND_STRING PROPERTY LINK_FLAGS " -no-pie")
+ endif()
+endfunction()
+
function(set_legacy_standard destTarget)
if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
# Turn on warnings and legacy C/C++ standards to support more compilers
@@ -226,11 +231,21 @@ set(libADLMIDI_SOURCES
# === Static library ====
if(libADLMIDI_STATIC OR WITH_VLC_PLUGIN)
add_library(ADLMIDI_static STATIC ${libADLMIDI_SOURCES})
- set_target_properties(ADLMIDI_static PROPERTIES OUTPUT_NAME ADLMIDI)
+ if(libADLMIDI_SHARED)
+ set_target_properties(ADLMIDI_static PROPERTIES OUTPUT_NAME ADLMIDI-static)
+ else()
+ set_target_properties(ADLMIDI_static PROPERTIES OUTPUT_NAME ADLMIDI)
+ endif()
target_include_directories(ADLMIDI_static PUBLIC ${libADLMIDI_SOURCE_DIR}/include)
set_legacy_standard(ADLMIDI_static)
set_visibility_hidden(ADLMIDI_static)
handle_options(ADLMIDI_static)
+
+ # -fPIC thing
+ if(NOT WIN32 AND NOT ADLMIDI_DOS)
+ set_target_properties(ADLMIDI_static PROPERTIES COMPILE_FLAGS "-fPIC")
+ endif()
+
if(NOT libADLMIDI_STATIC)
set_target_properties(ADLMIDI_static PROPERTIES EXCLUDE_FROM_ALL TRUE)
endif()
@@ -254,6 +269,12 @@ if(libADLMIDI_SHARED)
if(OPENBSD_LOCALBASE)
set_property(TARGET ADLMIDI_shared APPEND_STRING PROPERTY LINK_FLAGS " -lc")
endif()
+
+ # -fPIC thing
+ if(NOT WIN32 AND NOT ADLMIDI_DOS)
+ set_target_properties(ADLMIDI_shared PROPERTIES COMPILE_FLAGS "-fPIC")
+ endif()
+
set_target_properties(ADLMIDI_shared PROPERTIES SOVERSION "1")
endif()