Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 04e91f1

Browse files
Don't automatically install libraries and headers if included as subproject.
Instead, added an option ENABLE_PROJECTM_EVAL_INSTALL devs can set if they still want to install the files.
1 parent 4fe4690 commit 04e91f1

File tree

3 files changed

+163
-151
lines changed

3 files changed

+163
-151
lines changed

‎CMakeLists.txt‎

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
cmake_minimum_required(VERSION 3.20)
1+
cmake_minimum_required(VERSION 3.21)
2+
cmake_policy(SET CMP0127 NEW) # <depends> syntax in cmake_dependent_option() is properly formatted for both old and new behavior.
23

34
set(LANGUAGES C)
45
if(BUILD_TESTING)
@@ -11,10 +12,11 @@ set(CMAKE_POSITION_INDEPENDENT_CODE ON)
1112

1213
set(PROJECTM_EVAL_FLOAT_SIZE "8" CACHE STRING "Byte size of floating-point numbers. 8 to use double, 4 to use float. Default is 8.")
1314

15+
include(CMakeDependentOption)
16+
1417
option(ENABLE_FAST_MATH "Enables aggressive math optimizations like -ffast-math to compile faster code. Applied to Release and RelWithDebInfo configurations only." ON)
1518
option(BUILD_NS_EEL_SHIM "Build and install the ns-eel2 compatibility API shim." OFF)
1619
option(BUILD_BENCHMARKS "Build benchmarks. Requires Google Benchmark." OFF)
17-
1820
if(NOT PROJECTM_EVAL_FLOAT_SIZE EQUAL 8 AND NOT PROJECTM_EVAL_FLOAT_SIZE EQUAL 4)
1921
message(FATAL_ERROR "PROJECTM_EVAL_FLOAT_SIZE must be set to either 4 (use floats) or 8 (use doubles).")
2022
endif()
@@ -24,6 +26,8 @@ project(projectm-eval
2426
LANGUAGES ${LANGUAGES} # Using "enable_language(CXX)" in the test dir will NOT work properly!
2527
)
2628

29+
cmake_dependent_option(ENABLE_PROJECTM_EVAL_INSTALL "Enable installing projectm-eval libraries and headers." OFF "NOT projectm-eval_IS_TOP_LEVEL" ON)
30+
2731
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
2832

2933
include(GNUInstallDirs)

‎ns-eel2-shim/CMakeLists.txt‎

Lines changed: 51 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,65 +1,69 @@
11
add_library(projectM_ns-eel2 STATIC
2-
ns-eel.c
3-
ns-eel.h
4-
)
2+
ns-eel.c
3+
ns-eel.h
4+
)
55

66
target_compile_definitions(projectM_ns-eel2
7-
PUBLIC
8-
EEL_F_SIZE=${PROJECTM_EVAL_FLOAT_SIZE}
9-
)
7+
PUBLIC
8+
EEL_F_SIZE=${PROJECTM_EVAL_FLOAT_SIZE}
9+
)
1010

1111
target_include_directories(projectM_ns-eel2
12-
PUBLIC
13-
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}>
14-
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/projectm-eel>
15-
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/projectm-eval/ns-eel2>
16-
)
12+
PUBLIC
13+
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}>
14+
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/projectm-eel>
15+
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/projectm-eval/ns-eel2>
16+
)
1717

1818
target_link_libraries(projectM_ns-eel2
19-
PUBLIC
20-
projectM::Eval
21-
)
19+
PUBLIC
20+
projectM::Eval
21+
)
2222

2323
set_target_properties(projectM_ns-eel2 PROPERTIES
24-
EXPORT_NAME ns-eel2
25-
)
24+
EXPORT_NAME ns-eel2
25+
)
2626

2727
add_library(projectM::ns-eel2 ALIAS projectM_ns-eel2)
2828

29-
install(TARGETS projectM_ns-eel2
30-
DESTINATION ${CMAKE_INSTALL_LIBDIR}
31-
EXPORT projectM-EvalMilkdrop
32-
)
29+
if(ENABLE_PROJECTM_EVAL_INSTALL)
3330

34-
install(FILES ns-eel.h
35-
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/projectm-eval/ns-eel2
36-
)
31+
install(TARGETS projectM_ns-eel2
32+
DESTINATION ${CMAKE_INSTALL_LIBDIR}
33+
EXPORT projectM-EvalMilkdrop
34+
)
3735

38-
# For use from an installed package (system install, vcpkg, homebrew etc.)
39-
include(CMakePackageConfigHelpers)
36+
install(FILES ns-eel.h
37+
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/projectm-eval/ns-eel2
38+
)
4039

41-
write_basic_package_version_file(
42-
"${CMAKE_CURRENT_BINARY_DIR}/projectM-EvalMilkdrop/projectM-EvalMilkdropConfigVersion.cmake"
43-
VERSION ${PROJECT_VERSION}
44-
COMPATIBILITY AnyNewerVersion
45-
)
40+
# For use from an installed package (system install, vcpkg, homebrew etc.)
41+
include(CMakePackageConfigHelpers)
4642

47-
configure_package_config_file(projectM-EvalMilkdropConfig.cmake.in
48-
"${CMAKE_CURRENT_BINARY_DIR}/projectM-EvalMilkdrop/projectM-EvalMilkdropConfig.cmake"
49-
INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/projectM-EvalMilkdrop"
50-
PATH_VARS CMAKE_INSTALL_LIBDIR CMAKE_INSTALL_INCLUDEDIR
51-
)
43+
write_basic_package_version_file(
44+
"${CMAKE_CURRENT_BINARY_DIR}/projectM-EvalMilkdrop/projectM-EvalMilkdropConfigVersion.cmake"
45+
VERSION${PROJECT_VERSION}
46+
COMPATIBILITY AnyNewerVersion
47+
)
5248

53-
install(FILES
54-
"${CMAKE_CURRENT_BINARY_DIR}/projectM-EvalMilkdrop/projectM-EvalMilkdropConfigVersion.cmake"
55-
"${CMAKE_CURRENT_BINARY_DIR}/projectM-EvalMilkdrop/projectM-EvalMilkdropConfig.cmake"
56-
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/projectM-EvalMilkdrop"
57-
COMPONENT Devel
58-
)
49+
configure_package_config_file(projectM-EvalMilkdropConfig.cmake.in
50+
"${CMAKE_CURRENT_BINARY_DIR}/projectM-EvalMilkdrop/projectM-EvalMilkdropConfig.cmake"
51+
INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/projectM-EvalMilkdrop"
52+
PATH_VARS CMAKE_INSTALL_LIBDIR CMAKE_INSTALL_INCLUDEDIR
53+
)
5954

60-
install(EXPORT projectM-EvalMilkdrop
61-
FILE projectM-EvalMilkdropTargets.cmake
62-
NAMESPACE projectM::
63-
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/projectM-EvalMilkdrop"
64-
COMPONENT Devel
65-
)
55+
install(FILES
56+
"${CMAKE_CURRENT_BINARY_DIR}/projectM-EvalMilkdrop/projectM-EvalMilkdropConfigVersion.cmake"
57+
"${CMAKE_CURRENT_BINARY_DIR}/projectM-EvalMilkdrop/projectM-EvalMilkdropConfig.cmake"
58+
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/projectM-EvalMilkdrop"
59+
COMPONENT Devel
60+
)
61+
62+
install(EXPORT projectM-EvalMilkdrop
63+
FILE projectM-EvalMilkdropTargets.cmake
64+
NAMESPACE projectM::
65+
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/projectM-EvalMilkdrop"
66+
COMPONENT Devel
67+
)
68+
69+
endif()

‎projectm-eval/CMakeLists.txt‎

Lines changed: 106 additions & 102 deletions
Original file line numberDiff line numberDiff line change
@@ -1,127 +1,131 @@
11

22
set(BISON_OUTPUT_FILES
3-
${CMAKE_CURRENT_SOURCE_DIR}/Compiler.c
4-
${CMAKE_CURRENT_SOURCE_DIR}/Compiler.h
5-
)
3+
${CMAKE_CURRENT_SOURCE_DIR}/Compiler.c
4+
${CMAKE_CURRENT_SOURCE_DIR}/Compiler.h
5+
)
66

77
set(FLEX_OUTPUT_FILES
8-
${CMAKE_CURRENT_SOURCE_DIR}/Scanner.c
9-
${CMAKE_CURRENT_SOURCE_DIR}/Scanner.h
10-
)
8+
${CMAKE_CURRENT_SOURCE_DIR}/Scanner.c
9+
${CMAKE_CURRENT_SOURCE_DIR}/Scanner.h
10+
)
1111

12-
if(FLEX_FOUND)
12+
if(FLEX_FOUND)
1313
# Generate lexer code
1414
add_custom_command(COMMAND ${FLEX_EXECUTABLE}
15-
--noline
16-
--prefix=prjm_eval_
17-
--header-file=Scanner.h
18-
-o Scanner.c
19-
Scanner.l
20-
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
21-
OUTPUT ${FLEX_OUTPUT_FILES}
22-
DEPENDS Scanner.l
23-
)
15+
--noline
16+
--prefix=prjm_eval_
17+
--header-file=Scanner.h
18+
-o Scanner.c
19+
Scanner.l
20+
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
21+
OUTPUT ${FLEX_OUTPUT_FILES}
22+
DEPENDS Scanner.l
23+
)
2424

2525
add_custom_target(GenerateScanner ALL
26-
DEPENDS ${FLEX_OUTPUT_FILES}
27-
)
28-
endif()
26+
DEPENDS ${FLEX_OUTPUT_FILES}
27+
)
28+
endif()
2929

30-
if(BISON_FOUND)
30+
if(BISON_FOUND)
3131
# Generate compiler code
3232
add_custom_command(COMMAND ${BISON_EXECUTABLE}
33-
--defines=Compiler.h
34-
-Wcounterexamples
35-
--no-lines
36-
-o Compiler.c
37-
Compiler.y
38-
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
39-
OUTPUT ${BISON_OUTPUT_FILES}
40-
DEPENDS Compiler.y
41-
)
33+
--defines=Compiler.h
34+
-Wcounterexamples
35+
--no-lines
36+
-o Compiler.c
37+
Compiler.y
38+
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
39+
OUTPUT ${BISON_OUTPUT_FILES}
40+
DEPENDS Compiler.y
41+
)
4242

4343
add_custom_target(GenerateCompiler ALL
44-
DEPENDS ${BISON_OUTPUT_FILES}
45-
)
46-
endif()
44+
DEPENDS ${BISON_OUTPUT_FILES}
45+
)
46+
endif()
4747

4848
add_library(projectM_eval STATIC
49-
${BISON_OUTPUT_FILES}
50-
${FLEX_OUTPUT_FILES}
51-
CompileContext.c
52-
CompileContext.h
53-
Compiler.y
54-
CompilerFunctions.c
55-
CompilerFunctions.h
56-
CompilerTypes.h
57-
ExpressionTree.c
58-
ExpressionTree.h
59-
MemoryBuffer.c
60-
MemoryBuffer.h
61-
Scanner.l
62-
TreeFunctions.c
63-
TreeFunctions.h
64-
TreeVariables.c
65-
TreeVariables.h
66-
api/projectm-eval.c
67-
api/projectm-eval.h
68-
)
49+
${BISON_OUTPUT_FILES}
50+
${FLEX_OUTPUT_FILES}
51+
CompileContext.c
52+
CompileContext.h
53+
Compiler.y
54+
CompilerFunctions.c
55+
CompilerFunctions.h
56+
CompilerTypes.h
57+
ExpressionTree.c
58+
ExpressionTree.h
59+
MemoryBuffer.c
60+
MemoryBuffer.h
61+
Scanner.l
62+
TreeFunctions.c
63+
TreeFunctions.h
64+
TreeVariables.c
65+
TreeVariables.h
66+
api/projectm-eval.c
67+
api/projectm-eval.h
68+
)
6969

7070
target_include_directories(projectM_eval
71-
PUBLIC
72-
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/..>
73-
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/api>
74-
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/projectm-eval>
75-
)
71+
PUBLIC
72+
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/..>
73+
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/api>
74+
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/projectm-eval>
75+
)
7676

7777
set_target_properties(projectM_eval PROPERTIES
78-
EXPORT_NAME Eval
79-
)
78+
EXPORT_NAME Eval
79+
)
8080

81-
if(NOT NO_MATH_LIB_REQUIRED)
81+
if(NOT NO_MATH_LIB_REQUIRED)
8282
target_link_libraries(projectM_eval
83-
INTERFACE
84-
m
85-
)
86-
endif()
83+
INTERFACE
84+
m
85+
)
86+
endif()
8787

8888
add_library(projectM::Eval ALIAS projectM_eval)
8989

90-
install(TARGETS projectM_eval
91-
DESTINATION ${CMAKE_INSTALL_LIBDIR}
92-
EXPORT projectM-Eval
93-
)
94-
95-
install(FILES api/projectm-eval.h
96-
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/projectm-eval/
97-
)
98-
99-
100-
# For use from an installed package (system install, vcpkg, homebrew etc.)
101-
include(CMakePackageConfigHelpers)
102-
103-
write_basic_package_version_file(
104-
"${CMAKE_CURRENT_BINARY_DIR}/projectM-Eval/projectM-EvalConfigVersion.cmake"
105-
VERSION ${PROJECT_VERSION}
106-
COMPATIBILITY AnyNewerVersion
107-
)
108-
109-
configure_package_config_file(projectM-EvalConfig.cmake.in
110-
"${CMAKE_CURRENT_BINARY_DIR}/projectM-Eval/projectM-EvalConfig.cmake"
111-
INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/projectM-Eval"
112-
PATH_VARS CMAKE_INSTALL_LIBDIR CMAKE_INSTALL_INCLUDEDIR
113-
)
114-
115-
install(FILES
116-
"${CMAKE_CURRENT_BINARY_DIR}/projectM-Eval/projectM-EvalConfigVersion.cmake"
117-
"${CMAKE_CURRENT_BINARY_DIR}/projectM-Eval/projectM-EvalConfig.cmake"
118-
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/projectM-Eval"
119-
COMPONENT Devel
120-
)
121-
122-
install(EXPORT projectM-Eval
123-
FILE projectM-EvalTargets.cmake
124-
NAMESPACE projectM::
125-
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/projectM-Eval"
126-
COMPONENT Devel
127-
)
90+
if(ENABLE_PROJECTM_EVAL_INSTALL)
91+
92+
install(TARGETS projectM_eval
93+
DESTINATION ${CMAKE_INSTALL_LIBDIR}
94+
EXPORT projectM-Eval
95+
)
96+
97+
install(FILES api/projectm-eval.h
98+
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/projectm-eval/
99+
)
100+
101+
102+
# For use from an installed package (system install, vcpkg, homebrew etc.)
103+
include(CMakePackageConfigHelpers)
104+
105+
write_basic_package_version_file(
106+
"${CMAKE_CURRENT_BINARY_DIR}/projectM-Eval/projectM-EvalConfigVersion.cmake"
107+
VERSION ${PROJECT_VERSION}
108+
COMPATIBILITY AnyNewerVersion
109+
)
110+
111+
configure_package_config_file(projectM-EvalConfig.cmake.in
112+
"${CMAKE_CURRENT_BINARY_DIR}/projectM-Eval/projectM-EvalConfig.cmake"
113+
INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/projectM-Eval"
114+
PATH_VARS CMAKE_INSTALL_LIBDIR CMAKE_INSTALL_INCLUDEDIR
115+
)
116+
117+
install(FILES
118+
"${CMAKE_CURRENT_BINARY_DIR}/projectM-Eval/projectM-EvalConfigVersion.cmake"
119+
"${CMAKE_CURRENT_BINARY_DIR}/projectM-Eval/projectM-EvalConfig.cmake"
120+
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/projectM-Eval"
121+
COMPONENT Devel
122+
)
123+
124+
install(EXPORT projectM-Eval
125+
FILE projectM-EvalTargets.cmake
126+
NAMESPACE projectM::
127+
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/projectM-Eval"
128+
COMPONENT Devel
129+
)
130+
131+
endif()

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /