a mega cool windows xp app
1cmake_minimum_required(VERSION 3.16)
2project(ShortwaveApp CXX)
3
4# Generate compile_commands.json for editor support
5set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
6
7# Target Windows XP compatibility
8add_definitions(-DWINVER=0x0501)
9add_definitions(-D_WIN32_WINNT=0x0501)
10add_definitions(-D_WIN32_WINNT_WIN2K=0x0500)
11add_definitions(-DMINGW_HAS_SECURE_API=1)
12
13# Disable threading to avoid mcfgthread dependency
14add_compile_options(-fno-threadsafe-statics)
15add_compile_options(-D_GLIBCXX_HAS_GTHREADS=0)
16
17add_executable(ShortwaveApp WIN32 main.cpp)
18
19# Add BASS library from libs directory
20target_include_directories(ShortwaveApp PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
21target_link_libraries(ShortwaveApp user32 gdi32 winmm wininet ${CMAKE_CURRENT_SOURCE_DIR}/libs/bass.lib)
22
23# Include current directory for headers
24target_include_directories(ShortwaveApp PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
25
26# Minimal static linking and avoid threading dependencies
27target_link_options(ShortwaveApp PRIVATE
28 -static-libgcc
29 -static-libstdc++
30 -static
31 -Wl,--subsystem,windows:5.01
32)
33
34# Configurable output directory
35if(DEFINED OUTPUT_DIR)
36 set_target_properties(ShortwaveApp PROPERTIES
37 RUNTIME_OUTPUT_DIRECTORY "${OUTPUT_DIR}"
38 RUNTIME_OUTPUT_DIRECTORY_DEBUG "${OUTPUT_DIR}"
39 RUNTIME_OUTPUT_DIRECTORY_RELEASE "${OUTPUT_DIR}"
40 )
41endif()
42
43set_target_properties(ShortwaveApp PROPERTIES
44 OUTPUT_NAME "Shortwave"
45)
46
47# Configurable output directory
48if(DEFINED OUTPUT_DIR)
49 set_target_properties(ShortwaveApp PROPERTIES
50 RUNTIME_OUTPUT_DIRECTORY "${OUTPUT_DIR}"
51 RUNTIME_OUTPUT_DIRECTORY_DEBUG "${OUTPUT_DIR}"
52 RUNTIME_OUTPUT_DIRECTORY_RELEASE "${OUTPUT_DIR}"
53 )
54endif()