Skip to content

Commit c510e51

Browse files
committed
Resolve Crosscompilation (GNU/Linux): Set reset (cmake bug?) environment variables for pkg_config again.
Setting environment variables PKG_CONFIG_LIBDIR, PKG_CONFIG_PATH and PKG_CONFIG_SYSROOT_DIR for proper pkg_config crosscompilation within CMAKE_TOOLCHAIN_FILE wasn't successful as they were reset during cmake execution. Workaround is to have CMAKE_TOOLCHAIN_FILE set cached cmake variable's w/ same name and have the environment variables set again from within CMakeLists. I have left verbose debugging code marked w/ 'jau' for clarify and potential solution later on.
1 parent dc7d705 commit c510e51

1 file changed

Lines changed: 37 additions & 0 deletions

File tree

CMakeLists.txt

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,23 @@ endif(COMMAND CMAKE_POLICY)
6464

6565
project(OpenAL)
6666

67+
# CMAKE_TOOLCHAIN_FILE loaded right after project declaration (jau)
68+
message(STATUS "2: PKG_CONFIG_LIBDIR: ${PKG_CONFIG_LIBDIR}")
69+
message(STATUS "2: env PKG_CONFIG_LIBDIR: $ENV{PKG_CONFIG_LIBDIR}")
70+
message(STATUS "2: env PKG_CONFIG_PATH: $ENV{PKG_CONFIG_PATH}")
71+
if(PKG_CONFIG_LIBDIR)
72+
# Passing env-var via CMAKE_TOOLCHAIN_FILE didn't work w/ cmake 3.25.1 on GNU/Linux (jau)
73+
set(ENV{PKG_CONFIG_LIBDIR} "${PKG_CONFIG_LIBDIR}")
74+
set(ENV{PKG_CONFIG_PATH} "")
75+
endif()
76+
message(STATUS "3: env PKG_CONFIG_LIBDIR: $ENV{PKG_CONFIG_LIBDIR}")
77+
78+
message(STATUS "2: env PKG_CONFIG_SYSROOT_DIR: $ENV{PKG_CONFIG_SYSROOT_DIR}")
79+
if(PKG_CONFIG_SYSROOT_DIR)
80+
set(ENV{PKG_CONFIG_SYSROOT_DIR} "${PKG_CONFIG_SYSROOT_DIR}")
81+
endif()
82+
message(STATUS "3: env PKG_CONFIG_SYSROOT_DIR: $ENV{PKG_CONFIG_SYSROOT_DIR}")
83+
6784
if(NOT CMAKE_BUILD_TYPE)
6885
set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING
6986
"Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel."
@@ -220,6 +237,8 @@ set(LIB_VERSION_NUM ${LIB_MAJOR_VERSION},${LIB_MINOR_VERSION},${LIB_REVISION},0)
220237

221238
set(EXPORT_DECL "")
222239

240+
# jau
241+
message(STATUS "d1.5: env PKG_CONFIG_LIBDIR: $ENV{PKG_CONFIG_LIBDIR}")
223242

224243
# Some systems erroneously require the __STDC_FORMAT_MACROS macro to be defined
225244
# to get the fixed-width integer type formatter macros.
@@ -231,6 +250,10 @@ int main()
231250
std::printf(\"%\" PRId64, i64);
232251
}"
233252
HAVE_STDC_FORMAT_MACROS)
253+
254+
# jau: lost env var again between 1.5 .. 1.6
255+
message(STATUS "d1.6: env PKG_CONFIG_LIBDIR: $ENV{PKG_CONFIG_LIBDIR}")
256+
234257
if(NOT HAVE_STDC_FORMAT_MACROS)
235258
set(CPP_DEFS ${CPP_DEFS} __STDC_FORMAT_MACROS)
236259
endif()
@@ -711,6 +734,20 @@ set(CORE_OBJS
711734
core/voice.h
712735
core/voice_change.h)
713736

737+
# jau
738+
message(STATUS "10: env PKG_CONFIG_LIBDIR: $ENV{PKG_CONFIG_LIBDIR}")
739+
if(PKG_CONFIG_LIBDIR)
740+
# Passing env-var via CMAKE_TOOLCHAIN_FILE didn't work w/ cmake 3.25.1 on GNU/Linux (jau)
741+
set(ENV{PKG_CONFIG_LIBDIR} "${PKG_CONFIG_LIBDIR}")
742+
set(ENV{PKG_CONFIG_PATH} "")
743+
endif()
744+
message(STATUS "11: env PKG_CONFIG_LIBDIR: $ENV{PKG_CONFIG_LIBDIR}")
745+
message(STATUS "10: env PKG_CONFIG_SYSROOT_DIR: $ENV{PKG_CONFIG_SYSROOT_DIR}")
746+
if(PKG_CONFIG_SYSROOT_DIR)
747+
set(ENV{PKG_CONFIG_SYSROOT_DIR} "${PKG_CONFIG_SYSROOT_DIR}")
748+
endif()
749+
message(STATUS "11: env PKG_CONFIG_SYSROOT_DIR: $ENV{PKG_CONFIG_SYSROOT_DIR}")
750+
714751
set(HAVE_RTKIT 0)
715752
if(NOT WIN32)
716753
option(ALSOFT_RTKIT "Enable RTKit support" ON)

0 commit comments

Comments
 (0)