From 795195d9fe76654ff028578a9a95876b1b92dcc1 Mon Sep 17 00:00:00 2001 From: Vitaly Novichkov Date: Mon, 23 Sep 2019 02:14:06 +0300 Subject: Don't generate "libADLMIDI.a"/"ADLMIDI.lib" twise ...when a building of both shared and static libraries is enabled --- CMakeLists.txt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index 86a4b4e..3e3cd41 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -223,7 +223,11 @@ 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) -- cgit v1.2.3 From 8749ddc3da9574c2406a7dfd2fd6a4639148beef Mon Sep 17 00:00:00 2001 From: Wohlstand Date: Mon, 23 Sep 2019 12:33:43 +0300 Subject: Set "-no-pie" to all executables built by GCC Otherwise, this happens: https://stackoverflow.com/questions/46551213/gcc-7-2-compiles-shared-library-instead-of-executable --- CMakeLists.txt | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index 3e3cd41..2da1a4b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -63,12 +63,6 @@ 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) @@ -232,6 +226,12 @@ if(libADLMIDI_STATIC OR WITH_VLC_PLUGIN) 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() @@ -255,6 +255,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() -- cgit v1.2.3 From 22248f90dd83413e91c8d4b66e652ef1a7954b60 Mon Sep 17 00:00:00 2001 From: Wohlstand Date: Mon, 23 Sep 2019 12:51:19 +0300 Subject: Don't call "-no-pie" when it's unavailable --- CMakeLists.txt | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index 2da1a4b..7b31f09 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(CheckCXXCompilerFlag) # Prefer C90 standard set(CMAKE_C_STANDARD 90) @@ -68,6 +69,16 @@ if(OPENBSD_LOCALBASE) include_directories(${OPENBSD_LOCALBASE}/include) endif() +if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) + check_cxx_compiler_flag("-no-pie" HAS_NO_PIE) +endif() + +function(set_nopie _target) + if(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 -- cgit v1.2.3 From 7ff1f8b9522d132c9248a68cc5df15e841523ea6 Mon Sep 17 00:00:00 2001 From: Wohlstand Date: Mon, 23 Sep 2019 17:55:22 +0300 Subject: MidiPlay: Move Audio Output into separate module --- CMakeLists.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index 7b31f09..2abd7bc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required (VERSION 3.2) project (libADLMIDI VERSION 1.4.1 LANGUAGES C CXX) include(GNUInstallDirs) -include(CheckCXXCompilerFlag) +include(CheckCCompilerFlag) # Prefer C90 standard set(CMAKE_C_STANDARD 90) @@ -69,12 +69,12 @@ if(OPENBSD_LOCALBASE) include_directories(${OPENBSD_LOCALBASE}/include) endif() -if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) - check_cxx_compiler_flag("-no-pie" HAS_NO_PIE) +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(HAS_NO_PIE AND CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) + 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() -- cgit v1.2.3